[debian-edu-commits] debian-edu/ 01/01: Imported Upstream version 3.0.1+dfsg1

Mike Gabriel sunweaver at debian.org
Tue Nov 29 10:12:12 UTC 2016


This is an automated email from the git hooks/post-receive script.

sunweaver pushed a commit to annotated tag upstream/3.0.1+dfsg1
in repository italc.

commit 7243bf19d4944bb80674e5d9483a123f717754a0
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Mon Nov 28 11:46:30 2016 +0100

    Imported Upstream version 3.0.1+dfsg1
---
 .gitignore                                         |    4 +
 .tx/config                                         |   10 +
 CMakeLists.txt                                     |   75 +-
 INSTALL                                            |    7 +-
 README => README.md                                |   36 +-
 Vagrantfile                                        |   71 +
 build_mingw32                                      |    8 +-
 build_mingw64                                      |    4 -
 cmake/modules/MinGWCrossCompile.cmake              |    4 +-
 cmake/modules/Qt4Hacks.cmake                       |   44 -
 cmake/modules/Win32Toolchain.cmake                 |    2 +-
 cmake/modules/Win64Toolchain.cmake                 |    2 +-
 doc/AutomatedSetupWithIMC.txt                      |    6 +-
 doc/CrossCompilingForWindows.txt                   |   28 +-
 iTALC.nsi.in                                       |   42 +-
 ica/CMakeLists.txt                                 |   13 +-
 ica/JavaViewer/Makefile                            |   35 +
 ica/helpers/CMakeLists.txt                         |    3 +
 ica/ica.rc                                         |   35 -
 ica/ica.rc.in                                      |    4 +-
 ica/src/AccessDialogSlave.cpp                      |    4 +-
 ica/src/DemoClient.cpp                             |   17 +-
 ica/src/DesktopAccessPermission.cpp                |    2 +-
 ica/src/IcaMain.cpp                                |   38 +-
 ica/src/ItalcCoreServer.cpp                        |   22 +-
 ica/src/ItalcCoreServer.h                          |    4 +-
 ica/src/ItalcSlaveManager.cpp                      |   27 +-
 ica/src/ItalcSlaveManager.h                        |    6 +-
 ica/src/ItalcVncServer.cpp                         |    8 +-
 ica/src/LocalSystemIca.cpp                         |   43 +-
 ica/src/MessageBoxSlave.cpp                        |   26 +-
 ica/src/ScreenLockSlaveLauncher.cpp                |   10 +-
 ica/src/SystemTrayIconSlave.h                      |    2 +-
 ica/src/WindowsService.cpp                         |   40 +-
 ica/src/moc_AccessDialogSlave.cxx_parameters       |   22 -
 ica/src/moc_DemoClient.cxx_parameters              |   22 -
 ica/src/moc_DemoClientSlave.cxx_parameters         |   22 -
 ica/src/moc_DemoServer.cxx_parameters              |   22 -
 ica/src/moc_DemoServerMaster.cxx_parameters        |   22 -
 ica/src/moc_DemoServerSlave.cxx_parameters         |   22 -
 ica/src/moc_DesktopAccessPermission.cxx_parameters |   22 -
 ica/src/moc_IcaSlave.cxx_parameters                |   22 -
 ica/src/moc_InputLockSlave.cxx_parameters          |   22 -
 ica/src/moc_ItalcCoreServer.cxx_parameters         |   22 -
 ica/src/moc_ItalcSlaveManager.cxx_parameters       |   22 -
 ica/src/moc_ItalcVncServer.cxx_parameters          |   22 -
 ica/src/moc_MessageBoxSlave.cxx_parameters         |   22 -
 ica/src/moc_RfbItalcCursor.cxx_parameters          |   22 -
 ica/src/moc_RfbLZORLE.cxx_parameters               |   22 -
 ica/src/moc_ScreenLockSlave.cxx_parameters         |   22 -
 ica/src/moc_ScreenLockSlaveLauncher.cxx_parameters |   22 -
 ica/src/moc_SystemTrayIconSlave.cxx_parameters     |   22 -
 ica/src/moc_WindowsService.cxx_parameters          |   22 -
 ica/x11/README                                     |    2 +
 ica/x11/common/lzoconf.h                           |  233 +-
 ica/x11/common/lzodefs.h                           | 2586 +++++++++---
 ica/x11/common/md5.c                               |    2 +-
 ica/x11/common/minilzo.c                           | 4142 ++++++++++++++------
 ica/x11/common/minilzo.h                           |   39 +-
 ica/x11/libvncclient/cursor.c                      |    6 -
 ica/x11/libvncclient/h264.c                        |  644 ---
 ica/x11/libvncclient/listen.c                      |   15 +-
 ica/x11/libvncclient/rfbproto.c                    |   84 +-
 ica/x11/libvncclient/sockets.c                     |   15 +-
 ica/x11/libvncclient/tls_gnutls.c                  |   40 +-
 ica/x11/libvncclient/tls_openssl.c                 |   70 +-
 ica/x11/libvncclient/vncviewer.c                   |   46 +-
 ica/x11/libvncclient/zrle.c                        |    4 +-
 ica/x11/libvncserver/cargs.c                       |    2 +-
 ica/x11/libvncserver/httpd.c                       |   29 +-
 ica/x11/libvncserver/main.c                        |   21 +-
 ica/x11/libvncserver/rfbcrypto_included.c          |    2 +-
 ica/x11/libvncserver/rfbserver.c                   |  200 +-
 ica/x11/libvncserver/rfbssl_gnutls.c               |    2 +
 ica/x11/libvncserver/scale.c                       |   29 +-
 ica/x11/libvncserver/selbox.c                      |    2 +-
 ica/x11/libvncserver/sockets.c                     |   86 +-
 ica/x11/libvncserver/stats.c                       |    4 +
 ica/x11/libvncserver/tight.c                       |    8 +-
 ica/x11/libvncserver/ultra.c                       |    2 +-
 ica/x11/libvncserver/websockets.c                  |   50 +-
 ica/x11/libvncserver/zlib.c                        |    2 +-
 ica/x11/x11vnc/xinerama.c                          |    7 +
 ica/x11/x11vnc/xrandr.c                            |    1 +
 ima/CMakeLists.txt                                 |    8 +-
 ima/data/italc.ico                                 |  Bin 109806 -> 92102 bytes
 ima/data/italc.png                                 |  Bin 10098 -> 2864 bytes
 ima/data/italc.xpm                                 | 3064 ++-------------
 ima/dialogs/ClientSettingsDialog.ui                |   44 +-
 ima/dialogs/Config.ui                              |  298 +-
 ima/dialogs/Overview.ui                            |  112 +-
 ima/dialogs/RunCommandsDialog.ui                   |   39 +-
 ima/dialogs/Snapshots.ui                           |   31 +-
 ima/dialogs/TextMessageDialog.ui                   |   39 +-
 ima/italc.qrc                                      |   99 +-
 ima/italc.rc                                       |   26 -
 ima/italc.rc.in                                    |    4 +-
 ima/resources/adjust_size.png                      |  Bin 16792 -> 0 bytes
 ima/resources/adjustrgb.png                        |  Bin 0 -> 2122 bytes
 ima/resources/application-exit.png                 |  Bin 0 -> 207 bytes
 ima/resources/applications-education.png           |  Bin 0 -> 1645 bytes
 ima/resources/auto_arrange.png                     |  Bin 12589 -> 0 bytes
 ima/resources/back.png                             |  Bin 2522 -> 0 bytes
 ima/resources/camera-photo.png                     |  Bin 0 -> 6650 bytes
 ima/resources/cancel.png                           |  Bin 1333 -> 0 bytes
 ima/resources/chronometer.png                      |  Bin 0 -> 2469 bytes
 ima/resources/classroom.png                        |  Bin 16185 -> 0 bytes
 ima/resources/classroom_add.png                    |  Bin 1377 -> 0 bytes
 ima/resources/classroom_manager.png                |  Bin 16232 -> 0 bytes
 ima/resources/classroom_manager_48.png             |  Bin 3693 -> 0 bytes
 ima/resources/classroom_remove.png                 |  Bin 1455 -> 0 bytes
 ima/resources/classroom_show.png                   |  Bin 1400 -> 0 bytes
 ima/resources/client.png                           |  Bin 5531 -> 0 bytes
 ima/resources/client_add.png                       |  Bin 4362 -> 0 bytes
 ima/resources/client_demo.png                      |  Bin 743 -> 0 bytes
 ima/resources/client_hidden.png                    |  Bin 523 -> 0 bytes
 ima/resources/client_remove.png                    |  Bin 4988 -> 0 bytes
 ima/resources/client_settings.png                  |  Bin 3411 -> 0 bytes
 ima/resources/client_show.png                      |  Bin 1017 -> 0 bytes
 ima/resources/client_visible.png                   |  Bin 575 -> 0 bytes
 ima/resources/clock.png                            |  Bin 1336 -> 0 bytes
 ima/resources/config.png                           |  Bin 20278 -> 0 bytes
 ima/resources/config_48.png                        |  Bin 4652 -> 0 bytes
 ima/resources/dialog-error.png                     |  Bin 0 -> 3073 bytes
 ima/resources/dialog-information.png               |  Bin 0 -> 1889 bytes
 ima/resources/document-edit.png                    |  Bin 0 -> 687 bytes
 ima/resources/document-save.png                    |  Bin 0 -> 833 bytes
 ima/resources/dot-green.png                        |  Bin 0 -> 1739 bytes
 ima/resources/edit-delete.png                      |  Bin 0 -> 388 bytes
 ima/resources/edit-find.png                        |  Bin 0 -> 1863 bytes
 ima/resources/error.png                            |  Bin 9356 -> 0 bytes
 ima/resources/filesave.png                         |  Bin 2122 -> 0 bytes
 ima/resources/folder-add.png                       |  Bin 0 -> 344 bytes
 ima/resources/fullscreen.png                       |  Bin 1010 -> 0 bytes
 ima/resources/fullscreen_demo.png                  |  Bin 7703 -> 0 bytes
 ima/resources/go-previous.png                      |  Bin 0 -> 338 bytes
 ima/resources/greenled.png                         |  Bin 537 -> 0 bytes
 ima/resources/help-about.png                       |  Bin 0 -> 2335 bytes
 ima/resources/help.png                             |  Bin 15585 -> 0 bytes
 ima/resources/host_unreachable.png                 |  Bin 28165 -> 0 bytes
 ima/resources/info.png                             |  Bin 2742 -> 0 bytes
 ima/resources/info_22.png                          |  Bin 1145 -> 0 bytes
 ima/resources/kmag.png                             |  Bin 0 -> 6369 bytes
 ima/resources/kr_unselect.png                      |  Bin 0 -> 1353 bytes
 ima/resources/list-add.png                         |  Bin 0 -> 198 bytes
 ima/resources/list-remove.png                      |  Bin 0 -> 2383 bytes
 ima/resources/locked.png                           |  Bin 33282 -> 0 bytes
 ima/resources/logout.png                           |  Bin 15860 -> 0 bytes
 ima/resources/network.png                          |  Bin 1506 -> 0 bytes
 ima/resources/no_mouse.png                         |  Bin 2617 -> 0 bytes
 ima/resources/no_user.png                          |  Bin 18927 -> 0 bytes
 ima/resources/overview.png                         |  Bin 14272 -> 0 bytes
 ima/resources/overview_mode.png                    |  Bin 15845 -> 0 bytes
 ima/resources/power_off.png                        |  Bin 11254 -> 0 bytes
 ima/resources/power_on.png                         |  Bin 21784 -> 0 bytes
 ima/resources/preferences-desktop-display-blue.png |  Bin 0 -> 1242 bytes
 ima/resources/preferences-desktop-display-gray.png |  Bin 0 -> 1055 bytes
 .../preferences-desktop-display-orange.png         |  Bin 0 -> 1206 bytes
 .../preferences-desktop-display-purple.png         |  Bin 0 -> 1155 bytes
 ima/resources/preferences-desktop-display-red.png  |  Bin 0 -> 1239 bytes
 ima/resources/preferences-desktop-display.png      |  Bin 0 -> 1193 bytes
 ima/resources/preferences-system-login.png         |  Bin 0 -> 5643 bytes
 .../preferences-system-power-management.png        |  Bin 0 -> 4217 bytes
 ima/resources/presentation-fullscreen.png          |  Bin 0 -> 315 bytes
 ima/resources/presentation-none.png                |  Bin 0 -> 533 bytes
 ima/resources/presentation-window.png              |  Bin 0 -> 592 bytes
 ima/resources/quit.png                             |  Bin 1760 -> 0 bytes
 ima/resources/reboot.png                           |  Bin 10726 -> 0 bytes
 ima/resources/remote_control.png                   |  Bin 17638 -> 17135 bytes
 ima/resources/remote_control_48.png                |  Bin 4267 -> 4230 bytes
 ima/resources/remotelogon.png                      |  Bin 10668 -> 0 bytes
 ima/resources/remotelogon_22.png                   |  Bin 1135 -> 0 bytes
 ima/resources/remotelogon_48.png                   |  Bin 3042 -> 0 bytes
 ima/resources/run-build.png                        |  Bin 0 -> 2375 bytes
 ima/resources/run.png                              |  Bin 3480 -> 0 bytes
 ima/resources/snapshot.png                         |  Bin 16667 -> 0 bytes
 ima/resources/snapshot_48.png                      |  Bin 3884 -> 0 bytes
 ima/resources/splash.png                           |  Bin 43105 -> 29506 bytes
 ima/resources/stop.png                             |  Bin 4624 -> 0 bytes
 ima/resources/system-lock-screen.png               |  Bin 0 -> 4324 bytes
 ima/resources/system-reboot.png                    |  Bin 0 -> 6038 bytes
 ima/resources/system-shutdown.png                  |  Bin 0 -> 5688 bytes
 ima/resources/system-suspend-hibernate.png         |  Bin 0 -> 6868 bytes
 ima/resources/text_message.png                     |  Bin 13839 -> 0 bytes
 ima/resources/text_message_48.png                  |  Bin 3428 -> 0 bytes
 ima/resources/thinclient.png                       |  Bin 1178 -> 0 bytes
 ima/resources/toolbar.png                          |  Bin 769 -> 0 bytes
 ima/resources/tray-menu-bg.png                     |  Bin 9427 -> 0 bytes
 ima/resources/user-group-new.png                   |  Bin 0 -> 2343 bytes
 ima/resources/userinterface.png                    |  Bin 3518 -> 0 bytes
 ima/resources/users.png                            |  Bin 11703 -> 0 bytes
 ima/resources/users_48.png                         |  Bin 3147 -> 0 bytes
 ima/resources/vcs-locally-modified.png             |  Bin 0 -> 2409 bytes
 ima/resources/view-calendar-month.png              |  Bin 0 -> 230 bytes
 ima/resources/view-fullscreen.png                  |  Bin 0 -> 486 bytes
 ima/resources/viewmag.png                          |  Bin 5090 -> 0 bytes
 ima/resources/window-duplicate.png                 |  Bin 0 -> 400 bytes
 ima/resources/window.png                           |  Bin 1010 -> 0 bytes
 ima/resources/window_demo.png                      |  Bin 8236 -> 0 bytes
 ima/resources/zoom-fit-best.png                    |  Bin 0 -> 583 bytes
 ima/src/ClassroomManager.cpp                       |  219 +-
 ima/src/ClassroomManager.h                         |   10 +-
 ima/src/Client.cpp                                 |   87 +-
 ima/src/Client.h                                   |   17 +-
 ima/src/ConfigWidget.cpp                           |   25 +-
 ima/src/Dialogs.cpp                                |   21 +-
 ima/src/Dialogs.h                                  |    2 +-
 ima/src/MainToolBar.cpp                            |    6 +-
 ima/src/MainToolBar.h                              |    2 +-
 ima/src/MainWindow.cpp                             |   92 +-
 ima/src/MainWindow.h                               |   33 +-
 ima/src/OverviewWidget.cpp                         |    8 +-
 ima/src/RemoteControlWidget.cpp                    |   30 +-
 ima/src/RemoteControlWidget.h                      |    9 +-
 ima/src/RunCommandsDialog.h                        |    2 +-
 ima/src/SideBar.cpp                                |    6 +-
 ima/src/SideBar.h                                  |    4 +-
 ima/src/SideBarWidget.cpp                          |   11 +-
 ima/src/SideBarWidget.h                            |   16 +-
 ima/src/SnapshotList.cpp                           |   10 +-
 ima/src/SnapshotList.h                             |    2 +-
 ima/src/ToolButton.cpp                             |   76 +-
 ima/src/ToolButton.h                               |   10 +-
 ima/src/main.cpp                                   |   25 +-
 ima/src/moc_ClassroomManager.cxx_parameters        |   22 -
 ima/src/moc_Client.cxx_parameters                  |   22 -
 ima/src/moc_ConfigWidget.cxx_parameters            |   22 -
 ima/src/moc_Dialogs.cxx_parameters                 |   22 -
 ima/src/moc_MainToolBar.cxx_parameters             |   22 -
 ima/src/moc_MainWindow.cxx_parameters              |   22 -
 ima/src/moc_OverviewWidget.cxx_parameters          |   22 -
 ima/src/moc_RemoteControlWidget.cxx_parameters     |   22 -
 ima/src/moc_RunCommandsDialog.cxx_parameters       |   22 -
 ima/src/moc_SideBar.cxx_parameters                 |   22 -
 ima/src/moc_SideBarWidget.cxx_parameters           |   22 -
 ima/src/moc_SnapshotList.cxx_parameters            |   22 -
 ima/src/moc_ToolButton.cxx_parameters              |   22 -
 imc/CMakeLists.txt                                 |    9 +-
 imc/Forms/KeyFileAssistant.ui                      |   53 +-
 imc/Forms/MainWindow.ui                            |   37 +-
 imc/imc.rc                                         |   26 -
 imc/imc.rc.in                                      |    4 +-
 imc/src/FileSystemBrowser.cpp                      |    4 +-
 imc/src/ImcCore.cpp                                |    8 +-
 imc/src/KeyDirectoriesPage.cpp                     |    6 +-
 imc/src/KeyDirectoriesPage.h                       |    2 +-
 imc/src/KeyFileAssistant.cpp                       |    2 +-
 imc/src/KeyFileAssistant.h                         |    2 +-
 imc/src/KeyFileAssistantModePage.cpp               |    2 +-
 imc/src/KeyFileAssistantModePage.h                 |    2 +-
 imc/src/LogonAclSettings.h                         |    4 +-
 imc/src/LogonGroupEditor.h                         |    2 +-
 imc/src/MainWindow.cpp                             |   12 +-
 imc/src/MainWindow.h                               |    2 +-
 imc/src/main.cpp                                   |    7 +-
 imc/src/moc_FileSystemBrowser.cxx_parameters       |   22 -
 imc/src/moc_ImcCore.cxx_parameters                 |   22 -
 imc/src/moc_KeyDirectoriesPage.cxx_parameters      |   22 -
 imc/src/moc_KeyFileAssistant.cxx_parameters        |   22 -
 .../moc_KeyFileAssistantModePage.cxx_parameters    |   22 -
 imc/src/moc_LogonAclSettings.cxx_parameters        |   22 -
 imc/src/moc_LogonGroupEditor.cxx_parameters        |   22 -
 imc/src/moc_MainWindow.cxx_parameters              |   22 -
 .../moc_SystemConfigurationModifier.cxx_parameters |   22 -
 imc/src/moc_Win32AclEditor.cxx_parameters          |   22 -
 imc/src/moc_netfw.cxx_parameters                   |   22 -
 italcconfig.h.in                                   |    2 +
 lib/CMakeLists.txt                                 |   24 +-
 lib/ItalcCore.qrc                                  |    6 +
 lib/dialogs/AboutDialog.ui                         |    2 +-
 lib/include/AboutDialog.h                          |    2 +-
 .../Configuration/moc_LocalStore.cxx_parameters    |   22 -
 .../Configuration/moc_Object.cxx_parameters        |   22 -
 lib/include/Configuration/moc_Store.cxx_parameters |   22 -
 .../Configuration/moc_UiMapping.cxx_parameters     |   22 -
 .../Configuration/moc_XmlStore.cxx_parameters      |   22 -
 lib/include/DecoratedMessageBox.h                  |   55 -
 lib/include/DsaKey.h                               |    7 +-
 lib/include/FastQImage.h                           |  223 --
 lib/include/Ipc/Core.h                             |    9 +-
 lib/include/Ipc/Master.h                           |   21 +-
 lib/include/Ipc/QtSlaveLauncher.h                  |    4 +-
 lib/include/Ipc/SlaveLauncher.h                    |    7 +-
 lib/include/Ipc/moc_Core.cxx_parameters            |   22 -
 lib/include/Ipc/moc_Master.cxx_parameters          |   22 -
 lib/include/Ipc/moc_QtSlaveLauncher.cxx_parameters |   22 -
 lib/include/Ipc/moc_Slave.cxx_parameters           |   22 -
 lib/include/Ipc/moc_SlaveLauncher.cxx_parameters   |   22 -
 lib/include/ItalcConfiguration.h                   |    7 +-
 lib/include/ItalcCore.h                            |    3 +-
 lib/include/ItalcCoreConnection.h                  |    4 +-
 lib/include/ItalcVncConnection.h                   |   17 +-
 lib/include/LocalSystem.h                          |    5 +-
 lib/include/LockWidget.h                           |    4 +-
 lib/include/Logger.h                               |    2 +-
 lib/include/PasswordDialog.h                       |    2 +-
 lib/include/ProgressWidget.h                       |    2 +-
 lib/include/SocketDevice.h                         |    7 +-
 lib/include/VncView.h                              |   17 +-
 lib/include/moc_AboutDialog.cxx_parameters         |   22 -
 .../moc_AuthenticationCredentials.cxx_parameters   |   22 -
 lib/include/moc_DecoratedMessageBox.cxx_parameters |   22 -
 lib/include/moc_DsaKey.cxx_parameters              |   22 -
 lib/include/moc_FastQImage.cxx_parameters          |   22 -
 lib/include/moc_Inject.cxx_parameters              |   22 -
 lib/include/moc_ItalcConfiguration.cxx_parameters  |   22 -
 lib/include/moc_ItalcCore.cxx_parameters           |   22 -
 lib/include/moc_ItalcCoreConnection.cxx_parameters |   22 -
 lib/include/moc_ItalcRfbExt.cxx_parameters         |   22 -
 lib/include/moc_ItalcVncConnection.cxx_parameters  |   22 -
 lib/include/moc_LocalSystem.cxx_parameters         |   22 -
 lib/include/moc_LockWidget.cxx_parameters          |   22 -
 lib/include/moc_Logger.cxx_parameters              |   22 -
 lib/include/moc_LogonAuthentication.cxx_parameters |   22 -
 lib/include/moc_PasswordDialog.cxx_parameters      |   22 -
 lib/include/moc_ProgressWidget.cxx_parameters      |   22 -
 lib/include/moc_QuadTree.cxx_parameters            |   22 -
 lib/include/moc_Snapshot.cxx_parameters            |   22 -
 lib/include/moc_SocketDevice.cxx_parameters        |   22 -
 lib/include/moc_SystemKeyTrapper.cxx_parameters    |   22 -
 lib/include/moc_VncView.cxx_parameters             |   22 -
 lib/include/rfb/keysym.h                           |    4 +-
 lib/include/rfb/rfb.h                              |   11 +-
 lib/include/rfb/rfbclient.h                        |   26 +-
 lib/include/rfb/rfbproto.h                         |   38 +-
 lib/resources/ar.qm                                |  Bin 64974 -> 0 bytes
 lib/resources/ar.ts                                |  114 +-
 lib/resources/{sv.ts => bb.ts}                     |  429 +-
 lib/resources/{pt_br.ts => ca_ES.ts}               | 1266 +++---
 lib/resources/cs.qm                                |  Bin 39561 -> 0 bytes
 lib/resources/cs.ts                                | 1288 +++---
 lib/resources/de.qm                                |  Bin 74065 -> 0 bytes
 lib/resources/de.ts                                |  114 +-
 lib/resources/el.qm                                |  Bin 46828 -> 0 bytes
 lib/resources/el.ts                                |  114 +-
 lib/resources/es.qm                                |  Bin 41239 -> 0 bytes
 lib/resources/es.ts                                |  944 +++--
 lib/resources/fi.qm                                |  Bin 42907 -> 0 bytes
 lib/resources/fi.ts                                |  114 +-
 lib/resources/fr.qm                                |  Bin 44879 -> 0 bytes
 lib/resources/fr.ts                                |  114 +-
 lib/resources/he.qm                                |  Bin 42140 -> 0 bytes
 lib/resources/he.ts                                |  114 +-
 lib/resources/hu.qm                                |  Bin 77549 -> 0 bytes
 lib/resources/hu.ts                                |  114 +-
 lib/resources/icon128.png                          |  Bin 0 -> 2864 bytes
 lib/resources/icon16.png                           |  Bin 825 -> 453 bytes
 lib/resources/icon22.png                           |  Bin 1184 -> 551 bytes
 lib/resources/icon32.png                           |  Bin 1876 -> 744 bytes
 lib/resources/icon64.png                           |  Bin 3975 -> 1347 bytes
 lib/resources/it.qm                                |  Bin 80489 -> 0 bytes
 lib/resources/it.ts                                |  114 +-
 lib/resources/{nl.ts => italc.ts}                  |  507 +--
 lib/resources/{zh_cn.ts => ko_kr.ts}               |  286 +-
 lib/resources/{pt_br.ts => lt.ts}                  | 1280 +++---
 lib/resources/{pt_br.ts => mn.ts}                  | 1287 +++---
 lib/resources/nl.qm                                |    1 -
 lib/resources/nl.ts                                |  945 +++--
 lib/resources/nn.qm                                |  Bin 28313 -> 0 bytes
 lib/resources/nn.ts                                |  114 +-
 lib/resources/pl.qm                                |  Bin 41165 -> 0 bytes
 lib/resources/pl.ts                                |  114 +-
 lib/resources/pt_br.qm                             |  Bin 82657 -> 0 bytes
 lib/resources/pt_br.ts                             |  114 +-
 lib/resources/{fi.ts => pt_pt.ts}                  | 1032 ++---
 lib/resources/ru.qm                                |  Bin 77313 -> 0 bytes
 lib/resources/ru.ts                                | 1268 +++---
 lib/resources/sk.qm                                |  Bin 39352 -> 0 bytes
 lib/resources/sk.ts                                |  114 +-
 lib/resources/sl.qm                                |  Bin 39934 -> 0 bytes
 lib/resources/sl.ts                                |  114 +-
 lib/resources/sv.qm                                |  Bin 63248 -> 0 bytes
 lib/resources/sv.ts                                |  118 +-
 lib/resources/tr.qm                                |  Bin 44541 -> 0 bytes
 lib/resources/tr.ts                                |  114 +-
 lib/resources/uk.qm                                |  Bin 81308 -> 0 bytes
 lib/resources/uk.ts                                |  664 ++--
 lib/resources/zh_cn.qm                             |  Bin 30420 -> 0 bytes
 lib/resources/zh_cn.ts                             | 1281 +++---
 lib/resources/zh_tw.qm                             |  Bin 56196 -> 0 bytes
 lib/resources/zh_tw.ts                             |  580 +--
 lib/src/AuthenticationCredentials.cpp              |    2 +-
 lib/src/DecoratedMessageBox.cpp                    |  144 -
 lib/src/DsaKey.cpp                                 |  161 +-
 lib/src/FastQImage.cpp                             |  864 ----
 lib/src/Ipc/Master.cpp                             |  106 +-
 lib/src/Ipc/QtSlaveLauncher.cpp                    |   76 +-
 lib/src/Ipc/SlaveLauncher.cpp                      |    9 +-
 lib/src/ItalcConfiguration.cpp                     |    5 +-
 lib/src/ItalcCore.cpp                              |   30 +-
 lib/src/ItalcCoreConnection.cpp                    |    5 +-
 lib/src/ItalcVncConnection.cpp                     |   69 +-
 lib/src/LocalSystem.cpp                            |  161 +-
 lib/src/LockWidget.cpp                             |    6 +-
 lib/src/Logger.cpp                                 |    4 +-
 lib/src/PasswordDialog.cpp                         |    2 +-
 lib/src/Snapshot.cpp                               |    6 +-
 lib/src/SystemKeyTrapper.cpp                       |    2 +-
 lib/src/VncView.cpp                                |   77 +-
 nsis/header.bmp                                    |  Bin 34254 -> 25818 bytes
 nsis/welcome-page.bmp                              |  Bin 206038 -> 154542 bytes
 401 files changed, 16423 insertions(+), 15967 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1026a49
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.vagrant/*
+b/*
+.DS_Store
+*.qm
diff --git a/.tx/config b/.tx/config
new file mode 100644
index 0000000..c2ea138
--- /dev/null
+++ b/.tx/config
@@ -0,0 +1,10 @@
+[main]
+host = https://www.transifex.com
+minimum_perc = 51
+#Need to finish at least 51% before merging back
+
+[lmms.lmms]
+file_filter = lib/resources/<lang>.ts
+source_file = lib/resources/en.ts
+source_lang = en
+type = QT
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8ff3c6..1709c0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,17 +15,16 @@ INCLUDE(CheckCSourceCompiles)
 INCLUDE(CheckIncludeFiles)
 INCLUDE(CheckFunctionExists)
 INCLUDE(FindPkgConfig)
-INCLUDE(Qt4Hacks)
 
-SET(VERSION_MAJOR "2")
+SET(VERSION_MAJOR "3")
 SET(VERSION_MINOR "0")
-SET(VERSION_PATCH "2")
+SET(VERSION_PATCH "1")
 SET(VERSION_SUFFIX "")
 SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
 IF(VERSION_SUFFIX)
 	SET (VERSION "${VERSION}-${VERSION_SUFFIX}")
 ENDIF(VERSION_SUFFIX)
-ADD_DEFINITIONS(-D'ITALC_VERSION="${VERSION}"')
+ADD_DEFINITIONS(-DITALC_VERSION="${VERSION}")
 
 
 INCLUDE(DetectMachine)
@@ -82,6 +81,7 @@ CHECK_INCLUDE_FILES(linux/input.h ITALC_HAVE_LINUX_INPUT_H)
 CHECK_INCLUDE_FILES(linux/uinput.h ITALC_HAVE_LINUX_UINPUT_H)
 CHECK_INCLUDE_FILES(linux/videodev.h ITALC_HAVE_LINUX_VIDEODEV_H)
 CHECK_INCLUDE_FILES(linux/videodev2.h ITALC_HAVE_LINUX_VIDEODEV2_H)
+CHECK_INCLUDE_FILES(ws2tcpip.h ITALC_HAVE_WS2TCPIP_H)
 
 IF(NOT ITALC_BUILD_WIN32)
 	FIND_PACKAGE(PAM REQUIRED)
@@ -97,36 +97,14 @@ ENDFOREACH(_func ${FUNCS})
 
 # TODO: ITALC_WORDS_BIGENDIAN
 
-# check for Qt4
+# check for required Qt5 modules
 
-SET(QT_MIN_VERSION "4.6.0")
-FIND_PACKAGE(Qt4 REQUIRED)
-SET(QT_USE_QTXML 1)
-SET(QT_USE_QTNETWORK 1)
-IF(WIN32)
-	SET(QT_QM_RCC "<!DOCTYPE RCC><RCC version=\"1.0\"><qresource>")
-	FILE(GLOB QT_QM ${MINGW_PREFIX}/share/qt4/translations/qt_*.qm)
-	FOREACH(f ${QT_QM})
-		STRING(REGEX MATCH ".*qt_help.*" TMP "${f}")
-		IF(NOT TMP)
-			STRING(REPLACE "${MINGW_PREFIX}/share/qt4/translations/" "" fa "${f}")
-			SET(QT_QM_RCC "${QT_QM_RCC}<file alias=\"${fa}\">${f}</file>")
-		ENDIF()
-	ENDFOREACH()
-	SET(QT_QM_RCC "${QT_QM_RCC}</qresource></RCC>")
-	FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/lib/qt_qm.qrc "${QT_QM_RCC}")
-ELSE()
-	EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_TRANSLATIONS" OUTPUT_VARIABLE QT_TRANSLATIONS_DIR)
-	IF(EXISTS "${QT_TRANSLATIONS_DIR}")
-		MESSAGE("-- Found Qt translations in ${QT_TRANSLATIONS_DIR}")
-		ADD_DEFINITIONS(-D'QT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}"')
-	ENDIF(EXISTS "${QT_TRANSLATIONS_DIR}")
-ENDIF()
-
-IF(NOT WIN32)
-	STRING(REPLACE "-DQT_DLL" "" QT_DEFINITIONS "${QT_DEFINITIONS}")
-ENDIF(NOT WIN32)
-INCLUDE(${QT_USE_FILE})
+FIND_PACKAGE(Qt5Core REQUIRED)
+FIND_PACKAGE(Qt5Gui REQUIRED)
+FIND_PACKAGE(Qt5Widgets REQUIRED)
+FIND_PACKAGE(Qt5Xml REQUIRED)
+FIND_PACKAGE(Qt5Network REQUIRED)
+FIND_PACKAGE(Qt5LinguistTools REQUIRED)
 
 
 # find libraries
@@ -203,7 +181,7 @@ IF(${ITALCCONFIG} IS_NEWER_THAN ${RFBCONFIG})
 	EXECUTE_PROCESS(COMMAND sed -e "s/ITALC_/LIBVNCSERVER_/g" INPUT_FILE ${ITALCCONFIG} OUTPUT_FILE ${RFBCONFIG})
 ENDIF(${ITALCCONFIG} IS_NEWER_THAN ${RFBCONFIG})
 
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-exceptions ${CXXFLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-exceptions -std=c++11 ${CXXFLAGS}")
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall ${CFLAGS}")
 IF(ITALC_BUILD_WIN32)
 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes -Wno-pragmas")
@@ -211,7 +189,7 @@ ELSE()
 	SET(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} -lcrypto)
 ENDIF(ITALC_BUILD_WIN32)
 
-ADD_DEFINITIONS(-D'LIB_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/"' -D'PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/italc/"')
+ADD_DEFINITIONS(-DLIB_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/" -DPLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/italc/")
 ADD_DEFINITIONS(-DLIBVNCSERVER_HAVE_LIBZ)
 ADD_DEFINITIONS(-DLIBVNCSERVER_HAVE_LIBJPEG)
 IF(PNG_FOUND)
@@ -241,8 +219,10 @@ FOREACH(_ts_file ${italc_LOCALES})
 	STRING(REPLACE "${CMAKE_SOURCE_DIR}/lib/resources/" "" _ts_target "${_ts_file}")
 	STRING(REPLACE ".ts" ".qm" _qm_file "${_ts_file}")
 	STRING(REPLACE ".ts" ".qm" _qm_target "${_ts_target}")
-	ADD_CUSTOM_TARGET(${_ts_target} COMMAND ${QT_LUPDATE_EXECUTABLE} -I${CMAKE_SOURCE_DIR}/lib/include -locations none -no-obsolete ${italc_SOURCES} -ts ${_ts_file})
-	ADD_CUSTOM_TARGET(${_qm_target} COMMAND ${QT_LRELEASE_EXECUTABLE} ${_ts_file} -qm ${_qm_file})
+	ADD_CUSTOM_TARGET(${_ts_target} COMMAND ${Qt5_LUPDATE_EXECUTABLE} -I${CMAKE_SOURCE_DIR}/lib/include -locations none -no-obsolete ${italc_SOURCES} -ts ${_ts_file})
+	# add command and target for generating/updating QM file if TS file is newer or no QM file exists yet
+	ADD_CUSTOM_COMMAND(OUTPUT ${_qm_file} COMMAND ${Qt5_LRELEASE_EXECUTABLE} ${_ts_file} -qm ${_qm_file} DEPENDS ${_ts_file})
+	ADD_CUSTOM_TARGET(${_qm_target} ALL DEPENDS ${_qm_file})
 	LIST(APPEND ts_targets "${_ts_target}")
 	LIST(APPEND qm_targets "${_qm_target}")
 ENDFOREACH(_ts_file ${italc_LOCALES})
@@ -252,27 +232,16 @@ FOREACH(_item ${ts_targets})
 	ADD_DEPENDENCIES(update-locales ${_item})
 ENDFOREACH(_item ${ts_targets})
 
-ADD_CUSTOM_TARGET(finalize-locales)
+ADD_CUSTOM_TARGET(GenerateTranslationFiles)
 FOREACH(_item ${qm_targets})
-	ADD_DEPENDENCIES(finalize-locales ${_item})
+	ADD_DEPENDENCIES(GenerateTranslationFiles ${_item})
 ENDFOREACH(_item ${qm_targets})
 
 
 #
-# add tarball-target
+# add target for generating Windows installer
 #
 SET(TMP "italc-${VERSION}")
-ADD_CUSTOM_TARGET(dist
-			COMMAND make clean
-			COMMAND rm -rf ${TMP}
-			COMMAND mkdir -p ${TMP}
-			COMMAND cp AUTHORS build_mingw* ChangeLog CMakeLists.txt COPYING INSTALL italcconfig.h.in italc.spec.in iTALC.nsi.in README* TODO ${TMP}
-			COMMAND cp -r cmake contrib doc lib ica ima imc nsis ${TMP}
-			COMMAND rm -rf `find ${TMP} -type d -name ".svn"`  `find ${TMP} -name cmake_install.cmake` `find ${TMP} -name Makefile` `find ${TMP} -type d -name CMakeFiles` ${TMP}/CMakeCache.txt `find ${TMP} -name "*.depends"` ${TMP}/ima/data/italc ${TMP}/ima/data/italc.desktop
-			COMMAND tar cjf italc-${VERSION}.tar.bz2 ${TMP}
-			COMMAND rm -rf ${TMP})
-
-SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "italcconfig.h")
 
 ADD_CUSTOM_TARGET(win-nsi
 			COMMAND make
@@ -284,7 +253,7 @@ ADD_CUSTOM_TARGET(win-nsi
 			COMMAND cp -r ${CMAKE_SOURCE_DIR}/contrib ${TMP}
 			COMMAND cp ${CMAKE_SOURCE_DIR}/COPYING ${TMP}
 			COMMAND cp ${CMAKE_SOURCE_DIR}/COPYING ${TMP}/LICENSE.TXT
-			COMMAND cp ${CMAKE_SOURCE_DIR}/README ${TMP}/README.TXT
+			COMMAND cp ${CMAKE_SOURCE_DIR}/README.md ${TMP}/README.TXT
 			COMMAND todos ${TMP}/*.txt ${TMP}/*.TXT
 			COMMAND makensis iTALC.nsi
 			#COMMAND rm -rf ${TMP}
@@ -318,7 +287,7 @@ MESSAGE(
 INCLUDE(InstallRequiredSystemLibraries)
 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "iTALC - Intelligent Teaching And Learning with Computers")
 SET(CPACK_PACKAGE_VENDOR "ITALC Developers")
-SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
 SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
 SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
diff --git a/INSTALL b/INSTALL
index 0a46541..2d9ce37 100644
--- a/INSTALL
+++ b/INSTALL
@@ -22,16 +22,15 @@ and continue with "Install iTALC".
 
 Requirements:
 
-- libqt4-dev and qt4-dev-tools (Debian-based distributions) or qt4-devel
-  (Fedora etc.)
+- qtbase5-dev and qtbase5-dev-tools (Debian-based distributions)
 - xorg-dev or similiar
 - libxtst-dev
-- libjpeg62-dev/libjpeg-devel
+- libjpeg-dev/libjpeg-devel
 - zlib1g-dev/zlib-devel
 - libssl-dev/openssl-devel
 - libpam0g-dev/pam-devel
 
-Of course GCC/G++ must not be missing...
+Of course GCC/G++, make and cmake must not be missing...
 
 
 Building:
diff --git a/README b/README.md
similarity index 56%
rename from README
rename to README.md
index a13ce65..2464f23 100644
--- a/README
+++ b/README.md
@@ -1,8 +1,8 @@
-iTALC 2.0.1 - Intelligent Teaching and Learning with Computers
+iTALC 3.0.1 - Intelligent Teaching and Learning with Computers
 ===============================================================
 
 
-Copyright (c) 2004-2013 Tobias Doerffel
+Copyright (c) 2004-2016 Tobias Doerffel
 
 
 
@@ -25,23 +25,21 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 What is iTALC?
 ----------------
 
-iTALC is a use- and powerful didactical tool which lets you view and control
-computers in your labs and interact with students in a modern way.
-
-iTALC has been designed for usage in school.
-Therefore it offers a lot of possibilities to teachers, such as
-
-  * see what's going on in computer-labs by using overview mode and make snapshots
-  * remote-control computers to support and help other people
-  * show a demo (either in fullscreen or in a window) - the teacher's screen is
-    shown on all student's computers in realtime
-  * lock workstations for moving undivided attention to teacher
-  * send text-messages to students
-  * powering on/off and rebooting computers per remote
-  * remote logon and logoff and remote execution of arbitrary commands/scripts
-  * home-schooling - iTALC's network-technology is not restricted to a subnet
-    and therefore students at home can join lessons via VPN-connections just by
-    installing iTALC client software
+iTALC is a powerful didactical tool which allows teachers to view and control
+computer labs and interact with students. It's available in many languages and
+provides lots of useful features such as:
+
+  * see what's going on in computer labs by using overview mode and make snapshots
+  * remote control computers to support and help users
+  * broadcast teacher's screen to students in realtime by using demo mode
+    (either in fullscreen or in a window)
+  * lock workstations for attracting attention to teacher
+  * send text messages to students
+  * powering on/off and rebooting computers remote
+  * remote logoff and remote execution of arbitrary commands/scripts
+  * home schooling - iTALC's network-technology is not restricted to a subnet
+    and therefore students at home can join lessons via VPN connections just by
+    installing the iTALC service
 
 
 
diff --git a/Vagrantfile b/Vagrantfile
new file mode 100644
index 0000000..005a85f
--- /dev/null
+++ b/Vagrantfile
@@ -0,0 +1,71 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure(2) do |config|
+  # The most common configuration options are documented and commented below.
+  # For a complete reference, please see the online documentation at
+  # https://docs.vagrantup.com.
+
+  # Every Vagrant development environment requires a box. You can search for
+  # boxes at https://atlas.hashicorp.com/search.
+  config.vm.box = "opscode_ubuntu-12.04"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Display the VirtualBox GUI when booting the machine
+  #   vb.gui = true
+  #
+  #   # Customize the amount of memory on the VM:
+  #   vb.memory = "1024"
+  # end
+  #
+  # View the documentation for the provider you are using for more
+  # information on available options.
+
+  # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
+  # such as FTP and Heroku are also available. See the documentation at
+  # https://docs.vagrantup.com/v2/push/atlas.html for more information.
+  # config.push.define "atlas" do |push|
+  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
+  # end
+
+  # Enable provisioning with a shell script. Additional provisioners such as
+  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
+  # documentation for more information about their specific syntax and use.
+  # config.vm.provision "shell", inline: <<-SHELL
+  #   sudo apt-get update
+  #   sudo apt-get install -y apache2
+  # SHELL
+end
diff --git a/build_mingw32 b/build_mingw32
index 42d0e16..6928e8a 100755
--- a/build_mingw32
+++ b/build_mingw32
@@ -1,6 +1,6 @@
-MINGW=/opt/mingw32
-export PATH=$PATH:$MINGW/bin
-export CFLAGS=""
-export CXXFLAGS="$CFLAGS"
+#MINGW=/usr/i686-w64-mingw32/
+#export PATH=$PATH:$MINGW/bin
+#export CFLAGS=""
+#export CXXFLAGS="$CFLAGS"
 cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/
 
diff --git a/build_mingw64 b/build_mingw64
index 5639b40..70bf1a8 100755
--- a/build_mingw64
+++ b/build_mingw64
@@ -1,6 +1,2 @@
-MINGW=/opt/mingw64
-export PATH=$PATH:$MINGW/bin
-export CFLAGS=""
-export CXXFLAGS="$CFLAGS"
 cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win64Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/
 
diff --git a/cmake/modules/MinGWCrossCompile.cmake b/cmake/modules/MinGWCrossCompile.cmake
index ebc0c99..5b6e2f6 100644
--- a/cmake/modules/MinGWCrossCompile.cmake
+++ b/cmake/modules/MinGWCrossCompile.cmake
@@ -3,11 +3,13 @@ SET(CMAKE_SYSTEM_NAME Windows)
 #this one not so much
 SET(CMAKE_SYSTEM_VERSION 1)
 
+SET(MINGW_PREFIX /usr/${MINGW_TARGET}/)
+
 # where is the target environment 
 SET(CMAKE_FIND_ROOT_PATH	${MINGW_PREFIX})
 SET(CMAKE_INSTALL_PREFIX	${MINGW_PREFIX})
 
-SET(MINGW_TOOL_PREFIX		${MINGW_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-)
+SET(MINGW_TOOL_PREFIX		/usr/bin/${MINGW_TARGET}-)
 
 # specify the cross compiler
 SET(CMAKE_RC_COMPILER		${MINGW_TOOL_PREFIX}gcc)
diff --git a/cmake/modules/Qt4Hacks.cmake b/cmake/modules/Qt4Hacks.cmake
deleted file mode 100644
index 852832f..0000000
--- a/cmake/modules/Qt4Hacks.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
- MACRO(QT4_CREATE_TRANSLATION_FOR_QRC _qm_files _qrc_file)
-      SET(_my_sources)
-      SET(_my_tsfiles)
-      FOREACH (_file ${ARGN})
-         GET_FILENAME_COMPONENT(_ext ${_file} EXT)
-         GET_FILENAME_COMPONENT(_abs_FILE ${_file} ABSOLUTE)
-         IF(_ext MATCHES "ts")
-           LIST(APPEND _my_tsfiles ${_abs_FILE})
-         ELSE(_ext MATCHES "ts")
-           LIST(APPEND _my_sources ${_abs_FILE})
-         ENDIF(_ext MATCHES "ts")
-      ENDFOREACH(_file)
-      FOREACH(_ts_file ${_my_tsfiles})
-        ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file}
-           COMMAND ${QT_LUPDATE_EXECUTABLE}
-           ARGS ${_my_sources} -ts ${_ts_file} DEPENDS ${_qrc_file})
-      ENDFOREACH(_ts_file)
-      QT4_ADD_TRANSLATION_FOR_QRC(${_qm_files} ${_my_tsfiles})
-ENDMACRO(QT4_CREATE_TRANSLATION_FOR_QRC)
-
-MACRO(QT4_ADD_TRANSLATION_FOR_QRC _qm_files)
-      FOREACH (_current_FILE ${ARGN})
-         GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE)
-         GET_FILENAME_COMPONENT(qm_path ${_abs_FILE} PATH)
-         GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE)
-         SET(qm "${qm_path}/${qm}.qm")
-
-         ADD_CUSTOM_COMMAND(OUTPUT ${qm}
-            COMMAND ${QT_LRELEASE_EXECUTABLE}
-            ARGS ${_abs_FILE} -qm ${qm}
-            DEPENDS ${_abs_FILE}
-         )
-         SET(${_qm_files} ${${_qm_files}} ${qm})
-      ENDFOREACH (_current_FILE)
-ENDMACRO(QT4_ADD_TRANSLATION_FOR_QRC)
-
-MACRO(QT4_TRANSLATIONS_FOR_QRC _qrc_file)
-	SET(TS_FILES)
-	FOREACH(_lang ${SUPPORTED_LANGUAGES})
-		LIST(APPEND TS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/${_lang}.ts")
-	ENDFOREACH(_lang ${SUPPORTED_LANGUAGES})
-	QT4_CREATE_TRANSLATION_FOR_QRC(_qm_files ${_qrc_file} ${ARGN} ${TS_FILES})
-ENDMACRO(QT4_TRANSLATIONS_FOR_QRC _qrc_file)
-
diff --git a/cmake/modules/Win32Toolchain.cmake b/cmake/modules/Win32Toolchain.cmake
index e2b837b..de6bd8d 100644
--- a/cmake/modules/Win32Toolchain.cmake
+++ b/cmake/modules/Win32Toolchain.cmake
@@ -1,4 +1,4 @@
-SET(MINGW_PREFIX /opt/mingw32)
+SET(MINGW_TARGET i686-w64-mingw32)
 SET(MINGW_PLATFORM win32)
 
 SET(CMAKE_SYSTEM_PROCESSOR i686)
diff --git a/cmake/modules/Win64Toolchain.cmake b/cmake/modules/Win64Toolchain.cmake
index 40bf539..c0ebad3 100644
--- a/cmake/modules/Win64Toolchain.cmake
+++ b/cmake/modules/Win64Toolchain.cmake
@@ -1,4 +1,4 @@
-SET(MINGW_PREFIX /opt/mingw64)
+SET(MINGW_TARGET x86_64-w64-mingw32)
 SET(MINGW_PLATFORM win64)
 
 SET(CMAKE_SYSTEM_PROCESSOR x86_64)
diff --git a/doc/AutomatedSetupWithIMC.txt b/doc/AutomatedSetupWithIMC.txt
index d48630e..837e446 100644
--- a/doc/AutomatedSetupWithIMC.txt
+++ b/doc/AutomatedSetupWithIMC.txt
@@ -37,8 +37,10 @@ as path delimiter, installation paths etc.
    directory as the files in the previous steps.
 
      mkdir "C:\Program Files\iTALC"
-     cp *.exe *.dll *.txt *.xml "C:\Program Files\iTALC\"
-     cd "\Program Files\iTALC"
+     copy "%~dp0\*.exe" "C:\Program Files\iTALC"
+     copy "%~dp0\*.dll" "C:\Program Files\iTALC"
+     copy "%~dp0\*.txt" "C:\Program Files\iTALC"
+     copy "%~dp0\*.xml" "C:\Program Files\iTALC"
      imc -ApplySettings ClientSettings.xml
      imc -ImportPublicKey PublicKey.key.txt
      ica -RegisterService
diff --git a/doc/CrossCompilingForWindows.txt b/doc/CrossCompilingForWindows.txt
index ae0902d..b937d18 100644
--- a/doc/CrossCompilingForWindows.txt
+++ b/doc/CrossCompilingForWindows.txt
@@ -1,13 +1,14 @@
 Cross compiling iTALC for Windows on Linux
 ==========================================
 
-- Create an Ubuntu 12.04 installation, e.g. by using the netboot installer at
+- Create an Ubuntu 16.04 installation, e.g. by using the netboot installer at
 
-    http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-i386/current/images/netboot/mini.iso
+    http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
 
-- Add the following line to your /etc/apt/sources.list
+- Install the add-apt-repository tool and the mingw repisitory
 
-    deb http://ppa.launchpad.net/tobydox/mingw/ubuntu precise main
+    sudo apt-get install python-software-properties
+    sudo add-apt-repository ppa:tobydox/mingw-w64
 
   and update your package list cache (e.g. apt-get update or similiar)
 
@@ -16,14 +17,14 @@ Cross compiling iTALC for Windows on Linux
   * cmake
   * nsis
   * tofrodos
-  * mingw32-x-gcc
-  * mingw32-x-qt
-  * mingw32-x-zlib
-  * mingw32-x-openssl
-  * mingw32-x-libjpeg
-  * mingw32-x-libpng
-  * mingw32-x-pthreads
-  * gcj-jdk
+  * g++-mingw-w64
+  * qt5base-mingw-w64
+  * qt5tools-mingw-w64
+  * libz-mingw-w64-dev
+  * libjpeg-mingw-w64
+  * libpng-mingw-w64
+  * openssl-mingw-w64
+  * default-jdk
 
 - Change into the iTALC source directory and type
 
@@ -35,6 +36,5 @@ Cross compiling iTALC for Windows on Linux
 - This will build a ready-to-use Win32 installer like the ones you can download
   from the iTALC website.
 
-- If you want to build a Win64 installer, replace all occurences of "32" in the
-  above instructions (including package names) with "64".
+- If you want to build a Win64 installer, run the build_mingw64 script instead.
 
diff --git a/iTALC.nsi.in b/iTALC.nsi.in
index 916f104..3b5259d 100644
--- a/iTALC.nsi.in
+++ b/iTALC.nsi.in
@@ -1,10 +1,17 @@
 !define DLLDIR "@MINGW_PREFIX@/bin"
-!define SYSTEM_DLLDIR "@MINGW_PREFIX@/@CMAKE_SYSTEM_PROCESSOR at -w64-mingw32/bin"
+!define DLLDIR_LIB "@MINGW_PREFIX@/lib"
+!define DLLDIR_GCC "/usr/lib/gcc/@CMAKE_SYSTEM_PROCESSOR at -w64-mingw32/5.3-win32"
+!if "@CMAKE_SYSTEM_PROCESSOR@" == "x86_64"
+   !define DLL_GCC "libgcc_s_seh-1.dll"
+!else
+   !define DLL_GCC "libgcc_s_sjlj-1.dll"
+!endif
+!define QT5_PLUGINS_PLATFORMS "/usr/@CMAKE_SYSTEM_PROCESSOR at -w64-mingw32/lib/qt5/plugins/platforms"
 !define APP_NAME "iTALC"
 !define COMP_NAME "iTALC Solutions Inc."
 !define WEB_SITE "http://italc.sf.net"
 !define VERSION "@VERSION@"
-!define COPYRIGHT "© Tobias Doerffel 2004-2013"
+!define COPYRIGHT "© Tobias Doerffel 2004-2016"
 !define DESCRIPTION "Intelligent Teaching and Learning with Computers"
 !define LICENSE_TXT "@CMAKE_SOURCE_DIR@/COPYING"
 !define INSTALLER_NAME "italc-${VERSION}- at MINGW_PLATFORM@-setup.exe"
@@ -149,16 +156,19 @@ ExecWait '"$INSTDIR\ica.exe" -quiet -unregisterservice'
 SetOverwrite on
 SetOutPath "$INSTDIR"
 # DLLs
-File "${DLLDIR}\QtCore4.dll"
-File "${DLLDIR}\QtGui4.dll"
-File "${DLLDIR}\QtXml4.dll"
-File "${DLLDIR}\QtNetwork4.dll"
-File "${DLLDIR}\zlib1.dll"
+File "${DLLDIR}\Qt5Core.dll"
+File "${DLLDIR}\Qt5Gui.dll"
+File "${DLLDIR}\Qt5Widgets.dll"
+File "${DLLDIR}\Qt5Xml.dll"
+File "${DLLDIR}\Qt5Network.dll"
 File "${DLLDIR}\libjpeg-9.dll"
 File "${DLLDIR}\libeay32.dll"
 File "${DLLDIR}\libssl32.dll"
 File "${DLLDIR}\libpng16-16.dll"
-File "${SYSTEM_DLLDIR}\libwinpthread-1.dll"
+File "${DLLDIR_LIB}\zlib1.dll"
+File "${DLLDIR_LIB}\libwinpthread-1.dll"
+File "${DLLDIR_GCC}\libstdc++-6.dll"
+File "${DLLDIR_GCC}\${DLL_GCC}"
 # core components
 File "italc-${VERSION}\ica.exe"
 File "italc-${VERSION}\vnchooks.dll"
@@ -167,6 +177,9 @@ File "italc-${VERSION}\ItalcCore.dll"
 File "italc-${VERSION}\imc.exe"
 File "italc-${VERSION}\LICENSE.TXT"
 File "italc-${VERSION}\README.TXT"
+SetOutPath "$INSTDIR\platforms"
+File "${QT5_PLUGINS_PLATFORMS}/qwindows.dll"
+File "${QT5_PLUGINS_PLATFORMS}/qminimal.dll"
 SetOutPath "$INSTDIR\doc"
 File "italc-${VERSION}\doc\*txt"
 SetOutPath "$INSTDIR\contrib"
@@ -247,13 +260,16 @@ ExecWait '"$INSTDIR\ica.exe" -quiet -unregisterservice'
 Sleep 2000
 Delete "$INSTDIR\ica.exe"
 Delete "$INSTDIR\libwinpthread-1.dll"
+Delete "$INSTDIR\libgcc_s_sjlj-1.dll"
+Delete "$INSTDIR\libgcc_s_seh-1.dll"
+Delete "$INSTDIR\libstdc++-6.dll"
 Delete "$INSTDIR\zlib1.dll"
 Delete "$INSTDIR\libjpeg-9.dll"
-Delete "$INSTDIR\QtXml4.dll"
+Delete "$INSTDIR\Qt5Xml.dll"
 Delete "$INSTDIR\libeay32.dll"
 Delete "$INSTDIR\libpng16-16.dll"
-Delete "$INSTDIR\QtNetwork4.dll"
-Delete "$INSTDIR\QtCore4.dll"
+Delete "$INSTDIR\Qt5Network.dll"
+Delete "$INSTDIR\Qt5Core.dll"
 Delete "$INSTDIR\libssl32.dll"
 Delete "$INSTDIR\LICENSE.TXT"
 Delete "$INSTDIR\authSSP.dll"
@@ -262,9 +278,11 @@ Delete "$INSTDIR\imc.exe"
 Delete "$INSTDIR\italc.exe"
 Delete "$INSTDIR\README.TXT"
 Delete "$INSTDIR\ItalcCore.dll"
-Delete "$INSTDIR\QtGui4.dll"
+Delete "$INSTDIR\Qt5Gui.dll"
+Delete "$INSTDIR\Qt5Widgets.dll"
 Delete "$INSTDIR\uninstall.exe"
 Delete "$INSTDIR\iTALC website.url"
+RmDir /r "$INSTDIR\platforms"
 RmDir /r "$INSTDIR\doc"
 RmDir /r "$INSTDIR\contrib"
 
diff --git a/ica/CMakeLists.txt b/ica/CMakeLists.txt
index eb3b1d3..9084491 100644
--- a/ica/CMakeLists.txt
+++ b/ica/CMakeLists.txt
@@ -1,9 +1,9 @@
 FILE(GLOB ica_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)
 FILE(GLOB ica_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
 SET(QRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/ica.qrc)
-QT4_WRAP_CPP(ica_MOC_out ${ica_INCLUDES})
-QT4_ADD_RESOURCES(ica_RCC_out ${QRC_FILE})
-QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${ica_SOURCES} ${ica_INCLUDES})
+QT5_WRAP_CPP(ica_MOC_out ${ica_INCLUDES})
+QT5_ADD_RESOURCES(ica_RCC_out ${QRC_FILE})
+#QT5_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${ica_SOURCES} ${ica_INCLUDES})
 ADD_DEFINITIONS(-DLIBVNCSERVER_PACKAGE_STRING="iTALC ${VERSION}")
 
 # build JavaViewer
@@ -185,3 +185,10 @@ IF(ITALC_BUILD_WIN32)
 	SET_TARGET_PROPERTIES(ica PROPERTIES LINK_FLAGS -mwindows)
 ENDIF(ITALC_BUILD_WIN32)
 
+TARGET_LINK_LIBRARIES(ica
+        Qt5::Gui
+        Qt5::Network
+        Qt5::Widgets
+        Qt5::Xml
+	)
+
diff --git a/ica/JavaViewer/Makefile b/ica/JavaViewer/Makefile
new file mode 100644
index 0000000..e5570e9
--- /dev/null
+++ b/ica/JavaViewer/Makefile
@@ -0,0 +1,35 @@
+#
+# Making the VNC applet.
+#
+
+CP = cp
+JC = javac
+JAR = jar
+ARCHIVE = VncViewer.jar
+PAGES = index.vnc shared.vnc noshared.vnc hextile.vnc zlib.vnc tight.vnc
+INSTALL_DIR = /usr/local/vnc/classes
+
+CLASSES = VncViewer.class RfbProto.class AuthPanel.class VncCanvas.class \
+	  OptionsFrame.class ClipboardFrame.class ButtonPanel.class \
+	  DesCipher.class RecordingFrame.class SessionRecorder.class DH.class
+
+SOURCES = VncViewer.java RfbProto.java AuthPanel.java VncCanvas.java \
+	  OptionsFrame.java ClipboardFrame.java ButtonPanel.java \
+	  DesCipher.java RecordingFrame.java SessionRecorder.java DH.java
+
+all: $(CLASSES) $(ARCHIVE)
+
+$(CLASSES): $(SOURCES)
+	$(JC) -O $(SOURCES)
+
+$(ARCHIVE): $(CLASSES)
+	$(JAR) cf $(ARCHIVE) $(CLASSES)
+
+install: $(CLASSES) $(ARCHIVE)
+	$(CP) $(CLASSES) $(ARCHIVE) $(PAGES) $(INSTALL_DIR)
+
+export:: $(CLASSES) $(ARCHIVE) $(PAGES)
+	@$(ExportJavaClasses)
+
+clean::
+	$(RM) *.class *.jar
diff --git a/ica/helpers/CMakeLists.txt b/ica/helpers/CMakeLists.txt
index 6fc4a7c..e60ee69 100644
--- a/ica/helpers/CMakeLists.txt
+++ b/ica/helpers/CMakeLists.txt
@@ -2,3 +2,6 @@ LINK_LIBRARIES(${PAM_LIBRARY})
 INCLUDE_DIRECTORIES(${PAM_INCLUDE_DIR})
 ADD_EXECUTABLE(italc_auth_helper ${CMAKE_CURRENT_SOURCE_DIR}/ItalcAuthHelper.cpp)
 INSTALL(TARGETS italc_auth_helper RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE SETUID GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+
+TARGET_LINK_LIBRARIES(italc_auth_helper Qt5::Core)
+
diff --git a/ica/ica.rc b/ica/ica.rc
deleted file mode 100644
index ca6b2dd..0000000
--- a/ica/ica.rc
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <windows.h>
-#include "win32/winvnc/winvnc/resource.h"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// JAVAARCHIVE
-//
-
-IDR_VNCVIEWER_JAR       JAVAARCHIVE             "JavaViewer/VncViewer.jar"
-
-
-
-VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
-  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-  FILEOS	VOS_NT_WINDOWS32
-  FILETYPE	VFT_APP
-  FILESUBTYPE	VFT2_UNKNOWN
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, charset = Windows, Multilingual
-    BEGIN
-      VALUE "Comments",		"Intelligent Teaching And Learning with Computers (http://italc.sf.net)\0"
-      VALUE "CompanyName",	"iTALC Solutions\0"
-      VALUE "FileDescription",	"iTALC Client Application\0"
-      VALUE "FileVersion",	"\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2004-2014 Tobias Doerffel\0"
-      VALUE "OriginalFilename",	"ica.exe\0"
-      VALUE "ProductName",	"iTALC\0"
-      VALUE "ProductVersion",	"\0"
-    END
-  END
-END
diff --git a/ica/ica.rc.in b/ica/ica.rc.in
index 2c0dc78..eefcd20 100644
--- a/ica/ica.rc.in
+++ b/ica/ica.rc.in
@@ -11,7 +11,7 @@ IDR_VNCVIEWER_JAR       JAVAARCHIVE             "JavaViewer/VncViewer.jar"
 
 
 VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
+  FILEVERSION	3,0,1,0
   FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
   FILEOS	VOS_NT_WINDOWS32
   FILETYPE	VFT_APP
@@ -26,7 +26,7 @@ BEGIN
       VALUE "CompanyName",	"iTALC Solutions\0"
       VALUE "FileDescription",	"iTALC Client Application\0"
       VALUE "FileVersion",	"@PACKAGE_VERSION@\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2004-2014 Tobias Doerffel\0"
+      VALUE "LegalCopyright",	"Copyright (c) 2004-2016 Tobias Doerffel\0"
       VALUE "OriginalFilename",	"ica.exe\0"
       VALUE "ProductName",	"iTALC\0"
       VALUE "ProductVersion",	"@PACKAGE_VERSION@\0"
diff --git a/ica/src/AccessDialogSlave.cpp b/ica/src/AccessDialogSlave.cpp
index 62637f8..e974741 100644
--- a/ica/src/AccessDialogSlave.cpp
+++ b/ica/src/AccessDialogSlave.cpp
@@ -23,8 +23,8 @@
  *
  */
 
-#include <QtGui/QMessageBox>
-#include <QtGui/QPushButton>
+#include <QMessageBox>
+#include <QPushButton>
 
 #include "AccessDialogSlave.h"
 #include "DesktopAccessPermission.h"
diff --git a/ica/src/DemoClient.cpp b/ica/src/DemoClient.cpp
index a3225f0..9a4e10c 100644
--- a/ica/src/DemoClient.cpp
+++ b/ica/src/DemoClient.cpp
@@ -1,7 +1,7 @@
 /*
  * DemoClient.cpp - client widget for demo mode
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -23,9 +23,9 @@
  */
 
 #include <QtGui/QIcon>
-#include <QtGui/QLayout>
-#include <QtGui/QApplication>
-#include <QtGui/QDesktopWidget>
+#include <QLayout>
+#include <QApplication>
+#include <QDesktopWidget>
 
 #include "DemoClient.h"
 #include "LocalSystem.h"
@@ -43,13 +43,18 @@ DemoClient::DemoClient( const QString &host, bool fullscreen ) :
 	m_toplevel->setWindowTitle( tr( "iTALC Demo" ) );
 	m_toplevel->setWindowIcon( QPixmap( ":/resources/display.png" ) );
 	m_toplevel->setAttribute( Qt::WA_DeleteOnClose, false );
-	m_toplevel->setWindowFlags( Qt::Window |
+
+	if( fullscreen == false )
+	{
+		m_toplevel->setWindowFlags( Qt::Window |
 								Qt::CustomizeWindowHint |
 								Qt::WindowTitleHint |
 								Qt::WindowMinMaxButtonsHint );
-	m_toplevel->resize( QApplication::desktop()->
+		m_toplevel->resize( QApplication::desktop()->
 					availableGeometry( m_toplevel ).size() - QSize( 10, 30 ) );
 
+	}
+
 	// initialize extended protocol handlers
 	RfbLZORLE();
 	RfbItalcCursor();
diff --git a/ica/src/DesktopAccessPermission.cpp b/ica/src/DesktopAccessPermission.cpp
index a4f50d0..656cdc4 100644
--- a/ica/src/DesktopAccessPermission.cpp
+++ b/ica/src/DesktopAccessPermission.cpp
@@ -22,7 +22,7 @@
  *
  */
 
-#include <QtGui/QMessageBox>
+#include <QMessageBox>
 
 #include "DesktopAccessPermission.h"
 #include "ItalcConfiguration.h"
diff --git a/ica/src/IcaMain.cpp b/ica/src/IcaMain.cpp
index cc3f831..af9a4ca 100644
--- a/ica/src/IcaMain.cpp
+++ b/ica/src/IcaMain.cpp
@@ -1,7 +1,7 @@
 /*
  * IcaMain.cpp - main file for ICA (iTALC Client Application)
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,7 +25,8 @@
 #include <italcconfig.h>
 
 #include <QtCore/QProcess>
-#include <QtGui/QApplication>
+#include <QApplication>
+#include <QAbstractNativeEventFilter>
 #include <QtNetwork/QHostInfo>
 
 #include "WindowsService.h"
@@ -47,21 +48,29 @@
 #ifdef ITALC_BUILD_WIN32
 static HANDLE hShutdownEvent = NULL;
 
-// event-filter which makes ICA recognize logoff events etc.
-bool eventFilter( void *msg, long *result )
+// event filter which makes ICA recognize logoff events etc.
+class LogoffEventFilter : public QAbstractNativeEventFilter
 {
-	DWORD winMsg = ( ( MSG *) msg )->message;
-
-	if( winMsg == WM_QUERYENDSESSION )
+public:
+	virtual bool nativeEventFilter( const QByteArray& eventType, void *message, long *result)
 	{
-		ilog( Info, "Got WM_QUERYENDSESSION - initiating server shutdown" );
+		Q_UNUSED(eventType);
+		Q_UNUSED(result);
+
+		DWORD winMsg = ( ( MSG *) message )->message;
 
-		// tell UltraVNC server to quit
-		SetEvent( hShutdownEvent );
+		if( winMsg == WM_QUERYENDSESSION )
+		{
+			ilog( Info, "Got WM_QUERYENDSESSION - initiating server shutdown" );
+
+			// tell UltraVNC server to quit
+			SetEvent( hShutdownEvent );
+		}
+
+		return false;
 	}
 
-	return false;
-}
+};
 
 #endif
 
@@ -177,7 +186,10 @@ static int runCoreServer( int argc, char **argv )
 			return -1;
 		}
 	}
-	app.setEventFilter( eventFilter );
+
+	LogoffEventFilter eventFilter;
+
+	app.installNativeEventFilter( &eventFilter );
 #endif
 
 	ItalcCoreServer coreServer;
diff --git a/ica/src/ItalcCoreServer.cpp b/ica/src/ItalcCoreServer.cpp
index 8e09a6c..82b1b23 100644
--- a/ica/src/ItalcCoreServer.cpp
+++ b/ica/src/ItalcCoreServer.cpp
@@ -1,7 +1,7 @@
 /*
  * ItalcCoreServer.cpp - ItalcCoreServer
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -47,6 +47,7 @@ ItalcCoreServer * ItalcCoreServer::_this = NULL;
 ItalcCoreServer::ItalcCoreServer() :
 	QObject(),
 	m_allowedIPs(),
+	m_failedAuthHosts(),
 	m_slaveManager()
 {
 	Q_ASSERT( _this == NULL );
@@ -189,7 +190,7 @@ int ItalcCoreServer::handleItalcClientMessage( socketDispatcher sock,
 	}
 	else if( cmd == ItalcCore::DisplayTextMessage )
 	{
-		m_slaveManager.messageBox( msgIn.arg( "text" ) );
+		m_slaveManager.messageBox( msgIn.arg( "title" ), msgIn.arg( "text" ) );
 	}
 	else if( cmd == ItalcCore::LockScreen )
 	{
@@ -275,8 +276,8 @@ bool ItalcCoreServer::authSecTypeItalc( socketDispatcher sd, void *user )
 	{
 		errorMsgAuth( host );
 		qCritical( "ItalcCoreServer::authSecTypeItalc(...): "
-				"client chose unsupported authentication type!" );
-		return result;
+				"client chose unsupported authentication type %d!", (int) chosen );
+		return false;
 	}
 
 	const QString username = sdev.read().toString();
@@ -342,11 +343,14 @@ bool ItalcCoreServer::authSecTypeItalc( socketDispatcher sd, void *user )
 
 void ItalcCoreServer::errorMsgAuth( const QString &ip )
 {
-	_this->m_slaveManager.systemTrayMessage(
-			tr( "Authentication error" ),
-			tr( "Somebody (IP: %1) tried to access this computer "
-					"but could not authenticate itself "
-					"successfully!" ).arg( ip ) );
+	if( _this->m_failedAuthHosts.contains( ip ) == false )
+	{
+		_this->m_failedAuthHosts += ip;
+		_this->m_slaveManager.systemTrayMessage(
+					tr( "Authentication error" ),
+					tr( "Somebody (IP: %1) tried to access this computer "
+						"but could not authenticate successfully!" ).arg( ip ) );
+	}
 }
 
 
diff --git a/ica/src/ItalcCoreServer.h b/ica/src/ItalcCoreServer.h
index 02b0bdc..68bfffa 100644
--- a/ica/src/ItalcCoreServer.h
+++ b/ica/src/ItalcCoreServer.h
@@ -1,7 +1,7 @@
 /*
  * ItalcCoreServer.h - ItalcCoreServer
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -78,6 +78,8 @@ private:
 	QStringList m_manuallyAllowedHosts;
 	QStringList m_manuallyDeniedHosts;
 
+	QStringList m_failedAuthHosts;
+
 	ItalcSlaveManager m_slaveManager;
 
 } ;
diff --git a/ica/src/ItalcSlaveManager.cpp b/ica/src/ItalcSlaveManager.cpp
index 265a848..fb3801b 100644
--- a/ica/src/ItalcSlaveManager.cpp
+++ b/ica/src/ItalcSlaveManager.cpp
@@ -1,7 +1,7 @@
 /*
  * ItalcSlaveManager.cpp - ItalcSlaveManager which manages (GUI) slave apps
  *
- * Copyright (c) 2010-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -62,7 +62,9 @@ const Ipc::Command ItalcSlaveManager::DemoServer::UpdateAllowedHosts = "UpdateAl
 const Ipc::Argument ItalcSlaveManager::DemoServer::AllowedHosts = "AllowedHosts";
 
 const Ipc::Command ItalcSlaveManager::MessageBoxSlave::ShowMessageBox = "ShowMessageBox";
+const Ipc::Argument ItalcSlaveManager::MessageBoxSlave::Title = "Title";
 const Ipc::Argument ItalcSlaveManager::MessageBoxSlave::Text = "Text";
+const Ipc::Argument ItalcSlaveManager::MessageBoxSlave::Icon = "Icon";
 
 const Ipc::Command ItalcSlaveManager::SystemTrayIcon::SetToolTip = "SetToolTip";
 const Ipc::Argument ItalcSlaveManager::SystemTrayIcon::ToolTipText = "ToolTipText";
@@ -92,6 +94,14 @@ ItalcSlaveManager::~ItalcSlaveManager()
 
 void ItalcSlaveManager::startDemo( const QString &masterHost, bool fullscreen )
 {
+	// if a demo-server is started, it's likely that the demo was started
+	// on master-computer as well therefore we deny starting a demo on
+	// hosts on which a demo-server is running
+	if( isSlaveRunning( IdDemoServer ) )
+	{
+		return;
+	}
+
 	Ipc::SlaveLauncher *slaveLauncher = NULL;
 	if( fullscreen && ItalcCore::config->lockWithDesktopSwitching() )
 	{
@@ -117,6 +127,11 @@ void ItalcSlaveManager::stopDemo()
 
 void ItalcSlaveManager::lockScreen()
 {
+	if( isSlaveRunning( IdDemoServer ) )
+	{
+		return;
+	}
+
 	Ipc::SlaveLauncher *slaveLauncher = NULL;
 	if( ItalcCore::config->lockWithDesktopSwitching() )
 	{
@@ -152,15 +167,17 @@ void ItalcSlaveManager::unlockInput()
 
 
 
-void ItalcSlaveManager::messageBox( const QString &msg )
+void ItalcSlaveManager::messageBox(const QString& title, const QString &msg, int icon )
 {
 	if( !isSlaveRunning( IdMessageBox ) )
 	{
 		createSlave( IdMessageBox );
 	}
 	sendMessage( IdMessageBox,
-					Ipc::Msg( MessageBoxSlave::ShowMessageBox ).
-						addArg( MessageBoxSlave::Text, msg ) );
+				 Ipc::Msg( MessageBoxSlave::ShowMessageBox ).
+					addArg( MessageBoxSlave::Title, title ).
+					addArg( MessageBoxSlave::Text, msg ).
+					addArg( MessageBoxSlave::Icon, icon ) );
 }
 
 
@@ -171,7 +188,7 @@ void ItalcSlaveManager::systemTrayMessage( const QString &title,
 {
 	if( ItalcCore::config->isTrayIconHidden() )
 	{
-		messageBox( msg );
+		messageBox( title, msg );
 		return;
 	}
 	if( !isSlaveRunning( IdSystemTrayIcon ) )
diff --git a/ica/src/ItalcSlaveManager.h b/ica/src/ItalcSlaveManager.h
index 5f92fa1..6a33a0b 100644
--- a/ica/src/ItalcSlaveManager.h
+++ b/ica/src/ItalcSlaveManager.h
@@ -1,7 +1,7 @@
 /*
  * ItalcSlaveManager.h - ItalcSlaveManager which manages (GUI) slave apps
  *
- * Copyright (c) 2010-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -85,7 +85,9 @@ public:
 	struct MessageBoxSlave
 	{
 		static const Ipc::Command ShowMessageBox;
+		static const Ipc::Argument Title;
 		static const Ipc::Argument Text;
+		static const Ipc::Argument Icon;
 	} ;
 
 	DemoServerMaster *demoServerMaster()
@@ -102,7 +104,7 @@ public:
 	void lockInput();
 	void unlockInput();
 
-	void messageBox( const QString &msg );
+	void messageBox(const QString &title, const QString &msg, int icon = -1);
 	void setSystemTrayToolTip( const QString &tooltip );
 	void systemTrayMessage( const QString &title, const QString &msg );
 
diff --git a/ica/src/ItalcVncServer.cpp b/ica/src/ItalcVncServer.cpp
index 70e3ee9..cda083b 100644
--- a/ica/src/ItalcVncServer.cpp
+++ b/ica/src/ItalcVncServer.cpp
@@ -248,10 +248,10 @@ static void runX11vnc( QStringList cmdline, int port, bool plainVnc )
 		}
 	}
 
-	// workaround for x11vnc when running in an NX session
+	// workaround for x11vnc when running in an NX session or a Thin client LTSP session
 	foreach( const QString &s, QProcess::systemEnvironment() )
 	{
-		if( s.startsWith( "NXSESSIONID=" ) || s.startsWith( "X2GO_SESSION=" ) )
+		if( s.startsWith( "NXSESSIONID=" ) || s.startsWith( "X2GO_SESSION=" ) || s.startsWith( "LTSP_CLIENT_MAC=" ) )
 		{
 			cmdline << "-noxdamage";
 		}
@@ -315,10 +315,6 @@ void ItalcVncServer::runVncReflector( int srcPort, int dstPort )
 	args << "-viewonly"
 		<< "-reflect"
 		<< QString( "localhost:%1" ).arg( srcPort );
-	if( ItalcCore::config->isDemoServerMultithreaded() )
-	{
-		args << "-threads";
-	}
 
 	while( 1 )
 	{
diff --git a/ica/src/LocalSystemIca.cpp b/ica/src/LocalSystemIca.cpp
index 732bdba..67a17d0 100644
--- a/ica/src/LocalSystemIca.cpp
+++ b/ica/src/LocalSystemIca.cpp
@@ -3,7 +3,7 @@
  *                      transparent usage of operating-system-specific
  *                      functions
  *
- * Copyright (c) 2007-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2007-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -141,10 +141,16 @@ void powerDown( void )
 	}
 	else
 	{
-		QProcess::startDetached( "gdm-signal -h" ); // Gnome shutdown
-		QProcess::startDetached( "gnome-session-save --silent --kill" ); // Gnome logout
-		QProcess::startDetached( "dcop ksmserver ksmserver logout 0 2 0" ); // KDE shutdown
-		QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 2 0" ); // KDE4 shutdown
+		// Gnome shutdown
+		QProcess::startDetached( "dbus-send --session --dest=org.gnome.SessionManager --type=method_call /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown" );
+		// KDE 3 shutdown
+		QProcess::startDetached( "dcop ksmserver ksmserver logout 0 2 0" );
+		// KDE 4 shutdown
+		QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 2 0" );
+		// KDE 5 shutdown
+		QProcess::startDetached( "dbus-send --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:0 int32:2 int32:2" );
+		// generic shutdown via consolekit
+		QProcess::startDetached( "dbus-send --system --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop" );
 	}
 #endif
 }
@@ -157,9 +163,14 @@ void logoutUser( void )
 #ifdef ITALC_BUILD_WIN32
 	ExitWindowsEx( EWX_LOGOFF | SHUTDOWN_FLAGS, SHUTDOWN_REASON );
 #else
-	QProcess::startDetached( "gnome-session-save --silent --kill" ); // Gnome logout
-	QProcess::startDetached( "dcop ksmserver ksmserver logout 0 0 0" ); // KDE logout
-	QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 0 0" ); // KDE4 logout
+	// Gnome logout, 2 = forced mode (don't wait for unresponsive processes)
+	QProcess::startDetached( "dbus-send --session --dest=org.gnome.SessionManager --type=method_call /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:2" );
+	// KDE 3 logout
+	QProcess::startDetached( "dcop ksmserver ksmserver logout 0 0 0" );
+	// KDE 4 logout
+	QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 0 0" );
+	// KDE 5 logout
+	QProcess::startDetached( "dbus-send --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:0 int32:2 int32:0" );
 #endif
 }
 
@@ -174,14 +185,20 @@ void reboot( void )
 #else
 	if( LocalSystem::User::loggedOnUser().name() == "root" )
 	{
-		QProcess::startDetached( "poweroff" );
+		QProcess::startDetached( "reboot" );
 	}
 	else
 	{
-		QProcess::startDetached( "gdm-signal -r" ); // Gnome reboot
-		QProcess::startDetached( "gnome-session-save --silent --kill" ); // Gnome logout
-		QProcess::startDetached( "dcop ksmserver ksmserver logout 0 1 0" ); // KDE reboot
-		QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 1 0" ); // KDE4 reboot
+		// Gnome reboot
+		QProcess::startDetached( "dbus-send --session --dest=org.gnome.SessionManager --type=method_call /org/gnome/SessionManager org.gnome.SessionManager.RequestReboot" );
+		// KDE 3 reboot
+		QProcess::startDetached( "dcop ksmserver ksmserver logout 0 1 0" );
+		// KDE 4 reboot
+		QProcess::startDetached( "qdbus org.kde.ksmserver /KSMServer logout 0 1 0" );
+		// KDE 5 reboot
+		QProcess::startDetached( "dbus-send --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:1 int32:1 int32:1" );
+		// generic reboot via consolekit
+		QProcess::startDetached( "dbus-send --system --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart" );
 	}
 #endif
 }
diff --git a/ica/src/MessageBoxSlave.cpp b/ica/src/MessageBoxSlave.cpp
index 826454d..21f415b 100644
--- a/ica/src/MessageBoxSlave.cpp
+++ b/ica/src/MessageBoxSlave.cpp
@@ -1,7 +1,7 @@
 /*
  * MessageBoxSlave.cpp - an IcaSlave providing message boxes
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -22,9 +22,10 @@
  *
  */
 
+#include <QMessageBox>
+
 #include "MessageBoxSlave.h"
 #include "ItalcSlaveManager.h"
-#include "DecoratedMessageBox.h"
 
 
 MessageBoxSlave::MessageBoxSlave() :
@@ -44,9 +45,24 @@ bool MessageBoxSlave::handleMessage( const Ipc::Msg &m )
 {
 	if( m.cmd() == ItalcSlaveManager::MessageBoxSlave::ShowMessageBox )
 	{
-		new DecoratedMessageBox( tr( "Message from teacher" ),
-				m.arg( ItalcSlaveManager::MessageBoxSlave::Text ),
-				QPixmap( ":/resources/message.png" ) );
+		if( m.arg( ItalcSlaveManager::MessageBoxSlave::Icon ).toInt() == QMessageBox::Warning )
+		{
+			QMessageBox::warning( Q_NULLPTR,
+								  m.arg( ItalcSlaveManager::MessageBoxSlave::Title ),
+								  m.arg( ItalcSlaveManager::MessageBoxSlave::Text ) );
+		}
+		else if( m.arg( ItalcSlaveManager::MessageBoxSlave::Icon ).toInt() == QMessageBox::Critical )
+		{
+			QMessageBox::critical( Q_NULLPTR,
+								   m.arg( ItalcSlaveManager::MessageBoxSlave::Title ),
+								   m.arg( ItalcSlaveManager::MessageBoxSlave::Text ) );
+		}
+		else
+		{
+			QMessageBox::information( Q_NULLPTR,
+									  m.arg( ItalcSlaveManager::MessageBoxSlave::Title ),
+									  m.arg( ItalcSlaveManager::MessageBoxSlave::Text ) );
+		}
 
 		return true;
 	}
diff --git a/ica/src/ScreenLockSlaveLauncher.cpp b/ica/src/ScreenLockSlaveLauncher.cpp
index 1189cc5..c626004 100644
--- a/ica/src/ScreenLockSlaveLauncher.cpp
+++ b/ica/src/ScreenLockSlaveLauncher.cpp
@@ -1,7 +1,7 @@
 /*
  * ScreenLockSlaveLauncher.cpp - a SlaveLauncher for the ScreenLockSlave
  *
- * Copyright (c) 2010-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -23,6 +23,7 @@
  *
  */
 
+#define UNICODE
 #include <QtCore/QStringList>
 
 #include "ScreenLockSlaveLauncher.h"
@@ -62,9 +63,8 @@ void ScreenLockSlaveLauncher::start( const QStringList &arguments )
 	m_origThreadDesktop = GetThreadDesktop( GetCurrentThreadId() );
 	m_origInputDesktop = OpenInputDesktop( 0, FALSE, DESKTOP_SWITCHDESKTOP );
 
-	char *desktopName = qstrdup( LocalSystem::Desktop::screenLockDesktop().
-												name().toUtf8().constData() );
-	m_newDesktop = CreateDesktop( desktopName, NULL, NULL, 0, GENERIC_ALL, NULL );
+	const QString desktopName = LocalSystem::Desktop::screenLockDesktop().name();
+	m_newDesktop = CreateDesktop( (LPCWSTR) desktopName.utf16(), NULL, NULL, 0, GENERIC_ALL, NULL );
 
 	LocalSystem::User user = LocalSystem::User::loggedOnUser();
 	LocalSystem::Process proc(
@@ -74,8 +74,6 @@ void ScreenLockSlaveLauncher::start( const QStringList &arguments )
 		proc.runAsUser( applicationFilePath() + " " + arguments.join( " " ),
 							LocalSystem::Desktop::screenLockDesktop().name() );
 
-	delete[] desktopName;
-
 	// sleep a bit so switch to desktop with loaded screen locker runs smoothly
 	Sleep( 2000 );
 
diff --git a/ica/src/SystemTrayIconSlave.h b/ica/src/SystemTrayIconSlave.h
index 518d994..f7f055f 100644
--- a/ica/src/SystemTrayIconSlave.h
+++ b/ica/src/SystemTrayIconSlave.h
@@ -26,7 +26,7 @@
 #ifndef SYSTEM_TRAY_ICON_SLAVE_H
 #define SYSTEM_TRAY_ICON_SLAVE_H
 
-#include <QtGui/QSystemTrayIcon>
+#include <QSystemTrayIcon>
 
 #include "IcaSlave.h"
 
diff --git a/ica/src/WindowsService.cpp b/ica/src/WindowsService.cpp
index 2c7a4b0..b6ebcdf 100644
--- a/ica/src/WindowsService.cpp
+++ b/ica/src/WindowsService.cpp
@@ -1,7 +1,7 @@
 /*
  * WindowsService.cpp - implementation of WindowsService-class
  *
- * Copyright (c) 2006-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,8 +25,8 @@
 #include <QtCore/QDebug>
 #include <QtCore/QProcess>
 #include <QtCore/QTime>
-#include <QtGui/QApplication>
-#include <QtGui/QMessageBox>
+#include <QApplication>
+#include <QMessageBox>
 
 #include "WindowsService.h"
 #include "LocalSystem.h"
@@ -207,7 +207,6 @@ WindowsService *WindowsService::s_this = NULL;
 SERVICE_STATUS WindowsService::s_status;
 SERVICE_STATUS_HANDLE WindowsService::s_statusHandle;
 HANDLE WindowsService::s_stopServiceEvent = (DWORD) NULL;
-QAtomicInt WindowsService::s_sessionChangeEvent = 0;
 
 
 
@@ -663,20 +662,6 @@ DWORD WINAPI WindowsService::serviceCtrl( DWORD _ctrlcode, DWORD dwEventType,
 			// Service control manager just wants to know our state
 			break;
 
-		case SERVICE_CONTROL_SESSIONCHANGE:
-			switch( dwEventType )
-			{
-				case WTS_SESSION_LOGOFF:
-					ilog( Info, "Session change event: WTS_SESSION_LOGOFF" );
-					s_sessionChangeEvent = 1;
-					break;
-				case WTS_SESSION_LOGON:
-					ilog( Info, "Session change event: WTS_SESSION_LOGON" );
-					//s_sessionChangeEvent = 1;	// no need to restart server upon logon
-					break;
-			}
-			break;
-
 		default:
 			// Control code not recognised
 			break;
@@ -755,21 +740,8 @@ void WindowsService::monitorSessions()
 
 	while( WaitForSingleObject( s_stopServiceEvent, 1000 ) == WAIT_TIMEOUT )
 	{
-		bool sessionChanged = s_sessionChangeEvent.testAndSetOrdered( 1, 0 );
-		// ignore session change events on Windows Vista and Windows 7 as
-		// monitoring session IDs is reliable enough there and prevents us
-		// from uneccessary server restarts
-		if( sessionChanged &&
-			( QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
-				QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7 ) )
-		{
-			ilog( Info, "Ignoring session change event as the operating system "
-						"is recent enough" );
-			sessionChanged = false;
-		}
-
 		const DWORD sessionId = WTSGetActiveConsoleSessionId();
-		if( oldSessionId != sessionId || sessionChanged )
+		if( oldSessionId != sessionId )
 		{
 			ilogf( Info, "Session ID changed from %d to %d",
 									oldSessionId, sessionId );
@@ -783,7 +755,7 @@ void WindowsService::monitorSessions()
 				continue;
 			}
 
-			if( oldSessionId != SESSION_INVALID || sessionChanged )
+			if( oldSessionId != SESSION_INVALID )
 			{
 				// workaround for situations where service is stopped
 				// while it is still starting up
@@ -797,7 +769,7 @@ void WindowsService::monitorSessions()
 
 				Sleep( 5000 );
 			}
-			if( sessionId != SESSION_INVALID || sessionChanged )
+			if( sessionId != SESSION_INVALID )
 			{
 				italcProcess.start( sessionId );
 				lastServiceStart.restart();
diff --git a/ica/src/moc_AccessDialogSlave.cxx_parameters b/ica/src/moc_AccessDialogSlave.cxx_parameters
deleted file mode 100644
index ae59c61..0000000
--- a/ica/src/moc_AccessDialogSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_AccessDialogSlave.cxx
-/tmp/foo/ica/src/AccessDialogSlave.h
diff --git a/ica/src/moc_DemoClient.cxx_parameters b/ica/src/moc_DemoClient.cxx_parameters
deleted file mode 100644
index eedf96a..0000000
--- a/ica/src/moc_DemoClient.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DemoClient.cxx
-/tmp/foo/ica/src/DemoClient.h
diff --git a/ica/src/moc_DemoClientSlave.cxx_parameters b/ica/src/moc_DemoClientSlave.cxx_parameters
deleted file mode 100644
index 9be940f..0000000
--- a/ica/src/moc_DemoClientSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DemoClientSlave.cxx
-/tmp/foo/ica/src/DemoClientSlave.h
diff --git a/ica/src/moc_DemoServer.cxx_parameters b/ica/src/moc_DemoServer.cxx_parameters
deleted file mode 100644
index a0a1d51..0000000
--- a/ica/src/moc_DemoServer.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DemoServer.cxx
-/tmp/foo/ica/src/DemoServer.h
diff --git a/ica/src/moc_DemoServerMaster.cxx_parameters b/ica/src/moc_DemoServerMaster.cxx_parameters
deleted file mode 100644
index 4f789eb..0000000
--- a/ica/src/moc_DemoServerMaster.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DemoServerMaster.cxx
-/tmp/foo/ica/src/DemoServerMaster.h
diff --git a/ica/src/moc_DemoServerSlave.cxx_parameters b/ica/src/moc_DemoServerSlave.cxx_parameters
deleted file mode 100644
index edf79f0..0000000
--- a/ica/src/moc_DemoServerSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DemoServerSlave.cxx
-/tmp/foo/ica/src/DemoServerSlave.h
diff --git a/ica/src/moc_DesktopAccessPermission.cxx_parameters b/ica/src/moc_DesktopAccessPermission.cxx_parameters
deleted file mode 100644
index c298c0a..0000000
--- a/ica/src/moc_DesktopAccessPermission.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_DesktopAccessPermission.cxx
-/tmp/foo/ica/src/DesktopAccessPermission.h
diff --git a/ica/src/moc_IcaSlave.cxx_parameters b/ica/src/moc_IcaSlave.cxx_parameters
deleted file mode 100644
index 9d04ad6..0000000
--- a/ica/src/moc_IcaSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_IcaSlave.cxx
-/tmp/foo/ica/src/IcaSlave.h
diff --git a/ica/src/moc_InputLockSlave.cxx_parameters b/ica/src/moc_InputLockSlave.cxx_parameters
deleted file mode 100644
index a57dc95..0000000
--- a/ica/src/moc_InputLockSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_InputLockSlave.cxx
-/tmp/foo/ica/src/InputLockSlave.h
diff --git a/ica/src/moc_ItalcCoreServer.cxx_parameters b/ica/src/moc_ItalcCoreServer.cxx_parameters
deleted file mode 100644
index 0035a0c..0000000
--- a/ica/src/moc_ItalcCoreServer.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_ItalcCoreServer.cxx
-/tmp/foo/ica/src/ItalcCoreServer.h
diff --git a/ica/src/moc_ItalcSlaveManager.cxx_parameters b/ica/src/moc_ItalcSlaveManager.cxx_parameters
deleted file mode 100644
index 7e04cbc..0000000
--- a/ica/src/moc_ItalcSlaveManager.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_ItalcSlaveManager.cxx
-/tmp/foo/ica/src/ItalcSlaveManager.h
diff --git a/ica/src/moc_ItalcVncServer.cxx_parameters b/ica/src/moc_ItalcVncServer.cxx_parameters
deleted file mode 100644
index 904b650..0000000
--- a/ica/src/moc_ItalcVncServer.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_ItalcVncServer.cxx
-/tmp/foo/ica/src/ItalcVncServer.h
diff --git a/ica/src/moc_MessageBoxSlave.cxx_parameters b/ica/src/moc_MessageBoxSlave.cxx_parameters
deleted file mode 100644
index 2dbcf92..0000000
--- a/ica/src/moc_MessageBoxSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_MessageBoxSlave.cxx
-/tmp/foo/ica/src/MessageBoxSlave.h
diff --git a/ica/src/moc_RfbItalcCursor.cxx_parameters b/ica/src/moc_RfbItalcCursor.cxx_parameters
deleted file mode 100644
index be06a91..0000000
--- a/ica/src/moc_RfbItalcCursor.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_RfbItalcCursor.cxx
-/tmp/foo/ica/src/RfbItalcCursor.h
diff --git a/ica/src/moc_RfbLZORLE.cxx_parameters b/ica/src/moc_RfbLZORLE.cxx_parameters
deleted file mode 100644
index 87f2417..0000000
--- a/ica/src/moc_RfbLZORLE.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_RfbLZORLE.cxx
-/tmp/foo/ica/src/RfbLZORLE.h
diff --git a/ica/src/moc_ScreenLockSlave.cxx_parameters b/ica/src/moc_ScreenLockSlave.cxx_parameters
deleted file mode 100644
index e8c9a7a..0000000
--- a/ica/src/moc_ScreenLockSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_ScreenLockSlave.cxx
-/tmp/foo/ica/src/ScreenLockSlave.h
diff --git a/ica/src/moc_ScreenLockSlaveLauncher.cxx_parameters b/ica/src/moc_ScreenLockSlaveLauncher.cxx_parameters
deleted file mode 100644
index b07506a..0000000
--- a/ica/src/moc_ScreenLockSlaveLauncher.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_ScreenLockSlaveLauncher.cxx
-/tmp/foo/ica/src/ScreenLockSlaveLauncher.h
diff --git a/ica/src/moc_SystemTrayIconSlave.cxx_parameters b/ica/src/moc_SystemTrayIconSlave.cxx_parameters
deleted file mode 100644
index 420c98c..0000000
--- a/ica/src/moc_SystemTrayIconSlave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_SystemTrayIconSlave.cxx
-/tmp/foo/ica/src/SystemTrayIconSlave.h
diff --git a/ica/src/moc_WindowsService.cxx_parameters b/ica/src/moc_WindowsService.cxx_parameters
deleted file mode 100644
index a1e55e7..0000000
--- a/ica/src/moc_WindowsService.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ica/src/moc_WindowsService.cxx
-/tmp/foo/ica/src/WindowsService.h
diff --git a/ica/x11/README b/ica/x11/README
index 499b72b..7e30acc 100644
--- a/ica/x11/README
+++ b/ica/x11/README
@@ -1,3 +1,5 @@
+[![Build Status](https://travis-ci.org/LibVNC/libvncserver.svg?branch=master)](https://travis-ci.org/LibVNC/libvncserver)
+
 LibVNCServer: A library for easy implementation of a VNC server.
 Copyright (C) 2001-2003 Johannes E. Schindelin
 
diff --git a/ica/x11/common/lzoconf.h b/ica/x11/common/lzoconf.h
index 23c6ca9..64ef279 100644
--- a/ica/x11/common/lzoconf.h
+++ b/ica/x11/common/lzoconf.h
@@ -2,22 +2,7 @@
 
    This file is part of the LZO real-time data compression library.
 
-   Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+   Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
    All Rights Reserved.
 
    The LZO library is free software; you can redistribute it and/or
@@ -44,9 +29,9 @@
 #ifndef __LZOCONF_H_INCLUDED
 #define __LZOCONF_H_INCLUDED 1
 
-#define LZO_VERSION             0x2060
-#define LZO_VERSION_STRING      "2.06"
-#define LZO_VERSION_DATE        "Aug 12 2011"
+#define LZO_VERSION             0x2090
+#define LZO_VERSION_STRING      "2.09"
+#define LZO_VERSION_DATE        "Feb 04 2015"
 
 /* internal Autoconf configuration file - only used when building LZO */
 #if defined(LZO_HAVE_CONFIG_H)
@@ -63,7 +48,7 @@
 #if !defined(CHAR_BIT) || (CHAR_BIT != 8)
 #  error "invalid CHAR_BIT"
 #endif
-#if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX)
+#if !defined(UCHAR_MAX) || !defined(USHRT_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX)
 #  error "check your compiler installation"
 #endif
 #if (USHRT_MAX < 1) || (UINT_MAX < 1) || (ULONG_MAX < 1)
@@ -72,7 +57,7 @@
 
 /* get OS and architecture defines */
 #ifndef __LZODEFS_H_INCLUDED
-#include "lzodefs.h"
+#include <lzo/lzodefs.h>
 #endif
 
 
@@ -85,14 +70,6 @@ extern "C" {
 // some core defines
 ************************************************************************/
 
-#if !defined(LZO_UINT32_C)
-#  if (UINT_MAX < LZO_0xffffffffL)
-#    define LZO_UINT32_C(c)     c ## UL
-#  else
-#    define LZO_UINT32_C(c)     ((c) + 0U)
-#  endif
-#endif
-
 /* memory checkers */
 #if !defined(__LZO_CHECKER)
 #  if defined(__BOUNDS_CHECKING_ON)
@@ -111,28 +88,35 @@ extern "C" {
 // integral and pointer types
 ************************************************************************/
 
-/* lzo_uint should match size_t */
+/* lzo_uint must match size_t */
 #if !defined(LZO_UINT_MAX)
-#  if defined(LZO_ABI_LLP64) /* WIN64 */
-#    if defined(LZO_OS_WIN64)
+#  if (LZO_ABI_LLP64)
+#    if (LZO_OS_WIN64)
      typedef unsigned __int64   lzo_uint;
      typedef __int64            lzo_int;
+#    define LZO_TYPEOF_LZO_INT  LZO_TYPEOF___INT64
 #    else
-     typedef unsigned long long lzo_uint;
-     typedef long long          lzo_int;
+     typedef lzo_ullong_t       lzo_uint;
+     typedef lzo_llong_t        lzo_int;
+#    define LZO_TYPEOF_LZO_INT  LZO_TYPEOF_LONG_LONG
 #    endif
+#    define LZO_SIZEOF_LZO_INT  8
 #    define LZO_UINT_MAX        0xffffffffffffffffull
 #    define LZO_INT_MAX         9223372036854775807LL
 #    define LZO_INT_MIN         (-1LL - LZO_INT_MAX)
-#  elif defined(LZO_ABI_IP32L64) /* MIPS R5900 */
+#  elif (LZO_ABI_IP32L64) /* MIPS R5900 */
      typedef unsigned int       lzo_uint;
      typedef int                lzo_int;
+#    define LZO_SIZEOF_LZO_INT  LZO_SIZEOF_INT
+#    define LZO_TYPEOF_LZO_INT  LZO_TYPEOF_INT
 #    define LZO_UINT_MAX        UINT_MAX
 #    define LZO_INT_MAX         INT_MAX
 #    define LZO_INT_MIN         INT_MIN
 #  elif (ULONG_MAX >= LZO_0xffffffffL)
      typedef unsigned long      lzo_uint;
      typedef long               lzo_int;
+#    define LZO_SIZEOF_LZO_INT  LZO_SIZEOF_LONG
+#    define LZO_TYPEOF_LZO_INT  LZO_TYPEOF_LONG
 #    define LZO_UINT_MAX        ULONG_MAX
 #    define LZO_INT_MAX         LONG_MAX
 #    define LZO_INT_MIN         LONG_MIN
@@ -141,63 +125,23 @@ extern "C" {
 #  endif
 #endif
 
-/* Integral types with 32 bits or more. */
-#if !defined(LZO_UINT32_MAX)
-#  if (UINT_MAX >= LZO_0xffffffffL)
-     typedef unsigned int       lzo_uint32;
-     typedef int                lzo_int32;
-#    define LZO_UINT32_MAX      UINT_MAX
-#    define LZO_INT32_MAX       INT_MAX
-#    define LZO_INT32_MIN       INT_MIN
-#  elif (ULONG_MAX >= LZO_0xffffffffL)
-     typedef unsigned long      lzo_uint32;
-     typedef long               lzo_int32;
-#    define LZO_UINT32_MAX      ULONG_MAX
-#    define LZO_INT32_MAX       LONG_MAX
-#    define LZO_INT32_MIN       LONG_MIN
-#  else
-#    error "lzo_uint32"
-#  endif
-#endif
-
-/* Integral types with exactly 64 bits. */
-#if !defined(LZO_UINT64_MAX)
-#  if (LZO_UINT_MAX >= LZO_0xffffffffL)
-#   if ((((LZO_UINT_MAX) >> 31) >> 31) == 3)
-#    define lzo_uint64          lzo_uint
-#    define lzo_int64           lzo_int
-#    define LZO_UINT64_MAX      LZO_UINT_MAX
-#    define LZO_INT64_MAX       LZO_INT_MAX
-#    define LZO_INT64_MIN       LZO_INT_MIN
-#   endif
-#  elif (ULONG_MAX >= LZO_0xffffffffL)
-#   if ((((ULONG_MAX) >> 31) >> 31) == 3)
-     typedef unsigned long      lzo_uint64;
-     typedef long               lzo_int64;
-#    define LZO_UINT64_MAX      ULONG_MAX
-#    define LZO_INT64_MAX       LONG_MAX
-#    define LZO_INT64_MIN       LONG_MIN
-#   endif
-#  endif
-#endif
-
-/* The larger type of lzo_uint and lzo_uint32. */
-#if (LZO_UINT_MAX >= LZO_UINT32_MAX)
+/* The larger type of lzo_uint and lzo_uint32_t. */
+#if (LZO_SIZEOF_LZO_INT >= 4)
 #  define lzo_xint              lzo_uint
 #else
-#  define lzo_xint              lzo_uint32
+#  define lzo_xint              lzo_uint32_t
 #endif
 
-/* Memory model that allows to access memory at offsets of lzo_uint. */
-#if !defined(__LZO_MMODEL)
-#  if (LZO_UINT_MAX <= UINT_MAX)
-#    define __LZO_MMODEL        /*empty*/
-#  elif defined(LZO_HAVE_MM_HUGE_PTR)
-#    define __LZO_MMODEL_HUGE   1
-#    define __LZO_MMODEL        __huge
-#  else
-#    define __LZO_MMODEL        /*empty*/
-#  endif
+typedef int lzo_bool;
+
+/* sanity checks */
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int)  == LZO_SIZEOF_LZO_INT)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint) == LZO_SIZEOF_LZO_INT)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_xint) >= sizeof(lzo_uint))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_xint) >= sizeof(lzo_uint32_t))
+
+#ifndef __LZO_MMODEL
+#define __LZO_MMODEL            /*empty*/
 #endif
 
 /* no typedef here because of const-pointer issues */
@@ -206,21 +150,52 @@ extern "C" {
 #define lzo_voidp               void __LZO_MMODEL *
 #define lzo_shortp              short __LZO_MMODEL *
 #define lzo_ushortp             unsigned short __LZO_MMODEL *
-#define lzo_uint32p             lzo_uint32 __LZO_MMODEL *
-#define lzo_int32p              lzo_int32 __LZO_MMODEL *
-#if defined(LZO_UINT64_MAX)
-#define lzo_uint64p             lzo_uint64 __LZO_MMODEL *
-#define lzo_int64p              lzo_int64 __LZO_MMODEL *
-#endif
-#define lzo_uintp               lzo_uint __LZO_MMODEL *
 #define lzo_intp                lzo_int __LZO_MMODEL *
+#define lzo_uintp               lzo_uint __LZO_MMODEL *
 #define lzo_xintp               lzo_xint __LZO_MMODEL *
 #define lzo_voidpp              lzo_voidp __LZO_MMODEL *
 #define lzo_bytepp              lzo_bytep __LZO_MMODEL *
-/* deprecated - use 'lzo_bytep' instead of 'lzo_byte *' */
-#define lzo_byte                unsigned char __LZO_MMODEL
 
-typedef int lzo_bool;
+#define lzo_int8_tp             lzo_int8_t __LZO_MMODEL *
+#define lzo_uint8_tp            lzo_uint8_t __LZO_MMODEL *
+#define lzo_int16_tp            lzo_int16_t __LZO_MMODEL *
+#define lzo_uint16_tp           lzo_uint16_t __LZO_MMODEL *
+#define lzo_int32_tp            lzo_int32_t __LZO_MMODEL *
+#define lzo_uint32_tp           lzo_uint32_t __LZO_MMODEL *
+#if defined(lzo_int64_t)
+#define lzo_int64_tp            lzo_int64_t __LZO_MMODEL *
+#define lzo_uint64_tp           lzo_uint64_t __LZO_MMODEL *
+#endif
+
+/* Older LZO versions used to support ancient systems and memory models
+ * such as 16-bit MSDOS with __huge pointers or Cray PVP, but these
+ * obsolete configurations are not supported any longer.
+ */
+#if defined(__LZO_MMODEL_HUGE)
+#error "__LZO_MMODEL_HUGE memory model is unsupported"
+#endif
+#if (LZO_MM_PVP)
+#error "LZO_MM_PVP memory model is unsupported"
+#endif
+#if (LZO_SIZEOF_INT < 4)
+#error "LZO_SIZEOF_INT < 4 is unsupported"
+#endif
+#if (__LZO_UINTPTR_T_IS_POINTER)
+#error "__LZO_UINTPTR_T_IS_POINTER is unsupported"
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int) >= 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint) >= 4)
+/* Strange configurations where sizeof(lzo_uint) != sizeof(size_t) should
+ * work but have not received much testing lately, so be strict here.
+ */
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint) == sizeof(size_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint) == sizeof(ptrdiff_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint) == sizeof(lzo_uintptr_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(void *)   == sizeof(lzo_uintptr_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(char *)   == sizeof(lzo_uintptr_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long *)   == sizeof(lzo_uintptr_t))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(void *)   == sizeof(lzo_voidp))
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(char *)   == sizeof(lzo_bytep))
 
 
 /***********************************************************************
@@ -251,13 +226,13 @@ typedef int lzo_bool;
 
 /* __cdecl calling convention for public C and assembly functions */
 #if !defined(LZO_PUBLIC)
-#  define LZO_PUBLIC(_rettype)  __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_CDECL
+#  define LZO_PUBLIC(r)         __LZO_EXPORT1 r __LZO_EXPORT2 __LZO_CDECL
 #endif
 #if !defined(LZO_EXTERN)
-#  define LZO_EXTERN(_rettype)  __LZO_EXTERN_C LZO_PUBLIC(_rettype)
+#  define LZO_EXTERN(r)         __LZO_EXTERN_C LZO_PUBLIC(r)
 #endif
 #if !defined(LZO_PRIVATE)
-#  define LZO_PRIVATE(_rettype) static _rettype __LZO_CDECL
+#  define LZO_PRIVATE(r)        static r  __LZO_CDECL
 #endif
 
 /* function types */
@@ -315,7 +290,7 @@ struct lzo_callback_t
     /* a progress indicator callback function (set to 0 to disable) */
     lzo_progress_func_t nprogress;
 
-    /* NOTE: the first parameter "self" of the nalloc/nfree/nprogress
+    /* INFO: the first parameter "self" of the nalloc/nfree/nprogress
      * callbacks points back to this struct, so you are free to store
      * some extra info in the following variables. */
     lzo_voidp user1;
@@ -343,6 +318,9 @@ struct lzo_callback_t
 #define LZO_E_INPUT_NOT_CONSUMED    (-8)
 #define LZO_E_NOT_YET_IMPLEMENTED   (-9)    /* [not used right now] */
 #define LZO_E_INVALID_ARGUMENT      (-10)
+#define LZO_E_INVALID_ALIGNMENT     (-11)   /* pointer argument is not properly aligned */
+#define LZO_E_OUTPUT_NOT_CONSUMED   (-12)
+#define LZO_E_INTERNAL_ERROR        (-99)
 
 
 #ifndef lzo_sizeof_dict_t
@@ -356,7 +334,7 @@ struct lzo_callback_t
  * compiler's view of various types are consistent.
  */
 #define lzo_init() __lzo_init_v2(LZO_VERSION,(int)sizeof(short),(int)sizeof(int),\
-    (int)sizeof(long),(int)sizeof(lzo_uint32),(int)sizeof(lzo_uint),\
+    (int)sizeof(long),(int)sizeof(lzo_uint32_t),(int)sizeof(lzo_uint),\
     (int)lzo_sizeof_dict_t,(int)sizeof(char *),(int)sizeof(lzo_voidp),\
     (int)sizeof(lzo_callback_t))
 LZO_EXTERN(int) __lzo_init_v2(unsigned,int,int,int,int,int,int,int,int,int);
@@ -379,18 +357,22 @@ LZO_EXTERN(lzo_voidp)
     lzo_memset(lzo_voidp buf, int c, lzo_uint len);
 
 /* checksum functions */
-LZO_EXTERN(lzo_uint32)
-    lzo_adler32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len);
-LZO_EXTERN(lzo_uint32)
-    lzo_crc32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len);
-LZO_EXTERN(const lzo_uint32p)
+LZO_EXTERN(lzo_uint32_t)
+    lzo_adler32(lzo_uint32_t c, const lzo_bytep buf, lzo_uint len);
+LZO_EXTERN(lzo_uint32_t)
+    lzo_crc32(lzo_uint32_t c, const lzo_bytep buf, lzo_uint len);
+LZO_EXTERN(const lzo_uint32_tp)
     lzo_get_crc32_table(void);
 
 /* misc. */
 LZO_EXTERN(int) _lzo_config_check(void);
-typedef union { lzo_bytep p; lzo_uint u; } __lzo_pu_u;
-typedef union { lzo_bytep p; lzo_uint32 u32; } __lzo_pu32_u;
-typedef union { void *vp; lzo_bytep bp; lzo_uint u; lzo_uint32 u32; unsigned long l; } lzo_align_t;
+typedef union {
+    lzo_voidp a00; lzo_bytep a01; lzo_uint a02; lzo_xint a03; lzo_uintptr_t a04;
+    void *a05; unsigned char *a06; unsigned long a07; size_t a08; ptrdiff_t a09;
+#if defined(lzo_int64_t)
+    lzo_uint64_t a10;
+#endif
+} lzo_align_t;
 
 /* align a char pointer on a boundary that is a multiple of 'size' */
 LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size);
@@ -399,9 +381,34 @@ LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size);
 
 
 /***********************************************************************
-// deprecated macros - only for backward compatibility with LZO v1.xx
+// deprecated macros - only for backward compatibility
 ************************************************************************/
 
+/* deprecated - use 'lzo_bytep' instead of 'lzo_byte *' */
+#define lzo_byte                unsigned char
+/* deprecated type names */
+#define lzo_int32               lzo_int32_t
+#define lzo_uint32              lzo_uint32_t
+#define lzo_int32p              lzo_int32_t __LZO_MMODEL *
+#define lzo_uint32p             lzo_uint32_t __LZO_MMODEL *
+#define LZO_INT32_MAX           LZO_INT32_C(2147483647)
+#define LZO_UINT32_MAX          LZO_UINT32_C(4294967295)
+#if defined(lzo_int64_t)
+#define lzo_int64               lzo_int64_t
+#define lzo_uint64              lzo_uint64_t
+#define lzo_int64p              lzo_int64_t __LZO_MMODEL *
+#define lzo_uint64p             lzo_uint64_t __LZO_MMODEL *
+#define LZO_INT64_MAX           LZO_INT64_C(9223372036854775807)
+#define LZO_UINT64_MAX          LZO_UINT64_C(18446744073709551615)
+#endif
+/* deprecated types */
+typedef union { lzo_bytep a; lzo_uint b; } __lzo_pu_u;
+typedef union { lzo_bytep a; lzo_uint32_t b; } __lzo_pu32_u;
+/* deprecated defines */
+#if !defined(LZO_SIZEOF_LZO_UINT)
+#  define LZO_SIZEOF_LZO_UINT   LZO_SIZEOF_LZO_INT
+#endif
+
 #if defined(LZO_CFG_COMPAT)
 
 #define __LZOCONF_H 1
@@ -443,4 +450,4 @@ LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size);
 #endif /* already included */
 
 
-/* vim:set ts=4 et: */
+/* vim:set ts=4 sw=4 et: */
diff --git a/ica/x11/common/lzodefs.h b/ica/x11/common/lzodefs.h
index 0e40e33..1535c1e 100644
--- a/ica/x11/common/lzodefs.h
+++ b/ica/x11/common/lzodefs.h
@@ -2,22 +2,7 @@
 
    This file is part of the LZO real-time data compression library.
 
-   Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+   Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
    All Rights Reserved.
 
    The LZO library is free software; you can redistribute it and/or
@@ -47,12 +32,6 @@
 #if defined(__CYGWIN32__) && !defined(__CYGWIN__)
 #  define __CYGWIN__ __CYGWIN32__
 #endif
-#if defined(__IBMCPP__) && !defined(__IBMC__)
-#  define __IBMC__ __IBMCPP__
-#endif
-#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
-#  define __INTEL_COMPILER __ICL
-#endif
 #if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
 #  define _ALL_SOURCE 1
 #endif
@@ -61,19 +40,30 @@
 #    define __LONG_MAX__ 9223372036854775807L
 #  endif
 #endif
-#if defined(__INTEL_COMPILER) && defined(__linux__)
+#if !defined(LZO_CFG_NO_DISABLE_WUNDEF)
+#if defined(__ARMCC_VERSION)
+#  pragma diag_suppress 193
+#elif defined(__clang__) && defined(__clang_minor__)
+#  pragma clang diagnostic ignored "-Wundef"
+#elif defined(__INTEL_COMPILER)
 #  pragma warning(disable: 193)
-#endif
-#if defined(__KEIL__) && defined(__C166__)
-#  pragma warning disable = 322
-#elif 0 && defined(__C251__)
+#elif defined(__KEIL__) && defined(__C166__)
 #  pragma warning disable = 322
-#endif
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
-#  if (_MSC_VER >= 1300)
+#elif defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__PATHSCALE__)
+#  if ((__GNUC__-0) >= 5 || ((__GNUC__-0) == 4 && (__GNUC_MINOR__-0) >= 2))
+#    pragma GCC diagnostic ignored "-Wundef"
+#  endif
+#elif defined(_MSC_VER) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
+#  if ((_MSC_VER-0) >= 1300)
 #    pragma warning(disable: 4668)
 #  endif
 #endif
+#endif
+#if 0 && defined(__POCC__) && defined(_WIN32)
+#  if (__POCC__ >= 400)
+#    pragma warn(disable: 2216)
+#  endif
+#endif
 #if 0 && defined(__WATCOMC__)
 #  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
 #    pragma warning 203 9
@@ -82,13 +72,29 @@
 #if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
 #  pragma option -h
 #endif
+#if !(LZO_CFG_NO_DISABLE_WCRTNONSTDC)
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_NONSTDC_NO_WARNINGS
+#define _CRT_NONSTDC_NO_WARNINGS 1
+#endif
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS 1
+#endif
+#endif
 #if 0
-#define LZO_0xffffL             0xfffful
-#define LZO_0xffffffffL         0xfffffffful
+#define LZO_0xffffUL            0xfffful
+#define LZO_0xffffffffUL        0xfffffffful
 #else
-#define LZO_0xffffL             65535ul
-#define LZO_0xffffffffL         4294967295ul
+#define LZO_0xffffUL            65535ul
+#define LZO_0xffffffffUL        4294967295ul
 #endif
+#define LZO_0xffffL             LZO_0xffffUL
+#define LZO_0xffffffffL         LZO_0xffffffffUL
 #if (LZO_0xffffL == LZO_0xffffffffL)
 #  error "your preprocessor is broken 1"
 #endif
@@ -103,6 +109,13 @@
 #  error "your preprocessor is broken 4"
 #endif
 #endif
+#if defined(__COUNTER__)
+#  ifndef LZO_CFG_USE_COUNTER
+#  define LZO_CFG_USE_COUNTER 1
+#  endif
+#else
+#  undef LZO_CFG_USE_COUNTER
+#endif
 #if (UINT_MAX == LZO_0xffffL)
 #if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
 #  if !defined(MSDOS)
@@ -233,14 +246,31 @@
 #endif
 #define LZO_PP_STRINGIZE(x)             #x
 #define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
+#define LZO_PP_CONCAT0()                /*empty*/
+#define LZO_PP_CONCAT1(a)               a
 #define LZO_PP_CONCAT2(a,b)             a ## b
 #define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
 #define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
 #define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
+#define LZO_PP_CONCAT6(a,b,c,d,e,f)     a ## b ## c ## d ## e ## f
+#define LZO_PP_CONCAT7(a,b,c,d,e,f,g)   a ## b ## c ## d ## e ## f ## g
+#define LZO_PP_ECONCAT0()               LZO_PP_CONCAT0()
+#define LZO_PP_ECONCAT1(a)              LZO_PP_CONCAT1(a)
 #define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
 #define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
 #define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
 #define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
+#define LZO_PP_ECONCAT6(a,b,c,d,e,f)    LZO_PP_CONCAT6(a,b,c,d,e,f)
+#define LZO_PP_ECONCAT7(a,b,c,d,e,f,g)  LZO_PP_CONCAT7(a,b,c,d,e,f,g)
+#define LZO_PP_EMPTY                    /*empty*/
+#define LZO_PP_EMPTY0()                 /*empty*/
+#define LZO_PP_EMPTY1(a)                /*empty*/
+#define LZO_PP_EMPTY2(a,b)              /*empty*/
+#define LZO_PP_EMPTY3(a,b,c)            /*empty*/
+#define LZO_PP_EMPTY4(a,b,c,d)          /*empty*/
+#define LZO_PP_EMPTY5(a,b,c,d,e)        /*empty*/
+#define LZO_PP_EMPTY6(a,b,c,d,e,f)      /*empty*/
+#define LZO_PP_EMPTY7(a,b,c,d,e,f,g)    /*empty*/
 #if 1
 #define LZO_CPP_STRINGIZE(x)            #x
 #define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
@@ -248,12 +278,16 @@
 #define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
 #define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
 #define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
+#define LZO_CPP_CONCAT6(a,b,c,d,e,f)    a ## b ## c ## d ## e ## f
+#define LZO_CPP_CONCAT7(a,b,c,d,e,f,g)  a ## b ## c ## d ## e ## f ## g
 #define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
 #define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
 #define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
 #define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
+#define LZO_CPP_ECONCAT6(a,b,c,d,e,f)   LZO_CPP_CONCAT6(a,b,c,d,e,f)
+#define LZO_CPP_ECONCAT7(a,b,c,d,e,f,g) LZO_CPP_CONCAT7(a,b,c,d,e,f,g)
 #endif
-#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-1)) - (o)) << 1) + (o))
+#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-!!(b))) - (o)) << 1) + (o)*!!(b))
 #if 1 && defined(__cplusplus)
 #  if !defined(__STDC_CONSTANT_MACROS)
 #    define __STDC_CONSTANT_MACROS 1
@@ -263,9 +297,13 @@
 #  endif
 #endif
 #if defined(__cplusplus)
-#  define LZO_EXTERN_C extern "C"
+#  define LZO_EXTERN_C          extern "C"
+#  define LZO_EXTERN_C_BEGIN    extern "C" {
+#  define LZO_EXTERN_C_END      }
 #else
-#  define LZO_EXTERN_C extern
+#  define LZO_EXTERN_C          extern
+#  define LZO_EXTERN_C_BEGIN    /*empty*/
+#  define LZO_EXTERN_C_END      /*empty*/
 #endif
 #if !defined(__LZO_OS_OVERRIDE)
 #if (LZO_OS_FREESTANDING)
@@ -360,18 +398,18 @@
 #elif defined(__TOS__) || defined(__atarist__)
 #  define LZO_OS_TOS            1
 #  define LZO_INFO_OS           "tos"
-#elif defined(macintosh) && !defined(__ppc__)
+#elif defined(macintosh) && !defined(__arm__) && !defined(__i386__) && !defined(__ppc__) && !defined(__x64_64__)
 #  define LZO_OS_MACCLASSIC     1
 #  define LZO_INFO_OS           "macclassic"
 #elif defined(__VMS)
 #  define LZO_OS_VMS            1
 #  define LZO_INFO_OS           "vms"
-#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#elif (defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)
 #  define LZO_OS_CONSOLE        1
 #  define LZO_OS_CONSOLE_PS2    1
 #  define LZO_INFO_OS           "console"
 #  define LZO_INFO_OS_CONSOLE   "ps2"
-#elif (defined(__mips__) && defined(__psp__))
+#elif defined(__mips__) && defined(__psp__)
 #  define LZO_OS_CONSOLE        1
 #  define LZO_OS_CONSOLE_PSP    1
 #  define LZO_INFO_OS           "console"
@@ -399,9 +437,18 @@
 #  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
 #    define LZO_OS_POSIX_LINUX      1
 #    define LZO_INFO_OS_POSIX       "linux"
-#  elif defined(__APPLE__) || defined(__MACOS__)
-#    define LZO_OS_POSIX_MACOSX     1
-#    define LZO_INFO_OS_POSIX       "macosx"
+#  elif defined(__APPLE__) && defined(__MACH__)
+#    if ((__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__-0) >= 20000)
+#      define LZO_OS_POSIX_DARWIN     1040
+#      define LZO_INFO_OS_POSIX       "darwin_iphone"
+#    elif ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) >= 1040)
+#      define LZO_OS_POSIX_DARWIN     __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+#      define LZO_INFO_OS_POSIX       "darwin"
+#    else
+#      define LZO_OS_POSIX_DARWIN     1
+#      define LZO_INFO_OS_POSIX       "darwin"
+#    endif
+#    define LZO_OS_POSIX_MACOSX     LZO_OS_POSIX_DARWIN
 #  elif defined(__minix__) || defined(__minix)
 #    define LZO_OS_POSIX_MINIX      1
 #    define LZO_INFO_OS_POSIX       "minix"
@@ -436,18 +483,18 @@
 #endif
 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #  if (UINT_MAX != LZO_0xffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
 #  if (UINT_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
@@ -463,59 +510,65 @@
 #  define LZO_INFO_CC           "sdcc"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
 #elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
-#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
+#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + (__PATHCC_MINOR__-0) * 0x100 + (__PATHCC_PATCHLEVEL__-0))
 #  define LZO_INFO_CC           "Pathscale C"
 #  define LZO_INFO_CCVER        __PATHSCALE__
-#elif defined(__INTEL_COMPILER)
-#  define LZO_CC_INTELC         1
+#  if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_PATHSCALE_GNUC (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  endif
+#elif defined(__INTEL_COMPILER) && ((__INTEL_COMPILER-0) > 0)
+#  define LZO_CC_INTELC         __INTEL_COMPILER
 #  define LZO_INFO_CC           "Intel C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
-#  if defined(_WIN32) || defined(_WIN64)
-#    define LZO_CC_SYNTAX_MSC 1
-#  else
-#    define LZO_CC_SYNTAX_GNUC 1
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_INTELC_MSC   _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_INTELC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  endif
 #elif defined(__POCC__) && defined(_WIN32)
 #  define LZO_CC_PELLESC        1
 #  define LZO_INFO_CC           "Pelles C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
-#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#elif defined(__ARMCC_VERSION) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
 #  if defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
+#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  else
-#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
+#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
 #  endif
+#  define LZO_CC_ARMCC          __ARMCC_VERSION
+#  define LZO_INFO_CC           "ARM C Compiler"
+#  define LZO_INFO_CCVER        __VERSION__
+#elif defined(__clang__) && defined(__llvm__) && defined(__VERSION__)
 #  if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
-#    define LZO_CC_CLANG_CLANG  (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__)
+#    define LZO_CC_CLANG        (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
 #  else
-#    define LZO_CC_CLANG_CLANG  0x010000L
+#    define LZO_CC_CLANG        0x010000L
+#  endif
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_CLANG_MSC    _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  endif
-#  define LZO_CC_CLANG          LZO_CC_CLANG_GNUC
 #  define LZO_INFO_CC           "clang"
 #  define LZO_INFO_CCVER        __VERSION__
 #elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
 #  if defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
+#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  else
-#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
+#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
 #  endif
 #  define LZO_CC_LLVM           LZO_CC_LLVM_GNUC
 #  define LZO_INFO_CC           "llvm-gcc"
 #  define LZO_INFO_CCVER        __VERSION__
-#elif defined(__GNUC__) && defined(__VERSION__)
-#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
-#  elif defined(__GNUC_MINOR__)
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
-#  else
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
-#  endif
-#  define LZO_INFO_CC           "gcc"
-#  define LZO_INFO_CCVER        __VERSION__
 #elif defined(__ACK__) && defined(_ACK)
 #  define LZO_CC_ACK            1
 #  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
 #  define LZO_INFO_CCVER        "unknown"
+#elif defined(__ARMCC_VERSION) && !defined(__GNUC__)
+#  define LZO_CC_ARMCC          __ARMCC_VERSION
+#  define LZO_CC_ARMCC_ARMCC    __ARMCC_VERSION
+#  define LZO_INFO_CC           "ARM C Compiler"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__ARMCC_VERSION)
 #elif defined(__AZTEC_C__)
 #  define LZO_CC_AZTECC         1
 #  define LZO_INFO_CC           "Aztec C"
@@ -540,10 +593,23 @@
 #  define LZO_CC_DECC           1
 #  define LZO_INFO_CC           "DEC C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
+#elif (defined(__ghs) || defined(__ghs__)) && defined(__GHS_VERSION_NUMBER) && ((__GHS_VERSION_NUMBER-0) > 0)
+#  define LZO_CC_GHS            1
+#  define LZO_INFO_CC           "Green Hills C"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__GHS_VERSION_NUMBER)
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_GHS_MSC      _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_GHS_GNUC     (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  endif
 #elif defined(__HIGHC__)
 #  define LZO_CC_HIGHC          1
 #  define LZO_INFO_CC           "MetaWare High C"
 #  define LZO_INFO_CCVER        "unknown"
+#elif defined(__HP_aCC) && ((__HP_aCC-0) > 0)
+#  define LZO_CC_HPACC          __HP_aCC
+#  define LZO_INFO_CC           "HP aCC"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__HP_aCC)
 #elif defined(__IAR_SYSTEMS_ICC__)
 #  define LZO_CC_IARC           1
 #  define LZO_INFO_CC           "IAR C"
@@ -552,10 +618,14 @@
 #  else
 #    define LZO_INFO_CCVER      "unknown"
 #  endif
-#elif defined(__IBMC__)
-#  define LZO_CC_IBMC           1
+#elif defined(__IBMC__) && ((__IBMC__-0) > 0)
+#  define LZO_CC_IBMC           __IBMC__
 #  define LZO_INFO_CC           "IBM C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
+#elif defined(__IBMCPP__) && ((__IBMCPP__-0) > 0)
+#  define LZO_CC_IBMC           __IBMCPP__
+#  define LZO_INFO_CC           "IBM C"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMCPP__)
 #elif defined(__KEIL__) && defined(__C166__)
 #  define LZO_CC_KEILC          1
 #  define LZO_INFO_CC           "Keil C"
@@ -572,16 +642,8 @@
 #  else
 #    define LZO_INFO_CCVER      "unknown"
 #  endif
-#elif defined(_MSC_VER)
-#  define LZO_CC_MSC            1
-#  define LZO_INFO_CC           "Microsoft C"
-#  if defined(_MSC_FULL_VER)
-#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
-#  else
-#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
-#  endif
-#elif defined(__MWERKS__)
-#  define LZO_CC_MWERKS         1
+#elif defined(__MWERKS__) && ((__MWERKS__-0) > 0)
+#  define LZO_CC_MWERKS         __MWERKS__
 #  define LZO_INFO_CC           "Metrowerks C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
 #elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
@@ -592,6 +654,15 @@
 #  define LZO_CC_PACIFICC       1
 #  define LZO_INFO_CC           "Pacific C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
+#elif defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__)
+#  if defined(__PGIC_PATCHLEVEL__)
+#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100 + (__PGIC_PATCHLEVEL__-0))
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) "." LZO_PP_MACRO_EXPAND(__PGIC_PATCHLEVEL__)
+#  else
+#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100)
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) ".0"
+#  endif
+#  define LZO_INFO_CC           "Portland Group PGI C"
 #elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
 #  define LZO_CC_PGI            1
 #  define LZO_INFO_CC           "Portland Group PGI C"
@@ -606,7 +677,7 @@
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
 #elif defined(__SUNPRO_C)
 #  define LZO_INFO_CC           "SunPro C"
-#  if ((__SUNPRO_C)+0 > 0)
+#  if ((__SUNPRO_C-0) > 0)
 #    define LZO_CC_SUNPROC      __SUNPRO_C
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
 #  else
@@ -615,7 +686,7 @@
 #  endif
 #elif defined(__SUNPRO_CC)
 #  define LZO_INFO_CC           "SunPro C"
-#  if ((__SUNPRO_CC)+0 > 0)
+#  if ((__SUNPRO_CC-0) > 0)
 #    define LZO_CC_SUNPROC      __SUNPRO_CC
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
 #  else
@@ -641,16 +712,46 @@
 #elif defined(__ZTC__)
 #  define LZO_CC_ZORTECHC       1
 #  define LZO_INFO_CC           "Zortech C"
-#  if (__ZTC__ == 0x310)
+#  if ((__ZTC__-0) == 0x310)
 #    define LZO_INFO_CCVER      "0x310"
 #  else
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
 #  endif
+#elif defined(__GNUC__) && defined(__VERSION__)
+#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  elif defined(__GNUC_MINOR__)
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
+#  else
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
+#  endif
+#  define LZO_INFO_CC           "gcc"
+#  define LZO_INFO_CCVER        __VERSION__
+#elif defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#  define LZO_CC_MSC            _MSC_VER
+#  define LZO_INFO_CC           "Microsoft C"
+#  if defined(_MSC_FULL_VER)
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
+#  else
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
+#  endif
 #else
 #  define LZO_CC_UNKNOWN        1
 #  define LZO_INFO_CC           "unknown"
 #  define LZO_INFO_CCVER        "unknown"
 #endif
+#if (LZO_CC_GNUC) && defined(__OPEN64__)
+#  if defined(__OPENCC__) && defined(__OPENCC_MINOR__) && defined(__OPENCC_PATCHLEVEL__)
+#    define LZO_CC_OPEN64       (__OPENCC__ * 0x10000L + (__OPENCC_MINOR__-0) * 0x100 + (__OPENCC_PATCHLEVEL__-0))
+#    define LZO_CC_OPEN64_GNUC  LZO_CC_GNUC
+#  endif
+#endif
+#if (LZO_CC_GNUC) && defined(__PCC__)
+#  if defined(__PCC__) && defined(__PCC_MINOR__) && defined(__PCC_MINORMINOR__)
+#    define LZO_CC_PCC          (__PCC__ * 0x10000L + (__PCC_MINOR__-0) * 0x100 + (__PCC_MINORMINOR__-0))
+#    define LZO_CC_PCC_GNUC     LZO_CC_GNUC
+#  endif
+#endif
 #if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
 #  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
 #endif
@@ -668,8 +769,10 @@
 #  define LZO_INFO_ARCH             "generic"
 #elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #  define LZO_ARCH_I086             1
-#  define LZO_ARCH_IA16             1
 #  define LZO_INFO_ARCH             "i086"
+#elif defined(__aarch64__)
+#  define LZO_ARCH_ARM64            1
+#  define LZO_INFO_ARCH             "arm64"
 #elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
 #  define LZO_ARCH_ALPHA            1
 #  define LZO_INFO_ARCH             "alpha"
@@ -679,22 +782,11 @@
 #elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
 #  define LZO_ARCH_AMD64            1
 #  define LZO_INFO_ARCH             "amd64"
-#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
+#elif defined(__arm__) || defined(_M_ARM)
 #  define LZO_ARCH_ARM              1
-#  define LZO_ARCH_ARM_THUMB        1
-#  define LZO_INFO_ARCH             "arm_thumb"
+#  define LZO_INFO_ARCH             "arm"
 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
 #  define LZO_ARCH_ARM              1
-#  if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
-#    define LZO_ARCH_ARM_THUMB      1
-#    define LZO_INFO_ARCH           "arm_thumb"
-#  elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
-#    define LZO_INFO_ARCH           "arm"
-#  else
-#    define LZO_INFO_ARCH           "arm"
-#  endif
-#elif defined(__arm__) || defined(_M_ARM)
-#  define LZO_ARCH_ARM              1
 #  define LZO_INFO_ARCH             "arm"
 #elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
 #  define LZO_ARCH_AVR              1
@@ -802,57 +894,167 @@
 #  define LZO_INFO_ARCH             "unknown"
 #endif
 #endif
+#if !defined(LZO_ARCH_ARM_THUMB2)
+#if (LZO_ARCH_ARM)
+#  if defined(__ARM_ARCH_ISA_THUMB)
+#   if ((__ARM_ARCH_ISA_THUMB)+0 >= 2)
+#    define LZO_ARCH_ARM_THUMB2     1
+#   endif
+#  elif 1 && defined(__thumb2__)
+#    define LZO_ARCH_ARM_THUMB2     1
+#  elif 1 && defined(__TARGET_ARCH_THUMB) && ((__TARGET_ARCH_THUMB)+0 >= 4)
+#    define LZO_ARCH_ARM_THUMB2     1
+#  endif
+#endif
+#endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
 #  error "FIXME - missing define for CPU architecture"
 #endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
-#  error "FIXME - missing WIN32 define for CPU architecture"
+#  error "FIXME - missing LZO_OS_WIN32 define for CPU architecture"
 #endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
-#  error "FIXME - missing WIN64 define for CPU architecture"
+#  error "FIXME - missing LZO_OS_WIN64 define for CPU architecture"
 #endif
 #if (LZO_OS_OS216 || LZO_OS_WIN16)
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && defined(BLX286))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #endif
-#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM)
-#  error "this should not happen"
+#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64)
+#  define LZO_ARCH_X64              1
+#elif (!LZO_ARCH_AMD64 && LZO_ARCH_X64) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_AMD64            1
+#endif
+#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64)
+#  define LZO_ARCH_AARCH64          1
+#elif (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_ARM64            1
+#endif
+#if (LZO_ARCH_I386 && !LZO_ARCH_X86)
+#  define LZO_ARCH_X86              1
+#elif (!LZO_ARCH_I386 && LZO_ARCH_X86) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_I386            1
+#endif
+#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64) || (!LZO_ARCH_AMD64 && LZO_ARCH_X64)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64) || (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_I386 && !LZO_ARCH_X86) || (!LZO_ARCH_I386 && LZO_ARCH_X86)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM_THUMB1 && !LZO_ARCH_ARM)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM_THUMB2 && !LZO_ARCH_ARM)
+#  error "unexpected configuration - check your compiler defines"
 #endif
-#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086)
-#  error "this should not happen"
+#if (LZO_ARCH_ARM_THUMB1 && LZO_ARCH_ARM_THUMB2)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_I086PM && !LZO_ARCH_I086)
+#  error "unexpected configuration - check your compiler defines"
 #endif
 #if (LZO_ARCH_I086)
 #  if (UINT_MAX != LZO_0xffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if (LZO_ARCH_I386)
 #  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
+#  endif
+#endif
+#if (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#  if !defined(LZO_TARGET_FEATURE_SSE2)
+#    if defined(__SSE2__)
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    elif defined(_MSC_VER) && (defined(_M_IX86_FP) && ((_M_IX86_FP)+0 >= 2))
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    elif (LZO_CC_INTELC_MSC || LZO_CC_MSC) && defined(_M_AMD64)
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_SSSE3)
+#  if (LZO_TARGET_FEATURE_SSE2)
+#    if defined(__SSSE3__)
+#      define LZO_TARGET_FEATURE_SSSE3      1
+#    elif defined(_MSC_VER) && defined(__AVX__)
+#      define LZO_TARGET_FEATURE_SSSE3      1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_SSE4_2)
+#  if (LZO_TARGET_FEATURE_SSSE3)
+#    if defined(__SSE4_2__)
+#      define LZO_TARGET_FEATURE_SSE4_2     1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_AVX)
+#  if (LZO_TARGET_FEATURE_SSSE3)
+#    if defined(__AVX__)
+#      define LZO_TARGET_FEATURE_AVX        1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_AVX2)
+#  if (LZO_TARGET_FEATURE_AVX)
+#    if defined(__AVX2__)
+#      define LZO_TARGET_FEATURE_AVX2       1
+#    endif
+#  endif
 #  endif
 #endif
-#if !defined(__LZO_MM_OVERRIDE)
+#if (LZO_TARGET_FEATURE_SSSE3 && !(LZO_TARGET_FEATURE_SSE2))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_SSE4_2 && !(LZO_TARGET_FEATURE_SSSE3))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_AVX && !(LZO_TARGET_FEATURE_SSSE3))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_AVX2 && !(LZO_TARGET_FEATURE_AVX))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM)
+#  if !defined(LZO_TARGET_FEATURE_NEON)
+#    if defined(__ARM_NEON) && ((__ARM_NEON)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    elif 1 && defined(__ARM_NEON__) && ((__ARM_NEON__)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    elif 1 && defined(__TARGET_FEATURE_NEON) && ((__TARGET_FEATURE_NEON)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    endif
+#  endif
+#elif (LZO_ARCH_ARM64)
+#  if !defined(LZO_TARGET_FEATURE_NEON)
+#    if 1
+#      define LZO_TARGET_FEATURE_NEON       1
+#    endif
+#  endif
+#endif
+#if 0
+#elif !defined(__LZO_MM_OVERRIDE)
 #if (LZO_ARCH_I086)
 #if (UINT_MAX != LZO_0xffffL)
-#  error "this should not happen"
+#  error "unexpected configuration - check your compiler defines"
 #endif
 #if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
 #  define LZO_MM_TINY           1
@@ -879,7 +1081,7 @@
 #elif (LZO_CC_ZORTECHC && defined(__VCM__))
 #  define LZO_MM_LARGE          1
 #else
-#  error "unknown memory model"
+#  error "unknown LZO_ARCH_I086 memory model"
 #endif
 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #define LZO_HAVE_MM_HUGE_PTR        1
@@ -902,10 +1104,10 @@
 #endif
 #if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
 #  if (LZO_OS_DOS16)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  elif (LZO_CC_ZORTECHC)
 #  else
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #ifdef __cplusplus
@@ -937,7 +1139,7 @@ extern "C" {
 #endif
 #elif (LZO_ARCH_C166)
 #if !defined(__MODEL__)
-#  error "FIXME - C166 __MODEL__"
+#  error "FIXME - LZO_ARCH_C166 __MODEL__"
 #elif ((__MODEL__) == 0)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 1)
@@ -951,11 +1153,11 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - C166 __MODEL__"
+#  error "FIXME - LZO_ARCH_C166 __MODEL__"
 #endif
 #elif (LZO_ARCH_MCS251)
 #if !defined(__MODEL__)
-#  error "FIXME - MCS251 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
 #elif ((__MODEL__) == 0)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 2)
@@ -967,11 +1169,11 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - MCS251 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
 #endif
 #elif (LZO_ARCH_MCS51)
 #if !defined(__MODEL__)
-#  error "FIXME - MCS51 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
 #elif ((__MODEL__) == 1)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 2)
@@ -983,7 +1185,7 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - MCS51 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
 #endif
 #elif (LZO_ARCH_CRAY_PVP)
 #  define LZO_MM_PVP            1
@@ -1010,462 +1212,312 @@ extern "C" {
 #  error "unknown memory model"
 #endif
 #endif
-#if defined(SIZEOF_SHORT)
-#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
+#if !defined(__lzo_gnuc_extension__)
+#if (LZO_CC_GNUC >= 0x020800ul)
+#  define __lzo_gnuc_extension__    __extension__
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_gnuc_extension__    __extension__
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_gnuc_extension__    __extension__
+#else
 #endif
-#if defined(SIZEOF_INT)
-#  define LZO_SIZEOF_INT            (SIZEOF_INT)
 #endif
-#if defined(SIZEOF_LONG)
-#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
+#if !defined(__lzo_gnuc_extension__)
+#  define __lzo_gnuc_extension__    /*empty*/
 #endif
-#if defined(SIZEOF_LONG_LONG)
-#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
+#if !defined(lzo_has_builtin)
+#if (LZO_CC_CLANG) && defined(__has_builtin)
+#  define lzo_has_builtin           __has_builtin
 #endif
-#if defined(SIZEOF___INT16)
-#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
 #endif
-#if defined(SIZEOF___INT32)
-#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
+#if !defined(lzo_has_builtin)
+#  define lzo_has_builtin(x)        0
 #endif
-#if defined(SIZEOF___INT64)
-#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
+#if !defined(lzo_has_attribute)
+#if (LZO_CC_CLANG) && defined(__has_attribute)
+#  define lzo_has_attribute         __has_attribute
 #endif
-#if defined(SIZEOF_VOID_P)
-#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
 #endif
-#if defined(SIZEOF_SIZE_T)
-#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
+#if !defined(lzo_has_attribute)
+#  define lzo_has_attribute(x)      0
 #endif
-#if defined(SIZEOF_PTRDIFF_T)
-#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
+#if !defined(lzo_has_declspec_attribute)
+#if (LZO_CC_CLANG) && defined(__has_declspec_attribute)
+#  define lzo_has_declspec_attribute        __has_declspec_attribute
 #endif
-#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
-#if !defined(LZO_SIZEOF_SHORT)
-#  if (LZO_ARCH_CRAY_PVP)
-#    define LZO_SIZEOF_SHORT        8
-#  elif (USHRT_MAX == LZO_0xffffL)
-#    define LZO_SIZEOF_SHORT        2
-#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
-#    define LZO_SIZEOF_SHORT        1
-#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
-#    define LZO_SIZEOF_SHORT        2
-#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
-#    define LZO_SIZEOF_SHORT        4
-#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
-#    define LZO_SIZEOF_SHORT        8
-#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
-#    define LZO_SIZEOF_SHORT        16
+#endif
+#if !defined(lzo_has_declspec_attribute)
+#  define lzo_has_declspec_attribute(x)     0
+#endif
+#if !defined(lzo_has_feature)
+#if (LZO_CC_CLANG) && defined(__has_feature)
+#  define lzo_has_feature         __has_feature
+#endif
+#endif
+#if !defined(lzo_has_feature)
+#  define lzo_has_feature(x)        0
+#endif
+#if !defined(lzo_has_extension)
+#if (LZO_CC_CLANG) && defined(__has_extension)
+#  define lzo_has_extension         __has_extension
+#elif (LZO_CC_CLANG) && defined(__has_feature)
+#  define lzo_has_extension         __has_feature
+#endif
+#endif
+#if !defined(lzo_has_extension)
+#  define lzo_has_extension         0
+#endif
+#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS) && defined(__cplusplus) && 0
+#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul))
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
+#  elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1200))
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
 #  else
-#    error "LZO_SIZEOF_SHORT"
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 1
 #  endif
 #endif
-#if !defined(LZO_SIZEOF_INT)
-#  if (LZO_ARCH_CRAY_PVP)
-#    define LZO_SIZEOF_INT          8
-#  elif (UINT_MAX == LZO_0xffffL)
-#    define LZO_SIZEOF_INT          2
-#  elif (UINT_MAX == LZO_0xffffffffL)
-#    define LZO_SIZEOF_INT          4
-#  elif (__LZO_LSR(UINT_MAX,7) == 1)
-#    define LZO_SIZEOF_INT          1
-#  elif (__LZO_LSR(UINT_MAX,15) == 1)
-#    define LZO_SIZEOF_INT          2
-#  elif (__LZO_LSR(UINT_MAX,31) == 1)
-#    define LZO_SIZEOF_INT          4
-#  elif (__LZO_LSR(UINT_MAX,63) == 1)
-#    define LZO_SIZEOF_INT          8
-#  elif (__LZO_LSR(UINT_MAX,127) == 1)
-#    define LZO_SIZEOF_INT          16
-#  else
-#    error "LZO_SIZEOF_INT"
+#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS)
+#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
+#endif
+#if !defined(__cplusplus)
+#  if defined(LZO_CFG_USE_NEW_STYLE_CASTS)
+#    undef LZO_CFG_USE_NEW_STYLE_CASTS
 #  endif
+#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
 #endif
-#if !defined(LZO_SIZEOF_LONG)
-#  if (ULONG_MAX == LZO_0xffffffffL)
-#    define LZO_SIZEOF_LONG         4
-#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
-#    define LZO_SIZEOF_LONG         1
-#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
-#    define LZO_SIZEOF_LONG         2
-#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
-#    define LZO_SIZEOF_LONG         4
-#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
-#    define LZO_SIZEOF_LONG         8
-#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
-#    define LZO_SIZEOF_LONG         16
-#  else
-#    error "LZO_SIZEOF_LONG"
+#if !defined(LZO_REINTERPRET_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_REINTERPRET_CAST(t,e)       (reinterpret_cast<t> (e))
 #  endif
 #endif
-#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
-#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
-#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
-#    if (LZO_CC_GNUC >= 0x030300ul)
-#      if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
-#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
-#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
-#        define LZO_SIZEOF_LONG_LONG      4
-#      endif
-#    endif
+#if !defined(LZO_REINTERPRET_CAST)
+#  define LZO_REINTERPRET_CAST(t,e)         ((t) (e))
+#endif
+#if !defined(LZO_STATIC_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_STATIC_CAST(t,e)            (static_cast<t> (e))
 #  endif
 #endif
+#if !defined(LZO_STATIC_CAST)
+#  define LZO_STATIC_CAST(t,e)              ((t) (e))
 #endif
-#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
-#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
-#if (LZO_ARCH_I086 && LZO_CC_DMC)
-#elif (LZO_CC_CILLY) && defined(__GNUC__)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_OS_WIN64 || defined(_WIN64))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
-#  define LZO_SIZEOF___INT64        8
-#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
-#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
-#  define LZO_SIZEOF_LONG_LONG      8
+#if !defined(LZO_STATIC_CAST2)
+#  define LZO_STATIC_CAST2(t1,t2,e)         LZO_STATIC_CAST(t1, LZO_STATIC_CAST(t2, e))
 #endif
+#if !defined(LZO_UNCONST_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNCONST_CAST(t,e)           (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNCONST_CAST(t,e)           ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNCONST_CAST(t,e)           ((t) ((void *) ((lzo_uintptr_t) ((const void *) (e)))))
+#  endif
 #endif
+#if !defined(LZO_UNCONST_CAST)
+#  define LZO_UNCONST_CAST(t,e)             ((t) ((void *) ((const void *) (e))))
 #endif
-#if defined(__cplusplus) && (LZO_CC_GNUC)
-#  if (LZO_CC_GNUC < 0x020800ul)
-#    undef LZO_SIZEOF_LONG_LONG
+#if !defined(LZO_UNCONST_VOLATILE_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) ((volatile void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
 #  endif
 #endif
-#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
-#  undef LZO_SIZEOF_LONG_LONG
+#if !defined(LZO_UNCONST_VOLATILE_CAST)
+#  define LZO_UNCONST_VOLATILE_CAST(t,e)    ((t) ((volatile void *) ((volatile const void *) (e))))
 #endif
-#if !defined(LZO_SIZEOF_VOID_P)
-#if (LZO_ARCH_I086)
-#  define __LZO_WORDSIZE            2
-#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
-#    define LZO_SIZEOF_VOID_P       2
-#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    error "LZO_MM"
+#if !defined(LZO_UNVOLATILE_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNVOLATILE_CAST(t,e)        (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNVOLATILE_CAST(t,e)        ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNVOLATILE_CAST(t,e)        ((t) ((void *) ((lzo_uintptr_t) ((volatile void *) (e)))))
 #  endif
-#elif (LZO_ARCH_AVR || LZO_ARCH_Z80)
-#  define __LZO_WORDSIZE            1
-#  define LZO_SIZEOF_VOID_P         2
-#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
-#  define LZO_SIZEOF_VOID_P         2
-#elif (LZO_ARCH_H8300)
-#  if defined(__NORMAL_MODE__)
-#    define __LZO_WORDSIZE          4
-#    define LZO_SIZEOF_VOID_P       2
-#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
-#    define __LZO_WORDSIZE          4
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    define __LZO_WORDSIZE          2
-#    define LZO_SIZEOF_VOID_P       2
-#  endif
-#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
-#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
-#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
-#  endif
-#elif (LZO_ARCH_M16C)
-#  define __LZO_WORDSIZE            2
-#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    define LZO_SIZEOF_VOID_P       2
-#  endif
-#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
-#  define __LZO_WORDSIZE            8
-#  define LZO_SIZEOF_VOID_P         4
-#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
-#  define __LZO_WORDSIZE            8
-#  define LZO_SIZEOF_VOID_P         8
-#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
-#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (LZO_OS_OS400 || defined(__OS400__))
-#  define __LZO_WORDSIZE            LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_VOID_P         16
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
-#  define LZO_SIZEOF_VOID_P         8
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (LZO_ARCH_SPU)
-# if 0
-#  define __LZO_WORDSIZE            16
-# endif
-#  define LZO_SIZEOF_VOID_P         4
-#else
-#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
 #endif
+#if !defined(LZO_UNVOLATILE_CAST)
+#  define LZO_UNVOLATILE_CAST(t,e)          ((t) ((void *) ((volatile void *) (e))))
 #endif
-#if !defined(LZO_WORDSIZE)
-#  if defined(__LZO_WORDSIZE)
-#    define LZO_WORDSIZE            __LZO_WORDSIZE
-#  else
-#    define LZO_WORDSIZE            LZO_SIZEOF_VOID_P
+#if !defined(LZO_UNVOLATILE_CONST_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) ((const void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
 #  endif
 #endif
-#if !defined(LZO_SIZEOF_SIZE_T)
-#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
-#  define LZO_SIZEOF_SIZE_T         2
-#else
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
-#endif
+#if !defined(LZO_UNVOLATILE_CONST_CAST)
+#  define LZO_UNVOLATILE_CONST_CAST(t,e)    ((t) ((const void *) ((volatile const void *) (e))))
 #endif
-#if !defined(LZO_SIZEOF_PTRDIFF_T)
-#if (LZO_ARCH_I086)
-#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
-#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
-#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
-#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
-#      define LZO_SIZEOF_PTRDIFF_T  4
-#    else
-#      define LZO_SIZEOF_PTRDIFF_T  2
-#    endif
-#  else
-#    error "LZO_MM"
+#if !defined(LZO_PCAST)
+#  if (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_PCAST(t,e)                  ((t) (e))
 #  endif
-#else
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
 #endif
+#if !defined(LZO_PCAST)
+#  define LZO_PCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(void *, e))
 #endif
-#if (LZO_ABI_NEUTRAL_ENDIAN)
-#  undef LZO_ABI_BIG_ENDIAN
-#  undef LZO_ABI_LITTLE_ENDIAN
-#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
-#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
-#  if (__LITTLE_ENDIAN__ == 1)
-#    define LZO_ABI_LITTLE_ENDIAN   1
-#  else
-#    define LZO_ABI_BIG_ENDIAN      1
+#if !defined(LZO_CCAST)
+#  if (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_CCAST(t,e)                  ((t) (e))
 #  endif
-#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
 #endif
+#if !defined(LZO_CCAST)
+#  define LZO_CCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(const void *, e))
 #endif
-#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
-#  error "this should not happen"
+#if !defined(LZO_ICONV)
+#  define LZO_ICONV(t,e)                    LZO_STATIC_CAST(t, e)
 #endif
-#if (LZO_ABI_BIG_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "be"
-#elif (LZO_ABI_LITTLE_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "le"
-#elif (LZO_ABI_NEUTRAL_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "neutral"
+#if !defined(LZO_ICAST)
+#  define LZO_ICAST(t,e)                    LZO_STATIC_CAST(t, e)
 #endif
-#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
-#  define LZO_ABI_I8LP16         1
-#  define LZO_INFO_ABI_PM       "i8lp16"
-#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
-#  define LZO_ABI_ILP16         1
-#  define LZO_INFO_ABI_PM       "ilp16"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
-#  define LZO_ABI_ILP32         1
-#  define LZO_INFO_ABI_PM       "ilp32"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
-#  define LZO_ABI_LLP64         1
-#  define LZO_INFO_ABI_PM       "llp64"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
-#  define LZO_ABI_LP64          1
-#  define LZO_INFO_ABI_PM       "lp64"
-#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
-#  define LZO_ABI_ILP64         1
-#  define LZO_INFO_ABI_PM       "ilp64"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
-#  define LZO_ABI_IP32L64       1
-#  define LZO_INFO_ABI_PM       "ip32l64"
+#if !defined(LZO_ITRUNC)
+#  define LZO_ITRUNC(t,e)                   LZO_STATIC_CAST(t, e)
 #endif
-#if !defined(__LZO_LIBC_OVERRIDE)
-#if (LZO_LIBC_NAKED)
-#  define LZO_INFO_LIBC         "naked"
-#elif (LZO_LIBC_FREESTANDING)
-#  define LZO_INFO_LIBC         "freestanding"
-#elif (LZO_LIBC_MOSTLY_FREESTANDING)
-#  define LZO_INFO_LIBC         "mfreestanding"
-#elif (LZO_LIBC_ISOC90)
-#  define LZO_INFO_LIBC         "isoc90"
-#elif (LZO_LIBC_ISOC99)
-#  define LZO_INFO_LIBC         "isoc99"
-#elif defined(__dietlibc__)
-#  define LZO_LIBC_DIETLIBC     1
-#  define LZO_INFO_LIBC         "dietlibc"
-#elif defined(_NEWLIB_VERSION)
-#  define LZO_LIBC_NEWLIB       1
-#  define LZO_INFO_LIBC         "newlib"
-#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
-#  if defined(__UCLIBC_SUBLEVEL__)
-#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
-#  else
-#    define LZO_LIBC_UCLIBC     0x00090bL
+#if !defined(__lzo_cte)
+#  if (LZO_CC_MSC || LZO_CC_WATCOMC)
+#    define __lzo_cte(e)            ((void)0,(e))
+#  elif 1
+#    define __lzo_cte(e)            ((void)0,(e))
 #  endif
-#  define LZO_INFO_LIBC         "uclibc"
-#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
-#  define LZO_INFO_LIBC         "glibc"
-#elif (LZO_CC_MWERKS) && defined(__MSL__)
-#  define LZO_LIBC_MSL          __MSL__
-#  define LZO_INFO_LIBC         "msl"
-#elif 1 && defined(__IAR_SYSTEMS_ICC__)
-#  define LZO_LIBC_ISOC90       1
-#  define LZO_INFO_LIBC         "isoc90"
-#else
-#  define LZO_LIBC_DEFAULT      1
-#  define LZO_INFO_LIBC         "default"
-#endif
-#endif
-#if !defined(__lzo_gnuc_extension__)
-#if (LZO_CC_GNUC >= 0x020800ul)
-#  define __lzo_gnuc_extension__    __extension__
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_gnuc_extension__    __extension__
-#else
-#  define __lzo_gnuc_extension__    /*empty*/
-#endif
-#endif
-#if !defined(__lzo_ua_volatile)
-#  define __lzo_ua_volatile     volatile
-#endif
-#if !defined(__lzo_alignof)
-#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
-#  define __lzo_alignof(e)      __alignof__(e)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
-#  define __lzo_alignof(e)      __alignof__(e)
-#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
-#  define __lzo_alignof(e)      __alignof(e)
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
-#  define __lzo_alignof(e)      __alignof__(e)
-#endif
-#endif
-#if defined(__lzo_alignof)
-#  define __lzo_HAVE_alignof 1
-#endif
-#if !defined(__lzo_constructor)
-#if (LZO_CC_GNUC >= 0x030400ul)
-#  define __lzo_constructor     __attribute__((__constructor__,__used__))
-#elif (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_constructor     __attribute__((__constructor__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_constructor     __attribute__((__constructor__))
 #endif
+#if !defined(__lzo_cte)
+#  define __lzo_cte(e)              (e)
 #endif
-#if defined(__lzo_constructor)
-#  define __lzo_HAVE_constructor 1
+#if !defined(LZO_BLOCK_BEGIN)
+#  define LZO_BLOCK_BEGIN           do {
+#  define LZO_BLOCK_END             } while __lzo_cte(0)
 #endif
-#if !defined(__lzo_destructor)
-#if (LZO_CC_GNUC >= 0x030400ul)
-#  define __lzo_destructor      __attribute__((__destructor__,__used__))
-#elif (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_destructor      __attribute__((__destructor__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_destructor      __attribute__((__destructor__))
+#if !defined(LZO_UNUSED)
+#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
+#    define LZO_UNUSED(var)         ((void) &var)
+#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
+#    define LZO_UNUSED(var)         if (&var) ; else
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030200ul))
+#    define LZO_UNUSED(var)         ((void) &var)
+#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNUSED(var)         ((void) var)
+#  elif (LZO_CC_MSC && (_MSC_VER < 900))
+#    define LZO_UNUSED(var)         if (&var) ; else
+#  elif (LZO_CC_KEILC)
+#    define LZO_UNUSED(var)         {extern int lzo_unused__[1-2*!(sizeof(var)>0)]; (void)lzo_unused__;}
+#  elif (LZO_CC_PACIFICC)
+#    define LZO_UNUSED(var)         ((void) sizeof(var))
+#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
+#    define LZO_UNUSED(var)         ((void) var)
+#  else
+#    define LZO_UNUSED(var)         ((void) &var)
+#  endif
 #endif
+#if !defined(LZO_UNUSED_FUNC)
+#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
+#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
+#    define LZO_UNUSED_FUNC(func)   if (func) ; else
+#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
+#    define LZO_UNUSED_FUNC(func)   ((void) &func)
+#  elif (LZO_CC_MSC && (_MSC_VER < 900))
+#    define LZO_UNUSED_FUNC(func)   if (func) ; else
+#  elif (LZO_CC_MSC)
+#    define LZO_UNUSED_FUNC(func)   ((void) &func)
+#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
+#    define LZO_UNUSED_FUNC(func)   {extern int lzo_unused__[1-2*!(sizeof((int)func)>0)]; (void)lzo_unused__;}
+#  else
+#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#  endif
 #endif
-#if defined(__lzo_destructor)
-#  define __lzo_HAVE_destructor 1
+#if !defined(LZO_UNUSED_LABEL)
+#  if (LZO_CC_CLANG >= 0x020800ul)
+#    define LZO_UNUSED_LABEL(l)     (__lzo_gnuc_extension__ ((void) ((const void *) &&l)))
+#  elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
+#    define LZO_UNUSED_LABEL(l)     if __lzo_cte(0) goto l
+#  else
+#    define LZO_UNUSED_LABEL(l)     switch (0) case 1:goto l
+#  endif
 #endif
-#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
-#  error "this should not happen"
+#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
+#  if 0
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
+#  elif 0 && (LZO_CC_GNUC)
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
+#  else
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
+#  endif
 #endif
 #if !defined(__lzo_inline)
 #if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
 #elif defined(__cplusplus)
 #  define __lzo_inline          inline
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
+#  define __lzo_inline          inline
 #elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
 #  define __lzo_inline          __inline
-#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
 #  define __lzo_inline          __inline__
 #elif (LZO_CC_DMC)
 #  define __lzo_inline          __inline
+#elif (LZO_CC_GHS)
+#  define __lzo_inline          __inline__
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_inline          __inline__
 #elif (LZO_CC_INTELC)
 #  define __lzo_inline          __inline
 #elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
 #  define __lzo_inline          __inline
 #elif (LZO_CC_MSC && (_MSC_VER >= 900))
 #  define __lzo_inline          __inline
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_inline          __inline__
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
-#  define __lzo_inline          inline
 #endif
 #endif
 #if defined(__lzo_inline)
+#  ifndef __lzo_HAVE_inline
 #  define __lzo_HAVE_inline 1
+#  endif
 #else
 #  define __lzo_inline          /*empty*/
 #endif
 #if !defined(__lzo_forceinline)
 #if (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
 #  define __lzo_forceinline     __forceinline
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1200))
 #  define __lzo_forceinline     __forceinline
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
 #endif
 #endif
 #if defined(__lzo_forceinline)
+#  ifndef __lzo_HAVE_forceinline
 #  define __lzo_HAVE_forceinline 1
+#  endif
 #else
-#  define __lzo_forceinline     /*empty*/
+#  define __lzo_forceinline     __lzo_inline
 #endif
 #if !defined(__lzo_noinline)
 #if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
 #  define __lzo_noinline        __attribute__((__noinline__,__used__))
 #elif (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_noinline        __attribute__((__noinline__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC)
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_noinline        __attribute__((__noinline__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
 #  define __lzo_noinline        __declspec(noinline)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
 #  define __lzo_noinline        __attribute__((__noinline__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_noinline        __attribute__((__noinline__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1300))
 #  define __lzo_noinline        __declspec(noinline)
@@ -1474,179 +1526,427 @@ extern "C" {
 #  else
 #    define __lzo_noinline      __declspec(noinline)
 #  endif
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_noinline        __attribute__((__noinline__))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_noinline        __attribute__((__noinline__))
 #endif
 #endif
 #if defined(__lzo_noinline)
+#  ifndef __lzo_HAVE_noinline
 #  define __lzo_HAVE_noinline 1
+#  endif
 #else
 #  define __lzo_noinline        /*empty*/
 #endif
 #if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline)
-#  error "this should not happen"
+#  error "unexpected configuration - check your compiler defines"
 #endif
-#if !defined(__lzo_noreturn)
-#if (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
-#  define __lzo_noreturn        __declspec(noreturn)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
-#  define __lzo_noreturn        __declspec(noreturn)
+#if !defined(__lzo_static_inline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_inline       __lzo_gnuc_extension__ static __lzo_inline
 #endif
 #endif
-#if defined(__lzo_noreturn)
-#  define __lzo_HAVE_noreturn 1
-#else
-#  define __lzo_noreturn        /*empty*/
+#if !defined(__lzo_static_inline)
+#  define __lzo_static_inline       static __lzo_inline
 #endif
-#if !defined(__lzo_nothrow)
-#if (LZO_CC_GNUC >= 0x030300ul)
-#  define __lzo_nothrow         __attribute__((__nothrow__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus)
-#  define __lzo_nothrow         __declspec(nothrow)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC)
+#if !defined(__lzo_static_forceinline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_forceinline  __lzo_gnuc_extension__ static __lzo_forceinline
+#endif
+#endif
+#if !defined(__lzo_static_forceinline)
+#  define __lzo_static_forceinline  static __lzo_forceinline
+#endif
+#if !defined(__lzo_static_noinline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_noinline     __lzo_gnuc_extension__ static __lzo_noinline
+#endif
+#endif
+#if !defined(__lzo_static_noinline)
+#  define __lzo_static_noinline     static __lzo_noinline
+#endif
+#if !defined(__lzo_c99_extern_inline)
+#if defined(__GNUC_GNU_INLINE__)
+#  define __lzo_c99_extern_inline   __lzo_inline
+#elif defined(__GNUC_STDC_INLINE__)
+#  define __lzo_c99_extern_inline   extern __lzo_inline
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
+#  define __lzo_c99_extern_inline   extern __lzo_inline
+#endif
+#if !defined(__lzo_c99_extern_inline) && (__lzo_HAVE_inline)
+#  define __lzo_c99_extern_inline   __lzo_inline
+#endif
+#endif
+#if defined(__lzo_c99_extern_inline)
+#  ifndef __lzo_HAVE_c99_extern_inline
+#  define __lzo_HAVE_c99_extern_inline 1
+#  endif
+#else
+#  define __lzo_c99_extern_inline   /*empty*/
+#endif
+#if !defined(__lzo_may_alias)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_CLANG >= 0x020900ul)
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1210)) && 0
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_PGI >= 0x0d0a00ul) && 0
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#endif
+#endif
+#if defined(__lzo_may_alias)
+#  ifndef __lzo_HAVE_may_alias
+#  define __lzo_HAVE_may_alias 1
+#  endif
+#else
+#  define __lzo_may_alias       /*empty*/
+#endif
+#if !defined(__lzo_noreturn)
+#if (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
+#  define __lzo_noreturn        __declspec(noreturn)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
+#  define __lzo_noreturn        __declspec(noreturn)
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#endif
+#endif
+#if defined(__lzo_noreturn)
+#  ifndef __lzo_HAVE_noreturn
+#  define __lzo_HAVE_noreturn 1
+#  endif
+#else
+#  define __lzo_noreturn        /*empty*/
+#endif
+#if !defined(__lzo_nothrow)
+#if (LZO_CC_GNUC >= 0x030300ul)
 #  define __lzo_nothrow         __attribute__((__nothrow__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450)) && defined(__cplusplus)
+#  define __lzo_nothrow         __declspec(nothrow)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 900))
+#  define __lzo_nothrow         __attribute__((__nothrow__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_nothrow         __attribute__((__nothrow__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
 #  define __lzo_nothrow         __declspec(nothrow)
 #endif
 #endif
 #if defined(__lzo_nothrow)
+#  ifndef __lzo_HAVE_nothrow
 #  define __lzo_HAVE_nothrow 1
+#  endif
 #else
 #  define __lzo_nothrow         /*empty*/
 #endif
 #if !defined(__lzo_restrict)
 #if (LZO_CC_GNUC >= 0x030400ul)
 #  define __lzo_restrict        __restrict__
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_IBMC >= 800) && !defined(__cplusplus)
+#  define __lzo_restrict        __restrict__
+#elif (LZO_CC_IBMC >= 1210)
 #  define __lzo_restrict        __restrict__
-#elif (LZO_CC_CLANG || LZO_CC_LLVM)
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
+#  define __lzo_restrict        __restrict__
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM)
 #  define __lzo_restrict        __restrict__
 #elif (LZO_CC_MSC && (_MSC_VER >= 1400))
 #  define __lzo_restrict        __restrict
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_restrict        __restrict__
 #endif
 #endif
 #if defined(__lzo_restrict)
+#  ifndef __lzo_HAVE_restrict
 #  define __lzo_HAVE_restrict 1
+#  endif
 #else
 #  define __lzo_restrict        /*empty*/
 #endif
+#if !defined(__lzo_alignof)
+#if (LZO_CC_ARMCC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_GHS) && !defined(__cplusplus)
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_alignof(e)      (__lzo_gnuc_extension__ __alignof__(e))
+#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_alignof(e)      __alignof(e)
+#elif (LZO_CC_SUNPROC >= 0x5100)
+#  define __lzo_alignof(e)      __alignof__(e)
+#endif
+#endif
+#if defined(__lzo_alignof)
+#  ifndef __lzo_HAVE_alignof
+#  define __lzo_HAVE_alignof 1
+#  endif
+#endif
+#if !defined(__lzo_struct_packed)
+#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
+#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
+#elif (LZO_CC_GNUC >= 0x030400ul) && !(LZO_CC_PCC_GNUC) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#  define __lzo_struct_packed(s)        struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__gcc_struct__,__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__gcc_struct__,__packed__));
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_struct_packed(s)        struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_struct_packed(s)        __lzo_gnuc_extension__ struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_struct_packed(s)        __pragma(pack(push,1)) struct s {
+#  define __lzo_struct_packed_end()     } __pragma(pack(pop));
+#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
+#  define __lzo_struct_packed(s)        _Packed struct s {
+#  define __lzo_struct_packed_end()     };
+#endif
+#endif
+#if defined(__lzo_struct_packed) && !defined(__lzo_struct_packed_ma)
+#  define __lzo_struct_packed_ma(s)     __lzo_struct_packed(s)
+#endif
+#if defined(__lzo_struct_packed_end) && !defined(__lzo_struct_packed_ma_end)
+#  define __lzo_struct_packed_ma_end()  __lzo_struct_packed_end()
+#endif
+#if !defined(__lzo_byte_struct)
+#if defined(__lzo_struct_packed)
+#  define __lzo_byte_struct(s,n)        __lzo_struct_packed(s) unsigned char a[n]; __lzo_struct_packed_end()
+#  define __lzo_byte_struct_ma(s,n)     __lzo_struct_packed_ma(s) unsigned char a[n]; __lzo_struct_packed_ma_end()
+#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_PGI || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_byte_struct(s,n)        struct s { unsigned char a[n]; } __attribute__((__packed__));
+#  define __lzo_byte_struct_ma(s,n)     struct s { unsigned char a[n]; } __lzo_may_alias __attribute__((__packed__));
+#endif
+#endif
+#if defined(__lzo_byte_struct) &&  !defined(__lzo_byte_struct_ma)
+#  define __lzo_byte_struct_ma(s,n)     __lzo_byte_struct(s,n)
+#endif
+#if !defined(__lzo_struct_align16) && (__lzo_HAVE_alignof)
+#if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x030000ul))
+#elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_CILLY || LZO_CC_PCC)
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_struct_align16(s)       struct __declspec(align(16)) s {
+#  define __lzo_struct_align16_end()    };
+#  define __lzo_struct_align32(s)       struct __declspec(align(32)) s {
+#  define __lzo_struct_align32_end()    };
+#  define __lzo_struct_align64(s)       struct __declspec(align(64)) s {
+#  define __lzo_struct_align64_end()    };
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || (LZO_CC_IBMC >= 700) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_struct_align16(s)       struct s {
+#  define __lzo_struct_align16_end()    } __attribute__((__aligned__(16)));
+#  define __lzo_struct_align32(s)       struct s {
+#  define __lzo_struct_align32_end()    } __attribute__((__aligned__(32)));
+#  define __lzo_struct_align64(s)       struct s {
+#  define __lzo_struct_align64_end()    } __attribute__((__aligned__(64)));
+#endif
+#endif
+#if !defined(__lzo_union_um)
+#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER < 810))
+#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
+#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_union_am(s)             union s {
+#  define __lzo_union_am_end()          } __lzo_may_alias;
+#  define __lzo_union_um(s)             union s {
+#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_union_am(s)             __lzo_gnuc_extension__ union s {
+#  define __lzo_union_am_end()          } __lzo_may_alias;
+#  define __lzo_union_um(s)             __lzo_gnuc_extension__ union s {
+#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_union_um(s)             __pragma(pack(push,1)) union s {
+#  define __lzo_union_um_end()          } __pragma(pack(pop));
+#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
+#  define __lzo_union_um(s)             _Packed union s {
+#  define __lzo_union_um_end()          };
+#endif
+#endif
+#if !defined(__lzo_union_am)
+#  define __lzo_union_am(s)             union s {
+#  define __lzo_union_am_end()          };
+#endif
+#if !defined(__lzo_constructor)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_constructor     __attribute__((__constructor__,__used__))
+#elif (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_constructor     __attribute__((__constructor__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
+#  define __lzo_constructor     __attribute__((__constructor__,__used__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_constructor     __attribute__((__constructor__))
+#endif
+#endif
+#if defined(__lzo_constructor)
+#  ifndef __lzo_HAVE_constructor
+#  define __lzo_HAVE_constructor 1
+#  endif
+#endif
+#if !defined(__lzo_destructor)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_destructor      __attribute__((__destructor__,__used__))
+#elif (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_destructor      __attribute__((__destructor__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
+#  define __lzo_destructor      __attribute__((__destructor__,__used__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_destructor      __attribute__((__destructor__))
+#endif
+#endif
+#if defined(__lzo_destructor)
+#  ifndef __lzo_HAVE_destructor
+#  define __lzo_HAVE_destructor 1
+#  endif
+#endif
+#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
+#  error "unexpected configuration - check your compiler defines"
+#endif
 #if !defined(__lzo_likely) && !defined(__lzo_unlikely)
 #if (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
+#elif (LZO_CC_IBMC >= 1010)
+#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
+#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
 #elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
 #endif
 #endif
 #if defined(__lzo_likely)
+#  ifndef __lzo_HAVE_likely
 #  define __lzo_HAVE_likely 1
+#  endif
+#else
+#  define __lzo_likely(e)           (e)
+#endif
+#if defined(__lzo_very_likely)
+#  ifndef __lzo_HAVE_very_likely
+#  define __lzo_HAVE_very_likely 1
+#  endif
 #else
-#  define __lzo_likely(e)       (e)
+#  define __lzo_very_likely(e)      __lzo_likely(e)
 #endif
 #if defined(__lzo_unlikely)
+#  ifndef __lzo_HAVE_unlikely
 #  define __lzo_HAVE_unlikely 1
+#  endif
 #else
-#  define __lzo_unlikely(e)     (e)
+#  define __lzo_unlikely(e)         (e)
 #endif
-#if !defined(LZO_UNUSED)
-#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
-#    define LZO_UNUSED(var)         ((void) &var)
-#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
-#    define LZO_UNUSED(var)         if (&var) ; else
-#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#    define LZO_UNUSED(var)         ((void) var)
-#  elif (LZO_CC_MSC && (_MSC_VER < 900))
-#    define LZO_UNUSED(var)         if (&var) ; else
-#  elif (LZO_CC_KEILC)
-#    define LZO_UNUSED(var)         {extern int __lzo_unused[1-2*!(sizeof(var)>0)];}
-#  elif (LZO_CC_PACIFICC)
-#    define LZO_UNUSED(var)         ((void) sizeof(var))
-#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
-#    define LZO_UNUSED(var)         ((void) var)
-#  else
-#    define LZO_UNUSED(var)         ((void) &var)
+#if defined(__lzo_very_unlikely)
+#  ifndef __lzo_HAVE_very_unlikely
+#  define __lzo_HAVE_very_unlikely 1
 #  endif
+#else
+#  define __lzo_very_unlikely(e)    __lzo_unlikely(e)
 #endif
-#if !defined(LZO_UNUSED_FUNC)
-#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
-#    define LZO_UNUSED_FUNC(func)   ((void) func)
-#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
-#    define LZO_UNUSED_FUNC(func)   if (func) ; else
-#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
-#    define LZO_UNUSED_FUNC(func)   ((void) &func)
-#  elif (LZO_CC_MSC && (_MSC_VER < 900))
-#    define LZO_UNUSED_FUNC(func)   if (func) ; else
-#  elif (LZO_CC_MSC)
-#    define LZO_UNUSED_FUNC(func)   ((void) &func)
-#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
-#    define LZO_UNUSED_FUNC(func)   {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];}
+#if !defined(__lzo_loop_forever)
+#  if (LZO_CC_IBMC)
+#    define __lzo_loop_forever()    LZO_BLOCK_BEGIN for (;;) { ; } LZO_BLOCK_END
 #  else
-#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#    define __lzo_loop_forever()    do { ; } while __lzo_cte(1)
 #  endif
 #endif
-#if !defined(LZO_UNUSED_LABEL)
-#  if (LZO_CC_WATCOMC) && defined(__cplusplus)
-#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
-#  elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
-#    define LZO_UNUSED_LABEL(l)     if (0) goto l
-#  else
-#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
-#  endif
+#if !defined(__lzo_unreachable)
+#if (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x020800ul)) && lzo_has_builtin(__builtin_unreachable)
+#  define __lzo_unreachable()       __builtin_unreachable();
+#elif (LZO_CC_GNUC >= 0x040500ul)
+#  define __lzo_unreachable()       __builtin_unreachable();
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1300)) && 1
+#  define __lzo_unreachable()       __builtin_unreachable();
 #endif
-#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
+#endif
+#if defined(__lzo_unreachable)
+#  ifndef __lzo_HAVE_unreachable
+#  define __lzo_HAVE_unreachable 1
+#  endif
+#else
 #  if 0
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
-#  elif 0 && (LZO_CC_GNUC)
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
+#  define __lzo_unreachable()       ((void)0);
 #  else
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
+#  define __lzo_unreachable()       __lzo_loop_forever();
 #  endif
 #endif
-#if !defined(LZO_UNCONST_CAST)
-#  if 0 && defined(__cplusplus)
-#    define LZO_UNCONST_CAST(t,e)   (const_cast<t> (e))
-#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e))))))
+#if !defined(lzo_unused_funcs_impl)
+#  if 1 && (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#    define lzo_unused_funcs_impl(r,f)  static r __attribute__((__unused__)) f
+#  elif 1 && (LZO_CC_BORLANDC || LZO_CC_GNUC)
+#    define lzo_unused_funcs_impl(r,f)  static r f
 #  else
-#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((const void *) (e)))))
+#    define lzo_unused_funcs_impl(r,f)  __lzo_static_forceinline r f
 #  endif
 #endif
+#ifndef __LZO_CTA_NAME
+#if (LZO_CFG_USE_COUNTER)
+#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__COUNTER__)
+#else
+#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__LINE__)
+#endif
+#endif
 #if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
 #  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
 #  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1u-2*!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1u-2*!(e)]; LZO_EXTERN_C_END
 #  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020900ul)) && defined(__cplusplus)
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN int __LZO_CTA_NAME(lzo_cta_f__)(int [1-2*!(e)]); LZO_EXTERN_C_END
+#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__)); LZO_EXTERN_C_END
 #  else
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-2*!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-2*!(e)]; LZO_EXTERN_C_END
 #  endif
 #endif
 #if !defined(LZO_COMPILE_TIME_ASSERT)
 #  if (LZO_CC_AZTECC)
-#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-!(e)];}
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-!(e)];}
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030000ul))
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
 #  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
+#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {(void) (0/!!(e));}
+#  elif (LZO_CC_GNUC >= 0x040700ul) && (LZO_CFG_USE_COUNTER) && defined(__cplusplus)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__));}
+#  elif (LZO_CC_GNUC >= 0x040700ul)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
 #  elif (LZO_CC_MSC && (_MSC_VER < 900))
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
 #  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
 #  else
-#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-2*!(e)];}
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)];}
 #  endif
 #endif
+LZO_COMPILE_TIME_ASSERT_HEADER(1 == 1)
+#if defined(__cplusplus)
+extern "C" { LZO_COMPILE_TIME_ASSERT_HEADER(2 == 2) }
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(3 == 3)
 #if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64)
 #  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
 #  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
@@ -1681,99 +1981,667 @@ extern "C" {
 #    elif defined(_MT)
 #      define __lzo_cdecl_sighandler    _far _cdecl
 #    else
-#      define __lzo_cdecl_sighandler    _cdecl
+#      define __lzo_cdecl_sighandler    _cdecl
+#    endif
+#  else
+#    define __lzo_cdecl_sighandler      __cdecl
+#  endif
+#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
+#  define __lzo_cdecl                   __cdecl
+#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
+#  define __lzo_cdecl                   cdecl
+#endif
+#if !defined(__lzo_cdecl)
+#  define __lzo_cdecl                   /*empty*/
+#endif
+#if !defined(__lzo_cdecl_atexit)
+#  define __lzo_cdecl_atexit            /*empty*/
+#endif
+#if !defined(__lzo_cdecl_main)
+#  define __lzo_cdecl_main              /*empty*/
+#endif
+#if !defined(__lzo_cdecl_qsort)
+#  define __lzo_cdecl_qsort             /*empty*/
+#endif
+#if !defined(__lzo_cdecl_sighandler)
+#  define __lzo_cdecl_sighandler        /*empty*/
+#endif
+#if !defined(__lzo_cdecl_va)
+#  define __lzo_cdecl_va                __lzo_cdecl
+#endif
+#if !(LZO_CFG_NO_WINDOWS_H)
+#if !defined(LZO_HAVE_WINDOWS_H)
+#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
+#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
+#  elif ((LZO_OS_WIN32 && defined(__PW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x030000ul)))
+#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
+#  else
+#    define LZO_HAVE_WINDOWS_H 1
+#  endif
+#endif
+#endif
+#endif
+#ifndef LZO_SIZEOF_SHORT
+#if defined(SIZEOF_SHORT)
+#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
+#elif defined(__SIZEOF_SHORT__)
+#  define LZO_SIZEOF_SHORT          (__SIZEOF_SHORT__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_INT
+#if defined(SIZEOF_INT)
+#  define LZO_SIZEOF_INT            (SIZEOF_INT)
+#elif defined(__SIZEOF_INT__)
+#  define LZO_SIZEOF_INT            (__SIZEOF_INT__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_LONG
+#if defined(SIZEOF_LONG)
+#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
+#elif defined(__SIZEOF_LONG__)
+#  define LZO_SIZEOF_LONG           (__SIZEOF_LONG__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_LONG_LONG
+#if defined(SIZEOF_LONG_LONG)
+#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
+#elif defined(__SIZEOF_LONG_LONG__)
+#  define LZO_SIZEOF_LONG_LONG      (__SIZEOF_LONG_LONG__)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT16
+#if defined(SIZEOF___INT16)
+#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT32
+#if defined(SIZEOF___INT32)
+#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT64
+#if defined(SIZEOF___INT64)
+#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
+#endif
+#endif
+#ifndef LZO_SIZEOF_VOID_P
+#if defined(SIZEOF_VOID_P)
+#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
+#elif defined(__SIZEOF_POINTER__)
+#  define LZO_SIZEOF_VOID_P         (__SIZEOF_POINTER__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_SIZE_T
+#if defined(SIZEOF_SIZE_T)
+#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
+#elif defined(__SIZEOF_SIZE_T__)
+#  define LZO_SIZEOF_SIZE_T         (__SIZEOF_SIZE_T__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_PTRDIFF_T
+#if defined(SIZEOF_PTRDIFF_T)
+#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
+#elif defined(__SIZEOF_PTRDIFF_T__)
+#  define LZO_SIZEOF_PTRDIFF_T      (__SIZEOF_PTRDIFF_T__)
+#endif
+#endif
+#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
+#if !defined(LZO_SIZEOF_SHORT)
+#  if (LZO_ARCH_CRAY_PVP)
+#    define LZO_SIZEOF_SHORT        8
+#  elif (USHRT_MAX == LZO_0xffffL)
+#    define LZO_SIZEOF_SHORT        2
+#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
+#    define LZO_SIZEOF_SHORT        1
+#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
+#    define LZO_SIZEOF_SHORT        2
+#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
+#    define LZO_SIZEOF_SHORT        4
+#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
+#    define LZO_SIZEOF_SHORT        8
+#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
+#    define LZO_SIZEOF_SHORT        16
+#  else
+#    error "LZO_SIZEOF_SHORT"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SHORT == sizeof(short))
+#if !defined(LZO_SIZEOF_INT)
+#  if (LZO_ARCH_CRAY_PVP)
+#    define LZO_SIZEOF_INT          8
+#  elif (UINT_MAX == LZO_0xffffL)
+#    define LZO_SIZEOF_INT          2
+#  elif (UINT_MAX == LZO_0xffffffffL)
+#    define LZO_SIZEOF_INT          4
+#  elif (__LZO_LSR(UINT_MAX,7) == 1)
+#    define LZO_SIZEOF_INT          1
+#  elif (__LZO_LSR(UINT_MAX,15) == 1)
+#    define LZO_SIZEOF_INT          2
+#  elif (__LZO_LSR(UINT_MAX,31) == 1)
+#    define LZO_SIZEOF_INT          4
+#  elif (__LZO_LSR(UINT_MAX,63) == 1)
+#    define LZO_SIZEOF_INT          8
+#  elif (__LZO_LSR(UINT_MAX,127) == 1)
+#    define LZO_SIZEOF_INT          16
+#  else
+#    error "LZO_SIZEOF_INT"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_INT == sizeof(int))
+#if !defined(LZO_SIZEOF_LONG)
+#  if (ULONG_MAX == LZO_0xffffffffL)
+#    define LZO_SIZEOF_LONG         4
+#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
+#    define LZO_SIZEOF_LONG         1
+#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
+#    define LZO_SIZEOF_LONG         2
+#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
+#    define LZO_SIZEOF_LONG         4
+#  elif (__LZO_LSR(ULONG_MAX,39) == 1)
+#    define LZO_SIZEOF_LONG         5
+#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
+#    define LZO_SIZEOF_LONG         8
+#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
+#    define LZO_SIZEOF_LONG         16
+#  else
+#    error "LZO_SIZEOF_LONG"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_LONG == sizeof(long))
+#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
+#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
+#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
+#    if (LZO_CC_GNUC >= 0x030300ul)
+#      if ((__LONG_MAX__-0) == (__LONG_LONG_MAX__-0))
+#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
+#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
+#        define LZO_SIZEOF_LONG_LONG      4
+#      endif
+#    endif
+#  endif
+#endif
+#endif
+#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
+#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
+#if (LZO_ARCH_I086 && LZO_CC_DMC)
+#elif (LZO_CC_CILLY) && defined(__GNUC__)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_OS_WIN64 || defined(_WIN64))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
+#  define LZO_SIZEOF___INT64        8
+#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_CC_GHS && defined(__LLONG_BIT) && ((__LLONG_BIT-0) == 64))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && ((_INTEGRAL_MAX_BITS-0) == 64))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (defined(__vms) || defined(__VMS)) && ((__INITIAL_POINTER_SIZE-0) == 64)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
+#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+#  define LZO_SIZEOF_LONG_LONG      8
+#endif
+#endif
+#endif
+#if defined(__cplusplus) && (LZO_CC_GNUC)
+#  if (LZO_CC_GNUC < 0x020800ul)
+#    undef LZO_SIZEOF_LONG_LONG
+#  endif
+#endif
+#if (LZO_CFG_NO_LONG_LONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#elif defined(__NO_LONG_LONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#elif defined(_NO_LONGLONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#endif
+#if !defined(LZO_WORDSIZE)
+#if (LZO_ARCH_ALPHA)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_AMD64)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_AVR)
+#  define LZO_WORDSIZE              1
+#elif (LZO_ARCH_H8300)
+#  if defined(__NORMAL_MODE__)
+#    define LZO_WORDSIZE            4
+#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
+#    define LZO_WORDSIZE            4
+#  else
+#    define LZO_WORDSIZE            2
+#  endif
+#elif (LZO_ARCH_I086)
+#  define LZO_WORDSIZE              2
+#elif (LZO_ARCH_IA64)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_M16C)
+#  define LZO_WORDSIZE              2
+#elif (LZO_ARCH_SPU)
+#  define LZO_WORDSIZE              4
+#elif (LZO_ARCH_Z80)
+#  define LZO_WORDSIZE              1
+#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#  define LZO_WORDSIZE              8
+#elif (LZO_OS_OS400 || defined(__OS400__))
+#  define LZO_WORDSIZE              8
+#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
+#  define LZO_WORDSIZE              8
+#endif
+#endif
+#if !defined(LZO_SIZEOF_VOID_P)
+#if defined(__ILP32__) || defined(__ILP32) || defined(_ILP32)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
+#  define LZO_SIZEOF_VOID_P         4
+#elif defined(__ILP64__) || defined(__ILP64) || defined(_ILP64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
+#  define LZO_SIZEOF_VOID_P         8
+#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
+#  define LZO_SIZEOF_VOID_P         8
+#elif defined(__LP64__) || defined(__LP64) || defined(_LP64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
+#  define LZO_SIZEOF_VOID_P         8
+#elif (LZO_ARCH_AVR)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_ARCH_H8300)
+#  if defined(__NORMAL_MODE__)
+#    define LZO_SIZEOF_VOID_P       2
+#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    define LZO_SIZEOF_VOID_P       2
+#  endif
+#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
+#  endif
+#elif (LZO_ARCH_I086)
+#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
+#    define LZO_SIZEOF_VOID_P       2
+#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    error "invalid LZO_ARCH_I086 memory model"
+#  endif
+#elif (LZO_ARCH_M16C)
+#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    define LZO_SIZEOF_VOID_P       2
+#  endif
+#elif (LZO_ARCH_SPU)
+#  define LZO_SIZEOF_VOID_P         4
+#elif (LZO_ARCH_Z80)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#  define LZO_SIZEOF_VOID_P         4
+#elif (LZO_OS_OS400 || defined(__OS400__))
+#  if defined(__LLP64_IFC__)
+#    define LZO_SIZEOF_VOID_P       8
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
+#  else
+#    define LZO_SIZEOF_VOID_P       16
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
+#  endif
+#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
+#  define LZO_SIZEOF_VOID_P         8
+#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
+#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
+#endif
+#endif
+#if !defined(LZO_SIZEOF_VOID_P)
+#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_VOID_P == sizeof(void *))
+#if !defined(LZO_SIZEOF_SIZE_T)
+#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
+#  define LZO_SIZEOF_SIZE_T         2
+#endif
+#endif
+#if !defined(LZO_SIZEOF_SIZE_T)
+#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
+#endif
+#if defined(offsetof)
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SIZE_T == sizeof(size_t))
+#endif
+#if !defined(LZO_SIZEOF_PTRDIFF_T)
+#if (LZO_ARCH_I086)
+#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
+#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
+#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
+#      define LZO_SIZEOF_PTRDIFF_T  4
+#    else
+#      define LZO_SIZEOF_PTRDIFF_T  2
 #    endif
 #  else
-#    define __lzo_cdecl_sighandler      __cdecl
+#    error "invalid LZO_ARCH_I086 memory model"
 #  endif
-#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
-#  define __lzo_cdecl                   __cdecl
-#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
-#  define __lzo_cdecl                   cdecl
 #endif
-#if !defined(__lzo_cdecl)
-#  define __lzo_cdecl                   /*empty*/
 #endif
-#if !defined(__lzo_cdecl_atexit)
-#  define __lzo_cdecl_atexit            /*empty*/
+#if !defined(LZO_SIZEOF_PTRDIFF_T)
+#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
 #endif
-#if !defined(__lzo_cdecl_main)
-#  define __lzo_cdecl_main              /*empty*/
+#if defined(offsetof)
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
 #endif
-#if !defined(__lzo_cdecl_qsort)
-#  define __lzo_cdecl_qsort             /*empty*/
+#if !defined(LZO_WORDSIZE)
+#  define LZO_WORDSIZE              LZO_SIZEOF_VOID_P
 #endif
-#if !defined(__lzo_cdecl_sighandler)
-#  define __lzo_cdecl_sighandler        /*empty*/
+#if (LZO_ABI_NEUTRAL_ENDIAN)
+#  undef LZO_ABI_BIG_ENDIAN
+#  undef LZO_ABI_LITTLE_ENDIAN
+#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
+#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390 || LZO_ARCH_SPU)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
+#  if (__LITTLE_ENDIAN__ == 1)
+#    define LZO_ABI_LITTLE_ENDIAN   1
+#  else
+#    define LZO_ABI_BIG_ENDIAN      1
+#  endif
+#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARM_BIG_ENDIAN) && ((__ARM_BIG_ENDIAN)+0)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM && LZO_CC_ARMCC_ARMCC)
+#  if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
+#    error "unexpected configuration - check your compiler defines"
+#  elif defined(__BIG_ENDIAN)
+#    define LZO_ABI_BIG_ENDIAN      1
+#  else
+#    define LZO_ABI_LITTLE_ENDIAN   1
+#  endif
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__ARM_BIG_ENDIAN) && ((__ARM_BIG_ENDIAN)+0)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EB__) && !defined(__AARCH64EL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EL__) && !defined(__AARCH64EB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
 #endif
-#if !defined(__lzo_cdecl_va)
-#  define __lzo_cdecl_va                __lzo_cdecl
 #endif
-#if !(LZO_CFG_NO_WINDOWS_H)
-#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
-#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
-#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
-#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
+#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ABI_BIG_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "be"
+#elif (LZO_ABI_LITTLE_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "le"
+#elif (LZO_ABI_NEUTRAL_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "neutral"
+#endif
+#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
+#  define LZO_ABI_I8LP16         1
+#  define LZO_INFO_ABI_PM       "i8lp16"
+#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
+#  define LZO_ABI_ILP16         1
+#  define LZO_INFO_ABI_PM       "ilp16"
+#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_LP32          1
+#  define LZO_INFO_ABI_PM       "lp32"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_ILP32         1
+#  define LZO_INFO_ABI_PM       "ilp32"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
+#  define LZO_ABI_LLP64         1
+#  define LZO_INFO_ABI_PM       "llp64"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
+#  define LZO_ABI_LP64          1
+#  define LZO_INFO_ABI_PM       "lp64"
+#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
+#  define LZO_ABI_ILP64         1
+#  define LZO_INFO_ABI_PM       "ilp64"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_IP32L64       1
+#  define LZO_INFO_ABI_PM       "ip32l64"
+#endif
+#if 0
+#elif !defined(__LZO_LIBC_OVERRIDE)
+#if (LZO_LIBC_NAKED)
+#  define LZO_INFO_LIBC         "naked"
+#elif (LZO_LIBC_FREESTANDING)
+#  define LZO_INFO_LIBC         "freestanding"
+#elif (LZO_LIBC_MOSTLY_FREESTANDING)
+#  define LZO_INFO_LIBC         "mfreestanding"
+#elif (LZO_LIBC_ISOC90)
+#  define LZO_INFO_LIBC         "isoc90"
+#elif (LZO_LIBC_ISOC99)
+#  define LZO_INFO_LIBC         "isoc99"
+#elif (LZO_CC_ARMCC_ARMCC) && defined(__ARMCLIB_VERSION)
+#  define LZO_LIBC_ISOC90       1
+#  define LZO_INFO_LIBC         "isoc90"
+#elif defined(__dietlibc__)
+#  define LZO_LIBC_DIETLIBC     1
+#  define LZO_INFO_LIBC         "dietlibc"
+#elif defined(_NEWLIB_VERSION)
+#  define LZO_LIBC_NEWLIB       1
+#  define LZO_INFO_LIBC         "newlib"
+#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
+#  if defined(__UCLIBC_SUBLEVEL__)
+#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + (__UCLIBC_MINOR__-0) * 0x100 + (__UCLIBC_SUBLEVEL__-0))
 #  else
-#    define LZO_HAVE_WINDOWS_H 1
+#    define LZO_LIBC_UCLIBC     0x00090bL
 #  endif
+#  define LZO_INFO_LIBC         "uc" "libc"
+#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + (__GLIBC_MINOR__-0) * 0x100)
+#  define LZO_INFO_LIBC         "glibc"
+#elif (LZO_CC_MWERKS) && defined(__MSL__)
+#  define LZO_LIBC_MSL          __MSL__
+#  define LZO_INFO_LIBC         "msl"
+#elif 1 && defined(__IAR_SYSTEMS_ICC__)
+#  define LZO_LIBC_ISOC90       1
+#  define LZO_INFO_LIBC         "isoc90"
+#else
+#  define LZO_LIBC_DEFAULT      1
+#  define LZO_INFO_LIBC         "default"
+#endif
+#endif
+#if (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
+#  define LZO_ASM_SYNTAX_MSC 1
+#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
+#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
+#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
+#  define LZO_ASM_SYNTAX_GNUC 1
+#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
+#  define LZO_ASM_SYNTAX_GNUC 1
+#elif (LZO_CC_GNUC)
+#  define LZO_ASM_SYNTAX_GNUC 1
+#endif
+#if (LZO_ASM_SYNTAX_GNUC)
+#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
+#  define __LZO_ASM_CLOBBER                     "ax"
+#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
+#elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1000))
+#  define __LZO_ASM_CLOBBER                     "memory"
+#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "memory"
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
+#else
+#  define __LZO_ASM_CLOBBER                     "cc", "memory"
+#  define __LZO_ASM_CLOBBER_LIST_CC             : "cc"
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "cc", "memory"
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
 #endif
 #endif
 #if (LZO_ARCH_ALPHA)
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_AVOID_SHORT       1
-#  define LZO_OPT_AVOID_USHORT      1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
 #elif (LZO_ARCH_AMD64)
-#  define LZO_OPT_AVOID_INT_INDEX   1
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
-#  define LZO_OPT_UNALIGNED64       1
-#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB)
+#  define LZO_OPT_AVOID_INT_INDEX           1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED64
+#  define LZO_OPT_UNALIGNED64               1
+#  endif
 #elif (LZO_ARCH_ARM)
-#  define LZO_OPT_AVOID_SHORT       1
-#  define LZO_OPT_AVOID_USHORT      1
+#  if defined(__ARM_FEATURE_UNALIGNED)
+#   if ((__ARM_FEATURE_UNALIGNED)+0)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#   endif
+#  elif 1 && (LZO_ARCH_ARM_THUMB2)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  elif 1 && defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM)+0 >= 7)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  elif 1 && defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM)+0 >= 6) && (defined(__TARGET_PROFILE_A) || defined(__TARGET_PROFILE_R))
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  endif
+#elif (LZO_ARCH_ARM64)
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED64
+#  define LZO_OPT_UNALIGNED64               1
+#  endif
 #elif (LZO_ARCH_CRIS)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
 #elif (LZO_ARCH_I386)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
 #elif (LZO_ARCH_IA64)
-#  define LZO_OPT_AVOID_INT_INDEX   1
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_PREFER_POSTINC    1
+#  define LZO_OPT_AVOID_INT_INDEX           1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
+#  define LZO_OPT_PREFER_POSTINC            1
 #elif (LZO_ARCH_M68K)
-#  define LZO_OPT_PREFER_POSTINC    1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_POSTINC            1
+#  define LZO_OPT_PREFER_PREDEC             1
 #  if defined(__mc68020__) && !defined(__mcoldfire__)
-#    define LZO_OPT_UNALIGNED16     1
-#    define LZO_OPT_UNALIGNED32     1
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
 #  endif
 #elif (LZO_ARCH_MIPS)
-#  define LZO_OPT_AVOID_UINT_INDEX  1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
 #elif (LZO_ARCH_POWERPC)
-#  define LZO_OPT_PREFER_PREINC     1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_PREINC             1
+#  define LZO_OPT_PREFER_PREDEC             1
 #  if (LZO_ABI_BIG_ENDIAN)
-#    define LZO_OPT_UNALIGNED16     1
-#    define LZO_OPT_UNALIGNED32     1
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#    if (LZO_WORDSIZE == 8)
+#      ifndef LZO_OPT_UNALIGNED64
+#      define LZO_OPT_UNALIGNED64           1
+#      endif
+#    endif
 #  endif
 #elif (LZO_ARCH_S390)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
-#  if (LZO_SIZEOF_SIZE_T == 8)
-#    define LZO_OPT_UNALIGNED64     1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  if (LZO_WORDSIZE == 8)
+#    ifndef LZO_OPT_UNALIGNED64
+#    define LZO_OPT_UNALIGNED64             1
+#    endif
 #  endif
 #elif (LZO_ARCH_SH)
-#  define LZO_OPT_PREFER_POSTINC    1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_POSTINC            1
+#  define LZO_OPT_PREFER_PREDEC             1
 #endif
 #ifndef LZO_CFG_NO_INLINE_ASM
-#if (LZO_CC_LLVM)
+#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
+#  define LZO_CFG_NO_INLINE_ASM 1
+#elif (LZO_CC_LLVM)
 #  define LZO_CFG_NO_INLINE_ASM 1
 #endif
 #endif
+#if (LZO_CFG_NO_INLINE_ASM)
+#  undef LZO_ASM_SYNTAX_MSC
+#  undef LZO_ASM_SYNTAX_GNUC
+#  undef __LZO_ASM_CLOBBER
+#  undef __LZO_ASM_CLOBBER_LIST_CC
+#  undef __LZO_ASM_CLOBBER_LIST_CC_MEMORY
+#  undef __LZO_ASM_CLOBBER_LIST_EMPTY
+#endif
 #ifndef LZO_CFG_NO_UNALIGNED
 #if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
 #  define LZO_CFG_NO_UNALIGNED 1
@@ -1784,25 +2652,6 @@ extern "C" {
 #  undef LZO_OPT_UNALIGNED32
 #  undef LZO_OPT_UNALIGNED64
 #endif
-#if (LZO_CFG_NO_INLINE_ASM)
-#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
-#  define LZO_ASM_SYNTAX_MSC 1
-#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
-#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
-#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
-#  define LZO_ASM_SYNTAX_GNUC 1
-#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
-#  define LZO_ASM_SYNTAX_GNUC 1
-#endif
-#if (LZO_ASM_SYNTAX_GNUC)
-#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
-#  define __LZO_ASM_CLOBBER         "ax"
-#elif (LZO_CC_INTELC)
-#  define __LZO_ASM_CLOBBER         "memory"
-#else
-#  define __LZO_ASM_CLOBBER         "cc", "memory"
-#endif
-#endif
 #if defined(__LZO_INFOSTR_MM)
 #elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
 #  define __LZO_INFOSTR_MM          ""
@@ -1846,7 +2695,440 @@ extern "C" {
 #define LZO_INFO_STRING \
     LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
     " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
+#if !(LZO_CFG_SKIP_LZO_TYPES)
+#if (!(LZO_SIZEOF_SHORT+0 > 0 && LZO_SIZEOF_INT+0 > 0 && LZO_SIZEOF_LONG+0 > 0))
+#  error "missing defines for sizes"
+#endif
+#if (!(LZO_SIZEOF_PTRDIFF_T+0 > 0 && LZO_SIZEOF_SIZE_T+0 > 0 && LZO_SIZEOF_VOID_P+0 > 0))
+#  error "missing defines for sizes"
+#endif
+#define LZO_TYPEOF_CHAR             1u
+#define LZO_TYPEOF_SHORT            2u
+#define LZO_TYPEOF_INT              3u
+#define LZO_TYPEOF_LONG             4u
+#define LZO_TYPEOF_LONG_LONG        5u
+#define LZO_TYPEOF___INT8           17u
+#define LZO_TYPEOF___INT16          18u
+#define LZO_TYPEOF___INT32          19u
+#define LZO_TYPEOF___INT64          20u
+#define LZO_TYPEOF___INT128         21u
+#define LZO_TYPEOF___INT256         22u
+#define LZO_TYPEOF___MODE_QI        33u
+#define LZO_TYPEOF___MODE_HI        34u
+#define LZO_TYPEOF___MODE_SI        35u
+#define LZO_TYPEOF___MODE_DI        36u
+#define LZO_TYPEOF___MODE_TI        37u
+#define LZO_TYPEOF_CHAR_P           129u
+#if !defined(lzo_llong_t)
+#if (LZO_SIZEOF_LONG_LONG+0 > 0)
+__lzo_gnuc_extension__ typedef long long lzo_llong_t__;
+__lzo_gnuc_extension__ typedef unsigned long long lzo_ullong_t__;
+#  define lzo_llong_t               lzo_llong_t__
+#  define lzo_ullong_t              lzo_ullong_t__
+#endif
+#endif
+#if !defined(lzo_int16e_t)
+#if (LZO_SIZEOF_LONG == 2)
+#  define lzo_int16e_t              long
+#  define lzo_uint16e_t             unsigned long
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_INT == 2)
+#  define lzo_int16e_t              int
+#  define lzo_uint16e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == 2)
+#  define lzo_int16e_t              short int
+#  define lzo_uint16e_t             unsigned short int
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_SHORT
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_HI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM)
+   typedef int lzo_int16e_hi_t__ __attribute__((__mode__(__HI__)));
+   typedef unsigned int lzo_uint16e_hi_t__ __attribute__((__mode__(__HI__)));
+#  define lzo_int16e_t              lzo_int16e_hi_t__
+#  define lzo_uint16e_t             lzo_uint16e_hi_t__
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF___MODE_HI
+#elif (LZO_SIZEOF___INT16 == 2)
+#  define lzo_int16e_t              __int16
+#  define lzo_uint16e_t             unsigned __int16
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF___INT16
+#else
+#endif
+#endif
+#if defined(lzo_int16e_t)
+#  define LZO_SIZEOF_LZO_INT16E_T   2
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == 2)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == LZO_SIZEOF_LZO_INT16E_T)
+#endif
+#if !defined(lzo_int32e_t)
+#if (LZO_SIZEOF_LONG == 4)
+#  define lzo_int32e_t              long int
+#  define lzo_uint32e_t             unsigned long int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_INT == 4)
+#  define lzo_int32e_t              int
+#  define lzo_uint32e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == 4)
+#  define lzo_int32e_t              short int
+#  define lzo_uint32e_t             unsigned short int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_SHORT
+#elif (LZO_SIZEOF_LONG_LONG == 4)
+#  define lzo_int32e_t              lzo_llong_t
+#  define lzo_uint32e_t             lzo_ullong_t
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_LONG_LONG
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
+   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
+   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
+#  define lzo_int32e_t              lzo_int32e_si_t__
+#  define lzo_uint32e_t             lzo_uint32e_si_t__
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___MODE_SI
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
+   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
+   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
+#  define lzo_int32e_t              lzo_int32e_si_t__
+#  define lzo_uint32e_t             lzo_uint32e_si_t__
+#  define LZO_INT32_C(c)            (c##LL)
+#  define LZO_UINT32_C(c)           (c##ULL)
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___MODE_SI
+#elif (LZO_SIZEOF___INT32 == 4)
+#  define lzo_int32e_t              __int32
+#  define lzo_uint32e_t             unsigned __int32
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___INT32
+#else
+#endif
+#endif
+#if defined(lzo_int32e_t)
+#  define LZO_SIZEOF_LZO_INT32E_T   4
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == LZO_SIZEOF_LZO_INT32E_T)
+#endif
+#if !defined(lzo_int64e_t)
+#if (LZO_SIZEOF___INT64 == 8)
+#  if (LZO_CC_BORLANDC) && !(LZO_CFG_TYPE_PREFER___INT64)
+#    define LZO_CFG_TYPE_PREFER___INT64 1
+#  endif
+#endif
+#if (LZO_SIZEOF_INT == 8) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_int64e_t              int
+#  define lzo_uint64e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_LONG == 8)
+#  define lzo_int64e_t              long int
+#  define lzo_uint64e_t             unsigned long int
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_LONG_LONG == 8) && !(LZO_CFG_TYPE_PREFER___INT64)
+#  define lzo_int64e_t              lzo_llong_t
+#  define lzo_uint64e_t             lzo_ullong_t
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_LONG_LONG
+#  if (LZO_CC_BORLANDC)
+#    define LZO_INT64_C(c)          ((c) + 0ll)
+#    define LZO_UINT64_C(c)         ((c) + 0ull)
+#  elif 0
+#    define LZO_INT64_C(c)          (__lzo_gnuc_extension__ (c##LL))
+#    define LZO_UINT64_C(c)         (__lzo_gnuc_extension__ (c##ULL))
+#  else
+#    define LZO_INT64_C(c)          (c##LL)
+#    define LZO_UINT64_C(c)         (c##ULL)
+#  endif
+#elif (LZO_SIZEOF___INT64 == 8)
+#  define lzo_int64e_t              __int64
+#  define lzo_uint64e_t             unsigned __int64
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF___INT64
+#  if (LZO_CC_BORLANDC)
+#    define LZO_INT64_C(c)          ((c) + 0i64)
+#    define LZO_UINT64_C(c)         ((c) + 0ui64)
+#  else
+#    define LZO_INT64_C(c)          (c##i64)
+#    define LZO_UINT64_C(c)         (c##ui64)
+#  endif
+#else
+#endif
+#endif
+#if defined(lzo_int64e_t)
+#  define LZO_SIZEOF_LZO_INT64E_T   8
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == LZO_SIZEOF_LZO_INT64E_T)
+#endif
+#if !defined(lzo_int32l_t)
+#if defined(lzo_int32e_t)
+#  define lzo_int32l_t              lzo_int32e_t
+#  define lzo_uint32l_t             lzo_uint32e_t
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LZO_INT32E_T
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_TYPEOF_LZO_INT32E_T
+#elif (LZO_SIZEOF_INT >= 4) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_int32l_t              int
+#  define lzo_uint32l_t             unsigned int
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_SIZEOF_INT
+#elif (LZO_SIZEOF_LONG >= 4)
+#  define lzo_int32l_t              long int
+#  define lzo_uint32l_t             unsigned long int
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_SIZEOF_LONG
+#else
+#  error "lzo_int32l_t"
+#endif
+#endif
+#if 1
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) >= 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) == LZO_SIZEOF_LZO_INT32L_T)
+#endif
+#if !defined(lzo_int64l_t)
+#if defined(lzo_int64e_t)
+#  define lzo_int64l_t              lzo_int64e_t
+#  define lzo_uint64l_t             lzo_uint64e_t
+#  define LZO_SIZEOF_LZO_INT64L_T   LZO_SIZEOF_LZO_INT64E_T
+#  define LZO_TYPEOF_LZO_INT64L_T   LZO_TYPEOF_LZO_INT64E_T
+#else
+#endif
+#endif
+#if defined(lzo_int64l_t)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) >= 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) == LZO_SIZEOF_LZO_INT64L_T)
+#endif
+#if !defined(lzo_int32f_t)
+#if (LZO_SIZEOF_SIZE_T >= 8)
+#  define lzo_int32f_t              lzo_int64l_t
+#  define lzo_uint32f_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INT32F_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#  define lzo_int32f_t              lzo_int32l_t
+#  define lzo_uint32f_t             lzo_uint32l_t
+#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT32L_T
+#  define LZO_TYPEOF_LZO_INT32F_T   LZO_TYPEOF_LZO_INT32L_T
+#endif
+#endif
+#if 1
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) >= 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) == LZO_SIZEOF_LZO_INT32F_T)
+#endif
+#if !defined(lzo_int64f_t)
+#if defined(lzo_int64l_t)
+#  define lzo_int64f_t              lzo_int64l_t
+#  define lzo_uint64f_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INT64F_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INT64F_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#endif
+#endif
+#if defined(lzo_int64f_t)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) >= 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) == LZO_SIZEOF_LZO_INT64F_T)
+#endif
+#if !defined(lzo_intptr_t)
+#if 1 && (LZO_OS_OS400 && (LZO_SIZEOF_VOID_P == 16))
+#  define __LZO_INTPTR_T_IS_POINTER 1
+   typedef char *                   lzo_intptr_t;
+   typedef char *                   lzo_uintptr_t;
+#  define lzo_intptr_t              lzo_intptr_t
+#  define lzo_uintptr_t             lzo_uintptr_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_VOID_P
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_CHAR_P
+#elif (LZO_CC_MSC && (_MSC_VER >= 1300) && (LZO_SIZEOF_VOID_P == 4) && (LZO_SIZEOF_INT == 4))
+   typedef __w64 int                lzo_intptr_t;
+   typedef __w64 unsigned int       lzo_uintptr_t;
+#  define lzo_intptr_t              lzo_intptr_t
+#  define lzo_uintptr_t             lzo_uintptr_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT > LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              short
+#  define lzo_uintptr_t             unsigned short
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_SHORT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_SHORT
+#elif (LZO_SIZEOF_INT >= LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_intptr_t              int
+#  define lzo_uintptr_t             unsigned int
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_LONG >= LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              long
+#  define lzo_uintptr_t             unsigned long
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_LZO_INT64L_T >= LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              lzo_int64l_t
+#  define lzo_uintptr_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#  error "lzo_intptr_t"
+#endif
+#endif
+#if 1
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) >= sizeof(void *))
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) == sizeof(lzo_uintptr_t))
+#endif
+#if !defined(lzo_word_t)
+#if defined(LZO_WORDSIZE) && (LZO_WORDSIZE+0 > 0)
+#if (LZO_WORDSIZE == LZO_SIZEOF_LZO_INTPTR_T) && !(__LZO_INTPTR_T_IS_POINTER)
+#  define lzo_word_t                lzo_uintptr_t
+#  define lzo_sword_t               lzo_intptr_t
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INTPTR_T
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_LZO_INTPTR_T
+#elif (LZO_WORDSIZE == LZO_SIZEOF_LONG)
+#  define lzo_word_t                unsigned long
+#  define lzo_sword_t               long
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_LONG
+#elif (LZO_WORDSIZE == LZO_SIZEOF_INT)
+#  define lzo_word_t                unsigned int
+#  define lzo_sword_t               int
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_INT
+#elif (LZO_WORDSIZE == LZO_SIZEOF_SHORT)
+#  define lzo_word_t                unsigned short
+#  define lzo_sword_t               short
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_SHORT
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_SHORT
+#elif (LZO_WORDSIZE == 1)
+#  define lzo_word_t                unsigned char
+#  define lzo_sword_t               signed char
+#  define LZO_SIZEOF_LZO_WORD_T     1
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_CHAR
+#elif (LZO_WORDSIZE == LZO_SIZEOF_LZO_INT64L_T)
+#  define lzo_word_t                lzo_uint64l_t
+#  define lzo_sword_t               lzo_int64l_t
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INT64L_T
+#elif (LZO_ARCH_SPU) && (LZO_CC_GNUC)
+#if 0
+   typedef unsigned lzo_word_t  __attribute__((__mode__(__V16QI__)));
+   typedef int      lzo_sword_t __attribute__((__mode__(__V16QI__)));
+#  define lzo_word_t                lzo_word_t
+#  define lzo_sword_t               lzo_sword_t
+#  define LZO_SIZEOF_LZO_WORD_T     16
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF___MODE_V16QI
+#endif
+#else
+#  error "lzo_word_t"
+#endif
+#endif
+#endif
+#if 1 && defined(lzo_word_t)
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_word_t)  == LZO_WORDSIZE)
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_sword_t) == LZO_WORDSIZE)
+#endif
+#if 1
+#define lzo_int8_t                  signed char
+#define lzo_uint8_t                 unsigned char
+#define LZO_SIZEOF_LZO_INT8_T       1
+#define LZO_TYPEOF_LZO_INT8_T       LZO_TYPEOF_CHAR
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == 1)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == sizeof(lzo_uint8_t))
+#endif
+#if defined(lzo_int16e_t)
+#define lzo_int16_t                 lzo_int16e_t
+#define lzo_uint16_t                lzo_uint16e_t
+#define LZO_SIZEOF_LZO_INT16_T      LZO_SIZEOF_LZO_INT16E_T
+#define LZO_TYPEOF_LZO_INT16_T      LZO_TYPEOF_LZO_INT16E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == 2)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == sizeof(lzo_uint16_t))
+#endif
+#if defined(lzo_int32e_t)
+#define lzo_int32_t                 lzo_int32e_t
+#define lzo_uint32_t                lzo_uint32e_t
+#define LZO_SIZEOF_LZO_INT32_T      LZO_SIZEOF_LZO_INT32E_T
+#define LZO_TYPEOF_LZO_INT32_T      LZO_TYPEOF_LZO_INT32E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == sizeof(lzo_uint32_t))
+#endif
+#if defined(lzo_int64e_t)
+#define lzo_int64_t                 lzo_int64e_t
+#define lzo_uint64_t                lzo_uint64e_t
+#define LZO_SIZEOF_LZO_INT64_T      LZO_SIZEOF_LZO_INT64E_T
+#define LZO_TYPEOF_LZO_INT64_T      LZO_TYPEOF_LZO_INT64E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == sizeof(lzo_uint64_t))
+#endif
+#if 1
+#define lzo_int_least32_t           lzo_int32l_t
+#define lzo_uint_least32_t          lzo_uint32l_t
+#define LZO_SIZEOF_LZO_INT_LEAST32_T LZO_SIZEOF_LZO_INT32L_T
+#define LZO_TYPEOF_LZO_INT_LEAST32_T LZO_TYPEOF_LZO_INT32L_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) >= 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) == sizeof(lzo_uint_least32_t))
+#endif
+#if defined(lzo_int64l_t)
+#define lzo_int_least64_t           lzo_int64l_t
+#define lzo_uint_least64_t          lzo_uint64l_t
+#define LZO_SIZEOF_LZO_INT_LEAST64_T LZO_SIZEOF_LZO_INT64L_T
+#define LZO_TYPEOF_LZO_INT_LEAST64_T LZO_TYPEOF_LZO_INT64L_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) >= 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) == sizeof(lzo_uint_least64_t))
+#endif
+#if 1
+#define lzo_int_fast32_t           lzo_int32f_t
+#define lzo_uint_fast32_t          lzo_uint32f_t
+#define LZO_SIZEOF_LZO_INT_FAST32_T LZO_SIZEOF_LZO_INT32F_T
+#define LZO_TYPEOF_LZO_INT_FAST32_T LZO_TYPEOF_LZO_INT32F_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) >= 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) == sizeof(lzo_uint_fast32_t))
+#endif
+#if defined(lzo_int64f_t)
+#define lzo_int_fast64_t           lzo_int64f_t
+#define lzo_uint_fast64_t          lzo_uint64f_t
+#define LZO_SIZEOF_LZO_INT_FAST64_T LZO_SIZEOF_LZO_INT64F_T
+#define LZO_TYPEOF_LZO_INT_FAST64_T LZO_TYPEOF_LZO_INT64F_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) >= 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) == sizeof(lzo_uint_fast64_t))
+#endif
+#if !defined(LZO_INT16_C)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 2)
+#    define LZO_INT16_C(c)          ((c) + 0)
+#    define LZO_UINT16_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 2)
+#    define LZO_INT16_C(c)          ((c) + 0L)
+#    define LZO_UINT16_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 2)
+#    define LZO_INT16_C(c)          (c)
+#    define LZO_UINT16_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 2)
+#    define LZO_INT16_C(c)          (c##L)
+#    define LZO_UINT16_C(c)         (c##UL)
+#  else
+#    error "LZO_INT16_C"
+#  endif
+#endif
+#if !defined(LZO_INT32_C)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 4)
+#    define LZO_INT32_C(c)          ((c) + 0)
+#    define LZO_UINT32_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 4)
+#    define LZO_INT32_C(c)          ((c) + 0L)
+#    define LZO_UINT32_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 4)
+#    define LZO_INT32_C(c)          (c)
+#    define LZO_UINT32_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 4)
+#    define LZO_INT32_C(c)          (c##L)
+#    define LZO_UINT32_C(c)         (c##UL)
+#  elif (LZO_SIZEOF_LONG_LONG >= 4)
+#    define LZO_INT32_C(c)          (c##LL)
+#    define LZO_UINT32_C(c)         (c##ULL)
+#  else
+#    error "LZO_INT32_C"
+#  endif
+#endif
+#if !defined(LZO_INT64_C) && defined(lzo_int64l_t)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 8)
+#    define LZO_INT64_C(c)          ((c) + 0)
+#    define LZO_UINT64_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 8)
+#    define LZO_INT64_C(c)          ((c) + 0L)
+#    define LZO_UINT64_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 8)
+#    define LZO_INT64_C(c)          (c)
+#    define LZO_UINT64_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 8)
+#    define LZO_INT64_C(c)          (c##L)
+#    define LZO_UINT64_C(c)         (c##UL)
+#  else
+#    error "LZO_INT64_C"
+#  endif
+#endif
+#endif
 
 #endif /* already included */
 
-/* vim:set ts=4 et: */
+/* vim:set ts=4 sw=4 et: */
diff --git a/ica/x11/common/md5.c b/ica/x11/common/md5.c
index e185bc1..c3e3fd7 100644
--- a/ica/x11/common/md5.c
+++ b/ica/x11/common/md5.c
@@ -46,7 +46,7 @@
 
 #ifdef WORDS_BIGENDIAN
 # define SWAP(n)                                                        \
-    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+    ((((n) & 0x00ff) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | (((n) >> 24) & 0x00ff))
 #else
 # define SWAP(n) (n)
 #endif
diff --git a/ica/x11/common/minilzo.c b/ica/x11/common/minilzo.c
index 34ce0f0..801f530 100644
--- a/ica/x11/common/minilzo.c
+++ b/ica/x11/common/minilzo.c
@@ -2,22 +2,7 @@
 
    This file is part of the LZO real-time data compression library.
 
-   Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+   Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
    All Rights Reserved.
 
    The LZO library is free software; you can redistribute it and/or
@@ -67,12 +52,6 @@
 #if defined(__CYGWIN32__) && !defined(__CYGWIN__)
 #  define __CYGWIN__ __CYGWIN32__
 #endif
-#if defined(__IBMCPP__) && !defined(__IBMC__)
-#  define __IBMC__ __IBMCPP__
-#endif
-#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
-#  define __INTEL_COMPILER __ICL
-#endif
 #if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
 #  define _ALL_SOURCE 1
 #endif
@@ -81,19 +60,30 @@
 #    define __LONG_MAX__ 9223372036854775807L
 #  endif
 #endif
-#if defined(__INTEL_COMPILER) && defined(__linux__)
+#if !defined(LZO_CFG_NO_DISABLE_WUNDEF)
+#if defined(__ARMCC_VERSION)
+#  pragma diag_suppress 193
+#elif defined(__clang__) && defined(__clang_minor__)
+#  pragma clang diagnostic ignored "-Wundef"
+#elif defined(__INTEL_COMPILER)
 #  pragma warning(disable: 193)
-#endif
-#if defined(__KEIL__) && defined(__C166__)
-#  pragma warning disable = 322
-#elif 0 && defined(__C251__)
+#elif defined(__KEIL__) && defined(__C166__)
 #  pragma warning disable = 322
-#endif
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
-#  if (_MSC_VER >= 1300)
+#elif defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__PATHSCALE__)
+#  if ((__GNUC__-0) >= 5 || ((__GNUC__-0) == 4 && (__GNUC_MINOR__-0) >= 2))
+#    pragma GCC diagnostic ignored "-Wundef"
+#  endif
+#elif defined(_MSC_VER) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
+#  if ((_MSC_VER-0) >= 1300)
 #    pragma warning(disable: 4668)
 #  endif
 #endif
+#endif
+#if 0 && defined(__POCC__) && defined(_WIN32)
+#  if (__POCC__ >= 400)
+#    pragma warn(disable: 2216)
+#  endif
+#endif
 #if 0 && defined(__WATCOMC__)
 #  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
 #    pragma warning 203 9
@@ -102,13 +92,29 @@
 #if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
 #  pragma option -h
 #endif
+#if !(LZO_CFG_NO_DISABLE_WCRTNONSTDC)
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_NONSTDC_NO_WARNINGS
+#define _CRT_NONSTDC_NO_WARNINGS 1
+#endif
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS 1
+#endif
+#endif
 #if 0
-#define LZO_0xffffL             0xfffful
-#define LZO_0xffffffffL         0xfffffffful
+#define LZO_0xffffUL            0xfffful
+#define LZO_0xffffffffUL        0xfffffffful
 #else
-#define LZO_0xffffL             65535ul
-#define LZO_0xffffffffL         4294967295ul
+#define LZO_0xffffUL            65535ul
+#define LZO_0xffffffffUL        4294967295ul
 #endif
+#define LZO_0xffffL             LZO_0xffffUL
+#define LZO_0xffffffffL         LZO_0xffffffffUL
 #if (LZO_0xffffL == LZO_0xffffffffL)
 #  error "your preprocessor is broken 1"
 #endif
@@ -123,6 +129,13 @@
 #  error "your preprocessor is broken 4"
 #endif
 #endif
+#if defined(__COUNTER__)
+#  ifndef LZO_CFG_USE_COUNTER
+#  define LZO_CFG_USE_COUNTER 1
+#  endif
+#else
+#  undef LZO_CFG_USE_COUNTER
+#endif
 #if (UINT_MAX == LZO_0xffffL)
 #if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
 #  if !defined(MSDOS)
@@ -253,14 +266,31 @@
 #endif
 #define LZO_PP_STRINGIZE(x)             #x
 #define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
+#define LZO_PP_CONCAT0()                /*empty*/
+#define LZO_PP_CONCAT1(a)               a
 #define LZO_PP_CONCAT2(a,b)             a ## b
 #define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
 #define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
 #define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
+#define LZO_PP_CONCAT6(a,b,c,d,e,f)     a ## b ## c ## d ## e ## f
+#define LZO_PP_CONCAT7(a,b,c,d,e,f,g)   a ## b ## c ## d ## e ## f ## g
+#define LZO_PP_ECONCAT0()               LZO_PP_CONCAT0()
+#define LZO_PP_ECONCAT1(a)              LZO_PP_CONCAT1(a)
 #define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
 #define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
 #define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
 #define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
+#define LZO_PP_ECONCAT6(a,b,c,d,e,f)    LZO_PP_CONCAT6(a,b,c,d,e,f)
+#define LZO_PP_ECONCAT7(a,b,c,d,e,f,g)  LZO_PP_CONCAT7(a,b,c,d,e,f,g)
+#define LZO_PP_EMPTY                    /*empty*/
+#define LZO_PP_EMPTY0()                 /*empty*/
+#define LZO_PP_EMPTY1(a)                /*empty*/
+#define LZO_PP_EMPTY2(a,b)              /*empty*/
+#define LZO_PP_EMPTY3(a,b,c)            /*empty*/
+#define LZO_PP_EMPTY4(a,b,c,d)          /*empty*/
+#define LZO_PP_EMPTY5(a,b,c,d,e)        /*empty*/
+#define LZO_PP_EMPTY6(a,b,c,d,e,f)      /*empty*/
+#define LZO_PP_EMPTY7(a,b,c,d,e,f,g)    /*empty*/
 #if 1
 #define LZO_CPP_STRINGIZE(x)            #x
 #define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
@@ -268,12 +298,16 @@
 #define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
 #define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
 #define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
+#define LZO_CPP_CONCAT6(a,b,c,d,e,f)    a ## b ## c ## d ## e ## f
+#define LZO_CPP_CONCAT7(a,b,c,d,e,f,g)  a ## b ## c ## d ## e ## f ## g
 #define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
 #define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
 #define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
 #define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
+#define LZO_CPP_ECONCAT6(a,b,c,d,e,f)   LZO_CPP_CONCAT6(a,b,c,d,e,f)
+#define LZO_CPP_ECONCAT7(a,b,c,d,e,f,g) LZO_CPP_CONCAT7(a,b,c,d,e,f,g)
 #endif
-#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-1)) - (o)) << 1) + (o))
+#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-!!(b))) - (o)) << 1) + (o)*!!(b))
 #if 1 && defined(__cplusplus)
 #  if !defined(__STDC_CONSTANT_MACROS)
 #    define __STDC_CONSTANT_MACROS 1
@@ -283,9 +317,13 @@
 #  endif
 #endif
 #if defined(__cplusplus)
-#  define LZO_EXTERN_C extern "C"
+#  define LZO_EXTERN_C          extern "C"
+#  define LZO_EXTERN_C_BEGIN    extern "C" {
+#  define LZO_EXTERN_C_END      }
 #else
-#  define LZO_EXTERN_C extern
+#  define LZO_EXTERN_C          extern
+#  define LZO_EXTERN_C_BEGIN    /*empty*/
+#  define LZO_EXTERN_C_END      /*empty*/
 #endif
 #if !defined(__LZO_OS_OVERRIDE)
 #if (LZO_OS_FREESTANDING)
@@ -380,18 +418,18 @@
 #elif defined(__TOS__) || defined(__atarist__)
 #  define LZO_OS_TOS            1
 #  define LZO_INFO_OS           "tos"
-#elif defined(macintosh) && !defined(__ppc__)
+#elif defined(macintosh) && !defined(__arm__) && !defined(__i386__) && !defined(__ppc__) && !defined(__x64_64__)
 #  define LZO_OS_MACCLASSIC     1
 #  define LZO_INFO_OS           "macclassic"
 #elif defined(__VMS)
 #  define LZO_OS_VMS            1
 #  define LZO_INFO_OS           "vms"
-#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#elif (defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)
 #  define LZO_OS_CONSOLE        1
 #  define LZO_OS_CONSOLE_PS2    1
 #  define LZO_INFO_OS           "console"
 #  define LZO_INFO_OS_CONSOLE   "ps2"
-#elif (defined(__mips__) && defined(__psp__))
+#elif defined(__mips__) && defined(__psp__)
 #  define LZO_OS_CONSOLE        1
 #  define LZO_OS_CONSOLE_PSP    1
 #  define LZO_INFO_OS           "console"
@@ -419,9 +457,18 @@
 #  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
 #    define LZO_OS_POSIX_LINUX      1
 #    define LZO_INFO_OS_POSIX       "linux"
-#  elif defined(__APPLE__) || defined(__MACOS__)
-#    define LZO_OS_POSIX_MACOSX     1
-#    define LZO_INFO_OS_POSIX       "macosx"
+#  elif defined(__APPLE__) && defined(__MACH__)
+#    if ((__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__-0) >= 20000)
+#      define LZO_OS_POSIX_DARWIN     1040
+#      define LZO_INFO_OS_POSIX       "darwin_iphone"
+#    elif ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) >= 1040)
+#      define LZO_OS_POSIX_DARWIN     __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+#      define LZO_INFO_OS_POSIX       "darwin"
+#    else
+#      define LZO_OS_POSIX_DARWIN     1
+#      define LZO_INFO_OS_POSIX       "darwin"
+#    endif
+#    define LZO_OS_POSIX_MACOSX     LZO_OS_POSIX_DARWIN
 #  elif defined(__minix__) || defined(__minix)
 #    define LZO_OS_POSIX_MINIX      1
 #    define LZO_INFO_OS_POSIX       "minix"
@@ -456,18 +503,18 @@
 #endif
 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #  if (UINT_MAX != LZO_0xffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
 #  if (UINT_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
@@ -483,59 +530,65 @@
 #  define LZO_INFO_CC           "sdcc"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
 #elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
-#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
+#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + (__PATHCC_MINOR__-0) * 0x100 + (__PATHCC_PATCHLEVEL__-0))
 #  define LZO_INFO_CC           "Pathscale C"
 #  define LZO_INFO_CCVER        __PATHSCALE__
-#elif defined(__INTEL_COMPILER)
-#  define LZO_CC_INTELC         1
+#  if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_PATHSCALE_GNUC (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  endif
+#elif defined(__INTEL_COMPILER) && ((__INTEL_COMPILER-0) > 0)
+#  define LZO_CC_INTELC         __INTEL_COMPILER
 #  define LZO_INFO_CC           "Intel C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
-#  if defined(_WIN32) || defined(_WIN64)
-#    define LZO_CC_SYNTAX_MSC 1
-#  else
-#    define LZO_CC_SYNTAX_GNUC 1
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_INTELC_MSC   _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_INTELC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  endif
 #elif defined(__POCC__) && defined(_WIN32)
 #  define LZO_CC_PELLESC        1
 #  define LZO_INFO_CC           "Pelles C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
-#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#elif defined(__ARMCC_VERSION) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
 #  if defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
+#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  else
-#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
+#    define LZO_CC_ARMCC_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
 #  endif
+#  define LZO_CC_ARMCC          __ARMCC_VERSION
+#  define LZO_INFO_CC           "ARM C Compiler"
+#  define LZO_INFO_CCVER        __VERSION__
+#elif defined(__clang__) && defined(__llvm__) && defined(__VERSION__)
 #  if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
-#    define LZO_CC_CLANG_CLANG  (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__)
+#    define LZO_CC_CLANG        (__clang_major__ * 0x10000L + (__clang_minor__-0) * 0x100 + (__clang_patchlevel__-0))
 #  else
-#    define LZO_CC_CLANG_CLANG  0x010000L
+#    define LZO_CC_CLANG        0x010000L
+#  endif
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_CLANG_MSC    _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  endif
-#  define LZO_CC_CLANG          LZO_CC_CLANG_GNUC
 #  define LZO_INFO_CC           "clang"
 #  define LZO_INFO_CCVER        __VERSION__
 #elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
 #  if defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
+#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
 #  else
-#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
+#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
 #  endif
 #  define LZO_CC_LLVM           LZO_CC_LLVM_GNUC
 #  define LZO_INFO_CC           "llvm-gcc"
 #  define LZO_INFO_CCVER        __VERSION__
-#elif defined(__GNUC__) && defined(__VERSION__)
-#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
-#  elif defined(__GNUC_MINOR__)
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
-#  else
-#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
-#  endif
-#  define LZO_INFO_CC           "gcc"
-#  define LZO_INFO_CCVER        __VERSION__
 #elif defined(__ACK__) && defined(_ACK)
 #  define LZO_CC_ACK            1
 #  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
 #  define LZO_INFO_CCVER        "unknown"
+#elif defined(__ARMCC_VERSION) && !defined(__GNUC__)
+#  define LZO_CC_ARMCC          __ARMCC_VERSION
+#  define LZO_CC_ARMCC_ARMCC    __ARMCC_VERSION
+#  define LZO_INFO_CC           "ARM C Compiler"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__ARMCC_VERSION)
 #elif defined(__AZTEC_C__)
 #  define LZO_CC_AZTECC         1
 #  define LZO_INFO_CC           "Aztec C"
@@ -560,10 +613,23 @@
 #  define LZO_CC_DECC           1
 #  define LZO_INFO_CC           "DEC C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
+#elif (defined(__ghs) || defined(__ghs__)) && defined(__GHS_VERSION_NUMBER) && ((__GHS_VERSION_NUMBER-0) > 0)
+#  define LZO_CC_GHS            1
+#  define LZO_INFO_CC           "Green Hills C"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__GHS_VERSION_NUMBER)
+#  if defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#    define LZO_CC_GHS_MSC      _MSC_VER
+#  elif defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
+#    define LZO_CC_GHS_GNUC     (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  endif
 #elif defined(__HIGHC__)
 #  define LZO_CC_HIGHC          1
 #  define LZO_INFO_CC           "MetaWare High C"
 #  define LZO_INFO_CCVER        "unknown"
+#elif defined(__HP_aCC) && ((__HP_aCC-0) > 0)
+#  define LZO_CC_HPACC          __HP_aCC
+#  define LZO_INFO_CC           "HP aCC"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__HP_aCC)
 #elif defined(__IAR_SYSTEMS_ICC__)
 #  define LZO_CC_IARC           1
 #  define LZO_INFO_CC           "IAR C"
@@ -572,10 +638,14 @@
 #  else
 #    define LZO_INFO_CCVER      "unknown"
 #  endif
-#elif defined(__IBMC__)
-#  define LZO_CC_IBMC           1
+#elif defined(__IBMC__) && ((__IBMC__-0) > 0)
+#  define LZO_CC_IBMC           __IBMC__
 #  define LZO_INFO_CC           "IBM C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
+#elif defined(__IBMCPP__) && ((__IBMCPP__-0) > 0)
+#  define LZO_CC_IBMC           __IBMCPP__
+#  define LZO_INFO_CC           "IBM C"
+#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMCPP__)
 #elif defined(__KEIL__) && defined(__C166__)
 #  define LZO_CC_KEILC          1
 #  define LZO_INFO_CC           "Keil C"
@@ -592,16 +662,8 @@
 #  else
 #    define LZO_INFO_CCVER      "unknown"
 #  endif
-#elif defined(_MSC_VER)
-#  define LZO_CC_MSC            1
-#  define LZO_INFO_CC           "Microsoft C"
-#  if defined(_MSC_FULL_VER)
-#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
-#  else
-#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
-#  endif
-#elif defined(__MWERKS__)
-#  define LZO_CC_MWERKS         1
+#elif defined(__MWERKS__) && ((__MWERKS__-0) > 0)
+#  define LZO_CC_MWERKS         __MWERKS__
 #  define LZO_INFO_CC           "Metrowerks C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
 #elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
@@ -612,6 +674,15 @@
 #  define LZO_CC_PACIFICC       1
 #  define LZO_INFO_CC           "Pacific C"
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
+#elif defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__)
+#  if defined(__PGIC_PATCHLEVEL__)
+#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100 + (__PGIC_PATCHLEVEL__-0))
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) "." LZO_PP_MACRO_EXPAND(__PGIC_PATCHLEVEL__)
+#  else
+#    define LZO_CC_PGI          (__PGIC__ * 0x10000L + (__PGIC_MINOR__-0) * 0x100)
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__PGIC__) "." LZO_PP_MACRO_EXPAND(__PGIC_MINOR__) ".0"
+#  endif
+#  define LZO_INFO_CC           "Portland Group PGI C"
 #elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
 #  define LZO_CC_PGI            1
 #  define LZO_INFO_CC           "Portland Group PGI C"
@@ -626,7 +697,7 @@
 #  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
 #elif defined(__SUNPRO_C)
 #  define LZO_INFO_CC           "SunPro C"
-#  if ((__SUNPRO_C)+0 > 0)
+#  if ((__SUNPRO_C-0) > 0)
 #    define LZO_CC_SUNPROC      __SUNPRO_C
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
 #  else
@@ -635,7 +706,7 @@
 #  endif
 #elif defined(__SUNPRO_CC)
 #  define LZO_INFO_CC           "SunPro C"
-#  if ((__SUNPRO_CC)+0 > 0)
+#  if ((__SUNPRO_CC-0) > 0)
 #    define LZO_CC_SUNPROC      __SUNPRO_CC
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
 #  else
@@ -661,16 +732,46 @@
 #elif defined(__ZTC__)
 #  define LZO_CC_ZORTECHC       1
 #  define LZO_INFO_CC           "Zortech C"
-#  if (__ZTC__ == 0x310)
+#  if ((__ZTC__-0) == 0x310)
 #    define LZO_INFO_CCVER      "0x310"
 #  else
 #    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
 #  endif
+#elif defined(__GNUC__) && defined(__VERSION__)
+#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100 + (__GNUC_PATCHLEVEL__-0))
+#  elif defined(__GNUC_MINOR__)
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + (__GNUC_MINOR__-0) * 0x100)
+#  else
+#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
+#  endif
+#  define LZO_INFO_CC           "gcc"
+#  define LZO_INFO_CCVER        __VERSION__
+#elif defined(_MSC_VER) && ((_MSC_VER-0) > 0)
+#  define LZO_CC_MSC            _MSC_VER
+#  define LZO_INFO_CC           "Microsoft C"
+#  if defined(_MSC_FULL_VER)
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
+#  else
+#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
+#  endif
 #else
 #  define LZO_CC_UNKNOWN        1
 #  define LZO_INFO_CC           "unknown"
 #  define LZO_INFO_CCVER        "unknown"
 #endif
+#if (LZO_CC_GNUC) && defined(__OPEN64__)
+#  if defined(__OPENCC__) && defined(__OPENCC_MINOR__) && defined(__OPENCC_PATCHLEVEL__)
+#    define LZO_CC_OPEN64       (__OPENCC__ * 0x10000L + (__OPENCC_MINOR__-0) * 0x100 + (__OPENCC_PATCHLEVEL__-0))
+#    define LZO_CC_OPEN64_GNUC  LZO_CC_GNUC
+#  endif
+#endif
+#if (LZO_CC_GNUC) && defined(__PCC__)
+#  if defined(__PCC__) && defined(__PCC_MINOR__) && defined(__PCC_MINORMINOR__)
+#    define LZO_CC_PCC          (__PCC__ * 0x10000L + (__PCC_MINOR__-0) * 0x100 + (__PCC_MINORMINOR__-0))
+#    define LZO_CC_PCC_GNUC     LZO_CC_GNUC
+#  endif
+#endif
 #if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
 #  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
 #endif
@@ -688,8 +789,10 @@
 #  define LZO_INFO_ARCH             "generic"
 #elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #  define LZO_ARCH_I086             1
-#  define LZO_ARCH_IA16             1
 #  define LZO_INFO_ARCH             "i086"
+#elif defined(__aarch64__)
+#  define LZO_ARCH_ARM64            1
+#  define LZO_INFO_ARCH             "arm64"
 #elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
 #  define LZO_ARCH_ALPHA            1
 #  define LZO_INFO_ARCH             "alpha"
@@ -699,22 +802,11 @@
 #elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
 #  define LZO_ARCH_AMD64            1
 #  define LZO_INFO_ARCH             "amd64"
-#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
+#elif defined(__arm__) || defined(_M_ARM)
 #  define LZO_ARCH_ARM              1
-#  define LZO_ARCH_ARM_THUMB        1
-#  define LZO_INFO_ARCH             "arm_thumb"
+#  define LZO_INFO_ARCH             "arm"
 #elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
 #  define LZO_ARCH_ARM              1
-#  if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
-#    define LZO_ARCH_ARM_THUMB      1
-#    define LZO_INFO_ARCH           "arm_thumb"
-#  elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
-#    define LZO_INFO_ARCH           "arm"
-#  else
-#    define LZO_INFO_ARCH           "arm"
-#  endif
-#elif defined(__arm__) || defined(_M_ARM)
-#  define LZO_ARCH_ARM              1
 #  define LZO_INFO_ARCH             "arm"
 #elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
 #  define LZO_ARCH_AVR              1
@@ -822,57 +914,167 @@
 #  define LZO_INFO_ARCH             "unknown"
 #endif
 #endif
+#if !defined(LZO_ARCH_ARM_THUMB2)
+#if (LZO_ARCH_ARM)
+#  if defined(__ARM_ARCH_ISA_THUMB)
+#   if ((__ARM_ARCH_ISA_THUMB)+0 >= 2)
+#    define LZO_ARCH_ARM_THUMB2     1
+#   endif
+#  elif 1 && defined(__thumb2__)
+#    define LZO_ARCH_ARM_THUMB2     1
+#  elif 1 && defined(__TARGET_ARCH_THUMB) && ((__TARGET_ARCH_THUMB)+0 >= 4)
+#    define LZO_ARCH_ARM_THUMB2     1
+#  endif
+#endif
+#endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
 #  error "FIXME - missing define for CPU architecture"
 #endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
-#  error "FIXME - missing WIN32 define for CPU architecture"
+#  error "FIXME - missing LZO_OS_WIN32 define for CPU architecture"
 #endif
 #if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
-#  error "FIXME - missing WIN64 define for CPU architecture"
+#  error "FIXME - missing LZO_OS_WIN64 define for CPU architecture"
 #endif
 #if (LZO_OS_OS216 || LZO_OS_WIN16)
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && defined(BLX286))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
 #  define LZO_ARCH_I086PM           1
-#  define LZO_ARCH_IA16PM           1
 #endif
-#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM)
-#  error "this should not happen"
+#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64)
+#  define LZO_ARCH_X64              1
+#elif (!LZO_ARCH_AMD64 && LZO_ARCH_X64) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_AMD64            1
+#endif
+#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64)
+#  define LZO_ARCH_AARCH64          1
+#elif (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_ARM64            1
+#endif
+#if (LZO_ARCH_I386 && !LZO_ARCH_X86)
+#  define LZO_ARCH_X86              1
+#elif (!LZO_ARCH_I386 && LZO_ARCH_X86) && defined(__LZO_ARCH_OVERRIDE)
+#  define LZO_ARCH_I386            1
+#endif
+#if (LZO_ARCH_AMD64 && !LZO_ARCH_X64) || (!LZO_ARCH_AMD64 && LZO_ARCH_X64)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM64 && !LZO_ARCH_AARCH64) || (!LZO_ARCH_ARM64 && LZO_ARCH_AARCH64)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_I386 && !LZO_ARCH_X86) || (!LZO_ARCH_I386 && LZO_ARCH_X86)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM_THUMB1 && !LZO_ARCH_ARM)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM_THUMB2 && !LZO_ARCH_ARM)
+#  error "unexpected configuration - check your compiler defines"
 #endif
-#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086)
-#  error "this should not happen"
+#if (LZO_ARCH_ARM_THUMB1 && LZO_ARCH_ARM_THUMB2)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_I086PM && !LZO_ARCH_I086)
+#  error "unexpected configuration - check your compiler defines"
 #endif
 #if (LZO_ARCH_I086)
 #  if (UINT_MAX != LZO_0xffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #if (LZO_ARCH_I386)
 #  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #  if (ULONG_MAX != LZO_0xffffffffL)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
+#  endif
+#endif
+#if (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#  if !defined(LZO_TARGET_FEATURE_SSE2)
+#    if defined(__SSE2__)
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    elif defined(_MSC_VER) && (defined(_M_IX86_FP) && ((_M_IX86_FP)+0 >= 2))
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    elif (LZO_CC_INTELC_MSC || LZO_CC_MSC) && defined(_M_AMD64)
+#      define LZO_TARGET_FEATURE_SSE2       1
+#    endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_SSSE3)
+#  if (LZO_TARGET_FEATURE_SSE2)
+#    if defined(__SSSE3__)
+#      define LZO_TARGET_FEATURE_SSSE3      1
+#    elif defined(_MSC_VER) && defined(__AVX__)
+#      define LZO_TARGET_FEATURE_SSSE3      1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_SSE4_2)
+#  if (LZO_TARGET_FEATURE_SSSE3)
+#    if defined(__SSE4_2__)
+#      define LZO_TARGET_FEATURE_SSE4_2     1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_AVX)
+#  if (LZO_TARGET_FEATURE_SSSE3)
+#    if defined(__AVX__)
+#      define LZO_TARGET_FEATURE_AVX        1
+#    endif
+#  endif
+#  endif
+#  if !defined(LZO_TARGET_FEATURE_AVX2)
+#  if (LZO_TARGET_FEATURE_AVX)
+#    if defined(__AVX2__)
+#      define LZO_TARGET_FEATURE_AVX2       1
+#    endif
+#  endif
 #  endif
 #endif
-#if !defined(__LZO_MM_OVERRIDE)
+#if (LZO_TARGET_FEATURE_SSSE3 && !(LZO_TARGET_FEATURE_SSE2))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_SSE4_2 && !(LZO_TARGET_FEATURE_SSSE3))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_AVX && !(LZO_TARGET_FEATURE_SSSE3))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_TARGET_FEATURE_AVX2 && !(LZO_TARGET_FEATURE_AVX))
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ARCH_ARM)
+#  if !defined(LZO_TARGET_FEATURE_NEON)
+#    if defined(__ARM_NEON) && ((__ARM_NEON)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    elif 1 && defined(__ARM_NEON__) && ((__ARM_NEON__)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    elif 1 && defined(__TARGET_FEATURE_NEON) && ((__TARGET_FEATURE_NEON)+0)
+#      define LZO_TARGET_FEATURE_NEON       1
+#    endif
+#  endif
+#elif (LZO_ARCH_ARM64)
+#  if !defined(LZO_TARGET_FEATURE_NEON)
+#    if 1
+#      define LZO_TARGET_FEATURE_NEON       1
+#    endif
+#  endif
+#endif
+#if 0
+#elif !defined(__LZO_MM_OVERRIDE)
 #if (LZO_ARCH_I086)
 #if (UINT_MAX != LZO_0xffffL)
-#  error "this should not happen"
+#  error "unexpected configuration - check your compiler defines"
 #endif
 #if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
 #  define LZO_MM_TINY           1
@@ -899,7 +1101,7 @@
 #elif (LZO_CC_ZORTECHC && defined(__VCM__))
 #  define LZO_MM_LARGE          1
 #else
-#  error "unknown memory model"
+#  error "unknown LZO_ARCH_I086 memory model"
 #endif
 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
 #define LZO_HAVE_MM_HUGE_PTR        1
@@ -922,10 +1124,10 @@
 #endif
 #if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
 #  if (LZO_OS_DOS16)
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  elif (LZO_CC_ZORTECHC)
 #  else
-#    error "this should not happen"
+#    error "unexpected configuration - check your compiler defines"
 #  endif
 #endif
 #ifdef __cplusplus
@@ -957,7 +1159,7 @@ extern "C" {
 #endif
 #elif (LZO_ARCH_C166)
 #if !defined(__MODEL__)
-#  error "FIXME - C166 __MODEL__"
+#  error "FIXME - LZO_ARCH_C166 __MODEL__"
 #elif ((__MODEL__) == 0)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 1)
@@ -971,11 +1173,11 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - C166 __MODEL__"
+#  error "FIXME - LZO_ARCH_C166 __MODEL__"
 #endif
 #elif (LZO_ARCH_MCS251)
 #if !defined(__MODEL__)
-#  error "FIXME - MCS251 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
 #elif ((__MODEL__) == 0)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 2)
@@ -987,11 +1189,11 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - MCS251 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS251 __MODEL__"
 #endif
 #elif (LZO_ARCH_MCS51)
 #if !defined(__MODEL__)
-#  error "FIXME - MCS51 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
 #elif ((__MODEL__) == 1)
 #  define LZO_MM_SMALL          1
 #elif ((__MODEL__) == 2)
@@ -1003,7 +1205,7 @@ extern "C" {
 #elif ((__MODEL__) == 5)
 #  define LZO_MM_XSMALL         1
 #else
-#  error "FIXME - MCS51 __MODEL__"
+#  error "FIXME - LZO_ARCH_MCS51 __MODEL__"
 #endif
 #elif (LZO_ARCH_CRAY_PVP)
 #  define LZO_MM_PVP            1
@@ -1030,462 +1232,312 @@ extern "C" {
 #  error "unknown memory model"
 #endif
 #endif
-#if defined(SIZEOF_SHORT)
-#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
+#if !defined(__lzo_gnuc_extension__)
+#if (LZO_CC_GNUC >= 0x020800ul)
+#  define __lzo_gnuc_extension__    __extension__
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_gnuc_extension__    __extension__
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_gnuc_extension__    __extension__
+#else
 #endif
-#if defined(SIZEOF_INT)
-#  define LZO_SIZEOF_INT            (SIZEOF_INT)
 #endif
-#if defined(SIZEOF_LONG)
-#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
+#if !defined(__lzo_gnuc_extension__)
+#  define __lzo_gnuc_extension__    /*empty*/
 #endif
-#if defined(SIZEOF_LONG_LONG)
-#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
+#if !defined(lzo_has_builtin)
+#if (LZO_CC_CLANG) && defined(__has_builtin)
+#  define lzo_has_builtin           __has_builtin
 #endif
-#if defined(SIZEOF___INT16)
-#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
 #endif
-#if defined(SIZEOF___INT32)
-#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
+#if !defined(lzo_has_builtin)
+#  define lzo_has_builtin(x)        0
 #endif
-#if defined(SIZEOF___INT64)
-#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
+#if !defined(lzo_has_attribute)
+#if (LZO_CC_CLANG) && defined(__has_attribute)
+#  define lzo_has_attribute         __has_attribute
 #endif
-#if defined(SIZEOF_VOID_P)
-#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
 #endif
-#if defined(SIZEOF_SIZE_T)
-#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
+#if !defined(lzo_has_attribute)
+#  define lzo_has_attribute(x)      0
 #endif
-#if defined(SIZEOF_PTRDIFF_T)
-#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
+#if !defined(lzo_has_declspec_attribute)
+#if (LZO_CC_CLANG) && defined(__has_declspec_attribute)
+#  define lzo_has_declspec_attribute        __has_declspec_attribute
 #endif
-#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
-#if !defined(LZO_SIZEOF_SHORT)
-#  if (LZO_ARCH_CRAY_PVP)
-#    define LZO_SIZEOF_SHORT        8
-#  elif (USHRT_MAX == LZO_0xffffL)
-#    define LZO_SIZEOF_SHORT        2
-#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
-#    define LZO_SIZEOF_SHORT        1
-#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
-#    define LZO_SIZEOF_SHORT        2
-#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
-#    define LZO_SIZEOF_SHORT        4
-#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
-#    define LZO_SIZEOF_SHORT        8
-#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
-#    define LZO_SIZEOF_SHORT        16
+#endif
+#if !defined(lzo_has_declspec_attribute)
+#  define lzo_has_declspec_attribute(x)     0
+#endif
+#if !defined(lzo_has_feature)
+#if (LZO_CC_CLANG) && defined(__has_feature)
+#  define lzo_has_feature         __has_feature
+#endif
+#endif
+#if !defined(lzo_has_feature)
+#  define lzo_has_feature(x)        0
+#endif
+#if !defined(lzo_has_extension)
+#if (LZO_CC_CLANG) && defined(__has_extension)
+#  define lzo_has_extension         __has_extension
+#elif (LZO_CC_CLANG) && defined(__has_feature)
+#  define lzo_has_extension         __has_feature
+#endif
+#endif
+#if !defined(lzo_has_extension)
+#  define lzo_has_extension         0
+#endif
+#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS) && defined(__cplusplus) && 0
+#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul))
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
+#  elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1200))
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 0
 #  else
-#    error "LZO_SIZEOF_SHORT"
+#    define LZO_CFG_USE_NEW_STYLE_CASTS 1
 #  endif
 #endif
-#if !defined(LZO_SIZEOF_INT)
-#  if (LZO_ARCH_CRAY_PVP)
-#    define LZO_SIZEOF_INT          8
-#  elif (UINT_MAX == LZO_0xffffL)
-#    define LZO_SIZEOF_INT          2
-#  elif (UINT_MAX == LZO_0xffffffffL)
-#    define LZO_SIZEOF_INT          4
-#  elif (__LZO_LSR(UINT_MAX,7) == 1)
-#    define LZO_SIZEOF_INT          1
-#  elif (__LZO_LSR(UINT_MAX,15) == 1)
-#    define LZO_SIZEOF_INT          2
-#  elif (__LZO_LSR(UINT_MAX,31) == 1)
-#    define LZO_SIZEOF_INT          4
-#  elif (__LZO_LSR(UINT_MAX,63) == 1)
-#    define LZO_SIZEOF_INT          8
-#  elif (__LZO_LSR(UINT_MAX,127) == 1)
-#    define LZO_SIZEOF_INT          16
-#  else
-#    error "LZO_SIZEOF_INT"
+#if !defined(LZO_CFG_USE_NEW_STYLE_CASTS)
+#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
+#endif
+#if !defined(__cplusplus)
+#  if defined(LZO_CFG_USE_NEW_STYLE_CASTS)
+#    undef LZO_CFG_USE_NEW_STYLE_CASTS
 #  endif
+#  define LZO_CFG_USE_NEW_STYLE_CASTS 0
 #endif
-#if !defined(LZO_SIZEOF_LONG)
-#  if (ULONG_MAX == LZO_0xffffffffL)
-#    define LZO_SIZEOF_LONG         4
-#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
-#    define LZO_SIZEOF_LONG         1
-#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
-#    define LZO_SIZEOF_LONG         2
-#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
-#    define LZO_SIZEOF_LONG         4
-#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
-#    define LZO_SIZEOF_LONG         8
-#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
-#    define LZO_SIZEOF_LONG         16
-#  else
-#    error "LZO_SIZEOF_LONG"
+#if !defined(LZO_REINTERPRET_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_REINTERPRET_CAST(t,e)       (reinterpret_cast<t> (e))
 #  endif
 #endif
-#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
-#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
-#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
-#    if (LZO_CC_GNUC >= 0x030300ul)
-#      if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
-#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
-#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
-#        define LZO_SIZEOF_LONG_LONG      4
-#      endif
-#    endif
+#if !defined(LZO_REINTERPRET_CAST)
+#  define LZO_REINTERPRET_CAST(t,e)         ((t) (e))
+#endif
+#if !defined(LZO_STATIC_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_STATIC_CAST(t,e)            (static_cast<t> (e))
 #  endif
 #endif
+#if !defined(LZO_STATIC_CAST)
+#  define LZO_STATIC_CAST(t,e)              ((t) (e))
 #endif
-#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
-#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
-#if (LZO_ARCH_I086 && LZO_CC_DMC)
-#elif (LZO_CC_CILLY) && defined(__GNUC__)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_OS_WIN64 || defined(_WIN64))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
-#  define LZO_SIZEOF___INT64        8
-#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
-#  define LZO_SIZEOF___INT64        8
-#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
-#  define LZO_SIZEOF_LONG_LONG      8
-#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
-#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
-#  define LZO_SIZEOF_LONG_LONG      8
+#if !defined(LZO_STATIC_CAST2)
+#  define LZO_STATIC_CAST2(t1,t2,e)         LZO_STATIC_CAST(t1, LZO_STATIC_CAST(t2, e))
 #endif
+#if !defined(LZO_UNCONST_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNCONST_CAST(t,e)           (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNCONST_CAST(t,e)           ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNCONST_CAST(t,e)           ((t) ((void *) ((lzo_uintptr_t) ((const void *) (e)))))
+#  endif
+#endif
+#if !defined(LZO_UNCONST_CAST)
+#  define LZO_UNCONST_CAST(t,e)             ((t) ((void *) ((const void *) (e))))
+#endif
+#if !defined(LZO_UNCONST_VOLATILE_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNCONST_VOLATILE_CAST(t,e)  ((t) ((volatile void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
+#  endif
 #endif
+#if !defined(LZO_UNCONST_VOLATILE_CAST)
+#  define LZO_UNCONST_VOLATILE_CAST(t,e)    ((t) ((volatile void *) ((volatile const void *) (e))))
 #endif
-#if defined(__cplusplus) && (LZO_CC_GNUC)
-#  if (LZO_CC_GNUC < 0x020800ul)
-#    undef LZO_SIZEOF_LONG_LONG
+#if !defined(LZO_UNVOLATILE_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNVOLATILE_CAST(t,e)        (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNVOLATILE_CAST(t,e)        ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNVOLATILE_CAST(t,e)        ((t) ((void *) ((lzo_uintptr_t) ((volatile void *) (e)))))
 #  endif
 #endif
-#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
-#  undef LZO_SIZEOF_LONG_LONG
+#if !defined(LZO_UNVOLATILE_CAST)
+#  define LZO_UNVOLATILE_CAST(t,e)          ((t) ((void *) ((volatile void *) (e))))
 #endif
-#if !defined(LZO_SIZEOF_VOID_P)
-#if (LZO_ARCH_I086)
-#  define __LZO_WORDSIZE            2
-#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
-#    define LZO_SIZEOF_VOID_P       2
-#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    error "LZO_MM"
+#if !defined(LZO_UNVOLATILE_CONST_CAST)
+#  if (LZO_CFG_USE_NEW_STYLE_CASTS)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  (const_cast<t> (e))
+#  elif (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) (e))
+#  elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNVOLATILE_CONST_CAST(t,e)  ((t) ((const void *) ((lzo_uintptr_t) ((volatile const void *) (e)))))
 #  endif
-#elif (LZO_ARCH_AVR || LZO_ARCH_Z80)
-#  define __LZO_WORDSIZE            1
-#  define LZO_SIZEOF_VOID_P         2
-#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
-#  define LZO_SIZEOF_VOID_P         2
-#elif (LZO_ARCH_H8300)
-#  if defined(__NORMAL_MODE__)
-#    define __LZO_WORDSIZE          4
-#    define LZO_SIZEOF_VOID_P       2
-#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
-#    define __LZO_WORDSIZE          4
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    define __LZO_WORDSIZE          2
-#    define LZO_SIZEOF_VOID_P       2
-#  endif
-#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
-#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
-#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
-#  endif
-#elif (LZO_ARCH_M16C)
-#  define __LZO_WORDSIZE            2
-#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
-#    define LZO_SIZEOF_VOID_P       4
-#  else
-#    define LZO_SIZEOF_VOID_P       2
-#  endif
-#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
-#  define __LZO_WORDSIZE            8
-#  define LZO_SIZEOF_VOID_P         4
-#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
-#  define __LZO_WORDSIZE            8
-#  define LZO_SIZEOF_VOID_P         8
-#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
-#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (LZO_OS_OS400 || defined(__OS400__))
-#  define __LZO_WORDSIZE            LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_VOID_P         16
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
-#  define LZO_SIZEOF_VOID_P         8
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
-#elif (LZO_ARCH_SPU)
-# if 0
-#  define __LZO_WORDSIZE            16
-# endif
-#  define LZO_SIZEOF_VOID_P         4
-#else
-#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
-#endif
-#endif
-#if !defined(LZO_WORDSIZE)
-#  if defined(__LZO_WORDSIZE)
-#    define LZO_WORDSIZE            __LZO_WORDSIZE
-#  else
-#    define LZO_WORDSIZE            LZO_SIZEOF_VOID_P
-#  endif
-#endif
-#if !defined(LZO_SIZEOF_SIZE_T)
-#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
-#  define LZO_SIZEOF_SIZE_T         2
-#else
-#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
 #endif
+#if !defined(LZO_UNVOLATILE_CONST_CAST)
+#  define LZO_UNVOLATILE_CONST_CAST(t,e)    ((t) ((const void *) ((volatile const void *) (e))))
 #endif
-#if !defined(LZO_SIZEOF_PTRDIFF_T)
-#if (LZO_ARCH_I086)
-#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
-#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
-#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
-#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
-#      define LZO_SIZEOF_PTRDIFF_T  4
-#    else
-#      define LZO_SIZEOF_PTRDIFF_T  2
-#    endif
-#  else
-#    error "LZO_MM"
+#if !defined(LZO_PCAST)
+#  if (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_PCAST(t,e)                  ((t) (e))
 #  endif
-#else
-#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
 #endif
+#if !defined(LZO_PCAST)
+#  define LZO_PCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(void *, e))
 #endif
-#if (LZO_ABI_NEUTRAL_ENDIAN)
-#  undef LZO_ABI_BIG_ENDIAN
-#  undef LZO_ABI_LITTLE_ENDIAN
-#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
-#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
-#  if (__LITTLE_ENDIAN__ == 1)
-#    define LZO_ABI_LITTLE_ENDIAN   1
-#  else
-#    define LZO_ABI_BIG_ENDIAN      1
+#if !defined(LZO_CCAST)
+#  if (LZO_HAVE_MM_HUGE_PTR)
+#    define LZO_CCAST(t,e)                  ((t) (e))
 #  endif
-#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
-#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
-#  define LZO_ABI_BIG_ENDIAN        1
-#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
-#  define LZO_ABI_LITTLE_ENDIAN     1
 #endif
+#if !defined(LZO_CCAST)
+#  define LZO_CCAST(t,e)                    LZO_STATIC_CAST(t, LZO_STATIC_CAST(const void *, e))
 #endif
-#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
-#  error "this should not happen"
+#if !defined(LZO_ICONV)
+#  define LZO_ICONV(t,e)                    LZO_STATIC_CAST(t, e)
 #endif
-#if (LZO_ABI_BIG_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "be"
-#elif (LZO_ABI_LITTLE_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "le"
-#elif (LZO_ABI_NEUTRAL_ENDIAN)
-#  define LZO_INFO_ABI_ENDIAN       "neutral"
+#if !defined(LZO_ICAST)
+#  define LZO_ICAST(t,e)                    LZO_STATIC_CAST(t, e)
 #endif
-#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
-#  define LZO_ABI_I8LP16         1
-#  define LZO_INFO_ABI_PM       "i8lp16"
-#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
-#  define LZO_ABI_ILP16         1
-#  define LZO_INFO_ABI_PM       "ilp16"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
-#  define LZO_ABI_ILP32         1
-#  define LZO_INFO_ABI_PM       "ilp32"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
-#  define LZO_ABI_LLP64         1
-#  define LZO_INFO_ABI_PM       "llp64"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
-#  define LZO_ABI_LP64          1
-#  define LZO_INFO_ABI_PM       "lp64"
-#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
-#  define LZO_ABI_ILP64         1
-#  define LZO_INFO_ABI_PM       "ilp64"
-#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
-#  define LZO_ABI_IP32L64       1
-#  define LZO_INFO_ABI_PM       "ip32l64"
+#if !defined(LZO_ITRUNC)
+#  define LZO_ITRUNC(t,e)                   LZO_STATIC_CAST(t, e)
 #endif
-#if !defined(__LZO_LIBC_OVERRIDE)
-#if (LZO_LIBC_NAKED)
-#  define LZO_INFO_LIBC         "naked"
-#elif (LZO_LIBC_FREESTANDING)
-#  define LZO_INFO_LIBC         "freestanding"
-#elif (LZO_LIBC_MOSTLY_FREESTANDING)
-#  define LZO_INFO_LIBC         "mfreestanding"
-#elif (LZO_LIBC_ISOC90)
-#  define LZO_INFO_LIBC         "isoc90"
-#elif (LZO_LIBC_ISOC99)
-#  define LZO_INFO_LIBC         "isoc99"
-#elif defined(__dietlibc__)
-#  define LZO_LIBC_DIETLIBC     1
-#  define LZO_INFO_LIBC         "dietlibc"
-#elif defined(_NEWLIB_VERSION)
-#  define LZO_LIBC_NEWLIB       1
-#  define LZO_INFO_LIBC         "newlib"
-#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
-#  if defined(__UCLIBC_SUBLEVEL__)
-#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
-#  else
-#    define LZO_LIBC_UCLIBC     0x00090bL
+#if !defined(__lzo_cte)
+#  if (LZO_CC_MSC || LZO_CC_WATCOMC)
+#    define __lzo_cte(e)            ((void)0,(e))
+#  elif 1
+#    define __lzo_cte(e)            ((void)0,(e))
 #  endif
-#  define LZO_INFO_LIBC         "uclibc"
-#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
-#  define LZO_INFO_LIBC         "glibc"
-#elif (LZO_CC_MWERKS) && defined(__MSL__)
-#  define LZO_LIBC_MSL          __MSL__
-#  define LZO_INFO_LIBC         "msl"
-#elif 1 && defined(__IAR_SYSTEMS_ICC__)
-#  define LZO_LIBC_ISOC90       1
-#  define LZO_INFO_LIBC         "isoc90"
-#else
-#  define LZO_LIBC_DEFAULT      1
-#  define LZO_INFO_LIBC         "default"
-#endif
-#endif
-#if !defined(__lzo_gnuc_extension__)
-#if (LZO_CC_GNUC >= 0x020800ul)
-#  define __lzo_gnuc_extension__    __extension__
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_gnuc_extension__    __extension__
-#else
-#  define __lzo_gnuc_extension__    /*empty*/
-#endif
-#endif
-#if !defined(__lzo_ua_volatile)
-#  define __lzo_ua_volatile     volatile
-#endif
-#if !defined(__lzo_alignof)
-#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
-#  define __lzo_alignof(e)      __alignof__(e)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
-#  define __lzo_alignof(e)      __alignof__(e)
-#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
-#  define __lzo_alignof(e)      __alignof(e)
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
-#  define __lzo_alignof(e)      __alignof__(e)
-#endif
-#endif
-#if defined(__lzo_alignof)
-#  define __lzo_HAVE_alignof 1
-#endif
-#if !defined(__lzo_constructor)
-#if (LZO_CC_GNUC >= 0x030400ul)
-#  define __lzo_constructor     __attribute__((__constructor__,__used__))
-#elif (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_constructor     __attribute__((__constructor__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_constructor     __attribute__((__constructor__))
 #endif
+#if !defined(__lzo_cte)
+#  define __lzo_cte(e)              (e)
 #endif
-#if defined(__lzo_constructor)
-#  define __lzo_HAVE_constructor 1
+#if !defined(LZO_BLOCK_BEGIN)
+#  define LZO_BLOCK_BEGIN           do {
+#  define LZO_BLOCK_END             } while __lzo_cte(0)
 #endif
-#if !defined(__lzo_destructor)
-#if (LZO_CC_GNUC >= 0x030400ul)
-#  define __lzo_destructor      __attribute__((__destructor__,__used__))
-#elif (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_destructor      __attribute__((__destructor__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_destructor      __attribute__((__destructor__))
+#if !defined(LZO_UNUSED)
+#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
+#    define LZO_UNUSED(var)         ((void) &var)
+#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
+#    define LZO_UNUSED(var)         if (&var) ; else
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030200ul))
+#    define LZO_UNUSED(var)         ((void) &var)
+#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#    define LZO_UNUSED(var)         ((void) var)
+#  elif (LZO_CC_MSC && (_MSC_VER < 900))
+#    define LZO_UNUSED(var)         if (&var) ; else
+#  elif (LZO_CC_KEILC)
+#    define LZO_UNUSED(var)         {extern int lzo_unused__[1-2*!(sizeof(var)>0)]; (void)lzo_unused__;}
+#  elif (LZO_CC_PACIFICC)
+#    define LZO_UNUSED(var)         ((void) sizeof(var))
+#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
+#    define LZO_UNUSED(var)         ((void) var)
+#  else
+#    define LZO_UNUSED(var)         ((void) &var)
+#  endif
 #endif
+#if !defined(LZO_UNUSED_FUNC)
+#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
+#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
+#    define LZO_UNUSED_FUNC(func)   if (func) ; else
+#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
+#    define LZO_UNUSED_FUNC(func)   ((void) &func)
+#  elif (LZO_CC_MSC && (_MSC_VER < 900))
+#    define LZO_UNUSED_FUNC(func)   if (func) ; else
+#  elif (LZO_CC_MSC)
+#    define LZO_UNUSED_FUNC(func)   ((void) &func)
+#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
+#    define LZO_UNUSED_FUNC(func)   {extern int lzo_unused__[1-2*!(sizeof((int)func)>0)]; (void)lzo_unused__;}
+#  else
+#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#  endif
 #endif
-#if defined(__lzo_destructor)
-#  define __lzo_HAVE_destructor 1
+#if !defined(LZO_UNUSED_LABEL)
+#  if (LZO_CC_CLANG >= 0x020800ul)
+#    define LZO_UNUSED_LABEL(l)     (__lzo_gnuc_extension__ ((void) ((const void *) &&l)))
+#  elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
+#    define LZO_UNUSED_LABEL(l)     if __lzo_cte(0) goto l
+#  else
+#    define LZO_UNUSED_LABEL(l)     switch (0) case 1:goto l
+#  endif
 #endif
-#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
-#  error "this should not happen"
+#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
+#  if 0
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
+#  elif 0 && (LZO_CC_GNUC)
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
+#  else
+#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
+#  endif
 #endif
 #if !defined(__lzo_inline)
 #if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
 #elif defined(__cplusplus)
 #  define __lzo_inline          inline
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
+#  define __lzo_inline          inline
 #elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
 #  define __lzo_inline          __inline
-#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
 #  define __lzo_inline          __inline__
 #elif (LZO_CC_DMC)
 #  define __lzo_inline          __inline
+#elif (LZO_CC_GHS)
+#  define __lzo_inline          __inline__
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_inline          __inline__
 #elif (LZO_CC_INTELC)
 #  define __lzo_inline          __inline
 #elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
 #  define __lzo_inline          __inline
 #elif (LZO_CC_MSC && (_MSC_VER >= 900))
 #  define __lzo_inline          __inline
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_inline          __inline__
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
-#  define __lzo_inline          inline
 #endif
 #endif
 #if defined(__lzo_inline)
+#  ifndef __lzo_HAVE_inline
 #  define __lzo_HAVE_inline 1
+#  endif
 #else
 #  define __lzo_inline          /*empty*/
 #endif
 #if !defined(__lzo_forceinline)
 #if (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
 #  define __lzo_forceinline     __forceinline
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1200))
 #  define __lzo_forceinline     __forceinline
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
 #endif
 #endif
 #if defined(__lzo_forceinline)
+#  ifndef __lzo_HAVE_forceinline
 #  define __lzo_HAVE_forceinline 1
+#  endif
 #else
-#  define __lzo_forceinline     /*empty*/
+#  define __lzo_forceinline     __lzo_inline
 #endif
 #if !defined(__lzo_noinline)
 #if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
 #  define __lzo_noinline        __attribute__((__noinline__,__used__))
 #elif (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_noinline        __attribute__((__noinline__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC)
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_noinline        __attribute__((__noinline__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
 #  define __lzo_noinline        __declspec(noinline)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
 #  define __lzo_noinline        __attribute__((__noinline__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_noinline        __attribute__((__noinline__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1300))
 #  define __lzo_noinline        __declspec(noinline)
@@ -1494,179 +1546,427 @@ extern "C" {
 #  else
 #    define __lzo_noinline      __declspec(noinline)
 #  endif
-#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_noinline        __attribute__((__noinline__))
+#elif (LZO_CC_SUNPROC >= 0x5100)
 #  define __lzo_noinline        __attribute__((__noinline__))
 #endif
 #endif
 #if defined(__lzo_noinline)
+#  ifndef __lzo_HAVE_noinline
 #  define __lzo_HAVE_noinline 1
+#  endif
 #else
 #  define __lzo_noinline        /*empty*/
 #endif
 #if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline)
-#  error "this should not happen"
+#  error "unexpected configuration - check your compiler defines"
 #endif
-#if !defined(__lzo_noreturn)
-#if (LZO_CC_GNUC >= 0x020700ul)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
-#  define __lzo_noreturn        __declspec(noreturn)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#  define __lzo_noreturn        __attribute__((__noreturn__))
-#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
-#  define __lzo_noreturn        __declspec(noreturn)
+#if !defined(__lzo_static_inline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_inline       __lzo_gnuc_extension__ static __lzo_inline
+#endif
+#endif
+#if !defined(__lzo_static_inline)
+#  define __lzo_static_inline       static __lzo_inline
+#endif
+#if !defined(__lzo_static_forceinline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_forceinline  __lzo_gnuc_extension__ static __lzo_forceinline
+#endif
+#endif
+#if !defined(__lzo_static_forceinline)
+#  define __lzo_static_forceinline  static __lzo_forceinline
+#endif
+#if !defined(__lzo_static_noinline)
+#if (LZO_CC_IBMC)
+#  define __lzo_static_noinline     __lzo_gnuc_extension__ static __lzo_noinline
+#endif
+#endif
+#if !defined(__lzo_static_noinline)
+#  define __lzo_static_noinline     static __lzo_noinline
+#endif
+#if !defined(__lzo_c99_extern_inline)
+#if defined(__GNUC_GNU_INLINE__)
+#  define __lzo_c99_extern_inline   __lzo_inline
+#elif defined(__GNUC_STDC_INLINE__)
+#  define __lzo_c99_extern_inline   extern __lzo_inline
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__-0 >= 199901L)
+#  define __lzo_c99_extern_inline   extern __lzo_inline
+#endif
+#if !defined(__lzo_c99_extern_inline) && (__lzo_HAVE_inline)
+#  define __lzo_c99_extern_inline   __lzo_inline
+#endif
+#endif
+#if defined(__lzo_c99_extern_inline)
+#  ifndef __lzo_HAVE_c99_extern_inline
+#  define __lzo_HAVE_c99_extern_inline 1
+#  endif
+#else
+#  define __lzo_c99_extern_inline   /*empty*/
+#endif
+#if !defined(__lzo_may_alias)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_CLANG >= 0x020900ul)
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1210)) && 0
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#elif (LZO_CC_PGI >= 0x0d0a00ul) && 0
+#  define __lzo_may_alias       __attribute__((__may_alias__))
+#endif
+#endif
+#if defined(__lzo_may_alias)
+#  ifndef __lzo_HAVE_may_alias
+#  define __lzo_HAVE_may_alias 1
+#  endif
+#else
+#  define __lzo_may_alias       /*empty*/
+#endif
+#if !defined(__lzo_noreturn)
+#if (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450))
+#  define __lzo_noreturn        __declspec(noreturn)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
+#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
+#  define __lzo_noreturn        __declspec(noreturn)
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_noreturn        __attribute__((__noreturn__))
 #endif
 #endif
 #if defined(__lzo_noreturn)
+#  ifndef __lzo_HAVE_noreturn
 #  define __lzo_HAVE_noreturn 1
+#  endif
 #else
 #  define __lzo_noreturn        /*empty*/
 #endif
 #if !defined(__lzo_nothrow)
 #if (LZO_CC_GNUC >= 0x030300ul)
 #  define __lzo_nothrow         __attribute__((__nothrow__))
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus)
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 450)) && defined(__cplusplus)
 #  define __lzo_nothrow         __declspec(nothrow)
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 900))
 #  define __lzo_nothrow         __attribute__((__nothrow__))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_nothrow         __attribute__((__nothrow__))
 #elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
 #  define __lzo_nothrow         __declspec(nothrow)
 #endif
 #endif
 #if defined(__lzo_nothrow)
+#  ifndef __lzo_HAVE_nothrow
 #  define __lzo_HAVE_nothrow 1
+#  endif
 #else
 #  define __lzo_nothrow         /*empty*/
 #endif
 #if !defined(__lzo_restrict)
 #if (LZO_CC_GNUC >= 0x030400ul)
 #  define __lzo_restrict        __restrict__
-#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
+#elif (LZO_CC_IBMC >= 800) && !defined(__cplusplus)
+#  define __lzo_restrict        __restrict__
+#elif (LZO_CC_IBMC >= 1210)
 #  define __lzo_restrict        __restrict__
-#elif (LZO_CC_CLANG || LZO_CC_LLVM)
+#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 600))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 600))
+#  define __lzo_restrict        __restrict__
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM)
 #  define __lzo_restrict        __restrict__
 #elif (LZO_CC_MSC && (_MSC_VER >= 1400))
 #  define __lzo_restrict        __restrict
+#elif (LZO_CC_PGI >= 0x0d0a00ul)
+#  define __lzo_restrict        __restrict__
 #endif
 #endif
 #if defined(__lzo_restrict)
+#  ifndef __lzo_HAVE_restrict
 #  define __lzo_HAVE_restrict 1
+#  endif
 #else
 #  define __lzo_restrict        /*empty*/
 #endif
+#if !defined(__lzo_alignof)
+#if (LZO_CC_ARMCC || LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_GHS) && !defined(__cplusplus)
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_IBMC >= 600)
+#  define __lzo_alignof(e)      (__lzo_gnuc_extension__ __alignof__(e))
+#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
+#  define __lzo_alignof(e)      __alignof__(e)
+#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_alignof(e)      __alignof(e)
+#elif (LZO_CC_SUNPROC >= 0x5100)
+#  define __lzo_alignof(e)      __alignof__(e)
+#endif
+#endif
+#if defined(__lzo_alignof)
+#  ifndef __lzo_HAVE_alignof
+#  define __lzo_HAVE_alignof 1
+#  endif
+#endif
+#if !defined(__lzo_struct_packed)
+#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
+#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
+#elif (LZO_CC_GNUC >= 0x030400ul) && !(LZO_CC_PCC_GNUC) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#  define __lzo_struct_packed(s)        struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__gcc_struct__,__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__gcc_struct__,__packed__));
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_struct_packed(s)        struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_struct_packed(s)        __lzo_gnuc_extension__ struct s {
+#  define __lzo_struct_packed_end()     } __attribute__((__packed__));
+#  define __lzo_struct_packed_ma_end()  } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_struct_packed(s)        __pragma(pack(push,1)) struct s {
+#  define __lzo_struct_packed_end()     } __pragma(pack(pop));
+#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
+#  define __lzo_struct_packed(s)        _Packed struct s {
+#  define __lzo_struct_packed_end()     };
+#endif
+#endif
+#if defined(__lzo_struct_packed) && !defined(__lzo_struct_packed_ma)
+#  define __lzo_struct_packed_ma(s)     __lzo_struct_packed(s)
+#endif
+#if defined(__lzo_struct_packed_end) && !defined(__lzo_struct_packed_ma_end)
+#  define __lzo_struct_packed_ma_end()  __lzo_struct_packed_end()
+#endif
+#if !defined(__lzo_byte_struct)
+#if defined(__lzo_struct_packed)
+#  define __lzo_byte_struct(s,n)        __lzo_struct_packed(s) unsigned char a[n]; __lzo_struct_packed_end()
+#  define __lzo_byte_struct_ma(s,n)     __lzo_struct_packed_ma(s) unsigned char a[n]; __lzo_struct_packed_ma_end()
+#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_PGI || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_byte_struct(s,n)        struct s { unsigned char a[n]; } __attribute__((__packed__));
+#  define __lzo_byte_struct_ma(s,n)     struct s { unsigned char a[n]; } __lzo_may_alias __attribute__((__packed__));
+#endif
+#endif
+#if defined(__lzo_byte_struct) &&  !defined(__lzo_byte_struct_ma)
+#  define __lzo_byte_struct_ma(s,n)     __lzo_byte_struct(s,n)
+#endif
+#if !defined(__lzo_struct_align16) && (__lzo_HAVE_alignof)
+#if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x030000ul))
+#elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_CILLY || LZO_CC_PCC)
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_struct_align16(s)       struct __declspec(align(16)) s {
+#  define __lzo_struct_align16_end()    };
+#  define __lzo_struct_align32(s)       struct __declspec(align(32)) s {
+#  define __lzo_struct_align32_end()    };
+#  define __lzo_struct_align64(s)       struct __declspec(align(64)) s {
+#  define __lzo_struct_align64_end()    };
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || (LZO_CC_IBMC >= 700) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_struct_align16(s)       struct s {
+#  define __lzo_struct_align16_end()    } __attribute__((__aligned__(16)));
+#  define __lzo_struct_align32(s)       struct s {
+#  define __lzo_struct_align32_end()    } __attribute__((__aligned__(32)));
+#  define __lzo_struct_align64(s)       struct s {
+#  define __lzo_struct_align64_end()    } __attribute__((__aligned__(64)));
+#endif
+#endif
+#if !defined(__lzo_union_um)
+#if   (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020700ul))
+#elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER < 810))
+#elif (LZO_CC_PCC && (LZO_CC_PCC < 0x010100ul))
+#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC < 0x5110)) && !defined(__cplusplus)
+#elif (LZO_CC_ARMCC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || (LZO_CC_PGI >= 0x0d0a00ul) || (LZO_CC_SUNPROC >= 0x5100))
+#  define __lzo_union_am(s)             union s {
+#  define __lzo_union_am_end()          } __lzo_may_alias;
+#  define __lzo_union_um(s)             union s {
+#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_IBMC >= 700)
+#  define __lzo_union_am(s)             __lzo_gnuc_extension__ union s {
+#  define __lzo_union_am_end()          } __lzo_may_alias;
+#  define __lzo_union_um(s)             __lzo_gnuc_extension__ union s {
+#  define __lzo_union_um_end()          } __lzo_may_alias __attribute__((__packed__));
+#elif (LZO_CC_INTELC_MSC) || (LZO_CC_MSC && (_MSC_VER >= 1300))
+#  define __lzo_union_um(s)             __pragma(pack(push,1)) union s {
+#  define __lzo_union_um_end()          } __pragma(pack(pop));
+#elif (LZO_CC_WATCOMC && (__WATCOMC__ >= 900))
+#  define __lzo_union_um(s)             _Packed union s {
+#  define __lzo_union_um_end()          };
+#endif
+#endif
+#if !defined(__lzo_union_am)
+#  define __lzo_union_am(s)             union s {
+#  define __lzo_union_am_end()          };
+#endif
+#if !defined(__lzo_constructor)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_constructor     __attribute__((__constructor__,__used__))
+#elif (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_constructor     __attribute__((__constructor__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
+#  define __lzo_constructor     __attribute__((__constructor__,__used__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_constructor     __attribute__((__constructor__))
+#endif
+#endif
+#if defined(__lzo_constructor)
+#  ifndef __lzo_HAVE_constructor
+#  define __lzo_HAVE_constructor 1
+#  endif
+#endif
+#if !defined(__lzo_destructor)
+#if (LZO_CC_GNUC >= 0x030400ul)
+#  define __lzo_destructor      __attribute__((__destructor__,__used__))
+#elif (LZO_CC_GNUC >= 0x020700ul)
+#  define __lzo_destructor      __attribute__((__destructor__))
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 800))
+#  define __lzo_destructor      __attribute__((__destructor__,__used__))
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define __lzo_destructor      __attribute__((__destructor__))
+#endif
+#endif
+#if defined(__lzo_destructor)
+#  ifndef __lzo_HAVE_destructor
+#  define __lzo_HAVE_destructor 1
+#  endif
+#endif
+#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
+#  error "unexpected configuration - check your compiler defines"
+#endif
 #if !defined(__lzo_likely) && !defined(__lzo_unlikely)
 #if (LZO_CC_GNUC >= 0x030200ul)
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
+#elif (LZO_CC_IBMC >= 1010)
+#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
+#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
 #elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
-#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
 #  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
 #  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
 #endif
 #endif
 #if defined(__lzo_likely)
+#  ifndef __lzo_HAVE_likely
 #  define __lzo_HAVE_likely 1
+#  endif
 #else
-#  define __lzo_likely(e)       (e)
+#  define __lzo_likely(e)           (e)
+#endif
+#if defined(__lzo_very_likely)
+#  ifndef __lzo_HAVE_very_likely
+#  define __lzo_HAVE_very_likely 1
+#  endif
+#else
+#  define __lzo_very_likely(e)      __lzo_likely(e)
 #endif
 #if defined(__lzo_unlikely)
+#  ifndef __lzo_HAVE_unlikely
 #  define __lzo_HAVE_unlikely 1
+#  endif
 #else
-#  define __lzo_unlikely(e)     (e)
+#  define __lzo_unlikely(e)         (e)
 #endif
-#if !defined(LZO_UNUSED)
-#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
-#    define LZO_UNUSED(var)         ((void) &var)
-#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
-#    define LZO_UNUSED(var)         if (&var) ; else
-#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#    define LZO_UNUSED(var)         ((void) var)
-#  elif (LZO_CC_MSC && (_MSC_VER < 900))
-#    define LZO_UNUSED(var)         if (&var) ; else
-#  elif (LZO_CC_KEILC)
-#    define LZO_UNUSED(var)         {extern int __lzo_unused[1-2*!(sizeof(var)>0)];}
-#  elif (LZO_CC_PACIFICC)
-#    define LZO_UNUSED(var)         ((void) sizeof(var))
-#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
-#    define LZO_UNUSED(var)         ((void) var)
-#  else
-#    define LZO_UNUSED(var)         ((void) &var)
+#if defined(__lzo_very_unlikely)
+#  ifndef __lzo_HAVE_very_unlikely
+#  define __lzo_HAVE_very_unlikely 1
 #  endif
+#else
+#  define __lzo_very_unlikely(e)    __lzo_unlikely(e)
 #endif
-#if !defined(LZO_UNUSED_FUNC)
-#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
-#    define LZO_UNUSED_FUNC(func)   ((void) func)
-#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
-#    define LZO_UNUSED_FUNC(func)   if (func) ; else
-#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
-#    define LZO_UNUSED_FUNC(func)   ((void) &func)
-#  elif (LZO_CC_MSC && (_MSC_VER < 900))
-#    define LZO_UNUSED_FUNC(func)   if (func) ; else
-#  elif (LZO_CC_MSC)
-#    define LZO_UNUSED_FUNC(func)   ((void) &func)
-#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
-#    define LZO_UNUSED_FUNC(func)   {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];}
+#if !defined(__lzo_loop_forever)
+#  if (LZO_CC_IBMC)
+#    define __lzo_loop_forever()    LZO_BLOCK_BEGIN for (;;) { ; } LZO_BLOCK_END
 #  else
-#    define LZO_UNUSED_FUNC(func)   ((void) func)
+#    define __lzo_loop_forever()    do { ; } while __lzo_cte(1)
 #  endif
 #endif
-#if !defined(LZO_UNUSED_LABEL)
-#  if (LZO_CC_WATCOMC) && defined(__cplusplus)
-#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
-#  elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
-#    define LZO_UNUSED_LABEL(l)     if (0) goto l
-#  else
-#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
-#  endif
+#if !defined(__lzo_unreachable)
+#if (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x020800ul)) && lzo_has_builtin(__builtin_unreachable)
+#  define __lzo_unreachable()       __builtin_unreachable();
+#elif (LZO_CC_GNUC >= 0x040500ul)
+#  define __lzo_unreachable()       __builtin_unreachable();
+#elif (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1300)) && 1
+#  define __lzo_unreachable()       __builtin_unreachable();
 #endif
-#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
+#endif
+#if defined(__lzo_unreachable)
+#  ifndef __lzo_HAVE_unreachable
+#  define __lzo_HAVE_unreachable 1
+#  endif
+#else
 #  if 0
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
-#  elif 0 && (LZO_CC_GNUC)
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
+#  define __lzo_unreachable()       ((void)0);
 #  else
-#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
+#  define __lzo_unreachable()       __lzo_loop_forever();
 #  endif
 #endif
-#if !defined(LZO_UNCONST_CAST)
-#  if 0 && defined(__cplusplus)
-#    define LZO_UNCONST_CAST(t,e)   (const_cast<t> (e))
-#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
-#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e))))))
+#if !defined(lzo_unused_funcs_impl)
+#  if 1 && (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
+#    define lzo_unused_funcs_impl(r,f)  static r __attribute__((__unused__)) f
+#  elif 1 && (LZO_CC_BORLANDC || LZO_CC_GNUC)
+#    define lzo_unused_funcs_impl(r,f)  static r f
 #  else
-#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((const void *) (e)))))
+#    define lzo_unused_funcs_impl(r,f)  __lzo_static_forceinline r f
 #  endif
 #endif
+#ifndef __LZO_CTA_NAME
+#if (LZO_CFG_USE_COUNTER)
+#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__COUNTER__)
+#else
+#  define __LZO_CTA_NAME(a)         LZO_PP_ECONCAT2(a,__LINE__)
+#endif
+#endif
 #if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
 #  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
 #  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1u-2*!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1u-2*!(e)]; LZO_EXTERN_C_END
 #  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-!(e)]; LZO_EXTERN_C_END
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG < 0x020900ul)) && defined(__cplusplus)
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN int __LZO_CTA_NAME(lzo_cta_f__)(int [1-2*!(e)]); LZO_EXTERN_C_END
+#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__)); LZO_EXTERN_C_END
 #  else
-#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-2*!(e)];
+#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  LZO_EXTERN_C_BEGIN extern int __LZO_CTA_NAME(lzo_cta__)[1-2*!(e)]; LZO_EXTERN_C_END
 #  endif
 #endif
 #if !defined(LZO_COMPILE_TIME_ASSERT)
 #  if (LZO_CC_AZTECC)
-#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-!(e)];}
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-!(e)];}
+#  elif (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030000ul))
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
 #  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
+#  elif (LZO_CC_GNUC) && defined(__CHECKER__) && defined(__SPARSE_CHECKER__)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {(void) (0/!!(e));}
+#  elif (LZO_CC_GNUC >= 0x040700ul) && (LZO_CFG_USE_COUNTER) && defined(__cplusplus)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {enum {__LZO_CTA_NAME(lzo_cta_e__)=1/!!(e)} __attribute__((__unused__));}
+#  elif (LZO_CC_GNUC >= 0x040700ul)
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
 #  elif (LZO_CC_MSC && (_MSC_VER < 900))
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
 #  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
 #    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
 #  else
-#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-2*!(e)];}
+#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __LZO_CTA_NAME(lzo_cta_t__)[1-2*!(e)];}
 #  endif
 #endif
+LZO_COMPILE_TIME_ASSERT_HEADER(1 == 1)
+#if defined(__cplusplus)
+extern "C" { LZO_COMPILE_TIME_ASSERT_HEADER(2 == 2) }
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(3 == 3)
 #if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64)
 #  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
 #  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
@@ -1730,69 +2030,637 @@ extern "C" {
 #  define __lzo_cdecl_va                __lzo_cdecl
 #endif
 #if !(LZO_CFG_NO_WINDOWS_H)
+#if !defined(LZO_HAVE_WINDOWS_H)
 #if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
 #  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
-#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
+#  elif ((LZO_OS_WIN32 && defined(__PW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x030000ul)))
 #  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
 #  else
 #    define LZO_HAVE_WINDOWS_H 1
 #  endif
 #endif
 #endif
-#if (LZO_ARCH_ALPHA)
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_AVOID_SHORT       1
-#  define LZO_OPT_AVOID_USHORT      1
-#elif (LZO_ARCH_AMD64)
-#  define LZO_OPT_AVOID_INT_INDEX   1
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
-#  define LZO_OPT_UNALIGNED64       1
-#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB)
-#elif (LZO_ARCH_ARM)
-#  define LZO_OPT_AVOID_SHORT       1
-#  define LZO_OPT_AVOID_USHORT      1
+#endif
+#ifndef LZO_SIZEOF_SHORT
+#if defined(SIZEOF_SHORT)
+#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
+#elif defined(__SIZEOF_SHORT__)
+#  define LZO_SIZEOF_SHORT          (__SIZEOF_SHORT__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_INT
+#if defined(SIZEOF_INT)
+#  define LZO_SIZEOF_INT            (SIZEOF_INT)
+#elif defined(__SIZEOF_INT__)
+#  define LZO_SIZEOF_INT            (__SIZEOF_INT__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_LONG
+#if defined(SIZEOF_LONG)
+#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
+#elif defined(__SIZEOF_LONG__)
+#  define LZO_SIZEOF_LONG           (__SIZEOF_LONG__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_LONG_LONG
+#if defined(SIZEOF_LONG_LONG)
+#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
+#elif defined(__SIZEOF_LONG_LONG__)
+#  define LZO_SIZEOF_LONG_LONG      (__SIZEOF_LONG_LONG__)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT16
+#if defined(SIZEOF___INT16)
+#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT32
+#if defined(SIZEOF___INT32)
+#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
+#endif
+#endif
+#ifndef LZO_SIZEOF___INT64
+#if defined(SIZEOF___INT64)
+#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
+#endif
+#endif
+#ifndef LZO_SIZEOF_VOID_P
+#if defined(SIZEOF_VOID_P)
+#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
+#elif defined(__SIZEOF_POINTER__)
+#  define LZO_SIZEOF_VOID_P         (__SIZEOF_POINTER__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_SIZE_T
+#if defined(SIZEOF_SIZE_T)
+#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
+#elif defined(__SIZEOF_SIZE_T__)
+#  define LZO_SIZEOF_SIZE_T         (__SIZEOF_SIZE_T__)
+#endif
+#endif
+#ifndef LZO_SIZEOF_PTRDIFF_T
+#if defined(SIZEOF_PTRDIFF_T)
+#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
+#elif defined(__SIZEOF_PTRDIFF_T__)
+#  define LZO_SIZEOF_PTRDIFF_T      (__SIZEOF_PTRDIFF_T__)
+#endif
+#endif
+#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
+#if !defined(LZO_SIZEOF_SHORT)
+#  if (LZO_ARCH_CRAY_PVP)
+#    define LZO_SIZEOF_SHORT        8
+#  elif (USHRT_MAX == LZO_0xffffL)
+#    define LZO_SIZEOF_SHORT        2
+#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
+#    define LZO_SIZEOF_SHORT        1
+#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
+#    define LZO_SIZEOF_SHORT        2
+#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
+#    define LZO_SIZEOF_SHORT        4
+#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
+#    define LZO_SIZEOF_SHORT        8
+#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
+#    define LZO_SIZEOF_SHORT        16
+#  else
+#    error "LZO_SIZEOF_SHORT"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SHORT == sizeof(short))
+#if !defined(LZO_SIZEOF_INT)
+#  if (LZO_ARCH_CRAY_PVP)
+#    define LZO_SIZEOF_INT          8
+#  elif (UINT_MAX == LZO_0xffffL)
+#    define LZO_SIZEOF_INT          2
+#  elif (UINT_MAX == LZO_0xffffffffL)
+#    define LZO_SIZEOF_INT          4
+#  elif (__LZO_LSR(UINT_MAX,7) == 1)
+#    define LZO_SIZEOF_INT          1
+#  elif (__LZO_LSR(UINT_MAX,15) == 1)
+#    define LZO_SIZEOF_INT          2
+#  elif (__LZO_LSR(UINT_MAX,31) == 1)
+#    define LZO_SIZEOF_INT          4
+#  elif (__LZO_LSR(UINT_MAX,63) == 1)
+#    define LZO_SIZEOF_INT          8
+#  elif (__LZO_LSR(UINT_MAX,127) == 1)
+#    define LZO_SIZEOF_INT          16
+#  else
+#    error "LZO_SIZEOF_INT"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_INT == sizeof(int))
+#if !defined(LZO_SIZEOF_LONG)
+#  if (ULONG_MAX == LZO_0xffffffffL)
+#    define LZO_SIZEOF_LONG         4
+#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
+#    define LZO_SIZEOF_LONG         1
+#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
+#    define LZO_SIZEOF_LONG         2
+#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
+#    define LZO_SIZEOF_LONG         4
+#  elif (__LZO_LSR(ULONG_MAX,39) == 1)
+#    define LZO_SIZEOF_LONG         5
+#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
+#    define LZO_SIZEOF_LONG         8
+#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
+#    define LZO_SIZEOF_LONG         16
+#  else
+#    error "LZO_SIZEOF_LONG"
+#  endif
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_LONG == sizeof(long))
+#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
+#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
+#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
+#    if (LZO_CC_GNUC >= 0x030300ul)
+#      if ((__LONG_MAX__-0) == (__LONG_LONG_MAX__-0))
+#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
+#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
+#        define LZO_SIZEOF_LONG_LONG      4
+#      endif
+#    endif
+#  endif
+#endif
+#endif
+#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
+#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
+#if (LZO_ARCH_I086 && LZO_CC_DMC)
+#elif (LZO_CC_CILLY) && defined(__GNUC__)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_OS_WIN64 || defined(_WIN64))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
+#  define LZO_SIZEOF___INT64        8
+#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_CC_GHS && defined(__LLONG_BIT) && ((__LLONG_BIT-0) == 64))
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && ((_INTEGRAL_MAX_BITS-0) == 64))
+#  define LZO_SIZEOF___INT64        8
+#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (defined(__vms) || defined(__VMS)) && ((__INITIAL_POINTER_SIZE-0) == 64)
+#  define LZO_SIZEOF_LONG_LONG      8
+#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
+#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+#  define LZO_SIZEOF_LONG_LONG      8
+#endif
+#endif
+#endif
+#if defined(__cplusplus) && (LZO_CC_GNUC)
+#  if (LZO_CC_GNUC < 0x020800ul)
+#    undef LZO_SIZEOF_LONG_LONG
+#  endif
+#endif
+#if (LZO_CFG_NO_LONG_LONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#elif defined(__NO_LONG_LONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#elif defined(_NO_LONGLONG)
+#  undef LZO_SIZEOF_LONG_LONG
+#endif
+#if !defined(LZO_WORDSIZE)
+#if (LZO_ARCH_ALPHA)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_AMD64)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_AVR)
+#  define LZO_WORDSIZE              1
+#elif (LZO_ARCH_H8300)
+#  if defined(__NORMAL_MODE__)
+#    define LZO_WORDSIZE            4
+#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
+#    define LZO_WORDSIZE            4
+#  else
+#    define LZO_WORDSIZE            2
+#  endif
+#elif (LZO_ARCH_I086)
+#  define LZO_WORDSIZE              2
+#elif (LZO_ARCH_IA64)
+#  define LZO_WORDSIZE              8
+#elif (LZO_ARCH_M16C)
+#  define LZO_WORDSIZE              2
+#elif (LZO_ARCH_SPU)
+#  define LZO_WORDSIZE              4
+#elif (LZO_ARCH_Z80)
+#  define LZO_WORDSIZE              1
+#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#  define LZO_WORDSIZE              8
+#elif (LZO_OS_OS400 || defined(__OS400__))
+#  define LZO_WORDSIZE              8
+#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
+#  define LZO_WORDSIZE              8
+#endif
+#endif
+#if !defined(LZO_SIZEOF_VOID_P)
+#if defined(__ILP32__) || defined(__ILP32) || defined(_ILP32)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
+#  define LZO_SIZEOF_VOID_P         4
+#elif defined(__ILP64__) || defined(__ILP64) || defined(_ILP64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(int)  == 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
+#  define LZO_SIZEOF_VOID_P         8
+#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 4)
+#  define LZO_SIZEOF_VOID_P         8
+#elif defined(__LP64__) || defined(__LP64) || defined(_LP64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(long) == 8)
+#  define LZO_SIZEOF_VOID_P         8
+#elif (LZO_ARCH_AVR)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_ARCH_H8300)
+#  if defined(__NORMAL_MODE__)
+#    define LZO_SIZEOF_VOID_P       2
+#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    define LZO_SIZEOF_VOID_P       2
+#  endif
+#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
+#  endif
+#elif (LZO_ARCH_I086)
+#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
+#    define LZO_SIZEOF_VOID_P       2
+#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    error "invalid LZO_ARCH_I086 memory model"
+#  endif
+#elif (LZO_ARCH_M16C)
+#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
+#    define LZO_SIZEOF_VOID_P       4
+#  else
+#    define LZO_SIZEOF_VOID_P       2
+#  endif
+#elif (LZO_ARCH_SPU)
+#  define LZO_SIZEOF_VOID_P         4
+#elif (LZO_ARCH_Z80)
+#  define LZO_SIZEOF_VOID_P         2
+#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
+#  define LZO_SIZEOF_VOID_P         4
+#elif (LZO_OS_OS400 || defined(__OS400__))
+#  if defined(__LLP64_IFC__)
+#    define LZO_SIZEOF_VOID_P       8
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
+#  else
+#    define LZO_SIZEOF_VOID_P       16
+#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_LONG
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_LONG
+#  endif
+#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
+#  define LZO_SIZEOF_VOID_P         8
+#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
+#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
+#endif
+#endif
+#if !defined(LZO_SIZEOF_VOID_P)
+#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
+#endif
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_VOID_P == sizeof(void *))
+#if !defined(LZO_SIZEOF_SIZE_T)
+#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
+#  define LZO_SIZEOF_SIZE_T         2
+#endif
+#endif
+#if !defined(LZO_SIZEOF_SIZE_T)
+#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
+#endif
+#if defined(offsetof)
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_SIZE_T == sizeof(size_t))
+#endif
+#if !defined(LZO_SIZEOF_PTRDIFF_T)
+#if (LZO_ARCH_I086)
+#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
+#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
+#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
+#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
+#      define LZO_SIZEOF_PTRDIFF_T  4
+#    else
+#      define LZO_SIZEOF_PTRDIFF_T  2
+#    endif
+#  else
+#    error "invalid LZO_ARCH_I086 memory model"
+#  endif
+#endif
+#endif
+#if !defined(LZO_SIZEOF_PTRDIFF_T)
+#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
+#endif
+#if defined(offsetof)
+LZO_COMPILE_TIME_ASSERT_HEADER(LZO_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
+#endif
+#if !defined(LZO_WORDSIZE)
+#  define LZO_WORDSIZE              LZO_SIZEOF_VOID_P
+#endif
+#if (LZO_ABI_NEUTRAL_ENDIAN)
+#  undef LZO_ABI_BIG_ENDIAN
+#  undef LZO_ABI_LITTLE_ENDIAN
+#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
+#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390 || LZO_ARCH_SPU)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
+#  if (__LITTLE_ENDIAN__ == 1)
+#    define LZO_ABI_LITTLE_ENDIAN   1
+#  else
+#    define LZO_ABI_BIG_ENDIAN      1
+#  endif
+#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARM_BIG_ENDIAN) && ((__ARM_BIG_ENDIAN)+0)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM && LZO_CC_ARMCC_ARMCC)
+#  if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
+#    error "unexpected configuration - check your compiler defines"
+#  elif defined(__BIG_ENDIAN)
+#    define LZO_ABI_BIG_ENDIAN      1
+#  else
+#    define LZO_ABI_LITTLE_ENDIAN   1
+#  endif
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__ARM_BIG_ENDIAN) && ((__ARM_BIG_ENDIAN)+0)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EB__) && !defined(__AARCH64EL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_ARM64) && defined(__AARCH64EL__) && !defined(__AARCH64EB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
+#  define LZO_ABI_BIG_ENDIAN        1
+#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
+#  define LZO_ABI_LITTLE_ENDIAN     1
+#endif
+#endif
+#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
+#  error "unexpected configuration - check your compiler defines"
+#endif
+#if (LZO_ABI_BIG_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "be"
+#elif (LZO_ABI_LITTLE_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "le"
+#elif (LZO_ABI_NEUTRAL_ENDIAN)
+#  define LZO_INFO_ABI_ENDIAN       "neutral"
+#endif
+#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
+#  define LZO_ABI_I8LP16         1
+#  define LZO_INFO_ABI_PM       "i8lp16"
+#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
+#  define LZO_ABI_ILP16         1
+#  define LZO_INFO_ABI_PM       "ilp16"
+#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_LP32          1
+#  define LZO_INFO_ABI_PM       "lp32"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_ILP32         1
+#  define LZO_INFO_ABI_PM       "ilp32"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
+#  define LZO_ABI_LLP64         1
+#  define LZO_INFO_ABI_PM       "llp64"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
+#  define LZO_ABI_LP64          1
+#  define LZO_INFO_ABI_PM       "lp64"
+#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
+#  define LZO_ABI_ILP64         1
+#  define LZO_INFO_ABI_PM       "ilp64"
+#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
+#  define LZO_ABI_IP32L64       1
+#  define LZO_INFO_ABI_PM       "ip32l64"
+#endif
+#if 0
+#elif !defined(__LZO_LIBC_OVERRIDE)
+#if (LZO_LIBC_NAKED)
+#  define LZO_INFO_LIBC         "naked"
+#elif (LZO_LIBC_FREESTANDING)
+#  define LZO_INFO_LIBC         "freestanding"
+#elif (LZO_LIBC_MOSTLY_FREESTANDING)
+#  define LZO_INFO_LIBC         "mfreestanding"
+#elif (LZO_LIBC_ISOC90)
+#  define LZO_INFO_LIBC         "isoc90"
+#elif (LZO_LIBC_ISOC99)
+#  define LZO_INFO_LIBC         "isoc99"
+#elif (LZO_CC_ARMCC_ARMCC) && defined(__ARMCLIB_VERSION)
+#  define LZO_LIBC_ISOC90       1
+#  define LZO_INFO_LIBC         "isoc90"
+#elif defined(__dietlibc__)
+#  define LZO_LIBC_DIETLIBC     1
+#  define LZO_INFO_LIBC         "dietlibc"
+#elif defined(_NEWLIB_VERSION)
+#  define LZO_LIBC_NEWLIB       1
+#  define LZO_INFO_LIBC         "newlib"
+#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
+#  if defined(__UCLIBC_SUBLEVEL__)
+#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + (__UCLIBC_MINOR__-0) * 0x100 + (__UCLIBC_SUBLEVEL__-0))
+#  else
+#    define LZO_LIBC_UCLIBC     0x00090bL
+#  endif
+#  define LZO_INFO_LIBC         "uc" "libc"
+#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + (__GLIBC_MINOR__-0) * 0x100)
+#  define LZO_INFO_LIBC         "glibc"
+#elif (LZO_CC_MWERKS) && defined(__MSL__)
+#  define LZO_LIBC_MSL          __MSL__
+#  define LZO_INFO_LIBC         "msl"
+#elif 1 && defined(__IAR_SYSTEMS_ICC__)
+#  define LZO_LIBC_ISOC90       1
+#  define LZO_INFO_LIBC         "isoc90"
+#else
+#  define LZO_LIBC_DEFAULT      1
+#  define LZO_INFO_LIBC         "default"
+#endif
+#endif
+#if (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
+#  define LZO_ASM_SYNTAX_MSC 1
+#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
+#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
+#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
+#  define LZO_ASM_SYNTAX_GNUC 1
+#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
+#  define LZO_ASM_SYNTAX_GNUC 1
+#elif (LZO_CC_GNUC)
+#  define LZO_ASM_SYNTAX_GNUC 1
+#endif
+#if (LZO_ASM_SYNTAX_GNUC)
+#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
+#  define __LZO_ASM_CLOBBER                     "ax"
+#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
+#elif (LZO_CC_INTELC && (__INTEL_COMPILER < 1000))
+#  define __LZO_ASM_CLOBBER                     "memory"
+#  define __LZO_ASM_CLOBBER_LIST_CC             /*empty*/
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "memory"
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
+#else
+#  define __LZO_ASM_CLOBBER                     "cc", "memory"
+#  define __LZO_ASM_CLOBBER_LIST_CC             : "cc"
+#  define __LZO_ASM_CLOBBER_LIST_CC_MEMORY      : "cc", "memory"
+#  define __LZO_ASM_CLOBBER_LIST_EMPTY          /*empty*/
+#endif
+#endif
+#if (LZO_ARCH_ALPHA)
+#  define LZO_OPT_AVOID_UINT_INDEX          1
+#elif (LZO_ARCH_AMD64)
+#  define LZO_OPT_AVOID_INT_INDEX           1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED64
+#  define LZO_OPT_UNALIGNED64               1
+#  endif
+#elif (LZO_ARCH_ARM)
+#  if defined(__ARM_FEATURE_UNALIGNED)
+#   if ((__ARM_FEATURE_UNALIGNED)+0)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#   endif
+#  elif 1 && (LZO_ARCH_ARM_THUMB2)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  elif 1 && defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM)+0 >= 7)
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  elif 1 && defined(__TARGET_ARCH_ARM) && ((__TARGET_ARCH_ARM)+0 >= 6) && (defined(__TARGET_PROFILE_A) || defined(__TARGET_PROFILE_R))
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#  endif
+#elif (LZO_ARCH_ARM64)
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED64
+#  define LZO_OPT_UNALIGNED64               1
+#  endif
 #elif (LZO_ARCH_CRIS)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
 #elif (LZO_ARCH_I386)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
 #elif (LZO_ARCH_IA64)
-#  define LZO_OPT_AVOID_INT_INDEX   1
-#  define LZO_OPT_AVOID_UINT_INDEX  1
-#  define LZO_OPT_PREFER_POSTINC    1
+#  define LZO_OPT_AVOID_INT_INDEX           1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
+#  define LZO_OPT_PREFER_POSTINC            1
 #elif (LZO_ARCH_M68K)
-#  define LZO_OPT_PREFER_POSTINC    1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_POSTINC            1
+#  define LZO_OPT_PREFER_PREDEC             1
 #  if defined(__mc68020__) && !defined(__mcoldfire__)
-#    define LZO_OPT_UNALIGNED16     1
-#    define LZO_OPT_UNALIGNED32     1
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
 #  endif
 #elif (LZO_ARCH_MIPS)
-#  define LZO_OPT_AVOID_UINT_INDEX  1
+#  define LZO_OPT_AVOID_UINT_INDEX          1
 #elif (LZO_ARCH_POWERPC)
-#  define LZO_OPT_PREFER_PREINC     1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_PREINC             1
+#  define LZO_OPT_PREFER_PREDEC             1
 #  if (LZO_ABI_BIG_ENDIAN)
-#    define LZO_OPT_UNALIGNED16     1
-#    define LZO_OPT_UNALIGNED32     1
+#    ifndef LZO_OPT_UNALIGNED16
+#    define LZO_OPT_UNALIGNED16             1
+#    endif
+#    ifndef LZO_OPT_UNALIGNED32
+#    define LZO_OPT_UNALIGNED32             1
+#    endif
+#    if (LZO_WORDSIZE == 8)
+#      ifndef LZO_OPT_UNALIGNED64
+#      define LZO_OPT_UNALIGNED64           1
+#      endif
+#    endif
 #  endif
 #elif (LZO_ARCH_S390)
-#  define LZO_OPT_UNALIGNED16       1
-#  define LZO_OPT_UNALIGNED32       1
-#  if (LZO_SIZEOF_SIZE_T == 8)
-#    define LZO_OPT_UNALIGNED64     1
+#  ifndef LZO_OPT_UNALIGNED16
+#  define LZO_OPT_UNALIGNED16               1
+#  endif
+#  ifndef LZO_OPT_UNALIGNED32
+#  define LZO_OPT_UNALIGNED32               1
+#  endif
+#  if (LZO_WORDSIZE == 8)
+#    ifndef LZO_OPT_UNALIGNED64
+#    define LZO_OPT_UNALIGNED64             1
+#    endif
 #  endif
 #elif (LZO_ARCH_SH)
-#  define LZO_OPT_PREFER_POSTINC    1
-#  define LZO_OPT_PREFER_PREDEC     1
+#  define LZO_OPT_PREFER_POSTINC            1
+#  define LZO_OPT_PREFER_PREDEC             1
 #endif
 #ifndef LZO_CFG_NO_INLINE_ASM
-#if (LZO_CC_LLVM)
+#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
 #  define LZO_CFG_NO_INLINE_ASM 1
+#elif (LZO_CC_LLVM)
+#  define LZO_CFG_NO_INLINE_ASM 1
+#endif
 #endif
+#if (LZO_CFG_NO_INLINE_ASM)
+#  undef LZO_ASM_SYNTAX_MSC
+#  undef LZO_ASM_SYNTAX_GNUC
+#  undef __LZO_ASM_CLOBBER
+#  undef __LZO_ASM_CLOBBER_LIST_CC
+#  undef __LZO_ASM_CLOBBER_LIST_CC_MEMORY
+#  undef __LZO_ASM_CLOBBER_LIST_EMPTY
 #endif
 #ifndef LZO_CFG_NO_UNALIGNED
 #if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
@@ -1804,25 +2672,6 @@ extern "C" {
 #  undef LZO_OPT_UNALIGNED32
 #  undef LZO_OPT_UNALIGNED64
 #endif
-#if (LZO_CFG_NO_INLINE_ASM)
-#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
-#  define LZO_ASM_SYNTAX_MSC 1
-#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
-#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
-#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
-#  define LZO_ASM_SYNTAX_GNUC 1
-#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
-#  define LZO_ASM_SYNTAX_GNUC 1
-#endif
-#if (LZO_ASM_SYNTAX_GNUC)
-#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
-#  define __LZO_ASM_CLOBBER         "ax"
-#elif (LZO_CC_INTELC)
-#  define __LZO_ASM_CLOBBER         "memory"
-#else
-#  define __LZO_ASM_CLOBBER         "cc", "memory"
-#endif
-#endif
 #if defined(__LZO_INFOSTR_MM)
 #elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
 #  define __LZO_INFOSTR_MM          ""
@@ -1866,6 +2715,439 @@ extern "C" {
 #define LZO_INFO_STRING \
     LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
     " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
+#if !(LZO_CFG_SKIP_LZO_TYPES)
+#if (!(LZO_SIZEOF_SHORT+0 > 0 && LZO_SIZEOF_INT+0 > 0 && LZO_SIZEOF_LONG+0 > 0))
+#  error "missing defines for sizes"
+#endif
+#if (!(LZO_SIZEOF_PTRDIFF_T+0 > 0 && LZO_SIZEOF_SIZE_T+0 > 0 && LZO_SIZEOF_VOID_P+0 > 0))
+#  error "missing defines for sizes"
+#endif
+#define LZO_TYPEOF_CHAR             1u
+#define LZO_TYPEOF_SHORT            2u
+#define LZO_TYPEOF_INT              3u
+#define LZO_TYPEOF_LONG             4u
+#define LZO_TYPEOF_LONG_LONG        5u
+#define LZO_TYPEOF___INT8           17u
+#define LZO_TYPEOF___INT16          18u
+#define LZO_TYPEOF___INT32          19u
+#define LZO_TYPEOF___INT64          20u
+#define LZO_TYPEOF___INT128         21u
+#define LZO_TYPEOF___INT256         22u
+#define LZO_TYPEOF___MODE_QI        33u
+#define LZO_TYPEOF___MODE_HI        34u
+#define LZO_TYPEOF___MODE_SI        35u
+#define LZO_TYPEOF___MODE_DI        36u
+#define LZO_TYPEOF___MODE_TI        37u
+#define LZO_TYPEOF_CHAR_P           129u
+#if !defined(lzo_llong_t)
+#if (LZO_SIZEOF_LONG_LONG+0 > 0)
+__lzo_gnuc_extension__ typedef long long lzo_llong_t__;
+__lzo_gnuc_extension__ typedef unsigned long long lzo_ullong_t__;
+#  define lzo_llong_t               lzo_llong_t__
+#  define lzo_ullong_t              lzo_ullong_t__
+#endif
+#endif
+#if !defined(lzo_int16e_t)
+#if (LZO_SIZEOF_LONG == 2)
+#  define lzo_int16e_t              long
+#  define lzo_uint16e_t             unsigned long
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_INT == 2)
+#  define lzo_int16e_t              int
+#  define lzo_uint16e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == 2)
+#  define lzo_int16e_t              short int
+#  define lzo_uint16e_t             unsigned short int
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF_SHORT
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_HI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM)
+   typedef int lzo_int16e_hi_t__ __attribute__((__mode__(__HI__)));
+   typedef unsigned int lzo_uint16e_hi_t__ __attribute__((__mode__(__HI__)));
+#  define lzo_int16e_t              lzo_int16e_hi_t__
+#  define lzo_uint16e_t             lzo_uint16e_hi_t__
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF___MODE_HI
+#elif (LZO_SIZEOF___INT16 == 2)
+#  define lzo_int16e_t              __int16
+#  define lzo_uint16e_t             unsigned __int16
+#  define LZO_TYPEOF_LZO_INT16E_T   LZO_TYPEOF___INT16
+#else
+#endif
+#endif
+#if defined(lzo_int16e_t)
+#  define LZO_SIZEOF_LZO_INT16E_T   2
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == 2)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16e_t) == LZO_SIZEOF_LZO_INT16E_T)
+#endif
+#if !defined(lzo_int32e_t)
+#if (LZO_SIZEOF_LONG == 4)
+#  define lzo_int32e_t              long int
+#  define lzo_uint32e_t             unsigned long int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_INT == 4)
+#  define lzo_int32e_t              int
+#  define lzo_uint32e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == 4)
+#  define lzo_int32e_t              short int
+#  define lzo_uint32e_t             unsigned short int
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_SHORT
+#elif (LZO_SIZEOF_LONG_LONG == 4)
+#  define lzo_int32e_t              lzo_llong_t
+#  define lzo_uint32e_t             lzo_ullong_t
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF_LONG_LONG
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x025f00ul) || LZO_CC_LLVM) && (__INT_MAX__+0 > 2147483647L)
+   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
+   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
+#  define lzo_int32e_t              lzo_int32e_si_t__
+#  define lzo_uint32e_t             lzo_uint32e_si_t__
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___MODE_SI
+#elif 1 && !(LZO_CFG_TYPE_NO_MODE_SI) && (LZO_CC_GNUC >= 0x025f00ul) && defined(__AVR__) && (__LONG_MAX__+0 == 32767L)
+   typedef int lzo_int32e_si_t__ __attribute__((__mode__(__SI__)));
+   typedef unsigned int lzo_uint32e_si_t__ __attribute__((__mode__(__SI__)));
+#  define lzo_int32e_t              lzo_int32e_si_t__
+#  define lzo_uint32e_t             lzo_uint32e_si_t__
+#  define LZO_INT32_C(c)            (c##LL)
+#  define LZO_UINT32_C(c)           (c##ULL)
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___MODE_SI
+#elif (LZO_SIZEOF___INT32 == 4)
+#  define lzo_int32e_t              __int32
+#  define lzo_uint32e_t             unsigned __int32
+#  define LZO_TYPEOF_LZO_INT32E_T   LZO_TYPEOF___INT32
+#else
+#endif
+#endif
+#if defined(lzo_int32e_t)
+#  define LZO_SIZEOF_LZO_INT32E_T   4
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32e_t) == LZO_SIZEOF_LZO_INT32E_T)
+#endif
+#if !defined(lzo_int64e_t)
+#if (LZO_SIZEOF___INT64 == 8)
+#  if (LZO_CC_BORLANDC) && !(LZO_CFG_TYPE_PREFER___INT64)
+#    define LZO_CFG_TYPE_PREFER___INT64 1
+#  endif
+#endif
+#if (LZO_SIZEOF_INT == 8) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_int64e_t              int
+#  define lzo_uint64e_t             unsigned int
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_LONG == 8)
+#  define lzo_int64e_t              long int
+#  define lzo_uint64e_t             unsigned long int
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_LONG_LONG == 8) && !(LZO_CFG_TYPE_PREFER___INT64)
+#  define lzo_int64e_t              lzo_llong_t
+#  define lzo_uint64e_t             lzo_ullong_t
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF_LONG_LONG
+#  if (LZO_CC_BORLANDC)
+#    define LZO_INT64_C(c)          ((c) + 0ll)
+#    define LZO_UINT64_C(c)         ((c) + 0ull)
+#  elif 0
+#    define LZO_INT64_C(c)          (__lzo_gnuc_extension__ (c##LL))
+#    define LZO_UINT64_C(c)         (__lzo_gnuc_extension__ (c##ULL))
+#  else
+#    define LZO_INT64_C(c)          (c##LL)
+#    define LZO_UINT64_C(c)         (c##ULL)
+#  endif
+#elif (LZO_SIZEOF___INT64 == 8)
+#  define lzo_int64e_t              __int64
+#  define lzo_uint64e_t             unsigned __int64
+#  define LZO_TYPEOF_LZO_INT64E_T   LZO_TYPEOF___INT64
+#  if (LZO_CC_BORLANDC)
+#    define LZO_INT64_C(c)          ((c) + 0i64)
+#    define LZO_UINT64_C(c)         ((c) + 0ui64)
+#  else
+#    define LZO_INT64_C(c)          (c##i64)
+#    define LZO_UINT64_C(c)         (c##ui64)
+#  endif
+#else
+#endif
+#endif
+#if defined(lzo_int64e_t)
+#  define LZO_SIZEOF_LZO_INT64E_T   8
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64e_t) == LZO_SIZEOF_LZO_INT64E_T)
+#endif
+#if !defined(lzo_int32l_t)
+#if defined(lzo_int32e_t)
+#  define lzo_int32l_t              lzo_int32e_t
+#  define lzo_uint32l_t             lzo_uint32e_t
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LZO_INT32E_T
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_TYPEOF_LZO_INT32E_T
+#elif (LZO_SIZEOF_INT >= 4) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_int32l_t              int
+#  define lzo_uint32l_t             unsigned int
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_SIZEOF_INT
+#elif (LZO_SIZEOF_LONG >= 4)
+#  define lzo_int32l_t              long int
+#  define lzo_uint32l_t             unsigned long int
+#  define LZO_SIZEOF_LZO_INT32L_T   LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_INT32L_T   LZO_SIZEOF_LONG
+#else
+#  error "lzo_int32l_t"
+#endif
+#endif
+#if 1
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) >= 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32l_t) == LZO_SIZEOF_LZO_INT32L_T)
+#endif
+#if !defined(lzo_int64l_t)
+#if defined(lzo_int64e_t)
+#  define lzo_int64l_t              lzo_int64e_t
+#  define lzo_uint64l_t             lzo_uint64e_t
+#  define LZO_SIZEOF_LZO_INT64L_T   LZO_SIZEOF_LZO_INT64E_T
+#  define LZO_TYPEOF_LZO_INT64L_T   LZO_TYPEOF_LZO_INT64E_T
+#else
+#endif
+#endif
+#if defined(lzo_int64l_t)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) >= 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64l_t) == LZO_SIZEOF_LZO_INT64L_T)
+#endif
+#if !defined(lzo_int32f_t)
+#if (LZO_SIZEOF_SIZE_T >= 8)
+#  define lzo_int32f_t              lzo_int64l_t
+#  define lzo_uint32f_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INT32F_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#  define lzo_int32f_t              lzo_int32l_t
+#  define lzo_uint32f_t             lzo_uint32l_t
+#  define LZO_SIZEOF_LZO_INT32F_T   LZO_SIZEOF_LZO_INT32L_T
+#  define LZO_TYPEOF_LZO_INT32F_T   LZO_TYPEOF_LZO_INT32L_T
+#endif
+#endif
+#if 1
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) >= 4)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32f_t) == LZO_SIZEOF_LZO_INT32F_T)
+#endif
+#if !defined(lzo_int64f_t)
+#if defined(lzo_int64l_t)
+#  define lzo_int64f_t              lzo_int64l_t
+#  define lzo_uint64f_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INT64F_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INT64F_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#endif
+#endif
+#if defined(lzo_int64f_t)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) >= 8)
+   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64f_t) == LZO_SIZEOF_LZO_INT64F_T)
+#endif
+#if !defined(lzo_intptr_t)
+#if 1 && (LZO_OS_OS400 && (LZO_SIZEOF_VOID_P == 16))
+#  define __LZO_INTPTR_T_IS_POINTER 1
+   typedef char *                   lzo_intptr_t;
+   typedef char *                   lzo_uintptr_t;
+#  define lzo_intptr_t              lzo_intptr_t
+#  define lzo_uintptr_t             lzo_uintptr_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_VOID_P
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_CHAR_P
+#elif (LZO_CC_MSC && (_MSC_VER >= 1300) && (LZO_SIZEOF_VOID_P == 4) && (LZO_SIZEOF_INT == 4))
+   typedef __w64 int                lzo_intptr_t;
+   typedef __w64 unsigned int       lzo_uintptr_t;
+#  define lzo_intptr_t              lzo_intptr_t
+#  define lzo_uintptr_t             lzo_uintptr_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_SHORT == LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT > LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              short
+#  define lzo_uintptr_t             unsigned short
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_SHORT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_SHORT
+#elif (LZO_SIZEOF_INT >= LZO_SIZEOF_VOID_P) && (LZO_SIZEOF_INT < LZO_SIZEOF_LONG)
+#  define lzo_intptr_t              int
+#  define lzo_uintptr_t             unsigned int
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_INT
+#elif (LZO_SIZEOF_LONG >= LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              long
+#  define lzo_uintptr_t             unsigned long
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_LONG
+#elif (LZO_SIZEOF_LZO_INT64L_T >= LZO_SIZEOF_VOID_P)
+#  define lzo_intptr_t              lzo_int64l_t
+#  define lzo_uintptr_t             lzo_uint64l_t
+#  define LZO_SIZEOF_LZO_INTPTR_T   LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_INTPTR_T   LZO_TYPEOF_LZO_INT64L_T
+#else
+#  error "lzo_intptr_t"
+#endif
+#endif
+#if 1
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) >= sizeof(void *))
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_intptr_t) == sizeof(lzo_uintptr_t))
+#endif
+#if !defined(lzo_word_t)
+#if defined(LZO_WORDSIZE) && (LZO_WORDSIZE+0 > 0)
+#if (LZO_WORDSIZE == LZO_SIZEOF_LZO_INTPTR_T) && !(__LZO_INTPTR_T_IS_POINTER)
+#  define lzo_word_t                lzo_uintptr_t
+#  define lzo_sword_t               lzo_intptr_t
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INTPTR_T
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_LZO_INTPTR_T
+#elif (LZO_WORDSIZE == LZO_SIZEOF_LONG)
+#  define lzo_word_t                unsigned long
+#  define lzo_sword_t               long
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LONG
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_LONG
+#elif (LZO_WORDSIZE == LZO_SIZEOF_INT)
+#  define lzo_word_t                unsigned int
+#  define lzo_sword_t               int
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_INT
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_INT
+#elif (LZO_WORDSIZE == LZO_SIZEOF_SHORT)
+#  define lzo_word_t                unsigned short
+#  define lzo_sword_t               short
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_SHORT
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_SHORT
+#elif (LZO_WORDSIZE == 1)
+#  define lzo_word_t                unsigned char
+#  define lzo_sword_t               signed char
+#  define LZO_SIZEOF_LZO_WORD_T     1
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF_CHAR
+#elif (LZO_WORDSIZE == LZO_SIZEOF_LZO_INT64L_T)
+#  define lzo_word_t                lzo_uint64l_t
+#  define lzo_sword_t               lzo_int64l_t
+#  define LZO_SIZEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INT64L_T
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_SIZEOF_LZO_INT64L_T
+#elif (LZO_ARCH_SPU) && (LZO_CC_GNUC)
+#if 0
+   typedef unsigned lzo_word_t  __attribute__((__mode__(__V16QI__)));
+   typedef int      lzo_sword_t __attribute__((__mode__(__V16QI__)));
+#  define lzo_word_t                lzo_word_t
+#  define lzo_sword_t               lzo_sword_t
+#  define LZO_SIZEOF_LZO_WORD_T     16
+#  define LZO_TYPEOF_LZO_WORD_T     LZO_TYPEOF___MODE_V16QI
+#endif
+#else
+#  error "lzo_word_t"
+#endif
+#endif
+#endif
+#if 1 && defined(lzo_word_t)
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_word_t)  == LZO_WORDSIZE)
+    LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_sword_t) == LZO_WORDSIZE)
+#endif
+#if 1
+#define lzo_int8_t                  signed char
+#define lzo_uint8_t                 unsigned char
+#define LZO_SIZEOF_LZO_INT8_T       1
+#define LZO_TYPEOF_LZO_INT8_T       LZO_TYPEOF_CHAR
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == 1)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t) == sizeof(lzo_uint8_t))
+#endif
+#if defined(lzo_int16e_t)
+#define lzo_int16_t                 lzo_int16e_t
+#define lzo_uint16_t                lzo_uint16e_t
+#define LZO_SIZEOF_LZO_INT16_T      LZO_SIZEOF_LZO_INT16E_T
+#define LZO_TYPEOF_LZO_INT16_T      LZO_TYPEOF_LZO_INT16E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == 2)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t) == sizeof(lzo_uint16_t))
+#endif
+#if defined(lzo_int32e_t)
+#define lzo_int32_t                 lzo_int32e_t
+#define lzo_uint32_t                lzo_uint32e_t
+#define LZO_SIZEOF_LZO_INT32_T      LZO_SIZEOF_LZO_INT32E_T
+#define LZO_TYPEOF_LZO_INT32_T      LZO_TYPEOF_LZO_INT32E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t) == sizeof(lzo_uint32_t))
+#endif
+#if defined(lzo_int64e_t)
+#define lzo_int64_t                 lzo_int64e_t
+#define lzo_uint64_t                lzo_uint64e_t
+#define LZO_SIZEOF_LZO_INT64_T      LZO_SIZEOF_LZO_INT64E_T
+#define LZO_TYPEOF_LZO_INT64_T      LZO_TYPEOF_LZO_INT64E_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t) == sizeof(lzo_uint64_t))
+#endif
+#if 1
+#define lzo_int_least32_t           lzo_int32l_t
+#define lzo_uint_least32_t          lzo_uint32l_t
+#define LZO_SIZEOF_LZO_INT_LEAST32_T LZO_SIZEOF_LZO_INT32L_T
+#define LZO_TYPEOF_LZO_INT_LEAST32_T LZO_TYPEOF_LZO_INT32L_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) >= 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least32_t) == sizeof(lzo_uint_least32_t))
+#endif
+#if defined(lzo_int64l_t)
+#define lzo_int_least64_t           lzo_int64l_t
+#define lzo_uint_least64_t          lzo_uint64l_t
+#define LZO_SIZEOF_LZO_INT_LEAST64_T LZO_SIZEOF_LZO_INT64L_T
+#define LZO_TYPEOF_LZO_INT_LEAST64_T LZO_TYPEOF_LZO_INT64L_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) >= 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_least64_t) == sizeof(lzo_uint_least64_t))
+#endif
+#if 1
+#define lzo_int_fast32_t           lzo_int32f_t
+#define lzo_uint_fast32_t          lzo_uint32f_t
+#define LZO_SIZEOF_LZO_INT_FAST32_T LZO_SIZEOF_LZO_INT32F_T
+#define LZO_TYPEOF_LZO_INT_FAST32_T LZO_TYPEOF_LZO_INT32F_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) >= 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast32_t) == sizeof(lzo_uint_fast32_t))
+#endif
+#if defined(lzo_int64f_t)
+#define lzo_int_fast64_t           lzo_int64f_t
+#define lzo_uint_fast64_t          lzo_uint64f_t
+#define LZO_SIZEOF_LZO_INT_FAST64_T LZO_SIZEOF_LZO_INT64F_T
+#define LZO_TYPEOF_LZO_INT_FAST64_T LZO_TYPEOF_LZO_INT64F_T
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) >= 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int_fast64_t) == sizeof(lzo_uint_fast64_t))
+#endif
+#if !defined(LZO_INT16_C)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 2)
+#    define LZO_INT16_C(c)          ((c) + 0)
+#    define LZO_UINT16_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 2)
+#    define LZO_INT16_C(c)          ((c) + 0L)
+#    define LZO_UINT16_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 2)
+#    define LZO_INT16_C(c)          (c)
+#    define LZO_UINT16_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 2)
+#    define LZO_INT16_C(c)          (c##L)
+#    define LZO_UINT16_C(c)         (c##UL)
+#  else
+#    error "LZO_INT16_C"
+#  endif
+#endif
+#if !defined(LZO_INT32_C)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 4)
+#    define LZO_INT32_C(c)          ((c) + 0)
+#    define LZO_UINT32_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 4)
+#    define LZO_INT32_C(c)          ((c) + 0L)
+#    define LZO_UINT32_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 4)
+#    define LZO_INT32_C(c)          (c)
+#    define LZO_UINT32_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 4)
+#    define LZO_INT32_C(c)          (c##L)
+#    define LZO_UINT32_C(c)         (c##UL)
+#  elif (LZO_SIZEOF_LONG_LONG >= 4)
+#    define LZO_INT32_C(c)          (c##LL)
+#    define LZO_UINT32_C(c)         (c##ULL)
+#  else
+#    error "LZO_INT32_C"
+#  endif
+#endif
+#if !defined(LZO_INT64_C) && defined(lzo_int64l_t)
+#  if (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_INT >= 8)
+#    define LZO_INT64_C(c)          ((c) + 0)
+#    define LZO_UINT64_C(c)         ((c) + 0U)
+#  elif (LZO_BROKEN_INTEGRAL_CONSTANTS) && (LZO_SIZEOF_LONG >= 8)
+#    define LZO_INT64_C(c)          ((c) + 0L)
+#    define LZO_UINT64_C(c)         ((c) + 0UL)
+#  elif (LZO_SIZEOF_INT >= 8)
+#    define LZO_INT64_C(c)          (c)
+#    define LZO_UINT64_C(c)         (c##U)
+#  elif (LZO_SIZEOF_LONG >= 8)
+#    define LZO_INT64_C(c)          (c##L)
+#    define LZO_UINT64_C(c)         (c##UL)
+#  else
+#    error "LZO_INT64_C"
+#  endif
+#endif
+#endif
 
 #endif
 
@@ -1874,7 +3156,7 @@ extern "C" {
 #undef LZO_HAVE_CONFIG_H
 #include "minilzo.h"
 
-#if !defined(MINILZO_VERSION) || (MINILZO_VERSION != 0x2060)
+#if !defined(MINILZO_VERSION) || (MINILZO_VERSION != 0x2090)
 #  error "version mismatch in miniLZO source files"
 #endif
 
@@ -1886,23 +3168,9 @@ extern "C" {
 #define __LZO_CONF_H 1
 
 #if !defined(__LZO_IN_MINILZO)
-#if (LZO_CFG_FREESTANDING)
+#if defined(LZO_CFG_FREESTANDING) && (LZO_CFG_FREESTANDING)
 #  define LZO_LIBC_FREESTANDING 1
 #  define LZO_OS_FREESTANDING 1
-#  define ACC_LIBC_FREESTANDING 1
-#  define ACC_OS_FREESTANDING 1
-#endif
-#if (LZO_CFG_NO_UNALIGNED)
-#  define ACC_CFG_NO_UNALIGNED 1
-#endif
-#if (LZO_ARCH_GENERIC)
-#  define ACC_ARCH_GENERIC 1
-#endif
-#if (LZO_ABI_NEUTRAL_ENDIAN)
-#  define ACC_ABI_NEUTRAL_ENDIAN 1
-#endif
-#if (LZO_HAVE_CONFIG_H)
-#  define ACC_CONFIG_NO_HEADER 1
 #endif
 #if defined(LZO_CFG_EXTRA_CONFIG_HEADER)
 #  include LZO_CFG_EXTRA_CONFIG_HEADER
@@ -1910,23 +3178,41 @@ extern "C" {
 #if defined(__LZOCONF_H) || defined(__LZOCONF_H_INCLUDED)
 #  error "include this file first"
 #endif
-#include "lzo/lzoconf.h"
+#if defined(LZO_CFG_BUILD_DLL) && (LZO_CFG_BUILD_DLL+0) && !defined(__LZO_EXPORT1) && !defined(__LZO_EXPORT2) && 0
+#ifndef __LZODEFS_H_INCLUDED
+#if defined(LZO_HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+#include <limits.h>
+#include <stddef.h>
+#include <lzo/lzodefs.h>
+#endif
+#endif
+#include <lzo/lzoconf.h>
+#if defined(LZO_CFG_EXTRA_CONFIG_HEADER2)
+#  include LZO_CFG_EXTRA_CONFIG_HEADER2
+#endif
 #endif
 
-#if (LZO_VERSION < 0x02000) || !defined(__LZOCONF_H_INCLUDED)
+#if !defined(__LZOCONF_H_INCLUDED) || (LZO_VERSION+0 != 0x2090)
 #  error "version mismatch"
 #endif
 
-#if (LZO_CC_BORLANDC && LZO_ARCH_I086)
-#  pragma option -h
+#if (LZO_CC_MSC && (_MSC_VER >= 1000 && _MSC_VER < 1100))
+#  pragma warning(disable: 4702)
 #endif
-
 #if (LZO_CC_MSC && (_MSC_VER >= 1000))
 #  pragma warning(disable: 4127 4701)
+#  pragma warning(disable: 4514 4710 4711)
 #endif
 #if (LZO_CC_MSC && (_MSC_VER >= 1300))
 #  pragma warning(disable: 4820)
-#  pragma warning(disable: 4514 4710 4711)
+#endif
+#if (LZO_CC_MSC && (_MSC_VER >= 1800))
+#  pragma warning(disable: 4746)
+#endif
+#if (LZO_CC_INTELC && (__INTEL_COMPILER >= 900))
+#  pragma warning(disable: 1684)
 #endif
 
 #if (LZO_CC_SUNPROC)
@@ -1937,48 +3223,41 @@ extern "C" {
 #endif
 #endif
 
-#if (__LZO_MMODEL_HUGE) && !(LZO_HAVE_MM_HUGE_PTR)
-#  error "this should not happen - check defines for __huge"
+#if !defined(__LZO_NOEXPORT1)
+#  define __LZO_NOEXPORT1       /*empty*/
+#endif
+#if !defined(__LZO_NOEXPORT2)
+#  define __LZO_NOEXPORT2       /*empty*/
 #endif
 
-#if defined(__LZO_IN_MINILZO) || defined(LZO_CFG_FREESTANDING)
-#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
-#  define ACC_WANT_ACC_INCD_H 1
-#  define ACC_WANT_ACC_INCE_H 1
-#  define ACC_WANT_ACC_INCI_H 1
+#if 1
+#  define LZO_PUBLIC_DECL(r)    LZO_EXTERN(r)
+#endif
+#if 1
+#  define LZO_PUBLIC_IMPL(r)    LZO_PUBLIC(r)
+#endif
+#if !defined(LZO_LOCAL_DECL)
+#  define LZO_LOCAL_DECL(r)     __LZO_EXTERN_C LZO_LOCAL_IMPL(r)
+#endif
+#if !defined(LZO_LOCAL_IMPL)
+#  define LZO_LOCAL_IMPL(r)     __LZO_NOEXPORT1 r __LZO_NOEXPORT2 __LZO_CDECL
+#endif
+#if 1
+#  define LZO_STATIC_DECL(r)    LZO_PRIVATE(r)
+#endif
+#if 1
+#  define LZO_STATIC_IMPL(r)    LZO_PRIVATE(r)
+#endif
+
+#if defined(__LZO_IN_MINILZO) || (LZO_CFG_FREESTANDING)
 #elif 1
 #  include <string.h>
 #else
-#  define ACC_WANT_ACC_INCD_H 1
+#  define LZO_WANT_ACC_INCD_H 1
 #endif
-
-#if (LZO_ARCH_I086)
-#  define ACC_MM_AHSHIFT        LZO_MM_AHSHIFT
-#  define ACC_PTR_FP_OFF(x)     (((const unsigned __far*)&(x))[0])
-#  define ACC_PTR_FP_SEG(x)     (((const unsigned __far*)&(x))[1])
-#  define ACC_PTR_MK_FP(s,o)    ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o)))
-#endif
-
-#if !defined(lzo_uintptr_t)
-#  if defined(__LZO_MMODEL_HUGE)
-#    define lzo_uintptr_t       unsigned long
-#  elif 1 && defined(LZO_OS_OS400) && (LZO_SIZEOF_VOID_P == 16)
-#    define __LZO_UINTPTR_T_IS_POINTER 1
-     typedef char*              lzo_uintptr_t;
-#    define lzo_uintptr_t       lzo_uintptr_t
-#  elif (LZO_SIZEOF_SIZE_T == LZO_SIZEOF_VOID_P)
-#    define lzo_uintptr_t       size_t
-#  elif (LZO_SIZEOF_LONG == LZO_SIZEOF_VOID_P)
-#    define lzo_uintptr_t       unsigned long
-#  elif (LZO_SIZEOF_INT == LZO_SIZEOF_VOID_P)
-#    define lzo_uintptr_t       unsigned int
-#  elif (LZO_SIZEOF_LONG_LONG == LZO_SIZEOF_VOID_P)
-#    define lzo_uintptr_t       unsigned long long
-#  else
-#    define lzo_uintptr_t       size_t
-#  endif
+#if defined(LZO_HAVE_CONFIG_H)
+#  define LZO_CFG_NO_CONFIG_HEADER 1
 #endif
-LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
 
 #if 1 && !defined(LZO_CFG_FREESTANDING)
 #if 1 && !defined(HAVE_STRING_H)
@@ -2002,6 +3281,23 @@ LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
 #include <string.h>
 #endif
 
+#if 1 || defined(lzo_int8_t) || defined(lzo_uint8_t)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int8_t)  == 1)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint8_t) == 1)
+#endif
+#if 1 || defined(lzo_int16_t) || defined(lzo_uint16_t)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int16_t)  == 2)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint16_t) == 2)
+#endif
+#if 1 || defined(lzo_int32_t) || defined(lzo_uint32_t)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int32_t)  == 4)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint32_t) == 4)
+#endif
+#if defined(lzo_int64_t) || defined(lzo_uint64_t)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_int64_t)  == 8)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint64_t) == 8)
+#endif
+
 #if (LZO_CFG_FREESTANDING)
 #  undef HAVE_MEMCMP
 #  undef HAVE_MEMCPY
@@ -2012,169 +3308,631 @@ LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
 #if !(HAVE_MEMCMP)
 #  undef memcmp
 #  define memcmp(a,b,c)         lzo_memcmp(a,b,c)
-#elif !(__LZO_MMODEL_HUGE)
+#else
 #  undef lzo_memcmp
 #  define lzo_memcmp(a,b,c)     memcmp(a,b,c)
 #endif
 #if !(HAVE_MEMCPY)
 #  undef memcpy
 #  define memcpy(a,b,c)         lzo_memcpy(a,b,c)
-#elif !(__LZO_MMODEL_HUGE)
+#else
 #  undef lzo_memcpy
 #  define lzo_memcpy(a,b,c)     memcpy(a,b,c)
 #endif
 #if !(HAVE_MEMMOVE)
 #  undef memmove
 #  define memmove(a,b,c)        lzo_memmove(a,b,c)
-#elif !(__LZO_MMODEL_HUGE)
+#else
 #  undef lzo_memmove
 #  define lzo_memmove(a,b,c)    memmove(a,b,c)
 #endif
 #if !(HAVE_MEMSET)
 #  undef memset
 #  define memset(a,b,c)         lzo_memset(a,b,c)
-#elif !(__LZO_MMODEL_HUGE)
+#else
 #  undef lzo_memset
 #  define lzo_memset(a,b,c)     memset(a,b,c)
 #endif
 
-#undef NDEBUG
-#if (LZO_CFG_FREESTANDING)
-#  undef LZO_DEBUG
-#  define NDEBUG 1
-#  undef assert
-#  define assert(e) ((void)0)
+#undef NDEBUG
+#if (LZO_CFG_FREESTANDING)
+#  undef LZO_DEBUG
+#  define NDEBUG 1
+#  undef assert
+#  define assert(e) ((void)0)
+#else
+#  if !defined(LZO_DEBUG)
+#    define NDEBUG 1
+#  endif
+#  include <assert.h>
+#endif
+
+#if 0 && defined(__BOUNDS_CHECKING_ON)
+#  include <unchecked.h>
+#else
+#  define BOUNDS_CHECKING_OFF_DURING(stmt)      stmt
+#  define BOUNDS_CHECKING_OFF_IN_EXPR(expr)     (expr)
+#endif
+
+#if (LZO_CFG_PGO)
+#  undef __lzo_likely
+#  undef __lzo_unlikely
+#  define __lzo_likely(e)       (e)
+#  define __lzo_unlikely(e)     (e)
+#endif
+
+#undef _
+#undef __
+#undef ___
+#undef ____
+#undef _p0
+#undef _p1
+#undef _p2
+#undef _p3
+#undef _p4
+#undef _s0
+#undef _s1
+#undef _s2
+#undef _s3
+#undef _s4
+#undef _ww
+
+#if 1
+#  define LZO_BYTE(x)       ((unsigned char) (x))
+#else
+#  define LZO_BYTE(x)       ((unsigned char) ((x) & 0xff))
+#endif
+
+#define LZO_MAX(a,b)        ((a) >= (b) ? (a) : (b))
+#define LZO_MIN(a,b)        ((a) <= (b) ? (a) : (b))
+#define LZO_MAX3(a,b,c)     ((a) >= (b) ? LZO_MAX(a,c) : LZO_MAX(b,c))
+#define LZO_MIN3(a,b,c)     ((a) <= (b) ? LZO_MIN(a,c) : LZO_MIN(b,c))
+
+#define lzo_sizeof(type)    ((lzo_uint) (sizeof(type)))
+
+#define LZO_HIGH(array)     ((lzo_uint) (sizeof(array)/sizeof(*(array))))
+
+#define LZO_SIZE(bits)      (1u << (bits))
+#define LZO_MASK(bits)      (LZO_SIZE(bits) - 1)
+
+#define LZO_USIZE(bits)     ((lzo_uint) 1 << (bits))
+#define LZO_UMASK(bits)     (LZO_USIZE(bits) - 1)
+
+#if !defined(DMUL)
+#if 0
+
+#  define DMUL(a,b) ((lzo_xint) ((lzo_uint32_t)(a) * (lzo_uint32_t)(b)))
+#else
+#  define DMUL(a,b) ((lzo_xint) ((a) * (b)))
+#endif
+#endif
+
+#ifndef __LZO_FUNC_H
+#define __LZO_FUNC_H 1
+
+#if !defined(LZO_BITOPS_USE_ASM_BITSCAN) && !defined(LZO_BITOPS_USE_GNUC_BITSCAN) && !defined(LZO_BITOPS_USE_MSC_BITSCAN)
+#if 1 && (LZO_ARCH_AMD64) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_ASM_SYNTAX_GNUC)
+#define LZO_BITOPS_USE_ASM_BITSCAN 1
+#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC_GNUC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_LLVM && (!defined(__llvm_tools_version__) || (__llvm_tools_version__+0 >= 0x010500ul))))
+#define LZO_BITOPS_USE_GNUC_BITSCAN 1
+#elif (LZO_OS_WIN32 || LZO_OS_WIN64) && ((LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 1010)) || (LZO_CC_MSC && (_MSC_VER >= 1400)))
+#define LZO_BITOPS_USE_MSC_BITSCAN 1
+#if (LZO_CC_MSC) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#include <intrin.h>
+#endif
+#if (LZO_CC_MSC) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+#pragma intrinsic(_BitScanReverse)
+#pragma intrinsic(_BitScanForward)
+#endif
+#if (LZO_CC_MSC) && (LZO_ARCH_AMD64)
+#pragma intrinsic(_BitScanReverse64)
+#pragma intrinsic(_BitScanForward64)
+#endif
+#endif
+#endif
+
+__lzo_static_forceinline unsigned lzo_bitops_ctlz32_func(lzo_uint32_t v)
+{
+#if (LZO_BITOPS_USE_MSC_BITSCAN) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+    unsigned long r; (void) _BitScanReverse(&r, v); return (unsigned) r ^ 31;
+#define lzo_bitops_ctlz32(v)    lzo_bitops_ctlz32_func(v)
+#elif (LZO_BITOPS_USE_ASM_BITSCAN) && (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_uint32_t r;
+    __asm__("bsr %1,%0" : "=r" (r) : "rm" (v) __LZO_ASM_CLOBBER_LIST_CC);
+    return (unsigned) r ^ 31;
+#define lzo_bitops_ctlz32(v)    lzo_bitops_ctlz32_func(v)
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_INT == 4)
+    unsigned r; r = (unsigned) __builtin_clz(v); return r;
+#define lzo_bitops_ctlz32(v)    ((unsigned) __builtin_clz(v))
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_LONG == 8) && (LZO_WORDSIZE >= 8)
+    unsigned r; r = (unsigned) __builtin_clzl(v); return r ^ 32;
+#define lzo_bitops_ctlz32(v)    (((unsigned) __builtin_clzl(v)) ^ 32)
+#else
+    LZO_UNUSED(v); return 0;
+#endif
+}
+
+#if defined(lzo_uint64_t)
+__lzo_static_forceinline unsigned lzo_bitops_ctlz64_func(lzo_uint64_t v)
+{
+#if (LZO_BITOPS_USE_MSC_BITSCAN) && (LZO_ARCH_AMD64)
+    unsigned long r; (void) _BitScanReverse64(&r, v); return (unsigned) r ^ 63;
+#define lzo_bitops_ctlz64(v)    lzo_bitops_ctlz64_func(v)
+#elif (LZO_BITOPS_USE_ASM_BITSCAN) && (LZO_ARCH_AMD64) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_uint64_t r;
+    __asm__("bsr %1,%0" : "=r" (r) : "rm" (v) __LZO_ASM_CLOBBER_LIST_CC);
+    return (unsigned) r ^ 63;
+#define lzo_bitops_ctlz64(v)    lzo_bitops_ctlz64_func(v)
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_LONG == 8) && (LZO_WORDSIZE >= 8)
+    unsigned r; r = (unsigned) __builtin_clzl(v); return r;
+#define lzo_bitops_ctlz64(v)    ((unsigned) __builtin_clzl(v))
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_LONG_LONG == 8) && (LZO_WORDSIZE >= 8)
+    unsigned r; r = (unsigned) __builtin_clzll(v); return r;
+#define lzo_bitops_ctlz64(v)    ((unsigned) __builtin_clzll(v))
+#else
+    LZO_UNUSED(v); return 0;
+#endif
+}
+#endif
+
+__lzo_static_forceinline unsigned lzo_bitops_cttz32_func(lzo_uint32_t v)
+{
+#if (LZO_BITOPS_USE_MSC_BITSCAN) && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
+    unsigned long r; (void) _BitScanForward(&r, v); return (unsigned) r;
+#define lzo_bitops_cttz32(v)    lzo_bitops_cttz32_func(v)
+#elif (LZO_BITOPS_USE_ASM_BITSCAN) && (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_uint32_t r;
+    __asm__("bsf %1,%0" : "=r" (r) : "rm" (v) __LZO_ASM_CLOBBER_LIST_CC);
+    return (unsigned) r;
+#define lzo_bitops_cttz32(v)    lzo_bitops_cttz32_func(v)
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_INT >= 4)
+    unsigned r; r = (unsigned) __builtin_ctz(v); return r;
+#define lzo_bitops_cttz32(v)    ((unsigned) __builtin_ctz(v))
+#else
+    LZO_UNUSED(v); return 0;
+#endif
+}
+
+#if defined(lzo_uint64_t)
+__lzo_static_forceinline unsigned lzo_bitops_cttz64_func(lzo_uint64_t v)
+{
+#if (LZO_BITOPS_USE_MSC_BITSCAN) && (LZO_ARCH_AMD64)
+    unsigned long r; (void) _BitScanForward64(&r, v); return (unsigned) r;
+#define lzo_bitops_cttz64(v)    lzo_bitops_cttz64_func(v)
+#elif (LZO_BITOPS_USE_ASM_BITSCAN) && (LZO_ARCH_AMD64) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_uint64_t r;
+    __asm__("bsf %1,%0" : "=r" (r) : "rm" (v) __LZO_ASM_CLOBBER_LIST_CC);
+    return (unsigned) r;
+#define lzo_bitops_cttz64(v)    lzo_bitops_cttz64_func(v)
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_LONG >= 8) && (LZO_WORDSIZE >= 8)
+    unsigned r; r = (unsigned) __builtin_ctzl(v); return r;
+#define lzo_bitops_cttz64(v)    ((unsigned) __builtin_ctzl(v))
+#elif (LZO_BITOPS_USE_GNUC_BITSCAN) && (LZO_SIZEOF_LONG_LONG >= 8) && (LZO_WORDSIZE >= 8)
+    unsigned r; r = (unsigned) __builtin_ctzll(v); return r;
+#define lzo_bitops_cttz64(v)    ((unsigned) __builtin_ctzll(v))
+#else
+    LZO_UNUSED(v); return 0;
+#endif
+}
+#endif
+
+lzo_unused_funcs_impl(void, lzo_bitops_unused_funcs)(void)
+{
+    LZO_UNUSED_FUNC(lzo_bitops_unused_funcs);
+    LZO_UNUSED_FUNC(lzo_bitops_ctlz32_func);
+    LZO_UNUSED_FUNC(lzo_bitops_cttz32_func);
+#if defined(lzo_uint64_t)
+    LZO_UNUSED_FUNC(lzo_bitops_ctlz64_func);
+    LZO_UNUSED_FUNC(lzo_bitops_cttz64_func);
+#endif
+}
+
+#if defined(__lzo_alignof) && !(LZO_CFG_NO_UNALIGNED)
+#if !defined(lzo_memops_tcheck__) && 0
+#define lzo_memops_tcheck__(t,a,b) ((void)0, sizeof(t) == (a) && __lzo_alignof(t) == (b))
+#endif
+#endif
+#ifndef lzo_memops_TU0p
+#define lzo_memops_TU0p void __LZO_MMODEL *
+#endif
+#ifndef lzo_memops_TU1p
+#define lzo_memops_TU1p unsigned char __LZO_MMODEL *
+#endif
+#ifndef lzo_memops_TU2p
+#if (LZO_OPT_UNALIGNED16)
+typedef lzo_uint16_t __lzo_may_alias lzo_memops_TU2;
+#define lzo_memops_TU2p volatile lzo_memops_TU2 *
+#elif defined(__lzo_byte_struct)
+__lzo_byte_struct(lzo_memops_TU2_struct,2)
+typedef struct lzo_memops_TU2_struct lzo_memops_TU2;
+#else
+struct lzo_memops_TU2_struct { unsigned char a[2]; } __lzo_may_alias;
+typedef struct lzo_memops_TU2_struct lzo_memops_TU2;
+#endif
+#ifndef lzo_memops_TU2p
+#define lzo_memops_TU2p lzo_memops_TU2 *
+#endif
+#endif
+#ifndef lzo_memops_TU4p
+#if (LZO_OPT_UNALIGNED32)
+typedef lzo_uint32_t __lzo_may_alias lzo_memops_TU4;
+#define lzo_memops_TU4p volatile lzo_memops_TU4 __LZO_MMODEL *
+#elif defined(__lzo_byte_struct)
+__lzo_byte_struct(lzo_memops_TU4_struct,4)
+typedef struct lzo_memops_TU4_struct lzo_memops_TU4;
+#else
+struct lzo_memops_TU4_struct { unsigned char a[4]; } __lzo_may_alias;
+typedef struct lzo_memops_TU4_struct lzo_memops_TU4;
+#endif
+#ifndef lzo_memops_TU4p
+#define lzo_memops_TU4p lzo_memops_TU4 __LZO_MMODEL *
+#endif
+#endif
+#ifndef lzo_memops_TU8p
+#if (LZO_OPT_UNALIGNED64)
+typedef lzo_uint64_t __lzo_may_alias lzo_memops_TU8;
+#define lzo_memops_TU8p volatile lzo_memops_TU8 __LZO_MMODEL *
+#elif defined(__lzo_byte_struct)
+__lzo_byte_struct(lzo_memops_TU8_struct,8)
+typedef struct lzo_memops_TU8_struct lzo_memops_TU8;
+#else
+struct lzo_memops_TU8_struct { unsigned char a[8]; } __lzo_may_alias;
+typedef struct lzo_memops_TU8_struct lzo_memops_TU8;
+#endif
+#ifndef lzo_memops_TU8p
+#define lzo_memops_TU8p lzo_memops_TU8 __LZO_MMODEL *
+#endif
+#endif
+#ifndef lzo_memops_set_TU1p
+#define lzo_memops_set_TU1p     volatile lzo_memops_TU1p
+#endif
+#ifndef lzo_memops_move_TU1p
+#define lzo_memops_move_TU1p    lzo_memops_TU1p
+#endif
+#define LZO_MEMOPS_SET1(dd,cc) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_set_TU1p d__1 = (lzo_memops_set_TU1p) (lzo_memops_TU0p) (dd); \
+    d__1[0] = LZO_BYTE(cc); \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_SET2(dd,cc) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_set_TU1p d__2 = (lzo_memops_set_TU1p) (lzo_memops_TU0p) (dd); \
+    d__2[0] = LZO_BYTE(cc); d__2[1] = LZO_BYTE(cc); \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_SET3(dd,cc) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_set_TU1p d__3 = (lzo_memops_set_TU1p) (lzo_memops_TU0p) (dd); \
+    d__3[0] = LZO_BYTE(cc); d__3[1] = LZO_BYTE(cc); d__3[2] = LZO_BYTE(cc); \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_SET4(dd,cc) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_set_TU1p d__4 = (lzo_memops_set_TU1p) (lzo_memops_TU0p) (dd); \
+    d__4[0] = LZO_BYTE(cc); d__4[1] = LZO_BYTE(cc); d__4[2] = LZO_BYTE(cc); d__4[3] = LZO_BYTE(cc); \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_MOVE1(dd,ss) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_move_TU1p d__1 = (lzo_memops_move_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_move_TU1p s__1 = (const lzo_memops_move_TU1p) (const lzo_memops_TU0p) (ss); \
+    d__1[0] = s__1[0]; \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_MOVE2(dd,ss) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_move_TU1p d__2 = (lzo_memops_move_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_move_TU1p s__2 = (const lzo_memops_move_TU1p) (const lzo_memops_TU0p) (ss); \
+    d__2[0] = s__2[0]; d__2[1] = s__2[1]; \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_MOVE3(dd,ss) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_move_TU1p d__3 = (lzo_memops_move_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_move_TU1p s__3 = (const lzo_memops_move_TU1p) (const lzo_memops_TU0p) (ss); \
+    d__3[0] = s__3[0]; d__3[1] = s__3[1]; d__3[2] = s__3[2]; \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_MOVE4(dd,ss) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_move_TU1p d__4 = (lzo_memops_move_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_move_TU1p s__4 = (const lzo_memops_move_TU1p) (const lzo_memops_TU0p) (ss); \
+    d__4[0] = s__4[0]; d__4[1] = s__4[1]; d__4[2] = s__4[2]; d__4[3] = s__4[3]; \
+    LZO_BLOCK_END
+#define LZO_MEMOPS_MOVE8(dd,ss) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_move_TU1p d__8 = (lzo_memops_move_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_move_TU1p s__8 = (const lzo_memops_move_TU1p) (const lzo_memops_TU0p) (ss); \
+    d__8[0] = s__8[0]; d__8[1] = s__8[1]; d__8[2] = s__8[2]; d__8[3] = s__8[3]; \
+    d__8[4] = s__8[4]; d__8[5] = s__8[5]; d__8[6] = s__8[6]; d__8[7] = s__8[7]; \
+    LZO_BLOCK_END
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU1p)0)==1)
+#define LZO_MEMOPS_COPY1(dd,ss) LZO_MEMOPS_MOVE1(dd,ss)
+#if (LZO_OPT_UNALIGNED16)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU2p)0)==2)
+#define LZO_MEMOPS_COPY2(dd,ss) \
+    * (lzo_memops_TU2p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU2p) (const lzo_memops_TU0p) (ss)
+#elif defined(lzo_memops_tcheck__)
+#define LZO_MEMOPS_COPY2(dd,ss) \
+    LZO_BLOCK_BEGIN if (lzo_memops_tcheck__(lzo_memops_TU2,2,1)) { \
+        * (lzo_memops_TU2p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU2p) (const lzo_memops_TU0p) (ss); \
+    } else { LZO_MEMOPS_MOVE2(dd,ss); } LZO_BLOCK_END
+#else
+#define LZO_MEMOPS_COPY2(dd,ss) LZO_MEMOPS_MOVE2(dd,ss)
+#endif
+#if (LZO_OPT_UNALIGNED32)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU4p)0)==4)
+#define LZO_MEMOPS_COPY4(dd,ss) \
+    * (lzo_memops_TU4p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU4p) (const lzo_memops_TU0p) (ss)
+#elif defined(lzo_memops_tcheck__)
+#define LZO_MEMOPS_COPY4(dd,ss) \
+    LZO_BLOCK_BEGIN if (lzo_memops_tcheck__(lzo_memops_TU4,4,1)) { \
+        * (lzo_memops_TU4p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU4p) (const lzo_memops_TU0p) (ss); \
+    } else { LZO_MEMOPS_MOVE4(dd,ss); } LZO_BLOCK_END
+#else
+#define LZO_MEMOPS_COPY4(dd,ss) LZO_MEMOPS_MOVE4(dd,ss)
+#endif
+#if (LZO_WORDSIZE != 8)
+#define LZO_MEMOPS_COPY8(dd,ss) \
+    LZO_BLOCK_BEGIN LZO_MEMOPS_COPY4(dd,ss); LZO_MEMOPS_COPY4((lzo_memops_TU1p)(lzo_memops_TU0p)(dd)+4,(const lzo_memops_TU1p)(const lzo_memops_TU0p)(ss)+4); LZO_BLOCK_END
+#else
+#if (LZO_OPT_UNALIGNED64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU8p)0)==8)
+#define LZO_MEMOPS_COPY8(dd,ss) \
+    * (lzo_memops_TU8p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU8p) (const lzo_memops_TU0p) (ss)
+#elif (LZO_OPT_UNALIGNED32)
+#define LZO_MEMOPS_COPY8(dd,ss) \
+    LZO_BLOCK_BEGIN LZO_MEMOPS_COPY4(dd,ss); LZO_MEMOPS_COPY4((lzo_memops_TU1p)(lzo_memops_TU0p)(dd)+4,(const lzo_memops_TU1p)(const lzo_memops_TU0p)(ss)+4); LZO_BLOCK_END
+#elif defined(lzo_memops_tcheck__)
+#define LZO_MEMOPS_COPY8(dd,ss) \
+    LZO_BLOCK_BEGIN if (lzo_memops_tcheck__(lzo_memops_TU8,8,1)) { \
+        * (lzo_memops_TU8p) (lzo_memops_TU0p) (dd) = * (const lzo_memops_TU8p) (const lzo_memops_TU0p) (ss); \
+    } else { LZO_MEMOPS_MOVE8(dd,ss); } LZO_BLOCK_END
+#else
+#define LZO_MEMOPS_COPY8(dd,ss) LZO_MEMOPS_MOVE8(dd,ss)
+#endif
+#endif
+#define LZO_MEMOPS_COPYN(dd,ss,nn) \
+    LZO_BLOCK_BEGIN \
+    lzo_memops_TU1p d__n = (lzo_memops_TU1p) (lzo_memops_TU0p) (dd); \
+    const lzo_memops_TU1p s__n = (const lzo_memops_TU1p) (const lzo_memops_TU0p) (ss); \
+    lzo_uint n__n = (nn); \
+    while ((void)0, n__n >= 8) { LZO_MEMOPS_COPY8(d__n, s__n); d__n += 8; s__n += 8; n__n -= 8; } \
+    if ((void)0, n__n >= 4) { LZO_MEMOPS_COPY4(d__n, s__n); d__n += 4; s__n += 4; n__n -= 4; } \
+    if ((void)0, n__n > 0) do { *d__n++ = *s__n++; } while (--n__n > 0); \
+    LZO_BLOCK_END
+
+__lzo_static_forceinline lzo_uint16_t lzo_memops_get_le16(const lzo_voidp ss)
+{
+    lzo_uint16_t v;
+#if (LZO_ABI_LITTLE_ENDIAN)
+    LZO_MEMOPS_COPY2(&v, ss);
+#elif (LZO_OPT_UNALIGNED16 && LZO_ARCH_POWERPC && LZO_ABI_BIG_ENDIAN) && (LZO_ASM_SYNTAX_GNUC)
+    const lzo_memops_TU2p s = (const lzo_memops_TU2p) ss;
+    unsigned long vv;
+    __asm__("lhbrx %0,0,%1" : "=r" (vv) : "r" (s), "m" (*s));
+    v = (lzo_uint16_t) vv;
 #else
-#  if !defined(LZO_DEBUG)
-#    define NDEBUG 1
-#  endif
-#  include <assert.h>
+    const lzo_memops_TU1p s = (const lzo_memops_TU1p) ss;
+    v = (lzo_uint16_t) (((lzo_uint16_t)s[0]) | ((lzo_uint16_t)s[1] << 8));
 #endif
-
-#if 0 && defined(__BOUNDS_CHECKING_ON)
-#  include <unchecked.h>
+    return v;
+}
+#if (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
+#define LZO_MEMOPS_GET_LE16(ss)    (* (const lzo_memops_TU2p) (const lzo_memops_TU0p) (ss))
 #else
-#  define BOUNDS_CHECKING_OFF_DURING(stmt)      stmt
-#  define BOUNDS_CHECKING_OFF_IN_EXPR(expr)     (expr)
+#define LZO_MEMOPS_GET_LE16(ss)    lzo_memops_get_le16(ss)
 #endif
 
-#if !defined(__lzo_inline)
-#  define __lzo_inline              /*empty*/
+__lzo_static_forceinline lzo_uint32_t lzo_memops_get_le32(const lzo_voidp ss)
+{
+    lzo_uint32_t v;
+#if (LZO_ABI_LITTLE_ENDIAN)
+    LZO_MEMOPS_COPY4(&v, ss);
+#elif (LZO_OPT_UNALIGNED32 && LZO_ARCH_POWERPC && LZO_ABI_BIG_ENDIAN) && (LZO_ASM_SYNTAX_GNUC)
+    const lzo_memops_TU4p s = (const lzo_memops_TU4p) ss;
+    unsigned long vv;
+    __asm__("lwbrx %0,0,%1" : "=r" (vv) : "r" (s), "m" (*s));
+    v = (lzo_uint32_t) vv;
+#else
+    const lzo_memops_TU1p s = (const lzo_memops_TU1p) ss;
+    v = (lzo_uint32_t) (((lzo_uint32_t)s[0]) | ((lzo_uint32_t)s[1] << 8) | ((lzo_uint32_t)s[2] << 16) | ((lzo_uint32_t)s[3] << 24));
 #endif
-#if !defined(__lzo_forceinline)
-#  define __lzo_forceinline         /*empty*/
+    return v;
+}
+#if (LZO_OPT_UNALIGNED32) && (LZO_ABI_LITTLE_ENDIAN)
+#define LZO_MEMOPS_GET_LE32(ss)    (* (const lzo_memops_TU4p) (const lzo_memops_TU0p) (ss))
+#else
+#define LZO_MEMOPS_GET_LE32(ss)    lzo_memops_get_le32(ss)
 #endif
-#if !defined(__lzo_noinline)
-#  define __lzo_noinline            /*empty*/
+
+#if (LZO_OPT_UNALIGNED64) && (LZO_ABI_LITTLE_ENDIAN)
+#define LZO_MEMOPS_GET_LE64(ss)    (* (const lzo_memops_TU8p) (const lzo_memops_TU0p) (ss))
 #endif
 
-#if (LZO_CFG_PGO)
-#  undef __acc_likely
-#  undef __acc_unlikely
-#  undef __lzo_likely
-#  undef __lzo_unlikely
-#  define __acc_likely(e)       (e)
-#  define __acc_unlikely(e)     (e)
-#  define __lzo_likely(e)       (e)
-#  define __lzo_unlikely(e)     (e)
+__lzo_static_forceinline lzo_uint16_t lzo_memops_get_ne16(const lzo_voidp ss)
+{
+    lzo_uint16_t v;
+    LZO_MEMOPS_COPY2(&v, ss);
+    return v;
+}
+#if (LZO_OPT_UNALIGNED16)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU2p)0)==2)
+#define LZO_MEMOPS_GET_NE16(ss)    (* (const lzo_memops_TU2p) (const lzo_memops_TU0p) (ss))
+#else
+#define LZO_MEMOPS_GET_NE16(ss)    lzo_memops_get_ne16(ss)
 #endif
 
-#if 1
-#  define LZO_BYTE(x)       ((unsigned char) (x))
+__lzo_static_forceinline lzo_uint32_t lzo_memops_get_ne32(const lzo_voidp ss)
+{
+    lzo_uint32_t v;
+    LZO_MEMOPS_COPY4(&v, ss);
+    return v;
+}
+#if (LZO_OPT_UNALIGNED32)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU4p)0)==4)
+#define LZO_MEMOPS_GET_NE32(ss)    (* (const lzo_memops_TU4p) (const lzo_memops_TU0p) (ss))
 #else
-#  define LZO_BYTE(x)       ((unsigned char) ((x) & 0xff))
+#define LZO_MEMOPS_GET_NE32(ss)    lzo_memops_get_ne32(ss)
 #endif
 
-#define LZO_MAX(a,b)        ((a) >= (b) ? (a) : (b))
-#define LZO_MIN(a,b)        ((a) <= (b) ? (a) : (b))
-#define LZO_MAX3(a,b,c)     ((a) >= (b) ? LZO_MAX(a,c) : LZO_MAX(b,c))
-#define LZO_MIN3(a,b,c)     ((a) <= (b) ? LZO_MIN(a,c) : LZO_MIN(b,c))
+#if (LZO_OPT_UNALIGNED64)
+LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(*(lzo_memops_TU8p)0)==8)
+#define LZO_MEMOPS_GET_NE64(ss)    (* (const lzo_memops_TU8p) (const lzo_memops_TU0p) (ss))
+#endif
 
-#define lzo_sizeof(type)    ((lzo_uint) (sizeof(type)))
+__lzo_static_forceinline void lzo_memops_put_le16(lzo_voidp dd, lzo_uint16_t vv)
+{
+#if (LZO_ABI_LITTLE_ENDIAN)
+    LZO_MEMOPS_COPY2(dd, &vv);
+#elif (LZO_OPT_UNALIGNED16 && LZO_ARCH_POWERPC && LZO_ABI_BIG_ENDIAN) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_memops_TU2p d = (lzo_memops_TU2p) dd;
+    unsigned long v = vv;
+    __asm__("sthbrx %2,0,%1" : "=m" (*d) : "r" (d), "r" (v));
+#else
+    lzo_memops_TU1p d = (lzo_memops_TU1p) dd;
+    d[0] = LZO_BYTE((vv      ) & 0xff);
+    d[1] = LZO_BYTE((vv >>  8) & 0xff);
+#endif
+}
+#if (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
+#define LZO_MEMOPS_PUT_LE16(dd,vv) (* (lzo_memops_TU2p) (lzo_memops_TU0p) (dd) = (vv))
+#else
+#define LZO_MEMOPS_PUT_LE16(dd,vv) lzo_memops_put_le16(dd,vv)
+#endif
 
-#define LZO_HIGH(array)     ((lzo_uint) (sizeof(array)/sizeof(*(array))))
+__lzo_static_forceinline void lzo_memops_put_le32(lzo_voidp dd, lzo_uint32_t vv)
+{
+#if (LZO_ABI_LITTLE_ENDIAN)
+    LZO_MEMOPS_COPY4(dd, &vv);
+#elif (LZO_OPT_UNALIGNED32 && LZO_ARCH_POWERPC && LZO_ABI_BIG_ENDIAN) && (LZO_ASM_SYNTAX_GNUC)
+    lzo_memops_TU4p d = (lzo_memops_TU4p) dd;
+    unsigned long v = vv;
+    __asm__("stwbrx %2,0,%1" : "=m" (*d) : "r" (d), "r" (v));
+#else
+    lzo_memops_TU1p d = (lzo_memops_TU1p) dd;
+    d[0] = LZO_BYTE((vv      ) & 0xff);
+    d[1] = LZO_BYTE((vv >>  8) & 0xff);
+    d[2] = LZO_BYTE((vv >> 16) & 0xff);
+    d[3] = LZO_BYTE((vv >> 24) & 0xff);
+#endif
+}
+#if (LZO_OPT_UNALIGNED32) && (LZO_ABI_LITTLE_ENDIAN)
+#define LZO_MEMOPS_PUT_LE32(dd,vv) (* (lzo_memops_TU4p) (lzo_memops_TU0p) (dd) = (vv))
+#else
+#define LZO_MEMOPS_PUT_LE32(dd,vv) lzo_memops_put_le32(dd,vv)
+#endif
 
-#define LZO_SIZE(bits)      (1u << (bits))
-#define LZO_MASK(bits)      (LZO_SIZE(bits) - 1)
+__lzo_static_forceinline void lzo_memops_put_ne16(lzo_voidp dd, lzo_uint16_t vv)
+{
+    LZO_MEMOPS_COPY2(dd, &vv);
+}
+#if (LZO_OPT_UNALIGNED16)
+#define LZO_MEMOPS_PUT_NE16(dd,vv) (* (lzo_memops_TU2p) (lzo_memops_TU0p) (dd) = (vv))
+#else
+#define LZO_MEMOPS_PUT_NE16(dd,vv) lzo_memops_put_ne16(dd,vv)
+#endif
 
-#define LZO_LSIZE(bits)     (1ul << (bits))
-#define LZO_LMASK(bits)     (LZO_LSIZE(bits) - 1)
+__lzo_static_forceinline void lzo_memops_put_ne32(lzo_voidp dd, lzo_uint32_t vv)
+{
+    LZO_MEMOPS_COPY4(dd, &vv);
+}
+#if (LZO_OPT_UNALIGNED32)
+#define LZO_MEMOPS_PUT_NE32(dd,vv) (* (lzo_memops_TU4p) (lzo_memops_TU0p) (dd) = (vv))
+#else
+#define LZO_MEMOPS_PUT_NE32(dd,vv) lzo_memops_put_ne32(dd,vv)
+#endif
 
-#define LZO_USIZE(bits)     ((lzo_uint) 1 << (bits))
-#define LZO_UMASK(bits)     (LZO_USIZE(bits) - 1)
+lzo_unused_funcs_impl(void, lzo_memops_unused_funcs)(void)
+{
+    LZO_UNUSED_FUNC(lzo_memops_unused_funcs);
+    LZO_UNUSED_FUNC(lzo_memops_get_le16);
+    LZO_UNUSED_FUNC(lzo_memops_get_le32);
+    LZO_UNUSED_FUNC(lzo_memops_get_ne16);
+    LZO_UNUSED_FUNC(lzo_memops_get_ne32);
+    LZO_UNUSED_FUNC(lzo_memops_put_le16);
+    LZO_UNUSED_FUNC(lzo_memops_put_le32);
+    LZO_UNUSED_FUNC(lzo_memops_put_ne16);
+    LZO_UNUSED_FUNC(lzo_memops_put_ne32);
+}
 
-#if !defined(DMUL)
-#if 0
+#endif
 
-#  define DMUL(a,b) ((lzo_xint) ((lzo_uint32)(a) * (lzo_uint32)(b)))
-#else
-#  define DMUL(a,b) ((lzo_xint) ((a) * (b)))
+#ifndef UA_SET1
+#define UA_SET1             LZO_MEMOPS_SET1
 #endif
+#ifndef UA_SET2
+#define UA_SET2             LZO_MEMOPS_SET2
 #endif
-
-#if 1 && (LZO_ARCH_AMD64 || LZO_ARCH_I386 || LZO_ARCH_POWERPC)
-#  if (LZO_SIZEOF_SHORT == 2)
-#    define LZO_UNALIGNED_OK_2 1
-#  endif
-#  if (LZO_SIZEOF_INT == 4)
-#    define LZO_UNALIGNED_OK_4 1
-#  endif
+#ifndef UA_SET3
+#define UA_SET3             LZO_MEMOPS_SET3
 #endif
-#if 1 && (LZO_ARCH_AMD64)
-#  if defined(LZO_UINT64_MAX)
-#    define LZO_UNALIGNED_OK_8 1
-#  endif
+#ifndef UA_SET4
+#define UA_SET4             LZO_MEMOPS_SET4
 #endif
-#if (LZO_CFG_NO_UNALIGNED)
-#  undef LZO_UNALIGNED_OK_2
-#  undef LZO_UNALIGNED_OK_4
-#  undef LZO_UNALIGNED_OK_8
-#endif
-
-#undef UA_GET16
-#undef UA_SET16
-#undef UA_COPY16
-#undef UA_GET32
-#undef UA_SET32
-#undef UA_COPY32
-#undef UA_GET64
-#undef UA_SET64
-#undef UA_COPY64
-#if defined(LZO_UNALIGNED_OK_2)
-   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(unsigned short) == 2)
-#  if 1 && defined(ACC_UA_COPY16)
-#    define UA_GET16        ACC_UA_GET16
-#    define UA_SET16        ACC_UA_SET16
-#    define UA_COPY16       ACC_UA_COPY16
-#  else
-#    define UA_GET16(p)     (* (__lzo_ua_volatile const lzo_ushortp) (__lzo_ua_volatile const lzo_voidp) (p))
-#    define UA_SET16(p,v)   ((* (__lzo_ua_volatile lzo_ushortp) (__lzo_ua_volatile lzo_voidp) (p)) = (unsigned short) (v))
-#    define UA_COPY16(d,s)  UA_SET16(d, UA_GET16(s))
-#  endif
+#ifndef UA_MOVE1
+#define UA_MOVE1            LZO_MEMOPS_MOVE1
 #endif
-#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
-   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint32) == 4)
-#  if 1 && defined(ACC_UA_COPY32)
-#    define UA_GET32        ACC_UA_GET32
-#    define UA_SET32        ACC_UA_SET32
-#    define UA_COPY32       ACC_UA_COPY32
-#  else
-#    define UA_GET32(p)     (* (__lzo_ua_volatile const lzo_uint32p) (__lzo_ua_volatile const lzo_voidp) (p))
-#    define UA_SET32(p,v)   ((* (__lzo_ua_volatile lzo_uint32p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint32) (v))
-#    define UA_COPY32(d,s)  UA_SET32(d, UA_GET32(s))
-#  endif
+#ifndef UA_MOVE2
+#define UA_MOVE2            LZO_MEMOPS_MOVE2
 #endif
-#if defined(LZO_UNALIGNED_OK_8)
-   LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint64) == 8)
-#  if 1 && defined(ACC_UA_COPY64)
-#    define UA_GET64        ACC_UA_GET64
-#    define UA_SET64        ACC_UA_SET64
-#    define UA_COPY64       ACC_UA_COPY64
-#  else
-#    define UA_GET64(p)     (* (__lzo_ua_volatile const lzo_uint64p) (__lzo_ua_volatile const lzo_voidp) (p))
-#    define UA_SET64(p,v)   ((* (__lzo_ua_volatile lzo_uint64p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint64) (v))
-#    define UA_COPY64(d,s)  UA_SET64(d, UA_GET64(s))
-#  endif
+#ifndef UA_MOVE3
+#define UA_MOVE3            LZO_MEMOPS_MOVE3
+#endif
+#ifndef UA_MOVE4
+#define UA_MOVE4            LZO_MEMOPS_MOVE4
+#endif
+#ifndef UA_MOVE8
+#define UA_MOVE8            LZO_MEMOPS_MOVE8
+#endif
+#ifndef UA_COPY1
+#define UA_COPY1            LZO_MEMOPS_COPY1
+#endif
+#ifndef UA_COPY2
+#define UA_COPY2            LZO_MEMOPS_COPY2
+#endif
+#ifndef UA_COPY3
+#define UA_COPY3            LZO_MEMOPS_COPY3
+#endif
+#ifndef UA_COPY4
+#define UA_COPY4            LZO_MEMOPS_COPY4
+#endif
+#ifndef UA_COPY8
+#define UA_COPY8            LZO_MEMOPS_COPY8
+#endif
+#ifndef UA_COPYN
+#define UA_COPYN            LZO_MEMOPS_COPYN
+#endif
+#ifndef UA_COPYN_X
+#define UA_COPYN_X          LZO_MEMOPS_COPYN
+#endif
+#ifndef UA_GET_LE16
+#define UA_GET_LE16         LZO_MEMOPS_GET_LE16
+#endif
+#ifndef UA_GET_LE32
+#define UA_GET_LE32         LZO_MEMOPS_GET_LE32
+#endif
+#ifdef LZO_MEMOPS_GET_LE64
+#ifndef UA_GET_LE64
+#define UA_GET_LE64         LZO_MEMOPS_GET_LE64
+#endif
+#endif
+#ifndef UA_GET_NE16
+#define UA_GET_NE16         LZO_MEMOPS_GET_NE16
+#endif
+#ifndef UA_GET_NE32
+#define UA_GET_NE32         LZO_MEMOPS_GET_NE32
+#endif
+#ifdef LZO_MEMOPS_GET_NE64
+#ifndef UA_GET_NE64
+#define UA_GET_NE64         LZO_MEMOPS_GET_NE64
+#endif
+#endif
+#ifndef UA_PUT_LE16
+#define UA_PUT_LE16         LZO_MEMOPS_PUT_LE16
+#endif
+#ifndef UA_PUT_LE32
+#define UA_PUT_LE32         LZO_MEMOPS_PUT_LE32
+#endif
+#ifndef UA_PUT_NE16
+#define UA_PUT_NE16         LZO_MEMOPS_PUT_NE16
+#endif
+#ifndef UA_PUT_NE32
+#define UA_PUT_NE32         LZO_MEMOPS_PUT_NE32
 #endif
 
 #define MEMCPY8_DS(dest,src,len) \
@@ -2195,25 +3953,10 @@ LZO_EXTERN(const lzo_bytep) lzo_copyright(void);
 extern "C" {
 #endif
 
-#if !defined(lzo_uintptr_t)
-#  if (__LZO_MMODEL_HUGE)
-#    define lzo_uintptr_t   unsigned long
-#  else
-#    define lzo_uintptr_t   acc_uintptr_t
-#    ifdef __ACC_INTPTR_T_IS_POINTER
-#      define __LZO_UINTPTR_T_IS_POINTER 1
-#    endif
-#  endif
-#endif
-
 #if (LZO_ARCH_I086)
-#define PTR(a)              ((lzo_bytep) (a))
-#define PTR_ALIGNED_4(a)    ((ACC_PTR_FP_OFF(a) & 3) == 0)
-#define PTR_ALIGNED2_4(a,b) (((ACC_PTR_FP_OFF(a) | ACC_PTR_FP_OFF(b)) & 3) == 0)
+#error "LZO_ARCH_I086 is unsupported"
 #elif (LZO_MM_PVP)
-#define PTR(a)              ((lzo_bytep) (a))
-#define PTR_ALIGNED_8(a)    ((((lzo_uintptr_t)(a)) >> 61) == 0)
-#define PTR_ALIGNED2_8(a,b) ((((lzo_uintptr_t)(a)|(lzo_uintptr_t)(b)) >> 61) == 0)
+#error "LZO_MM_PVP is unsupported"
 #else
 #define PTR(a)              ((lzo_uintptr_t) (a))
 #define PTR_LINEAR(a)       PTR(a)
@@ -2243,24 +3986,28 @@ typedef union
     unsigned long   a_ulong;
     lzo_int         a_lzo_int;
     lzo_uint        a_lzo_uint;
-    lzo_int32       a_lzo_int32;
-    lzo_uint32      a_lzo_uint32;
-#if defined(LZO_UINT64_MAX)
-    lzo_int64       a_lzo_int64;
-    lzo_uint64      a_lzo_uint64;
-#endif
+    lzo_xint        a_lzo_xint;
+    lzo_int16_t     a_lzo_int16_t;
+    lzo_uint16_t    a_lzo_uint16_t;
+    lzo_int32_t     a_lzo_int32_t;
+    lzo_uint32_t    a_lzo_uint32_t;
+#if defined(lzo_uint64_t)
+    lzo_int64_t     a_lzo_int64_t;
+    lzo_uint64_t    a_lzo_uint64_t;
+#endif
+    size_t          a_size_t;
     ptrdiff_t       a_ptrdiff_t;
     lzo_uintptr_t   a_lzo_uintptr_t;
-    lzo_voidp       a_lzo_voidp;
     void *          a_void_p;
-    lzo_bytep       a_lzo_bytep;
-    lzo_bytepp      a_lzo_bytepp;
-    lzo_uintp       a_lzo_uintp;
-    lzo_uint *      a_lzo_uint_p;
-    lzo_uint32p     a_lzo_uint32p;
-    lzo_uint32 *    a_lzo_uint32_p;
-    unsigned char * a_uchar_p;
     char *          a_char_p;
+    unsigned char * a_uchar_p;
+    const void *          a_c_void_p;
+    const char *          a_c_char_p;
+    const unsigned char * a_c_uchar_p;
+    lzo_voidp       a_lzo_voidp;
+    lzo_bytep       a_lzo_bytep;
+    const lzo_voidp a_c_lzo_voidp;
+    const lzo_bytep a_c_lzo_bytep;
 }
 lzo_full_align_t;
 
@@ -2276,18 +4023,14 @@ lzo_full_align_t;
 
 #ifndef LZO_DICT_USE_PTR
 #define LZO_DICT_USE_PTR 1
-#if 0 && (LZO_ARCH_I086)
-#  undef LZO_DICT_USE_PTR
-#  define LZO_DICT_USE_PTR 0
-#endif
 #endif
 
 #if (LZO_DICT_USE_PTR)
 #  define lzo_dict_t    const lzo_bytep
-#  define lzo_dict_p    lzo_dict_t __LZO_MMODEL *
+#  define lzo_dict_p    lzo_dict_t *
 #else
 #  define lzo_dict_t    lzo_uint
-#  define lzo_dict_p    lzo_dict_t __LZO_MMODEL *
+#  define lzo_dict_p    lzo_dict_t *
 #endif
 
 #endif
@@ -2300,10 +4043,9 @@ __lzo_ptr_linear(const lzo_voidp ptr)
     lzo_uintptr_t p;
 
 #if (LZO_ARCH_I086)
-    p = (((lzo_uintptr_t)(ACC_PTR_FP_SEG(ptr))) << (16 - ACC_MM_AHSHIFT)) + (ACC_PTR_FP_OFF(ptr));
+#error "LZO_ARCH_I086 is unsupported"
 #elif (LZO_MM_PVP)
-    p = (lzo_uintptr_t) (ptr);
-    p = (p << 3) | (p >> 61);
+#error "LZO_MM_PVP is unsupported"
 #else
     p = (lzo_uintptr_t) PTR_LINEAR(ptr);
 #endif
@@ -2314,16 +4056,20 @@ __lzo_ptr_linear(const lzo_voidp ptr)
 LZO_PUBLIC(unsigned)
 __lzo_align_gap(const lzo_voidp ptr, lzo_uint size)
 {
-#if defined(__LZO_UINTPTR_T_IS_POINTER)
-    size_t n = (size_t) ptr;
-    n = (((n + size - 1) / size) * size) - n;
+#if (__LZO_UINTPTR_T_IS_POINTER)
+#error "__LZO_UINTPTR_T_IS_POINTER is unsupported"
 #else
     lzo_uintptr_t p, n;
+    if (size < 2) return 0;
     p = __lzo_ptr_linear(ptr);
+#if 0
     n = (((p + size - 1) / size) * size) - p;
+#else
+    if ((size & (size - 1)) != 0)
+        return 0;
+    n = size; n = ((p + n - 1) & ~(n - 1)) - p;
+#endif
 #endif
-
-    assert(size > 0);
     assert((long)n >= 0);
     assert(n <= size);
     return (unsigned)n;
@@ -2336,27 +4082,25 @@ __lzo_align_gap(const lzo_voidp ptr, lzo_uint size)
  * keep this copyright string in the executable of your product.
  */
 
-static const char __lzo_copyright[] =
+static const char lzo_copyright_[] =
 #if !defined(__LZO_IN_MINLZO)
     LZO_VERSION_STRING;
 #else
     "\r\n\n"
     "LZO data compression library.\n"
-    "$Copyright: LZO Copyright (C) 1996-2011 Markus Franz Xaver Johannes Oberhumer\n"
+    "$Copyright: LZO Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer\n"
     "<markus at oberhumer.com>\n"
     "http://www.oberhumer.com $\n\n"
     "$Id: LZO version: v" LZO_VERSION_STRING ", " LZO_VERSION_DATE " $\n"
     "$Info: " LZO_INFO_STRING " $\n";
 #endif
+static const char lzo_version_string_[] = LZO_VERSION_STRING;
+static const char lzo_version_date_[] = LZO_VERSION_DATE;
 
 LZO_PUBLIC(const lzo_bytep)
 lzo_copyright(void)
 {
-#if (LZO_OS_DOS16 && LZO_CC_TURBOC)
-    return (lzo_voidp) __lzo_copyright;
-#else
-    return (const lzo_bytep) __lzo_copyright;
-#endif
+    return (const lzo_bytep) lzo_copyright_;
 }
 
 LZO_PUBLIC(unsigned)
@@ -2368,41 +4112,41 @@ lzo_version(void)
 LZO_PUBLIC(const char *)
 lzo_version_string(void)
 {
-    return LZO_VERSION_STRING;
+    return lzo_version_string_;
 }
 
 LZO_PUBLIC(const char *)
 lzo_version_date(void)
 {
-    return LZO_VERSION_DATE;
+    return lzo_version_date_;
 }
 
 LZO_PUBLIC(const lzo_charp)
 _lzo_version_string(void)
 {
-    return LZO_VERSION_STRING;
+    return lzo_version_string_;
 }
 
 LZO_PUBLIC(const lzo_charp)
 _lzo_version_date(void)
 {
-    return LZO_VERSION_DATE;
+    return lzo_version_date_;
 }
 
 #define LZO_BASE 65521u
 #define LZO_NMAX 5552
 
 #define LZO_DO1(buf,i)  s1 += buf[i]; s2 += s1
-#define LZO_DO2(buf,i)  LZO_DO1(buf,i); LZO_DO1(buf,i+1);
-#define LZO_DO4(buf,i)  LZO_DO2(buf,i); LZO_DO2(buf,i+2);
-#define LZO_DO8(buf,i)  LZO_DO4(buf,i); LZO_DO4(buf,i+4);
-#define LZO_DO16(buf,i) LZO_DO8(buf,i); LZO_DO8(buf,i+8);
+#define LZO_DO2(buf,i)  LZO_DO1(buf,i); LZO_DO1(buf,i+1)
+#define LZO_DO4(buf,i)  LZO_DO2(buf,i); LZO_DO2(buf,i+2)
+#define LZO_DO8(buf,i)  LZO_DO4(buf,i); LZO_DO4(buf,i+4)
+#define LZO_DO16(buf,i) LZO_DO8(buf,i); LZO_DO8(buf,i+8)
 
-LZO_PUBLIC(lzo_uint32)
-lzo_adler32(lzo_uint32 adler, const lzo_bytep buf, lzo_uint len)
+LZO_PUBLIC(lzo_uint32_t)
+lzo_adler32(lzo_uint32_t adler, const lzo_bytep buf, lzo_uint len)
 {
-    lzo_uint32 s1 = adler & 0xffff;
-    lzo_uint32 s2 = (adler >> 16) & 0xffff;
+    lzo_uint32_t s1 = adler & 0xffff;
+    lzo_uint32_t s2 = (adler >> 16) & 0xffff;
     unsigned k;
 
     if (buf == NULL)
@@ -2459,8 +4203,8 @@ lzo_adler32(lzo_uint32 adler, const lzo_bytep buf, lzo_uint len)
 LZOLIB_PUBLIC(int, lzo_hmemcmp) (const lzo_hvoid_p s1, const lzo_hvoid_p s2, lzo_hsize_t len)
 {
 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCMP)
-    const lzo_hbyte_p p1 = (const lzo_hbyte_p) s1;
-    const lzo_hbyte_p p2 = (const lzo_hbyte_p) s2;
+    const lzo_hbyte_p p1 = LZO_STATIC_CAST(const lzo_hbyte_p, s1);
+    const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, s2);
     if __lzo_likely(len > 0) do
     {
         int d = *p1 - *p2;
@@ -2476,8 +4220,8 @@ LZOLIB_PUBLIC(int, lzo_hmemcmp) (const lzo_hvoid_p s1, const lzo_hvoid_p s2, lzo
 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len)
 {
 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCPY)
-    lzo_hbyte_p p1 = (lzo_hbyte_p) dest;
-    const lzo_hbyte_p p2 = (const lzo_hbyte_p) src;
+    lzo_hbyte_p p1 = LZO_STATIC_CAST(lzo_hbyte_p, dest);
+    const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, src);
     if (!(len > 0) || p1 == p2)
         return dest;
     do
@@ -2491,8 +4235,8 @@ LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p dest, const lzo_hvoid_p src
 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len)
 {
 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMMOVE)
-    lzo_hbyte_p p1 = (lzo_hbyte_p) dest;
-    const lzo_hbyte_p p2 = (const lzo_hbyte_p) src;
+    lzo_hbyte_p p1 = LZO_STATIC_CAST(lzo_hbyte_p, dest);
+    const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, src);
     if (!(len > 0) || p1 == p2)
         return dest;
     if (p1 < p2)
@@ -2514,16 +4258,17 @@ LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p dest, const lzo_hvoid_p sr
     return memmove(dest, src, len);
 #endif
 }
-LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int c, lzo_hsize_t len)
+LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int cc, lzo_hsize_t len)
 {
 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMSET)
-    lzo_hbyte_p p = (lzo_hbyte_p) s;
+    lzo_hbyte_p p = LZO_STATIC_CAST(lzo_hbyte_p, s);
+    unsigned char c = LZO_ITRUNC(unsigned char, cc);
     if __lzo_likely(len > 0) do
-        *p++ = (unsigned char) c;
+        *p++ = c;
     while __lzo_likely(--len > 0);
     return s;
 #else
-    return memset(s, c, len);
+    return memset(s, cc, len);
 #endif
 }
 #undef LZOLIB_PUBLIC
@@ -2532,103 +4277,28 @@ LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int c, lzo_hsize_t len)
 
 #if !defined(__LZO_IN_MINILZO)
 
-#define ACC_WANT_ACC_CHK_CH 1
-#undef ACCCHK_ASSERT
-
-    ACCCHK_ASSERT_IS_SIGNED_T(lzo_int)
-    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint)
-
-    ACCCHK_ASSERT_IS_SIGNED_T(lzo_int32)
-    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32)
-    ACCCHK_ASSERT((LZO_UINT32_C(1) << (int)(8*sizeof(LZO_UINT32_C(1))-1)) > 0)
-    ACCCHK_ASSERT(sizeof(lzo_uint32) >= 4)
-#if defined(LZO_UINT64_MAX)
-    ACCCHK_ASSERT(sizeof(lzo_uint64) == 8)
-    ACCCHK_ASSERT_IS_SIGNED_T(lzo_int64)
-    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint64)
-#endif
-
-#if !defined(__LZO_UINTPTR_T_IS_POINTER)
-    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t)
-#endif
-    ACCCHK_ASSERT(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
-
-    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_xint)
-    ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint32))
-    ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint))
-    ACCCHK_ASSERT(sizeof(lzo_xint) == sizeof(lzo_uint32) || sizeof(lzo_xint) == sizeof(lzo_uint))
+#define LZO_WANT_ACC_CHK_CH 1
+#undef LZOCHK_ASSERT
 
+    LZOCHK_ASSERT((LZO_UINT32_C(1) << (int)(8*sizeof(LZO_UINT32_C(1))-1)) > 0)
+    LZOCHK_ASSERT_IS_SIGNED_T(lzo_int)
+    LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint)
+#if !(__LZO_UINTPTR_T_IS_POINTER)
+    LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t)
 #endif
-#undef ACCCHK_ASSERT
+    LZOCHK_ASSERT(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
+    LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_xint)
 
-#define WANT_lzo_bitops_clz32 1
-#define WANT_lzo_bitops_clz64 1
-#define WANT_lzo_bitops_ctz32 1
-#define WANT_lzo_bitops_ctz64 1
-
-#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400)))
-#include <intrin.h>
-#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0
-#pragma intrinsic(_BitScanReverse)
-static __lzo_inline unsigned lzo_bitops_clz32(lzo_uint32 v)
-{
-    unsigned long r;
-    (void) _BitScanReverse(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_clz32 lzo_bitops_clz32
-#endif
-#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) && 0
-#pragma intrinsic(_BitScanReverse64)
-static __lzo_inline unsigned lzo_bitops_clz64(lzo_uint64 v)
-{
-    unsigned long r;
-    (void) _BitScanReverse64(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_clz64 lzo_bitops_clz64
-#endif
-#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
-#pragma intrinsic(_BitScanForward)
-static __lzo_inline unsigned lzo_bitops_ctz32(lzo_uint32 v)
-{
-    unsigned long r;
-    (void) _BitScanForward(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_ctz32 lzo_bitops_ctz32
-#endif
-#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX)
-#pragma intrinsic(_BitScanForward64)
-static __lzo_inline unsigned lzo_bitops_ctz64(lzo_uint64 v)
-{
-    unsigned long r;
-    (void) _BitScanForward64(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_ctz64 lzo_bitops_ctz64
 #endif
+#undef LZOCHK_ASSERT
 
-#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_LLVM && (!defined(__llvm_tools_version__) || (__llvm_tools_version__+0 >= 0x010500ul))))
-#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32)
-#define lzo_bitops_clz32(v) ((unsigned) __builtin_clz(v))
-#endif
-#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_clz64(v) ((unsigned) __builtin_clzll(v))
-#endif
-#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
-#define lzo_bitops_ctz32(v) ((unsigned) __builtin_ctz(v))
-#endif
-#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_ctz64(v) ((unsigned) __builtin_ctzll(v))
-#endif
-#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32)
-#define lzo_bitops_popcount32(v) ((unsigned) __builtin_popcount(v))
-#endif
-#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_popcount64(v) ((unsigned) __builtin_popcountll(v))
-#endif
+union lzo_config_check_union {
+    lzo_uint a[2];
+    unsigned char b[2*LZO_MAX(8,sizeof(lzo_uint))];
+#if defined(lzo_uint64_t)
+    lzo_uint64_t c[2];
 #endif
+};
 
 #if 0
 #define u2p(ptr,off) ((lzo_voidp) (((lzo_bytep)(lzo_voidp)(ptr)) + (off)))
@@ -2642,73 +4312,101 @@ static __lzo_noinline lzo_voidp u2p(lzo_voidp ptr, lzo_uint off)
 LZO_PUBLIC(int)
 _lzo_config_check(void)
 {
-    lzo_bool r = 1;
-    union {
-        lzo_xint a[2]; unsigned char b[2*LZO_MAX(8,sizeof(lzo_xint))];
-#if defined(LZO_UNALIGNED_OK_8)
-        lzo_uint64 c[2];
-#endif
-        unsigned short x[2]; lzo_uint32 y[2]; lzo_uint z[2];
-    } u;
+#if (LZO_CC_CLANG && (LZO_CC_CLANG >= 0x030100ul && LZO_CC_CLANG < 0x030300ul))
+# if 0
+    volatile
+# endif
+#endif
+    union lzo_config_check_union u;
     lzo_voidp p;
+    unsigned r = 1;
 
     u.a[0] = u.a[1] = 0;
     p = u2p(&u, 0);
     r &= ((* (lzo_bytep) p) == 0);
-#if !defined(LZO_CFG_NO_CONFIG_CHECK)
-#if defined(LZO_ABI_BIG_ENDIAN)
+#if !(LZO_CFG_NO_CONFIG_CHECK)
+#if (LZO_ABI_BIG_ENDIAN)
     u.a[0] = u.a[1] = 0; u.b[sizeof(lzo_uint) - 1] = 128;
     p = u2p(&u, 0);
     r &= ((* (lzo_uintp) p) == 128);
 #endif
-#if defined(LZO_ABI_LITTLE_ENDIAN)
+#if (LZO_ABI_LITTLE_ENDIAN)
     u.a[0] = u.a[1] = 0; u.b[0] = 128;
     p = u2p(&u, 0);
     r &= ((* (lzo_uintp) p) == 128);
 #endif
-#if defined(LZO_UNALIGNED_OK_2)
     u.a[0] = u.a[1] = 0;
-    u.b[0] = 1; u.b[sizeof(unsigned short) + 1] = 2;
+    u.b[0] = 1; u.b[3] = 2;
     p = u2p(&u, 1);
-    r &= ((* (lzo_ushortp) p) == 0);
+    r &= UA_GET_NE16(p) == 0;
+    r &= UA_GET_LE16(p) == 0;
+    u.b[1] = 128;
+    r &= UA_GET_LE16(p) == 128;
+    u.b[2] = 129;
+    r &= UA_GET_LE16(p) == LZO_UINT16_C(0x8180);
+#if (LZO_ABI_BIG_ENDIAN)
+    r &= UA_GET_NE16(p) == LZO_UINT16_C(0x8081);
+#endif
+#if (LZO_ABI_LITTLE_ENDIAN)
+    r &= UA_GET_NE16(p) == LZO_UINT16_C(0x8180);
 #endif
-#if defined(LZO_UNALIGNED_OK_4)
     u.a[0] = u.a[1] = 0;
-    u.b[0] = 3; u.b[sizeof(lzo_uint32) + 1] = 4;
+    u.b[0] = 3; u.b[5] = 4;
     p = u2p(&u, 1);
-    r &= ((* (lzo_uint32p) p) == 0);
+    r &= UA_GET_NE32(p) == 0;
+    r &= UA_GET_LE32(p) == 0;
+    u.b[1] = 128;
+    r &= UA_GET_LE32(p) == 128;
+    u.b[2] = 129; u.b[3] = 130; u.b[4] = 131;
+    r &= UA_GET_LE32(p) == LZO_UINT32_C(0x83828180);
+#if (LZO_ABI_BIG_ENDIAN)
+    r &= UA_GET_NE32(p) == LZO_UINT32_C(0x80818283);
 #endif
-#if defined(LZO_UNALIGNED_OK_8)
+#if (LZO_ABI_LITTLE_ENDIAN)
+    r &= UA_GET_NE32(p) == LZO_UINT32_C(0x83828180);
+#endif
+#if defined(UA_GET_NE64)
     u.c[0] = u.c[1] = 0;
-    u.b[0] = 5; u.b[sizeof(lzo_uint64) + 1] = 6;
+    u.b[0] = 5; u.b[9] = 6;
     p = u2p(&u, 1);
-    r &= ((* (lzo_uint64p) p) == 0);
-#endif
-#if defined(lzo_bitops_clz32)
-    { unsigned i; lzo_uint32 v = 1;
-    for (i = 0; i < 32; i++, v <<= 1)
-        r &= lzo_bitops_clz32(v) == 31 - i;
-    }
-#endif
-#if defined(lzo_bitops_clz64)
-    { unsigned i; lzo_uint64 v = 1;
-    for (i = 0; i < 64; i++, v <<= 1)
-        r &= lzo_bitops_clz64(v) == 63 - i;
-    }
-#endif
-#if defined(lzo_bitops_ctz32)
-    { unsigned i; lzo_uint32 v = 1;
-    for (i = 0; i < 32; i++, v <<= 1)
-        r &= lzo_bitops_ctz32(v) == i;
-    }
-#endif
-#if defined(lzo_bitops_ctz64)
-    { unsigned i; lzo_uint64 v = 1;
-    for (i = 0; i < 64; i++, v <<= 1)
-        r &= lzo_bitops_ctz64(v) == i;
-    }
-#endif
-#endif
+    u.c[0] = u.c[1] = 0;
+    r &= UA_GET_NE64(p) == 0;
+#if defined(UA_GET_LE64)
+    r &= UA_GET_LE64(p) == 0;
+    u.b[1] = 128;
+    r &= UA_GET_LE64(p) == 128;
+#endif
+#endif
+#if defined(lzo_bitops_ctlz32)
+    { unsigned i = 0; lzo_uint32_t v;
+    for (v = 1; v != 0 && r == 1; v <<= 1, i++) {
+        r &= lzo_bitops_ctlz32(v) == 31 - i;
+        r &= lzo_bitops_ctlz32_func(v) == 31 - i;
+    }}
+#endif
+#if defined(lzo_bitops_ctlz64)
+    { unsigned i = 0; lzo_uint64_t v;
+    for (v = 1; v != 0 && r == 1; v <<= 1, i++) {
+        r &= lzo_bitops_ctlz64(v) == 63 - i;
+        r &= lzo_bitops_ctlz64_func(v) == 63 - i;
+    }}
+#endif
+#if defined(lzo_bitops_cttz32)
+    { unsigned i = 0; lzo_uint32_t v;
+    for (v = 1; v != 0 && r == 1; v <<= 1, i++) {
+        r &= lzo_bitops_cttz32(v) == i;
+        r &= lzo_bitops_cttz32_func(v) == i;
+    }}
+#endif
+#if defined(lzo_bitops_cttz64)
+    { unsigned i = 0; lzo_uint64_t v;
+    for (v = 1; v != 0 && r == 1; v <<= 1, i++) {
+        r &= lzo_bitops_cttz64(v) == i;
+        r &= lzo_bitops_cttz64_func(v) == i;
+    }}
+#endif
+#endif
+    LZO_UNUSED_FUNC(lzo_bitops_unused_funcs);
 
     return r == 1 ? LZO_E_OK : LZO_E_ERROR;
 }
@@ -2722,11 +4420,11 @@ __lzo_init_v2(unsigned v, int s1, int s2, int s3, int s4, int s5,
 #if defined(__LZO_IN_MINILZO)
 #elif (LZO_CC_MSC && ((_MSC_VER) < 700))
 #else
-#define ACC_WANT_ACC_CHK_CH 1
-#undef ACCCHK_ASSERT
-#define ACCCHK_ASSERT(expr)  LZO_COMPILE_TIME_ASSERT(expr)
+#define LZO_WANT_ACC_CHK_CH 1
+#undef LZOCHK_ASSERT
+#define LZOCHK_ASSERT(expr)  LZO_COMPILE_TIME_ASSERT(expr)
 #endif
-#undef ACCCHK_ASSERT
+#undef LZOCHK_ASSERT
 
     if (v == 0)
         return LZO_E_ERROR;
@@ -2734,7 +4432,7 @@ __lzo_init_v2(unsigned v, int s1, int s2, int s3, int s4, int s5,
     r = (s1 == -1 || s1 == (int) sizeof(short)) &&
         (s2 == -1 || s2 == (int) sizeof(int)) &&
         (s3 == -1 || s3 == (int) sizeof(long)) &&
-        (s4 == -1 || s4 == (int) sizeof(lzo_uint32)) &&
+        (s4 == -1 || s4 == (int) sizeof(lzo_uint32_t)) &&
         (s5 == -1 || s5 == (int) sizeof(lzo_uint)) &&
         (s6 == -1 || s6 == (int) lzo_sizeof_dict_t) &&
         (s7 == -1 || s7 == (int) sizeof(char *)) &&
@@ -2777,11 +4475,11 @@ int __far __pascal LibMain ( int a, short b, short c, long d )
 
 #if !defined(MINILZO_CFG_SKIP_LZO1X_1_COMPRESS)
 
-#if 1 && defined(UA_GET32)
+#if 1 && defined(UA_GET_LE32)
 #undef  LZO_DICT_USE_PTR
 #define LZO_DICT_USE_PTR 0
 #undef  lzo_dict_t
-#define lzo_dict_t unsigned short
+#define lzo_dict_t lzo_uint16_t
 #endif
 
 #define LZO_NEED_DICT_H 1
@@ -2804,7 +4502,7 @@ int __far __pascal LibMain ( int a, short b, short c, long d )
 #endif
 
 #if !defined(__LZO_IN_MINILZO)
-#include "lzo/lzo1x.h"
+#include <lzo/lzo1x.h>
 #endif
 
 #ifndef LZO_EOF_CODE
@@ -2996,7 +4694,7 @@ extern "C" {
 
 #if !defined(DVAL_ASSERT)
 #if defined(__LZO_HASH_INCREMENTAL) && !defined(NDEBUG)
-#if (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_LLVM)
+#if 1 && (LZO_CC_ARMCC_GNUC || LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_INTELC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
 static void __attribute__((__unused__))
 #else
 static void
@@ -3086,81 +4784,7 @@ DVAL_ASSERT(lzo_xint dv, const lzo_bytep p)
 #endif
 
 #if 1 && defined(DO_COMPRESS) && !defined(do_compress)
-#  define do_compress       LZO_CPP_ECONCAT2(DO_COMPRESS,_core)
-#endif
-
-#if defined(UA_GET64) && (LZO_ABI_BIG_ENDIAN)
-#  define WANT_lzo_bitops_clz64 1
-#elif defined(UA_GET64) && (LZO_ABI_LITTLE_ENDIAN)
-#  define WANT_lzo_bitops_ctz64 1
-#elif defined(UA_GET32) && (LZO_ABI_BIG_ENDIAN)
-#  define WANT_lzo_bitops_clz32 1
-#elif defined(UA_GET32) && (LZO_ABI_LITTLE_ENDIAN)
-#  define WANT_lzo_bitops_ctz32 1
-#endif
-
-#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400)))
-#include <intrin.h>
-#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0
-#pragma intrinsic(_BitScanReverse)
-static __lzo_inline unsigned lzo_bitops_clz32(lzo_uint32 v)
-{
-    unsigned long r;
-    (void) _BitScanReverse(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_clz32 lzo_bitops_clz32
-#endif
-#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) && 0
-#pragma intrinsic(_BitScanReverse64)
-static __lzo_inline unsigned lzo_bitops_clz64(lzo_uint64 v)
-{
-    unsigned long r;
-    (void) _BitScanReverse64(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_clz64 lzo_bitops_clz64
-#endif
-#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
-#pragma intrinsic(_BitScanForward)
-static __lzo_inline unsigned lzo_bitops_ctz32(lzo_uint32 v)
-{
-    unsigned long r;
-    (void) _BitScanForward(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_ctz32 lzo_bitops_ctz32
-#endif
-#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX)
-#pragma intrinsic(_BitScanForward64)
-static __lzo_inline unsigned lzo_bitops_ctz64(lzo_uint64 v)
-{
-    unsigned long r;
-    (void) _BitScanForward64(&r, v);
-    return (unsigned) r;
-}
-#define lzo_bitops_ctz64 lzo_bitops_ctz64
-#endif
-
-#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_LLVM && (!defined(__llvm_tools_version__) || (__llvm_tools_version__+0 >= 0x010500ul))))
-#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32)
-#define lzo_bitops_clz32(v) ((unsigned) __builtin_clz(v))
-#endif
-#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_clz64(v) ((unsigned) __builtin_clzll(v))
-#endif
-#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
-#define lzo_bitops_ctz32(v) ((unsigned) __builtin_ctz(v))
-#endif
-#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_ctz64(v) ((unsigned) __builtin_ctzll(v))
-#endif
-#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32)
-#define lzo_bitops_popcount32(v) ((unsigned) __builtin_popcount(v))
-#endif
-#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX)
-#define lzo_bitops_popcount64(v) ((unsigned) __builtin_popcountll(v))
-#endif
+#  define do_compress       LZO_PP_ECONCAT2(DO_COMPRESS,_core)
 #endif
 
 static __lzo_noinline lzo_uint
@@ -3168,7 +4792,7 @@ do_compress ( const lzo_bytep in , lzo_uint  in_len,
                     lzo_bytep out, lzo_uintp out_len,
                     lzo_uint  ti,  lzo_voidp wrkmem)
 {
-    register const lzo_bytep ip;
+    const lzo_bytep ip;
     lzo_bytep op;
     const lzo_bytep const in_end = in + in_len;
     const lzo_bytep const ip_end = in + in_len - 20;
@@ -3207,8 +4831,8 @@ next:
         goto literal;
 
 try_match:
-#if defined(UA_GET32)
-        if (UA_GET32(m_pos) != UA_GET32(ip))
+#if (LZO_OPT_UNALIGNED32)
+        if (UA_GET_NE32(m_pos) != UA_GET_NE32(ip))
 #else
         if (m_pos[0] != ip[0] || m_pos[1] != ip[1] || m_pos[2] != ip[2] || m_pos[3] != ip[3])
 #endif
@@ -3223,50 +4847,43 @@ literal:
         lzo_uint m_off;
         lzo_uint m_len;
         {
-        lzo_uint32 dv;
+        lzo_uint32_t dv;
         lzo_uint dindex;
 literal:
         ip += 1 + ((ip - ii) >> 5);
 next:
         if __lzo_unlikely(ip >= ip_end)
             break;
-        dv = UA_GET32(ip);
+        dv = UA_GET_LE32(ip);
         dindex = DINDEX(dv,ip);
         GINDEX(m_off,m_pos,in+dict,dindex,in);
         UPDATE_I(dict,0,dindex,ip,in);
-        if __lzo_unlikely(dv != UA_GET32(m_pos))
+        if __lzo_unlikely(dv != UA_GET_LE32(m_pos))
             goto literal;
         }
 #endif
 
         ii -= ti; ti = 0;
         {
-        register lzo_uint t = pd(ip,ii);
+        lzo_uint t = pd(ip,ii);
         if (t != 0)
         {
             if (t <= 3)
             {
-                op[-2] |= LZO_BYTE(t);
-#if defined(UA_COPY32)
-                UA_COPY32(op, ii);
+                op[-2] = LZO_BYTE(op[-2] | t);
+#if (LZO_OPT_UNALIGNED32)
+                UA_COPY4(op, ii);
                 op += t;
 #else
                 { do *op++ = *ii++; while (--t > 0); }
 #endif
             }
-#if defined(UA_COPY32) || defined(UA_COPY64)
+#if (LZO_OPT_UNALIGNED32) || (LZO_OPT_UNALIGNED64)
             else if (t <= 16)
             {
                 *op++ = LZO_BYTE(t - 3);
-#if defined(UA_COPY64)
-                UA_COPY64(op, ii);
-                UA_COPY64(op+8, ii+8);
-#else
-                UA_COPY32(op, ii);
-                UA_COPY32(op+4, ii+4);
-                UA_COPY32(op+8, ii+8);
-                UA_COPY32(op+12, ii+12);
-#endif
+                UA_COPY8(op, ii);
+                UA_COPY8(op+8, ii+8);
                 op += t;
             }
 #endif
@@ -3276,31 +4893,21 @@ next:
                     *op++ = LZO_BYTE(t - 3);
                 else
                 {
-                    register lzo_uint tt = t - 18;
+                    lzo_uint tt = t - 18;
                     *op++ = 0;
                     while __lzo_unlikely(tt > 255)
                     {
                         tt -= 255;
-#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400))
-                        * (volatile unsigned char *) op++ = 0;
-#else
-                        *op++ = 0;
-#endif
+                        UA_SET1(op, 0);
+                        op++;
                     }
                     assert(tt > 0);
                     *op++ = LZO_BYTE(tt);
                 }
-#if defined(UA_COPY32) || defined(UA_COPY64)
+#if (LZO_OPT_UNALIGNED32) || (LZO_OPT_UNALIGNED64)
                 do {
-#if defined(UA_COPY64)
-                    UA_COPY64(op, ii);
-                    UA_COPY64(op+8, ii+8);
-#else
-                    UA_COPY32(op, ii);
-                    UA_COPY32(op+4, ii+4);
-                    UA_COPY32(op+8, ii+8);
-                    UA_COPY32(op+12, ii+12);
-#endif
+                    UA_COPY8(op, ii);
+                    UA_COPY8(op+8, ii+8);
                     op += 16; ii += 16; t -= 16;
                 } while (t >= 16); if (t > 0)
 #endif
@@ -3310,26 +4917,26 @@ next:
         }
         m_len = 4;
         {
-#if defined(UA_GET64)
-        lzo_uint64 v;
-        v = UA_GET64(ip + m_len) ^ UA_GET64(m_pos + m_len);
+#if (LZO_OPT_UNALIGNED64)
+        lzo_uint64_t v;
+        v = UA_GET_NE64(ip + m_len) ^ UA_GET_NE64(m_pos + m_len);
         if __lzo_unlikely(v == 0) {
             do {
                 m_len += 8;
-                v = UA_GET64(ip + m_len) ^ UA_GET64(m_pos + m_len);
+                v = UA_GET_NE64(ip + m_len) ^ UA_GET_NE64(m_pos + m_len);
                 if __lzo_unlikely(ip + m_len >= ip_end)
                     goto m_len_done;
             } while (v == 0);
         }
-#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_clz64)
-        m_len += lzo_bitops_clz64(v) / CHAR_BIT;
+#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_ctlz64)
+        m_len += lzo_bitops_ctlz64(v) / CHAR_BIT;
 #elif (LZO_ABI_BIG_ENDIAN)
         if ((v >> (64 - CHAR_BIT)) == 0) do {
             v <<= CHAR_BIT;
             m_len += 1;
         } while ((v >> (64 - CHAR_BIT)) == 0);
-#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz64)
-        m_len += lzo_bitops_ctz64(v) / CHAR_BIT;
+#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_cttz64)
+        m_len += lzo_bitops_cttz64(v) / CHAR_BIT;
 #elif (LZO_ABI_LITTLE_ENDIAN)
         if ((v & UCHAR_MAX) == 0) do {
             v >>= CHAR_BIT;
@@ -3340,26 +4947,30 @@ next:
             m_len += 1;
         } while (ip[m_len] == m_pos[m_len]);
 #endif
-#elif defined(UA_GET32)
-        lzo_uint32 v;
-        v = UA_GET32(ip + m_len) ^ UA_GET32(m_pos + m_len);
+#elif (LZO_OPT_UNALIGNED32)
+        lzo_uint32_t v;
+        v = UA_GET_NE32(ip + m_len) ^ UA_GET_NE32(m_pos + m_len);
         if __lzo_unlikely(v == 0) {
             do {
                 m_len += 4;
-                v = UA_GET32(ip + m_len) ^ UA_GET32(m_pos + m_len);
+                v = UA_GET_NE32(ip + m_len) ^ UA_GET_NE32(m_pos + m_len);
+                if (v != 0)
+                    break;
+                m_len += 4;
+                v = UA_GET_NE32(ip + m_len) ^ UA_GET_NE32(m_pos + m_len);
                 if __lzo_unlikely(ip + m_len >= ip_end)
                     goto m_len_done;
             } while (v == 0);
         }
-#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_clz32)
-        m_len += lzo_bitops_clz32(v) / CHAR_BIT;
+#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_ctlz32)
+        m_len += lzo_bitops_ctlz32(v) / CHAR_BIT;
 #elif (LZO_ABI_BIG_ENDIAN)
         if ((v >> (32 - CHAR_BIT)) == 0) do {
             v <<= CHAR_BIT;
             m_len += 1;
         } while ((v >> (32 - CHAR_BIT)) == 0);
-#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz32)
-        m_len += lzo_bitops_ctz32(v) / CHAR_BIT;
+#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_cttz32)
+        m_len += lzo_bitops_cttz32(v) / CHAR_BIT;
 #elif (LZO_ABI_LITTLE_ENDIAN)
         if ((v & UCHAR_MAX) == 0) do {
             v >>= CHAR_BIT;
@@ -3374,6 +4985,27 @@ next:
         if __lzo_unlikely(ip[m_len] == m_pos[m_len]) {
             do {
                 m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
+                if (ip[m_len] != m_pos[m_len])
+                    break;
+                m_len += 1;
                 if __lzo_unlikely(ip + m_len >= ip_end)
                     goto m_len_done;
             } while (ip[m_len] == m_pos[m_len]);
@@ -3407,11 +5039,8 @@ m_len_done:
                 while __lzo_unlikely(m_len > 255)
                 {
                     m_len -= 255;
-#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400))
-                    * (volatile unsigned char *) op++ = 0;
-#else
-                    *op++ = 0;
-#endif
+                    UA_SET1(op, 0);
+                    op++;
                 }
                 *op++ = LZO_BYTE(m_len);
             }
@@ -3430,11 +5059,8 @@ m_len_done:
                 while __lzo_unlikely(m_len > 255)
                 {
                     m_len -= 255;
-#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400))
-                    * (volatile unsigned char *) op++ = 0;
-#else
-                    *op++ = 0;
-#endif
+                    UA_SET1(op, 0);
+                    op++;
                 }
                 *op++ = LZO_BYTE(m_len);
             }
@@ -3485,7 +5111,7 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
         if (op == out && t <= 238)
             *op++ = LZO_BYTE(17 + t);
         else if (t <= 3)
-            op[-2] |= LZO_BYTE(t);
+            op[-2] = LZO_BYTE(op[-2] | t);
         else if (t <= 18)
             *op++ = LZO_BYTE(t - 3);
         else
@@ -3496,17 +5122,14 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
             while (tt > 255)
             {
                 tt -= 255;
-#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400))
-
-                * (volatile unsigned char *) op++ = 0;
-#else
-                *op++ = 0;
-#endif
+                UA_SET1(op, 0);
+                op++;
             }
             assert(tt > 0);
             *op++ = LZO_BYTE(tt);
         }
-        do *op++ = *ii++; while (--t > 0);
+        UA_COPYN(op, ii, t);
+        op += t;
     }
 
     *op++ = M4_MARKER | 1;
@@ -3543,10 +5166,13 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
 
 #undef TEST_IP
 #undef TEST_OP
+#undef TEST_IP_AND_TEST_OP
 #undef TEST_LB
 #undef TEST_LBO
 #undef NEED_IP
 #undef NEED_OP
+#undef TEST_IV
+#undef TEST_OV
 #undef HAVE_TEST_IP
 #undef HAVE_TEST_OP
 #undef HAVE_NEED_IP
@@ -3561,6 +5187,7 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
 #  if (LZO_TEST_OVERRUN_INPUT >= 2)
 #    define NEED_IP(x) \
             if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
+#    define TEST_IV(x)          if ((x) >  (lzo_uint)0 - (511)) goto input_overrun
 #  endif
 #endif
 
@@ -3572,12 +5199,13 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
 #    undef TEST_OP
 #    define NEED_OP(x) \
             if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
+#    define TEST_OV(x)          if ((x) >  (lzo_uint)0 - (511)) goto output_overrun
 #  endif
 #endif
 
 #if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
-#  define TEST_LB(m_pos)        if (m_pos < out || m_pos >= op) goto lookbehind_overrun
-#  define TEST_LBO(m_pos,o)     if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun
+#  define TEST_LB(m_pos)        if (PTR_LT(m_pos,out) || PTR_GE(m_pos,op)) goto lookbehind_overrun
+#  define TEST_LBO(m_pos,o)     if (PTR_LT(m_pos,out) || PTR_GE(m_pos,op-(o))) goto lookbehind_overrun
 #else
 #  define TEST_LB(m_pos)        ((void) 0)
 #  define TEST_LBO(m_pos,o)     ((void) 0)
@@ -3598,15 +5226,27 @@ DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
 #  define TEST_OP               1
 #endif
 
+#if defined(HAVE_TEST_IP) && defined(HAVE_TEST_OP)
+#  define TEST_IP_AND_TEST_OP   (TEST_IP && TEST_OP)
+#elif defined(HAVE_TEST_IP)
+#  define TEST_IP_AND_TEST_OP   TEST_IP
+#elif defined(HAVE_TEST_OP)
+#  define TEST_IP_AND_TEST_OP   TEST_OP
+#else
+#  define TEST_IP_AND_TEST_OP   1
+#endif
+
 #if defined(NEED_IP)
 #  define HAVE_NEED_IP 1
 #else
 #  define NEED_IP(x)            ((void) 0)
+#  define TEST_IV(x)            ((void) 0)
 #endif
 #if defined(NEED_OP)
 #  define HAVE_NEED_OP 1
 #else
 #  define NEED_OP(x)            ((void) 0)
+#  define TEST_OV(x)            ((void) 0)
 #endif
 
 #if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
@@ -3623,14 +5263,14 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
                        lzo_voidp wrkmem )
 #endif
 {
-    register lzo_bytep op;
-    register const lzo_bytep ip;
-    register lzo_uint t;
+    lzo_bytep op;
+    const lzo_bytep ip;
+    lzo_uint t;
 #if defined(COPY_DICT)
     lzo_uint m_off;
     const lzo_bytep dict_end;
 #else
-    register const lzo_bytep m_pos;
+    const lzo_bytep m_pos;
 #endif
 
     const lzo_bytep const ip_end = in + in_len;
@@ -3665,43 +5305,45 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
     op = out;
     ip = in;
 
+    NEED_IP(1);
     if (*ip > 17)
     {
         t = *ip++ - 17;
         if (t < 4)
             goto match_next;
-        assert(t > 0); NEED_OP(t); NEED_IP(t+1);
+        assert(t > 0); NEED_OP(t); NEED_IP(t+3);
         do *op++ = *ip++; while (--t > 0);
         goto first_literal_run;
     }
 
-    while (TEST_IP && TEST_OP)
+    for (;;)
     {
+        NEED_IP(3);
         t = *ip++;
         if (t >= 16)
             goto match;
         if (t == 0)
         {
-            NEED_IP(1);
             while (*ip == 0)
             {
                 t += 255;
                 ip++;
+                TEST_IV(t);
                 NEED_IP(1);
             }
             t += 15 + *ip++;
         }
-        assert(t > 0); NEED_OP(t+3); NEED_IP(t+4);
-#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
+        assert(t > 0); NEED_OP(t+3); NEED_IP(t+6);
+#if (LZO_OPT_UNALIGNED64) && (LZO_OPT_UNALIGNED32)
         t += 3;
         if (t >= 8) do
         {
-            UA_COPY64(op,ip);
+            UA_COPY8(op,ip);
             op += 8; ip += 8; t -= 8;
         } while (t >= 8);
         if (t >= 4)
         {
-            UA_COPY32(op,ip);
+            UA_COPY4(op,ip);
             op += 4; ip += 4; t -= 4;
         }
         if (t > 0)
@@ -3709,19 +5351,19 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
             *op++ = *ip++;
             if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
         }
-#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
-#if !defined(LZO_UNALIGNED_OK_4)
+#elif (LZO_OPT_UNALIGNED32) || (LZO_ALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
         if (PTR_ALIGNED2_4(op,ip))
         {
 #endif
-        UA_COPY32(op,ip);
+        UA_COPY4(op,ip);
         op += 4; ip += 4;
         if (--t > 0)
         {
             if (t >= 4)
             {
                 do {
-                    UA_COPY32(op,ip);
+                    UA_COPY4(op,ip);
                     op += 4; ip += 4; t -= 4;
                 } while (t >= 4);
                 if (t > 0) do *op++ = *ip++; while (--t > 0);
@@ -3729,12 +5371,12 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
             else
                 do *op++ = *ip++; while (--t > 0);
         }
-#if !defined(LZO_UNALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
         }
         else
 #endif
 #endif
-#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8)
+#if !(LZO_OPT_UNALIGNED32)
         {
             *op++ = *ip++; *op++ = *ip++; *op++ = *ip++;
             do *op++ = *ip++; while (--t > 0);
@@ -3770,7 +5412,7 @@ first_literal_run:
 #endif
         goto match_done;
 
-        do {
+        for (;;) {
 match:
             if (t >= 64)
             {
@@ -3830,14 +5472,15 @@ match:
                 t &= 31;
                 if (t == 0)
                 {
-                    NEED_IP(1);
                     while (*ip == 0)
                     {
                         t += 255;
                         ip++;
+                        TEST_OV(t);
                         NEED_IP(1);
                     }
                     t += 31 + *ip++;
+                    NEED_IP(2);
                 }
 #if defined(COPY_DICT)
 #if defined(LZO1Z)
@@ -3853,9 +5496,9 @@ match:
                     m_pos = op - off;
                     last_m_off = off;
                 }
-#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
+#elif (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
                 m_pos = op - 1;
-                m_pos -= UA_GET16(ip) >> 2;
+                m_pos -= UA_GET_LE16(ip) >> 2;
 #else
                 m_pos = op - 1;
                 m_pos -= (ip[0] >> 2) + (ip[1] << 6);
@@ -3874,14 +5517,15 @@ match:
                 t &= 7;
                 if (t == 0)
                 {
-                    NEED_IP(1);
                     while (*ip == 0)
                     {
                         t += 255;
                         ip++;
+                        TEST_OV(t);
                         NEED_IP(1);
                     }
                     t += 7 + *ip++;
+                    NEED_IP(2);
                 }
 #if defined(COPY_DICT)
 #if defined(LZO1Z)
@@ -3899,8 +5543,8 @@ match:
 #else
 #if defined(LZO1Z)
                 m_pos -= (ip[0] << 6) + (ip[1] >> 2);
-#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
-                m_pos -= UA_GET16(ip) >> 2;
+#elif (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
+                m_pos -= UA_GET_LE16(ip) >> 2;
 #else
                 m_pos -= (ip[0] >> 2) + (ip[1] << 6);
 #endif
@@ -3948,18 +5592,18 @@ match:
 #else
 
             TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
-#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
+#if (LZO_OPT_UNALIGNED64) && (LZO_OPT_UNALIGNED32)
             if (op - m_pos >= 8)
             {
                 t += (3 - 1);
                 if (t >= 8) do
                 {
-                    UA_COPY64(op,m_pos);
+                    UA_COPY8(op,m_pos);
                     op += 8; m_pos += 8; t -= 8;
                 } while (t >= 8);
                 if (t >= 4)
                 {
-                    UA_COPY32(op,m_pos);
+                    UA_COPY4(op,m_pos);
                     op += 4; m_pos += 4; t -= 4;
                 }
                 if (t > 0)
@@ -3969,8 +5613,8 @@ match:
                 }
             }
             else
-#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
-#if !defined(LZO_UNALIGNED_OK_4)
+#elif (LZO_OPT_UNALIGNED32) || (LZO_ALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
             if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos))
             {
                 assert((op - m_pos) >= 4);
@@ -3978,10 +5622,10 @@ match:
             if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4)
             {
 #endif
-                UA_COPY32(op,m_pos);
+                UA_COPY4(op,m_pos);
                 op += 4; m_pos += 4; t -= 4 - (3 - 1);
                 do {
-                    UA_COPY32(op,m_pos);
+                    UA_COPY4(op,m_pos);
                     op += 4; m_pos += 4; t -= 4;
                 } while (t >= 4);
                 if (t > 0) do *op++ = *m_pos++; while (--t > 0);
@@ -4006,7 +5650,7 @@ match_done:
                 break;
 
 match_next:
-            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1);
+            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+3);
 #if 0
             do *op++ = *ip++; while (--t > 0);
 #else
@@ -4014,16 +5658,10 @@ match_next:
             if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
 #endif
             t = *ip++;
-        } while (TEST_IP && TEST_OP);
+        }
     }
 
-#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
-    *out_len = pd(op, out);
-    return LZO_E_EOF_NOT_FOUND;
-#endif
-
 eof_found:
-    assert(t == 1);
     *out_len = pd(op, out);
     return (ip == ip_end ? LZO_E_OK :
            (ip < ip_end  ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
@@ -4069,10 +5707,13 @@ lookbehind_overrun:
 
 #undef TEST_IP
 #undef TEST_OP
+#undef TEST_IP_AND_TEST_OP
 #undef TEST_LB
 #undef TEST_LBO
 #undef NEED_IP
 #undef NEED_OP
+#undef TEST_IV
+#undef TEST_OV
 #undef HAVE_TEST_IP
 #undef HAVE_TEST_OP
 #undef HAVE_NEED_IP
@@ -4087,6 +5728,7 @@ lookbehind_overrun:
 #  if (LZO_TEST_OVERRUN_INPUT >= 2)
 #    define NEED_IP(x) \
             if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
+#    define TEST_IV(x)          if ((x) >  (lzo_uint)0 - (511)) goto input_overrun
 #  endif
 #endif
 
@@ -4098,12 +5740,13 @@ lookbehind_overrun:
 #    undef TEST_OP
 #    define NEED_OP(x) \
             if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
+#    define TEST_OV(x)          if ((x) >  (lzo_uint)0 - (511)) goto output_overrun
 #  endif
 #endif
 
 #if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
-#  define TEST_LB(m_pos)        if (m_pos < out || m_pos >= op) goto lookbehind_overrun
-#  define TEST_LBO(m_pos,o)     if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun
+#  define TEST_LB(m_pos)        if (PTR_LT(m_pos,out) || PTR_GE(m_pos,op)) goto lookbehind_overrun
+#  define TEST_LBO(m_pos,o)     if (PTR_LT(m_pos,out) || PTR_GE(m_pos,op-(o))) goto lookbehind_overrun
 #else
 #  define TEST_LB(m_pos)        ((void) 0)
 #  define TEST_LBO(m_pos,o)     ((void) 0)
@@ -4124,15 +5767,27 @@ lookbehind_overrun:
 #  define TEST_OP               1
 #endif
 
+#if defined(HAVE_TEST_IP) && defined(HAVE_TEST_OP)
+#  define TEST_IP_AND_TEST_OP   (TEST_IP && TEST_OP)
+#elif defined(HAVE_TEST_IP)
+#  define TEST_IP_AND_TEST_OP   TEST_IP
+#elif defined(HAVE_TEST_OP)
+#  define TEST_IP_AND_TEST_OP   TEST_OP
+#else
+#  define TEST_IP_AND_TEST_OP   1
+#endif
+
 #if defined(NEED_IP)
 #  define HAVE_NEED_IP 1
 #else
 #  define NEED_IP(x)            ((void) 0)
+#  define TEST_IV(x)            ((void) 0)
 #endif
 #if defined(NEED_OP)
 #  define HAVE_NEED_OP 1
 #else
 #  define NEED_OP(x)            ((void) 0)
+#  define TEST_OV(x)            ((void) 0)
 #endif
 
 #if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
@@ -4149,14 +5804,14 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
                        lzo_voidp wrkmem )
 #endif
 {
-    register lzo_bytep op;
-    register const lzo_bytep ip;
-    register lzo_uint t;
+    lzo_bytep op;
+    const lzo_bytep ip;
+    lzo_uint t;
 #if defined(COPY_DICT)
     lzo_uint m_off;
     const lzo_bytep dict_end;
 #else
-    register const lzo_bytep m_pos;
+    const lzo_bytep m_pos;
 #endif
 
     const lzo_bytep const ip_end = in + in_len;
@@ -4191,43 +5846,45 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
     op = out;
     ip = in;
 
+    NEED_IP(1);
     if (*ip > 17)
     {
         t = *ip++ - 17;
         if (t < 4)
             goto match_next;
-        assert(t > 0); NEED_OP(t); NEED_IP(t+1);
+        assert(t > 0); NEED_OP(t); NEED_IP(t+3);
         do *op++ = *ip++; while (--t > 0);
         goto first_literal_run;
     }
 
-    while (TEST_IP && TEST_OP)
+    for (;;)
     {
+        NEED_IP(3);
         t = *ip++;
         if (t >= 16)
             goto match;
         if (t == 0)
         {
-            NEED_IP(1);
             while (*ip == 0)
             {
                 t += 255;
                 ip++;
+                TEST_IV(t);
                 NEED_IP(1);
             }
             t += 15 + *ip++;
         }
-        assert(t > 0); NEED_OP(t+3); NEED_IP(t+4);
-#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
+        assert(t > 0); NEED_OP(t+3); NEED_IP(t+6);
+#if (LZO_OPT_UNALIGNED64) && (LZO_OPT_UNALIGNED32)
         t += 3;
         if (t >= 8) do
         {
-            UA_COPY64(op,ip);
+            UA_COPY8(op,ip);
             op += 8; ip += 8; t -= 8;
         } while (t >= 8);
         if (t >= 4)
         {
-            UA_COPY32(op,ip);
+            UA_COPY4(op,ip);
             op += 4; ip += 4; t -= 4;
         }
         if (t > 0)
@@ -4235,19 +5892,19 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
             *op++ = *ip++;
             if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
         }
-#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
-#if !defined(LZO_UNALIGNED_OK_4)
+#elif (LZO_OPT_UNALIGNED32) || (LZO_ALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
         if (PTR_ALIGNED2_4(op,ip))
         {
 #endif
-        UA_COPY32(op,ip);
+        UA_COPY4(op,ip);
         op += 4; ip += 4;
         if (--t > 0)
         {
             if (t >= 4)
             {
                 do {
-                    UA_COPY32(op,ip);
+                    UA_COPY4(op,ip);
                     op += 4; ip += 4; t -= 4;
                 } while (t >= 4);
                 if (t > 0) do *op++ = *ip++; while (--t > 0);
@@ -4255,12 +5912,12 @@ DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
             else
                 do *op++ = *ip++; while (--t > 0);
         }
-#if !defined(LZO_UNALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
         }
         else
 #endif
 #endif
-#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8)
+#if !(LZO_OPT_UNALIGNED32)
         {
             *op++ = *ip++; *op++ = *ip++; *op++ = *ip++;
             do *op++ = *ip++; while (--t > 0);
@@ -4296,7 +5953,7 @@ first_literal_run:
 #endif
         goto match_done;
 
-        do {
+        for (;;) {
 match:
             if (t >= 64)
             {
@@ -4356,14 +6013,15 @@ match:
                 t &= 31;
                 if (t == 0)
                 {
-                    NEED_IP(1);
                     while (*ip == 0)
                     {
                         t += 255;
                         ip++;
+                        TEST_OV(t);
                         NEED_IP(1);
                     }
                     t += 31 + *ip++;
+                    NEED_IP(2);
                 }
 #if defined(COPY_DICT)
 #if defined(LZO1Z)
@@ -4379,9 +6037,9 @@ match:
                     m_pos = op - off;
                     last_m_off = off;
                 }
-#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
+#elif (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
                 m_pos = op - 1;
-                m_pos -= UA_GET16(ip) >> 2;
+                m_pos -= UA_GET_LE16(ip) >> 2;
 #else
                 m_pos = op - 1;
                 m_pos -= (ip[0] >> 2) + (ip[1] << 6);
@@ -4400,14 +6058,15 @@ match:
                 t &= 7;
                 if (t == 0)
                 {
-                    NEED_IP(1);
                     while (*ip == 0)
                     {
                         t += 255;
                         ip++;
+                        TEST_OV(t);
                         NEED_IP(1);
                     }
                     t += 7 + *ip++;
+                    NEED_IP(2);
                 }
 #if defined(COPY_DICT)
 #if defined(LZO1Z)
@@ -4425,8 +6084,8 @@ match:
 #else
 #if defined(LZO1Z)
                 m_pos -= (ip[0] << 6) + (ip[1] >> 2);
-#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
-                m_pos -= UA_GET16(ip) >> 2;
+#elif (LZO_OPT_UNALIGNED16) && (LZO_ABI_LITTLE_ENDIAN)
+                m_pos -= UA_GET_LE16(ip) >> 2;
 #else
                 m_pos -= (ip[0] >> 2) + (ip[1] << 6);
 #endif
@@ -4474,18 +6133,18 @@ match:
 #else
 
             TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
-#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
+#if (LZO_OPT_UNALIGNED64) && (LZO_OPT_UNALIGNED32)
             if (op - m_pos >= 8)
             {
                 t += (3 - 1);
                 if (t >= 8) do
                 {
-                    UA_COPY64(op,m_pos);
+                    UA_COPY8(op,m_pos);
                     op += 8; m_pos += 8; t -= 8;
                 } while (t >= 8);
                 if (t >= 4)
                 {
-                    UA_COPY32(op,m_pos);
+                    UA_COPY4(op,m_pos);
                     op += 4; m_pos += 4; t -= 4;
                 }
                 if (t > 0)
@@ -4495,8 +6154,8 @@ match:
                 }
             }
             else
-#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
-#if !defined(LZO_UNALIGNED_OK_4)
+#elif (LZO_OPT_UNALIGNED32) || (LZO_ALIGNED_OK_4)
+#if !(LZO_OPT_UNALIGNED32)
             if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos))
             {
                 assert((op - m_pos) >= 4);
@@ -4504,10 +6163,10 @@ match:
             if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4)
             {
 #endif
-                UA_COPY32(op,m_pos);
+                UA_COPY4(op,m_pos);
                 op += 4; m_pos += 4; t -= 4 - (3 - 1);
                 do {
-                    UA_COPY32(op,m_pos);
+                    UA_COPY4(op,m_pos);
                     op += 4; m_pos += 4; t -= 4;
                 } while (t >= 4);
                 if (t > 0) do *op++ = *m_pos++; while (--t > 0);
@@ -4532,7 +6191,7 @@ match_done:
                 break;
 
 match_next:
-            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1);
+            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+3);
 #if 0
             do *op++ = *ip++; while (--t > 0);
 #else
@@ -4540,16 +6199,10 @@ match_next:
             if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
 #endif
             t = *ip++;
-        } while (TEST_IP && TEST_OP);
+        }
     }
 
-#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
-    *out_len = pd(op, out);
-    return LZO_E_EOF_NOT_FOUND;
-#endif
-
 eof_found:
-    assert(t == 1);
     *out_len = pd(op, out);
     return (ip == ip_end ? LZO_E_OK :
            (ip < ip_end  ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
@@ -4576,4 +6229,3 @@ lookbehind_overrun:
 #endif
 
 /***** End of minilzo.c *****/
-
diff --git a/ica/x11/common/minilzo.h b/ica/x11/common/minilzo.h
index 4c7b237..e5adc6e 100644
--- a/ica/x11/common/minilzo.h
+++ b/ica/x11/common/minilzo.h
@@ -2,22 +2,7 @@
 
    This file is part of the LZO real-time data compression library.
 
-   Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
-   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+   Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
    All Rights Reserved.
 
    The LZO library is free software; you can redistribute it and/or
@@ -47,15 +32,25 @@
  */
 
 
-#ifndef __MINILZO_H
-#define __MINILZO_H 1
+#ifndef __MINILZO_H_INCLUDED
+#define __MINILZO_H_INCLUDED 1
 
-#define MINILZO_VERSION         0x2060
+#define MINILZO_VERSION         0x2090
 
-#ifdef __LZOCONF_H
+#if defined(__LZOCONF_H_INCLUDED)
 #  error "you cannot use both LZO and miniLZO"
 #endif
 
+/* internal Autoconf configuration file - only used when building miniLZO */
+#ifdef MINILZO_HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include <limits.h>
+#include <stddef.h>
+
+#ifndef __LZODEFS_H_INCLUDED
+#include "lzodefs.h"
+#endif
 #undef LZO_HAVE_CONFIG_H
 #include "lzoconf.h"
 
@@ -78,7 +73,7 @@ extern "C" {
  */
 
 #define LZO1X_MEM_COMPRESS      LZO1X_1_MEM_COMPRESS
-#define LZO1X_1_MEM_COMPRESS    ((lzo_uint32) (16384L * lzo_sizeof_dict_t))
+#define LZO1X_1_MEM_COMPRESS    ((lzo_uint32_t) (16384L * lzo_sizeof_dict_t))
 #define LZO1X_MEM_DECOMPRESS    (0)
 
 
@@ -107,3 +102,5 @@ lzo1x_decompress_safe   ( const lzo_bytep src, lzo_uint  src_len,
 
 #endif /* already included */
 
+
+/* vim:set ts=4 sw=4 et: */
diff --git a/ica/x11/libvncclient/cursor.c b/ica/x11/libvncclient/cursor.c
index a48d7c5..67f4572 100644
--- a/ica/x11/libvncclient/cursor.c
+++ b/ica/x11/libvncclient/cursor.c
@@ -37,12 +37,6 @@
     << client->format.blueShift)
 
 
-/*********************************************************************
- * HandleCursorShape(). Support for XCursor and RichCursor shape
- * updates. We emulate cursor operating on the frame buffer (that is
- * why we call it "software cursor").
- ********************************************************************/
-
 rfbBool HandleCursorShape(rfbClient* client,int xhot, int yhot, int width, int height, uint32_t enc)
 {
   int bytesPerPixel;
diff --git a/ica/x11/libvncclient/h264.c b/ica/x11/libvncclient/h264.c
deleted file mode 100644
index 1d94454..0000000
--- a/ica/x11/libvncclient/h264.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- *  Copyright (C) 2012 Intel Corporation.  All Rights Reserved.
- *
- *  This 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 2 of the License, or
- *  (at your option) any later version.
- *
- *  This software 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 software; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
- *  USA.
- */
-
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-
-#include <X11/Xlib.h>
-#include <va/va_x11.h>
-
-enum _slice_types {
-	SLICE_TYPE_P = 0,  /* Predicted */
-	SLICE_TYPE_B = 1,  /* Bi-predicted */
-	SLICE_TYPE_I = 2,  /* Intra coded */
-};
-
-#define SURFACE_NUM     7
-
-VADisplay       va_dpy = NULL;
-VAConfigID      va_config_id;
-VASurfaceID     va_surface_id[SURFACE_NUM];
-VAContextID     va_context_id = 0;
-
-VABufferID      va_pic_param_buf_id[SURFACE_NUM];
-VABufferID      va_mat_param_buf_id[SURFACE_NUM];
-VABufferID      va_sp_param_buf_id[SURFACE_NUM];
-VABufferID      va_d_param_buf_id[SURFACE_NUM];
-
-static int cur_height = 0;
-static int cur_width = 0;
-static unsigned int num_frames = 0;
-static int sid = 0;
-static unsigned int frame_id = 0;
-static int field_order_count = 0;
-static VASurfaceID curr_surface = VA_INVALID_ID;
-
-VAStatus gva_status;
-VASurfaceStatus gsurface_status;
-#define CHECK_SURF(X) \
-    gva_status = vaQuerySurfaceStatus(va_dpy, X, &gsurface_status); \
-    if (gsurface_status != 4) printf("ss: %d\n", gsurface_status);
-
-#ifdef _DEBUG
-#define DebugLog(A) rfbClientLog A
-#else
-#define DebugLog(A)
-#endif
-
-#define CHECK_VASTATUS(va_status,func)                  \
-    if (va_status != VA_STATUS_SUCCESS) {                   \
-        /*fprintf(stderr,"%s:%s (%d) failed,exit\n", __func__, func, __LINE__);*/ \
-        rfbClientErr("%s:%s:%d failed (0x%x),exit\n", __func__, func, __LINE__, va_status); \
-        exit(1);                                \
-    } else  { \
-        /*fprintf(stderr,">> SUCCESS for: %s:%s (%d)\n", __func__, func, __LINE__);*/ \
-        DebugLog(("%s:%s:%d success\n", __func__, func, __LINE__)); \
-    }
-
-/*
- * Forward declarations
- */
-static void h264_decode_frame(int f_width, int f_height, char *framedata, int framesize, int slice_type);
-static void SetVAPictureParameterBufferH264(VAPictureParameterBufferH264 *p, int width, int height);
-static void SetVASliceParameterBufferH264(VASliceParameterBufferH264 *p);
-static void SetVASliceParameterBufferH264_Intra(VASliceParameterBufferH264 *p, int first);
-
-static void put_updated_rectangle(rfbClient *client, int x, int y, int width, int height, int f_width, int f_height, int first_for_frame);
-static void nv12_to_rgba(const VAImage vaImage, rfbClient *client, int ch_x, int ch_y, int ch_w, int ch_h);
-
-
-/* FIXME: get this value from the server instead of hardcoding 32bit pixels */
-#define BPP (4 * 8)
-
-static const char *string_of_FOURCC(uint32_t fourcc)
-{
-    static int buf;
-    static char str[2][5];
-
-    buf ^= 1;
-    str[buf][0] = fourcc;
-    str[buf][1] = fourcc >> 8;
-    str[buf][2] = fourcc >> 16;
-    str[buf][3] = fourcc >> 24;
-    str[buf][4] = '\0';
-    return str[buf];
-}
-
-static inline const char *string_of_VAImageFormat(VAImageFormat *imgfmt)
-{
-    return string_of_FOURCC(imgfmt->fourcc);
-}
-
-
-static rfbBool
-HandleH264 (rfbClient* client, int rx, int ry, int rw, int rh)
-{
-    rfbH264Header hdr;
-    char *framedata;
-
-    DebugLog(("Framebuffer update with H264 (x: %d, y: %d, w: %d, h: %d)\n", rx, ry, rw, rh));
-
-    /* First, read the frame size and allocate buffer to store the data */
-    if (!ReadFromRFBServer(client, (char *)&hdr, sz_rfbH264Header))
-        return FALSE;
-
-    hdr.slice_type = rfbClientSwap32IfLE(hdr.slice_type);
-    hdr.nBytes = rfbClientSwap32IfLE(hdr.nBytes);
-    hdr.width = rfbClientSwap32IfLE(hdr.width);
-    hdr.height = rfbClientSwap32IfLE(hdr.height);
-
-    framedata = (char*) malloc(hdr.nBytes);
-
-    /* Obtain frame data from the server */
-    DebugLog(("Reading %d bytes of frame data (type: %d)\n", hdr.nBytes, hdr.slice_type));
-    if (!ReadFromRFBServer(client, framedata, hdr.nBytes))
-        return FALSE;
-
-    /* First make sure we have a large enough raw buffer to hold the
-     * decompressed data.  In practice, with a fixed BPP, fixed frame
-     * buffer size and the first update containing the entire frame
-     * buffer, this buffer allocation should only happen once, on the
-     * first update.
-     */
-    if ( client->raw_buffer_size < (( rw * rh ) * ( BPP / 8 ))) {
-        if ( client->raw_buffer != NULL ) {
-            free( client->raw_buffer );
-        }
-
-        client->raw_buffer_size = (( rw * rh ) * ( BPP / 8 ));
-        client->raw_buffer = (char*) malloc( client->raw_buffer_size );
-        rfbClientLog("Allocated raw buffer of %d bytes (%dx%dx%d BPP)\n", client->raw_buffer_size, rw, rh, BPP);
-    }
-
-    /* Decode frame if frame data was sent. Server only sends frame data for the first
-     * framebuffer update message for a particular frame buffer contents.
-     * If more than 1 rectangle is updated, the messages after the first one (with
-     * the H.264 frame) have nBytes == 0.
-     */
-    if (hdr.nBytes > 0) {
-        DebugLog(("  decoding %d bytes of H.264 data\n", hdr.nBytes));
-        h264_decode_frame(hdr.width, hdr.height, framedata, hdr.nBytes, hdr.slice_type);
-    }
-
-    DebugLog(("  updating rectangle (%d, %d)-(%d, %d)\n", rx, ry, rw, rh));
-    put_updated_rectangle(client, rx, ry, rw, rh, hdr.width, hdr.height, hdr.nBytes != 0);
-
-    free(framedata);
-
-    return TRUE;
-}
-
-static void h264_cleanup_decoder()
-{
-    VAStatus va_status;
-
-    rfbClientLog("%s()\n", __FUNCTION__);
-
-    if (va_surface_id[0] != VA_INVALID_ID) {
-        va_status = vaDestroySurfaces(va_dpy, &va_surface_id[0], SURFACE_NUM);
-        CHECK_VASTATUS(va_status, "vaDestroySurfaces");
-    }
-
-    if (va_context_id) {
-        va_status = vaDestroyContext(va_dpy, va_context_id);
-        CHECK_VASTATUS(va_status, "vaDestroyContext");
-        va_context_id = 0;
-    }
-
-    num_frames = 0;
-    sid = 0;
-    frame_id = 0;
-    field_order_count = 0;
-}
-
-static void h264_init_decoder(int width, int height)
-{
-    VAStatus va_status;
-
-    if (va_context_id) {
-        rfbClientLog("%s: va_dpy already initialized\n", __FUNCTION__);
-    }
-
-    if (va_dpy != NULL) {
-        rfbClientLog("%s: Re-initializing H.264 decoder\n", __FUNCTION__);
-    }
-    else {
-        rfbClientLog("%s: initializing H.264 decoder\n", __FUNCTION__);
-
-        /* Attach VA display to local X display */
-        Display *win_display = (Display *)XOpenDisplay(":0.0");
-        if (win_display == NULL) {
-            rfbClientErr("Can't connect to local display\n");
-            exit(-1);
-        }
-
-        int major_ver, minor_ver;
-        va_dpy = vaGetDisplay(win_display);
-        va_status = vaInitialize(va_dpy, &major_ver, &minor_ver);
-        CHECK_VASTATUS(va_status, "vaInitialize");
-        rfbClientLog("%s: libva version %d.%d found\n", __FUNCTION__, major_ver, minor_ver);
-    }
-
-    /* Check for VLD entrypoint */
-    int num_entrypoints;
-    VAEntrypoint    entrypoints[5];
-    int vld_entrypoint_found = 0;
-
-    /* Change VAProfileH264High if needed */
-    VAProfile profile = VAProfileH264High;
-    va_status = vaQueryConfigEntrypoints(va_dpy, profile, entrypoints, &num_entrypoints);
-    CHECK_VASTATUS(va_status, "vaQueryConfigEntrypoints");
-    int i;
-    for (i = 0; i < num_entrypoints; ++i) {
-        if (entrypoints[i] == VAEntrypointVLD) {
-            vld_entrypoint_found = 1;
-            break;
-        }
-    }
-
-    if (vld_entrypoint_found == 0) {
-        rfbClientErr("VLD entrypoint not found\n");
-        exit(1);
-    }
-
-    /* Create configuration for the decode pipeline */
-    VAConfigAttrib attrib;
-    attrib.type = VAConfigAttribRTFormat;
-    va_status = vaCreateConfig(va_dpy, profile, VAEntrypointVLD, &attrib, 1, &va_config_id);
-    CHECK_VASTATUS(va_status, "vaCreateConfig");
-
-    /* Create VA surfaces */
-    for (i = 0; i < SURFACE_NUM; ++i) {
-        va_surface_id[i]       = VA_INVALID_ID;
-        va_pic_param_buf_id[i] = VA_INVALID_ID;
-        va_mat_param_buf_id[i] = VA_INVALID_ID;
-        va_sp_param_buf_id[i]  = VA_INVALID_ID;
-        va_d_param_buf_id[i]   = VA_INVALID_ID;
-    }
-    va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, SURFACE_NUM, &va_surface_id[0]);
-    CHECK_VASTATUS(va_status, "vaCreateSurfaces");
-    for (i = 0; i < SURFACE_NUM; ++i) {
-        DebugLog(("%s: va_surface_id[%d] = %p\n", __FUNCTION__, i, va_surface_id[i]));
-    }
-
-    /* Create VA context */
-    va_status = vaCreateContext(va_dpy, va_config_id, width, height, 0/*VA_PROGRESSIVE*/,  &va_surface_id[0], SURFACE_NUM, &va_context_id);
-    CHECK_VASTATUS(va_status, "vaCreateContext");
-    DebugLog(("%s: VA context created (id: %d)\n", __FUNCTION__, va_context_id));
-
-
-    /* Instantiate decode pipeline */
-    va_status = vaBeginPicture(va_dpy, va_context_id, va_surface_id[0]);
-    CHECK_VASTATUS(va_status, "vaBeginPicture");
-
-    rfbClientLog("%s: H.264 decoder initialized\n", __FUNCTION__);
-}
-
-static void h264_decode_frame(int f_width, int f_height, char *framedata, int framesize, int slice_type)
-{
-    VAStatus va_status;
-
-    DebugLog(("%s: called for frame of %d bytes (%dx%d) slice_type=%d\n", __FUNCTION__, framesize, width, height, slice_type));
-
-    /* Initialize decode pipeline if necessary */
-    if ( (f_width > cur_width) || (f_height > cur_height) ) {
-        if (va_dpy != NULL)
-            h264_cleanup_decoder();
-        cur_width = f_width;
-        cur_height = f_height;
-
-        h264_init_decoder(f_width, f_height);
-        rfbClientLog("%s: decoder initialized\n", __FUNCTION__);
-    }
-
-    /* Decode frame */
-    static VAPictureH264 va_picture_h264, va_old_picture_h264;
-
-    /* The server should always send an I-frame when a new client connects
-     * or when the resolution of the framebuffer changes, but we check
-     * just in case.
-     */
-    if ( (slice_type != SLICE_TYPE_I) && (num_frames == 0) ) {
-        rfbClientLog("First frame is not an I frame !!! Skipping!!!\n");
-        return;
-    }
-
-    DebugLog(("%s: frame_id=%d va_surface_id[%d]=0x%x field_order_count=%d\n", __FUNCTION__, frame_id, sid, va_surface_id[sid], field_order_count));
-
-    va_picture_h264.picture_id = va_surface_id[sid];
-    va_picture_h264.frame_idx  = frame_id;
-    va_picture_h264.flags = 0;
-    va_picture_h264.BottomFieldOrderCnt = field_order_count;
-    va_picture_h264.TopFieldOrderCnt = field_order_count;
-
-    /* Set up picture parameter buffer */
-    if (va_pic_param_buf_id[sid] == VA_INVALID_ID) {
-        va_status = vaCreateBuffer(va_dpy, va_context_id, VAPictureParameterBufferType, sizeof(VAPictureParameterBufferH264), 1, NULL, &va_pic_param_buf_id[sid]);
-        CHECK_VASTATUS(va_status, "vaCreateBuffer(PicParam)");
-    }
-    CHECK_SURF(va_surface_id[sid]);
-
-    VAPictureParameterBufferH264 *pic_param_buf = NULL;
-    va_status = vaMapBuffer(va_dpy, va_pic_param_buf_id[sid], (void **)&pic_param_buf);
-    CHECK_VASTATUS(va_status, "vaMapBuffer(PicParam)");
-
-    SetVAPictureParameterBufferH264(pic_param_buf, f_width, f_height);
-    memcpy(&pic_param_buf->CurrPic, &va_picture_h264, sizeof(VAPictureH264));
-
-    if (slice_type == SLICE_TYPE_P) {
-        memcpy(&pic_param_buf->ReferenceFrames[0], &va_old_picture_h264, sizeof(VAPictureH264));
-        pic_param_buf->ReferenceFrames[0].flags = 0;
-    }
-    else if (slice_type != SLICE_TYPE_I) {
-        rfbClientLog("Frame type %d not supported!!!\n");
-        return;
-    }
-    pic_param_buf->frame_num = frame_id;
-
-    va_status = vaUnmapBuffer(va_dpy, va_pic_param_buf_id[sid]);
-    CHECK_VASTATUS(va_status, "vaUnmapBuffer(PicParam)");
-
-    /* Set up IQ matrix buffer */
-    if (va_mat_param_buf_id[sid] == VA_INVALID_ID) {
-        va_status = vaCreateBuffer(va_dpy, va_context_id, VAIQMatrixBufferType, sizeof(VAIQMatrixBufferH264), 1, NULL, &va_mat_param_buf_id[sid]);
-        CHECK_VASTATUS(va_status, "vaCreateBuffer(IQMatrix)");
-    }
-    CHECK_SURF(va_surface_id[sid]);
-
-    VAIQMatrixBufferH264 *iq_matrix_buf = NULL;
-    va_status = vaMapBuffer(va_dpy, va_mat_param_buf_id[sid], (void **)&iq_matrix_buf);
-    CHECK_VASTATUS(va_status, "vaMapBuffer(IQMatrix)");
-
-    static const unsigned char m_MatrixBufferH264[]= {
-        /* ScalingList4x4[6][16] */
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-        /* ScalingList8x8[2][64] */
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-    };
-
-    memcpy(iq_matrix_buf, m_MatrixBufferH264, 224);
-    va_status = vaUnmapBuffer(va_dpy, va_mat_param_buf_id[sid]);
-    CHECK_VASTATUS(va_status, "vaUnmapBuffer(IQMatrix)");
-
-    VABufferID buffer_ids[2];
-    buffer_ids[0] = va_pic_param_buf_id[sid];
-    buffer_ids[1] = va_mat_param_buf_id[sid];
-
-    CHECK_SURF(va_surface_id[sid]);
-    va_status = vaRenderPicture(va_dpy, va_context_id, buffer_ids, 2);
-    CHECK_VASTATUS(va_status, "vaRenderPicture");
-
-    /* Set up slice parameter buffer */
-    if (va_sp_param_buf_id[sid] == VA_INVALID_ID) {
-        va_status = vaCreateBuffer(va_dpy, va_context_id, VASliceParameterBufferType, sizeof(VASliceParameterBufferH264), 1, NULL, &va_sp_param_buf_id[sid]);
-        CHECK_VASTATUS(va_status, "vaCreateBuffer(SliceParam)");
-    }
-    CHECK_SURF(va_surface_id[sid]);
-
-    VASliceParameterBufferH264 *slice_param_buf = NULL;
-    va_status = vaMapBuffer(va_dpy, va_sp_param_buf_id[sid], (void **)&slice_param_buf);
-    CHECK_VASTATUS(va_status, "vaMapBuffer(SliceParam)");
-
-    static int t2_first = 1;
-    if (slice_type == SLICE_TYPE_I) {
-        SetVASliceParameterBufferH264_Intra(slice_param_buf, t2_first);
-        t2_first = 0;
-    } else {
-        SetVASliceParameterBufferH264(slice_param_buf);
-        memcpy(&slice_param_buf->RefPicList0[0], &va_old_picture_h264, sizeof(VAPictureH264));
-        slice_param_buf->RefPicList0[0].flags = 0;
-    }
-    slice_param_buf->slice_data_bit_offset = 0;
-    slice_param_buf->slice_data_size = framesize;
-
-    va_status = vaUnmapBuffer(va_dpy, va_sp_param_buf_id[sid]);
-    CHECK_VASTATUS(va_status, "vaUnmapBuffer(SliceParam)");
-    CHECK_SURF(va_surface_id[sid]);
-
-    /* Set up slice data buffer and copy H.264 encoded data */
-    if (va_d_param_buf_id[sid] == VA_INVALID_ID) {
-        /* TODO use estimation matching framebuffer dimensions instead of this large value */
-        va_status = vaCreateBuffer(va_dpy, va_context_id, VASliceDataBufferType, 4177920, 1, NULL, &va_d_param_buf_id[sid]); /* 1080p size */
-        CHECK_VASTATUS(va_status, "vaCreateBuffer(SliceData)");
-    }
-
-    char *slice_data_buf;
-    va_status = vaMapBuffer(va_dpy, va_d_param_buf_id[sid], (void **)&slice_data_buf);
-    CHECK_VASTATUS(va_status, "vaMapBuffer(SliceData)");
-    memcpy(slice_data_buf, framedata, framesize);
-
-    CHECK_SURF(va_surface_id[sid]);
-    va_status = vaUnmapBuffer(va_dpy, va_d_param_buf_id[sid]);
-    CHECK_VASTATUS(va_status, "vaUnmapBuffer(SliceData)");
-
-    buffer_ids[0] = va_sp_param_buf_id[sid];
-    buffer_ids[1] = va_d_param_buf_id[sid];
-
-    CHECK_SURF(va_surface_id[sid]);
-    va_status = vaRenderPicture(va_dpy, va_context_id, buffer_ids, 2);
-    CHECK_VASTATUS(va_status, "vaRenderPicture");
-
-    va_status = vaEndPicture(va_dpy, va_context_id);
-    CHECK_VASTATUS(va_status, "vaEndPicture");
-
-    /* Prepare next one... */
-    int sid_new = (sid + 1) % SURFACE_NUM;
-    DebugLog(("%s: new Surface ID = %d\n", __FUNCTION__, sid_new));
-    va_status = vaBeginPicture(va_dpy, va_context_id, va_surface_id[sid_new]);
-    CHECK_VASTATUS(va_status, "vaBeginPicture");
-
-    /* Get decoded data */
-    va_status = vaSyncSurface(va_dpy, va_surface_id[sid]);
-    CHECK_VASTATUS(va_status, "vaSyncSurface");
-    CHECK_SURF(va_surface_id[sid]);
-
-    curr_surface = va_surface_id[sid];
-
-    sid = sid_new;
-
-    field_order_count += 2;
-    ++frame_id;
-    if (frame_id > 15) {
-        frame_id = 0;
-    }
-
-    ++num_frames;
-
-    memcpy(&va_old_picture_h264, &va_picture_h264, sizeof(VAPictureH264));
-}
-
-static void put_updated_rectangle(rfbClient *client, int x, int y, int width, int height, int f_width, int f_height, int first_for_frame)
-{
-    if (curr_surface == VA_INVALID_ID) {
-        rfbClientErr("%s: called, but current surface is invalid\n", __FUNCTION__);
-        return;
-    }
-
-    VAStatus va_status;
-
-    if (client->outputWindow) {
-        /* use efficient vaPutSurface() method of putting the framebuffer on the screen */
-        if (first_for_frame) {
-            /* vaPutSurface() clears window contents outside the given destination rectangle => always update full screen. */
-            va_status = vaPutSurface(va_dpy, curr_surface, client->outputWindow, 0, 0, f_width, f_height, 0, 0, f_width, f_height, NULL, 0, VA_FRAME_PICTURE);
-            CHECK_VASTATUS(va_status, "vaPutSurface");
-        }
-    }
-    else if (client->frameBuffer) {
-        /* ... or copy the changed framebuffer region manually as a fallback */
-        VAImage decoded_image;
-        decoded_image.image_id = VA_INVALID_ID;
-        decoded_image.buf      = VA_INVALID_ID;
-        va_status = vaDeriveImage(va_dpy, curr_surface, &decoded_image);
-        CHECK_VASTATUS(va_status, "vaDeriveImage");
-
-        if ((decoded_image.image_id == VA_INVALID_ID) || (decoded_image.buf == VA_INVALID_ID)) {
-            rfbClientErr("%s: vaDeriveImage() returned success but VA image is invalid (id: %d, buf: %d)\n", __FUNCTION__, decoded_image.image_id, decoded_image.buf);
-        }
-
-        nv12_to_rgba(decoded_image, client, x, y, width, height);
-
-        va_status = vaDestroyImage(va_dpy, decoded_image.image_id);
-        CHECK_VASTATUS(va_status, "vaDestroyImage");
-    }
-}
-
-static void SetVAPictureParameterBufferH264(VAPictureParameterBufferH264 *p, int width, int height)
-{
-    int i;
-    unsigned int width_in_mbs = (width + 15) / 16;
-    unsigned int height_in_mbs = (height + 15) / 16;
-
-    memset(p, 0, sizeof(VAPictureParameterBufferH264));
-    p->picture_width_in_mbs_minus1 = width_in_mbs - 1;
-    p->picture_height_in_mbs_minus1 = height_in_mbs - 1;
-    p->num_ref_frames = 1;
-    p->seq_fields.value = 145;
-    p->pic_fields.value = 0x501;
-    for (i = 0; i < 16; i++) {
-        p->ReferenceFrames[i].flags = VA_PICTURE_H264_INVALID;
-        p->ReferenceFrames[i].picture_id = 0xffffffff;
-    }
-}
-
-static void SetVASliceParameterBufferH264(VASliceParameterBufferH264 *p)
-{
-    int i;
-    memset(p, 0, sizeof(VASliceParameterBufferH264));
-    p->slice_data_size = 0;
-    p->slice_data_bit_offset = 64;
-    p->slice_alpha_c0_offset_div2 = 2;
-    p->slice_beta_offset_div2 = 2;
-    p->chroma_weight_l0_flag = 1;
-    p->chroma_weight_l0[0][0]=1;
-    p->chroma_offset_l0[0][0]=0;
-    p->chroma_weight_l0[0][1]=1;
-    p->chroma_offset_l0[0][1]=0;
-    p->luma_weight_l1_flag = 1;
-    p->chroma_weight_l1_flag = 1;
-    p->luma_weight_l0[0]=0x01;
-    for (i = 0; i < 32; i++) {
-        p->RefPicList0[i].flags = VA_PICTURE_H264_INVALID;
-        p->RefPicList1[i].flags = VA_PICTURE_H264_INVALID;
-    }
-    p->RefPicList1[0].picture_id = 0xffffffff;
-}
-
-static void SetVASliceParameterBufferH264_Intra(VASliceParameterBufferH264 *p, int first)
-{
-    int i;
-    memset(p, 0, sizeof(VASliceParameterBufferH264));
-    p->slice_data_size = 0;
-    p->slice_data_bit_offset = 64;
-    p->slice_alpha_c0_offset_div2 = 2;
-    p->slice_beta_offset_div2 = 2;
-    p->slice_type = 2;
-    if (first) {
-        p->luma_weight_l0_flag = 1;
-        p->chroma_weight_l0_flag = 1;
-        p->luma_weight_l1_flag = 1;
-        p->chroma_weight_l1_flag = 1;
-    } else {
-        p->chroma_weight_l0_flag = 1;
-        p->chroma_weight_l0[0][0]=1;
-        p->chroma_offset_l0[0][0]=0;
-        p->chroma_weight_l0[0][1]=1;
-        p->chroma_offset_l0[0][1]=0;
-        p->luma_weight_l1_flag = 1;
-        p->chroma_weight_l1_flag = 1;
-        p->luma_weight_l0[0]=0x01;
-    }
-    for (i = 0; i < 32; i++) {
-        p->RefPicList0[i].flags = VA_PICTURE_H264_INVALID;
-        p->RefPicList1[i].flags = VA_PICTURE_H264_INVALID;
-    }
-    p->RefPicList1[0].picture_id = 0xffffffff;
-    p->RefPicList0[0].picture_id = 0xffffffff;
-}
-
-static void nv12_to_rgba(const VAImage vaImage, rfbClient *client, int ch_x, int ch_y, int ch_w, int ch_h)
-{
-    DebugLog(("%s: converting region (%d, %d)-(%d, %d) from NV12->RGBA\n", __FUNCTION__, ch_x, ch_y, ch_w, ch_h));
-
-    VAStatus va_status;
-    uint8_t *nv12_buf;
-    va_status = vaMapBuffer(va_dpy, vaImage.buf, (void **)&nv12_buf);
-    CHECK_VASTATUS(va_status, "vaMapBuffer(DecodedData)");
-
-    /* adjust x, y, width, height of the affected area so
-     * x, y, width and height are always even.
-     */
-    if (ch_x % 2) { --ch_x; ++ch_w; }
-    if (ch_y % 2) { --ch_y; ++ch_h; }
-    if ((ch_x + ch_w) % 2) { ++ch_w; }
-    if ((ch_y + ch_h) % 2) { ++ch_h; }
-
-    /* point nv12_buf and dst to upper left corner of changed area */
-    uint8_t *nv12_y  = &nv12_buf[vaImage.offsets[0] + vaImage.pitches[0] * ch_y + ch_x];
-    uint8_t *nv12_uv = &nv12_buf[vaImage.offsets[1] + vaImage.pitches[1] * (ch_y / 2) + ch_x];
-    uint32_t *dst    = &((uint32_t*)client->frameBuffer)[client->width * ch_y + ch_x];
-
-    /* TODO: optimize R, G, B calculation. Possible ways to do this:
-     *       - use lookup tables
-     *       - convert from floating point to integer arithmetic
-     *       - use MMX/SSE to vectorize calculations
-     *       - use GPU (VA VPP, shader...)
-     */
-    int src_x, src_y;
-    for (src_y = 0; src_y < ch_h; src_y += 2) {
-        for (src_x = 0; src_x < ch_w; src_x += 2) {
-            uint8_t nv_u = nv12_uv[src_x];
-            uint8_t nv_v = nv12_uv[src_x + 1];
-            uint8_t nv_y[4] = { nv12_y[                     src_x], nv12_y[                     src_x + 1],
-                                nv12_y[vaImage.pitches[0] + src_x], nv12_y[vaImage.pitches[0] + src_x + 1] };
-
-        int i;
-            for (i = 0; i < 4; ++i) {
-                double R = 1.164 * (nv_y[i] - 16)                        + 1.596 * (nv_v - 128);
-                double G = 1.164 * (nv_y[i] - 16) - 0.391 * (nv_u - 128) - 0.813 * (nv_v - 128);
-                double B = 1.164 * (nv_y[i] - 16) + 2.018 * (nv_u - 128);
-
-                /* clamp R, G, B values. For some Y, U, V combinations,
-                 * the results of the above calculations fall outside of
-                 * the range 0-255.
-                 */
-                if (R < 0.0) R = 0.0;
-                if (G < 0.0) G = 0.0;
-                if (B < 0.0) B = 0.0;
-                if (R > 255.0) R = 255.0;
-                if (G > 255.0) G = 255.0;
-                if (B > 255.0) B = 255.0;
-
-                dst[client->width * (i / 2) + src_x + (i % 2)] = 0
-                               | ((unsigned int)(R + 0.5) << client->format.redShift)
-                               | ((unsigned int)(G + 0.5) << client->format.greenShift)
-                               | ((unsigned int)(B + 0.5) << client->format.blueShift);
-            }
-        }
-
-        nv12_y  += 2 * vaImage.pitches[0];
-        nv12_uv += vaImage.pitches[1];
-        dst     += 2 * client->width;
-    }
-
-    CHECK_SURF(va_surface_id[sid]);
-    va_status = vaUnmapBuffer(va_dpy, vaImage.buf);
-    CHECK_VASTATUS(va_status, "vaUnmapBuffer(DecodedData)");
-}
-
-#endif /* LIBVNCSERVER_CONFIG_LIBVA */
diff --git a/ica/x11/libvncclient/listen.c b/ica/x11/libvncclient/listen.c
index c91ad6e..e989d6a 100644
--- a/ica/x11/libvncclient/listen.c
+++ b/ica/x11/libvncclient/listen.c
@@ -27,11 +27,10 @@
 #endif
 #include <unistd.h>
 #include <sys/types.h>
-#ifdef __MINGW32__
+#ifdef WIN32
 #define close closesocket
 #include <winsock2.h>
-#undef max
-#else
+#else // #ifdef WIN32
 #include <sys/wait.h>
 #include <sys/utsname.h>
 #endif
@@ -46,7 +45,7 @@
 void
 listenForIncomingConnections(rfbClient* client)
 {
-#ifdef __MINGW32__
+#ifdef WIN32
   /* FIXME */
   rfbClientErr("listenForIncomingConnections on MinGW32 NOT IMPLEMENTED\n");
   return;
@@ -97,7 +96,7 @@ listenForIncomingConnections(rfbClient* client)
     if(listen6Socket >= 0)
       FD_SET(listen6Socket, &fds);
 
-    r = select(max(listenSocket, listen6Socket)+1, &fds, NULL, NULL, NULL);
+    r = select(rfbMax(listenSocket, listen6Socket)+1, &fds, NULL, NULL, NULL);
 
     if (r > 0) {
       if (FD_ISSET(listenSocket, &fds))
@@ -139,7 +138,7 @@ listenForIncomingConnections(rfbClient* client)
 /*
  * listenForIncomingConnectionsNoFork() - listen for incoming connections
  * from servers, but DON'T fork, instead just wait timeout microseconds.
- * If timeout is negative, block indefinitly.
+ * If timeout is negative, block indefinitely.
  * Returns 1 on success (there was an incoming connection on the listen socket
  * and we accepted it successfully), -1 on error, 0 on timeout.
  */
@@ -193,9 +192,9 @@ listenForIncomingConnectionsNoFork(rfbClient* client, int timeout)
     FD_SET(client->listen6Sock, &fds);
 
   if (timeout < 0)
-    r = select(max(client->listenSock, client->listen6Sock) +1, &fds, NULL, NULL, NULL);
+    r = select(rfbMax(client->listenSock, client->listen6Sock) +1, &fds, NULL, NULL, NULL);
   else
-    r = select(max(client->listenSock, client->listen6Sock) +1, &fds, NULL, NULL, &to);
+    r = select(rfbMax(client->listenSock, client->listen6Sock) +1, &fds, NULL, NULL, &to);
 
   if (r > 0)
     {
diff --git a/ica/x11/libvncclient/rfbproto.c b/ica/x11/libvncclient/rfbproto.c
index db793a2..5629182 100644
--- a/ica/x11/libvncclient/rfbproto.c
+++ b/ica/x11/libvncclient/rfbproto.c
@@ -53,7 +53,12 @@
 #endif
 #include <jpeglib.h>
 #endif
+
+#ifndef _MSC_VER
+/* Strings.h is not available in MSVC */
 #include <strings.h>
+#endif
+
 #include <stdarg.h>
 #include <time.h>
 
@@ -66,6 +71,10 @@
 
 #include "ItalcRfbExt.h"
 
+#ifdef _MSC_VER
+#  define snprintf _snprintf /* MSVC went straight to the underscored syntax */
+#endif
+
 /*
  * rfbClientLog prints a time-stamped message to the log file (stderr).
  */
@@ -143,6 +152,14 @@ void* rfbClientGetClientData(rfbClient* client, void* tag)
 static void FillRectangle(rfbClient* client, int x, int y, int w, int h, uint32_t colour) {
   int i,j;
 
+  if (client->frameBuffer == NULL) {
+      return;
+  }
+
+  if (client->frameBuffer == NULL) {
+      return;
+  }
+
 #define FILL_RECT(BPP) \
     for(j=y*client->width;j<(y+h)*client->width;j+=client->width) \
       for(i=x;i<x+w;i++) \
@@ -186,6 +203,14 @@ static void CopyRectangle(rfbClient* client, uint8_t* buffer, int x, int y, int
 static void CopyRectangleFromRectangle(rfbClient* client, int src_x, int src_y, int w, int h, int dest_x, int dest_y) {
   int i,j;
 
+  if (client->frameBuffer == NULL) {
+      return;
+  }
+
+  if (client->frameBuffer == NULL) {
+      return;
+  }
+
 #define COPY_RECT_FROM_RECT(BPP) \
   { \
     uint##BPP##_t* _buffer=((uint##BPP##_t*)client->frameBuffer)+(src_y-dest_y)*client->width+src_x-dest_x; \
@@ -266,9 +291,6 @@ static rfbBool HandleZRLE24Up(rfbClient* client, int rx, int ry, int rw, int rh)
 static rfbBool HandleZRLE24Down(rfbClient* client, int rx, int ry, int rw, int rh);
 static rfbBool HandleZRLE32(rfbClient* client, int rx, int ry, int rw, int rh);
 #endif
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-static rfbBool HandleH264 (rfbClient* client, int rx, int ry, int rw, int rh);
-#endif
 
 /*
  * Server Capability Functions
@@ -582,6 +604,9 @@ ReadSupportedSecurityType(rfbClient* client, uint32_t *result, rfbBool subAuth)
         if (tAuth[loop]==rfbVncAuth || tAuth[loop]==rfbNoAuth ||
 			( tAuth[loop] == rfbUltraVNC_MsLogonIIAuth && isLogonAuthenticationEnabled( client ) ) ||
 			tAuth[loop] == rfbSecTypeItalc ||
+#if defined(LIBVNCSERVER_HAVE_GNUTLS) || defined(LIBVNCSERVER_HAVE_LIBSSL)
+			tAuth[loop]==rfbVeNCrypt ||
+#endif
             (tAuth[loop]==rfbARD && client->GetCredential) ||
             (!subAuth && (tAuth[loop]==rfbTLS || (tAuth[loop]==rfbVeNCrypt && client->GetCredential))))
         {
@@ -849,6 +874,16 @@ HandleARDAuth(rfbClient *client)
   rfbCredential *cred = NULL;
   rfbBool result = FALSE;
 
+  if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
+  {
+    /* Application did not initialize gcrypt, so we should */
+    if (!gcry_check_version(GCRYPT_VERSION))
+    {
+      /* Older version of libgcrypt is installed on system than compiled against */
+      rfbClientLog("libgcrypt version mismatch.\n");
+    }
+  }
+
   while (1)
   {
     if (!ReadFromRFBServer(client, (char *)gen, 2))
@@ -1255,7 +1290,8 @@ InitialiseRFBConnection(rfbClient* client)
   client->si.format.blueMax = rfbClientSwap16IfLE(client->si.format.blueMax);
   client->si.nameLength = rfbClientSwap32IfLE(client->si.nameLength);
 
-  client->desktopName = malloc(client->si.nameLength + 1);
+  /* To guard against integer wrap-around, si.nameLength is cast to 64 bit */
+  client->desktopName = malloc((uint64_t)client->si.nameLength + 1);
   if (!client->desktopName) {
     rfbClientLog("Error allocating memory for desktop name, %lu bytes\n",
             (unsigned long)client->si.nameLength);
@@ -1299,6 +1335,8 @@ SetFormatAndEncodings(rfbClient* client)
   if (!SupportsClient2Server(client, rfbSetPixelFormat)) return TRUE;
 
   spf.type = rfbSetPixelFormat;
+  spf.pad1 = 0;
+  spf.pad2 = 0;
   spf.format = client->format;
   spf.format.redMax = rfbClientSwap16IfLE(spf.format.redMax);
   spf.format.greenMax = rfbClientSwap16IfLE(spf.format.greenMax);
@@ -1365,10 +1403,6 @@ SetFormatAndEncodings(rfbClient* client)
 	encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingCoRRE);
       } else if (strncasecmp(encStr,"rre",encStrLen) == 0) {
 	encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingRRE);
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-      } else if (strncasecmp(encStr,"h264",encStrLen) == 0) {
-	encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingH264);
-#endif
       } else {
 	rfbClientLog("Unknown encoding '%.*s'\n",encStrLen,encStr);
       }
@@ -1437,10 +1471,6 @@ SetFormatAndEncodings(rfbClient* client)
       encs[se->nEncodings++] = rfbClientSwap32IfLE(client->appData.qualityLevel +
 					  rfbEncodingQualityLevel0);
     }
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-    encs[se->nEncodings++] = rfbClientSwap32IfLE(rfbEncodingH264);
-    rfbClientLog("h264 encoding added\n");
-#endif
   }
 
 
@@ -1484,7 +1514,8 @@ SetFormatAndEncodings(rfbClient* client)
     if(e->encodings) {
       int* enc;
       for(enc = e->encodings; *enc; enc++)
-	encs[se->nEncodings++] = rfbClientSwap32IfLE(*enc);
+        if(se->nEncodings < MAX_ENCODINGS)
+          encs[se->nEncodings++] = rfbClientSwap32IfLE(*enc);
     }
 
   len = sz_rfbSetEncodingsMsg + se->nEncodings * 4;
@@ -1845,7 +1876,8 @@ HandleRFBServerMessage(rfbClient* client)
 	client->updateRect.x = client->updateRect.y = 0;
 	client->updateRect.w = client->width;
 	client->updateRect.h = client->height;
-	client->MallocFrameBuffer(client);
+	if (!client->MallocFrameBuffer(client))
+	  return FALSE;
 	SendFramebufferUpdateRequest(client, 0, 0, rect.r.w, rect.r.h, FALSE);
 	rfbClientLog("Got new framebuffer size: %dx%d\n", rect.r.w, rect.r.h);
 	continue;
@@ -1941,7 +1973,10 @@ HandleRFBServerMessage(rfbClient* client)
 	int y=rect.r.y, h=rect.r.h;
 
 	bytesPerLine = rect.r.w * client->format.bitsPerPixel / 8;
-	linesToRead = RFB_BUFFER_SIZE / bytesPerLine;
+	/* RealVNC 4.x-5.x on OSX can induce bytesPerLine==0, 
+	   usually during GPU accel. */
+	/* Regardless of cause, do not divide by zero. */
+	linesToRead = bytesPerLine ? (RFB_BUFFER_SIZE / bytesPerLine) : 0;
 
 	while (h > 0) {
 	  if (linesToRead > h)
@@ -1957,7 +1992,8 @@ HandleRFBServerMessage(rfbClient* client)
 	  y += linesToRead;
 
 	}
-      } break;
+	break;
+      } 
 
       case rfbEncodingCopyRect:
       {
@@ -2164,14 +2200,6 @@ HandleRFBServerMessage(rfbClient* client)
      }
 
 #endif
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-      case rfbEncodingH264:
-      {
-	if (!HandleH264(client, rect.r.x, rect.r.y, rect.r.w, rect.r.h))
-	  return FALSE;
-	break;
-      }
-#endif
 
       default:
 	 {
@@ -2306,7 +2334,9 @@ HandleRFBServerMessage(rfbClient* client)
     client->updateRect.x = client->updateRect.y = 0;
     client->updateRect.w = client->width;
     client->updateRect.h = client->height;
-    client->MallocFrameBuffer(client);
+    if (!client->MallocFrameBuffer(client))
+      return FALSE;
+
     SendFramebufferUpdateRequest(client, 0, 0, client->width, client->height, FALSE);
     rfbClientLog("Got new framebuffer size: %dx%d\n", client->width, client->height);
     break;
@@ -2322,7 +2352,8 @@ HandleRFBServerMessage(rfbClient* client)
     client->updateRect.x = client->updateRect.y = 0;
     client->updateRect.w = client->width;
     client->updateRect.h = client->height;
-    client->MallocFrameBuffer(client);
+    if (!client->MallocFrameBuffer(client))
+      return FALSE;
     SendFramebufferUpdateRequest(client, 0, 0, client->width, client->height, FALSE);
     rfbClientLog("Got new framebuffer size: %dx%d\n", client->width, client->height);
     break;
@@ -2405,7 +2436,6 @@ HandleRFBServerMessage(rfbClient* client)
 #define UNCOMP -8
 #include "zrle.c"
 #undef BPP
-#include "h264.c"
 
 
 /*
diff --git a/ica/x11/libvncclient/sockets.c b/ica/x11/libvncclient/sockets.c
index c1cc416..59d2e17 100644
--- a/ica/x11/libvncclient/sockets.c
+++ b/ica/x11/libvncclient/sockets.c
@@ -61,6 +61,10 @@
 #endif
 #include "tls.h"
 
+#ifdef _MSC_VER
+#  define snprintf _snprintf
+#endif
+
 void PrintInHex(char *buf, int len);
 
 rfbBool errorMessageOnReadFailure = TRUE;
@@ -88,6 +92,13 @@ ReadFromRFBServer(rfbClient* client, char *out, unsigned int n)
 	int nn=n;
 	rfbClientLog("ReadFromRFBServer %d bytes\n",n);
 #endif
+
+  /* Handle attempts to write to NULL out buffer that might occur
+     when an outside malloc() fails. For instance, memcpy() to NULL
+     results in undefined behaviour and probably memory corruption.*/
+  if(!out)
+    return FALSE;
+
   if (client->serverPort==-1) {
     /* vncrec playing */
     rfbVNCRec* rec = client->vncRec;
@@ -109,7 +120,7 @@ ReadFromRFBServer(rfbClient* client, char *out, unsigned int n)
 	  diff.tv_sec--;
 	  diff.tv_usec+=1000000;
         }
-#ifndef __MINGW32__
+#ifndef WIN32
         sleep (diff.tv_sec);
         usleep (diff.tv_usec);
 #else
@@ -556,7 +567,7 @@ ListenAtTcpPortAndAddress(int port, const char *address)
     }
 
 #ifdef IPV6_V6ONLY
-    /* we have seperate IPv4 and IPv6 sockets since some OS's do not support dual binding */
+    /* we have separate IPv4 and IPv6 sockets since some OS's do not support dual binding */
     if (p->ai_family == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) < 0) {
       rfbClientErr("ListenAtTcpPortAndAddress: error in setsockopt IPV6_V6ONLY: %s\n", strerror(errno));
       close(sock);
diff --git a/ica/x11/libvncclient/tls_gnutls.c b/ica/x11/libvncclient/tls_gnutls.c
index 3daa416..b9ffe89 100644
--- a/ica/x11/libvncclient/tls_gnutls.c
+++ b/ica/x11/libvncclient/tls_gnutls.c
@@ -67,9 +67,20 @@ InitializeTLS(void)
  * libvncclient are linked to different versions of msvcrt.dll.
  */
 #ifdef WIN32
-static void WSAtoTLSErrno()
+static void WSAtoTLSErrno(gnutls_session_t* session)
 {
   switch(WSAGetLastError()) {
+#if (GNUTLS_VERSION_NUMBER >= 0x029901)
+  case WSAEWOULDBLOCK:
+    gnutls_transport_set_errno(session, EAGAIN);
+    break;
+  case WSAEINTR:
+    gnutls_transport_set_errno(session, EINTR);
+    break;
+  default:
+    gnutls_transport_set_errno(session, EIO);
+    break;
+#else
   case WSAEWOULDBLOCK:
     gnutls_transport_set_global_errno(EAGAIN);
     break;
@@ -79,11 +90,11 @@ static void WSAtoTLSErrno()
   default:
     gnutls_transport_set_global_errno(EIO);
     break;
+#endif
   }
 }
 #endif
 
-
 static ssize_t
 PushTLS(gnutls_transport_ptr_t transport, const void *data, size_t len)
 {
@@ -96,7 +107,7 @@ PushTLS(gnutls_transport_ptr_t transport, const void *data, size_t len)
     if (ret < 0)
     {
 #ifdef WIN32
-      WSAtoTLSErrno();
+      WSAtoTLSErrno((gnutls_session_t*)&client->tlsSession);
 #endif
       if (errno == EINTR) continue;
       return -1;
@@ -118,7 +129,7 @@ PullTLS(gnutls_transport_ptr_t transport, void *data, size_t len)
     if (ret < 0)
     {
 #ifdef WIN32
-      WSAtoTLSErrno();
+      WSAtoTLSErrno((gnutls_session_t*)&client->tlsSession);
 #endif
       if (errno == EINTR) continue;
       return -1;
@@ -480,6 +491,14 @@ WriteToTLS(rfbClient* client, char *buf, unsigned int n)
   unsigned int offset = 0;
   ssize_t ret;
 
+  if (client->LockWriteToTLS)
+  {
+    if (!client->LockWriteToTLS(client))
+    {
+      rfbClientLog("Callback to get lock in WriteToTLS() failed\n");
+      return -1;
+    }
+  }
   while (offset < n)
   {
     ret = gnutls_record_send((gnutls_session_t)client->tlsSession, buf+offset, (size_t)(n-offset));
@@ -488,10 +507,23 @@ WriteToTLS(rfbClient* client, char *buf, unsigned int n)
     {
       if (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED) continue;
       rfbClientLog("Error writing to TLS: %s.\n", gnutls_strerror(ret));
+      if (client->UnlockWriteToTLS)
+      {
+        if (!client->UnlockWriteToTLS(client))
+          rfbClientLog("Callback to unlock WriteToTLS() failed\n");
+      }
       return -1;
     }
     offset += (unsigned int)ret;
   }
+  if (client->UnlockWriteToTLS)
+  {
+    if (!client->UnlockWriteToTLS(client))
+    {
+      rfbClientLog("Callback to unlock WriteToTLS() failed\n");
+      return -1;
+    }
+  }
   return offset;
 }
 
diff --git a/ica/x11/libvncclient/tls_openssl.c b/ica/x11/libvncclient/tls_openssl.c
index 529d476..a531778 100644
--- a/ica/x11/libvncclient/tls_openssl.c
+++ b/ica/x11/libvncclient/tls_openssl.c
@@ -18,6 +18,10 @@
  *  USA.
  */
 
+#ifndef _MSC_VER
+#define _XOPEN_SOURCE 500
+#endif
+
 #include <rfb/rfbclient.h>
 #include <errno.h>
 
@@ -27,28 +31,57 @@
 #include <openssl/rand.h>
 #include <openssl/x509.h>
 
+#ifdef _MSC_VER
+typedef CRITICAL_SECTION MUTEX_TYPE;
+#define MUTEX_INIT(mutex) InitializeCriticalSection(&mutex)
+#define MUTEX_FREE(mutex) DeleteCriticalSection(&mutex)
+#define MUTEX_LOCK(mutex) EnterCriticalSection(&mutex)
+#define MUTEX_UNLOCK(mutex) LeaveCriticalSection(&mutex)
+#define CURRENT_THREAD_ID GetCurrentThreadId()
+#else
+typedef pthread_mutex_t MUTEX_TYPE;
+#define MUTEX_INIT(mutex) {\
+	pthread_mutexattr_t mutexAttr;\
+	pthread_mutexattr_init(&mutexAttr);\
+	pthread_mutexattr_settype(&mutexAttr, PTHREAD_MUTEX_RECURSIVE);\
+	pthread_mutex_init(&mutex, &mutexAttr);\
+}
+#define MUTEX_FREE(mutex) pthread_mutex_destroy(&mutex)
+#define MUTEX_LOCK(mutex) pthread_mutex_lock(&mutex)
+#define MUTEX_UNLOCK(mutex) pthread_mutex_unlock(&mutex)
+#define CURRENT_THREAD_ID pthread_self()
+#endif
+
+#ifndef _MSC_VER
 #include <pthread.h>
+#endif
 
 #include "tls.h"
 
+#ifdef _MSC_VER
+#include <BaseTsd.h> // That's for SSIZE_T
+typedef SSIZE_T ssize_t;
+#define snprintf _snprintf
+#endif
+
 static rfbBool rfbTLSInitialized = FALSE;
-static pthread_mutex_t *mutex_buf = NULL;
+static MUTEX_TYPE *mutex_buf = NULL;
 
 struct CRYPTO_dynlock_value {
-	pthread_mutex_t mutex;
+	MUTEX_TYPE mutex;
 };
 
 static void locking_function(int mode, int n, const char *file, int line)
 {
 	if (mode & CRYPTO_LOCK)
-		pthread_mutex_lock(&mutex_buf[n]);
+		MUTEX_LOCK(mutex_buf[n]);
 	else
-		pthread_mutex_unlock(&mutex_buf[n]);
+		MUTEX_UNLOCK(mutex_buf[n]);
 }
 
 static unsigned long id_function(void)
 {
-	return ((unsigned long) pthread_self());
+	return ((unsigned long) CURRENT_THREAD_ID);
 }
 
 static struct CRYPTO_dynlock_value *dyn_create_function(const char *file, int line)
@@ -59,7 +92,7 @@ static struct CRYPTO_dynlock_value *dyn_create_function(const char *file, int li
 		malloc(sizeof(struct CRYPTO_dynlock_value));
 	if (!value)
 		goto err;
-	pthread_mutex_init(&value->mutex, NULL);
+	MUTEX_INIT(value->mutex);
 
 	return value;
 
@@ -70,16 +103,16 @@ err:
 static void dyn_lock_function (int mode, struct CRYPTO_dynlock_value *l, const char *file, int line)
 {
 	if (mode & CRYPTO_LOCK)
-		pthread_mutex_lock(&l->mutex);
+		MUTEX_LOCK(l->mutex);
 	else
-		pthread_mutex_unlock(&l->mutex);
+		MUTEX_UNLOCK(l->mutex);
 }
 
 
 static void
 dyn_destroy_function(struct CRYPTO_dynlock_value *l, const char *file, int line)
 {
-	pthread_mutex_destroy(&l->mutex);
+	MUTEX_FREE(l->mutex);
 	free(l);
 }
 
@@ -117,14 +150,14 @@ InitializeTLS(void)
 
   if (rfbTLSInitialized) return TRUE;
 
-  mutex_buf = malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
+  mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
   if (mutex_buf == NULL) {
     rfbClientLog("Failed to initialized OpenSSL: memory.\n");
     return (-1);
   }
 
   for (i = 0; i < CRYPTO_num_locks(); i++)
-    pthread_mutex_init(&mutex_buf[i], NULL);
+    MUTEX_INIT(mutex_buf[i]);
 
   CRYPTO_set_locking_callback(locking_function);
   CRYPTO_set_id_callback(id_function);
@@ -145,7 +178,6 @@ ssl_verify (int ok, X509_STORE_CTX *ctx)
 {
   unsigned char md5sum[16], fingerprint[40], *f;
   rfbClient *client;
-  char *prompt, *cert_str;
   int err, i;
   unsigned int md5len;
   //char buf[257];
@@ -203,8 +235,6 @@ static int sock_read_ready(SSL *ssl, uint32_t ms)
 
 static int wait_for_data(SSL *ssl, int ret, int timeout)
 {
-  struct timeval tv;
-  fd_set fds;
   int err;
   int retval = 1;
 
@@ -237,7 +267,6 @@ open_ssl_connection (rfbClient *client, int sockfd, rfbBool anonTLS)
   SSL_CTX *ssl_ctx = NULL;
   SSL *ssl = NULL;
   int n, finished = 0;
-  BIO *sbio;
 
   ssl_ctx = SSL_CTX_new (SSLv23_client_method ());
   SSL_CTX_set_default_verify_paths (ssl_ctx);
@@ -276,8 +305,6 @@ open_ssl_connection (rfbClient *client, int sockfd, rfbBool anonTLS)
 static rfbBool
 InitializeTLSSession(rfbClient* client, rfbBool anonTLS)
 {
-  int ret;
-
   if (client->tlsSession) return TRUE;
 
   client->tlsSession = open_ssl_connection (client, client->sock, anonTLS);
@@ -310,7 +337,11 @@ return TRUE;
     if (ret != -1)
     {
       rfbClientLog("TLS handshake blocking.\n");
-      sleep(1);
+#ifdef WIN32
+      Sleep(1000);
+#else
+	  sleep(1);
+#endif
       timeout--;
       continue;
     }
@@ -415,7 +446,6 @@ HandleVeNCryptAuth(rfbClient* client)
   uint32_t authScheme;
   rfbBool anonTLS;
 //  gnutls_certificate_credentials_t x509_cred = NULL;
-  int ret;
 
   if (!InitializeTLS()) return FALSE;
 
@@ -577,7 +607,7 @@ void FreeTLS(rfbClient* client)
     CRYPTO_set_id_callback(NULL);
 
     for (i = 0; i < CRYPTO_num_locks(); i++)
-      pthread_mutex_destroy(&mutex_buf[i]);
+      MUTEX_FREE(mutex_buf[i]);
     free(mutex_buf);
     mutex_buf = NULL;
   }
diff --git a/ica/x11/libvncclient/vncviewer.c b/ica/x11/libvncclient/vncviewer.c
index 3b16a6f..d81e298 100644
--- a/ica/x11/libvncclient/vncviewer.c
+++ b/ica/x11/libvncclient/vncviewer.c
@@ -21,6 +21,15 @@
  * vncviewer.c - the Xt-based VNC viewer.
  */
 
+#ifdef WIN32
+#undef SOCKET
+#include <winsock2.h>
+#endif
+
+#ifdef _MSC_VER
+#define strdup _strdup /* Prevent POSIX deprecation warnings */
+#endif
+
 #ifdef __STRICT_ANSI__
 #define _BSD_SOURCE
 #define _POSIX_SOURCE
@@ -40,12 +49,10 @@ static rfbBool DummyPoint(rfbClient* client, int x, int y) {
 static void DummyRect(rfbClient* client, int x, int y, int w, int h) {
 }
 
-#ifdef __MINGW32__
+#ifdef WIN32
 static char* NoPassword(rfbClient* client) {
   return strdup("");
 }
-#undef SOCKET
-#include <winsock2.h>
 #define close closesocket
 #else
 #include <stdio.h>
@@ -53,9 +60,9 @@ static char* NoPassword(rfbClient* client) {
 #endif
 
 static char* ReadPassword(rfbClient* client) {
-#ifdef __MINGW32__
+#ifdef WIN32
 	/* FIXME */
-	rfbClientErr("ReadPassword on MinGW32 NOT IMPLEMENTED\n");
+	rfbClientErr("ReadPassword on Windows NOT IMPLEMENTED\n");
 	return NoPassword(client);
 #else
 	int i;
@@ -82,20 +89,34 @@ static char* ReadPassword(rfbClient* client) {
 #endif
 }
 static rfbBool MallocFrameBuffer(rfbClient* client) {
+  uint64_t allocSize;
+
   if(client->frameBuffer)
     free(client->frameBuffer);
-  client->frameBuffer=malloc(client->width*client->height*client->format.bitsPerPixel/8);
+
+  /* SECURITY: promote 'width' into uint64_t so that the multiplication does not overflow
+     'width' and 'height' are 16-bit integers per RFB protocol design
+     SIZE_MAX is the maximum value that can fit into size_t
+  */
+  allocSize = (uint64_t)client->width * client->height * client->format.bitsPerPixel/8;
+
+  if (allocSize >= SIZE_MAX) {
+    rfbClientErr("CRITICAL: cannot allocate frameBuffer, requested size is too large\n");
+    return FALSE;
+  }
+
+  client->frameBuffer=malloc( (size_t)allocSize );
+
+  if (client->frameBuffer == NULL)
+    rfbClientErr("CRITICAL: frameBuffer allocation failed, requested size too large or not enough memory?\n");
+
   return client->frameBuffer?TRUE:FALSE;
 }
 
 static void initAppData(AppData* data) {
 	data->shareDesktop=TRUE;
 	data->viewOnly=FALSE;
-#ifdef LIBVNCSERVER_CONFIG_LIBVA
-	data->encodingsString="h264 tight zrle ultra copyrect hextile zlib corre rre raw";
-#else
 	data->encodingsString="tight zrle ultra copyrect hextile zlib corre rre raw";
-#endif
 	data->useBGR233=FALSE;
 	data->nColours=0;
 	data->forceOwnCmap=FALSE;
@@ -199,6 +220,8 @@ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel,
   client->subAuthScheme = 0;
   client->GetCredential = NULL;
   client->tlsSession = NULL;
+  client->LockWriteToTLS = NULL;
+  client->UnlockWriteToTLS = NULL;
   client->sock = -1;
   client->listenSock = -1;
   client->listenAddress = NULL;
@@ -232,7 +255,8 @@ static rfbBool rfbInitConnection(rfbClient* client)
 
   client->width=client->si.framebufferWidth;
   client->height=client->si.framebufferHeight;
-  client->MallocFrameBuffer(client);
+  if (!client->MallocFrameBuffer(client))
+    return FALSE;
 
   if (!SetFormatAndEncodings(client))
     return FALSE;
diff --git a/ica/x11/libvncclient/zrle.c b/ica/x11/libvncclient/zrle.c
index a14ad44..0128146 100644
--- a/ica/x11/libvncclient/zrle.c
+++ b/ica/x11/libvncclient/zrle.c
@@ -189,7 +189,7 @@ HandleZRLE (rfbClient* client, int rx, int ry, int rw, int rh)
 	} /* while ( remaining > 0 ) */
 
 	if ( inflateResult == Z_OK ) {
-		void* buf=client->raw_buffer;
+		char* buf=client->raw_buffer;
 		int i,j;
 
 		remaining = client->raw_buffer_size-client->decompStream.avail_out;
@@ -198,7 +198,7 @@ HandleZRLE (rfbClient* client, int rx, int ry, int rw, int rh)
 			for(i=0; i<rw; i+=rfbZRLETileWidth) {
 				int subWidth=(i+rfbZRLETileWidth>rw)?rw-i:rfbZRLETileWidth;
 				int subHeight=(j+rfbZRLETileHeight>rh)?rh-j:rfbZRLETileHeight;
-				int result=HandleZRLETile(client,buf,remaining,rx+i,ry+j,subWidth,subHeight);
+				int result=HandleZRLETile(client,(uint8_t *)buf,remaining,rx+i,ry+j,subWidth,subHeight);
 
 				if(result<0) {
 					rfbClientLog("ZRLE decoding failed (%d)\n",result);
diff --git a/ica/x11/libvncserver/cargs.c b/ica/x11/libvncserver/cargs.c
index b9eb02b..4da04b5 100644
--- a/ica/x11/libvncserver/cargs.c
+++ b/ica/x11/libvncserver/cargs.c
@@ -1,5 +1,5 @@
 /*
- *  This parses the command line arguments. It was seperated from main.c by 
+ *  This parses the command line arguments. It was separated from main.c by
  *  Justin Dearing <jdeari01 at longisland.poly.edu>.
  */
 
diff --git a/ica/x11/libvncserver/httpd.c b/ica/x11/libvncserver/httpd.c
index 792a52b..236ab3e 100644
--- a/ica/x11/libvncserver/httpd.c
+++ b/ica/x11/libvncserver/httpd.c
@@ -43,8 +43,15 @@
 #include <errno.h>
 
 #ifdef WIN32
-#include <winsock.h>
+#include <io.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
 #define close closesocket
+#if defined(_MSC_VER)
+#include <BaseTsd.h> /* For the missing ssize_t */
+#define ssize_t SSIZE_T
+#define read _read /* Prevent POSIX deprecation warnings */
+#endif
 #else
 #ifdef LIBVNCSERVER_HAVE_SYS_TIME_H
 #include <sys/time.h>
@@ -185,7 +192,7 @@ rfbHttpCheckFds(rfbScreenInfoPtr rfbScreen)
     }
     tv.tv_sec = 0;
     tv.tv_usec = 0;
-    nfds = select(max(rfbScreen->httpListen6Sock, max(rfbScreen->httpSock,rfbScreen->httpListenSock)) + 1, &fds, NULL, NULL, &tv);
+    nfds = select(rfbMax(rfbScreen->httpListen6Sock, rfbMax(rfbScreen->httpSock,rfbScreen->httpListenSock)) + 1, &fds, NULL, NULL, &tv);
     if (nfds == 0) {
 	return;
     }
@@ -392,11 +399,13 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
 
     getpeername(rfbScreen->httpSock, (struct sockaddr *)&addr, &addrlen);
 #ifdef LIBVNCSERVER_IPv6
-    char host[1024];
-    if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
-      rfbLogPerror("httpProcessInput: error in getnameinfo");
+    {
+        char host[1024];
+        if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
+            rfbLogPerror("httpProcessInput: error in getnameinfo");
+        }
+        rfbLog("httpd: get '%s' for %s\n", fname+1, host);
     }
-    rfbLog("httpd: get '%s' for %s\n", fname+1, host);
 #else
     rfbLog("httpd: get '%s' for %s\n", fname+1,
 	   inet_ntoa(addr.sin_addr));
@@ -414,6 +423,14 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
        }
     }
 
+    /* Basic protection against directory traversal outside webroot */
+
+    if (strstr(fname, "..")) {
+        rfbErr("httpd: URL should not contain '..'\n");
+        rfbWriteExact(&cl, NOT_FOUND_STR, strlen(NOT_FOUND_STR));
+        httpCloseSock(rfbScreen);
+        return;
+    }
 
     /* If we were asked for '/', actually read the file index.vnc */
 
diff --git a/ica/x11/libvncserver/main.c b/ica/x11/libvncserver/main.c
index 4cb18ac..a8458e4 100644
--- a/ica/x11/libvncserver/main.c
+++ b/ica/x11/libvncserver/main.c
@@ -550,7 +550,15 @@ clientInput(void *data)
             rfbSendFileTransferChunk(cl);
 
         if (FD_ISSET(cl->sock, &rfds) || FD_ISSET(cl->sock, &efds))
+        {
+#ifdef LIBVNCSERVER_WITH_WEBSOCKETS
+            do {
+                rfbProcessClientMessage(cl);
+            } while (webSocketsHasDataInBuffer(cl));
+#else
             rfbProcessClientMessage(cl);
+#endif
+        }
     }
 
     /* Get rid of the output thread. */
@@ -1051,7 +1059,7 @@ void rfbInitServer(rfbScreenInfoPtr screen)
 #endif
   rfbInitSockets(screen);
   rfbHttpInitSockets(screen);
-#ifndef __MINGW32__
+#ifndef WIN32
   if(screen->ignoreSIGPIPE)
     signal(SIGPIPE,SIG_IGN);
 #endif
@@ -1061,10 +1069,13 @@ void rfbShutdownServer(rfbScreenInfoPtr screen,rfbBool disconnectClients) {
   if(disconnectClients) {
     rfbClientPtr cl;
     rfbClientIteratorPtr iter = rfbGetClientIterator(screen);
-    while( (cl = rfbClientIteratorNext(iter)) )
-      if (cl->sock > -1)
-	/* we don't care about maxfd here, because the server goes away */
-	rfbCloseClient(cl);
+    while( (cl = rfbClientIteratorNext(iter)) ) {
+      if (cl->sock > -1) {
+       /* we don't care about maxfd here, because the server goes away */
+       rfbCloseClient(cl);
+       rfbClientConnectionGone(cl);
+      }
+    }
     rfbReleaseClientIterator(iter);
   }
 
diff --git a/ica/x11/libvncserver/rfbcrypto_included.c b/ica/x11/libvncserver/rfbcrypto_included.c
index 58c2e93..7feff61 100644
--- a/ica/x11/libvncserver/rfbcrypto_included.c
+++ b/ica/x11/libvncserver/rfbcrypto_included.c
@@ -23,7 +23,7 @@
 
 #include <string.h>
 #include "md5.h"
-#include "sha1.h"
+#include "sha.h"
 #include "rfbcrypto.h"
 
 void digestmd5(const struct iovec *iov, int iovcnt, void *dest)
diff --git a/ica/x11/libvncserver/rfbserver.c b/ica/x11/libvncserver/rfbserver.c
index 5f3b31d..bc9cc11 100644
--- a/ica/x11/libvncserver/rfbserver.c
+++ b/ica/x11/libvncserver/rfbserver.c
@@ -43,6 +43,9 @@
 #endif
 
 #ifdef WIN32
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <io.h>
 #define write(sock,buf,len) send(sock,buf,len,0)
 #else
 #ifdef LIBVNCSERVER_HAVE_UNISTD_H
@@ -72,8 +75,12 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+
+#ifndef WIN32
 /* readdir() */
 #include <dirent.h>
+#endif
+
 /* errno */
 #include <errno.h>
 /* strftime() */
@@ -83,12 +90,23 @@
 #include "rfbssl.h"
 #endif
 
+#ifdef _MSC_VER
+#define snprintf _snprintf /* Missing in MSVC */
+/* Prevent POSIX deprecation warnings */
+#define close _close
+#define strdup _strdup 
+#endif
+
+#ifdef WIN32
+#include <direct.h>
 #ifdef __MINGW32__
-static int compat_mkdir(const char *path, int mode)
-{
-	return mkdir(path);
-}
-#define mkdir compat_mkdir
+#define mkdir(path, perms) mkdir(path) /* Omit the perms argument to match POSIX signature */
+#else /* MSVC and other windows compilers */
+#define mkdir(path, perms) _mkdir(path) /* Omit the perms argument to match POSIX signature */
+#endif /* __MINGW32__ else... */
+#ifndef S_ISDIR
+#define S_ISDIR(m)	(((m) & S_IFDIR) == S_IFDIR)
+#endif
 #endif
 
 #ifdef LIBVNCSERVER_HAVE_LIBJPEG
@@ -313,12 +331,14 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rfbScreen,
 
     if(isUDP) {
       rfbLog(" accepted UDP client\n");
-    } else {
+	} else {
+#ifdef LIBVNCSERVER_IPv6
+		char host[1024];
+#endif
       int one=1;
 
       getpeername(sock, (struct sockaddr *)&addr, &addrlen);
 #ifdef LIBVNCSERVER_IPv6
-      char host[1024];
       if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
 	rfbLogPerror("rfbNewClient: error in getnameinfo");
 	cl->host = strdup("");
@@ -343,13 +363,11 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rfbScreen,
 
       if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
 		     (char *)&one, sizeof(one)) < 0) {
-	rfbLogPerror("setsockopt failed");
-	close(sock);
-	return NULL;
+	rfbLogPerror("setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
       }
 
       FD_SET(sock,&(rfbScreen->allFds));
-		rfbScreen->maxFd = max(sock,rfbScreen->maxFd);
+		rfbScreen->maxFd = rfbMax(sock,rfbScreen->maxFd);
 
       INIT_MUTEX(cl->outputMutex);
       INIT_MUTEX(cl->refCountMutex);
@@ -935,7 +953,6 @@ rfbSendSupportedMessages(rfbClientPtr cl)
     /*rfbSetBit(msgs.client2server, rfbSetSW);           */
     /*rfbSetBit(msgs.client2server, rfbTextChat);        */
     rfbSetBit(msgs.client2server, rfbPalmVNCSetScaleFactor);
-    rfbSetBit(msgs.client2server, rfbXvp);
 
     rfbSetBit(msgs.server2client, rfbFramebufferUpdate);
     rfbSetBit(msgs.server2client, rfbSetColourMapEntries);
@@ -943,7 +960,11 @@ rfbSendSupportedMessages(rfbClientPtr cl)
     rfbSetBit(msgs.server2client, rfbServerCutText);
     rfbSetBit(msgs.server2client, rfbResizeFrameBuffer);
     rfbSetBit(msgs.server2client, rfbPalmVNCReSizeFrameBuffer);
-    rfbSetBit(msgs.server2client, rfbXvp);
+
+    if (cl->screen->xvpHook) {
+        rfbSetBit(msgs.client2server, rfbXvp);
+        rfbSetBit(msgs.server2client, rfbXvp);
+    }
 
     memcpy(&cl->updateBuf[cl->ublen], (char *)&msgs, sz_rfbSupportedMessages);
     cl->ublen += sz_rfbSupportedMessages;
@@ -1241,13 +1262,20 @@ typedef struct {
 #define RFB_FILE_ATTRIBUTE_TEMPORARY  0x100
 #define RFB_FILE_ATTRIBUTE_COMPRESSED 0x800
 
-rfbBool rfbFilenameTranslate2UNIX(rfbClientPtr cl, char *path, char *unixPath)
+rfbBool rfbFilenameTranslate2UNIX(rfbClientPtr cl, /* in */ char *path, /* out */ char *unixPath, size_t unixPathMaxLen)
 {
     int x;
     char *home=NULL;
 
     FILEXFER_ALLOWED_OR_CLOSE_AND_RETURN("", cl, FALSE);
 
+    /*
+     * Do not use strncpy() - truncating the file name would probably have undesirable side effects
+     * Instead check if destination buffer is big enough
+     */
+    if (strlen(path) >= unixPathMaxLen)
+      return FALSE;
+
     /* C: */
     if (path[0]=='C' && path[1]==':')
       strcpy(unixPath, &path[2]);
@@ -1256,6 +1284,10 @@ rfbBool rfbFilenameTranslate2UNIX(rfbClientPtr cl, char *path, char *unixPath)
       home = getenv("HOME");
       if (home!=NULL)
       {
+        /* Re-check buffer size */
+        if ((strlen(path) + strlen(home) + 1) >= unixPathMaxLen)
+          return FALSE;
+
         strcpy(unixPath, home);
         strcat(unixPath,"/");
         strcat(unixPath, path);
@@ -1287,33 +1319,85 @@ rfbBool rfbSendDirContent(rfbClientPtr cl, int length, char *buffer)
     struct stat statbuf;
     RFB_FIND_DATA win32filename;
     int nOptLen = 0, retval=0;
+#ifdef WIN32
+    WIN32_FIND_DATAA winFindData;
+    HANDLE findHandle;
+    int pathLen, basePathLength;
+    char *basePath;
+#else
     DIR *dirp=NULL;
     struct dirent *direntp=NULL;
+#endif
 
     FILEXFER_ALLOWED_OR_CLOSE_AND_RETURN("", cl, FALSE);
 
     /* Client thinks we are Winblows */
-    rfbFilenameTranslate2UNIX(cl, buffer, path);
+    if (!rfbFilenameTranslate2UNIX(cl, buffer, path, sizeof(path)))
+        return FALSE;
 
     if (DB) rfbLog("rfbProcessFileTransfer() rfbDirContentRequest: rfbRDirContent: \"%s\"->\"%s\"\n",buffer, path);
 
+#ifdef WIN32
+    // Create a search string, like C:\folder\*
+
+    pathLen = strlen(path);
+    basePath = malloc(pathLen + 3);
+    memcpy(basePath, path, pathLen);
+    basePathLength = pathLen;
+    basePath[basePathLength] = '\\';
+    basePath[basePathLength + 1] = '*';
+    basePath[basePathLength + 2] = '\0';
+
+    // Start a search
+    memset(&winFindData, 0, sizeof(winFindData));
+    findHandle = FindFirstFileA(path, &winFindData);
+    free(basePath);
+
+    if (findHandle == INVALID_HANDLE_VALUE)
+#else
     dirp=opendir(path);
     if (dirp==NULL)
+#endif
         return rfbSendFileTransferMessage(cl, rfbDirPacket, rfbADirectory, 0, 0, NULL);
+
     /* send back the path name (necessary for links) */
     if (rfbSendFileTransferMessage(cl, rfbDirPacket, rfbADirectory, 0, length, buffer)==FALSE) return FALSE;
+
+#ifdef WIN32
+    while (findHandle != INVALID_HANDLE_VALUE)
+#else
     for (direntp=readdir(dirp); direntp!=NULL; direntp=readdir(dirp))
+#endif
     {
         /* get stats */
-        snprintf(retfilename,sizeof(retfilename),"%s/%s", path, direntp->d_name);
+#ifdef WIN32
+    snprintf(retfilename,sizeof(retfilename),"%s/%s", path, winFindData.cFileName);
+#else
+    snprintf(retfilename,sizeof(retfilename),"%s/%s", path, direntp->d_name);
+#endif
         retval = stat(retfilename, &statbuf);
 
         if (retval==0)
         {
             memset((char *)&win32filename, 0, sizeof(win32filename));
+#ifdef WIN32
+            win32filename.dwFileAttributes = winFindData.dwFileAttributes;
+            win32filename.ftCreationTime.dwLowDateTime = winFindData.ftCreationTime.dwLowDateTime;
+            win32filename.ftCreationTime.dwHighDateTime = winFindData.ftCreationTime.dwHighDateTime;
+            win32filename.ftLastAccessTime.dwLowDateTime = winFindData.ftLastAccessTime.dwLowDateTime;
+            win32filename.ftLastAccessTime.dwHighDateTime = winFindData.ftLastAccessTime.dwHighDateTime;
+            win32filename.ftLastWriteTime.dwLowDateTime = winFindData.ftLastWriteTime.dwLowDateTime;
+            win32filename.ftLastWriteTime.dwHighDateTime = winFindData.ftLastWriteTime.dwHighDateTime;
+            win32filename.nFileSizeLow = winFindData.nFileSizeLow;
+            win32filename.nFileSizeHigh = winFindData.nFileSizeHigh;
+            win32filename.dwReserved0 = winFindData.dwReserved0;
+            win32filename.dwReserved1 = winFindData.dwReserved1;
+            strcpy((char *)win32filename.cFileName, winFindData.cFileName);
+            strcpy((char *)win32filename.cAlternateFileName, winFindData.cAlternateFileName);
+#else
             win32filename.dwFileAttributes = Swap32IfBE(RFB_FILE_ATTRIBUTE_NORMAL);
             if (S_ISDIR(statbuf.st_mode))
-              win32filename.dwFileAttributes = Swap32IfBE(RFB_FILE_ATTRIBUTE_DIRECTORY);
+                win32filename.dwFileAttributes = Swap32IfBE(RFB_FILE_ATTRIBUTE_DIRECTORY);
             win32filename.ftCreationTime.dwLowDateTime = Swap32IfBE(statbuf.st_ctime);   /* Intel Order */
             win32filename.ftCreationTime.dwHighDateTime = 0;
             win32filename.ftLastAccessTime.dwLowDateTime = Swap32IfBE(statbuf.st_atime); /* Intel Order */
@@ -1328,9 +1412,10 @@ rfbBool rfbSendDirContent(rfbClientPtr cl, int length, char *buffer)
             /* If this had the full path, we would need to translate to DOS format ("C:\") */
             /* rfbFilenameTranslate2DOS(cl, retfilename, win32filename.cFileName); */
             strcpy((char *)win32filename.cFileName, direntp->d_name);
+#endif
             
             /* Do not show hidden files (but show how to move up the tree) */
-            if ((strcmp(direntp->d_name, "..")==0) || (direntp->d_name[0]!='.'))
+            if ((strcmp((char *)win32filename.cFileName, "..")==0) || (win32filename.cFileName[0]!='.'))
             {
                 nOptLen = sizeof(RFB_FIND_DATA) - MAX_PATH - 14 + strlen((char *)win32filename.cFileName);
                 /*
@@ -1338,13 +1423,32 @@ rfbBool rfbSendDirContent(rfbClientPtr cl, int length, char *buffer)
                 */
                 if (rfbSendFileTransferMessage(cl, rfbDirPacket, rfbADirectory, 0, nOptLen, (char *)&win32filename)==FALSE)
                 {
+#ifdef WIN32
+                    FindClose(findHandle);
+#else
                     closedir(dirp);
+#endif
                     return FALSE;
                 }
             }
         }
+
+#ifdef WIN32
+        if (FindNextFileA(findHandle, &winFindData) == 0)
+        {
+            FindClose(findHandle);
+            findHandle = INVALID_HANDLE_VALUE;
+        }
+#endif
     }
+#ifdef WIN32
+    if (findHandle != INVALID_HANDLE_VALUE)
+    {
+        FindClose(findHandle);
+    }
+#else
     closedir(dirp);
+#endif
     /* End of the transfer */
     return rfbSendFileTransferMessage(cl, rfbDirPacket, 0, 0, 0, NULL);
 }
@@ -1570,7 +1674,8 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
         /* add some space to the end of the buffer as we will be adding a timespec to it */
         if ((buffer = rfbProcessFileTransferReadBuffer(cl, length))==NULL) return FALSE;
         /* The client requests a File */
-        rfbFilenameTranslate2UNIX(cl, buffer, filename1);
+        if (!rfbFilenameTranslate2UNIX(cl, buffer, filename1, sizeof(filename1)))
+            goto fail;
         cl->fileTransfer.fd=open(filename1, O_RDONLY, 0744);
 
         /*
@@ -1668,7 +1773,8 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
         p = strrchr(buffer, ',');
         if (p!=NULL) {
             *p = '\0';
-            strcpy(szFileTime, p+1);
+            strncpy(szFileTime, p+1, sizeof(szFileTime));
+            szFileTime[sizeof(szFileTime)-1] = '\x00'; /* ensure NULL terminating byte is present, even if copy overflowed */
         } else
             szFileTime[0]=0;
 
@@ -1685,7 +1791,8 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
         }
         sizeHtmp = Swap32IfLE(sizeHtmp);
         
-        rfbFilenameTranslate2UNIX(cl, buffer, filename1);
+        if (!rfbFilenameTranslate2UNIX(cl, buffer, filename1, sizeof(filename1)))
+            goto fail;
 
         /* If the file exists... We can send a rfbFileChecksums back to the client before we send an rfbFileAcceptHeader */
         /* TODO: Delta Transfer */
@@ -1814,7 +1921,8 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
         if ((buffer = rfbProcessFileTransferReadBuffer(cl, length))==NULL) return FALSE;
         switch (contentParam) {
         case rfbCDirCreate:  /* Client requests the creation of a directory */
-            rfbFilenameTranslate2UNIX(cl, buffer, filename1);
+            if (!rfbFilenameTranslate2UNIX(cl, buffer, filename1, sizeof(filename1)))
+                goto fail;
             retval = mkdir(filename1, 0755);
             if (DB) rfbLog("rfbProcessFileTransfer() rfbCommand: rfbCDirCreate(\"%s\"->\"%s\") %s\n", buffer, filename1, (retval==-1?"Failed":"Success"));
             /*
@@ -1823,7 +1931,8 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
             if (buffer!=NULL) free(buffer);
             return retval;
         case rfbCFileDelete: /* Client requests the deletion of a file */
-            rfbFilenameTranslate2UNIX(cl, buffer, filename1);
+            if (!rfbFilenameTranslate2UNIX(cl, buffer, filename1, sizeof(filename1)))
+                goto fail;
             if (stat(filename1,&statbuf)==0)
             {
                 if (S_ISDIR(statbuf.st_mode))
@@ -1841,8 +1950,10 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
             {
                 /* Split into 2 filenames ('*' is a seperator) */
                 *p = '\0';
-                rfbFilenameTranslate2UNIX(cl, buffer, filename1);
-                rfbFilenameTranslate2UNIX(cl, p+1,    filename2);
+                if (!rfbFilenameTranslate2UNIX(cl, buffer, filename1, sizeof(filename1)))
+                    goto fail;
+                if (!rfbFilenameTranslate2UNIX(cl, p+1,    filename2, sizeof(filename2)))
+                    goto fail;
                 retval = rename(filename1,filename2);
                 if (DB) rfbLog("rfbProcessFileTransfer() rfbCommand: rfbCFileRename(\"%s\"->\"%s\" -->> \"%s\"->\"%s\") %s\n", buffer, filename1, p+1, filename2, (retval==-1?"Failed":"Success"));
                 /*
@@ -1862,6 +1973,10 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con
     /* NOTE: don't forget to free(buffer) if you return early! */
     if (buffer!=NULL) free(buffer);
     return TRUE;
+
+fail:
+    if (buffer!=NULL) free(buffer);
+    return FALSE;
 }
 
 /*
@@ -2102,13 +2217,15 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
                   cl->enableServerIdentity = TRUE;
                 }
                 break;
-	    case rfbEncodingXvp:
-	        rfbLog("Enabling Xvp protocol extension for client "
-		        "%s\n", cl->host);
-		if (!rfbSendXvp(cl, 1, rfbXvp_Init)) {
-		  rfbCloseClient(cl);
-		  return;
-		}
+            case rfbEncodingXvp:
+                if (cl->screen->xvpHook) {
+                  rfbLog("Enabling Xvp protocol extension for client "
+                          "%s\n", cl->host);
+                  if (!rfbSendXvp(cl, 1, rfbXvp_Init)) {
+                    rfbCloseClient(cl);
+                    return;
+                  }
+                }
                 break;
             default:
 #if defined(LIBVNCSERVER_HAVE_LIBZ) || defined(LIBVNCSERVER_HAVE_LIBPNG)
@@ -2461,6 +2578,11 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
 	msg.cct.length = Swap32IfLE(msg.cct.length);
 
 	str = (char *)malloc(msg.cct.length);
+	if (str == NULL) {
+		rfbLogPerror("rfbProcessClientNormalMessage: not enough memory");
+		rfbCloseClient(cl);
+		return;
+	}
 
 	if ((n = rfbReadExact(cl, str, msg.cct.length)) <= 0) {
 	    if (n != 0)
@@ -2486,6 +2608,13 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
           rfbCloseClient(cl);
           return;
       }
+
+      if (msg.ssc.scale == 0) {
+          rfbLogPerror("rfbProcessClientNormalMessage: will not accept a scale factor of zero");
+          rfbCloseClient(cl);
+          return;
+      }
+
       rfbStatRecordMessageRcvd(cl, msg.type, sz_rfbSetScaleMsg, sz_rfbSetScaleMsg);
       rfbLog("rfbSetScale(%d)\n", msg.ssc.scale);
       rfbScalingSetup(cl,cl->screen->width/msg.ssc.scale, cl->screen->height/msg.ssc.scale);
@@ -2502,6 +2631,13 @@ rfbProcessClientNormalMessage(rfbClientPtr cl)
           rfbCloseClient(cl);
           return;
       }
+
+      if (msg.ssc.scale == 0) {
+          rfbLogPerror("rfbProcessClientNormalMessage: will not accept a scale factor of zero");
+          rfbCloseClient(cl);
+          return;
+      }
+
       rfbStatRecordMessageRcvd(cl, msg.type, sz_rfbSetScaleMsg, sz_rfbSetScaleMsg);
       rfbLog("rfbSetScale(%d)\n", msg.ssc.scale);
       rfbScalingSetup(cl,cl->screen->width/msg.ssc.scale, cl->screen->height/msg.ssc.scale);
diff --git a/ica/x11/libvncserver/rfbssl_gnutls.c b/ica/x11/libvncserver/rfbssl_gnutls.c
index cf60cdc..e58cdad 100644
--- a/ica/x11/libvncserver/rfbssl_gnutls.c
+++ b/ica/x11/libvncserver/rfbssl_gnutls.c
@@ -109,6 +109,8 @@ struct rfbssl_ctx *rfbssl_init_global(char *key, char *cert)
 	gnutls_global_set_log_function(rfbssl_log_func);
 	gnutls_global_set_log_level(1);
 	gnutls_certificate_set_dh_params(ctx->x509_cred, ctx->dh_params);
+	/* newly allocated memory should be initialized, at least where it is important */
+	ctx->peekstart = ctx->peeklen = 0;
 	return ctx;
     }
 
diff --git a/ica/x11/libvncserver/scale.c b/ica/x11/libvncserver/scale.c
index 6f91391..3ca76dc 100644
--- a/ica/x11/libvncserver/scale.c
+++ b/ica/x11/libvncserver/scale.c
@@ -66,6 +66,12 @@
         (double) ((int) (x)) : (double) ((int) (x) + 1) )
 #define FLOOR(x) ( (double) ((int) (x)) )
 
+static inline int pad4(int value)
+{
+    int remainder = value & 3;
+    if (!remainder) return value;
+    return value + 4 - remainder;
+}
 
 int ScaleX(rfbScreenInfoPtr from, rfbScreenInfoPtr to, int x)
 {
@@ -207,7 +213,7 @@ void rfbScaledScreenUpdateRect(rfbScreenInfoPtr screen, rfbScreenInfoPtr ptr, in
              case 2: pixel_value = *((unsigned short *)srcptr2); break;
              case 1: pixel_value = *((unsigned char *)srcptr2);  break;
              default:
-               /* fixme: endianess problem? */
+               /* fixme: endianness problem? */
                for (z = 0; z < bytesPerPixel; z++)
                  pixel_value += (srcptr2[z] << (8 * z));
                 break;
@@ -234,7 +240,7 @@ void rfbScaledScreenUpdateRect(rfbScreenInfoPtr screen, rfbScreenInfoPtr ptr, in
          case 2: *((unsigned short *)dstptr) = (unsigned short) pixel_value; break;
          case 1: *((unsigned char *)dstptr)  = (unsigned char)  pixel_value; break;
          default:
-           /* fixme: endianess problem? */
+           /* fixme: endianness problem? */
            for (z = 0; z < bytesPerPixel; z++)
              dstptr[z]=(pixel_value >> (8 * z)) & 0xff;
             break;
@@ -281,14 +287,29 @@ rfbScreenInfoPtr rfbScaledScreenAllocate(rfbClientPtr cl, int width, int height)
     ptr = malloc(sizeof(rfbScreenInfo));
     if (ptr!=NULL)
     {
+        int allocSize;
+
         /* copy *everything* (we don't use most of it, but just in case) */
         memcpy(ptr, cl->screen, sizeof(rfbScreenInfo));
+
+        /* SECURITY: make sure that no integer overflow will occur afterwards.
+         * Note: this is defensive coding, as the check should have already been
+         * performed during initial, non-scaled screen setup.
+         */
+        allocSize = pad4(width * (ptr->bitsPerPixel/8)); /* per protocol, width<2**16 and bpp<256 */
+        if (height == 0 || allocSize >= SIZE_MAX / height)
+        {
+          free(ptr);
+          return NULL; /* malloc() will allocate an incorrect buffer size - early abort */
+        }
+
+        /* Resume copy everything */
         ptr->width = width;
         ptr->height = height;
         ptr->paddedWidthInBytes = (ptr->bitsPerPixel/8)*ptr->width;
 
         /* Need to by multiples of 4 for Sparc systems */
-        ptr->paddedWidthInBytes += (ptr->paddedWidthInBytes % 4);
+        ptr->paddedWidthInBytes = pad4(ptr->paddedWidthInBytes);
 
         /* Reset the reference count to 0! */
         ptr->scaledScreenRefCount = 0;
@@ -392,7 +413,6 @@ int rfbSendNewScaleSize(rfbClientPtr cl)
         if (rfbWriteExact(cl, (char *)&pmsg, sz_rfbPalmVNCReSizeFrameBufferMsg) < 0) {
             rfbLogPerror("rfbNewClient: write");
             rfbCloseClient(cl);
-            rfbClientConnectionGone(cl);
             return FALSE;
         }
     }
@@ -407,7 +427,6 @@ int rfbSendNewScaleSize(rfbClientPtr cl)
         if (rfbWriteExact(cl, (char *)&rmsg, sz_rfbResizeFrameBufferMsg) < 0) {
             rfbLogPerror("rfbNewClient: write");
             rfbCloseClient(cl);
-            rfbClientConnectionGone(cl);
             return FALSE;
         }
     }
diff --git a/ica/x11/libvncserver/selbox.c b/ica/x11/libvncserver/selbox.c
index c065505..ab84390 100644
--- a/ica/x11/libvncserver/selbox.c
+++ b/ica/x11/libvncserver/selbox.c
@@ -235,7 +235,7 @@ int rfbSelectBox(rfbScreenInfoPtr rfbScreen,rfbFontDataPtr font,
 
    i = rfbWidthOfString(font,okStr);
    j = rfbWidthOfString(font,cancelStr);
-   selData.buttonWidth= k = 4*border+((i<j)?j:i);
+   selData.buttonWidth= k = 4*border+(i<j?j:i);
    selData.okBX = x1+(x2-x1-2*k)/3;
    if(selData.okBX<x1+border) /* too narrow! */
      return(-1);
diff --git a/ica/x11/libvncserver/sockets.c b/ica/x11/libvncserver/sockets.c
index 4acdd72..d382d91 100644
--- a/ica/x11/libvncserver/sockets.c
+++ b/ica/x11/libvncserver/sockets.c
@@ -4,8 +4,9 @@
  * This code should be independent of any changes in the RFB protocol.  It just
  * deals with the X server scheduling stuff, calling rfbNewClientConnection and
  * rfbProcessClientMessage to actually deal with the protocol.  If a socket
- * needs to be closed for any reason then rfbCloseClient should be called, and
- * this in turn will call rfbClientConnectionGone.  To make an active
+ * needs to be closed for any reason then rfbCloseClient should be called. In turn,
+ * rfbClientConnectionGone will be called by rfbProcessEvents (non-threaded case)
+ * or clientInput (threaded case) in main.c.  To make an active
  * connection out, call rfbConnect - note that this does _not_ call
  * rfbNewClientConnection.
  *
@@ -98,21 +99,32 @@ int deny_severity=LOG_WARNING;
 #endif
 
 #if defined(WIN32)
+#include <winsock2.h>
+#include <ws2tcpip.h>
 #ifndef __MINGW32__
 #pragma warning (disable: 4018 4761)
 #endif
 #define read(sock,buf,len) recv(sock,buf,len,0)
-#ifndef EWOULDBLOCK
+#ifdef EWOULDBLOCK
+#undef EWOULDBLOCK
+#endif
 #define EWOULDBLOCK WSAEWOULDBLOCK
+#ifdef ETIMEDOUT
+#undef ETIMEDOUT
 #endif
-#ifndef ETIMEDOUT
 #define ETIMEDOUT WSAETIMEDOUT
-#endif
 #define write(sock,buf,len) send(sock,buf,len,0)
 #else
 #define closesocket close
 #endif
 
+#ifdef _MSC_VER
+#define SHUT_RD   0x00
+#define SHUT_WR   0x01
+#define SHUT_RDWR 0x02
+#define snprintf _snprintf /* Missing in MSVC */
+#endif
+
 int rfbMaxClientWait = 20000;   /* time (ms) after which we decide client has
                                    gone away - needed to stop us hanging */
 
@@ -126,8 +138,9 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 {
     in_addr_t iface = rfbScreen->listenInterface;
 
-    if (rfbScreen->socketState!=RFB_SOCKET_INIT)
-	return;
+    if (rfbScreen->socketState == RFB_SOCKET_READY) {
+        return;
+    }
 
     rfbScreen->socketState = RFB_SOCKET_READY;
 
@@ -139,8 +152,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 
 	if (setsockopt(rfbScreen->inetdSock, IPPROTO_TCP, TCP_NODELAY,
 		       (char *)&one, sizeof(one)) < 0) {
-	    rfbLogPerror("setsockopt");
-	    return;
+	    rfbLogPerror("setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
 	}
 
     	FD_ZERO(&(rfbScreen->allFds));
@@ -155,7 +167,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 
         rfbLog("Autoprobing TCP port \n");
         for (i = 5900; i < 6000; i++) {
-            if ((rfbScreen->listenSock = rfbListenOnTCPPort(i, iface)) >= 0) {
+            if ((rfbScreen->listenSock = rfbListenOnTCPPort(i, iface)) != -1) {
 		rfbScreen->port = i;
 		break;
 	    }
@@ -173,7 +185,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 #ifdef LIBVNCSERVER_IPv6
         rfbLog("Autoprobing TCP6 port \n");
 	for (i = 5900; i < 6000; i++) {
-            if ((rfbScreen->listen6Sock = rfbListenOnTCP6Port(i, rfbScreen->listen6Interface)) >= 0) {
+            if ((rfbScreen->listen6Sock = rfbListenOnTCP6Port(i, rfbScreen->listen6Interface)) != -1) {
 		rfbScreen->ipv6port = i;
 		break;
 	    }
@@ -186,7 +198,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 
         rfbLog("Autoprobing selected TCP6 port %d\n", rfbScreen->ipv6port);
 	FD_SET(rfbScreen->listen6Sock, &(rfbScreen->allFds));
-	rfbScreen->maxFd = max((int)rfbScreen->listen6Sock,rfbScreen->maxFd);
+	rfbScreen->maxFd = rfbMax((int)rfbScreen->listen6Sock,rfbScreen->maxFd);
 #endif
     }
     else
@@ -213,7 +225,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
       rfbLog("Listening for VNC connections on TCP6 port %d\n", rfbScreen->ipv6port);  
 	
       FD_SET(rfbScreen->listen6Sock, &(rfbScreen->allFds));
-      rfbScreen->maxFd = max((int)rfbScreen->listen6Sock,rfbScreen->maxFd);
+      rfbScreen->maxFd = rfbMax((int)rfbScreen->listen6Sock,rfbScreen->maxFd);
 	    }
 #endif
 
@@ -229,7 +241,7 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen)
 	rfbLog("Listening for VNC connections on TCP port %d\n", rfbScreen->port);  
 
 	FD_SET(rfbScreen->udpSock, &(rfbScreen->allFds));
-	rfbScreen->maxFd = max((int)rfbScreen->udpSock,rfbScreen->maxFd);
+	rfbScreen->maxFd = rfbMax((int)rfbScreen->udpSock,rfbScreen->maxFd);
     }
 }
 
@@ -240,25 +252,25 @@ void rfbShutdownSockets(rfbScreenInfoPtr rfbScreen)
 
     rfbScreen->socketState = RFB_SOCKET_SHUTDOWN;
 
-    if(rfbScreen->inetdSock>-1) {
+    if(rfbScreen->inetdSock!=-1) {
 	closesocket(rfbScreen->inetdSock);
 	FD_CLR(rfbScreen->inetdSock,&rfbScreen->allFds);
 	rfbScreen->inetdSock=-1;
     }
 
-    if(rfbScreen->listenSock>-1) {
+    if(rfbScreen->listenSock!=-1) {
 	closesocket(rfbScreen->listenSock);
 	FD_CLR(rfbScreen->listenSock,&rfbScreen->allFds);
 	rfbScreen->listenSock=-1;
     }
 
-    if(rfbScreen->listen6Sock>-1) {
+    if(rfbScreen->listen6Sock!=-1) {
 	closesocket(rfbScreen->listen6Sock);
 	FD_CLR(rfbScreen->listen6Sock,&rfbScreen->allFds);
 	rfbScreen->listen6Sock=-1;
     }
 
-    if(rfbScreen->udpSock>-1) {
+    if(rfbScreen->udpSock!=-1) {
 	closesocket(rfbScreen->udpSock);
 	FD_CLR(rfbScreen->udpSock,&rfbScreen->allFds);
 	rfbScreen->udpSock=-1;
@@ -384,7 +396,15 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
             if (FD_ISSET(cl->sock, &(rfbScreen->allFds)))
             {
                 if (FD_ISSET(cl->sock, &fds))
+                {
+#ifdef LIBVNCSERVER_WITH_WEBSOCKETS
+                    do {
+                        rfbProcessClientMessage(cl);
+                    } while (cl->sock > 0 && webSocketsHasDataInBuffer(cl));
+#else
                     rfbProcessClientMessage(cl);
+#endif
+                }
                 else
                     rfbSendFileTransferChunk(cl);
             }
@@ -412,17 +432,17 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen)
        has an incoming connection pending. We know that at least 
        one of them has, so this should not block for too long! */
     FD_ZERO(&listen_fds);  
-    if(rfbScreen->listenSock >= 0) 
+    if(rfbScreen->listenSock != -1) 
       FD_SET(rfbScreen->listenSock, &listen_fds);
-    if(rfbScreen->listen6Sock >= 0) 
+    if(rfbScreen->listen6Sock != -1) 
       FD_SET(rfbScreen->listen6Sock, &listen_fds);
     if (select(rfbScreen->maxFd+1, &listen_fds, NULL, NULL, NULL) == -1) {
       rfbLogPerror("rfbProcessNewConnection: error in select");
       return FALSE;
     }
-    if (rfbScreen->listenSock >= 0 && FD_ISSET(rfbScreen->listenSock, &listen_fds))
+    if (rfbScreen->listenSock != -1 && FD_ISSET(rfbScreen->listenSock, &listen_fds))
       chosen_listen_sock = rfbScreen->listenSock;
-    if (rfbScreen->listen6Sock >= 0 && FD_ISSET(rfbScreen->listen6Sock, &listen_fds))
+    if (rfbScreen->listen6Sock != -1 && FD_ISSET(rfbScreen->listen6Sock, &listen_fds))
       chosen_listen_sock = rfbScreen->listen6Sock;
 
     if ((sock = accept(chosen_listen_sock,
@@ -438,9 +458,7 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen)
 
     if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
 		   (char *)&one, sizeof(one)) < 0) {
-      rfbLogPerror("rfbCheckFds: setsockopt");
-      closesocket(sock);
-      return FALSE;
+      rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
     }
 
 #ifdef USE_LIBWRAP
@@ -454,11 +472,13 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen)
 #endif
 
 #ifdef LIBVNCSERVER_IPv6
-    char host[1024];
-    if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
-      rfbLogPerror("rfbProcessNewConnection: error in getnameinfo");
+    {
+        char host[1024];
+        if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
+            rfbLogPerror("rfbProcessNewConnection: error in getnameinfo");
+        }
+        rfbLog("Got connection from client %s\n", host);
     }
-    rfbLog("Got connection from client %s\n", host);
 #else
     rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr));
 #endif
@@ -539,14 +559,12 @@ rfbConnect(rfbScreenInfoPtr rfbScreen,
 
     if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
 		   (char *)&one, sizeof(one)) < 0) {
-	rfbLogPerror("setsockopt failed");
-	closesocket(sock);
-	return -1;
+	rfbLogPerror("setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?");
     }
 
     /* AddEnabledDevice(sock); */
     FD_SET(sock, &rfbScreen->allFds);
-    rfbScreen->maxFd = max(sock,rfbScreen->maxFd);
+    rfbScreen->maxFd = rfbMax(sock,rfbScreen->maxFd);
 
     return sock;
 }
@@ -908,7 +926,7 @@ rfbListenOnTCP6Port(int port,
         }
 
 #ifdef IPV6_V6ONLY
-	/* we have seperate IPv4 and IPv6 sockets since some OS's do not support dual binding */
+	/* we have separate IPv4 and IPv6 sockets since some OS's do not support dual binding */
 	if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof(one)) < 0) {
 	  rfbLogPerror("rfbListenOnTCP6Port error in setsockopt IPV6_V6ONLY");
 	  closesocket(sock);
diff --git a/ica/x11/libvncserver/stats.c b/ica/x11/libvncserver/stats.c
index 39de1c6..b99da01 100644
--- a/ica/x11/libvncserver/stats.c
+++ b/ica/x11/libvncserver/stats.c
@@ -26,6 +26,10 @@
 
 #include <rfb/rfb.h>
 
+#ifdef _MSC_VER
+#define snprintf _snprintf /* Missing in MSVC */
+#endif
+
 char *messageNameServer2Client(uint32_t type, char *buf, int len);
 char *messageNameClient2Server(uint32_t type, char *buf, int len);
 char *encodingName(uint32_t enc, char *buf, int len);
diff --git a/ica/x11/libvncserver/tight.c b/ica/x11/libvncserver/tight.c
index 276a2e3..bca374d 100644
--- a/ica/x11/libvncserver/tight.c
+++ b/ica/x11/libvncserver/tight.c
@@ -163,7 +163,11 @@ void rfbTightCleanup (rfbScreenInfoPtr screen)
         tightAfterBufSize = 0;
         tightAfterBuf = NULL;
     }
-    if (j) tjDestroy(j);
+	if (j) {
+		tjDestroy(j);
+		/* Set freed resource handle to 0! */
+		j = 0;
+	}
 }
 
 
@@ -559,7 +563,7 @@ ExtendSolidArea(rfbClientPtr cl,
 /*
  * Check if a rectangle is all of the same color. If needSameColor is
  * set to non-zero, then also check that its color equals to the
- * *colorPtr value. The result is 1 if the test is successfull, and in
+ * *colorPtr value. The result is 1 if the test is successful, and in
  * that case new color will be stored in *colorPtr.
  */
 
diff --git a/ica/x11/libvncserver/ultra.c b/ica/x11/libvncserver/ultra.c
index 9485591..83bddaa 100644
--- a/ica/x11/libvncserver/ultra.c
+++ b/ica/x11/libvncserver/ultra.c
@@ -201,7 +201,7 @@ rfbSendRectEncodingUltra(rfbClientPtr cl,
             return FALSE;
         }
 
-        /* Technically, flushing the buffer here is not extrememly
+        /* Technically, flushing the buffer here is not extremely
          * efficient.  However, this improves the overall throughput
          * of the system over very slow networks.  By flushing
          * the buffer with every maximum size lzo rectangle, we
diff --git a/ica/x11/libvncserver/websockets.c b/ica/x11/libvncserver/websockets.c
index bd5d9d0..b5d99fc 100644
--- a/ica/x11/libvncserver/websockets.c
+++ b/ica/x11/libvncserver/websockets.c
@@ -31,10 +31,13 @@
 #endif
 
 #include <rfb/rfb.h>
-#include <resolv.h> /* __b64_ntop */
 /* errno */
 #include <errno.h>
 
+#ifndef _MSC_VER
+#include <resolv.h> /* __b64_ntop */
+#endif
+
 #ifdef LIBVNCSERVER_HAVE_ENDIAN_H
 #include <endian.h>
 #elif LIBVNCSERVER_HAVE_SYS_ENDIAN_H
@@ -76,8 +79,9 @@ typedef int (*wsEncodeFunc)(rfbClientPtr cl, const char *src, int len, char **ds
 typedef int (*wsDecodeFunc)(rfbClientPtr cl, char *dst, int len);
 
 typedef struct ws_ctx_s {
-    char codeBuf[B64LEN(UPDATE_BUF_SIZE) + WSHLENMAX]; /* base64 + maximum frame header length */
-    char readbuf[8192];
+    char codeBufDecode[B64LEN(UPDATE_BUF_SIZE) + WSHLENMAX]; /* base64 + maximum frame header length */
+	char codeBufEncode[B64LEN(UPDATE_BUF_SIZE) + WSHLENMAX]; /* base64 + maximum frame header length */
+	char readbuf[8192];
     int readbufstart;
     int readbuflen;
     int dblen;
@@ -487,15 +491,15 @@ webSocketsEncodeHixie(rfbClientPtr cl, const char *src, int len, char **dst)
     int sz = 0;
     ws_ctx_t *wsctx = (ws_ctx_t *)cl->wsctx;
 
-    wsctx->codeBuf[sz++] = '\x00';
-    len = __b64_ntop((unsigned char *)src, len, wsctx->codeBuf+sz, sizeof(wsctx->codeBuf) - (sz + 1));
+    wsctx->codeBufEncode[sz++] = '\x00';
+    len = __b64_ntop((unsigned char *)src, len, wsctx->codeBufEncode+sz, sizeof(wsctx->codeBufEncode) - (sz + 1));
     if (len < 0) {
         return len;
     }
     sz += len;
 
-    wsctx->codeBuf[sz++] = '\xff';
-    *dst = wsctx->codeBuf;
+    wsctx->codeBufEncode[sz++] = '\xff';
+    *dst = wsctx->codeBufEncode;
     return sz;
 }
 
@@ -533,7 +537,7 @@ webSocketsDecodeHixie(rfbClientPtr cl, char *dst, int len)
     char *buf, *end = NULL;
     ws_ctx_t *wsctx = (ws_ctx_t *)cl->wsctx;
 
-    buf = wsctx->codeBuf;
+    buf = wsctx->codeBufDecode;
 
     n = ws_peek(cl, buf, len*2+2);
 
@@ -654,8 +658,8 @@ webSocketsDecodeHybi(rfbClientPtr cl, char *dst, int len)
       goto spor;
     }
 
-    buf = wsctx->codeBuf;
-    header = (ws_header_t *)wsctx->codeBuf;
+    buf = wsctx->codeBufDecode;
+    header = (ws_header_t *)wsctx->codeBufDecode;
 
     ret = ws_peek(cl, buf, B64LEN(len) + WSHLENMAX);
 
@@ -739,11 +743,11 @@ webSocketsDecodeHybi(rfbClientPtr cl, char *dst, int len)
 	errno = ECONNRESET;
 	break;
       case WS_OPCODE_TEXT_FRAME:
-	if (-1 == (flength = __b64_pton(payload, (unsigned char *)wsctx->codeBuf, sizeof(wsctx->codeBuf)))) {
+	if (-1 == (flength = __b64_pton(payload, (unsigned char *)wsctx->codeBufDecode, sizeof(wsctx->codeBufDecode)))) {
 	  rfbErr("%s: Base64 decode error; %m\n", __func__);
 	  break;
 	}
-	payload = wsctx->codeBuf;
+	payload = wsctx->codeBufDecode;
 	/* fall through */
       case WS_OPCODE_BINARY_FRAME:
 	if (flength > len) {
@@ -787,7 +791,7 @@ webSocketsEncodeHybi(rfbClientPtr cl, const char *src, int len, char **dst)
 	  return 0;
     }
 
-    header = (ws_header_t *)wsctx->codeBuf;
+    header = (ws_header_t *)wsctx->codeBufEncode;
 
     if (wsctx->base64) {
 	opcode = WS_OPCODE_TEXT_FRAME;
@@ -813,7 +817,7 @@ webSocketsEncodeHybi(rfbClientPtr cl, const char *src, int len, char **dst)
     }
 
     if (wsctx->base64) {
-        if (-1 == (ret = __b64_ntop((unsigned char *)src, len, wsctx->codeBuf + sz, sizeof(wsctx->codeBuf) - sz))) {
+        if (-1 == (ret = __b64_ntop((unsigned char *)src, len, wsctx->codeBufEncode + sz, sizeof(wsctx->codeBufEncode) - sz))) {
 	  rfbErr("%s: Base 64 encode failed\n", __func__);
 	} else {
 	  if (ret != blen)
@@ -821,11 +825,12 @@ webSocketsEncodeHybi(rfbClientPtr cl, const char *src, int len, char **dst)
 	  ret += sz;
 	}
     } else {
-      memcpy(wsctx->codeBuf + sz, src, len);
+      memcpy(wsctx->codeBufEncode + sz, src, len);
       ret =  sz + len;
     }
 
-    *dst = wsctx->codeBuf;
+    *dst = wsctx->codeBufEncode;
+
     return ret;
 }
 
@@ -902,3 +907,16 @@ webSocketCheckDisconnect(rfbClientPtr cl)
     return FALSE;
 }
 
+/* returns TRUE if there is data waiting to be read in our internal buffer
+ * or if is there any pending data in the buffer of the SSL implementation
+ */
+rfbBool
+webSocketsHasDataInBuffer(rfbClientPtr cl)
+{
+    ws_ctx_t *wsctx = (ws_ctx_t *)cl->wsctx;
+
+    if (wsctx && wsctx->readbuflen)
+      return TRUE;
+
+    return (cl->sslctx && rfbssl_pending(cl) > 0);
+}
diff --git a/ica/x11/libvncserver/zlib.c b/ica/x11/libvncserver/zlib.c
index ac20c9c..45a1314 100644
--- a/ica/x11/libvncserver/zlib.c
+++ b/ica/x11/libvncserver/zlib.c
@@ -300,7 +300,7 @@ rfbSendRectEncodingZlib(rfbClientPtr cl,
             return FALSE;
         }
 
-        /* Technically, flushing the buffer here is not extrememly
+        /* Technically, flushing the buffer here is not extremely
          * efficient.  However, this improves the overall throughput
          * of the system over very slow networks.  By flushing
          * the buffer with every maximum size zlib rectangle, we
diff --git a/ica/x11/x11vnc/xinerama.c b/ica/x11/x11vnc/xinerama.c
index 001e2ca..0d2ca71 100644
--- a/ica/x11/x11vnc/xinerama.c
+++ b/ica/x11/x11vnc/xinerama.c
@@ -98,6 +98,13 @@ static void initialize_blackouts(char *list) {
 		if (y > Y) {
 			t = Y; Y = y; y = t;
 		}
+
+		/* take clipping region into account */
+		x = nfix(x - coff_x, wdpy_x);
+		X = nfix(X - coff_x, wdpy_x);
+		y = nfix(y - coff_y, wdpy_y);
+		Y = nfix(Y - coff_y, wdpy_y);
+
 		if (x < 0 || x > dpy_x || y < 0 || y > dpy_y ||
 		    X < 0 || X > dpy_x || Y < 0 || Y > dpy_y ||
 		    x == X || y == Y) {
diff --git a/ica/x11/x11vnc/xrandr.c b/ica/x11/x11vnc/xrandr.c
index d0d68e1..f2fb5ea 100644
--- a/ica/x11/x11vnc/xrandr.c
+++ b/ica/x11/x11vnc/xrandr.c
@@ -268,6 +268,7 @@ int check_xrandr_event(char *msg) {
 			/* under do_change caller normally returns before its X_UNLOCK */
 			X_UNLOCK;
 			handle_xrandr_change(rev->width, rev->height);
+			X_LOCK;
 		}
 		if (qout) {
 			return do_change;
diff --git a/ima/CMakeLists.txt b/ima/CMakeLists.txt
index 3edeb9e..2ae22fd 100644
--- a/ima/CMakeLists.txt
+++ b/ima/CMakeLists.txt
@@ -2,10 +2,10 @@ FILE(GLOB italc_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)
 FILE(GLOB italc_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
 FILE(GLOB italc_UI ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/*.ui)
 SET(QRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/italc.qrc)
-QT4_WRAP_CPP(italc_MOC_out ${italc_INCLUDES})
-QT4_WRAP_UI(italc_UIC_out ${italc_UI})
-QT4_ADD_RESOURCES(italc_RCC_out ${QRC_FILE})
-QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${italc_SOURCES} ${italc_INCLUDES})
+QT5_WRAP_CPP(italc_MOC_out ${italc_INCLUDES})
+QT5_WRAP_UI(italc_UIC_out ${italc_UI})
+QT5_ADD_RESOURCES(italc_RCC_out ${QRC_FILE})
+#QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${italc_SOURCES} ${italc_INCLUDES})
 
 IF(ITALC_BUILD_WIN32)
 	SET(WINRC "${CMAKE_CURRENT_BINARY_DIR}/italcrc.obj")
diff --git a/ima/data/italc.ico b/ima/data/italc.ico
index eb7364e..2c6cdab 100644
Binary files a/ima/data/italc.ico and b/ima/data/italc.ico differ
diff --git a/ima/data/italc.png b/ima/data/italc.png
index 4bc9140..933b4d0 100644
Binary files a/ima/data/italc.png and b/ima/data/italc.png differ
diff --git a/ima/data/italc.xpm b/ima/data/italc.xpm
index 7f10a3a..a90d6cf 100644
--- a/ima/data/italc.xpm
+++ b/ima/data/italc.xpm
@@ -1,2690 +1,376 @@
 /* XPM */
-static char * italc_xpm[] = {
-"128 128 2559 2",
-"  	c None",
-". 	c #004000",
-"+ 	c #004100",
-"@ 	c #004600",
-"# 	c #004B00",
-"$ 	c #005000",
-"% 	c #005300",
-"& 	c #005500",
-"* 	c #005700",
-"= 	c #005900",
-"- 	c #005B00",
-"; 	c #005E00",
-"> 	c #005F00",
-", 	c #005D00",
-"' 	c #005C00",
-") 	c #005A00",
-"! 	c #005800",
-"~ 	c #004D00",
-"{ 	c #004700",
-"] 	c #004200",
-"^ 	c #004900",
-"/ 	c #005100",
-"( 	c #006000",
-"_ 	c #006100",
-": 	c #006200",
-"< 	c #006300",
-"[ 	c #006400",
-"} 	c #006500",
-"| 	c #006600",
-"1 	c #006700",
-"2 	c #006800",
-"3 	c #006900",
-"4 	c #006A00",
-"5 	c #004C00",
-"6 	c #004800",
-"7 	c #006B00",
-"8 	c #006C00",
-"9 	c #006D00",
-"0 	c #006E00",
-"a 	c #005200",
-"b 	c #0A670A",
-"c 	c #287B28",
-"d 	c #478D47",
-"e 	c #66A166",
-"f 	c #84B484",
-"g 	c #9CC39C",
-"h 	c #A6C9A6",
-"i 	c #B0CFB0",
-"j 	c #BAD6BA",
-"k 	c #C4DCC4",
-"l 	c #CDE1CD",
-"m 	c #C9DFC9",
-"n 	c #BFD9BF",
-"o 	c #B5D4B5",
-"p 	c #ACCEAC",
-"q 	c #A1C8A1",
-"r 	c #93C093",
-"s 	c #76AF76",
-"t 	c #569E56",
-"u 	c #388C38",
-"v 	c #197B19",
-"w 	c #016D01",
-"x 	c #006F00",
-"y 	c #007000",
-"z 	c #007100",
-"A 	c #004A00",
-"B 	c #004300",
-"C 	c #004F00",
-"D 	c #096609",
-"E 	c #418941",
-"F 	c #7FB07F",
-"G 	c #BBD5BB",
-"H 	c #D9E8D9",
-"I 	c #D9E9D9",
-"J 	c #D2E6D2",
-"K 	c #9FC99F",
-"L 	c #62A762",
-"M 	c #248524",
-"N 	c #007200",
-"O 	c #007300",
-"P 	c #007400",
-"Q 	c #007500",
-"R 	c #004500",
-"S 	c #004400",
-"T 	c #237623",
-"U 	c #5F9C5F",
-"V 	c #9BC19B",
-"W 	c #CEE1CE",
-"X 	c #D4E5D4",
-"Y 	c #D4E6D4",
-"Z 	c #D4E7D4",
-"` 	c #BBD9BB",
-" .	c #7FB97F",
-"..	c #439843",
-"+.	c #0B7A0B",
-"@.	c #007600",
-"#.	c #007700",
-"$.	c #005400",
-"%.	c #0B670B",
-"&.	c #7DAE7D",
-"*.	c #B8D3B8",
-"=.	c #D0E2D0",
-"-.	c #D0E3D0",
-";.	c #D0E4D0",
-">.	c #D0E5D0",
-",.	c #D0E6D0",
-"'.	c #CCE4CC",
-").	c #9CCA9C",
-"!.	c #61AB61",
-"~.	c #268B26",
-"{.	c #007800",
-"].	c #007900",
-"^.	c #007A00",
-"/.	c #126B12",
-"(.	c #6EA56E",
-"_.	c #C2D9C2",
-":.	c #CBDFCB",
-"<.	c #CBE0CB",
-"[.	c #CBE1CB",
-"}.	c #CBE2CB",
-"|.	c #CBE3CB",
-"1.	c #CBE4CB",
-"2.	c #A2CEA2",
-"3.	c #3F9B3F",
-"4.	c #017A01",
-"5.	c #007B00",
-"6.	c #007C00",
-"7.	c #007D00",
-"8.	c #004E00",
-"9.	c #146D14",
-"0.	c #6FA56F",
-"a.	c #BFD7BF",
-"b.	c #C6DCC6",
-"c.	c #C6DDC6",
-"d.	c #C6DEC6",
-"e.	c #C6DFC6",
-"f.	c #C6E0C6",
-"g.	c #C6E1C6",
-"h.	c #A2CFA2",
-"i.	c #409D40",
-"j.	c #017D01",
-"k.	c #007E00",
-"l.	c #007F00",
-"m.	c #166E16",
-"n.	c #71A671",
-"o.	c #BDD6BD",
-"p.	c #C2DAC2",
-"q.	c #C2DBC2",
-"r.	c #C2DCC2",
-"s.	c #C2DDC2",
-"t.	c #C2DEC2",
-"u.	c #C2DFC2",
-"v.	c #C2E0C2",
-"w.	c #A1CFA1",
-"x.	c #42A042",
-"y.	c #028002",
-"z.	c #008000",
-"A.	c #008100",
-"B.	c #186F18",
-"C.	c #72A872",
-"D.	c #B9D3B9",
-"E.	c #BDD7BD",
-"F.	c #BDD8BD",
-"G.	c #BDD9BD",
-"H.	c #BDDABD",
-"I.	c #BDDBBD",
-"J.	c #BDDCBD",
-"K.	c #BDDDBD",
-"L.	c #BDDEBD",
-"M.	c #9FD09F",
-"N.	c #44A344",
-"O.	c #028302",
-"P.	c #008200",
-"Q.	c #008300",
-"R.	c #008400",
-"S.	c #0D680D",
-"T.	c #B5D1B5",
-"U.	c #B8D4B8",
-"V.	c #B8D5B8",
-"W.	c #B8D6B8",
-"X.	c #B8D7B8",
-"Y.	c #B8D8B8",
-"Z.	c #B8D9B8",
-"`.	c #B8DAB8",
-" +	c #B8DBB8",
-".+	c #B8DCB8",
-"++	c #9DCF9D",
-"@+	c #3AA03A",
-"#+	c #008500",
-"$+	c #008600",
-"%+	c #277927",
-"&+	c #9EC39E",
-"*+	c #B3D0B3",
-"=+	c #B3D1B3",
-"-+	c #B3D2B3",
-";+	c #B3D3B3",
-">+	c #B3D4B3",
-",+	c #B3D5B3",
-"'+	c #B3D6B3",
-")+	c #B3D7B3",
-"!+	c #B3D8B3",
-"~+	c #B3D9B3",
-"{+	c #B3DAB3",
-"]+	c #B3DBB3",
-"^+	c #67B767",
-"/+	c #048804",
-"(+	c #008700",
-"_+	c #008800",
-":+	c #4E924E",
-"<+	c #ACCCAC",
-"[+	c #AFCEAF",
-"}+	c #AFCFAF",
-"|+	c #AFD0AF",
-"1+	c #AFD1AF",
-"2+	c #AFD2AF",
-"3+	c #AFD3AF",
-"4+	c #AFD4AF",
-"5+	c #AFD5AF",
-"6+	c #9CBEAA",
-"7+	c #7994A0",
-"8+	c #5B6F98",
-"9+	c #718A9E",
-"0+	c #94B4A8",
-"a+	c #AED5AF",
-"b+	c #AFD6AF",
-"c+	c #AFD7AF",
-"d+	c #AFD8AF",
-"e+	c #AFD9AF",
-"f+	c #8BC98B",
-"g+	c #179317",
-"h+	c #008900",
-"i+	c #008A00",
-"j+	c #0B690B",
-"k+	c #75AB75",
-"l+	c #AACBAA",
-"m+	c #AACCAA",
-"n+	c #AACDAA",
-"o+	c #AACEAA",
-"p+	c #AACFAA",
-"q+	c #AAD0AA",
-"r+	c #AAD1AA",
-"s+	c #AAD2AA",
-"t+	c #9CC1A7",
-"u+	c #3F4D90",
-"v+	c #101484",
-"w+	c #000080",
-"x+	c #090C82",
-"y+	c #2F3B8B",
-"z+	c #8DAFA3",
-"A+	c #AAD4AA",
-"B+	c #AAD5AA",
-"C+	c #AAD6AA",
-"D+	c #AAD7AA",
-"E+	c #AAD8AA",
-"F+	c #9FD39F",
-"G+	c #36A336",
-"H+	c #008B00",
-"I+	c #008C00",
-"J+	c #227822",
-"K+	c #90BB90",
-"L+	c #A5C8A5",
-"M+	c #A5C9A5",
-"N+	c #A5CAA5",
-"O+	c #A5CBA5",
-"P+	c #A5CCA5",
-"Q+	c #A5CDA5",
-"R+	c #A5CEA5",
-"S+	c #A5CFA5",
-"T+	c #6F8C99",
-"U+	c #0E1183",
-"V+	c #040581",
-"W+	c #576F93",
-"X+	c #A3D0A5",
-"Y+	c #A5D3A5",
-"Z+	c #A5D4A5",
-"`+	c #A5D5A5",
-" @	c #A5D6A5",
-".@	c #5DB65D",
-"+@	c #038E03",
-"@@	c #008D00",
-"#@	c #008E00",
-"$@	c #468F46",
-"%@	c #9DC49D",
-"&@	c #A1C6A1",
-"*@	c #A1C7A1",
-"=@	c #A1C9A1",
-"-@	c #A1CAA1",
-";@	c #A1CBA1",
-">@	c #A1CCA1",
-",@	c #A1CDA1",
-"'@	c #A1CEA1",
-")@	c #3E4F8D",
-"!@	c #232E87",
-"~@	c #98C69F",
-"{@	c #A1D1A1",
-"]@	c #A1D2A1",
-"^@	c #A1D3A1",
-"/@	c #A1D4A1",
-"(@	c #A1D5A1",
-"_@	c #7FC67F",
-":@	c #149814",
-"<@	c #008F00",
-"[@	c #009000",
-"}@	c #056705",
-"|@	c #6AA46A",
-"1@	c #9CC49C",
-"2@	c #9CC59C",
-"3@	c #9CC69C",
-"4@	c #9CC79C",
-"5@	c #9CC89C",
-"6@	c #9CC99C",
-"7@	c #9CCB9C",
-"8@	c #5E7B91",
-"9@	c #3C508B",
-"0@	c #9CCF9C",
-"a@	c #9CD09C",
-"b@	c #9CD19C",
-"c@	c #9CD29C",
-"d@	c #9CD39C",
-"e@	c #9CD49C",
-"f@	c #92CF92",
-"g@	c #2BA42B",
-"h@	c #009100",
-"i@	c #009200",
-"j@	c #026602",
-"k@	c #68A468",
-"l@	c #97C197",
-"m@	c #97C297",
-"n@	c #97C397",
-"o@	c #97C497",
-"p@	c #97C597",
-"q@	c #97C697",
-"r@	c #97C797",
-"s@	c #97C897",
-"t@	c #97C997",
-"u@	c #85B195",
-"v@	c #080A81",
-"w@	c #6B9290",
-"x@	c #97CE97",
-"y@	c #97CF97",
-"z@	c #97D097",
-"A@	c #97D197",
-"B@	c #97D297",
-"C@	c #92D192",
-"D@	c #24A224",
-"E@	c #009300",
-"F@	c #009400",
-"G@	c #599B59",
-"H@	c #93BE93",
-"I@	c #93BF93",
-"J@	c #93C193",
-"K@	c #93C293",
-"L@	c #93C393",
-"M@	c #93C493",
-"N@	c #93C593",
-"O@	c #93C693",
-"P@	c #93C793",
-"Q@	c #93C893",
-"R@	c #273585",
-"S@	c #0F1582",
-"T@	c #8BC192",
-"U@	c #93CD93",
-"V@	c #93CE93",
-"W@	c #93CF93",
-"X@	c #93D093",
-"Y@	c #93D193",
-"Z@	c #8ACE8A",
-"`@	c #1AA01A",
-" #	c #009500",
-".#	c #009600",
-"+#	c #499249",
-"@#	c #8EBC8E",
-"##	c #8EBD8E",
-"$#	c #8EBE8E",
-"%#	c #8EBF8E",
-"&#	c #8EC08E",
-"*#	c #8EC18E",
-"=#	c #8EC28E",
-"-#	c #8EC38E",
-";#	c #8EC48E",
-">#	c #8EC58E",
-",#	c #82B58D",
-"'#	c #648E8A",
-")#	c #8ECB8E",
-"!#	c #8ECC8E",
-"~#	c #8ECD8E",
-"{#	c #8ECE8E",
-"]#	c #8ECF8E",
-"^#	c #8ED08E",
-"/#	c #80CB80",
-"(#	c #129D12",
-"_#	c #009700",
-":#	c #009800",
-"<#	c #398939",
-"[#	c #89B989",
-"}#	c #89BA89",
-"|#	c #89BB89",
-"1#	c #89BC89",
-"2#	c #89BD89",
-"3#	c #89BE89",
-"4#	c #89BF89",
-"5#	c #89C089",
-"6#	c #89C189",
-"7#	c #89C289",
-"8#	c #89C389",
-"9#	c #638D87",
-"0#	c #446484",
-"a#	c #89C989",
-"b#	c #89CA89",
-"c#	c #89CB89",
-"d#	c #89CC89",
-"e#	c #89CD89",
-"f#	c #89CE89",
-"g#	c #89CF89",
-"h#	c #75C775",
-"i#	c #0B9D0B",
-"j#	c #009900",
-"k#	c #009A00",
-"l#	c #2C822C",
-"m#	c #84B784",
-"n#	c #85B785",
-"o#	c #85B885",
-"p#	c #85B985",
-"q#	c #85BA85",
-"r#	c #85BB85",
-"s#	c #85BC85",
-"t#	c #85BD85",
-"u#	c #85BE85",
-"v#	c #85BF85",
-"w#	c #85C085",
-"x#	c #85C185",
-"y#	c #85C285",
-"z#	c #456483",
-"A#	c #283C82",
-"B#	c #85C885",
-"C#	c #85C985",
-"D#	c #85CA85",
-"E#	c #85CB85",
-"F#	c #85CC85",
-"G#	c #85CD85",
-"H#	c #85CE85",
-"I#	c #6AC46A",
-"J#	c #069C06",
-"K#	c #009B00",
-"L#	c #217C21",
-"M#	c #7DB37D",
-"N#	c #80B580",
-"O#	c #80B680",
-"P#	c #80B780",
-"Q#	c #80B880",
-"R#	c #80B980",
-"S#	c #80BA80",
-"T#	c #80BB80",
-"U#	c #80BC80",
-"V#	c #80BD80",
-"W#	c #80BE80",
-"X#	c #80BF80",
-"Y#	c #80C080",
-"Z#	c #293E80",
-"`#	c #0D1480",
-" $	c #80C680",
-".$	c #80C780",
-"+$	c #80C880",
-"@$	c #80C980",
-"#$	c #80CA80",
-"$$	c #80CC80",
-"%$	c #80CD80",
-"&$	c #5EC05E",
-"*$	c #039D03",
-"=$	c #009D00",
-"-$	c #187818",
-";$	c #74AE74",
-">$	c #7BB27B",
-",$	c #7BB37B",
-"'$	c #7BB47B",
-")$	c #7BB57B",
-"!$	c #7BB67B",
-"~$	c #7BB77B",
-"{$	c #7BB87B",
-"]$	c #7BB97B",
-"^$	c #7BBA7B",
-"/$	c #7BBB7B",
-"($	c #7BBC7B",
-"_$	c #7BBD7B",
-":$	c #7BBE7B",
-"<$	c #2F497E",
-"[$	c #14207F",
-"}$	c #7BC57B",
-"|$	c #7BC67B",
-"1$	c #7BC77B",
-"2$	c #7BC87B",
-"3$	c #7BC97B",
-"4$	c #7BCA7B",
-"5$	c #7BCB7B",
-"6$	c #7BCC7B",
-"7$	c #51BD51",
-"8$	c #019E01",
-"9$	c #009F00",
-"0$	c #066E06",
-"a$	c #68A768",
-"b$	c #77B177",
-"c$	c #77B277",
-"d$	c #77B377",
-"e$	c #77B477",
-"f$	c #77B577",
-"g$	c #77B677",
-"h$	c #77B777",
-"i$	c #77B877",
-"j$	c #77B977",
-"k$	c #77BA77",
-"l$	c #77BB77",
-"m$	c #77BC77",
-"n$	c #77BD77",
-"o$	c #466F7B",
-"p$	c #2B477C",
-"q$	c #77C477",
-"r$	c #77C577",
-"s$	c #77C677",
-"t$	c #77C777",
-"u$	c #77C877",
-"v$	c #77C977",
-"w$	c #77CA77",
-"x$	c #77CB77",
-"y$	c #77CC77",
-"z$	c #35B435",
-"A$	c #00A000",
-"B$	c #00A100",
-"C$	c #449344",
-"D$	c #72AE72",
-"E$	c #72AF72",
-"F$	c #72B072",
-"G$	c #72B172",
-"H$	c #72B272",
-"I$	c #72B372",
-"J$	c #72B472",
-"K$	c #72B572",
-"L$	c #72B672",
-"M$	c #72B772",
-"N$	c #72B872",
-"O$	c #72B972",
-"P$	c #72BA72",
-"Q$	c #72BB72",
-"R$	c #72BC72",
-"S$	c #5B9675",
-"T$	c #416E78",
-"U$	c #72C272",
-"V$	c #72C372",
-"W$	c #72C472",
-"X$	c #72C572",
-"Y$	c #72C672",
-"Z$	c #72C772",
-"`$	c #72C872",
-" %	c #72C972",
-".%	c #72CA72",
-"+%	c #6ECA6E",
-"@%	c #11A811",
-"#%	c #00A200",
-"$%	c #00A300",
-"%%	c #1D7E1D",
-"&%	c #6DAB6D",
-"*%	c #6DAC6D",
-"=%	c #6DAD6D",
-"-%	c #6DAE6D",
-";%	c #6DAF6D",
-">%	c #6DB06D",
-",%	c #6DB16D",
-"'%	c #6DB26D",
-")%	c #6DB36D",
-"!%	c #6DB46D",
-"~%	c #6DB56D",
-"{%	c #6DB66D",
-"]%	c #6DB76D",
-"^%	c #6DB86D",
-"/%	c #6DB96D",
-"(%	c #6DBA6D",
-"_%	c #6AB66D",
-":%	c #03067F",
-"<%	c #549571",
-"[%	c #6DC16D",
-"}%	c #6DC26D",
-"|%	c #6DC36D",
-"1%	c #6DC46D",
-"2%	c #6DC56D",
-"3%	c #6DC66D",
-"4%	c #6DC76D",
-"5%	c #6DC86D",
-"6%	c #6DC96D",
-"7%	c #6DCA6D",
-"8%	c #54C154",
-"9%	c #01A301",
-"0%	c #00A400",
-"a%	c #00A500",
-"b%	c #057105",
-"c%	c #5DA35D",
-"d%	c #69AA69",
-"e%	c #69AB69",
-"f%	c #69AC69",
-"g%	c #69AD69",
-"h%	c #69AE69",
-"i%	c #69AF69",
-"j%	c #69B069",
-"k%	c #69B169",
-"l%	c #69B269",
-"m%	c #69B369",
-"n%	c #69B469",
-"o%	c #69B569",
-"p%	c #69B669",
-"q%	c #69B769",
-"r%	c #69B869",
-"s%	c #69B969",
-"t%	c #386274",
-"u%	c #1C3479",
-"v%	c #69C069",
-"w%	c #69C169",
-"x%	c #69C269",
-"y%	c #69C369",
-"z%	c #69C469",
-"A%	c #69C569",
-"B%	c #69C669",
-"C%	c #69C769",
-"D%	c #69C869",
-"E%	c #69C969",
-"F%	c #2EB52E",
-"G%	c #00A600",
-"H%	c #378E37",
-"I%	c #64A764",
-"J%	c #64A864",
-"K%	c #64A964",
-"L%	c #64AA64",
-"M%	c #64AB64",
-"N%	c #64AC64",
-"O%	c #64AD64",
-"P%	c #64AE64",
-"Q%	c #64AF64",
-"R%	c #64B064",
-"S%	c #64B164",
-"T%	c #64B264",
-"U%	c #64B364",
-"V%	c #64B464",
-"W%	c #64B564",
-"X%	c #64B664",
-"Y%	c #64B764",
-"Z%	c #63B665",
-"`%	c #16287A",
-" &	c #050A7E",
-".&	c #59A868",
-"+&	c #64BF64",
-"@&	c #64C064",
-"#&	c #64C164",
-"$&	c #64C264",
-"%&	c #64C364",
-"&&	c #64C464",
-"*&	c #64C564",
-"=&	c #64C664",
-"-&	c #64C764",
-";&	c #64C864",
-">&	c #64C964",
-",&	c #60C760",
-"'&	c #09AA09",
-")&	c #00A700",
-"!&	c #00A800",
-"~&	c #0A760A",
-"{&	c #5CA45C",
-"]&	c #5FA65F",
-"^&	c #5FA75F",
-"/&	c #5FA85F",
-"(&	c #5FA95F",
-"_&	c #5FAA5F",
-":&	c #5FAB5F",
-"<&	c #5FAC5F",
-"[&	c #5FAD5F",
-"}&	c #5FAE5F",
-"|&	c #5FAF5F",
-"1&	c #5FB05F",
-"2&	c #5FB15F",
-"3&	c #5FB25F",
-"4&	c #5FB35F",
-"5&	c #5FB45F",
-"6&	c #5FB55F",
-"7&	c #5FB65F",
-"8&	c #519C64",
-"9&	c #03067E",
-"0&	c #3B746C",
-"a&	c #5FBD5F",
-"b&	c #5FBE5F",
-"c&	c #5FBF5F",
-"d&	c #5FC05F",
-"e&	c #5FC15F",
-"f&	c #5FC25F",
-"g&	c #5FC35F",
-"h&	c #5FC45F",
-"i&	c #5FC55F",
-"j&	c #5FC65F",
-"k&	c #5FC75F",
-"l&	c #5FC85F",
-"m&	c #37BB37",
-"n&	c #00A900",
-"o&	c #389038",
-"p&	c #5BA45B",
-"q&	c #5BA55B",
-"r&	c #5BA65B",
-"s&	c #5BA75B",
-"t&	c #5BA85B",
-"u&	c #5BA95B",
-"v&	c #5BAA5B",
-"w&	c #5BAB5B",
-"x&	c #5BAC5B",
-"y&	c #5BAD5B",
-"z&	c #5BAE5B",
-"A&	c #5BAF5B",
-"B&	c #5BB05B",
-"C&	c #5BB15B",
-"D&	c #5BB25B",
-"E&	c #5BB35B",
-"F&	c #5BB45B",
-"G&	c #5BB55B",
-"H&	c #5BB65B",
-"I&	c #448865",
-"J&	c #0A157B",
-"K&	c #32676B",
-"L&	c #5BBB5B",
-"M&	c #5BBC5B",
-"N&	c #5BBD5B",
-"O&	c #5BBE5B",
-"P&	c #5BBF5B",
-"Q&	c #5BC05B",
-"R&	c #5BC15B",
-"S&	c #5BC25B",
-"T&	c #5BC35B",
-"U&	c #5BC45B",
-"V&	c #5BC55B",
-"W&	c #5BC65B",
-"X&	c #5BC75B",
-"Y&	c #5BC85B",
-"Z&	c #59C759",
-"`&	c #0CAE0C",
-" *	c #00AB00",
-".*	c #0D790D",
-"+*	c #55A155",
-"@*	c #56A256",
-"#*	c #56A356",
-"$*	c #56A456",
-"%*	c #56A556",
-"&*	c #56A656",
-"**	c #56A756",
-"=*	c #56A856",
-"-*	c #56A956",
-";*	c #56AA56",
-">*	c #56AB56",
-",*	c #56AC56",
-"'*	c #56AD56",
-")*	c #56AE56",
-"!*	c #56AF56",
-"~*	c #56B056",
-"{*	c #56B156",
-"]*	c #56B256",
-"^*	c #56B356",
-"/*	c #56B456",
-"(*	c #56B556",
-"_*	c #51AA59",
-":*	c #1F4171",
-"<*	c #132877",
-"[*	c #499D5D",
-"}*	c #56BA56",
-"|*	c #56BB56",
-"1*	c #56BC56",
-"2*	c #56BD56",
-"3*	c #56BE56",
-"4*	c #56BF56",
-"5*	c #56C056",
-"6*	c #56C156",
-"7*	c #56C256",
-"8*	c #56C356",
-"9*	c #56C456",
-"0*	c #56C556",
-"a*	c #56C656",
-"b*	c #56C756",
-"c*	c #37BD37",
-"d*	c #00AC00",
-"e*	c #00AD00",
-"f*	c #359035",
-"g*	c #51A051",
-"h*	c #51A151",
-"i*	c #51A251",
-"j*	c #51A351",
-"k*	c #51A451",
-"l*	c #51A551",
-"m*	c #51A651",
-"n*	c #51A751",
-"o*	c #51A851",
-"p*	c #51A951",
-"q*	c #51AA51",
-"r*	c #51AB51",
-"s*	c #51AC51",
-"t*	c #51AD51",
-"u*	c #51AE51",
-"v*	c #51AF51",
-"w*	c #51B051",
-"x*	c #51B151",
-"y*	c #51B251",
-"z*	c #51B351",
-"A*	c #51B451",
-"B*	c #51B551",
-"C*	c #3A815F",
-"D*	c #224D6C",
-"E*	c #112676",
-"F*	c #02047F",
-"G*	c #01037F",
-"H*	c #0E2077",
-"I*	c #1E456E",
-"J*	c #327163",
-"K*	c #50B652",
-"L*	c #51B951",
-"M*	c #51BA51",
-"N*	c #51BB51",
-"O*	c #51BC51",
-"P*	c #51BE51",
-"Q*	c #51BF51",
-"R*	c #51C051",
-"S*	c #51C151",
-"T*	c #51C251",
-"U*	c #51C351",
-"V*	c #51C451",
-"W*	c #51C551",
-"X*	c #51C651",
-"Y*	c #50C750",
-"Z*	c #0DB10D",
-"`*	c #00AE00",
-" =	c #00AF00",
-".=	c #067706",
-"+=	c #4B9E4B",
-"@=	c #4D9F4D",
-"#=	c #4DA04D",
-"$=	c #4DA14D",
-"%=	c #4DA24D",
-"&=	c #4DA34D",
-"*=	c #4DA44D",
-"==	c #4DA54D",
-"-=	c #4DA64D",
-";=	c #4DA74D",
-">=	c #4DA84D",
-",=	c #4DA94D",
-"'=	c #4DAA4D",
-")=	c #4DAB4D",
-"!=	c #4DAC4D",
-"~=	c #4DAD4D",
-"{=	c #4DAE4D",
-"]=	c #4DAF4D",
-"^=	c #4DB04D",
-"/=	c #4DB14D",
-"(=	c #4DB24D",
-"_=	c #4DB34D",
-":=	c #4DB44D",
-"<=	c #4DB54D",
-"[=	c #4BB04F",
-"}=	c #409855",
-"|=	c #4AB04F",
-"1=	c #4DB64D",
-"2=	c #4DB74D",
-"3=	c #4DB84D",
-"4=	c #4DB94D",
-"5=	c #4DBA4D",
-"6=	c #4DBB4D",
-"7=	c #4DBC4D",
-"8=	c #4DBD4D",
-"9=	c #4DBE4D",
-"0=	c #4DBF4D",
-"a=	c #4DC04D",
-"b=	c #4DC14D",
-"c=	c #4DC24D",
-"d=	c #4DC34D",
-"e=	c #4DC44D",
-"f=	c #4DC54D",
-"g=	c #4DC64D",
-"h=	c #2CBD2C",
-"i=	c #00B000",
-"j=	c #218721",
-"k=	c #489D48",
-"l=	c #489E48",
-"m=	c #489F48",
-"n=	c #48A048",
-"o=	c #48A148",
-"p=	c #48A248",
-"q=	c #48A348",
-"r=	c #48A448",
-"s=	c #48A548",
-"t=	c #48A648",
-"u=	c #48A748",
-"v=	c #48A848",
-"w=	c #48A948",
-"x=	c #48AA48",
-"y=	c #48AB48",
-"z=	c #48AC48",
-"A=	c #48AD48",
-"B=	c #48AE48",
-"C=	c #48AF48",
-"D=	c #48B048",
-"E=	c #48B148",
-"F=	c #48B248",
-"G=	c #48B348",
-"H=	c #48B448",
-"I=	c #48B548",
-"J=	c #48B648",
-"K=	c #48B748",
-"L=	c #48B848",
-"M=	c #48B948",
-"N=	c #48BA48",
-"O=	c #48BB48",
-"P=	c #48BC48",
-"Q=	c #48BD48",
-"R=	c #48BE48",
-"S=	c #48BF48",
-"T=	c #48C048",
-"U=	c #48C148",
-"V=	c #48C248",
-"W=	c #48C348",
-"X=	c #48C448",
-"Y=	c #48C548",
-"Z=	c #48C648",
-"`=	c #43C543",
-" -	c #03B203",
-".-	c #00B100",
-"+-	c #00B200",
-"@-	c #399539",
-"#-	c #439B43",
-"$-	c #439C43",
-"%-	c #439D43",
-"&-	c #439E43",
-"*-	c #439F43",
-"=-	c #43A043",
-"--	c #43A143",
-";-	c #43A243",
-">-	c #43A343",
-",-	c #43A443",
-"'-	c #43A543",
-")-	c #43A643",
-"!-	c #43A743",
-"~-	c #43A843",
-"{-	c #43A943",
-"]-	c #43AA43",
-"^-	c #43AB43",
-"/-	c #43AC43",
-"(-	c #43AD43",
-"_-	c #43AE43",
-":-	c #43AF43",
-"<-	c #43B043",
-"[-	c #43B143",
-"}-	c #43B243",
-"|-	c #43B343",
-"1-	c #43B443",
-"2-	c #43B543",
-"3-	c #43B643",
-"4-	c #43B743",
-"5-	c #43B843",
-"6-	c #43B943",
-"7-	c #43BA43",
-"8-	c #43BB43",
-"9-	c #43BC43",
-"0-	c #43BD43",
-"a-	c #43BE43",
-"b-	c #43BF43",
-"c-	c #43C043",
-"d-	c #43C143",
-"e-	c #43C243",
-"f-	c #43C343",
-"g-	c #43C443",
-"h-	c #19BA19",
-"i-	c #00B300",
-"j-	c #107F10",
-"k-	c #3F993F",
-"l-	c #3F9A3F",
-"m-	c #3F9C3F",
-"n-	c #3F9D3F",
-"o-	c #3F9E3F",
-"p-	c #3F9F3F",
-"q-	c #3FA03F",
-"r-	c #3FA13F",
-"s-	c #3FA23F",
-"t-	c #3FA33F",
-"u-	c #3FA43F",
-"v-	c #3FA53F",
-"w-	c #3FA63F",
-"x-	c #3FA73F",
-"y-	c #3FA83F",
-"z-	c #3FA93F",
-"A-	c #3FAA3F",
-"B-	c #3FAB3F",
-"C-	c #3FAC3F",
-"D-	c #3FAD3F",
-"E-	c #3FAE3F",
-"F-	c #3FAF3F",
-"G-	c #3FB03F",
-"H-	c #3FB13F",
-"I-	c #3FB23F",
-"J-	c #3FB33F",
-"K-	c #3FB43F",
-"L-	c #3FB53F",
-"M-	c #3FB63F",
-"N-	c #3FB73F",
-"O-	c #3FB83F",
-"P-	c #3FB93F",
-"Q-	c #3FBA3F",
-"R-	c #3FBB3F",
-"S-	c #3FBC3F",
-"T-	c #3FBD3F",
-"U-	c #3FBE3F",
-"V-	c #3FBF3F",
-"W-	c #3FC03F",
-"X-	c #3FC13F",
-"Y-	c #3FC23F",
-"Z-	c #3FC33F",
-"`-	c #3FC43F",
-" ;	c #3FC53F",
-".;	c #3FC63F",
-"+;	c #31C231",
-"@;	c #00B400",
-"#;	c #00B500",
-"$;	c #228B22",
-"%;	c #3A973A",
-"&;	c #3A983A",
-"*;	c #3A993A",
-"=;	c #3A9A3A",
-"-;	c #3A9B3A",
-";;	c #3A9C3A",
-">;	c #3A9D3A",
-",;	c #3A9E3A",
-"';	c #3A9F3A",
-");	c #3AA13A",
-"!;	c #3AA23A",
-"~;	c #3AA33A",
-"{;	c #3AA43A",
-"];	c #3AA53A",
-"^;	c #3AA63A",
-"/;	c #3AA73A",
-"(;	c #3AA83A",
-"_;	c #3AA93A",
-":;	c #3AAA3A",
-"<;	c #3AAB3A",
-"[;	c #3AAC3A",
-"};	c #3AAD3A",
-"|;	c #3AAE3A",
-"1;	c #3AAF3A",
-"2;	c #3AB03A",
-"3;	c #3AB13A",
-"4;	c #3AB23A",
-"5;	c #3AB33A",
-"6;	c #3AB43A",
-"7;	c #3AB53A",
-"8;	c #3AB63A",
-"9;	c #3AB73A",
-"0;	c #3AB83A",
-"a;	c #3AB93A",
-"b;	c #3ABA3A",
-"c;	c #3ABB3A",
-"d;	c #3ABC3A",
-"e;	c #3ABD3A",
-"f;	c #3ABE3A",
-"g;	c #3ABF3A",
-"h;	c #3AC03A",
-"i;	c #3AC13A",
-"j;	c #3AC23A",
-"k;	c #3AC33A",
-"l;	c #3AC43A",
-"m;	c #3AC53A",
-"n;	c #3AC63A",
-"o;	c #07B707",
-"p;	c #00B600",
-"q;	c #2F922F",
-"r;	c #359635",
-"s;	c #359735",
-"t;	c #359835",
-"u;	c #359935",
-"v;	c #359A35",
-"w;	c #359B35",
-"x;	c #359C35",
-"y;	c #359D35",
-"z;	c #359E35",
-"A;	c #359F35",
-"B;	c #35A035",
-"C;	c #35A135",
-"D;	c #35A235",
-"E;	c #35A335",
-"F;	c #35A435",
-"G;	c #35A535",
-"H;	c #35A635",
-"I;	c #35A735",
-"J;	c #35A835",
-"K;	c #35A935",
-"L;	c #35AA35",
-"M;	c #35AB35",
-"N;	c #35AC35",
-"O;	c #35AD35",
-"P;	c #35AE35",
-"Q;	c #35AF35",
-"R;	c #35B035",
-"S;	c #35B135",
-"T;	c #35B235",
-"U;	c #35B335",
-"V;	c #35B535",
-"W;	c #35B635",
-"X;	c #35B735",
-"Y;	c #35B835",
-"Z;	c #35B935",
-"`;	c #35BA35",
-" >	c #35BB35",
-".>	c #35BC35",
-"+>	c #35BD35",
-"@>	c #35BE35",
-"#>	c #35BF35",
-"$>	c #35C035",
-"%>	c #35C135",
-"&>	c #35C235",
-"*>	c #35C335",
-"=>	c #35C435",
-"->	c #35C535",
-";>	c #15BD15",
-">>	c #00B700",
-",>	c #00B800",
-"'>	c #087F08",
-")>	c #319531",
-"!>	c #319631",
-"~>	c #319731",
-"{>	c #319831",
-"]>	c #319931",
-"^>	c #319A31",
-"/>	c #319B31",
-"(>	c #319C31",
-"_>	c #319D31",
-":>	c #319E31",
-"<>	c #319F31",
-"[>	c #31A031",
-"}>	c #31A131",
-"|>	c #31A231",
-"1>	c #31A331",
-"2>	c #31A431",
-"3>	c #31A531",
-"4>	c #31A631",
-"5>	c #31A731",
-"6>	c #31A831",
-"7>	c #31A931",
-"8>	c #31AA31",
-"9>	c #31AB31",
-"0>	c #31AC31",
-"a>	c #31AD31",
-"b>	c #31AE31",
-"c>	c #31AF31",
-"d>	c #31B031",
-"e>	c #31B131",
-"f>	c #31B231",
-"g>	c #31B331",
-"h>	c #31B431",
-"i>	c #31B531",
-"j>	c #31B631",
-"k>	c #31B731",
-"l>	c #31B831",
-"m>	c #31B931",
-"n>	c #31BA31",
-"o>	c #31BB31",
-"p>	c #31BC31",
-"q>	c #31BD31",
-"r>	c #31BE31",
-"s>	c #31BF31",
-"t>	c #31C031",
-"u>	c #31C131",
-"v>	c #31C331",
-"w>	c #31C431",
-"x>	c #31C531",
-"y>	c #22C122",
-"z>	c #00B900",
-"A>	c #00BA00",
-"B>	c #148614",
-"C>	c #2C932C",
-"D>	c #2C942C",
-"E>	c #2C952C",
-"F>	c #2C962C",
-"G>	c #2C972C",
-"H>	c #2C982C",
-"I>	c #2C992C",
-"J>	c #2C9A2C",
-"K>	c #2C9B2C",
-"L>	c #2C9C2C",
-"M>	c #2C9D2C",
-"N>	c #2C9E2C",
-"O>	c #2C9F2C",
-"P>	c #2CA02C",
-"Q>	c #2CA12C",
-"R>	c #2CA22C",
-"S>	c #2CA32C",
-"T>	c #2CA42C",
-"U>	c #2CA52C",
-"V>	c #2CA62C",
-"W>	c #2CA72C",
-"X>	c #2CA82C",
-"Y>	c #2CA92C",
-"Z>	c #2CAA2C",
-"`>	c #2CAB2C",
-" ,	c #2CAC2C",
-".,	c #2CAD2C",
-"+,	c #2CAE2C",
-"@,	c #2CAF2C",
-"#,	c #2CB02C",
-"$,	c #2CB12C",
-"%,	c #2CB22C",
-"&,	c #2CB32C",
-"*,	c #2CB42C",
-"=,	c #2CB52C",
-"-,	c #2CB62C",
-";,	c #2CB72C",
-">,	c #2CB82C",
-",,	c #2CB92C",
-"',	c #2CBA2C",
-"),	c #2CBB2C",
-"!,	c #2CBC2C",
-"~,	c #2CBE2C",
-"{,	c #2CBF2C",
-"],	c #2CC02C",
-"^,	c #2CC12C",
-"/,	c #2CC22C",
-"(,	c #2CC32C",
-"_,	c #2CC42C",
-":,	c #2CC52C",
-"<,	c #2AC42A",
-"[,	c #01BA01",
-"},	c #00BB00",
-"|,	c #1D8D1D",
-"1,	c #279227",
-"2,	c #279327",
-"3,	c #279427",
-"4,	c #279527",
-"5,	c #279627",
-"6,	c #279727",
-"7,	c #279827",
-"8,	c #279927",
-"9,	c #279A27",
-"0,	c #279B27",
-"a,	c #279C27",
-"b,	c #279D27",
-"c,	c #279E27",
-"d,	c #279F27",
-"e,	c #27A027",
-"f,	c #27A127",
-"g,	c #27A227",
-"h,	c #27A327",
-"i,	c #27A427",
-"j,	c #27A527",
-"k,	c #27A627",
-"l,	c #27A727",
-"m,	c #27A827",
-"n,	c #27A927",
-"o,	c #27AA27",
-"p,	c #27AB27",
-"q,	c #27AC27",
-"r,	c #27AD27",
-"s,	c #27AE27",
-"t,	c #27AF27",
-"u,	c #27B027",
-"v,	c #27B127",
-"w,	c #27B227",
-"x,	c #27B327",
-"y,	c #27B427",
-"z,	c #27B527",
-"A,	c #27B627",
-"B,	c #27B727",
-"C,	c #27B827",
-"D,	c #27B927",
-"E,	c #27BA27",
-"F,	c #27BB27",
-"G,	c #27BC27",
-"H,	c #27BD27",
-"I,	c #27BE27",
-"J,	c #27BF27",
-"K,	c #27C027",
-"L,	c #27C127",
-"M,	c #27C227",
-"N,	c #27C327",
-"O,	c #27C427",
-"P,	c #27C527",
-"Q,	c #09BE09",
-"R,	c #00BC00",
-"S,	c #00BD00",
-"T,	c #219021",
-"U,	c #239123",
-"V,	c #239223",
-"W,	c #239323",
-"X,	c #239423",
-"Y,	c #239523",
-"Z,	c #239623",
-"`,	c #239723",
-" '	c #239823",
-".'	c #239923",
-"+'	c #239A23",
-"@'	c #239B23",
-"#'	c #239C23",
-"$'	c #239D23",
-"%'	c #239E23",
-"&'	c #239F23",
-"*'	c #23A023",
-"='	c #23A123",
-"-'	c #23A223",
-";'	c #23A323",
-">'	c #23A423",
-",'	c #23A523",
-"''	c #23A623",
-")'	c #23A723",
-"!'	c #23A823",
-"~'	c #23A923",
-"{'	c #23AA23",
-"]'	c #23AB23",
-"^'	c #23AC23",
-"/'	c #23AD23",
-"('	c #23AE23",
-"_'	c #23AF23",
-":'	c #23B023",
-"<'	c #23B123",
-"['	c #23B223",
-"}'	c #23B323",
-"|'	c #23B423",
-"1'	c #23B523",
-"2'	c #23B623",
-"3'	c #23B723",
-"4'	c #23B823",
-"5'	c #23B923",
-"6'	c #23BA23",
-"7'	c #23BB23",
-"8'	c #23BC23",
-"9'	c #23BD23",
-"0'	c #23BE23",
-"a'	c #23BF23",
-"b'	c #23C023",
-"c'	c #23C123",
-"d'	c #23C223",
-"e'	c #23C323",
-"f'	c #23C423",
-"g'	c #23C523",
-"h'	c #0FC10F",
-"i'	c #00BE00",
-"j'	c #038203",
-"k'	c #1E8F1E",
-"l'	c #1E901E",
-"m'	c #1E911E",
-"n'	c #1E921E",
-"o'	c #1E931E",
-"p'	c #1E941E",
-"q'	c #1E951E",
-"r'	c #1E961E",
-"s'	c #1E971E",
-"t'	c #1E981E",
-"u'	c #1E991E",
-"v'	c #1E9A1E",
-"w'	c #1E9B1E",
-"x'	c #1E9C1E",
-"y'	c #1E9D1E",
-"z'	c #1E9E1E",
-"A'	c #1E9F1E",
-"B'	c #1EA01E",
-"C'	c #1EA11E",
-"D'	c #1EA21E",
-"E'	c #1EA31E",
-"F'	c #1EA41E",
-"G'	c #1EA51E",
-"H'	c #1EA61E",
-"I'	c #1EA71E",
-"J'	c #1EA81E",
-"K'	c #1EA91E",
-"L'	c #1EAA1E",
-"M'	c #1EAB1E",
-"N'	c #1EAC1E",
-"O'	c #1EAD1E",
-"P'	c #1EAE1E",
-"Q'	c #1EAF1E",
-"R'	c #1EB01E",
-"S'	c #1EB11E",
-"T'	c #1EB21E",
-"U'	c #1EB31E",
-"V'	c #1EB41E",
-"W'	c #1EB51E",
-"X'	c #1EB61E",
-"Y'	c #1EB71E",
-"Z'	c #1EB81E",
-"`'	c #1EB91E",
-" )	c #1EBA1E",
-".)	c #1EBB1E",
-"+)	c #1EBC1E",
-"@)	c #1EBD1E",
-"#)	c #1EBE1E",
-"$)	c #1EBF1E",
-"%)	c #1EC01E",
-"&)	c #1EC11E",
-"*)	c #1EC21E",
-"=)	c #1EC31E",
-"-)	c #1EC41E",
-";)	c #1EC51E",
-">)	c #1EC61E",
-",)	c #12C312",
-"')	c #00BF00",
-"))	c #00C000",
-"!)	c #078407",
-"~)	c #198E19",
-"{)	c #198F19",
-"])	c #199019",
-"^)	c #199119",
-"/)	c #199219",
-"()	c #199319",
-"_)	c #199419",
-":)	c #199519",
-"<)	c #199619",
-"[)	c #199719",
-"})	c #199819",
-"|)	c #199919",
-"1)	c #199A19",
-"2)	c #199B19",
-"3)	c #199C19",
-"4)	c #199D19",
-"5)	c #199E19",
-"6)	c #199F19",
-"7)	c #19A019",
-"8)	c #19A119",
-"9)	c #19A219",
-"0)	c #19A319",
-"a)	c #19A419",
-"b)	c #19A519",
-"c)	c #19A619",
-"d)	c #19A719",
-"e)	c #19A819",
-"f)	c #19A71A",
-"g)	c #189F1F",
-"h)	c #169624",
-"i)	c #158E2A",
-"j)	c #148530",
-"k)	c #127D34",
-"l)	c #11743A",
-"m)	c #106C40",
-"n)	c #0E6245",
-"o)	c #0D5A4A",
-"p)	c #0C5150",
-"q)	c #0A4855",
-"r)	c #093F5B",
-"s)	c #083660",
-"t)	c #062D65",
-"u)	c #05246B",
-"v)	c #041A71",
-"w)	c #031375",
-"x)	c #18A720",
-"y)	c #19B219",
-"z)	c #19B319",
-"A)	c #19B419",
-"B)	c #19B519",
-"C)	c #19B619",
-"D)	c #19B719",
-"E)	c #19B819",
-"F)	c #19B919",
-"G)	c #19BB19",
-"H)	c #19BC19",
-"I)	c #19BD19",
-"J)	c #19BE19",
-"K)	c #19BF19",
-"L)	c #19C019",
-"M)	c #19C119",
-"N)	c #19C219",
-"O)	c #19C319",
-"P)	c #19C419",
-"Q)	c #19C519",
-"R)	c #13C413",
-"S)	c #00C100",
-"T)	c #098709",
-"U)	c #158D15",
-"V)	c #158E15",
-"W)	c #158F15",
-"X)	c #159015",
-"Y)	c #159115",
-"Z)	c #159215",
-"`)	c #159315",
-" !	c #159415",
-".!	c #159515",
-"+!	c #159615",
-"@!	c #159715",
-"#!	c #159815",
-"$!	c #159915",
-"%!	c #159A15",
-"&!	c #159B15",
-"*!	c #159C15",
-"=!	c #159D15",
-"-!	c #159E15",
-";!	c #159F15",
-">!	c #15A015",
-",!	c #13921E",
-"'!	c #0F7631",
-")!	c #0E6E37",
-"!!	c #0D663C",
-"~!	c #0C5D42",
-"{!	c #0B5548",
-"]!	c #0A4D4E",
-"^!	c #094453",
-"/!	c #083C59",
-"(!	c #07345F",
-"_!	c #052B64",
-":!	c #042369",
-"<!	c #03196F",
-"[!	c #021175",
-"}!	c #01087B",
-"|!	c #00017F",
-"1!	c #052A67",
-"2!	c #15B115",
-"3!	c #15B215",
-"4!	c #15B315",
-"5!	c #15B415",
-"6!	c #15B515",
-"7!	c #15B615",
-"8!	c #15B715",
-"9!	c #15B815",
-"0!	c #15B915",
-"a!	c #15BA15",
-"b!	c #15BB15",
-"c!	c #15BC15",
-"d!	c #15BE15",
-"e!	c #15BF15",
-"f!	c #15C015",
-"g!	c #15C115",
-"h!	c #15C215",
-"i!	c #15C315",
-"j!	c #15C415",
-"k!	c #15C515",
-"l!	c #14C614",
-"m!	c #00C200",
-"n!	c #00C300",
-"o!	c #098909",
-"p!	c #108D10",
-"q!	c #108E10",
-"r!	c #108F10",
-"s!	c #109010",
-"t!	c #109110",
-"u!	c #109210",
-"v!	c #109310",
-"w!	c #109410",
-"x!	c #109510",
-"y!	c #109610",
-"z!	c #109710",
-"A!	c #109810",
-"B!	c #109910",
-"C!	c #109A10",
-"D!	c #109B10",
-"E!	c #109C10",
-"F!	c #109D10",
-"G!	c #109E10",
-"H!	c #085246",
-"I!	c #095E45",
-"J!	c #10B110",
-"K!	c #10B210",
-"L!	c #10B310",
-"M!	c #10B410",
-"N!	c #10B510",
-"O!	c #10B610",
-"P!	c #10B710",
-"Q!	c #10B810",
-"R!	c #10B910",
-"S!	c #10BA10",
-"T!	c #10BB10",
-"U!	c #10BC10",
-"V!	c #10BD10",
-"W!	c #10BE10",
-"X!	c #10BF10",
-"Y!	c #10C010",
-"Z!	c #10C110",
-"`!	c #10C210",
-" ~	c #10C310",
-".~	c #10C410",
-"+~	c #10C510",
-"@~	c #10C610",
-"#~	c #01C301",
-"$~	c #00C400",
-"%~	c #078907",
-"&~	c #0B8B0B",
-"*~	c #0B8C0B",
-"=~	c #0B8D0B",
-"-~	c #0B8E0B",
-";~	c #0B8F0B",
-">~	c #0B900B",
-",~	c #0B910B",
-"'~	c #0B920B",
-")~	c #0B930B",
-"!~	c #0B940B",
-"~~	c #0B950B",
-"{~	c #0B960B",
-"]~	c #0B970B",
-"^~	c #0B980B",
-"/~	c #0B990B",
-"(~	c #0B9A0B",
-"_~	c #0B9B0B",
-":~	c #0B9C0B",
-"<~	c #0B9E0B",
-"[~	c #043B54",
-"}~	c #09921F",
-"|~	c #0BB10B",
-"1~	c #0BB20B",
-"2~	c #0BB30B",
-"3~	c #0BB40B",
-"4~	c #0BB50B",
-"5~	c #0BB60B",
-"6~	c #0BB70B",
-"7~	c #0BB80B",
-"8~	c #0BB90B",
-"9~	c #0BBA0B",
-"0~	c #0BBB0B",
-"a~	c #0BBC0B",
-"b~	c #0BBD0B",
-"c~	c #0BBE0B",
-"d~	c #0BBF0B",
-"e~	c #0BC00B",
-"f~	c #0BC10B",
-"g~	c #0BC20B",
-"h~	c #0BC30B",
-"i~	c #0BC40B",
-"j~	c #0BC50B",
-"k~	c #0BC60B",
-"l~	c #0BC70B",
-"m~	c #02C402",
-"n~	c #00C500",
-"o~	c #00C600",
-"p~	c #058905",
-"q~	c #078A07",
-"r~	c #078B07",
-"s~	c #078C07",
-"t~	c #078D07",
-"u~	c #078E07",
-"v~	c #078F07",
-"w~	c #079007",
-"x~	c #079107",
-"y~	c #079207",
-"z~	c #079307",
-"A~	c #079407",
-"B~	c #079507",
-"C~	c #079607",
-"D~	c #079707",
-"E~	c #079807",
-"F~	c #079907",
-"G~	c #079A07",
-"H~	c #079B07",
-"I~	c #079C07",
-"J~	c #079D07",
-"K~	c #079E07",
-"L~	c #022365",
-"M~	c #011571",
-"N~	c #07B007",
-"O~	c #07B107",
-"P~	c #07B207",
-"Q~	c #07B307",
-"R~	c #07B407",
-"S~	c #07B507",
-"T~	c #07B607",
-"U~	c #07B807",
-"V~	c #07B907",
-"W~	c #07BA07",
-"X~	c #07BB07",
-"Y~	c #07BC07",
-"Z~	c #07BD07",
-"`~	c #07BE07",
-" {	c #07BF07",
-".{	c #07C007",
-"+{	c #07C107",
-"@{	c #07C207",
-"#{	c #07C307",
-"${	c #07C407",
-"%{	c #07C507",
-"&{	c #07C607",
-"*{	c #07C707",
-"={	c #02C502",
-"-{	c #00C700",
-";{	c #028902",
-">{	c #028A02",
-",{	c #028B02",
-"'{	c #028C02",
-"){	c #028D02",
-"!{	c #028E02",
-"~{	c #028F02",
-"{{	c #029002",
-"]{	c #029102",
-"^{	c #029202",
-"/{	c #029302",
-"({	c #029402",
-"_{	c #029502",
-":{	c #029602",
-"<{	c #029702",
-"[{	c #029802",
-"}{	c #029902",
-"|{	c #029A02",
-"1{	c #029B02",
-"2{	c #029C02",
-"3{	c #029D02",
-"4{	c #000C76",
-"5{	c #01494C",
-"6{	c #02B002",
-"7{	c #02B102",
-"8{	c #02B202",
-"9{	c #02B302",
-"0{	c #02B402",
-"a{	c #02B502",
-"b{	c #02B602",
-"c{	c #02B702",
-"d{	c #02B802",
-"e{	c #02B902",
-"f{	c #02BA02",
-"g{	c #02BB02",
-"h{	c #02BC02",
-"i{	c #02BD02",
-"j{	c #02BE02",
-"k{	c #02BF02",
-"l{	c #02C002",
-"m{	c #02C102",
-"n{	c #02C202",
-"o{	c #02C302",
-"p{	c #02C602",
-"q{	c #01C701",
-"r{	c #00C800",
-"s{	c #00C900",
-"t{	c #009C00",
-"u{	c #009309",
-"v{	c #007E25",
-"w{	c #00CA00",
-"x{	c #00CB00",
-"y{	c #009E00",
-"z{	c #00910C",
-"A{	c #005040",
-"B{	c #004B44",
-"C{	c #00454A",
-"D{	c #003E4F",
-"E{	c #00305A",
-"F{	c #000A78",
-"G{	c #00077B",
-"H{	c #00AB04",
-"I{	c #00CC00",
-"J{	c #00A302",
-"K{	c #007C20",
-"L{	c #000E75",
-"M{	c #003659",
-"N{	c #00CD00",
-"O{	c #00801E",
-"P{	c #006B34",
-"Q{	c #00CE00",
-"R{	c #00CF00",
-"S{	c #00A602",
-"T{	c #00057C",
-"U{	c #00A10E",
-"V{	c #00D000",
-"W{	c #00AA00",
-"X{	c #000F74",
-"Y{	c #002268",
-"Z{	c #00D100",
-"`{	c #00980F",
-" ]	c #005842",
-".]	c #00D200",
-"+]	c #00D300",
-"@]	c #00722C",
-"#]	c #008F1D",
-"$]	c #00D400",
-"%]	c #004B49",
-"&]	c #000F76",
-"*]	c #00B901",
-"=]	c #00D500",
-"-]	c #002466",
-";]	c #004451",
-">]	c #00D600",
-",]	c #00D700",
-"']	c #00AA05",
-")]	c #00037E",
-"!]	c #007D2B",
-"~]	c #00D800",
-"{]	c #00871F",
-"]]	c #00B208",
-"^]	c #00D900",
-"/]	c #00DA00",
-"(]	c #005F3C",
-"_]	c #003060",
-":]	c #00DB00",
-"<]	c #00355A",
-"[]	c #00683A",
-"}]	c #00DC00",
-"|]	c #00AF05",
-"1]	c #00A314",
-"2]	c #00DD00",
-"3]	c #00DE00",
-"4]	c #008126",
-"5]	c #001A6F",
-"6]	c #00DF00",
-"7]	c #004A4C",
-"8]	c #005449",
-"9]	c #00E000",
-"0]	c #001472",
-"a]	c #008E23",
-"b]	c #009619",
-"c]	c #00097A",
-"d]	c #00C103",
-"e]	c #005F3F",
-"f]	c #003E58",
-"g]	c #002766",
-"h]	c #007A32",
-"i]	c #00AB0D",
-"j]	c #00B50D",
-"k]	c #007432",
-"l]	c #002866",
-"m]	c #003B59",
-"n]	c #006441",
-"o]	c #00BB04",
-"p]	c #00087B",
-"q]	c #010180",
-"r]	c #020281",
-"s]	c #02A31D",
-"t]	c #01CD01",
-"u]	c #01CE01",
-"v]	c #01CF01",
-"w]	c #01D001",
-"x]	c #01C101",
-"y]	c #01C201",
-"z]	c #028B28",
-"A]	c #030381",
-"B]	c #040482",
-"C]	c #050582",
-"D]	c #060683",
-"E]	c #051877",
-"F]	c #05CE06",
-"G]	c #05D005",
-"H]	c #05D105",
-"I]	c #04D104",
-"J]	c #04D204",
-"K]	c #04D304",
-"L]	c #03D403",
-"M]	c #02D402",
-"N]	c #01D501",
-"O]	c #01D601",
-"P]	c #01BF01",
-"Q]	c #01C001",
-"R]	c #03C203",
-"S]	c #03C303",
-"T]	c #04C304",
-"U]	c #04C404",
-"V]	c #05C405",
-"W]	c #05534F",
-"X]	c #070783",
-"Y]	c #080884",
-"Z]	c #090984",
-"`]	c #095555",
-" ^	c #09D109",
-".^	c #09D209",
-"+^	c #09D309",
-"@^	c #08D208",
-"#^	c #08D308",
-"$^	c #07D407",
-"%^	c #07D507",
-"&^	c #06D606",
-"*^	c #05D705",
-"=^	c #04D804",
-"-^	c #04D904",
-";^	c #03D803",
-">^	c #03D903",
-",^	c #02D902",
-"'^	c #01DA01",
-")^	c #01BE01",
-"!^	c #03C103",
-"~^	c #04C204",
-"{^	c #05C205",
-"]^	c #05C305",
-"^^	c #06C306",
-"/^	c #08C608",
-"(^	c #08C708",
-"_^	c #091E77",
-":^	c #0A0A85",
-"<^	c #0B0B85",
-"[^	c #0C0C86",
-"}^	c #0D0D86",
-"|^	c #0D9235",
-"1^	c #0DD30D",
-"2^	c #0CD30C",
-"3^	c #0CD40C",
-"4^	c #0CD50C",
-"5^	c #0BD60B",
-"6^	c #0BD70B",
-"7^	c #0AD70A",
-"8^	c #0AD80A",
-"9^	c #09D809",
-"0^	c #08D908",
-"a^	c #07DA07",
-"b^	c #06DB06",
-"c^	c #06DC06",
-"d^	c #05DC05",
-"e^	c #04DD04",
-"f^	c #03DC03",
-"g^	c #03DD03",
-"h^	c #02DD02",
-"i^	c #01DE01",
-"j^	c #01BD01",
-"k^	c #03C003",
-"l^	c #04C104",
-"m^	c #05C105",
-"n^	c #06C206",
-"o^	c #08C508",
-"p^	c #09C509",
-"q^	c #0AC60A",
-"r^	c #0BC80B",
-"s^	c #0CA423",
-"t^	c #0E0E87",
-"u^	c #0F0F87",
-"v^	c #0F1087",
-"w^	c #0F1585",
-"x^	c #0FCB16",
-"y^	c #0FD50F",
-"z^	c #0FD60F",
-"A^	c #0FD70F",
-"B^	c #0FD80F",
-"C^	c #0ED80E",
-"D^	c #0ED90E",
-"E^	c #0DD90D",
-"F^	c #0DDA0D",
-"G^	c #0CDB0C",
-"H^	c #0BDC0B",
-"I^	c #0ADC0A",
-"J^	c #09DD09",
-"K^	c #08DE08",
-"L^	c #07DF07",
-"M^	c #06DF06",
-"N^	c #05E005",
-"O^	c #04E004",
-"P^	c #03E003",
-"Q^	c #02E002",
-"R^	c #01E001",
-"S^	c #005600",
-"T^	c #03BF03",
-"U^	c #04C004",
-"V^	c #05C005",
-"W^	c #06C106",
-"X^	c #08C308",
-"Y^	c #08C408",
-"Z^	c #09C409",
-"`^	c #0AC50A",
-" /	c #0CC70C",
-"./	c #0CC80C",
-"+/	c #0DC80D",
-"@/	c #0EC90E",
-"#/	c #0FCA0F",
-"$/	c #0F6E4A",
-"%/	c #101188",
-"&/	c #111288",
-"*/	c #121389",
-"=/	c #131489",
-"-/	c #13476A",
-";/	c #13D613",
-">/	c #13D713",
-",/	c #12D812",
-"'/	c #12D912",
-")/	c #11DA11",
-"!/	c #11DB11",
-"~/	c #10DB10",
-"{/	c #10DC10",
-"]/	c #0FDC0F",
-"^/	c #0FDD0F",
-"//	c #0EDE0E",
-"(/	c #0DDF0D",
-"_/	c #0CDF0C",
-":/	c #0CE00C",
-"</	c #0BDF0B",
-"[/	c #0AE00A",
-"}/	c #09E109",
-"|/	c #08E108",
-"1/	c #07E107",
-"2/	c #06E106",
-"3/	c #05E105",
-"4/	c #04BF04",
-"5/	c #09C309",
-"6/	c #0AC40A",
-"7/	c #0CC60C",
-"8/	c #0DC70D",
-"9/	c #0EC80E",
-"0/	c #0FC80F",
-"a/	c #0FCB0F",
-"b/	c #10CB10",
-"c/	c #11CC11",
-"d/	c #123A70",
-"e/	c #14158A",
-"f/	c #15168A",
-"g/	c #16178A",
-"h/	c #17188B",
-"i/	c #17844A",
-"j/	c #17D817",
-"k/	c #16D916",
-"l/	c #16DA16",
-"m/	c #16DB16",
-"n/	c #15DA15",
-"o/	c #15DB15",
-"p/	c #14DC14",
-"q/	c #14DD14",
-"r/	c #14D41A",
-"s/	c #13DE13",
-"t/	c #12DE12",
-"u/	c #12DF12",
-"v/	c #11DE11",
-"w/	c #11DF11",
-"x/	c #10E010",
-"y/	c #0FE00F",
-"z/	c #0FE10F",
-"A/	c #0EE20E",
-"B/	c #0DE20D",
-"C/	c #0CE10C",
-"D/	c #0BE10B",
-"E/	c #0AE10A",
-"F/	c #03BE03",
-"G/	c #08C208",
-"H/	c #0DC60D",
-"I/	c #0EC70E",
-"J/	c #0FC70F",
-"K/	c #0FC90F",
-"L/	c #10CA10",
-"M/	c #11CA11",
-"N/	c #11CB11",
-"O/	c #12CB12",
-"P/	c #13CC13",
-"Q/	c #14CD14",
-"R/	c #15BD20",
-"S/	c #151789",
-"T/	c #18198B",
-"U/	c #191A8C",
-"V/	c #1A1B8C",
-"W/	c #1ABE2B",
-"X/	c #1ADA1A",
-"Y/	c #1ADB1A",
-"Z/	c #19DC19",
-"`/	c #19DD19",
-" (	c #18DE18",
-".(	c #17C526",
-"+(	c #172782",
-"@(	c #17854B",
-"#(	c #16DF17",
-"$(	c #15E015",
-"%(	c #15E115",
-"&(	c #14E114",
-"*(	c #13E213",
-"=(	c #12E212",
-"-(	c #11E211",
-";(	c #10E210",
-">(	c #0FE20F",
-",(	c #0AC30A",
-"'(	c #0CC50C",
-")(	c #0EC60E",
-"!(	c #10C910",
-"~(	c #12CA12",
-"{(	c #13CB13",
-"](	c #15CD15",
-"^(	c #15CE15",
-"/(	c #16CE16",
-"((	c #17CF17",
-"_(	c #18CF18",
-":(	c #188845",
-"<(	c #1A1C8C",
-"[(	c #1B1D8D",
-"}(	c #1C1E8D",
-"|(	c #1D1F8D",
-"1(	c #1D3B7D",
-"2(	c #1DDB1D",
-"3(	c #1DDC1D",
-"4(	c #1DDD1D",
-"5(	c #1CDD1C",
-"6(	c #1CDE1C",
-"7(	c #1BDF1B",
-"8(	c #1ADD1C",
-"9(	c #1A4773",
-"0(	c #19506C",
-"a(	c #19CF24",
-"b(	c #18E218",
-"c(	c #18E318",
-"d(	c #17E317",
-"e(	c #16E316",
-"f(	c #15E315",
-"g(	c #14E314",
-"h(	c #05BF05",
-"i(	c #12C912",
-"j(	c #13CA13",
-"k(	c #14CC14",
-"l(	c #16CD16",
-"m(	c #17CE17",
-"n(	c #18CE18",
-"o(	c #19CF19",
-"p(	c #1AD11A",
-"q(	c #1AD21A",
-"r(	c #1B5569",
-"s(	c #1E208E",
-"t(	c #1F218E",
-"u(	c #20228F",
-"v(	c #21238F",
-"w(	c #21755E",
-"x(	c #21DD21",
-"y(	c #20DD20",
-"z(	c #20DE20",
-"A(	c #20DF20",
-"B(	c #20E020",
-"C(	c #1FE01F",
-"D(	c #1FE11F",
-"E(	c #1EE01E",
-"F(	c #1E7E57",
-"G(	c #1B2D84",
-"H(	c #1BA83D",
-"I(	c #1AE31A",
-"J(	c #19E319",
-"K(	c #09C209",
-"L(	c #10C810",
-"M(	c #11C911",
-"N(	c #14CB14",
-"O(	c #15CC15",
-"P(	c #16CC16",
-"Q(	c #17CD17",
-"R(	c #18CD18",
-"S(	c #1AD01A",
-"T(	c #1BD11B",
-"U(	c #1CD21C",
-"V(	c #1DD31D",
-"W(	c #1DCF20",
-"X(	c #1E2889",
-"Y(	c #21248F",
-"Z(	c #222590",
-"`(	c #232690",
-" _	c #23AF3F",
-"._	c #23DF23",
-"+_	c #23E023",
-"@_	c #22E122",
-"#_	c #22E222",
-"$_	c #21E221",
-"%_	c #21B53C",
-"&_	c #21278E",
-"*_	c #1E2F85",
-"=_	c #1DDA23",
-"-_	c #1DE41D",
-";_	c #1CE41C",
-">_	c #1BE41B",
-",_	c #0DC50D",
-"'_	c #1ACF1A",
-")_	c #1BD01B",
-"!_	c #1CD11C",
-"~_	c #1DD21D",
-"{_	c #1ED21E",
-"]_	c #1ED31E",
-"^_	c #1FD31F",
-"/_	c #20D520",
-"(_	c #21AA3B",
-"__	c #242790",
-":_	c #252891",
-"<_	c #262991",
-"[_	c #272A91",
-"}_	c #27348C",
-"|_	c #27DD29",
-"1_	c #27E127",
-"2_	c #26E226",
-"3_	c #25E325",
-"4_	c #25D82C",
-"5_	c #253E84",
-"6_	c #21A346",
-"7_	c #21E421",
-"8_	c #20E420",
-"9_	c #1FE41F",
-"0_	c #1EE41E",
-"a_	c #1DD11D",
-"b_	c #20D420",
-"c_	c #21D521",
-"d_	c #22D622",
-"e_	c #237D5A",
-"f_	c #262A91",
-"g_	c #272B92",
-"h_	c #282C92",
-"i_	c #292D92",
-"j_	c #2A2E93",
-"k_	c #2A6970",
-"l_	c #2AE12A",
-"m_	c #29E229",
-"n_	c #29E329",
-"o_	c #29E429",
-"p_	c #28E528",
-"q_	c #286B6F",
-"r_	c #24686B",
-"s_	c #24E524",
-"t_	c #23E523",
-"u_	c #22E422",
-"v_	c #04E104",
-"w_	c #1CD01C",
-"x_	c #21D421",
-"y_	c #22D522",
-"z_	c #23D623",
-"A_	c #24D624",
-"B_	c #25D725",
-"C_	c #26D826",
-"D_	c #275179",
-"E_	c #2B2F93",
-"F_	c #2B3093",
-"G_	c #2C3194",
-"H_	c #2C9F54",
-"I_	c #2CE42C",
-"J_	c #2BE52B",
-"K_	c #2BE62B",
-"L_	c #2BA053",
-"M_	c #283F87",
-"N_	c #27D92F",
-"O_	c #27E527",
-"P_	c #26E526",
-"Q_	c #25E525",
-"R_	c #20D320",
-"S_	c #26D926",
-"T_	c #27D927",
-"U_	c #28D02E",
-"V_	c #292F91",
-"W_	c #2D3294",
-"X_	c #2E3394",
-"Y_	c #2F3495",
-"Z_	c #2E3494",
-"`_	c #2F3595",
-" :	c #2FCD3E",
-".:	c #2FE52F",
-"+:	c #2FE62F",
-"@:	c #2ECD3C",
-"#:	c #2E3C8F",
-"$:	c #2BB248",
-"%:	c #2AE62A",
-"&:	c #29E529",
-"*:	c #23D523",
-"=:	c #28DA28",
-"-:	c #29DA29",
-";:	c #2ADB2A",
-">:	c #2BA64A",
-",:	c #303695",
-"':	c #313795",
-"):	c #323896",
-"!:	c #334A8C",
-"~:	c #33E633",
-"{:	c #32E732",
-"]:	c #31E433",
-"^:	c #315C80",
-"/:	c #2E7C6B",
-"(:	c #2DE62D",
-"_:	c #2CE62C",
-"::	c #06C606",
-"<:	c #27D827",
-"[:	c #28D928",
-"}:	c #2ADA2A",
-"|:	c #2BDB2B",
-"1:	c #2BDC2B",
-"2:	c #2CDC2C",
-"3:	c #2D8D5D",
-"4:	c #333996",
-"5:	c #333A96",
-"6:	c #343B96",
-"7:	c #353C97",
-"8:	c #357676",
-"9:	c #35E735",
-"0:	c #34E734",
-"a:	c #348C68",
-"b:	c #314F87",
-"c:	c #30DF35",
-"d:	c #30E730",
-"e:	c #2EE62E",
-"f:	c #29D929",
-"g:	c #2DDC2D",
-"h:	c #2FDE2F",
-"i:	c #2FDF2F",
-"j:	c #307E6A",
-"k:	c #363D97",
-"l:	c #363E97",
-"m:	c #373F97",
-"n:	c #384098",
-"o:	c #38A160",
-"p:	c #38E838",
-"q:	c #37E837",
-"r:	c #37A85C",
-"s:	c #364097",
-"t:	c #343D96",
-"u:	c #33BF4A",
-"v:	c #33E733",
-"w:	c #31E731",
-"x:	c #0CCB0C",
-"y:	c #2CDB2C",
-"z:	c #2EDD2E",
-"A:	c #31DF31",
-"B:	c #32E032",
-"C:	c #336F75",
-"D:	c #394198",
-"E:	c #394298",
-"F:	c #3A4398",
-"G:	c #3AC250",
-"H:	c #3AE83A",
-"I:	c #3A9E64",
-"J:	c #394398",
-"K:	c #378E6A",
-"L:	c #36E836",
-"M:	c #36E736",
-"N:	c #05CB05",
-"O:	c #19D019",
-"P:	c #24D724",
-"Q:	c #30DF30",
-"R:	c #33E133",
-"S:	c #34E134",
-"T:	c #356B7B",
-"U:	c #3B4499",
-"V:	c #3C4599",
-"W:	c #3C4699",
-"X:	c #3D4799",
-"Y:	c #3D966D",
-"Z:	c #3DE93D",
-"`:	c #3DE241",
-" <	c #3D936E",
-".<	c #3A707F",
-"+<	c #39E43C",
-"@<	c #39E839",
-"#<	c #14D014",
-"$<	c #1CD31C",
-"%<	c #1FD41F",
-"&<	c #21D621",
-"*<	c #23D723",
-"=<	c #27DA27",
-"-<	c #31E031",
-";<	c #33E033",
-"><	c #36E236",
-",<	c #36E336",
-"'<	c #377F72",
-")<	c #3E489A",
-"!<	c #3E499A",
-"~<	c #3F4A9A",
-"{<	c #404B9A",
-"]<	c #404E99",
-"^<	c #407C7E",
-"/<	c #408B76",
-"(<	c #3F5395",
-"_<	c #3F499A",
-":<	c #3D7182",
-"<<	c #3CE340",
-"[<	c #3CE83C",
-"}<	c #3BE83B",
-"|<	c #05CE05",
-"1<	c #1BD41B",
-"2<	c #1ED41E",
-"3<	c #22D722",
-"4<	c #24D824",
-"5<	c #25D825",
-"6<	c #29DB29",
-"7<	c #2CDD2C",
-"8<	c #2EDE2E",
-"9<	c #34E234",
-"0<	c #37E337",
-"a<	c #39E439",
-"b<	c #399767",
-"c<	c #414C9B",
-"d<	c #414D9B",
-"e<	c #424E9B",
-"f<	c #407184",
-"g<	c #3FE343",
-"h<	c #3EE93E",
-"i<	c #3CE93C",
-"j<	c #0ED20E",
-"k<	c #20D620",
-"l<	c #22D822",
-"m<	c #26DA26",
-"n<	c #28DB28",
-"o<	c #29DC29",
-"p<	c #2DDD2D",
-"q<	c #32E132",
-"r<	c #37E437",
-"s<	c #39E539",
-"t<	c #3AE53A",
-"u<	c #3CCC4B",
-"v<	c #434F9B",
-"w<	c #43509B",
-"x<	c #44519B",
-"y<	c #45529C",
-"z<	c #44519C",
-"A<	c #437386",
-"B<	c #42E246",
-"C<	c #41E941",
-"D<	c #42E942",
-"E<	c #40E940",
-"F<	c #3FE93F",
-"G<	c #1AD61A",
-"H<	c #22D922",
-"I<	c #24D924",
-"J<	c #2ADC2A",
-"K<	c #2BDD2B",
-"L<	c #2CDE2C",
-"M<	c #35E335",
-"N<	c #3AE63A",
-"O<	c #3CE63C",
-"P<	c #3CE73C",
-"Q<	c #3DE73D",
-"R<	c #3E6987",
-"S<	c #46539C",
-"T<	c #45539C",
-"U<	c #46549C",
-"V<	c #47559C",
-"W<	c #47569C",
-"X<	c #457389",
-"Y<	c #45E34A",
-"Z<	c #45EA45",
-"`<	c #44EA44",
-" [	c #43EA43",
-".[	c #05D305",
-"+[	c #26DB26",
-"@[	c #28DC28",
-"#[	c #2ADD2A",
-"$[	c #2BDE2B",
-"%[	c #2EDF2E",
-"&[	c #2FE02F",
-"*[	c #30E030",
-"=[	c #33E233",
-"-[	c #34E334",
-";[	c #36E436",
-">[	c #38E538",
-",[	c #3BE63B",
-"'[	c #3EE83E",
-")[	c #41D04F",
-"![	c #415496",
-"~[	c #48579D",
-"{[	c #48579C",
-"][	c #49589D",
-"^[	c #4A599D",
-"/[	c #49599D",
-"([	c #48758B",
-"_[	c #47E24D",
-":[	c #47EA47",
-"<[	c #46EA46",
-"[[	c #0ED70E",
-"}[	c #26DC26",
-"|[	c #2BDF2B",
-"1[	c #2CDF2C",
-"2[	c #2EE02E",
-"3[	c #30E130",
-"4[	c #37E537",
-"5[	c #39E639",
-"6[	c #3BE73B",
-"7[	c #3DE83D",
-"8[	c #43B263",
-"9[	c #4A5A9D",
-"0[	c #4B5B9D",
-"a[	c #4B5C9D",
-"b[	c #4C5D9E",
-"c[	c #4C5D9D",
-"d[	c #4B8286",
-"e[	c #4AE150",
-"f[	c #4AEB4A",
-"g[	c #49EB49",
-"h[	c #48EB48",
-"i[	c #1CDB1C",
-"j[	c #2ADE2A",
-"k[	c #2EE12E",
-"l[	c #2FE12F",
-"m[	c #30E230",
-"n[	c #32E232",
-"o[	c #33E333",
-"p[	c #39E739",
-"q[	c #458E7A",
-"r[	c #4D5E9D",
-"s[	c #4D5F9E",
-"t[	c #4E609E",
-"u[	c #4F619E",
-"v[	c #4E669A",
-"w[	c #4DB16E",
-"x[	c #4DEB4E",
-"y[	c #4DEB4D",
-"z[	c #4CEB4C",
-"A[	c #4BEB4B",
-"B[	c #02D802",
-"C[	c #2CE02C",
-"D[	c #2DE02D",
-"E[	c #2FE22F",
-"F[	c #32E332",
-"G[	c #33E433",
-"H[	c #34E434",
-"I[	c #36E536",
-"J[	c #47E749",
-"K[	c #48A570",
-"L[	c #4A6098",
-"M[	c #4F629E",
-"N[	c #50639E",
-"O[	c #50649E",
-"P[	c #50659E",
-"Q[	c #508D87",
-"R[	c #50D95B",
-"S[	c #50EC50",
-"T[	c #4FEC4F",
-"U[	c #4EEC4E",
-"V[	c #4DEC4D",
-"W[	c #02DA02",
-"X[	c #30E330",
-"Y[	c #31E431",
-"Z[	c #34E534",
-"`[	c #36E636",
-" }	c #37E637",
-".}	c #38E738",
-"+}	c #4BDE52",
-"@}	c #4C937E",
-"#}	c #4D5F9D",
-"$}	c #51659E",
-"%}	c #52669E",
-"&}	c #52679F",
-"*}	c #52679E",
-"=}	c #53689F",
-"-}	c #536A9D",
-";}	c #539982",
-">}	c #53D660",
-",}	c #52ED52",
-"'}	c #52EC52",
-")}	c #51EC51",
-"!}	c #01DB01",
-"~}	c #20E120",
-"{}	c #33E533",
-"]}	c #35E635",
-"^}	c #4FD15E",
-"/}	c #4FA677",
-"(}	c #509284",
-"_}	c #517D91",
-":}	c #52699D",
-"<}	c #53699E",
-"[}	c #546B9E",
-"}}	c #557A96",
-"|}	c #559C83",
-"1}	c #54C16E",
-"2}	c #54E35A",
-"3}	c #54ED54",
-"4}	c #55ED55",
-"5}	c #53ED53",
-"6}	c #01DD01",
-"7}	c #1FE31F",
-"8}	c #34E634",
-"9}	c #54EB55",
-"0}	c #54DA5F",
-"a}	c #54D661",
-"b}	c #55E25B",
-"c}	c #55EC57",
-"d}	c #56ED56",
-"e}	c #57ED57",
-"f}	c #58EE58",
-"g}	c #59EE59",
-"h}	c #57EE57",
-"i}	c #19E419",
-"j}	c #5AEE5A",
-"k}	c #5BEE5B",
-"l}	c #5CEF5C",
-"m}	c #5DEF5D",
-"n}	c #5EEF5E",
-"o}	c #5FEF5F",
-"p}	c #1AE41A",
-"q}	c #12E312",
-"r}	c #2FE72F",
-"s}	c #27E627",
-"t}	c #42EA42",
-"u}	c #41EA41",
-"v}	c #2EE72E",
-"w}	c #39E939",
-"x}	c #3FEA3F",
-"y}	c #46EB46",
-"z}	c #4CEC4C",
-"A}	c #32E832",
-"B}	c #003F00",
-"C}	c #003D00",
-"D}	c #003A00",
-"E}	c #003E00",
-"F}	c #003900",
-"G}	c #002E00",
-"H}	c #003500",
-"I}	c #003B00",
-"J}	c #003C00",
-"                                                                                                                . . . . . . . . . . . . . . . .                                                                                                                 ",
-"                                                                                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                                                     ",
-"                                                                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                                             ",
-"                                                                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                                       ",
-"                                                                                  . . . . . . . . . . . . . + @ # $ % & * = - ; > , ' ) ! * % ~ { + . . . . . . . . . . . . .                                                                                   ",
-"                                                                            . . . . . . . . . . . ] ^ / * ' ( ( ( _ _ : < < [ [ } | | 1 1 2 2 3 4 4 | > ! 5 ] . . . . . . . . . . .                                                                             ",
-"                                                                        . . . . . . . . . + 6 / = > ( ( ( ( _ _ : : < < [ } } | | 1 1 2 3 3 4 4 7 7 8 9 9 0 9 [ = ~ + . . . . . . . . .                                                                         ",
-"                                                                    . . . . . . . . . @ a , ( ( ( ( ( ( _ b c d e f g h i j k l m n o p q r s t u v w 0 x x y y z z 0 , A . . . . . . . . .                                                                     ",
-"                                                                . . . . . . . . B C - ( ( ( ( ( ( D E F G H H H H H H H H H H H I I I I I I I I I I J K L M z N N O O P Q 8 = R . . . . . . . .                                                                 ",
-"                                                              . . . . . . . S % > ( ( ( ( ( T U V W X X X X X X X X X Y Y Y Y Y Y Y Y Y Y Y Z Z Z Z Z Z Z Z `  ...+.Q Q @. at .#.#._ { . . . . . . .                                                               ",
-"                                                          . . . . . . . R $.> ( ( ( %.E &.*.=.=.=.=.=.=.-.-.-.-.-.-.-.-.-.;.;.;.;.;.;.;.;.;.;.>.>.>.>.>.>.>.>.>.,.'.).!.~.{.{.].^.].} ^ . . . . . . .                                                           ",
-"                                                      . . . . . . . B & ( ( ( ( /.(._.:.:.:.:.:.:.:.<.<.<.<.<.<.<.<.[.[.[.[.[.[.[.[.[.}.}.}.}.}.}.}.}.}.|.|.|.|.|.|.|.|.1.2.3.4.5.6.6.7.1 { . . . . . . .                                                       ",
-"                                                    . . . . . . + 8.; ( ( ( 9.0.a.b.b.b.b.b.b.c.c.c.c.c.c.c.c.c.d.d.d.d.d.d.d.e.e.e.e.e.e.e.e.f.f.f.f.f.f.f.g.g.g.g.g.g.g.g.g.h.i.j.7.k.l.6., + . . . . . .                                                     ",
-"                                                  . . . . . . { ) ( ( ( m.n.o._._.p.p.p.p.p.p.p.q.q.q.q.q.q.q.r.r.r.r.r.r.r.s.s.s.s.s.s.s.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.v.v.v.v.w.x.y.z.A.A. at .C . . . . . .                                                   ",
-"                                              . . . . . . + % ( ( ( B.C.D.o.o.E.E.E.E.E.E.E.F.F.F.F.F.F.F.G.G.G.G.G.G.G.H.H.H.H.H.I.I.I.I.I.I.I.J.J.J.J.J.J.J.K.K.K.K.K.K.K.L.L.L.L.L.M.N.O.P.Q.R.2 ] . . . . . .                                               ",
-"                                            . . . . . . R ) ( ( S.C.T.*.*.U.U.U.U.U.U.U.V.V.V.V.V.W.W.W.W.W.W.W.X.X.X.X.X.X.X.Y.Y.Y.Y.Y.Z.Z.Z.Z.Z.Z.Z.`.`.`.`.`. + + + + + + +.+.+.+.+.+.+++ at +R.#+$+].# . . . . . .                                             ",
-"                                          . . . . . . 5 > ( ( %+&+*+=+=+=+=+=+=+=+-+-+-+-+-+;+;+;+;+;+;+;+>+>+>+>+>+>+,+,+,+,+,+'+'+'+'+'+'+'+)+)+)+)+)+!+!+!+!+!+~+~+~+~+~+~+~+{+{+{+{+{+]+]+^+/+(+_+#+- . . . . . .                                           ",
-"                                        . . . . . + $.( _ _ :+<+[+[+[+}+}+}+}+}+}+|+|+|+|+|+1+1+1+1+1+2+2+2+2+2+2+2+3+3+3+3+3+4+4+4+4+4+5+6+7+8+9+0+a+b+b+b+b+c+c+c+c+c+c+c+d+d+d+d+d+e+e+e+e+e+f+g+h+h+i+x B . . . . .                                         ",
-"                                      . . . . . ] = _ _ j+k+l+l+l+m+m+m+m+m+n+n+n+n+n+o+o+o+o+o+o+p+p+p+p+p+q+q+q+q+q+r+r+r+r+r+s+s+t+u+v+w+w+w+w+w+x+y+z+A+A+A+B+B+B+B+B+C+C+C+C+C+D+D+D+D+D+E+E+F+G+H+H+I+6.R . . . . .                                       ",
-"                                    . . . . . S ' : : J+K+L+L+M+M+M+M+M+N+N+N+N+N+O+O+O+O+O+P+P+P+P+Q+Q+Q+Q+Q+R+R+R+R+R+S+S+S+S+S+T+U+w+w+w+w+w+w+w+w+w+V+W+X+Y+Y+Y+Y+Y+Z+Z+Z+Z+Z+Z+`+`+`+`+`+ @ @ @ @. at +@@@#@A.^ . . . . .                                     ",
-"                                  . . . . . R ; : < $@%@&@&@*@*@*@*@*@q q q q q =@=@=@=@- at -@- at -@-@;@;@;@;@;@>@>@>@>@>@,@,@,@,@'@)@w+w+w+w+w+w+w+w+w+w+w+w+w+!@~@{@{@]@]@]@]@]@^@^@^@^@/@/@/@/@/@(@(@(@(@_@:@<@[@(+~ . . . . .                                   ",
-"                                . . . . . { _ < }@|@g g 1 at 1@1 at 1@1 at 2@2 at 2@3 at 3@3 at 3@3 at 4@4 at 4@4 at 4@4 at 5@5 at 5@6 at 6@6 at 6@6@).).).).7 at 7@7 at 7@8 at w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+9@0 at a@a at a@a at a@a at b@b at b@c at c@c at c@c at d@d at d@d at e@e at f@g at h@i at I+/ . . . . .                                 ",
-"                              . . . . . @ _ [ j at k@l at l@l at l@l at m@m at m@m at n@n at n@n at n@o at o@o at o@p at p@p at p@p at q@q at q@r at r@r at r@s at s@s at s@s at t@t at u@v at w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w@x at x@x at x@x at y@y at y@z at z@z at z@A at A@A at A@A at B@B at B@B at C@D at E@F@#@8.. . . . .                               ",
-"                            . . . . . S ( } } G at H@I at I@I at I@I at r r r J at J@J at J@K at K@K at K@K at L@L at L@M at M@M at M@N at N@N at N@N at O@O at O@O at P@P at P@Q at R@w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+S at T@U at U@U at U@U at V@V at V@V at W@W at W@X at X@X at X@X at Y@Y at Y@Y at Z@`@ #.#I+A . . . . .                             ",
-"                            . . . . B > | | +#@#@#@###########$#$#$#%#%#%#%#&#&#&#*#*#*#*#*#*#=#=#=#-#-#-#;#;#;#;#>#>#>#>#,#w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+'#)#)#)#!#!#!#!#!#~#~#~#{#{#{#{#]#]#]#^#^#^#^#/#(#_#:#i+@ . . . .                             ",
-"                          . . . . + ; | 1 <#[#}#}#}#}#|#|#|#|#|#1#1#1#2#2#2#2#3#3#3#4#4#4#4#5#5#5#6#6#6#6#6#6#7#7#7#8#8#8#9#w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+0#a#a#b#b#b#b#c#c#c#d#d#d#d#e#e#e#e#e#f#f#f#g#g#h#i#j#k#$+B . . . .                           ",
-"                        . . . . . ! 1 2 l#m#n#o#o#o#p#p#p#p#q#q#q#r#r#r#r#s#s#s#s#s#t#t#t#u#u#u#u#v#v#v#w#w#w#w#x#x#x#y#y#z#w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+A#B#B#B#C#C#C#C#D#D#D#E#E#E#E#F#F#F#G#G#G#G#H#H#H#I#J#K#K#].. . . . .                         ",
-"                      . . . . . 8.2 2 L#M#N#N#N#O#O#O#P#P#P#P#Q#Q#Q#R#R#R#R#S#S#S#T#T#T#T#U#U#U#V#V#V#V#W#W#W#X#X#X#X#Y#Y#Z#w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+`# $.$.$.$+$+$+$+$@$@$@$#$#$#$#$/#/#/#$$$$$$$$%$%$%$&$*$=$=$: . . . . .                       ",
-"                      . . . . @ 1 3 -$;$>$,$,$,$,$'$'$'$)$)$)$)$!$!$~$~$~${${${${$]$]$]$^$^$^$/$/$/$/$($($($_$_$_$_$:$:$:$<$w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+[$}$}$|$|$|$1$1$1$1$2$2$2$3$3$3$3$4$4$4$5$5$5$5$6$6$6$7$8$9$K#C . . . .                       ",
-"                    . . . . + : 4 0$a$b$b$b$b$c$c$c$d$d$d$e$e$e$e$f$f$f$g$g$g$g$h$h$i$i$i$j$j$j$j$k$k$k$l$l$l$l$m$m$m$n$n$o$w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+p$q$q$q$r$r$r$r$s$s$s$t$t$u$u$u$v$v$v$v$w$w$w$x$x$x$x$y$z$A$B$[@B . . . .                     ",
-"                    . . . . = 7 7 C$D$D$E$E$E$E$F$F$F$G$G$H$H$H$I$I$I$I$J$J$J$K$K$K$K$L$M$M$M$M$N$N$N$O$O$O$O$P$P$P$Q$Q$R$S$w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+T$U$V$V$V$W$W$W$W$X$X$X$Y$Y$Z$Z$Z$`$`$`$`$ % % %.%.%.%.%+%@%#%$%^.. . . .                     ",
-"                  . . . . A 8 8 %%&%*%*%=%=%=%-%-%-%;%;%;%;%>%>%,%,%,%'%'%'%'%)%)%)%!%!%~%~%~%{%{%{%{%]%]%]%^%^%/%/%/%(%(%_%:%w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+<%[%[%}%}%}%|%|%|%|%1%2%2%2%2%3%3%3%4%4%4%4%5%5%6%6%6%7%7%8%9%0%a%* . . . .                   ",
-"                . . . . + [ 9 b%c%d%d%e%e%e%f%f%g%g%g%g%h%h%h%i%i%j%j%j%k%k%k%k%l%m%m%m%m%n%n%n%o%o%o%o%p%p%q%q%q%r%r%r%r%s%t%w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+u%v%v%w%w%w%w%x%x%x%y%y%z%z%z%A%A%A%A%B%B%C%C%C%D%D%D%E%E%E%E%F%a%G%F@] . . . .                 ",
-"                . . . . $.0 0 H%I%J%K%K%K%K%L%M%M%M%M%N%N%N%O%O%P%P%P%P%Q%Q%Q%R%R%S%S%S%T%T%T%T%U%U%V%V%V%W%W%W%X%X%Y%Y%Y%Y%Z%`%w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+ &.&+&+&+&@&@&@&@&#&$&$&$&$&%&%&%&&&&&*&*&*&*&=&=&=&-&-&;&;&;&>&,&'&)&!&0 . . . .                 ",
-"              . . . . R 9 x ~&{&]&]&^&^&^&/&/&/&/&(&_&_&_&_&:&:&<&<&<&[&[&[&}&}&|&|&|&|&1&2&2&2&2&3&3&3&4&4&5&5&5&5&6&7&7&7&7&8&9&w+w+w+w+w+w+w+w+w+w+w+w+w+w+0&a&a&b&b&b&c&c&d&d&d&d&e&f&f&f&f&g&g&g&h&h&i&i&i&j&j&k&k&k&k&l&l&m&n&n&a%# . . . .               ",
-"              . . . . ; y y o&p&p&q&q&r&r&r&s&s&t&t&t&u&u&u&u&v&v&w&w&w&x&x&y&y&y&z&z&A&A&A&A&B&C&C&C&C&D&D&D&E&E&F&F&F&G&G&H&H&I&J&w+w+w+w+w+w+w+w+w+w+w+:%K&L&M&N&N&N&N&O&P&P&P&P&Q&Q&R&R&R&S&S&T&T&T&U&U&U&U&V&V&W&W&W&X&X&Y&Z&`& * *$+. . . .               ",
-"            . . . . { z z .*+*@*#*#*$*$*$*$*%*&*&*&*&*****=*=*=*-*-*;*;*;*>*>*>*>*,*'*'*'*'*)*)*!*!*!*~*~*{*{*{*]*]*^*^*^*^*/*(*(*_*:*w+w+w+w+w+w+w+w+w+<*[*}*|*|*|*1*1*2*2*2*2*3*4*4*4*4*5*5*6*6*6*7*7*8*8*8*9*9*0*0*0*a*a*b*b*b*c*d*e*d*$ . . . .             ",
-"            . . . . > N O f*g*g*h*i*i*i*i*j*j*k*k*k*l*l*m*m*m*n*n*o*o*o*o*p*q*q*q*q*r*r*s*s*s*t*t*u*u*u*v*v*w*w*x*x*x*y*y*z*z*z*A*A*B*C*D*E*F*w+G*H*I*J*K*L*L*L*M*M*N*N*N*O*O*7$7$7$P*P*Q*Q*R*R*R*S*S*T*T*T*T*U*V*V*V*V*W*W*X*X*X*Y*Z*`* =$+. . . .             ",
-"          . . . . @ N O .=+=@=@=@=#=#=$=$=$=%=%=&=&=*=*=*=====-=-=-=;=;=>=>=>=,=,='='=)=)=)=!=!=~=~=~=~={=]=]=]=]=^=^=/=(=(=(=(=_=:=:=:=:=<=[=}=|=1=2=2=3=3=3=4=4=5=5=6=6=6=7=7=8=8=8=8=9=0=0=0=0=a=b=b=c=c=c=c=d=e=e=e=e=f=f=g=g=g=h= =i=`*8.. . . .           ",
-"          . . . . > P Q j=k=k=k=l=l=m=m=n=n=n=o=o=p=p=p=q=q=r=r=s=s=s=t=t=u=u=u=u=v=w=w=x=x=x=y=y=z=z=z=z=A=B=B=C=C=C=C=D=E=E=E=E=F=F=G=H=H=H=H=I=I=J=K=K=K=K=L=M=M=M=M=N=N=O=P=P=P=P=Q=Q=R=R=R=S=S=T=T=U=U=U=V=V=W=W=W=X=X=Y=Y=Z=Z=`= -.-+-R.. . . .           ",
-"          . . . R P @. at .@-#-#-#-$-%-%-&-&-&-&-*-=-=-------;-;->->-,-,-,-'-'-)-)-!-!-!-~-~-{-{-{-{-]-^-^-/-/-/-/-(-_-_-:-:-:-<-<-[-[-}-}-}-|-|-1-1-2-2-2-3-3-4-4-4-4-5-6-6-7-7-7-7-8-9-9-0-0-0-a-a-b-b-c-c-c-d-d-e-e-f-f-f-g-g-`=`=`=`=h-i-i-.-# . . .           ",
-"        . . . . = @.#.j-k-l-l-3.3.m-m-m-n-n-o-o-p-p-p-q-q-r-r-s-s-s-t-t-u-u-v-v-v-w-w-x-y-y-y-y-z-z-A-B-B-B-B-C-C-D-E-E-E-E-F-F-G-H-H-H-H-I-I-J-K-K-K-K-L-M-M-N-N-N-N-O-P-P-Q-Q-Q-Q-R-S-S-T-T-T-T-U-V-V-W-W-X-X-X-Y-Y-Z-Z-`-`-`- ; ;.;+;@;#;#;@.. . . .         ",
-"        . . . . 0 {.{.$;%;&;*;*;=;=;-;-;-;;;;;>;>;,;,;,;';';@+ at +);!;!;!;!;~;~;{;];];];];^;^;/;(;(;(;(;_;_;:;<;<;[;[;[;};};|;|;1;1;1;2;2;3;3;4;4;5;5;5;6;6;7;7;8;8;8;9;9;0;0;a;a;a;b;b;c;d;d;e;e;e;e;f;g;g;h;h;h;h;i;j;j;k;k;l;l;l;m;m;n;o;p;p;$%. . . .         ",
-"      . . . . # {.].^.q;r;r;s;t;t;u;u;v;v;v;w;w;x;x;y;y;z;z;z;A;A;B;B;C;D;D;D;D;E;F;F;G;G;G;G;H;I;I;J;J;K;K;K;L;L;M;M;N;N;O;O;O;P;P;Q;Q;R;S;S;S;S;T;U;U;z$z$V;V;V;W;W;X;X;Y;Y;Y;Z;Z;`;`; > >.>.>.>+>+>@>@>#>$>$>$>$>%>&>&>*>*>=>=>=>->->;>>>,>,>! . . . .       ",
-"      . . . . ( ^.^.'>)>)>!>!>~>~>{>{>{>]>]>^>/>/>(>(>(>(>_>:>:><><>[>[>[>}>}>|>|>1>1>2>3>3>3>3>4>4>5>6>6>7>7>7>8>8>9>9>0>0>a>a>a>b>b>c>c>d>e>e>e>e>f>f>g>h>h>i>i>i>i>j>k>k>l>l>m>n>n>n>n>o>o>p>q>q>r>r>r>r>s>t>t>u>u>+;+;+;v>v>w>w>x>x>y>z>z>A>#+. . . .       ",
-"      . . . + @.5.6.B>C>D>D>E>E>F>F>G>H>H>H>H>I>I>J>K>K>L>L>M>M>M>N>N>O>O>P>Q>Q>Q>Q>R>R>S>T>T>U>U>V>V>V>W>W>X>X>Y>Y>Z>`>`>`>`> , ,.,+,+,@,@,#,#,#,$,$,%,%,&,*,*,=,=,=,=,-,;,;,>,>,,,,,,,',',),),!,!,h=~,~,~,~,{,],],^,^,/,/,(,(,(,_,_,:,<,[,},},+-] . . .       ",
-"    . . . . $ 6.7.7.|,1,2,2,2,3,3,4,4,5,6,6,7,7,8,8,8,9,9,0,0,a,a,b,c,c,c,c,d,d,e,f,f,g,g,h,h,i,i,i,j,j,k,l,l,m,m,n,n,n,o,o,p,p,q,q,r,s,s,t,t,t,t,u,v,v,w,w,x,x,y,y,y,z,z,A,B,B,C,C,D,D,E,E,E,F,F,G,G,H,I,I,J,J,J,J,K,L,L,M,M,N,N,O,P,P,P,Q,R,S,S,_ . . . .     ",
-"    . . . . ( 7.k.l.T,U,U,V,V,W,X,X,Y,Y,Z,Z,`,`,`, ' '.'.'+'@'@'#'#'$'%'%'%'%'&'&'*'='='-'-';';'>'>'>',',''''')'!'!'~'~'{'{'{']']'^'^'/'('('_'_':':':'<'<'['['}'}'|'1'1'2'2'3'3'3'4'4'5'5'6'6'7'8'8'9'9'9'0'0'a'a'b'b'c'd'd'e'e'e'e'f'g'g'h'S,i'i'P.. . . .     ",
-"    . . . . y l.l.j'k'l'm'm'n'n'n'n'o'p'p'q'q'r's's't't'u'u'v'v'v'w'w'x'x'y'z'z'A'A'B'B'C'C'C'D'D'E'F'F'G'G'H'H'I'J'J'K'K'K'K'L'M'M'N'N'O'O'P'Q'Q'R'R'R'R'S'T'T'U'U'V'W'W'X'X'Y'Y'Z'Z'Z'`'`' ) ).)+)+)@)@)#)#)$)$)$)%)%)&)&)*)=)=)-)-);)>),)')')))$%. . . .     ",
-"    . . . B l.z.A.!)~)~){)])])^)^)/)/)()_)_):):):):)<)[)[)})})|)1)1)2)2)3)3)4)5)5)5)5)6)6)7)8)8)9)9)0)0)a)b)b)c)c)d)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)y)z)z)A)A)B)C)C)D)D)E)E)F)h-h-h-h-G)H)H)I)I)J)J)K)L)L)M)M)N)N)O)O)O)P)P)Q)R)))S)S)))@ . . .     ",
-"  . . . . a A.A.P.T)U)V)V)W)W)X)Y)Y)Z)Z)`) ! !.!.!.!.!+!@!@!#!#!$!$!%!&!&!*!*!=!=!-!;!;!>!,!'!)!!!~!{!]!^!/!(!_!:!<![!}!|!w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+1!2!3!4!4!5!5!6!6!7!8!8!8!8!9!9!0!a!a!b!b!c!c!;>d!d!e!e!f!f!g!h!h!h!h!i!j!j!k!k!l!S)m!n!n!} . . . .   ",
-"  . . . . < P.Q.Q.o!p!p!q!q!r!r!r!s!s!t!t!u!u!v!w!w!x!x!y!z!z!A!A!B!B!C!D!D!E!E!F!F!G!G!G!H!w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+I!J!J!K!K!L!M!M!N!N!O!O!P!Q!Q!R!R!S!T!T!U!U!U!U!V!W!W!X!X!Y!Y!Z!`!`! ~ ~.~.~+~@~@~#~n!$~$~(+. . . .   ",
-"  . . . . z R.R.#+%~&~&~*~=~=~-~-~;~>~>~,~,~'~'~)~!~!~~~~~{~{~]~^~^~/~/~(~(~_~_~_~:~:~i#<~[~w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+}~|~|~|~1~1~2~3~3~4~4~5~5~6~7~7~8~8~9~9~0~a~a~b~b~c~c~d~e~e~f~f~g~h~h~i~i~j~j~k~l~m~n~n~o~B$. . . .   ",
-"  . . . . 6.#+$+$+p~q~r~r~s~t~t~u~u~v~v~w~x~x~y~y~z~A~A~B~B~C~C~D~E~E~F~F~G~G~H~I~I~J~J~K~L~w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+M~N~N~O~P~P~Q~Q~R~R~S~T~T~o;o;U~V~V~W~W~X~X~Y~Z~Z~`~`~ { {.{+{+{@{@{#{#{${%{%{&{&{*{={o~-{-{>>. . . .   ",
-"  . . . ] $+$+(+(+;{>{>{,{,{'{){){!{!{~{~{{{]{]{^{^{/{/{({_{_{:{:{<{<{[{}{}{|{|{1{2{2{3{3{4{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+5{6{7{7{8{9{9{0{0{a{a{b{c{c{d{d{e{e{f{g{g{h{h{i{i{j{k{k{l{l{l{m{m{n{n{o{o{m~={={p{p{q{-{r{s{r{R . . .   ",
-"  . . . ~ (+_+_+h+h+i+H+H+I+I+@@@@#@<@<@[@[@h at i@i at E@E at F@F@ #.#.#_#_#:#:#j#k#k#K#K#t{t{=$u{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+v{.-.-+-+-i-i-@;#;#;p;p;>>,>,>z>z>A>A>},R,R,S,S,i'i'')))))S)S)m!m!n!$~$~n~n~o~o~-{r{r{s{s{w{x{) . . .   ",
-". . . . ! _+h+i+i+H+H+I+@@@@#@#@<@<@[@h at h@i at i@E at E@F@ # #.#.#_#_#:#j#j#k#k#K#t{t{=$=$y{y{z{A{A{A{B{C{D{E{F{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+G{H{+-i-i-@;@;#;#;p;>>>>,>,>z>z>A>},},R,R,S,S,i'')')))))S)m!m!n!n!$~$~n~o~o~-{-{r{r{s{w{w{x{x{I{x . . . . ",
-". . . . [ i+i+H+I+I+@@@@#@#@<@[@[@h at h@i at i@E at F@F@ # #.#_#_#:#:#j#j#k#K#K#t{t{=$=$y{9$9$A$A$B$B$#%$%$%0%0%J{K{L{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+M{i-i-@;@;#;p;p;>>>>,>z>z>A>A>},},R,S,S,i'i'')')))S)S)m!m!n!n!$~n~n~o~o~-{-{r{s{s{w{w{x{I{I{N{N{$+. . . . ",
-". . . . 8 H+I+I+@@#@#@<@<@[@[@h at i@i at E@E at F@F@ #.#.#_#_#:#:#j#k#k#K#K#t{=$=$y{y{9$9$A$B$B$#%#%$%$%0%a%a%G%G%)&O{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+P{@;#;#;p;p;>>,>,>z>z>A>A>},R,R,S,S,i'i'')))))S)S)m!n!n!$~$~n~n~o~-{-{r{r{s{s{w{x{x{I{I{N{N{Q{R{ #. . . . ",
-". . . . z @@@@#@#@<@<@[@h at h@i at i@E at E@F@ # #.#.#_#:#:#j#j#k#k#K#t{t{=$=$y{y{9$A$A$B$B$#%#%$%0%0%a%a%G%)&)&!&!&S{T{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+U{#;p;>>>>,>,>z>A>A>},},R,R,S,i'i'')')))))S)m!m!n!n!$~$~n~o~o~-{-{r{r{s{w{w{x{x{I{N{N{Q{Q{R{R{V{=$. . . . ",
-". . . . @.#@<@<@[@[@h at h@i at E@E at F@F@ # #.#_#_#:#:#j#j#k#K#K#t{t{=$y{y{9$9$A$A$B$#%#%$%$%0%0%a%G%G%)&)&!&!&n&W{W{X{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+Y{p;>>>>,>z>z>A>A>},},R,S,S,i'i'')')))S)S)m!m!n!$~$~n~n~o~o~-{r{r{s{s{w{w{x{I{I{N{N{Q{Q{R{V{V{Z{Z{G%. . . . ",
-". . . . 5.<@[@[@h at i@i at E@E at F@F@ #.#.#_#_#:#j#j#k#k#K#K#t{=$=$y{y{9$9$A$B$B$#%#%$%$%0%a%a%G%G%)&!&!&n&n&W{W{ *`{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+ ],>,>z>z>A>},},R,R,S,S,i'')')))))S)S)m!n!n!$~$~n~n~o~-{-{r{r{s{s{w{x{x{I{I{N{Q{Q{R{R{V{V{Z{.].]+]`*. . . . ",
-". . . . z.h at h@i at i@E at F@F@ # #.#.#_#:#:#j#j#k#k#K#t{t{=$=$y{9$9$A$A$B$B$#%$%$%0%0%a%a%G%)&)&!&!&n&n&W{ * *d*d*@]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+#]z>A>A>},},R,R,S,i'i'')')))))S)m!m!n!n!$~n~n~o~o~-{-{r{s{s{w{w{x{x{I{N{N{Q{Q{R{R{V{Z{Z{.].]+]+]$],>. . . . ",
-". . . . #+i at E@E at F@F@ # #.#_#_#:#:#j#k#k#K#K#t{t{=$y{y{9$9$A$A$B$#%#%$%$%0%0%a%G%G%)&)&!&n&n&W{W{ * *d*e*e*`*%]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+&]*]A>},R,R,S,S,i'i'')))))S)S)m!m!n!$~$~n~n~o~o~-{r{r{s{s{w{w{x{I{I{N{N{Q{R{R{V{V{Z{Z{.]+]+]$]$]=]=])). . . . ",
-". . . . (+E at F@ # #.#.#_#_#:#j#j#k#k#K#K#t{=$=$y{y{9$9$A$B$B$#%#%$%0%0%a%a%G%G%)&!&!&n&n&W{W{ *d*d*e*e*`*`* =-]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+;]},R,R,S,S,i'')')))))S)S)m!n!n!$~$~n~o~o~-{-{r{r{s{w{w{x{x{I{I{N{Q{Q{R{R{V{V{Z{.].]+]+]$]$]=]>]>],]S). . . . ",
-". . . . R. # #.#.#_#:#:#j#j#k#K#K#t{t{=$=$y{9$9$A$A$B$B$#%$%$%0%0%a%a%G%)&)&!&!&n&W{W{ * *d*d*e*`*`* = =i='])]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+!]S,S,i'i'')')))S)S)m!m!n!n!$~n~n~o~o~-{-{r{s{s{w{w{x{x{I{N{N{Q{Q{R{V{V{Z{Z{.].]+]$]$]=]=]>]>],]~]~]},. . . . ",
-". . . . z..#_#_#:#:#j#k#k#K#K#t{t{=$y{y{9$9$A$A$B$#%#%$%$%0%a%a%G%G%)&)&!&n&n&W{W{ * *d*e*e*`*`* = =i=.-.-{]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+)]]]i'i'')))))S)S)m!m!n!$~$~n~n~o~-{-{r{r{s{s{w{x{x{I{I{N{N{Q{R{R{V{V{Z{Z{.]+]+]$]$]=]=]>],],]~]~]^]/]i-. . . . ",
-". . . . 7._#:#j#j#k#k#K#t{t{=$=$y{y{9$A$A$B$B$#%#%$%0%0%a%a%G%G%)&!&!&n&n&W{ * *d*d*e*e*`* = =i=i=.-.-+-i-(]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+_]')')))))S)m!m!n!n!$~$~n~o~o~-{-{r{r{s{w{w{x{x{I{I{N{Q{Q{R{R{V{Z{Z{.].]+]+]$]=]=]>]>],],]~]^]^]/]/]:]d*. . . . ",
-". . . . ].j#j#k#K#K#t{t{=$=$y{9$9$A$A$B$B$#%$%$%0%0%a%G%G%)&)&!&!&n&W{W{ * *d*d*e*`*`* = =i=i=.-+-+-i-i-@;<]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+[]))S)S)m!m!n!n!$~n~n~o~o~-{r{r{s{s{w{w{x{I{I{N{N{Q{Q{R{V{V{Z{Z{.].]+]$]$]=]=]>]>],]~]~]^]^]/]:]:]}]}]a%. . . . ",
-". . . . Q k#K#K#t{=$=$y{y{9$9$A$B$B$#%#%$%$%0%a%a%G%G%)&)&!&n&n&W{W{ *d*d*e*e*`*`* =i=i=.-.-+-+-i-@;@;#;|]G{w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+1]S)m!n!n!$~$~n~n~o~-{-{r{r{s{s{w{x{x{I{I{N{N{Q{R{R{V{V{Z{.].]+]+]$]$]=]>]>],],]~]~]^]/]/]:]:]}]}]2]3]y{. . . . ",
-". . . . 9 t{t{=$=$y{y{9$A$A$B$B$#%#%$%0%0%a%a%G%)&)&!&!&n&n&W{ * *d*d*e*e*`* = =i=i=.-.-+-i-i-@;@;#;p;p;4]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+5]m!n!n!$~$~n~o~o~-{-{r{s{s{w{w{x{x{I{N{N{Q{Q{R{R{V{Z{Z{.].]+]+]$]=]=]>]>],],]~]^]^]/]/]:]}]}]2]2]3]3]6]#@. . . . ",
-". . . . > =$y{y{9$9$A$A$B$#%#%$%$%0%0%a%G%G%)&)&!&!&n&W{W{ * *d*e*e*`*`* = =i=.-.-+-+-i-i-@;#;#;p;p;>>>>7]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+8]$~$~n~n~o~o~-{r{r{s{s{w{w{x{I{I{N{N{Q{Q{R{V{V{Z{Z{.]+]+]$]$]=]=]>],],]~]~]^]^]/]:]:]}]}]2]2]3]6]6]9]9]@.. . . . ",
-"  . . . / y{9$9$A$B$B$#%#%$%$%0%a%a%G%G%)&!&!&n&n&W{W{ *d*d*e*e*`*`* =i=i=.-.-+-+-i-@;@;#;#;p;>>>>,>,>z>0]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+a]n~n~o~-{-{r{r{s{w{w{x{x{I{I{N{Q{Q{R{R{V{V{Z{.].]+]+]$]$]=]>]>],],]~]~]^]/]/]:]:]}]2]2]3]3]6]9]9]9]9]9], . . .   ",
-"  . . . B A$A$B$B$#%$%$%0%0%a%a%G%)&)&!&!&n&n&W{ * *d*d*e*e*`* = =i=i=.-+-+-i-i-@;@;#;p;p;>>>>,>,>z>A>b]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+c]d]o~-{-{r{s{s{w{w{x{x{I{N{N{Q{Q{R{R{V{Z{Z{.].]+]$]$]=]=]>]>],]~]~]^]^]/]/]:]}]}]2]2]3]3]6]9]9]9]9]9]9]6]@ . . .   ",
-"  . . . .  ##%#%$%$%0%0%a%G%G%)&)&!&n&n&W{W{ * *d*e*e*`*`* = =i=.-.-+-+-i-i-@;#;#;p;p;>>,>,>z>z>A>A>},e]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+f]-{r{r{s{s{w{x{x{I{I{N{N{Q{R{R{V{V{Z{Z{.]+]+]$]$]=]=]>],],]~]~]^]^]/]:]:]}]}]2]3]3]6]6]9]9]9]9]9]9]9]9]N{. . . .   ",
-"  . . . . (+$%0%0%a%a%G%G%)&!&!&n&n&W{W{ *d*d*e*e*`*`* =i=i=.-.-+-i-i-@;@;#;#;p;>>>>,>,>z>z>A>},},R,R,g]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+h]r{s{w{w{x{x{I{I{N{Q{Q{R{R{V{V{Z{.].]+]+]$]=]=]>]>],],]~]^]^]/]/]:]:]}]2]2]3]3]6]9]9]9]9]9]9]9]9]9]9]9]@;. . . .   ",
-"  . . . . @.0%a%a%G%)&)&!&!&n&W{W{ * *d*d*e*`*`* = =i=i=.-+-+-i-i-@;@;#;p;p;>>>>,>z>z>A>A>},},R,S,S,i]|!w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+|!j]w{w{x{I{I{N{N{Q{Q{R{V{V{Z{Z{.].]+]$]$]=]=]>]>],]~]~]^]^]/]/]:]}]}]2]2]3]6]6]9]9]9]9]9]9]9]9]9]9]9]9]9].#. . . .   ",
-"  . . . . , G%G%)&)&!&n&n&W{W{ * *d*e*e*`*`* = =i=.-.-+-+-i-@;@;#;#;p;p;>>,>,>z>z>A>A>},R,R,S,S,i'i'k]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+l]x{x{I{I{N{N{Q{R{R{V{V{Z{Z{.]+]+]$]$]=]>]>],],]~]~]^]/]/]:]:]}]}]2]3]3]6]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9 . . . .   ",
-"    . . . R a%!&!&n&n&W{ * *d*d*e*e*`* = =i=i=.-.-+-i-i-@;@;#;#;p;>>>>,>,>z>A>A>},},R,R,S,i'i'')')))m]w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+w+n]I{N{N{Q{Q{R{R{V{Z{Z{.].]+]+]$]=]=]>]>],],]~]^]^]/]/]:]:]}]2]2]3]3]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]2]6 . . .     ",
-"    . . . . h at n&W{W{ * *d*d*e*`*`* = =i=i=.-+-+-i-i-@;#;#;p;p;>>>>,>z>z>A>A>},},R,S,S,i'i'')')))S)o]p]w+w+w+w+q]q]q]q]q]r]r]r]r]r]r]r]r]r]s]t]u]u]v]w]V{Z{Z{.].]+]$]$]=]=]>],],]~]~]^]^]/]:]:]}]}]2]2]3]6]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]R,. . . .     ",
-"    . . . . #.W{ *d*d*e*e*`*`* =i=i=.-.-+-+-i-@;@;#;#;p;p;>>,>,>z>z>A>},},R,R,S,S,i'')')))))S)x]y]z]r]A]A]B]B]B]B]C]C]C]C]C]C]D]D]D]D]C]E]F]G]G]H]I]J]K]K]L]L]M]M]N]O]>],],]~]~]^]/]/]:]:]}]}]2]3]3]6]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]E at . . . .     ",
-"    . . . . ' d*d*e*e*`* = =i=i=.-.-+-i-i-@;@;#;p;p;>>>>,>,>z>A>A>},},R,R,S,i'i'')P]Q]l{R]S]T]U]V]W]D]D]X]X]X]Y]Y]Y]Z]Z]Z]Z]Z]Z]Z]Z]Z]Z]`] ^.^+^@^#^#^$^$^%^&^&^*^*^=^-^;^>^,^'^'^:]}]}]2]2]3]3]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]4 . . . .     ",
-"      . . . ] 0%`*`* = =i=.-.-+-+-i-i-@;#;#;p;p;>>>>,>z>z>A>A>},},R,S,S,i')^l{!^!^~^{^]^^^%{&{/^(^_^Z]:^:^<^<^<^[^[^[^[^[^}^}^}^}^}^}^}^|^1^2^3^4^4^5^5^6^7^8^9^9^0^0^a^a^b^c^d^e^f^g^h^i^6]6]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]+]B . . .       ",
-"      . . . . l. =i=i=.-.-+-+-i-@;@;#;#;p;>>>>,>,>z>z>A>},},R,R,S,j^k{k^k^l^m^n^#{${o^p^q^q^r^r^s^[^}^}^t^t^u^u^u^v^v^v^v^v^v^v^v^v^v^w^x^y^z^z^A^A^A^B^C^D^E^F^G^G^H^H^I^I^J^K^K^L^M^N^O^P^P^Q^R^9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]K#. . . .       ",
-"      . . . . S^i=.-+-+-i-i-@;@;#;p;p;>>>>,>,>z>A>A>},},R,R,j^k{T^U^V^W^#{X^Y^Z^`^k~ /./+/@/@/#/$/v^v^%/%/&/&/*/*/*/*/=/=/=/=/=/=/=/=/-/;/>/>/,/,/'/'/)/!/~/{/{/]/]/^/////(/_/:/</[/}/|/|/1/2/3/O^P^Q^R^9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]> . . . .       ",
-"        . . . . 9$+-i-i-@;#;#;p;p;>>,>,>z>z>A>A>},R,R,j^j{T^4/V^W^@{X^5/6/j~7/8/8/9/0/#/a/b/c/c/d/*/=/e/e/e/f/f/f/g/g/g/g/h/h/h/h/h/h/i/j/k/k/l/m/n/o/o/p/q/r/s/t/u/v/w/x/y/z/z/A/B/B/C/D/E/}/|/1/2/3/O^P^Q^R^9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]9]n~. . . .         ",
-"        . . . . Q @;@;#;#;p;>>>>,>,>z>z>A>},},R,R,j^F/4/V^W^@{G/5/6/j~7/H/I/J/K/L/M/N/O/P/P/Q/R/S/g/h/h/T/T/T/U/U/U/V/V/V/V/V/V/V/V/V/W/X/X/Y/Y/Z/`/`/ ( (.(+(@(#($(%(&(*(*(=(-(;(;(>(>(A/B/C/D/E/}/|/1/2/3/O^P^R^9]9]9]9]9]9]9]9]9]9]9]9]9]9]h+. . . .         ",
-"          . . . # +-p;p;>>>>,>z>z>A>A>},},R,j^j{T^4/W^+{G/5/,(j~'(H/)(J/K/!(M/~({(Q/](^(/(((_(:(U/U/V/<(<([([([(}(}(}(}(|(|(|(|(|(|(1(2(3(4(5(5(5(6(7(7(8(9(<(V/0(a(b(c(d(e(f(f(g(*(=(-(;(>(>(A/B/C/D/E/}/|/1/3/O^P^Q^R^9]9]9]9]9]9]9]9]9]9]}]C . . .           ",
-"          . . . . $+>>,>,>z>z>A>A>},R,R,j^j{T^h(W^@{G/,(i~'(H/)(J/0/!(i(j({(k(](l(m(n(o(p(p(q(r([(}(|(|(s(s(s(t(t(u(u(u(u(u(v(v(v(v(w(x(y(z(A(A(B(C(D(E(F(s(|(}(}(G(H(I(I(J(J(c(d(e(f(g(*(=(-(;(>(>(A/B/C/D/}/|/1/2/3/P^Q^R^9]9]9]9]9]9]9]9]9$. . . .           ",
-"          . . . . C p;z>A>A>},},R,R,j^k{T^V^W^@{K(,(j~'()(J/0/L(M(~(N(O(P(Q(R(o(S(S(p(T(U(V(W(X(t(t(u(v(v(Y(Y(Y(Z(Z(Z(`(`(`(`(`(`(`( _._+_+_+_ at _@_#_$_%_&_v(v(u(t(t(*_=_-_;_>_I(I(J(c(d(e(f(g(*(=(-(;(>(>(A/C/D/E/}/1/2/3/P^Q^9]9]9]9]9]9]2]$.. . . .           ",
-"            . . . . @@A>},},R,S,S,j{T^V^W^@{5/,(j~,_)(J/L(M(i(j(N(O(Q(R(o('_S()_!_~_{_]_^_/_(_Y(Y(Z(`(`(____:_:_:_<_<_<_[_[_[_[_[_}_|_1_1_2_2_2_2_3_4_5_____`(Z(Z(Y(6_7_8_9_0_-_;_;_>_I(I(J(d(e(f(g(*(=(-(>(>(A/B/D/E/}/1/2/P^9]9]9]9]9]9]0%. . . .             ",
-"            . . . . a },R,S,S,i'')k^W^@{5/,(j~H/)(J/L(M(i(N(O(P(Q(R('_'_)_!_a_{_^_b_c_c_d_d_e___:_:_<_[_f_g_g_h_h_h_i_i_i_i_i_j_j_k_l_m_n_n_o_o_p_p_q_g_g_[_<_<_:_r_s_t_u_7_7_7_8_9_0_-_;_>_I(J(c(d(e(f(*(=(-(>(>(A/C/D/E/|/v_9]9]9]9]9]6]! . . . .             ",
-"              . . . . h at i'i'')')))l^X^6/j~H/)(J/!(M(~(N(O(P(R(o('_S(w_a_{_^_b_x_c_y_z_A_B_C_D_f_g_h_h_i_j_j_E_E_F_F_F_G_G_G_G_G_G_H_I_I_I_I_J_K_K_L_E_E_j_i_i_h_M_N_O_P_Q_Q_s_t_u_7_7_8_9_0_;_>_I(I(J(d(e(f(*(=(-(>(>(A/C/D/v_9]9]9]9]9]!&. . . .               ",
-"              . . . . ~ z>))))S)S)n{j~7/I/J/K/M(~(N(O(l(R(o('_)_w_a_{_R_x_x_y_z_A_B_C_S_T_U_V_j_j_E_F_G_G_W_W_X_X_Y_Y_Y_Z_`_`_`_`_ :.:+:+:+:+:+:@:#:X_W_W_G_F_F_$:%:&:&:p_O_O_P_Q_s_t_u_7_8_9_0_-_;_I(I(J(d(e(f(*(=(;(>(>(B/Q^9]9]9]9]~]/ . . . .               ",
-"                . . . . ].S)S)m!n!n!q^I/K/L/~({(O(l(R(o(S()_!_a_^_R_x_y_*:A_B_C_C_T_=:-:;:>:F_G_W_X_X_Y_`_`_,:,:':':':):):):):):!:~:{:{:{:{:{:]:^:':,:,:`_Z_Y_/:(:_:_:K_K_%:&:p_O_O_P_Q_t_u_7_7_8_0_-_;_I(I(J(d(e(g(*(-(;(D/9]9]9]9]9]_+. . . .                 ",
-"                . . . . ]  *n!n!$~n~::L/M/{(k(l(m(o(S()_!_a_^_b_x_y_*:A_C_<:T_[:-:}:|:1:2:3:X_Y_`_,:':':):4:4:5:5:6:6:6:7:7:7:7:8:9:9:9:9:9:0:a:6:5:5:4:):):b:c:d:+:+:e:(:_:K_K_%:&:p_O_P_Q_s_t_7_7_8_0_-_;_I(I(c(d(f(g(=(2/9]9]9]9]n!B . . . .                 ",
-"                  . . . . ; n!n~n~o~q{N/Q/](m(n(S(p(!_~_^_b_x_y_z_A_C_<:T_f:}:|:|:2:g:h:i:j:':':):4:5:6:6:7:k:k:l:l:m:m:m:m:n:n:o:p:p:p:q:q:r:s:l:l:k:7:7:t:u:v:v:{:w:d:+:+:e:(:_:K_K_&:p_O_O_Q_s_t_7_7_9_0_;_>_I(J(c(e(*(R^9]9]9]6][ . . . .                   ",
-"                    . . . . #@o~-{-{r{x:/(((o(p(T(U({_^_c_c_z_A_C_T_T_-:}:|:y:g:z:h:i:A:B:C:5:6:7:k:k:l:m:n:n:D:D:E:E:F:F:F:F:F:G:H:H:H:H:I:J:E:E:D:D:n:m:K:L:M:9:0:v:v:{:w:d:+:+:e:_:K_K_%:p_O_P_Q_s_u_7_8_9_-_;_I(I(c(B/9]9]9]9]=$. . . .                     ",
-"                    . . . . S  =r{s{s{N:_(O:q(U(V(^_/_c_d_P:B_T_T_-:}:|:2:g:z:h:Q:A:B:R:S:T:k:l:m:n:D:D:E:F:U:U:V:V:W:W:W:X:X:X:Y:Z:Z:`: <W:W:W:V:V:U:F:.<+<@<p:q:L:M:9:0:v:v:{:w:+:+:e:(:K_K_&:p_O_P_Q_t_u_7_9_0_;_>_I(v_9]9]9]n!R . . . .                     ",
-"                      . . . . & n!w{x{x{#<q($<]_%<&<&<*<B_C_=<=:;:|:2:g:z:i:Q:-<;<R:S:><,<'<n:D:E:F:U:V:W:W:X:)<)<!<!<~<~<~<{<{<]<^</<(<~<~<~<!<_<)<X::<<<[<}<H:@<@<p:q:L:M:9:0:v:{:w:+:+:e:_:K_%:&:O_O_Q_s_u_7_8_0_-_f(9]9]9]^]! . . . .                       ",
-"                      . . . . . O x{I{N{|<1<2</_&<3<4<5<T_=<6<;:1:7<z:8<Q:-<;<R:9<><,<0<a<b<F:U:V:W:X:)<!<~<{<{<c<c<d<d<e<e<e<e<e<e<e<e<e<d<d<d<c<{<f<g<h<h<h<Z:i<[<H:@<@<p:q:M:9:0:v:{:w:+:+:(:_:K_%:p_P_P_s_t_7_8_0_3/9]9]9]^.. . . . .                       ",
-"                        . . . . . :#N{Q{Q{j<k<&<l<4<S_m<n<o<1:7<p<h:i:-<q<R:9<><,<r<a<s<t<u<W:X:)<!<~<{<c<d<e<v<v<w<w<x<x<y<y<y<y<y<y<y<x<x<z<w<w<A<B<C<D<C<E<F<h<h<i<[<}<H:@<p:q:M:9:v:v:w:d:e:e:_:K_%:p_O_P_Q_t_7_A/9]9]9]0%. . . . .                         ",
-"                          . . . . R  =R{V{V{G<H<I<m<m<n<J<K<L<8<i:Q:q<R:9<M<,<r<a<s<N<O<P<Q<R<~<{<c<d<e<v<w<x<y<S<T<U<U<V<V<V<W<W<W<V<V<V<V<U<U<X<Y<Z<`< [ [D<C<C<F<h<h<Z:[<}<H:@<p:L:M:0:v:{:w:+:e:(:K_%:&:O_P_Q_I(9]9]9]R,@ . . . .                           ",
-"                            . . . . A z>Z{.].[H<+[+[@[#[$[L<%[&[*[q<=[-[,<;[>[s<N<,[P<Q<'[F<)[![e<v<w<y<S<U<U<V<W<~[{[][][^[/[/[/[/[/[/[^[][][([_[:[:[<[Z<Z<`< [D<C<C<E<h<h<i<[<H:@<p:q:M:9:v:{:w:+:+:(:K_%:&:O_t_v_9]9]o~# . . . .                             ",
-"                            . . . . . $ m!+]$][[}[@[#[|[1[2[&[3[q<=[M<;[4[>[5[6[P<7['[F<E<C<D<8[x<y<T<V<W<~[][^[/[9[0[a[a[a[b[b[c[c[b[a[a[a[d[e[f[g[g[h[:[:[<[Z<`< [ [C<C<F<h<Z:i<}<H:@<q:L:9:v:v:w:+:+:(:K_%:&:B/9]9]Q{a . . . . .                             ",
-"                              . . . . . ! w{=]>]i[j[$[1[k[l[m[n[o[M<;[4[5[p[6[[<Z:h<E<C<D< [`<Z<q[V<W<{[^[9[0[a[b[r[r[s[t[t[t[t[u[u[t[t[v[w[x[y[z[A[A[f[g[g[:[:[<[Z<`< [D<D<E<h<h<i<[<H:@<q:L:9:v:v:w:+:e:(:K_>_9]9]=]) . . . . .                               ",
-"                                . . . . . > x{,]B[y(C[D[E[m[F[G[H[I[4[5[p[}<i<h<h<E<C<D< [`<Z<:[J[K[L[9[0[b[r[s[t[u[M[M[N[O[O[O[O[O[P[Q[R[S[T[U[U[V[y[z[A[f[g[g[:[:[Z<Z< [ [C<E<F<h<i<[<H:@<q:L:9:v:{:d:+:e:8_Q^9]=]_ . . . . .                                 ",
-"                                  . . . . . ! -{^]W[A(E[X[Y[G[Z[`[ }.}p[}<i<h<h<E<C< [ [Z<<[:[h[g[f[+}@}#}t[u[M[N[O[$}%}&}&}*}=}-};}>},},}'})}S[S[T[U[U[y[z[A[f[f[h[:[<[Z<`< [C<E<F<h<i<}<H:@<q:M:0:v:{:d:9_R^9]Q{) . . . . .                                   ",
-"                                    . . . . . / S):]!}~}Y[{}~:]}M:p:@<}<[<Z:h<E<C<D< [Z<<[:[h[f[f[A[y[V[^}/}(}_}:}*}=}<}[}}}|}1}2}3}3}4}3}5}5},}'})}S[T[T[V[y[A[A[g[h[:[<[Z< [ [C<E<h<h<i<}<@<p:L:M:0:v:9_R^9]o~a . . . . .                                     ",
-"                                      . . . . . # z>2]6}7}~:8}M:q:@<H:[<Z:F<F<C<D< [Z<Z<:[h[f[A[A[y[U[U[S[)}'},}9}0}a}b}c}d}e}e}e}e}e}d}4}d}3}3}3}5}'})}S[T[U[y[A[A[g[h[:[<[Z< [D<C<E<h<Z:[<H:@<q:M:9:-_9]9]R,# . . . . .                                       ",
-"                                        . . . . . @ $%6]6]0_9:L:p:@<}<i<h<F<E<C< [`<Z<:[h[g[f[A[y[U[U[S[)},}5}3}3}d}d}e}f}f}g}g}g}g}g}g}f}h}d}d}3}3}5},})}S[T[U[y[A[f[f[h[:[Z<`< [C<C<F<h<i<}<@<p:L:;_9]9]0%@ . . . . .                                         ",
-"                                          . . . . . . ^.^]9]i}M:@<H:[<i<h<F<C<D< [Z<<[:[g[g[A[z[V[T[S[)}'}5}3}4}4}e}f}g}j}j}k}k}k}k}k}j}j}g}f}e}d}4}3}5},})}S[U[V[z[A[f[g[:[<[Z< [D<C<F<h<Z:[<H:q:d(9]^]^.. . . . . .                                           ",
-"                                            . . . . . . ! n!9]}/_:H:[<Z:h<E<C< [`<<[<[:[g[f[A[y[U[T[S['}5}5}3}4}e}f}g}j}k}l}m}m}m}m}m}l}k}j}g}f}e}4}3}5}5}'}S[T[U[y[A[f[g[:[<[<[`< [C<E<h<Z:[<K_|/9]n!! . . . . . .                                             ",
-"                                              . . . . . . R =$6]9]i}@<Z:h<E<C< [`<Z<:[h[f[A[z[y[U[T[S['}5}3}4}d}h}g}j}k}l}l}n}o}o}o}n}m}k}k}j}g}h}d}4}3}5}'}S[T[U[y[A[A[f[h[:[Z<`< [C<E<h<@<d(9]6]=$R . . . . . .                                               ",
-"                                                  . . . . . . [ n!9]1/_:h<E<C< [`<Z<:[h[f[A[z[V[U[T[S['}5}3}4}d}h}g}j}k}l}l}n}o}o}o}n}m}k}k}j}g}h}d}4}3}5}'}S[T[U[y[A[A[f[h[:[Z<`< [C<E<K_2/9]n![ . . . . . .                                                   ",
-"                                                    . . . . . . B _+~]9]d(}<C< [`<<[:[:[g[f[A[y[U[T[S['}5}3}3}4}e}f}g}j}k}l}m}m}m}m}m}k}k}j}g}f}e}d}3}5},}'}S[T[U[y[A[f[g[:[<[Z< [ [}<f(9]~]_+B . . . . . .                                                     ",
-"                                                      . . . . . . . / !&6]P^>_p: [Z<<[:[g[f[A[z[V[U[S[)},}5}3}4}d}e}f}g}j}j}k}k}k}k}k}j}g}g}f}e}4}4}3}5}'})}S[T[V[z[A[g[h[:[<[Z<q:p}Q^6]!&/ . . . . . . .                                                       ",
-"                                                          . . . . . . . ! 0%2]9]q}d:Z<:[h[f[f[A[y[U[T[S[)},}5}3}4}d}d}h}f}g}g}g}g}g}g}f}h}e}d}d}3}3}5}'})}S[U[U[y[A[f[g[:[<[r}-(9]2]0%! . . . . . . .                                                           ",
-"                                                              . . . . . . . $.9$}]9]}/s} [h[g[A[z[y[U[T[S[)}'}5}3}3}4}d}4}d}e}e}e}e}e}d}4}4}3}3}3},}'}S[S[U[U[y[A[f[f[t}Q_|/9]}]9$$.. . . . . . .                                                               ",
-"                                                                . . . . . . . . C h+n~9]P^>_r}u}A[A[y[V[T[T[S[)}'},}5}5}3}4}3}3}3}3}4}4}3}5}5},}'})}S[T[T[V[y[A[u}r}p}Q^9]n~h+C . . . . . . . .                                                                 ",
-"                                                                    . . . . . . . . . > K#+]9]9]E/;_v}u}V[U[U[T[S[S[)}'},},}5}5}5}5},},},}'})}S[S[T[T[V[u}v}>_}/9]9]+]K#> . . . . . . . . .                                                                     ",
-"                                                                        . . . . . . . . . B 4 E at R,2]9]9]|/p}K_{:w}x}y}V[S[S[S[S[S[S[S[S[z}<[x}w}A}K_i}1/9]9]2]R,E at 4 B . . . . . . . . .                                                                         ",
-"                                                                            B}. . . . . . . . . . 6 9 .#@;N{6]9]9]9]9]9]P^}/>(e(f(>(}/P^9]9]9]9]9]6]N{@;.#9 6 . . . . . . . . . . B}                                                                            ",
-"                                                                                C}. . . . . . . . . . . . . @ , @.#@9$)&i=,>S)s{s{S),>i=)&9$#@@., @ . . . . . . . . . . . . . C}                                                                                ",
-"                                                                                      C}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C}                                                                                      ",
-"                                                                                            D}E}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E}D}                                                                                            ",
-"                                                                                                    F}C}B}. . . . . . . . . . . . . . . . . . . . . . B}C}F}                                                                                                    ",
-"                                                                                                              G}H}F}I}J}C}E}B}. . B}E}C}J}I}F}H}G}                                                                                                              "};
+static char *italc[] = {
+/* columns rows colors chars-per-pixel */
+"128 128 242 2 ",
+"   c #366936",
+".  c #376837",
+"X  c #376937",
+"o  c #366A36",
+"O  c #376A37",
+"+  c #386938",
+"@  c #386A38",
+"#  c #3C6F3C",
+"$  c #3D6F3D",
+"%  c #3D703D",
+"&  c #3F723F",
+"*  c #407340",
+"=  c #407440",
+"-  c #417441",
+";  c #467A46",
+":  c #477B47",
+">  c #477C47",
+",  c #487C48",
+"<  c #487D48",
+"1  c #4B804B",
+"2  c #4C814C",
+"3  c #4D824D",
+"4  c #528852",
+"5  c #538953",
+"6  c #538A53",
+"7  c #548954",
+"8  c #548A54",
+"9  c #568D56",
+"0  c #578E57",
+"q  c #588D58",
+"w  c #588E58",
+"e  c #598F59",
+"r  c #5B925B",
+"t  c #5C925C",
+"y  c #5C935C",
+"u  c #5C945C",
+"i  c #5D945D",
+"p  c #75AF75",
+"a  c #75B075",
+"s  c #76B076",
+"d  c #79B479",
+"f  c #7AB57A",
+"g  c #7BB67B",
+"h  c #7CB77C",
+"j  c #003E99",
+"k  c #013F99",
+"l  c #014099",
+"z  c #024099",
+"x  c #034199",
+"c  c #03419A",
+"v  c #044299",
+"b  c #054399",
+"n  c #074599",
+"m  c #06449A",
+"M  c #084699",
+"N  c #094799",
+"B  c #08469A",
+"V  c #09479A",
+"C  c #0B4A99",
+"Z  c #0B499A",
+"A  c #0D4B99",
+"S  c #0C4A9A",
+"D  c #0E4C99",
+"F  c #0E4C9A",
+"G  c #135199",
+"H  c #12509A",
+"J  c #13519A",
+"K  c #14529A",
+"L  c #15539A",
+"P  c #15549A",
+"I  c #17559A",
+"U  c #18569A",
+"Y  c #18579A",
+"T  c #19579A",
+"R  c #1A589A",
+"E  c #1C5B9A",
+"W  c #1D5B9A",
+"Q  c #1C5A9B",
+"!  c #1D5C9A",
+"~  c #1E5C9A",
+"^  c #1F5D9B",
+"/  c #205F9A",
+"(  c #23619A",
+")  c #22609B",
+"_  c #23619B",
+"`  c #24639A",
+"'  c #24629B",
+"]  c #25649B",
+"[  c #26659A",
+"{  c #26649B",
+"}  c #28669B",
+"|  c #29679B",
+" . c #2B699B",
+".. c #2D6B9B",
+"X. c #2E6C9B",
+"o. c #2E6D9B",
+"O. c #2F6E9B",
+"+. c #306F9B",
+"@. c #33719B",
+"#. c #34739B",
+"$. c #35749B",
+"%. c #36759B",
+"&. c #35749C",
+"*. c #38769C",
+"=. c #39789B",
+"-. c #3A799B",
+";. c #3C7B9B",
+":. c #3D7C9B",
+">. c #3F7E9B",
+",. c #3A799C",
+"<. c #3D7B9C",
+"1. c #3E7D9C",
+"2. c #3F7E9C",
+"3. c #43819C",
+"4. c #43829C",
+"5. c #44839C",
+"6. c #46859C",
+"7. c #47869C",
+"8. c #49889C",
+"9. c #49899C",
+"0. c #4B8A9D",
+"q. c #4D8B9D",
+"w. c #4D8C9C",
+"e. c #4F8E9C",
+"r. c #508F9D",
+"t. c #51909D",
+"y. c #52909D",
+"u. c #53939C",
+"i. c #54939D",
+"p. c #57959D",
+"a. c #57969D",
+"s. c #58979D",
+"d. c #58989C",
+"f. c #59989D",
+"g. c #5A999D",
+"h. c #5B9A9D",
+"j. c #5C9A9D",
+"k. c #5D9C9D",
+"l. c #5E9E9D",
+"z. c #609F9D",
+"x. c #61A09D",
+"c. c #64A49D",
+"v. c #65A49D",
+"b. c #66A59D",
+"n. c #66A59E",
+"m. c #68A89D",
+"M. c #6BAA9D",
+"N. c #6BAA9E",
+"B. c #6EAE9D",
+"V. c #6DAD9E",
+"C. c #6FAE9E",
+"Z. c #70AF9E",
+"A. c #72B19E",
+"S. c #72B29E",
+"D. c #74B49E",
+"F. c #75B49E",
+"G. c #75B59E",
+"H. c #76B59E",
+"J. c #77B79E",
+"K. c #77B69F",
+"L. c #78B89E",
+"P. c #79B99E",
+"I. c #7AB99F",
+"U. c #7ABA9E",
+"Y. c #7BBA9E",
+"T. c #7CBB9F",
+"R. c #7CBC9E",
+"E. c #7DBD9E",
+"W. c #7DBD9F",
+"Q. c #7EBE9E",
+"!. c #7FBF9E",
+"~. c #7FBE9F",
+"^. c #82BD82",
+"/. c #82BE82",
+"(. c #82BF82",
+"). c #83BF83",
+"_. c #80BF9F",
+"`. c #83C083",
+"'. c #86C386",
+"]. c #87C387",
+"[. c #87C487",
+"{. c #8DCA8D",
+"}. c #8DCB8D",
+"|. c #8ECB8E",
+" X c #8ECC8E",
+".X c #8FCC8F",
+"XX c #81C09F",
+"oX c #82C29F",
+"OX c #83C29F",
+"+X c #84C39F",
+"@X c #84C49E",
+"#X c #85C49F",
+"$X c #86C69F",
+"%X c #87C79F",
+"&X c #88C79F",
+"*X c #89C89F",
+"=X c #89C99F",
+"-X c #8ACA9F",
+";X c #8BCB9F",
+":X c #8CCC9F",
+">X c #8DCD9F",
+",X c #8ECE9F",
+"<X c #8FCF9F",
+"1X c #90CE90",
+"2X c #91CE91",
+"3X c #91CF91",
+"4X c #92D092",
+"5X c #94D394",
+"6X c #95D395",
+"7X c #95D495",
+"8X c #96D496",
+"9X c #96D596",
+"0X c #97D697",
+"qX c #90D09F",
+"wX c #92D29F",
+"eX c #95D59F",
+"rX c #97D79F",
+"tX c #98D798",
+"yX c #9BDA9B",
+"uX c #9BDB9B",
+"iX c #98D89F",
+"pX c #9ADA9F",
+"aX c #9DDD9F",
+"sX c #9EDE9E",
+"dX c #9FDE9F",
+"fX c #9FDF9F",
+"gX c #92D2A0",
+"hX c #93D3A0",
+"jX c #95D4A0",
+"kX c #96D6A0",
+"lX c #97D7A0",
+"zX c #98D8A0",
+"xX c #99D9A0",
+"cX c #9AD9A0",
+"vX c #9BDBA0",
+"bX c #9CDCA0",
+"nX c #9DDDA0",
+"mX c #9EDEA0",
+"MX c #9FDEA0",
+"NX c #9FDFA0",
+"BX c #A0E0A0",
+"VX c None",
+/* pixels */
+"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXX X X X X X X X X X X X X O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVX+ X X X X X X X X X X X X X X X X . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXVXVX+ X X X X X X X X X X X X X X X X X X O . . . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . X X X + X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXX X X X X X X X X X X X X X X X X X X X X . . . . . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O . O X X X + X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXX X X X X X X = u a ].9XyXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXyX9X].a u = + X X X X X X VXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVX+ X X X X X + e `.dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdX(.e + X X X X X X VXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXX X X X X X 7 3XdXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX|.5 X X X X X X VXVXVXVXVXVXVX",
+"VXVXVXVXVXVXX X X X X % h BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXg # X X X X X VXVXVXVXVXVX",
+"VXVXVXVXVX+ X X X X < 4XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX4X< X X X X X VXVXVXVXVX",
+"VXVXVXVXVXX X X X 3 tXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9X1 X X X X VXVXVXVXVX",
+"VXVXVXVXX X X X < tXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9X> X X X X VXVXVXVX",
+"VXVXVXX X X X % 3XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX4X# + X X X VXVXVX",
+"VXVXVXX X X X h BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXg X X X X VXVXVX",
+"VXVXX X X X 7 BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX7 X X X X VXVX",
+"VXVXX X X X |.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX}.+ X X X VXVX",
+"VX+ X X X r BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXpX at XU.H.U.%XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX0 X X X X VX",
+"VXX X X X `.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX%X9./ z j j j j j v | l.zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX(.X X X X VX",
+"VXX X X = dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXgX%.j j j j j j j j j j j j K S.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdX* X X X VX",
+"VXX X X u BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXOXF j j j j j j j j j j j j j j c n.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXr X X X VX",
+"X X + + a BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX%XC j j j j j j j j j j j j j j j j c *XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXa X X X X ",
+". X X X [.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNX` j j j j j j j j j j j j j j j j j j *.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX].X X X X ",
+"X X X X 9XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfXN.j j j j j j j j j j j j j j j j j j j v zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9XX X X X ",
+"X X X X yXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX&.j j j j j j j j j j j j j j j j j j j j OXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXyXX X X X ",
+"X X X X dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXV j j j j j j j j j j j j j j j j j j j j F.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzXj j j j j j j j j j j j j j j j j j j j j OXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX;Xj j j j j j j j j j j j j j j j j j j j j gXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX,Xj j j j j j j j j j j j j j j j j j j j Q BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNXz j j j j j j j j j j j j j j j j j j j s.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX.j j j j j j j j j j j j j j j j j j K zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXH.j j j j j j j j j j j j j j j j j z K.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX7.j j j j j j j j j j j j j j j m B.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNX9.z j j j j j j j j j j j j _ _.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX!. at .v j j j j j j j v X.B.dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXkXH.k.y.9.y.z.!.pXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX,XN.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXg.j j j j j j j j j j j j j j j j j j j j j j j j j j j j C BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX>.j j j j j j j j j j j j j j j j j j j j j j j j j j j j X.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX` j j j j j j j j j j j j j j j j j j j j j j j j j j j z y.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXC j j j j j j j j j j j j j j j j j j j j j j j j j j j j H.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX<Xj j j j j j j j j j j j j j j j j j j j j j j j j j j j j kXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXH.j j j j j j j j j j j j j j j j j j j j j j j j j j j j U BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXgXH.H.B.v.g.1.C j j j j j j j j j j j j j j j j j j j j j ,.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXkX{ j j j j j j j j j j j j j j j j j j j j g.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX;Xz j j j j j j j j j j j j j j j j j j j !.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX~ j j j j j j j j j j j j j j j j j j v NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX#.j j j j j j j j j j j j j j j j j j _ BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX-.j j j j j j j j j j j j j j j j j j 5.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX.j j j j j j j j j j j j j j j j j j v.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXU j j j j j j j j j j j j j j j j j j &XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzXz j j j j j j j j j j j j j j j j j C BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXT.j j j j j j j j j j j j j j j j j j ..BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXl.j j j j j j j j j j j j j j j j j j r.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX>.j j j j j j j j j j j j j j j j j j Z.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXR j j j j j j j j j j j j j j j j j j wXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfXiXj j j j j j j j j j j j j j j j j j I BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXU.j j j j j j j j j j j j j j j j j j *.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X . X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXs.j j j j j j j j j j j j j j j j j j g.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X . . BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX#.j j j j j j j j j j j j j j j j j j T.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXL j j j j j j j j j j j j j j j j j j pXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXwXj j j j j j j j j j j j j j j j j j / BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXZ.j j j j j j j j j j j j j j j j j j 5.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXr.j j j j j j j j j j j j j j j j j j v.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX..j j j j j j j j j j j j j j j j j j %XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXF j j j j j j j j j j j j j j j j j V NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX;Xj j j j j j j j j j j j j j j j j j ..BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXm.j j j j j j j j j j j j j j j j j j w.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX8.j j j j j j j j j j j j j j j j j j B.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX` j j j j j j j j j j j j j j j j j j <XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNXm j j j j j j j j j j j j j j j j j G BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX_.j j j j j j j j j j j j j j j j j j %.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXx.j j j j j j j j j j j j j j j j j j p.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX2.j j j j j j j j j j j j j j j j j j I.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXQ j j j j j j j j j j j j j j j j j j zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzXv j j j j j j j j j j j j j j j j j ~ BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXU.j j j j j j j j j j j j j j j j j j >.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfXg.j j j j j j j j j j j j j j j j j j z.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX-.j j j j j j j j j j j j j j j j j j _.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXU j j j j j j j j j j j j j j j j j v zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXiXj j j j j j j j j j j j j j j j j j Q BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXT.j j j j j j j j j j j j j j j j j j =.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXz.j j j j j j j j j j j j j j j j j j s.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX8.j j j j j j j j j j j j j j j j j j H.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX+.j j j j j j j j j j j j j j j j j j ;XNXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXU j j j j j j j j j j j j j j j j j j NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXV j j j j j j j j j j j j j j j j j F BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzXj j j j j j j j j j j j j j j j j j L fXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX$Xj j j j j j j j j j j j j j j j j j Q BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX!.j j j j j j j j j j j j j j j j j j U BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXH.j j j j j j j j j j j j j j j j j j V NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXA.j j j j j j j j j j j j j j j j j j j OXBXBXBXBXBXBXBXNXNXdX+XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXT.j j j j j j j j j j j j j j j j j j j <.BXBXBXBXBXBXBXBXU.Q C :XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNX;Xj j j j j j j j j j j j j j j j j j j j p.NXBXBXBXNXU.X.j j j ` NXNXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzXz j j j j j j j j j j j j j j j j j j j j I ;.>.+.F j j j j j j r.NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX{ j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j v %XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXX X X X ",
+"X X X X dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXp.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j 1.NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfX. . O . ",
+"X X X X yXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXgXC j j j j j j j j j j j j j j j j j j j j j j j j j j j j j 4.NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXuX. . . O ",
+"X X X X 6XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXy.j j j j j j j j j j j j j j j j j j j j j j j j j j j j r.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX4XO . O . ",
+"X X X X [.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXzX` j j j j j j j j j j j j j j j j j j j j j j j j j F N.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX].. O . @ ",
+". X X X a BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXjXU j j j j j j j j j j j j j j j j j j j j j j j &.,XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXa O . O . ",
+"VXX X X y BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXkX*.j j j j j j j j j j j j j j j j j j j j _ I.NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXu . O O VX",
+"VXX X X = dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXB._ j j j j j j j j j j j j j j j V -.!.NXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdX% . O . VX",
+"VXX X X X (.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXOX9.} V j j j j j j j m _ 4.A.zXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX`.. O . O VX",
+"VXX X X X r BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNX,X+XU.H.U.+X,XdXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX0 X X X X VX",
+"VXVXX X X + }.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXNXBXBXBXBXBXfXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdX|.X X X X VXVX",
+"VXVXX X X X 5 BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX4 X X X X VXVX",
+"VXVXVXX X X X h BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXg X X X X VXVXVX",
+"VXVXVXX X X X # 3XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX3X# X X X X VXVXVX",
+"VXVXVXVXX X X X ; 9XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXtX; X X X X VXVXVXVX",
+"VXVXVXVXVXX X X X 3 9XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9X2 X X X X VXVXVXVXVX",
+"VXVXVXVXVXX X X X + ; 4XBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX3X; X X X X X VXVXVXVXVX",
+"VXVXVXVXVXVXX X X X X % g BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdXBXd # X X X X X VXVXVXVXVXVX",
+"VXVXVXVXVXVXVXX X X X X X 5 |.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX|.4 X X X X X X VXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXX X X X X X + e (.dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXdX(.0 + X X X X X X VXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXX X X X X X + % r a ].9XuXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXyX9X[.a r % X X X X X X X VXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXVXVXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X VXVXVXVXVXVXVXVXVXVXVXVXVXVXVX",
+"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX+ X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X + VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+};
diff --git a/ima/dialogs/ClientSettingsDialog.ui b/ima/dialogs/ClientSettingsDialog.ui
index e941c53..14a75d7 100644
--- a/ima/dialogs/ClientSettingsDialog.ui
+++ b/ima/dialogs/ClientSettingsDialog.ui
@@ -8,7 +8,7 @@
     <x>0</x>
     <y>0</y>
     <width>388</width>
-    <height>288</height>
+    <height>242</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,7 +16,7 @@
   </property>
   <property name="windowIcon">
    <iconset resource="../italc.qrc">
-    <normaloff>:/resources/client_settings.png</normaloff>:/resources/client_settings.png</iconset>
+    <normaloff>:/resources/preferences-desktop-display-blue.png</normaloff>:/resources/preferences-desktop-display-blue.png</iconset>
   </property>
   <property name="modal">
    <bool>true</bool>
@@ -30,25 +30,34 @@
      <property name="spacing">
       <number>10</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>32</width>
+         <height>32</height>
+        </size>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/client_settings.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/preferences-desktop-display-blue.png</pixmap>
        </property>
        <property name="scaledContents">
-        <bool>false</bool>
+        <bool>true</bool>
        </property>
       </widget>
      </item>
@@ -76,12 +85,21 @@
    </item>
    <item>
     <layout class="QGridLayout" name="gridLayout">
-     <property name="verticalSpacing">
-      <number>4</number>
+     <property name="leftMargin">
+      <number>5</number>
+     </property>
+     <property name="topMargin">
+      <number>5</number>
      </property>
-     <property name="margin">
+     <property name="rightMargin">
       <number>5</number>
      </property>
+     <property name="bottomMargin">
+      <number>5</number>
+     </property>
+     <property name="verticalSpacing">
+      <number>4</number>
+     </property>
      <item row="0" column="0">
       <widget class="QLabel" name="label_4">
        <property name="sizePolicy">
diff --git a/ima/dialogs/Config.ui b/ima/dialogs/Config.ui
index 0bd5f13..aebb5e6 100644
--- a/ima/dialogs/Config.ui
+++ b/ima/dialogs/Config.ui
@@ -19,7 +19,16 @@
      <property name="spacing">
       <number>6</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
@@ -27,22 +36,34 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
         <widget class="QLabel" name="label_2">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
          </property>
          <property name="text">
           <string/>
          </property>
          <property name="pixmap">
-          <pixmap resource="../italc.qrc">:/resources/clock.png</pixmap>
+          <pixmap resource="../italc.qrc">:/resources/chronometer.png</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
@@ -60,7 +81,16 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -113,7 +143,16 @@
      <property name="spacing">
       <number>3</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
@@ -121,16 +160,34 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
         <widget class="QLabel" name="label_6">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="text">
           <string/>
          </property>
          <property name="pixmap">
-          <pixmap resource="../italc.qrc">:/resources/userinterface.png</pixmap>
+          <pixmap resource="../italc.qrc">:/resources/window-duplicate.png</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
@@ -161,7 +218,16 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -200,7 +266,16 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -236,7 +311,16 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -401,7 +485,16 @@
      <property name="spacing">
       <number>6</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
@@ -409,13 +502,31 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
         <widget class="QLabel" name="label_12">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="pixmap">
-          <pixmap resource="../../lib/ItalcCore.qrc">:/resources/authors.png</pixmap>
+          <pixmap resource="../italc.qrc">:/resources/user-group-new.png</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
@@ -446,7 +557,16 @@
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -504,7 +624,16 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>6</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
@@ -512,96 +641,38 @@ p, li { white-space: pre-wrap; }
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
         <number>0</number>
        </property>
-       <item>
-        <widget class="QLabel" name="label_10">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="pixmap">
-          <pixmap resource="../italc.qrc">:/resources/remotelogon_22.png</pixmap>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="label_11">
-         <property name="text">
-          <string>Settings for multi-logon</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item>
-      <layout class="QHBoxLayout">
-       <property name="spacing">
-        <number>6</number>
-       </property>
-       <property name="margin">
+       <property name="topMargin">
         <number>0</number>
        </property>
-       <item>
-        <spacer>
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>1</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QLabel" name="label_15">
-         <property name="text">
-          <string>Domain</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLineEdit" name="domainEdit"/>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QVBoxLayout">
-     <property name="spacing">
-      <number>6</number>
-     </property>
-     <property name="margin">
-      <number>0</number>
-     </property>
-     <item>
-      <layout class="QHBoxLayout">
-       <property name="spacing">
-        <number>6</number>
+       <property name="rightMargin">
+        <number>0</number>
        </property>
-       <property name="margin">
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
         <widget class="QLabel" name="label_16">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="pixmap">
-          <pixmap resource="../italc.qrc">:/resources/thinclient.png</pixmap>
+          <pixmap resource="../italc.qrc">:/resources/preferences-desktop-display.png</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QLabel" name="label_17">
          <property name="text">
-          <string>Double-click action for client-window</string>
+          <string>Double click action for client window</string>
          </property>
         </widget>
        </item>
@@ -625,7 +696,16 @@ p, li { white-space: pre-wrap; }
        <property name="spacing">
         <number>6</number>
        </property>
-       <property name="margin">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
         <number>0</number>
        </property>
        <item>
@@ -667,7 +747,7 @@ p, li { white-space: pre-wrap; }
           </property>
           <property name="icon">
            <iconset resource="../italc.qrc">
-            <normaloff>:/resources/viewmag.png</normaloff>:/resources/viewmag.png</iconset>
+            <normaloff>:/resources/kmag.png</normaloff>:/resources/kmag.png</iconset>
           </property>
          </item>
         </widget>
@@ -681,22 +761,34 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>6</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label_8">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>32</width>
+         <height>32</height>
+        </size>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/info_22.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/help-about.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
diff --git a/ima/dialogs/Overview.ui b/ima/dialogs/Overview.ui
index f2c6d46..5f9cb7c 100644
--- a/ima/dialogs/Overview.ui
+++ b/ima/dialogs/Overview.ui
@@ -29,19 +29,31 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>15</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label6">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>64</width>
+         <height>64</height>
+        </size>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/back.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/go-previous.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
@@ -62,19 +74,31 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>15</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label7">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>64</width>
+         <height>64</height>
+        </size>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/classroom_manager_48.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/applications-education.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
@@ -95,19 +119,31 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>15</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label9">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>64</width>
+         <height>64</height>
+        </size>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/snapshot_48.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/camera-photo.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
@@ -128,19 +164,31 @@ p, li { white-space: pre-wrap; }
      <property name="spacing">
       <number>15</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label10">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>64</width>
+         <height>64</height>
+        </size>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/config_48.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/adjustrgb.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
@@ -185,7 +233,13 @@ p, li { white-space: pre-wrap; }
      </property>
      <property name="icon">
       <iconset resource="../italc.qrc">
-       <normaloff>:/resources/info_22.png</normaloff>:/resources/info_22.png</iconset>
+       <normaloff>:/resources/help-about.png</normaloff>:/resources/help-about.png</iconset>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>22</width>
+       <height>22</height>
+      </size>
      </property>
     </widget>
    </item>
diff --git a/ima/dialogs/RunCommandsDialog.ui b/ima/dialogs/RunCommandsDialog.ui
index 3d8aa97..0a8c837 100644
--- a/ima/dialogs/RunCommandsDialog.ui
+++ b/ima/dialogs/RunCommandsDialog.ui
@@ -16,13 +16,22 @@
   </property>
   <property name="windowIcon">
    <iconset resource="../italc.qrc">
-    <normaloff>:/resources/text_message_48.png</normaloff>:/resources/text_message_48.png</iconset>
+    <normaloff>:/resources/run-build.png</normaloff>:/resources/run-build.png</iconset>
   </property>
   <layout class="QVBoxLayout">
    <property name="spacing">
     <number>16</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>15</number>
+   </property>
+   <property name="topMargin">
+    <number>15</number>
+   </property>
+   <property name="rightMargin">
+    <number>15</number>
+   </property>
+   <property name="bottomMargin">
     <number>15</number>
    </property>
    <item>
@@ -30,22 +39,34 @@
      <property name="spacing">
       <number>10</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>32</width>
+         <height>32</height>
+        </size>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/run.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/run-build.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
diff --git a/ima/dialogs/Snapshots.ui b/ima/dialogs/Snapshots.ui
index d0a8d0c..e230d29 100644
--- a/ima/dialogs/Snapshots.ui
+++ b/ima/dialogs/Snapshots.ui
@@ -30,15 +30,24 @@ p, li { white-space: pre-wrap; }
    </item>
    <item>
     <layout class="QGridLayout" columnstretch="0,1">
+     <property name="leftMargin">
+      <number>10</number>
+     </property>
+     <property name="topMargin">
+      <number>10</number>
+     </property>
+     <property name="rightMargin">
+      <number>10</number>
+     </property>
+     <property name="bottomMargin">
+      <number>10</number>
+     </property>
      <property name="horizontalSpacing">
       <number>10</number>
      </property>
      <property name="verticalSpacing">
       <number>4</number>
      </property>
-     <property name="margin">
-      <number>10</number>
-     </property>
      <item row="1" column="1">
       <widget class="QLabel" name="dateLbl"/>
      </item>
@@ -114,7 +123,13 @@ p, li { white-space: pre-wrap; }
        </property>
        <property name="icon">
         <iconset resource="../italc.qrc">
-         <normaloff>:/resources/client_show.png</normaloff>:/resources/client_show.png</iconset>
+         <normaloff>:/resources/edit-find.png</normaloff>:/resources/edit-find.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
        </property>
       </widget>
      </item>
@@ -125,7 +140,13 @@ p, li { white-space: pre-wrap; }
        </property>
        <property name="icon">
         <iconset resource="../italc.qrc">
-         <normaloff>:/resources/cancel.png</normaloff>:/resources/cancel.png</iconset>
+         <normaloff>:/resources/edit-delete.png</normaloff>:/resources/edit-delete.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
        </property>
       </widget>
      </item>
diff --git a/ima/dialogs/TextMessageDialog.ui b/ima/dialogs/TextMessageDialog.ui
index 8e5a617..18791a5 100644
--- a/ima/dialogs/TextMessageDialog.ui
+++ b/ima/dialogs/TextMessageDialog.ui
@@ -16,13 +16,22 @@
   </property>
   <property name="windowIcon">
    <iconset resource="../italc.qrc">
-    <normaloff>:/resources/text_message_48.png</normaloff>:/resources/text_message_48.png</iconset>
+    <normaloff>:/resources/dialog-information.png</normaloff>:/resources/dialog-information.png</iconset>
   </property>
   <layout class="QVBoxLayout">
    <property name="spacing">
     <number>16</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>15</number>
+   </property>
+   <property name="topMargin">
+    <number>15</number>
+   </property>
+   <property name="rightMargin">
+    <number>15</number>
+   </property>
+   <property name="bottomMargin">
     <number>15</number>
    </property>
    <item>
@@ -30,22 +39,34 @@
      <property name="spacing">
       <number>10</number>
      </property>
-     <property name="margin">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLabel" name="label">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+       <property name="maximumSize">
+        <size>
+         <width>32</width>
+         <height>32</height>
+        </size>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
-        <pixmap resource="../italc.qrc">:/resources/text_message_48.png</pixmap>
+        <pixmap resource="../italc.qrc">:/resources/dialog-information.png</pixmap>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
diff --git a/ima/italc.qrc b/ima/italc.qrc
index 4227448..f825777 100644
--- a/ima/italc.qrc
+++ b/ima/italc.qrc
@@ -1,66 +1,49 @@
 <RCC>
     <qresource prefix="/" >
-	<file>resources/no_mouse.png</file>
-	<file>resources/fullscreen.png</file>
-	<file>resources/quit.png</file>
-        <file>resources/adjust_size.png</file>
-        <file>resources/auto_arrange.png</file>
-        <file>resources/back.png</file>
-        <file>resources/cancel.png</file>
-        <file>resources/classroom_add.png</file>
-        <file>resources/classroom_remove.png</file>
-        <file>resources/classroom_show.png</file>
-        <file>resources/client_settings.png</file>
-        <file>resources/client.png</file>
-        <file>resources/client_add.png</file>
-        <file>resources/client_demo.png</file>
-        <file>resources/client_hidden.png</file>
-        <file>resources/classroom_manager.png</file>
-        <file>resources/classroom_manager_48.png</file>
-        <file>resources/client_remove.png</file>
-        <file>resources/client_show.png</file>
-        <file>resources/client_visible.png</file>
-        <file>resources/clock.png</file>
-        <file>resources/config.png</file>
-        <file>resources/config_48.png</file>
-        <file>resources/error.png</file>
-        <file>resources/filesave.png</file>
-        <file>resources/fullscreen_demo.png</file>
-        <file>resources/help.png</file>
-        <file>resources/host_unreachable.png</file>
-        <file>resources/info.png</file>
-        <file>resources/info_22.png</file>
-        <file>resources/locked.png</file>
-        <file>resources/logout.png</file>
-        <file>resources/remotelogon.png</file>
-        <file>resources/remotelogon_22.png</file>
-        <file>resources/remotelogon_48.png</file>
-        <file>resources/network.png</file>
-        <file>resources/no_user.png</file>
-        <file>resources/overview.png</file>
-        <file>resources/overview_mode.png</file>
-        <file>resources/power_off.png</file>
-        <file>resources/power_on.png</file>
-        <file>resources/reboot.png</file>
+	<file>resources/kr_unselect.png</file>
+	<file>resources/view-fullscreen.png</file>
+	<file>resources/application-exit.png</file>
+	<file>resources/document-edit.png</file>
+        <file>resources/zoom-fit-best.png</file>
+        <file>resources/vcs-locally-modified.png</file>
+        <file>resources/go-previous.png</file>
+        <file>resources/edit-delete.png</file>
+        <file>resources/folder-add.png</file>
+        <file>resources/preferences-desktop-display.png</file>
+        <file>resources/preferences-desktop-display-blue.png</file>
+        <file>resources/preferences-desktop-display-orange.png</file>
+        <file>resources/preferences-desktop-display-gray.png</file>
+        <file>resources/preferences-desktop-display-red.png</file>
+        <file>resources/preferences-desktop-display-purple.png</file>
+        <file>resources/list-add.png</file>
+        <file>resources/list-remove.png</file>
+        <file>resources/chronometer.png</file>
+        <file>resources/adjustrgb.png</file>
+        <file>resources/document-save.png</file>
+        <file>resources/presentation-fullscreen.png</file>
+        <file>resources/presentation-window.png</file>
+        <file>resources/presentation-none.png</file>
+        <file>resources/help-about.png</file>
+        <file>resources/preferences-system-power-management.png</file>
+        <file>resources/system-lock-screen.png</file>
+        <file>resources/preferences-system-login.png</file>
+        <file>resources/view-calendar-month.png</file>
+        <file>resources/system-shutdown.png</file>
+        <file>resources/system-reboot.png</file>
         <file>resources/remote_control.png</file>
         <file>resources/remote_control_48.png</file>
-        <file>resources/run.png</file>
-        <file>resources/snapshot.png</file>
-        <file>resources/snapshot_48.png</file>
+        <file>resources/run-build.png</file>
+        <file>resources/camera-photo.png</file>
         <file>resources/splash.png</file>
-        <file>resources/stop.png</file>
-        <file>resources/text_message.png</file>
-        <file>resources/text_message_48.png</file>
-        <file>resources/tray-menu-bg.png</file>
-        <file>resources/thinclient.png</file>
-        <file>resources/toolbar.png</file>
-        <file>resources/classroom.png</file>
-        <file>resources/userinterface.png</file>
-        <file>resources/users.png</file>
-        <file>resources/users_48.png</file>
-        <file>resources/viewmag.png</file>
-        <file>resources/window_demo.png</file>
-        <file>resources/greenled.png</file>
+        <file>resources/dialog-error.png</file>
+        <file>resources/dialog-information.png</file>
+        <file>resources/applications-education.png</file>
+        <file>resources/window-duplicate.png</file>
+        <file>resources/edit-find.png</file>
+        <file>resources/kmag.png</file>
+        <file>resources/dot-green.png</file>
+        <file>resources/system-suspend-hibernate.png</file>
+        <file>resources/user-group-new.png</file>
         <file>resources/toolbar-background.png</file>
     </qresource>
 </RCC>
diff --git a/ima/italc.rc b/ima/italc.rc
deleted file mode 100644
index fece217..0000000
--- a/ima/italc.rc
+++ /dev/null
@@ -1,26 +0,0 @@
-italcicon ICON data/italc.ico
-#include <windows.h>
-
-VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
-  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-  FILEOS	VOS_NT_WINDOWS32
-  FILETYPE	VFT_APP
-  FILESUBTYPE	VFT2_UNKNOWN
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, charset = Windows, Multilingual
-    BEGIN
-      VALUE "Comments",		"Intelligent Teaching And Learning with Computers (http://italc.sf.net)\0"
-      VALUE "CompanyName",	"iTALC Solutions\0"
-      VALUE "FileDescription",	"iTALC Master Application\0"
-      VALUE "FileVersion",	"\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2004-2014 Tobias Doerffel\0"
-      VALUE "OriginalFilename",	"italc.exe\0"
-      VALUE "ProductName",	"iTALC\0"
-      VALUE "ProductVersion",	"\0"
-    END
-  END
-END
diff --git a/ima/italc.rc.in b/ima/italc.rc.in
index d84ebf1..c27f75d 100644
--- a/ima/italc.rc.in
+++ b/ima/italc.rc.in
@@ -2,7 +2,7 @@ italcicon ICON data/italc.ico
 #include <windows.h>
 
 VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
+  FILEVERSION	3,0,1,0
   FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
   FILEOS	VOS_NT_WINDOWS32
   FILETYPE	VFT_APP
@@ -17,7 +17,7 @@ BEGIN
       VALUE "CompanyName",	"iTALC Solutions\0"
       VALUE "FileDescription",	"iTALC Master Application\0"
       VALUE "FileVersion",	"@PACKAGE_VERSION@\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2004-2014 Tobias Doerffel\0"
+      VALUE "LegalCopyright",	"Copyright (c) 2004-2016 Tobias Doerffel\0"
       VALUE "OriginalFilename",	"italc.exe\0"
       VALUE "ProductName",	"iTALC\0"
       VALUE "ProductVersion",	"@PACKAGE_VERSION@\0"
diff --git a/ima/resources/adjust_size.png b/ima/resources/adjust_size.png
deleted file mode 100644
index 29b2083..0000000
Binary files a/ima/resources/adjust_size.png and /dev/null differ
diff --git a/ima/resources/adjustrgb.png b/ima/resources/adjustrgb.png
new file mode 100644
index 0000000..d8959ab
Binary files /dev/null and b/ima/resources/adjustrgb.png differ
diff --git a/ima/resources/application-exit.png b/ima/resources/application-exit.png
new file mode 100644
index 0000000..5b0389e
Binary files /dev/null and b/ima/resources/application-exit.png differ
diff --git a/ima/resources/applications-education.png b/ima/resources/applications-education.png
new file mode 100644
index 0000000..706360c
Binary files /dev/null and b/ima/resources/applications-education.png differ
diff --git a/ima/resources/auto_arrange.png b/ima/resources/auto_arrange.png
deleted file mode 100644
index b5abc95..0000000
Binary files a/ima/resources/auto_arrange.png and /dev/null differ
diff --git a/ima/resources/back.png b/ima/resources/back.png
deleted file mode 100644
index 2741394..0000000
Binary files a/ima/resources/back.png and /dev/null differ
diff --git a/ima/resources/camera-photo.png b/ima/resources/camera-photo.png
new file mode 100644
index 0000000..f8ab91d
Binary files /dev/null and b/ima/resources/camera-photo.png differ
diff --git a/ima/resources/cancel.png b/ima/resources/cancel.png
deleted file mode 100644
index 351659b..0000000
Binary files a/ima/resources/cancel.png and /dev/null differ
diff --git a/ima/resources/chronometer.png b/ima/resources/chronometer.png
new file mode 100644
index 0000000..32f4d05
Binary files /dev/null and b/ima/resources/chronometer.png differ
diff --git a/ima/resources/classroom.png b/ima/resources/classroom.png
deleted file mode 100644
index f396c07..0000000
Binary files a/ima/resources/classroom.png and /dev/null differ
diff --git a/ima/resources/classroom_add.png b/ima/resources/classroom_add.png
deleted file mode 100644
index 409d839..0000000
Binary files a/ima/resources/classroom_add.png and /dev/null differ
diff --git a/ima/resources/classroom_manager.png b/ima/resources/classroom_manager.png
deleted file mode 100644
index 7431dd1..0000000
Binary files a/ima/resources/classroom_manager.png and /dev/null differ
diff --git a/ima/resources/classroom_manager_48.png b/ima/resources/classroom_manager_48.png
deleted file mode 100644
index bd85129..0000000
Binary files a/ima/resources/classroom_manager_48.png and /dev/null differ
diff --git a/ima/resources/classroom_remove.png b/ima/resources/classroom_remove.png
deleted file mode 100644
index af4f58e..0000000
Binary files a/ima/resources/classroom_remove.png and /dev/null differ
diff --git a/ima/resources/classroom_show.png b/ima/resources/classroom_show.png
deleted file mode 100644
index 1ddf34f..0000000
Binary files a/ima/resources/classroom_show.png and /dev/null differ
diff --git a/ima/resources/client.png b/ima/resources/client.png
deleted file mode 100644
index e2659fc..0000000
Binary files a/ima/resources/client.png and /dev/null differ
diff --git a/ima/resources/client_add.png b/ima/resources/client_add.png
deleted file mode 100644
index 7a68b01..0000000
Binary files a/ima/resources/client_add.png and /dev/null differ
diff --git a/ima/resources/client_demo.png b/ima/resources/client_demo.png
deleted file mode 100644
index 0736ed0..0000000
Binary files a/ima/resources/client_demo.png and /dev/null differ
diff --git a/ima/resources/client_hidden.png b/ima/resources/client_hidden.png
deleted file mode 100644
index 9f8aba3..0000000
Binary files a/ima/resources/client_hidden.png and /dev/null differ
diff --git a/ima/resources/client_remove.png b/ima/resources/client_remove.png
deleted file mode 100644
index edc0406..0000000
Binary files a/ima/resources/client_remove.png and /dev/null differ
diff --git a/ima/resources/client_settings.png b/ima/resources/client_settings.png
deleted file mode 100644
index f761763..0000000
Binary files a/ima/resources/client_settings.png and /dev/null differ
diff --git a/ima/resources/client_show.png b/ima/resources/client_show.png
deleted file mode 100644
index 536e07d..0000000
Binary files a/ima/resources/client_show.png and /dev/null differ
diff --git a/ima/resources/client_visible.png b/ima/resources/client_visible.png
deleted file mode 100644
index d596d20..0000000
Binary files a/ima/resources/client_visible.png and /dev/null differ
diff --git a/ima/resources/clock.png b/ima/resources/clock.png
deleted file mode 100644
index 136dadb..0000000
Binary files a/ima/resources/clock.png and /dev/null differ
diff --git a/ima/resources/config.png b/ima/resources/config.png
deleted file mode 100644
index b6c1a80..0000000
Binary files a/ima/resources/config.png and /dev/null differ
diff --git a/ima/resources/config_48.png b/ima/resources/config_48.png
deleted file mode 100644
index ce853b1..0000000
Binary files a/ima/resources/config_48.png and /dev/null differ
diff --git a/ima/resources/dialog-error.png b/ima/resources/dialog-error.png
new file mode 100644
index 0000000..56279f3
Binary files /dev/null and b/ima/resources/dialog-error.png differ
diff --git a/ima/resources/dialog-information.png b/ima/resources/dialog-information.png
new file mode 100644
index 0000000..3c6cf58
Binary files /dev/null and b/ima/resources/dialog-information.png differ
diff --git a/ima/resources/document-edit.png b/ima/resources/document-edit.png
new file mode 100644
index 0000000..9a02cc1
Binary files /dev/null and b/ima/resources/document-edit.png differ
diff --git a/ima/resources/document-save.png b/ima/resources/document-save.png
new file mode 100644
index 0000000..b357f6e
Binary files /dev/null and b/ima/resources/document-save.png differ
diff --git a/ima/resources/dot-green.png b/ima/resources/dot-green.png
new file mode 100644
index 0000000..74e9743
Binary files /dev/null and b/ima/resources/dot-green.png differ
diff --git a/ima/resources/edit-delete.png b/ima/resources/edit-delete.png
new file mode 100644
index 0000000..6ac2abd
Binary files /dev/null and b/ima/resources/edit-delete.png differ
diff --git a/ima/resources/edit-find.png b/ima/resources/edit-find.png
new file mode 100644
index 0000000..cafc175
Binary files /dev/null and b/ima/resources/edit-find.png differ
diff --git a/ima/resources/error.png b/ima/resources/error.png
deleted file mode 100644
index e4ddd42..0000000
Binary files a/ima/resources/error.png and /dev/null differ
diff --git a/ima/resources/filesave.png b/ima/resources/filesave.png
deleted file mode 100644
index b593aea..0000000
Binary files a/ima/resources/filesave.png and /dev/null differ
diff --git a/ima/resources/folder-add.png b/ima/resources/folder-add.png
new file mode 100644
index 0000000..f6c91ef
Binary files /dev/null and b/ima/resources/folder-add.png differ
diff --git a/ima/resources/fullscreen.png b/ima/resources/fullscreen.png
deleted file mode 100644
index 68e5c0d..0000000
Binary files a/ima/resources/fullscreen.png and /dev/null differ
diff --git a/ima/resources/fullscreen_demo.png b/ima/resources/fullscreen_demo.png
deleted file mode 100644
index 4f34228..0000000
Binary files a/ima/resources/fullscreen_demo.png and /dev/null differ
diff --git a/ima/resources/go-previous.png b/ima/resources/go-previous.png
new file mode 100644
index 0000000..59e1bb2
Binary files /dev/null and b/ima/resources/go-previous.png differ
diff --git a/ima/resources/greenled.png b/ima/resources/greenled.png
deleted file mode 100644
index 0e10788..0000000
Binary files a/ima/resources/greenled.png and /dev/null differ
diff --git a/ima/resources/help-about.png b/ima/resources/help-about.png
new file mode 100644
index 0000000..8085613
Binary files /dev/null and b/ima/resources/help-about.png differ
diff --git a/ima/resources/help.png b/ima/resources/help.png
deleted file mode 100644
index 403c27d..0000000
Binary files a/ima/resources/help.png and /dev/null differ
diff --git a/ima/resources/host_unreachable.png b/ima/resources/host_unreachable.png
deleted file mode 100644
index 6c94fac..0000000
Binary files a/ima/resources/host_unreachable.png and /dev/null differ
diff --git a/ima/resources/info.png b/ima/resources/info.png
deleted file mode 100644
index 8f3a936..0000000
Binary files a/ima/resources/info.png and /dev/null differ
diff --git a/ima/resources/info_22.png b/ima/resources/info_22.png
deleted file mode 100644
index a5607bc..0000000
Binary files a/ima/resources/info_22.png and /dev/null differ
diff --git a/ima/resources/kmag.png b/ima/resources/kmag.png
new file mode 100644
index 0000000..814ac4a
Binary files /dev/null and b/ima/resources/kmag.png differ
diff --git a/ima/resources/kr_unselect.png b/ima/resources/kr_unselect.png
new file mode 100644
index 0000000..1b2a6ac
Binary files /dev/null and b/ima/resources/kr_unselect.png differ
diff --git a/ima/resources/list-add.png b/ima/resources/list-add.png
new file mode 100644
index 0000000..9e2391f
Binary files /dev/null and b/ima/resources/list-add.png differ
diff --git a/ima/resources/list-remove.png b/ima/resources/list-remove.png
new file mode 100644
index 0000000..aafaf5f
Binary files /dev/null and b/ima/resources/list-remove.png differ
diff --git a/ima/resources/locked.png b/ima/resources/locked.png
deleted file mode 100644
index 8ababa1..0000000
Binary files a/ima/resources/locked.png and /dev/null differ
diff --git a/ima/resources/logout.png b/ima/resources/logout.png
deleted file mode 100644
index ee9cd60..0000000
Binary files a/ima/resources/logout.png and /dev/null differ
diff --git a/ima/resources/network.png b/ima/resources/network.png
deleted file mode 100644
index 92f0509..0000000
Binary files a/ima/resources/network.png and /dev/null differ
diff --git a/ima/resources/no_mouse.png b/ima/resources/no_mouse.png
deleted file mode 100644
index 4dbe19e..0000000
Binary files a/ima/resources/no_mouse.png and /dev/null differ
diff --git a/ima/resources/no_user.png b/ima/resources/no_user.png
deleted file mode 100644
index 9056090..0000000
Binary files a/ima/resources/no_user.png and /dev/null differ
diff --git a/ima/resources/overview.png b/ima/resources/overview.png
deleted file mode 100644
index 1424ff6..0000000
Binary files a/ima/resources/overview.png and /dev/null differ
diff --git a/ima/resources/overview_mode.png b/ima/resources/overview_mode.png
deleted file mode 100644
index 87fbd1c..0000000
Binary files a/ima/resources/overview_mode.png and /dev/null differ
diff --git a/ima/resources/power_off.png b/ima/resources/power_off.png
deleted file mode 100644
index 2196355..0000000
Binary files a/ima/resources/power_off.png and /dev/null differ
diff --git a/ima/resources/power_on.png b/ima/resources/power_on.png
deleted file mode 100644
index 0dbfa94..0000000
Binary files a/ima/resources/power_on.png and /dev/null differ
diff --git a/ima/resources/preferences-desktop-display-blue.png b/ima/resources/preferences-desktop-display-blue.png
new file mode 100644
index 0000000..5668baf
Binary files /dev/null and b/ima/resources/preferences-desktop-display-blue.png differ
diff --git a/ima/resources/preferences-desktop-display-gray.png b/ima/resources/preferences-desktop-display-gray.png
new file mode 100644
index 0000000..ac58363
Binary files /dev/null and b/ima/resources/preferences-desktop-display-gray.png differ
diff --git a/ima/resources/preferences-desktop-display-orange.png b/ima/resources/preferences-desktop-display-orange.png
new file mode 100644
index 0000000..2d1f1ea
Binary files /dev/null and b/ima/resources/preferences-desktop-display-orange.png differ
diff --git a/ima/resources/preferences-desktop-display-purple.png b/ima/resources/preferences-desktop-display-purple.png
new file mode 100644
index 0000000..e30457f
Binary files /dev/null and b/ima/resources/preferences-desktop-display-purple.png differ
diff --git a/ima/resources/preferences-desktop-display-red.png b/ima/resources/preferences-desktop-display-red.png
new file mode 100644
index 0000000..c4db932
Binary files /dev/null and b/ima/resources/preferences-desktop-display-red.png differ
diff --git a/ima/resources/preferences-desktop-display.png b/ima/resources/preferences-desktop-display.png
new file mode 100644
index 0000000..af00f34
Binary files /dev/null and b/ima/resources/preferences-desktop-display.png differ
diff --git a/ima/resources/preferences-system-login.png b/ima/resources/preferences-system-login.png
new file mode 100644
index 0000000..97a3694
Binary files /dev/null and b/ima/resources/preferences-system-login.png differ
diff --git a/ima/resources/preferences-system-power-management.png b/ima/resources/preferences-system-power-management.png
new file mode 100644
index 0000000..48f092e
Binary files /dev/null and b/ima/resources/preferences-system-power-management.png differ
diff --git a/ima/resources/presentation-fullscreen.png b/ima/resources/presentation-fullscreen.png
new file mode 100644
index 0000000..110afc6
Binary files /dev/null and b/ima/resources/presentation-fullscreen.png differ
diff --git a/ima/resources/presentation-none.png b/ima/resources/presentation-none.png
new file mode 100644
index 0000000..c4182f0
Binary files /dev/null and b/ima/resources/presentation-none.png differ
diff --git a/ima/resources/presentation-window.png b/ima/resources/presentation-window.png
new file mode 100644
index 0000000..c7d9aa3
Binary files /dev/null and b/ima/resources/presentation-window.png differ
diff --git a/ima/resources/quit.png b/ima/resources/quit.png
deleted file mode 100644
index dd76354..0000000
Binary files a/ima/resources/quit.png and /dev/null differ
diff --git a/ima/resources/reboot.png b/ima/resources/reboot.png
deleted file mode 100644
index d84366b..0000000
Binary files a/ima/resources/reboot.png and /dev/null differ
diff --git a/ima/resources/remote_control.png b/ima/resources/remote_control.png
index 19df791..010ab7c 100644
Binary files a/ima/resources/remote_control.png and b/ima/resources/remote_control.png differ
diff --git a/ima/resources/remote_control_48.png b/ima/resources/remote_control_48.png
index 5365b91..38a3b71 100644
Binary files a/ima/resources/remote_control_48.png and b/ima/resources/remote_control_48.png differ
diff --git a/ima/resources/remotelogon.png b/ima/resources/remotelogon.png
deleted file mode 100644
index f6022cc..0000000
Binary files a/ima/resources/remotelogon.png and /dev/null differ
diff --git a/ima/resources/remotelogon_22.png b/ima/resources/remotelogon_22.png
deleted file mode 100644
index 9dc25b2..0000000
Binary files a/ima/resources/remotelogon_22.png and /dev/null differ
diff --git a/ima/resources/remotelogon_48.png b/ima/resources/remotelogon_48.png
deleted file mode 100644
index 5c387da..0000000
Binary files a/ima/resources/remotelogon_48.png and /dev/null differ
diff --git a/ima/resources/run-build.png b/ima/resources/run-build.png
new file mode 100644
index 0000000..d5bc132
Binary files /dev/null and b/ima/resources/run-build.png differ
diff --git a/ima/resources/run.png b/ima/resources/run.png
deleted file mode 100644
index 0fc52ba..0000000
Binary files a/ima/resources/run.png and /dev/null differ
diff --git a/ima/resources/snapshot.png b/ima/resources/snapshot.png
deleted file mode 100644
index e5250ae..0000000
Binary files a/ima/resources/snapshot.png and /dev/null differ
diff --git a/ima/resources/snapshot_48.png b/ima/resources/snapshot_48.png
deleted file mode 100644
index 8152005..0000000
Binary files a/ima/resources/snapshot_48.png and /dev/null differ
diff --git a/ima/resources/splash.png b/ima/resources/splash.png
index eea8cf6..fce76bb 100644
Binary files a/ima/resources/splash.png and b/ima/resources/splash.png differ
diff --git a/ima/resources/stop.png b/ima/resources/stop.png
deleted file mode 100644
index 32626f0..0000000
Binary files a/ima/resources/stop.png and /dev/null differ
diff --git a/ima/resources/system-lock-screen.png b/ima/resources/system-lock-screen.png
new file mode 100644
index 0000000..8c144b7
Binary files /dev/null and b/ima/resources/system-lock-screen.png differ
diff --git a/ima/resources/system-reboot.png b/ima/resources/system-reboot.png
new file mode 100644
index 0000000..30bb99b
Binary files /dev/null and b/ima/resources/system-reboot.png differ
diff --git a/ima/resources/system-shutdown.png b/ima/resources/system-shutdown.png
new file mode 100644
index 0000000..919dff5
Binary files /dev/null and b/ima/resources/system-shutdown.png differ
diff --git a/ima/resources/system-suspend-hibernate.png b/ima/resources/system-suspend-hibernate.png
new file mode 100644
index 0000000..9030012
Binary files /dev/null and b/ima/resources/system-suspend-hibernate.png differ
diff --git a/ima/resources/text_message.png b/ima/resources/text_message.png
deleted file mode 100644
index f2e1c17..0000000
Binary files a/ima/resources/text_message.png and /dev/null differ
diff --git a/ima/resources/text_message_48.png b/ima/resources/text_message_48.png
deleted file mode 100644
index 5f48da8..0000000
Binary files a/ima/resources/text_message_48.png and /dev/null differ
diff --git a/ima/resources/thinclient.png b/ima/resources/thinclient.png
deleted file mode 100644
index 3e1794b..0000000
Binary files a/ima/resources/thinclient.png and /dev/null differ
diff --git a/ima/resources/toolbar.png b/ima/resources/toolbar.png
deleted file mode 100644
index c15de4e..0000000
Binary files a/ima/resources/toolbar.png and /dev/null differ
diff --git a/ima/resources/tray-menu-bg.png b/ima/resources/tray-menu-bg.png
deleted file mode 100644
index 807108a..0000000
Binary files a/ima/resources/tray-menu-bg.png and /dev/null differ
diff --git a/ima/resources/user-group-new.png b/ima/resources/user-group-new.png
new file mode 100644
index 0000000..f985b05
Binary files /dev/null and b/ima/resources/user-group-new.png differ
diff --git a/ima/resources/userinterface.png b/ima/resources/userinterface.png
deleted file mode 100644
index 973b409..0000000
Binary files a/ima/resources/userinterface.png and /dev/null differ
diff --git a/ima/resources/users.png b/ima/resources/users.png
deleted file mode 100644
index 0154cc7..0000000
Binary files a/ima/resources/users.png and /dev/null differ
diff --git a/ima/resources/users_48.png b/ima/resources/users_48.png
deleted file mode 100644
index 4bd2e35..0000000
Binary files a/ima/resources/users_48.png and /dev/null differ
diff --git a/ima/resources/vcs-locally-modified.png b/ima/resources/vcs-locally-modified.png
new file mode 100644
index 0000000..a7aeae0
Binary files /dev/null and b/ima/resources/vcs-locally-modified.png differ
diff --git a/ima/resources/view-calendar-month.png b/ima/resources/view-calendar-month.png
new file mode 100644
index 0000000..dd45630
Binary files /dev/null and b/ima/resources/view-calendar-month.png differ
diff --git a/ima/resources/view-fullscreen.png b/ima/resources/view-fullscreen.png
new file mode 100644
index 0000000..6fc7cf0
Binary files /dev/null and b/ima/resources/view-fullscreen.png differ
diff --git a/ima/resources/viewmag.png b/ima/resources/viewmag.png
deleted file mode 100644
index d1a6c56..0000000
Binary files a/ima/resources/viewmag.png and /dev/null differ
diff --git a/ima/resources/window-duplicate.png b/ima/resources/window-duplicate.png
new file mode 100644
index 0000000..436088e
Binary files /dev/null and b/ima/resources/window-duplicate.png differ
diff --git a/ima/resources/window.png b/ima/resources/window.png
deleted file mode 100644
index 68e5c0d..0000000
Binary files a/ima/resources/window.png and /dev/null differ
diff --git a/ima/resources/window_demo.png b/ima/resources/window_demo.png
deleted file mode 100644
index 004a519..0000000
Binary files a/ima/resources/window_demo.png and /dev/null differ
diff --git a/ima/resources/zoom-fit-best.png b/ima/resources/zoom-fit-best.png
new file mode 100644
index 0000000..19ae10c
Binary files /dev/null and b/ima/resources/zoom-fit-best.png differ
diff --git a/ima/src/ClassroomManager.cpp b/ima/src/ClassroomManager.cpp
index 2956fa4..98411f2 100644
--- a/ima/src/ClassroomManager.cpp
+++ b/ima/src/ClassroomManager.cpp
@@ -1,7 +1,7 @@
 /*
  * ClassroomManager.cpp - implementation of classroom-manager
  *
- * Copyright (c) 2004-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -28,18 +28,18 @@
 #include <QtCore/QDateTime>
 #include <QtCore/QTextStream>
 #include <QtCore/QTimer>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QCloseEvent>
-#include <QtGui/QFileDialog>
-#include <QtGui/QHeaderView>
-#include <QtGui/QInputDialog>
-#include <QtGui/QLabel>
-#include <QtGui/QMenu>
-#include <QtGui/QMessageBox>
+#include <QButtonGroup>
+#include <QCloseEvent>
+#include <QFileDialog>
+#include <QHeaderView>
+#include <QInputDialog>
+#include <QLabel>
+#include <QMenu>
+#include <QMessageBox>
 #include <QtGui/QPixmap>
-#include <QtGui/QPushButton>
-#include <QtGui/QSplashScreen>
-#include <QtGui/QSplitter>
+#include <QPushButton>
+#include <QSplashScreen>
+#include <QSplitter>
 #include <QtGui/QPainter>
 
 
@@ -51,7 +51,6 @@
 #include "ItalcConfiguration.h"
 #include "LocalSystem.h"
 #include "ToolButton.h"
-#include "DecoratedMessageBox.h"
 
 #define DEFAULT_WINDOW_WIDTH	1005
 #define DEFAULT_WINDOW_HEIGHT	700
@@ -81,7 +80,7 @@ QPixmap * classRoomItem::s_clientObservedPixmap = NULL;
 
 ClassroomManager::ClassroomManager( MainWindow * _main_window,
 							QWidget * _parent ) :
-	SideBarWidget( QPixmap( ":/resources/classroom_manager.png" ),
+	SideBarWidget( QPixmap( ":/resources/applications-education.png" ),
 			tr( "Classroom-Manager" ),
 			tr( "Use this workspace to manage your computers and "
 				"classrooms in an easy way." ),
@@ -115,10 +114,10 @@ ClassroomManager::ClassroomManager( MainWindow * _main_window,
 	m_view->setIconSize( QSize( 22, 22 ) );
 	m_view->header()->resizeSection( m_view->header()->logicalIndex( 0 ),
 									200 );
-	m_view->setSortingEnabled( TRUE );
-	m_view->setRootIsDecorated( TRUE );
+	m_view->setSortingEnabled( true );
+	m_view->setRootIsDecorated( true );
 	m_view->sortItems( 0, Qt::AscendingOrder );
-//	m_view->setShowToolTips( TRUE );
+//	m_view->setShowToolTips( true );
 	m_view->setWindowTitle( tr( "Classroom-Manager" ) );
 	m_view->setContextMenuPolicy( Qt::CustomContextMenu );
 	connect( m_view, SIGNAL( itemDoubleClicked( QTreeWidgetItem *, int ) ),
@@ -140,14 +139,14 @@ ClassroomManager::ClassroomManager( MainWindow * _main_window,
 		tr( "Use the context-menu (right mouse-button) to add/remove "
 			"computers and/or classrooms." ), contentParent() );
 	l->addWidget( help_txt );
-	help_txt->setWordWrap( TRUE );
+	help_txt->setWordWrap( true );
 	help_txt->setFont( f );
 
 	l->addSpacing( 16 );
 
 	m_exportToFileBtn = new QPushButton(
-				QPixmap( ":/resources/filesave.png" ),
-						tr( "Export to text-file" ),
+				QPixmap( ":/resources/document-save.png" ),
+						tr( "Export to text file" ),
 							contentParent() );
 	l->addWidget( m_exportToFileBtn );
 	connect( m_exportToFileBtn, SIGNAL( clicked() ),
@@ -179,7 +178,7 @@ void ClassroomManager::setupMenus()
 {
 	QAction * act;
 	QAction * separator = new QAction( this );
-	separator->setSeparator( TRUE );
+	separator->setSeparator( true );
 
 	/*** quick workspace menu ***/
 
@@ -188,12 +187,12 @@ void ClassroomManager::setupMenus()
 
 /*	m_quickSwitchMenu->addSeparator();
 
-	m_quickSwitchMenu->addAction( QPixmap( ":/resources/adjust_size.png" ),
+	m_quickSwitchMenu->addAction( QPixmap( ":/resources/zoom-fit-best.png" ),
 				tr( "Adjust windows and their size" ),
 						this, SLOT( adjustWindows() ) );
 
 	m_quickSwitchMenu->addAction(
-				QPixmap( ":/resources/auto_arrange.png" ),
+				QPixmap( ":/resources/vcs-locally-modified.png" ),
 				tr( "Auto re-arrange windows" ),
 					this, SLOT( arrangeWindows() ) );*/
 
@@ -201,29 +200,29 @@ void ClassroomManager::setupMenus()
 
 	m_classRoomItemActionGroup = new QActionGroup( this );
 
-	act = m_classRoomItemActionGroup->addAction( 
-			QPixmap( ":/resources/client_show.png" ),
+	act = m_classRoomItemActionGroup->addAction(
+			QPixmap( ":/resources/edit-find.png" ),
 			tr( "Show/hide" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( showHideClient() ) );
 
-	act = m_classRoomItemActionGroup->addAction( 
-			QPixmap( ":/resources/config.png" ),
+	act = m_classRoomItemActionGroup->addAction(
+			QPixmap( ":/resources/document-edit.png" ),
 			tr( "Edit settings" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( editClientSettings() ) );
 
 	act = m_classRoomItemActionGroup->addAction(
-			QPixmap( ":/resources/client_remove.png" ),
+			QPixmap( ":/resources/list-remove.png" ),
 			tr( "Remove" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( removeClient() ) );
 
-	m_classRoomItemActionGroup->addAction( "" )->setSeparator( TRUE );
+	m_classRoomItemActionGroup->addAction( "" )->setSeparator( true );
 
 	/*** actions for single classroom in context Menu ***/
 
 	m_classRoomActionGroup = new QActionGroup( this );
 
 	act = m_classRoomActionGroup->addAction(
-			QPixmap( ":/resources/classroom_show.png" ),
+			QPixmap( ":/resources/edit-find.png" ),
 			tr( "Show all computers in classroom" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( showSelectedClassRooms() ) );
 
@@ -233,40 +232,40 @@ void ClassroomManager::setupMenus()
 	connect( act, SIGNAL( triggered() ), this, SLOT( hideSelectedClassRooms() ) );
 
 	act = m_classRoomActionGroup->addAction(
-			QPixmap( ":/resources/no_user.png" ),
+			QPixmap( ":/resources/preferences-system-login.png" ),
 			tr( "Hide teacher computers" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( hideTeacherClients() ) );
 
 	act = m_classRoomActionGroup->addAction(
-			QPixmap( ":/resources/config.png" ),
+			QPixmap( ":/resources/document-edit.png" ),
 			tr( "Edit name" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( editClassRoomName() ) );
 
 	act = m_classRoomActionGroup->addAction(
-			QPixmap( ":/resources/classroom_remove.png" ),
+			QPixmap( ":/resources/edit-delete.png" ),
 			tr("Remove classroom" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( removeClassRoom() ) );
 
-	m_classRoomActionGroup->addAction( "" )->setSeparator( TRUE );
+	m_classRoomActionGroup->addAction( "" )->setSeparator( true );
 
 	/*** common actions in context menu ***/
 
 	m_contextActionGroup = new QActionGroup( this );
 
 	act = m_contextActionGroup->addAction(
-			QPixmap( ":/resources/client_add.png" ),
+			QPixmap( ":/resources/list-add.png" ),
 			tr( "Add computer" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( addClient() ) );
 
 	act = m_contextActionGroup->addAction(
-			QPixmap( ":/resources/classroom_add.png" ),
+			QPixmap( ":/resources/folder-add.png" ),
 			tr( "Add classroom" ) );
 	connect( act, SIGNAL( triggered() ), this, SLOT( addClassRoom() ) );
 
 	/*** Default client Menu ***/
 
 	m_clientMenu = clientMenu::createDefault( this );
-	
+
 }
 
 
@@ -318,11 +317,11 @@ void ClassroomManager::saveGlobalClientConfig( void )
 	for( int i = 0; i < m_view->topLevelItemCount(); ++i )
 	{
 		saveSettingsOfChildren( doc, root, m_view->topLevelItem( i ),
-									TRUE );
+									true );
 	}
 
 	QString xml = "<?xml version=\"1.0\"?>\n" + doc.toString( 2 );
-/*	if( MainWindow::ensureConfigPathExists() == FALSE )
+/*	if( MainWindow::ensureConfigPathExists() == false )
 	{
 		qFatal( QString( "Could not read/write or create directory %1!"
 					"For running iTALC, make sure you have "
@@ -362,7 +361,7 @@ void ClassroomManager::savePersonalConfig( void )
 	globalsettings.setAttribute( "win-width", mainWindow()->width() );
 	globalsettings.setAttribute( "win-height", mainWindow()->height() );
 	globalsettings.setAttribute( "win-x", mainWindow()->x() );
-	globalsettings.setAttribute( "win-y", mainWindow()->y() );	
+	globalsettings.setAttribute( "win-y", mainWindow()->y() );
 	globalsettings.setAttribute( "ismaximized",
 					mainWindow()->isMaximized() );
 	globalsettings.setAttribute( "opened-tab",
@@ -411,7 +410,7 @@ void ClassroomManager::savePersonalConfig( void )
 	for( int i = 0; i < m_view->topLevelItemCount(); ++i )
 	{
 		saveSettingsOfChildren( doc, root, m_view->topLevelItem( i ),
-									FALSE );
+									false );
 	}
 
 	foreach ( QDomNode node, m_customMenuConfiguration )
@@ -478,11 +477,11 @@ void ClassroomManager::saveSettingsOfChildren( QDomDocument & _doc,
 						c->isVisible() ? "yes" : "no" );
 						client_element.setAttribute(
 			"x", QString::number( c->pos().x() ) );
- 						client_element.setAttribute(
+						client_element.setAttribute(
 			"y", QString::number( c->pos().y() ) );
 						client_element.setAttribute(
 			"w", QString::number( c->width() ) );
- 						client_element.setAttribute(
+						client_element.setAttribute(
 			"h", QString::number( c->height() ) );
 				}
 				classroom.appendChild( client_element );
@@ -595,7 +594,7 @@ mainWindow()->move( node.toElement().attribute( "win-x" ).toInt(),
 			else
 			{
 				setDefaultWindowsSizeAndPosition();
- 			}
+			}
 			if( node.toElement().attribute( "opened-tab" ) !=
 								QString::null )
 			{
@@ -649,7 +648,7 @@ mainWindow()->move( node.toElement().attribute( "win-x" ).toInt(),
 				node.toElement().attribute( "showUserColumn" ).toInt() );
 		}
 		node = node.nextSibling();
-        }
+		}
 }
 
 
@@ -660,10 +659,10 @@ void ClassroomManager::loadTree( classRoom * _parent_item,
 						bool _is_global_config )
 {
 	for( QDomNode node = _parent_element.firstChild();
-						node.isNull() == FALSE;
+						node.isNull() == false;
 						node = node.nextSibling() )
 	{
-		if( node.isElement() == FALSE )
+		if( node.isElement() == false )
 		{
 			continue;
 		}
@@ -706,7 +705,7 @@ void ClassroomManager::loadTree( classRoom * _parent_item,
 				QString nickname = e.attribute( "name" );
 
 				// add new client
-                                Client * c = new Client( hostname,
+								Client * c = new Client( hostname,
 						mac,
 						nickname,
 						(Client::Types)e.attribute(
@@ -761,7 +760,7 @@ void ClassroomManager::loadMenuElement( QDomElement _e )
 		{
 			if ( act->text() == _e.attribute( "hide" ) )
 			{
-				act->setVisible( FALSE );
+				act->setVisible( false );
 			}
 		}
 	}
@@ -769,7 +768,7 @@ void ClassroomManager::loadMenuElement( QDomElement _e )
 	{
 		QString name = _e.attribute( "remote-cmd",
 				_e.attribute( "local-cmd" ) );
-		QString icon = _e.attribute( "icon", ":resources/run.png" );
+		QString icon = _e.attribute( "icon", ":resources/run-build.png" );
 		QString before = _e.attribute( "before" );
 
 		if ( name.isEmpty() )
@@ -834,16 +833,11 @@ void ClassroomManager::loadGlobalClientConfig( void )
 		{
 			splashScreen->close();
 		}
-		DecoratedMessageBox::information(
-					tr( "No configuration-file found" ),
-					tr( "Could not open configuration "
-						"file %1.\nYou will have to "
-						"add at least one classroom "
-						"and computers using the "
-						"classroom-manager which "
-						"you'll find inside the "
-						"program in the sidebar on the "
-						"left side."
+		QMessageBox::information( this, tr( "No configuration file found" ),
+					tr( "Could not open configuration file %1. You will have to "
+						"add at least one classroom and computers using the "
+						"classroom manager which you'll find inside the program "
+						"in the sidebar on the left side."
 					).arg( m_globalClientConfiguration ) );
 		return;
 	}
@@ -856,16 +850,11 @@ void ClassroomManager::loadGlobalClientConfig( void )
 		{
 			splashScreen->close();
 		}
-		DecoratedMessageBox::information(
-					tr( "Error in configuration-file" ),
-					tr( "Error while parsing configuration-"
-						"file %1.\nPlease edit it. "
-						"Otherwise you should delete "
-						"this file and have to add all "
-						"classrooms and computers "
-						"again."
-					).arg( m_globalClientConfiguration ),
-					QPixmap( ":/resources/error.png" ) );
+		QMessageBox::critical( this, tr( "Error in configuration file" ),
+					tr( "Error while parsing configuration file %1. Please fix the "
+						"file manually. Otherwise you should delete the file and "
+						"add all classrooms and computers again." ).
+								  arg( m_globalClientConfiguration ) );
 		cfg_file.close();
 		return;
 	}
@@ -882,7 +871,7 @@ void ClassroomManager::loadGlobalClientConfig( void )
 	{
 		if( node.isElement() && node.nodeName() == "body" )
 		{
-			loadTree( NULL, node.toElement(), TRUE );
+			loadTree( NULL, node.toElement(), true );
 			break;
 		}
 		node = node.nextSibling();
@@ -895,7 +884,7 @@ void ClassroomManager::loadGlobalClientConfig( void )
 void ClassroomManager::setDefaultWindowsSizeAndPosition( void )
 {
 	mainWindow()->resize( DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT );
-	mainWindow()->move( QPoint( 0, 0 ) );	
+	mainWindow()->move( QPoint( 0, 0 ) );
 }
 
 
@@ -926,14 +915,10 @@ void ClassroomManager::loadPersonalConfig( void )
 		{
 			splashScreen->close();
 		}
-		DecoratedMessageBox::information(
-					tr( "Error in configuration-file" ),
-					tr( "Error while parsing configuration-"
-						"file %1.\nPlease edit it. "
-						"Otherwise you should delete "
-						"this file."
-					).arg( m_personalConfiguration ),
-					QPixmap( ":/resources/error.png" ) );
+		QMessageBox::critical( this, tr( "Error in configuration file" ),
+					tr( "Error while parsing configuration file %1. Please fix the "
+						"file manually. Otherwise you should delete the file." ).
+					arg( m_personalConfiguration ) );
 		cfg_file.close();
 		setDefaultWindowsSizeAndPosition();
 		return;
@@ -961,7 +946,7 @@ void ClassroomManager::loadPersonalConfig( void )
 	{
 		if( node.isElement() && node.nodeName() == "body" )
 		{
-			loadTree( NULL, node.toElement(), FALSE );
+			loadTree( NULL, node.toElement(), false );
 			break;
 		}
 		node = node.nextSibling();
@@ -1397,7 +1382,7 @@ void ClassroomManager::contextMenuRequest( const QPoint & _pos )
 		contextMenu->addActions( m_classRoomActionGroup->actions() );
 	}
 	else
-	{ 
+	{
 		/* no items */
 		foreach ( classRoom * cr, m_classRooms )
 		{
@@ -1503,12 +1488,12 @@ void ClassroomManager::showHideClient( void )
 
 	if( si.size() > 0 )
 	{
-		bool all_shown = TRUE;
+		bool all_shown = true;
 		foreach( classRoomItem * cri, si )
 		{
 			if( cri->getClient()->isVisible() )
 			{
-				all_shown = FALSE;
+				all_shown = false;
 				break;
 			}
 		}
@@ -1552,7 +1537,7 @@ void ClassroomManager::removeClient( void )
 		foreach( classRoomItem * cri, si )
 		{
 			cri->getClient()->hide();
-			m_view->setItemHidden( cri, TRUE );
+			m_view->setItemHidden( cri, true );
 			m_clientsToRemove.push_back( cri->getClient() );
 		}
 	}
@@ -1565,7 +1550,7 @@ void ClassroomManager::setStateOfClassRoom( classRoom * _cr, bool _shown )
 {
 	if( _shown )
 	{
-		_cr->setMenuItemIcon( QIcon( ":/resources/greenled.png" ) );
+		_cr->setMenuItemIcon( QIcon( ":/resources/dot-green.png" ) );
 	}
 	else
 	{
@@ -1605,7 +1590,7 @@ void ClassroomManager::showSelectedClassRooms( void )
 	{
 		if( m_view->isItemSelected( cr ) && cr->childCount() )
 		{
-			setStateOfClassRoom( cr, TRUE );
+			setStateOfClassRoom( cr, true );
 		}
 	}
 }
@@ -1619,7 +1604,7 @@ void ClassroomManager::hideSelectedClassRooms( void )
 	{
 		if( m_view->isItemSelected( cr ) && ( cr )->childCount() )
 		{
-			setStateOfClassRoom( cr, FALSE );
+			setStateOfClassRoom( cr, false );
 		}
 	}
 }
@@ -1631,7 +1616,7 @@ void ClassroomManager::hideAllClassRooms( void )
 {
 	foreach( classRoom * cr, m_classRooms )
 	{
-		setStateOfClassRoom( cr, FALSE );
+		setStateOfClassRoom( cr, false );
 	}
 }
 
@@ -1642,7 +1627,7 @@ void ClassroomManager::editClassRoomName( void )
 {
 	foreach( classRoom * cr, m_classRooms )
 	{
-		if( m_view->isItemSelected( cr ) == FALSE )
+		if( m_view->isItemSelected( cr ) == false )
 		{
 			continue;
 		}
@@ -1670,7 +1655,7 @@ void ClassroomManager::removeClassRoom( void )
 {
 	foreach( classRoom * cr, m_classRooms )
 	{
-		if( m_view->isItemSelected( cr ) == FALSE )
+		if( m_view->isItemSelected( cr ) == false )
 		{
 			continue;
 		}
@@ -1694,7 +1679,7 @@ void ClassroomManager::removeClassRoom( void )
 
 void ClassroomManager::removeClassRoom( classRoom * cr )
 {
-		m_view->setItemHidden( cr, TRUE );
+		m_view->setItemHidden( cr, true );
 
 		for ( int i = 0 ; i < cr->childCount(); ++i )
 		{
@@ -1781,7 +1766,7 @@ void ClassroomManager::addClassRoom( void )
 
 			if ( !sel_cr && dynamic_cast<classRoomItem *>( item ) )
 			{
-				sel_cr = dynamic_cast<classRoom *>( 
+				sel_cr = dynamic_cast<classRoom *>(
 					item->parent() );
 			}
 
@@ -1854,7 +1839,7 @@ classTreeWidget::classTreeWidget( QWidget * _parent ) :
 {
 	setDragEnabled( true );
 	setAcceptDrops( true );
-	setDropIndicatorShown( true ); 
+	setDropIndicatorShown( true );
 	setDragDropMode( QAbstractItemView::InternalMove );
 
 	connect( this, SIGNAL( itemSelectionChanged( void ) ),
@@ -1879,7 +1864,7 @@ void classTreeWidget::mousePressEvent( QMouseEvent * _me )
 		if ( ! item->isSelected() )
 		{
 			clearSelection();
-			item->setSelected( TRUE );
+			item->setSelected( true );
 		}
 	}
 
@@ -1891,7 +1876,7 @@ void classTreeWidget::mousePressEvent( QMouseEvent * _me )
 
 void classTreeWidget::mouseMoveEvent( QMouseEvent * _me )
 {
-	if ( m_clientPressed ) 
+	if ( m_clientPressed )
 	{
 		m_clientPressed->zoomBack();
 		m_clientPressed = NULL;
@@ -1905,7 +1890,7 @@ void classTreeWidget::mouseMoveEvent( QMouseEvent * _me )
 
 void classTreeWidget::mouseReleaseEvent( QMouseEvent * _me )
 {
-	if ( m_clientPressed ) 
+	if ( m_clientPressed )
 	{
 		m_clientPressed->zoomBack();
 		m_clientPressed = NULL;
@@ -1919,14 +1904,14 @@ void classTreeWidget::mouseReleaseEvent( QMouseEvent * _me )
 
 bool classTreeWidget::droppingOnItself( QTreeWidgetItem * _target )
 {
-    QList<QTreeWidgetItem *> selected = selectedItems();
-    while ( _target )
-    {
-	    if ( selected.contains( _target ) )
-		    return true;
-	    _target = dynamic_cast<QTreeWidgetItem * >( _target->parent() );
-    }
-    return false;
+	QList<QTreeWidgetItem *> selected = selectedItems();
+	while ( _target )
+	{
+		if ( selected.contains( _target ) )
+			return true;
+		_target = dynamic_cast<QTreeWidgetItem * >( _target->parent() );
+	}
+	return false;
 }
 
 
@@ -1934,7 +1919,7 @@ bool classTreeWidget::droppingOnItself( QTreeWidgetItem * _target )
 
 void classTreeWidget::dragMoveEvent( QDragMoveEvent * _e )
 {
-	if ( _e->source() == this ) 
+	if ( _e->source() == this )
 	{
 		int clients_selected = 0;
 		foreach( QTreeWidgetItem * item, selectedItems() )
@@ -1946,7 +1931,7 @@ void classTreeWidget::dragMoveEvent( QDragMoveEvent * _e )
 		}
 
 		QTreeWidgetItem * target = itemAt( _e->pos() );
-		
+
 		/* Don't drop clients to the root nor
 		 * classroom to its own child */
 		if ( ( clients_selected && ! target ) ||
@@ -1967,9 +1952,9 @@ void classTreeWidget::dragMoveEvent( QDragMoveEvent * _e )
 
 void classTreeWidget::dropEvent( QDropEvent * _e )
 {
-    if ( _e->source() == this &&
-    	dragDropMode() == QAbstractItemView::InternalMove )
-    {
+	if ( _e->source() == this &&
+		dragDropMode() == QAbstractItemView::InternalMove )
+	{
 		QTreeWidgetItem * target = itemAt( _e->pos() );
 
 		/* Use client's parent as target */
@@ -1997,7 +1982,7 @@ void classTreeWidget::dropEvent( QDropEvent * _e )
 					takeTopLevelItem( indexOfTopLevelItem( item ) );
 				}
 
-				if ( target ) 
+				if ( target )
 				{
 					target->addChild( item );
 				}
@@ -2011,7 +1996,7 @@ void classTreeWidget::dropEvent( QDropEvent * _e )
 		setSortingEnabled( sortingEnabled );
 
 		_e->accept();
-    }
+	}
 }
 
 
@@ -2115,7 +2100,7 @@ void classRoom::clientMenuTriggered( QAction * _action )
 void classRoom::switchToClassRoom( void )
 {
 	m_classroomManager->hideAllClassRooms();
-	m_classroomManager->setStateOfClassRoom( this, TRUE );
+	m_classroomManager->setStateOfClassRoom( this, true );
 }
 
 
@@ -2129,18 +2114,18 @@ void classRoom::switchToClassRoom( void )
 
 classRoomItem::classRoomItem( Client * _client, QTreeWidgetItem * _parent ) :
 	QTreeWidgetItem( _parent, QStringList( _client->name() ) ),
-	m_visible( FALSE ),
+	m_visible( false ),
 	m_client( _client )
 {
 	if( s_clientPixmap == NULL )
 	{
-		s_clientPixmap = new QPixmap( ":/resources/client_hidden.png" );
+		s_clientPixmap = new QPixmap( ":/resources/preferences-desktop-display-gray.png" );
 	}
 
 	if( s_clientObservedPixmap == NULL )
 	{
 		s_clientObservedPixmap = new QPixmap(
-					":/resources/client_visible.png" );
+					":/resources/preferences-desktop-display-blue.png" );
 	}
 
 	setFlags( Qt::ItemIsSelectable | Qt::ItemIsDragEnabled |
@@ -2165,7 +2150,7 @@ classRoomItem::~classRoomItem()
 void classRoomItem::setVisible( const bool _obs )
 {
 	m_visible = _obs;
-	if( _obs == FALSE )
+	if( _obs == false )
 	{
 		setIcon( 0, *s_clientPixmap );
 	}
diff --git a/ima/src/ClassroomManager.h b/ima/src/ClassroomManager.h
index e507fdf..50ad510 100644
--- a/ima/src/ClassroomManager.h
+++ b/ima/src/ClassroomManager.h
@@ -28,11 +28,11 @@
 
 #include <QtCore/QString>
 #include <QtCore/QVector>
-#include <QtGui/QDoubleSpinBox>
+#include <QDoubleSpinBox>
 #include <QtGui/QPixmap>
-#include <QtGui/QMenu>
-#include <QtGui/QTreeWidget>
-#include <QtGui/QCheckBox>
+#include <QMenu>
+#include <QTreeWidget>
+#include <QCheckBox>
 #include <QtXml/QtXml>
 
 #include "Client.h"
@@ -200,7 +200,7 @@ private:
 	QVector<classRoomItem *> selectedItems( void );
 	void getSelectedItems( QTreeWidgetItem * _p,
 						QVector<classRoomItem *> & _vv,
-						bool _add_all = FALSE );
+						bool _add_all = false );
 
 	void resizeClients( const int _new_width );
 
diff --git a/ima/src/Client.cpp b/ima/src/Client.cpp
index e3303cb..e5d2055 100644
--- a/ima/src/Client.cpp
+++ b/ima/src/Client.cpp
@@ -2,7 +2,7 @@
  * Client.cpp - code for client-windows, which are displayed in several
  *              instances in the main-window of iTALC
  *
- * Copyright (c) 2004-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -23,13 +23,13 @@
  *
  */
 
-#include <QtGui/QCloseEvent>
+#include <QCloseEvent>
 #include <QtGui/QLinearGradient>
-#include <QtGui/QMenu>
+#include <QMenu>
 #include <QtGui/QPainter>
 #include <QtGui/QPixmap>
-#include <QtGui/QScrollArea>
-#include <QtGui/QMessageBox>
+#include <QScrollArea>
+#include <QMessageBox>
 
 #include "MainWindow.h"
 #include "Client.h"
@@ -41,15 +41,14 @@
 #include "LocalSystem.h"
 #include "Snapshot.h"
 #include "Dialogs.h"
-#include "DecoratedMessageBox.h"
 
 
 
 const QSize DEFAULT_CLIENT_SIZE( 256, 192 );
 const int DECO_WIDTH = 4;
 const int TITLE_HEIGHT = 23;
-const QPoint CONTENT_OFFSET( DECO_WIDTH, DECO_WIDTH + TITLE_HEIGHT ); 
-const QSize CONTENT_SIZE_SUB( 2*DECO_WIDTH, 2*DECO_WIDTH + TITLE_HEIGHT ); 
+const QPoint CONTENT_OFFSET( DECO_WIDTH, DECO_WIDTH + TITLE_HEIGHT );
+const QSize CONTENT_SIZE_SUB( 2*DECO_WIDTH, 2*DECO_WIDTH + TITLE_HEIGHT );
 
 
 // resolve static symbols...
@@ -147,49 +146,49 @@ void ClientAction::process( QVector<Client *> _clients, TargetGroup _target )
 				cl->changeMode( Client::Mode_Overview );
 			}
 			break;
-			
+
 		case FullscreenDemo:
 			foreach( Client * cl, _clients )
 			{
 				cl->changeMode( Client::Mode_FullscreenDemo );
 			}
 			break;
-			
+
 		case WindowDemo:
 			foreach( Client * cl, _clients )
 			{
 				cl->changeMode( Client::Mode_WindowDemo );
 			}
 			break;
-			
+
 		case Locked:
 			foreach( Client * cl, _clients )
 			{
 				cl->changeMode( Client::Mode_Locked );
 			}
 			break;
-			
+
 		case ViewLive:
 			foreach( Client * cl, _clients )
 			{
 				cl->viewLive();
 			}
 			break;
-			
+
 		case RemoteControl:
 			foreach( Client * cl, _clients )
 			{
 				cl->remoteControl();
 			}
 			break;
-			
+
 		case ClientDemo:
 			foreach( Client * cl, _clients )
 			{
 				cl->clientDemo();
 			}
 			break;
-			
+
 		case SendTextMessage:
 			{
 				QString msg;
@@ -197,7 +196,7 @@ void ClientAction::process( QVector<Client *> _clients, TargetGroup _target )
 
 				if( tmd.exec() == QDialog::Accepted &&
 					!msg.isEmpty() )
-				{ 
+				{
 					foreach( Client * cl, _clients )
 					{
 						cl->sendTextMessage( msg );
@@ -349,7 +348,7 @@ bool ClientAction::confirmLogout( TargetGroup _target ) const
 	QString question = ( _target == VisibleClients ?
 		tr( "Are you sure want logout all users on all visible computers ?" ) :
 		tr( "Are you sure want logout all users on all selected computers ?" ) );
-	
+
 	return QMessageBox::question( NULL, tr( "Logout user" ),
 				question, QMessageBox::Yes, QMessageBox::No )
 		== QMessageBox::Yes;
@@ -390,7 +389,7 @@ clientMenu::clientMenu( const QString & _title, const QList<QAction *> _actions,
 			QWidget * _parent, const bool _fullMenu ) :
 	QMenu( _title, _parent )
 {
-	setIcon( scaledIcon( "client.png" ) );
+	setIcon( scaledIcon( "preferences-desktop-display.png" ) );
 
 	foreach ( QAction * action, _actions )
 	{
@@ -411,47 +410,45 @@ QMenu * clientMenu::createDefault( QWidget * _parent )
 	QMenu * menu = new QMenu( _parent );
 
 	menu->addAction( new ClientAction( ClientAction::Overview,
-		scaledIcon( "overview_mode.png" ), tr( "Overview" ), menu ) );
+		scaledIcon( "presentation-none.png" ), tr( "Overview" ), menu ) );
 	menu->addAction( new ClientAction( ClientAction::FullscreenDemo,
-		scaledIcon( "fullscreen_demo.png" ), tr( "Fullscreen demo" ), menu ) );
+		scaledIcon( "presentation-fullscreen.png" ), tr( "Fullscreen demo" ), menu ) );
 	menu->addAction( new ClientAction( ClientAction::WindowDemo,
-		scaledIcon( "window_demo.png" ), tr( "Window demo" ), menu ) );
+		scaledIcon( "presentation-window.png" ), tr( "Window demo" ), menu ) );
 	menu->addAction( new ClientAction(	ClientAction::Locked,
-		scaledIcon( "locked.png" ), tr( "Locked display" ), menu ) );
+		scaledIcon( "system-lock-screen.png" ), tr( "Locked display" ), menu ) );
 	menu->addSeparator();
 
 	menu->addAction( new ClientAction( ClientAction::ViewLive,
-		scaledIcon( "viewmag.png" ), tr( "View live" ), menu,
+		scaledIcon( "kmag.png" ), tr( "View live" ), menu,
 		ClientAction::FullMenu ) );
 	menu->addAction( new ClientAction( ClientAction::RemoteControl,
-		scaledIcon( "remote_control.png" ), tr( "Remote control" ), menu,
+		scaledIcon( "kmag.png" ), tr( "Remote control" ), menu,
 		ClientAction::FullMenu ) );
 	menu->addAction( new ClientAction( ClientAction::ClientDemo,
-		scaledIcon( "client_demo.png" ), tr( "Let student show demo" ), menu,
+		scaledIcon( "preferences-desktop-display-orange.png" ), tr( "Let student show demo" ), menu,
 		ClientAction::FullMenu ) );
 
 	menu->addAction( new ClientAction( ClientAction::SendTextMessage,
-		scaledIcon( "text_message.png" ), tr( "Send text message" ), menu ) );
+		scaledIcon( "dialog-information.png" ), tr( "Send text message" ), menu ) );
 	menu->addSeparator();
 
-/*	menu->addAction( new ClientAction( ClientAction::LogonUser,
-		scaledIcon( "remotelogon.png" ), tr( "Logon user" ), menu ) );*/
 	menu->addAction( new ClientAction( ClientAction::LogoutUser,
-		scaledIcon( "logout.png" ), tr( "Logout user" ), menu ) );
+		scaledIcon( "system-suspend-hibernate.png" ), tr( "Logout user" ), menu ) );
 	menu->addSeparator();
 
 	menu->addAction( new ClientAction( ClientAction::Snapshot,
-		scaledIcon( "snapshot.png" ), tr( "Take a snapshot" ), menu ) );
+		scaledIcon( "camera-photo.png" ), tr( "Take a snapshot" ), menu ) );
 	menu->addSeparator();
 
 	menu->addAction( new ClientAction( ClientAction::PowerOn,
-		scaledIcon( "power_on.png" ), tr( "Power on" ), menu ) );
+		scaledIcon( "preferences-system-power-management.png" ), tr( "Power on" ), menu ) );
 	menu->addAction( new ClientAction( ClientAction::Reboot,
-		scaledIcon( "reboot.png" ), tr( "Reboot" ), menu ) );
+		scaledIcon( "system-reboot.png" ), tr( "Reboot" ), menu ) );
 	menu->addAction( new ClientAction( ClientAction::PowerDown,
-		scaledIcon( "power_off.png" ), tr( "Power down" ), menu ) );
+		scaledIcon( "system-shutdown.png" ), tr( "Power down" ), menu ) );
 	menu->addAction( new ClientAction( ClientAction::ExecCmds,
-		scaledIcon( "run.png" ), tr( "Execute commands" ), menu ) );
+		scaledIcon( "run-build.png" ), tr( "Execute commands" ), menu ) );
 
 	return menu;
 }
@@ -508,7 +505,7 @@ Client::Client( const QString & _hostname,
 	m_connection = new ItalcCoreConnection( m_vncConn );
 
 	setAttribute( Qt::WA_OpaquePaintEvent );
-	setWindowIcon( QPixmap( ":/resources/classroom_manager.png" ) );
+	setWindowIcon( QPixmap( ":/resources/applications-education.png" ) );
 
 /*	setWhatsThis( tr( "This is a client-window. It either displays the "
 				"screen of the according client or a message "
@@ -742,11 +739,11 @@ void Client::hideEvent( QHideEvent * )
 
 void Client::enlarge()
 {
-	if ( m_origSize.isValid() ) 
+	if ( m_origSize.isValid() )
 	{
 		QWidget * workspace = m_mainWindow->workspace();
 		QSize s = QSize( m_origSize );
-		
+
 		s.scale( workspace->parentWidget()->size(),
 							Qt::KeepAspectRatio );
 		setFixedSize( s );
@@ -779,7 +776,7 @@ void Client::zoom()
 void Client::zoomBack()
 {
 	if ( m_origSize.isValid() )
-	{	
+	{
 		move( m_origPos );
 		setFixedSize( m_origSize );
 		/* reset value: */
@@ -878,15 +875,15 @@ void Client::paintEvent( QPaintEvent * _pe )
 	static QImage * img_locked = NULL;
 
 	if( img_unknown == NULL )
-		img_unknown = new QImage( ":/resources/error.png" );
+		img_unknown = new QImage( ":/resources/preferences-desktop-display-gray.png" );
 	if( img_no_user == NULL )
-		img_no_user = new QImage( ":/resources/no_user.png" );
+		img_no_user = new QImage( ":/resources/preferences-system-login.png" );
 	if( img_host_unreachable == NULL )
-		img_host_unreachable = new QImage( ":/resources/host_unreachable.png" );
+		img_host_unreachable = new QImage( ":/resources/preferences-desktop-display-red.png" );
 	if( img_demo == NULL )
-		img_demo = new QImage( ":/resources/window_demo.png" );
+		img_demo = new QImage( ":/resources/preferences-desktop-display-orange.png" );
 	if( img_locked == NULL )
-		img_locked = new QImage( ":/resources/locked.png" );
+		img_locked = new QImage( ":/resources/preferences-desktop-display-purple.png" );
 
 	QPainter p( this );
 	p.setBrush( Qt::white );
@@ -957,7 +954,7 @@ void Client::paintEvent( QPaintEvent * _pe )
 	QSize s( pm->size() );
 	s.scale( aw-10, ah-r.height()-20, Qt::KeepAspectRatio );
 	p.drawImage( ( aw-s.width() ) / 2, height()-ah,
-						FastQImage( *pm ).scaled( s ) );
+						QImage( *pm ).scaled( s ) );
 
 	p.setPen( QColor( 0, 0, 0 ) );
 	p.drawText( QRect( 5, height()-r.height()-10, aw - 10,
@@ -1103,7 +1100,7 @@ void Client::remoteControl()
 
 void Client::sendTextMessage( const QString & _msg )
 {
-	m_connection->displayTextMessage( _msg );
+	m_connection->displayTextMessage( tr( "Message from teacher" ), _msg );
 }
 
 
diff --git a/ima/src/Client.h b/ima/src/Client.h
index ec75094..195a40e 100644
--- a/ima/src/Client.h
+++ b/ima/src/Client.h
@@ -2,7 +2,7 @@
  * Client.h - declaration of class Client which represents a client, shows its
  *            display and allows controlling it in several ways
  *
- * Copyright (c) 2004-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -32,11 +32,9 @@
 #include <QtCore/QThread>
 #include <QtCore/QQueue>
 #include <QtCore/QVector>
-#include <QtGui/QWidget>
+#include <QWidget>
 #include <QtGui/QImage>
-#include <QtGui/QMenu>
-
-#include "FastQImage.h"
+#include <QMenu>
 
 class classRoom;
 class classRoomItem;
@@ -121,10 +119,10 @@ class clientMenu : public QMenu
 {
 	Q_OBJECT
 public:
-	static const bool FullMenu = TRUE;
+	static const bool FullMenu = true;
 
 	clientMenu( const QString & _title, const QList<QAction *> _actions,
-			QWidget * _parent = 0, const bool _fullMenu = FALSE );
+			QWidget * _parent = 0, const bool _fullMenu = false );
 
 	virtual ~clientMenu() {};
 
@@ -134,9 +132,10 @@ public:
 
 
 
-inline QPixmap scaledIcon( const char * _name )
+inline QPixmap scaledIcon( const char* name )
 {
-	return scaled( QString( ":/resources/" ) + _name, 16, 16 );
+	return QPixmap( QString( ":/resources/" ) + name ).
+			scaled( 16, 16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
 }
 
 
diff --git a/ima/src/ConfigWidget.cpp b/ima/src/ConfigWidget.cpp
index 9c63814..d379e02 100644
--- a/ima/src/ConfigWidget.cpp
+++ b/ima/src/ConfigWidget.cpp
@@ -1,7 +1,7 @@
 /*
  * ConfigWidget.cpp - implementation of configuration-widget for side-bar
  *
- * Copyright (c) 2004-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -22,11 +22,11 @@
  *
  */
 
-#include <QtGui/QLabel>
-#include <QtGui/QLayout>
-#include <QtGui/QCheckBox>
-#include <QtGui/QComboBox>
-#include <QtGui/QMessageBox>
+#include <QLabel>
+#include <QLayout>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QMessageBox>
 
 #include "ConfigWidget.h"
 #include "ClassroomManager.h"
@@ -40,7 +40,7 @@
 
 
 ConfigWidget::ConfigWidget( MainWindow * _main_window, QWidget * _parent ) :
-	SideBarWidget( QPixmap( ":/resources/config.png" ),
+	SideBarWidget( QPixmap( ":/resources/adjustrgb.png" ),
 			tr( "Your iTALC-configuration" ),
 			tr( "In this workspace you can customize iTALC to "
 				"fit your needs." ),
@@ -76,13 +76,6 @@ ConfigWidget::ConfigWidget( MainWindow * _main_window, QWidget * _parent ) :
 					activated,
 					setDefaultRole);
 
-	LOAD_AND_CONNECT_PROPERTY(defaultDomain,
-					const QString &,
-					domainEdit,
-					setText,
-					textChanged,
-					setDefaultDomain);
-
 	LOAD_AND_CONNECT_PROPERTY(clientDoubleClickAction,
 					int,
 					clientDoubleClickActionCB,
@@ -124,10 +117,6 @@ ConfigWidget::ConfigWidget( MainWindow * _main_window, QWidget * _parent ) :
 	connect( iconOnlyToolButtons, SIGNAL( toggled( bool ) ),
 			this, SLOT( toggleIconOnlyToolButtons( bool ) ) );
 
-	domainEdit->setText( __default_domain );
-	connect( domainEdit, SIGNAL( textChanged( const QString & ) ),
-			this, SLOT( domainChanged( const QString & ) ) );
-
 	clientDoubleClickActionCB->setCurrentIndex( mainWindow()->
 				getClassroomManager()->clientDblClickAction() );
 	connect( clientDoubleClickActionCB, SIGNAL( activated( int ) ),
diff --git a/ima/src/Dialogs.cpp b/ima/src/Dialogs.cpp
index db1131f..bb884a1 100644
--- a/ima/src/Dialogs.cpp
+++ b/ima/src/Dialogs.cpp
@@ -1,7 +1,7 @@
 /*
  * Dialogs.cpp - implementation of dialogs
  *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -23,12 +23,12 @@
  */
 
 #include <QtCore/QRegExp>
+#include <QMessageBox>
 
 #include "Dialogs.h"
 #include "Client.h"
 #include "ClassroomManager.h"
 #include "MainWindow.h"
-#include "DecoratedMessageBox.h"
 
 #include "ui_ClientSettingsDialog.h"
 #include "ui_TextMessageDialog.h"
@@ -113,11 +113,8 @@ void ClientSettingsDialog::accept()
 {
 	if( ui->hostnameEdit->text().isEmpty() )
 	{
-		DecoratedMessageBox::information(
-			tr( "Missing IP address/hostname" ),
-			tr( "You didn't specify an IP address or hostname for "
-							"the computer!" ),
-					QPixmap( ":/resources/stop.png" ) );
+		QMessageBox::warning( this, tr( "Missing IP address/hostname" ),
+			tr( "You didn't specify an IP address or hostname for the computer!" ) );
 		return;
 	}
 
@@ -126,12 +123,10 @@ void ClientSettingsDialog::accept()
 		QString( ui->macEdit->text().toUpper() + ":" ).
 					indexOf( QRegExp( "^([\\dA-F]{2}:){6}$" ) ) != 0 )
 	{
-		DecoratedMessageBox::information(
-			tr( "Invalid MAC-address" ),
-			tr( "You specified an invalid MAC-address. Either "
-				"leave the field blank or enter a valid MAC-"
-				"address (use \":\" as separator!)." ),
-					QPixmap( ":/resources/stop.png" ) );
+		QMessageBox::warning( this, tr( "Invalid MAC address" ),
+			tr( "You specified an invalid MAC address. Either "
+				"leave the field blank or enter a valid MAC "
+				"address (use \":\" as separator!)." ) );
 		return;
 	}
 
diff --git a/ima/src/Dialogs.h b/ima/src/Dialogs.h
index 8a8fd0b..563567b 100644
--- a/ima/src/Dialogs.h
+++ b/ima/src/Dialogs.h
@@ -25,7 +25,7 @@
 #ifndef DIALOGS_H
 #define DIALOGS_H
 
-#include <QtGui/QDialog>
+#include <QDialog>
 
 namespace Ui
 {
diff --git a/ima/src/MainToolBar.cpp b/ima/src/MainToolBar.cpp
index 95e084e..0f418ae 100644
--- a/ima/src/MainToolBar.cpp
+++ b/ima/src/MainToolBar.cpp
@@ -22,9 +22,9 @@
  */
 
 
-#include <QtGui/QMenu>
+#include <QMenu>
 #include <QtGui/QPainter>
-#include <QtGui/QPaintEvent>
+#include <QPaintEvent>
 
 #include "MainToolBar.h"
 
@@ -54,7 +54,7 @@ void MainToolBar::contextMenuEvent( QContextMenuEvent * _e )
 	foreach( QAction * a, actions() )
 	{
 		QAction * ma = m.addAction( a->text() );
-		ma->setCheckable( TRUE );
+		ma->setCheckable( true );
 		ma->setChecked( a->isVisible() );
 	}
 	connect( &m, SIGNAL( triggered( QAction * ) ),
diff --git a/ima/src/MainToolBar.h b/ima/src/MainToolBar.h
index 235de9e..8babdd5 100644
--- a/ima/src/MainToolBar.h
+++ b/ima/src/MainToolBar.h
@@ -24,7 +24,7 @@
 #ifndef MAIN_TOOL_BAR_H
 #define MAIN_TOOL_BAR_H
 
-#include <QtGui/QToolBar>
+#include <QToolBar>
 
 
 class MainToolBar : public QToolBar
diff --git a/ima/src/MainWindow.cpp b/ima/src/MainWindow.cpp
index 77bd667..41345d8 100644
--- a/ima/src/MainWindow.cpp
+++ b/ima/src/MainWindow.cpp
@@ -1,7 +1,7 @@
 /*
  * MainWindow.cpp - implementation of MainWindow class
  *
- * Copyright (c) 2004-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -27,18 +27,17 @@
 #include <QtCore/QDir>
 #include <QtCore/QDateTime>
 #include <QtCore/QTimer>
-#include <QtGui/QApplication>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QCloseEvent>
-#include <QtGui/QDesktopWidget>
-#include <QtGui/QMenu>
-#include <QtGui/QMenuBar>
-#include <QtGui/QMessageBox>
-#include <QtGui/QScrollArea>
-#include <QtGui/QSplashScreen>
-#include <QtGui/QToolBar>
-#include <QtGui/QToolButton>
-#include <QtGui/QWorkspace>
+#include <QApplication>
+#include <QButtonGroup>
+#include <QCloseEvent>
+#include <QDesktopWidget>
+#include <QMenu>
+#include <QMenuBar>
+#include <QMessageBox>
+#include <QScrollArea>
+#include <QSplashScreen>
+#include <QToolBar>
+#include <QToolButton>
 #include <QtNetwork/QHostAddress>
 
 #include "MainWindow.h"
@@ -65,9 +64,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 	m_systemTrayIcon( this ),
 	m_openedTabInSideBar( 1 ),
 	m_localICA( NULL ),
-	m_rctrlLock(),
 	m_remoteControlWidget( NULL ),
-	m_stopDemo( FALSE ),
 	m_remoteControlScreen( _rctrl_screen > -1 ?
 				qMin( _rctrl_screen,
 					QApplication::desktop()->numScreens() )
@@ -134,7 +131,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 	addToolBar( Qt::TopToolBarArea, m_toolBar );
 
 	ToolButton * scr = new ToolButton(
-			QPixmap( ":/resources/classroom.png" ),
+			QPixmap( ":/resources/applications-education.png" ),
 			tr( "Classroom" ), QString::null,
 			tr( "Switch classroom" ),
 			tr( "Click this button to open a menu where you can "
@@ -149,7 +146,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 
 	QAction * a;
 
-	a = new QAction( QIcon( ":/resources/overview_mode.png" ),
+	a = new QAction( QIcon( ":/resources/presentation-none.png" ),
 						tr( "Overview mode" ), this );
 	m_sysTrayActions << a;
 	ToolButton * overview_mode = new ToolButton(
@@ -162,7 +159,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			this, SLOT( mapOverview() ), m_toolBar );
 
 
-	a = new QAction( QIcon( ":/resources/fullscreen_demo.png" ),
+	a = new QAction( QIcon( ":/resources/presentation-fullscreen.png" ),
 						tr( "Fullscreen demo" ), this );
 	m_sysTrayActions << a;
 	ToolButton * fsdemo_mode = new ToolButton(
@@ -173,7 +170,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 				"devices are locked in this mode." ),
 			this, SLOT( mapFullscreenDemo() ), m_toolBar );
 
-	a = new QAction( QIcon( ":/resources/window_demo.png" ),
+	a = new QAction( QIcon( ":/resources/presentation-window.png" ),
 						tr( "Window demo" ), this );
 	m_sysTrayActions << a;
 	ToolButton * windemo_mode = new ToolButton(
@@ -184,7 +181,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 				"can continue to work." ),
 			this, SLOT( mapWindowDemo() ), m_toolBar );
 
-	a = new QAction( QIcon( ":/resources/locked.png" ),
+	a = new QAction( QIcon( ":/resources/system-lock-screen.png" ),
 					tr( "Lock/unlock desktops" ), this );
 	m_sysTrayActions << a;
 	ToolButton * lock_mode = new ToolButton(
@@ -209,7 +206,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 
 
 
-	a = new QAction( QIcon( ":/resources/text_message.png" ),
+	a = new QAction( QIcon( ":/resources/dialog-information.png" ),
 					tr( "Send text message" ), this );
 //	m_sysTrayActions << a;
 	ToolButton * text_msg = new ToolButton(
@@ -219,7 +216,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			m_classroomManager, SLOT( sendMessage() ), m_toolBar );
 
 
-	a = new QAction( QIcon( ":/resources/power_on.png" ),
+	a = new QAction( QIcon( ":/resources/preferences-system-power-management.png" ),
 					tr( "Power on computers" ), this );
 	m_sysTrayActions << a;
 	ToolButton * power_on = new ToolButton(
@@ -230,7 +227,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			m_classroomManager, SLOT( powerOnClients() ),
 								m_toolBar );
 
-	a = new QAction( QIcon( ":/resources/power_off.png" ),
+	a = new QAction( QIcon( ":/resources/system-shutdown.png" ),
 					tr( "Power down computers" ), this );
 	m_sysTrayActions << a;
 	ToolButton * power_off = new ToolButton(
@@ -241,15 +238,6 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			m_classroomManager,
 					SLOT( powerDownClients() ), m_toolBar );
 
-/*	ToolButton * remotelogon = new ToolButton(
-			QPixmap( ":/resources/remotelogon.png" ),
-			tr( "Logon" ), QString::null,
-			tr( "Remote logon" ),
-			tr( "After clicking this button you can enter a "
-				"username and password to log on the "
-				"according user on all visible computers." ),
-			m_classroomManager, SLOT( remoteLogon() ), m_toolBar );*/
-
 	ToolButton * directsupport = new ToolButton(
 			QPixmap( ":/resources/remote_control.png" ),
 			tr( "Support" ), QString::null,
@@ -260,7 +248,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			m_classroomManager, SLOT( directSupport() ), m_toolBar );
 
 	ToolButton * adjust_size = new ToolButton(
-			QPixmap( ":/resources/adjust_size.png" ),
+			QPixmap( ":/resources/zoom-fit-best.png" ),
 			tr( "Adjust/align" ), QString::null,
 			tr( "Adjust windows and their size" ),
 			tr( "When clicking this button the biggest possible "
@@ -269,7 +257,7 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 			m_classroomManager, SLOT( adjustWindows() ), m_toolBar );
 
 	ToolButton * auto_arrange = new ToolButton(
-			QPixmap( ":/resources/auto_arrange.png" ),
+			QPixmap( ":/resources/vcs-locally-modified.png" ),
 			tr( "Auto view" ), QString::null,
 			tr( "Auto re-arrange windows and their size" ),
 			tr( "When clicking this button all visible windows "
@@ -288,7 +276,6 @@ MainWindow::MainWindow( int _rctrl_screen ) :
 	text_msg->addTo( m_toolBar );
 	power_on->addTo( m_toolBar );
 	power_off->addTo( m_toolBar );
-	//remotelogon->addTo( m_toolBar );
 	directsupport->addTo( m_toolBar );
 	adjust_size->addTo( m_toolBar );
 	auto_arrange->addTo( m_toolBar );
@@ -484,7 +471,7 @@ void MainWindow::handleSystemTrayEvent( QSystemTrayIcon::ActivationReason _r )
 			m.addSeparator();
 
 			QAction * qa = m.addAction(
-					QIcon( ":/resources/quit.png" ),
+					QIcon( ":/resources/application-exit.png" ),
 					tr( "Quit" ) );
 			connect( qa, SIGNAL( triggered( bool ) ),
 					this, SLOT( close() ) );
@@ -509,41 +496,38 @@ void MainWindow::remoteControlClient( QAction * _a )
 
 
 
-void MainWindow::remoteControlDisplay( const QString & _hostname,
-						bool _view_only,
-						bool _stop_demo_afterwards )
+void MainWindow::remoteControlDisplay( const QString& hostname,
+										bool viewOnly,
+										bool stopDemoAfterwards )
 {
-	QWriteLocker wl( &m_rctrlLock );
 	if( m_remoteControlWidget )
 	{
 		return;
 	}
-	m_remoteControlWidget = new RemoteControlWidget( _hostname, _view_only );
+
+	m_remoteControlWidget = new RemoteControlWidget( hostname, viewOnly );
+
+	// determine screen offset where to show the remote control window
 	int x = 0;
 	for( int i = 0; i < m_remoteControlScreen; ++i )
 	{
 		x += QApplication::desktop()->screenGeometry( i ).width();
 	}
 	m_remoteControlWidget->move( x, 0 );
-	m_stopDemo = _stop_demo_afterwards;
-	connect( m_remoteControlWidget, SIGNAL( destroyed( QObject * ) ),
-			this, SLOT( remoteControlWidgetClosed( QObject * ) ) );
+
+	if( stopDemoAfterwards )
+	{
+		connect( m_remoteControlWidget, SIGNAL( objectDestroyed( QObject* ) ),
+				this, SLOT( stopDemoAfterRemoteControl() ) );
+	}
 }
 
 
 
 
-void MainWindow::remoteControlWidgetClosed( QObject * )
+void MainWindow::stopDemoAfterRemoteControl()
 {
-	m_rctrlLock.lockForWrite();
-	m_remoteControlWidget = NULL;
-	m_rctrlLock.unlock();
-	if( m_stopDemo )
-	{
-		m_classroomManager->changeGlobalClientMode(
-							Client::Mode_Overview );
-		m_stopDemo = FALSE;
-	}
+	m_classroomManager->changeGlobalClientMode( Client::Mode_Overview );
 }
 
 
diff --git a/ima/src/MainWindow.h b/ima/src/MainWindow.h
index 26fdbd7..f63950c 100644
--- a/ima/src/MainWindow.h
+++ b/ima/src/MainWindow.h
@@ -1,7 +1,7 @@
 /*
- * MainWindow.h - main-window of iTALC
+ * MainWindow.h - main window of iTALC Master Application
  *
- * Copyright (c) 2004-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,12 +25,12 @@
 #ifndef MAIN_WINDOW_H
 #define MAIN_WINDOW_H
 
-#include <QtCore/QReadWriteLock>
 #include <QtCore/QThread>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QMainWindow>
-#include <QtGui/QSystemTrayIcon>
-#include <QtGui/QToolButton>
+#include <QPointer>
+#include <QButtonGroup>
+#include <QMainWindow>
+#include <QSystemTrayIcon>
+#include <QToolButton>
 
 #include "ui_MainWindow.h"
 
@@ -125,7 +125,7 @@ public:
 						m_modeGroup->button( _id ) );
 		if( btn != NULL )
 		{
-			btn->setChecked( TRUE );
+			btn->setChecked( true );
 		}
 	}
 
@@ -139,15 +139,10 @@ public:
 		return m_sideBar;
 	}
 
-	void remoteControlDisplay( const QString & _hostname,
-					bool _view_only = FALSE,
-					bool _stop_demo_afterwards = FALSE );
+	void remoteControlDisplay( const QString& hostname,
+								bool viewOnly = false,
+								bool stopDemoAfterwards = false );
 
-	inline bool remoteControlRunning( void )
-	{
-		QReadLocker rl( &m_rctrlLock );
-		return( m_remoteControlWidget != NULL );
-	}
 
 protected:
 	void keyPressEvent( QKeyEvent *e );
@@ -156,7 +151,7 @@ protected:
 private slots:
 	void handleSystemTrayEvent( QSystemTrayIcon::ActivationReason _r );
 	void remoteControlClient( QAction * _c );
-	void remoteControlWidgetClosed( QObject * );
+	void stopDemoAfterRemoteControl();
 
 	void aboutITALC( void );
 
@@ -197,9 +192,7 @@ private:
 
 	ItalcCoreConnection * m_localICA;
 
-	QReadWriteLock m_rctrlLock;
-	RemoteControlWidget * m_remoteControlWidget;
-	bool m_stopDemo;
+	QPointer<RemoteControlWidget> m_remoteControlWidget;
 	int m_remoteControlScreen;
 
 	OverviewWidget * m_overviewWidget;
diff --git a/ima/src/OverviewWidget.cpp b/ima/src/OverviewWidget.cpp
index 6c68514..6423c2a 100644
--- a/ima/src/OverviewWidget.cpp
+++ b/ima/src/OverviewWidget.cpp
@@ -22,9 +22,9 @@
  *
  */
 
-#include <QtGui/QLabel>
-#include <QtGui/QLayout>
-#include <QtGui/QPushButton>
+#include <QLabel>
+#include <QLayout>
+#include <QPushButton>
 
 #include "OverviewWidget.h"
 #include "MainWindow.h"
@@ -32,7 +32,7 @@
 
 
 OverviewWidget::OverviewWidget( MainWindow * _main_window, QWidget * _parent ) :
-	SideBarWidget( QPixmap( ":/resources/overview.png" ),
+	SideBarWidget( QPixmap( ":/resources/view-calendar-month.png" ),
 			tr( "Overview" ),
 			tr( "Some basic information on iTALC and how to use "
 				"it." ), _main_window, _parent )
diff --git a/ima/src/RemoteControlWidget.cpp b/ima/src/RemoteControlWidget.cpp
index 2ca5072..0db653d 100644
--- a/ima/src/RemoteControlWidget.cpp
+++ b/ima/src/RemoteControlWidget.cpp
@@ -1,7 +1,7 @@
 /*
  *  RemoteControlWidget.cpp - widget containing a VNC-view and controls for it
  *
- *  Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ *  Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  *  This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -32,9 +32,9 @@
 
 #include <QtCore/QTimer>
 #include <QtGui/QBitmap>
-#include <QtGui/QLayout>
+#include <QLayout>
 #include <QtGui/QPainter>
-#include <QtGui/QPaintEvent>
+#include <QPaintEvent>
 
 
 
@@ -46,9 +46,8 @@ RemoteControlWidgetToolBar::RemoteControlWidgetToolBar(
 	m_showHideTimeLine(),
 	m_iconStateTimeLine(),
 	m_connecting( false ),
-	m_icon( FastQImage( QImage( ":/resources/icon64.png" ) ).
-					scaled( QSize( 48, 48 ) ) ),
-	m_iconGray( FastQImage( m_icon ).toGray().darken( 50 ) )
+	m_icon( QPixmap( ":/resources/icon128.png" ).scaled( QSize( 48, 48 ),
+					Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) )
 {
 	QPalette pal = palette();
 	pal.setBrush( QPalette::Window, QPixmap( ":/resources/toolbar-background.png" ) );
@@ -60,27 +59,27 @@ RemoteControlWidgetToolBar::RemoteControlWidgetToolBar(
 	startConnection();
 
 	ToolButton * vo_btn = new ToolButton(
-				QPixmap( ":/resources/overview_mode.png" ),
+				QPixmap( ":/resources/kmag.png" ),
 				tr( "View only" ), tr( "Remote control" ),
 				QString::null, QString::null, 0, 0,
 				this );
 	ToolButton * ls_btn = new ToolButton(
-				QPixmap( ":/resources/no_mouse.png" ),
+				QPixmap( ":/resources/kr_unselect.png" ),
 				tr( "Lock student" ), tr( "Unlock student" ),
 				QString::null, QString::null, 0, 0,
 				this );
 	ToolButton * ss_btn = new ToolButton(
-				QPixmap( ":/resources/snapshot.png" ),
+				QPixmap( ":/resources/camera-photo.png" ),
 				tr( "Snapshot" ), QString::null,
 				QString::null, QString::null, 0, 0,
 				this );
 	ToolButton * fs_btn = new ToolButton(
-				QPixmap( ":/resources/fullscreen.png" ),
+				QPixmap( ":/resources/view-fullscreen.png" ),
 				tr( "Fullscreen" ), tr( "Window" ),
 				QString::null, QString::null, 0, 0,
 				this );
 	ToolButton * quit_btn = new ToolButton(
-				QPixmap( ":/resources/quit.png" ),
+				QPixmap( ":/resources/application-exit.png" ),
 				tr( "Quit" ), QString::null,
 				QString::null, QString::null, 0, 0,
 				this );
@@ -187,7 +186,7 @@ void RemoteControlWidgetToolBar::paintEvent( QPaintEvent *paintEv )
 	p.fillRect( paintEv->rect(), palette().brush( QPalette::Window ) );
 	p.setOpacity( 1 );
 
-	p.drawImage( 5, 2, m_icon );
+	p.drawPixmap( 5, 2, m_icon );
 
 	f.setPointSize( 12 );
 	f.setBold( true );
@@ -203,11 +202,6 @@ void RemoteControlWidgetToolBar::paintEvent( QPaintEvent *paintEv )
 
 	if( m_connecting )
 	{
-		FastQImage tmp = m_iconGray;
-		tmp.alphaFillMax( (int)( 120 - 120.0 *
-				m_iconStateTimeLine.currentValue() ) );
-		p.drawImage( 5, 2, tmp );
-
 		QString dots;
 		for( int i = 0; i < ( m_iconStateTimeLine.currentTime() / 120 ) % 6; ++i )
 		{
@@ -284,7 +278,7 @@ RemoteControlWidget::RemoteControlWidget( const QString &host,
 	m_toolBar( new RemoteControlWidgetToolBar( this, viewOnly ) ),
 	m_host( host )
 {
-	setWindowIcon( QPixmap( ":/resources/remote_control.png" ) );
+	setWindowIcon( QPixmap( ":/resources/kmag.png" ) );
 	setAttribute( Qt::WA_DeleteOnClose, true );
 
 	m_vncView->move( 0, 0 );
diff --git a/ima/src/RemoteControlWidget.h b/ima/src/RemoteControlWidget.h
index 781c729..c656416 100644
--- a/ima/src/RemoteControlWidget.h
+++ b/ima/src/RemoteControlWidget.h
@@ -1,7 +1,7 @@
 /*
  *  RemoteControlWidget.h - widget containing a VNC-view and controls for it
  *
- *  Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ *  Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  *  This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,9 +25,7 @@
 #define REMOTE_CONTROL_WIDGET_H
 
 #include <QtCore/QTimeLine>
-#include <QtGui/QWidget>
-
-#include "FastQImage.h"
+#include <QWidget>
 
 class VncView;
 class ItalcCoreConnection;
@@ -66,8 +64,7 @@ private:
 	QTimeLine m_iconStateTimeLine;
 
 	bool m_connecting;
-	QImage m_icon;
-	FastQImage m_iconGray;
+	QPixmap m_icon;
 
 } ;
 
diff --git a/ima/src/RunCommandsDialog.h b/ima/src/RunCommandsDialog.h
index d77138d..4a51095 100644
--- a/ima/src/RunCommandsDialog.h
+++ b/ima/src/RunCommandsDialog.h
@@ -23,7 +23,7 @@
 #ifndef RUN_COMMANDS_DIALOG_H
 #define RUN_COMMANDS_DIALOG_H
 
-#include <QtGui/QDialog>
+#include <QDialog>
 
 namespace Ui { class RunCommandsDialog; }
 
diff --git a/ima/src/SideBar.cpp b/ima/src/SideBar.cpp
index 357f0be..12ea860 100644
--- a/ima/src/SideBar.cpp
+++ b/ima/src/SideBar.cpp
@@ -24,10 +24,10 @@
  */
 
 #include <QtGui/QContextMenuEvent>
-#include <QtGui/QMenu>
+#include <QMenu>
 #include <QtGui/QPainter>
-#include <QtGui/QPaintEvent>
-#include <QtGui/QToolButton>
+#include <QPaintEvent>
+#include <QToolButton>
 
 #include "SideBar.h"
 #include "SideBarWidget.h"
diff --git a/ima/src/SideBar.h b/ima/src/SideBar.h
index 5bdc19f..0d136a5 100644
--- a/ima/src/SideBar.h
+++ b/ima/src/SideBar.h
@@ -27,8 +27,8 @@
 #define SIDE_BAR_H
 
 #include <QtCore/QMap>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QToolBar>
+#include <QButtonGroup>
+#include <QToolBar>
 
 class QToolButton;
 class SideBarWidget;
diff --git a/ima/src/SideBarWidget.cpp b/ima/src/SideBarWidget.cpp
index d1b26d3..71552d6 100644
--- a/ima/src/SideBarWidget.cpp
+++ b/ima/src/SideBarWidget.cpp
@@ -1,7 +1,7 @@
 /*
  * SideBarWidget.cpp - implementation of SideBarWidget
  *
- * Copyright (c) 2004-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -27,21 +27,20 @@
 #include <QtGui/QPixmap>
 #include <QtGui/QResizeEvent>
 #include <QtGui/QPaintEvent>
-#include <QtGui/QLayout>
+#include <QLayout>
 
 
 #include "SideBarWidget.h"
-#include "FastQImage.h"
 
 
 
-SideBarWidget::SideBarWidget( const QPixmap & _icon,
+SideBarWidget::SideBarWidget( const QPixmap& icon,
 				const QString & _title,
 				const QString & _description,
 				MainWindow * _main_window, QWidget * _parent ) :
 	QWidget( _parent ),
 	m_mainWindow( _main_window ),
-	m_icon( _icon ),
+	m_icon( icon ),
 	m_title( _title ),
 	m_description( _description )
 {
@@ -93,7 +92,7 @@ void SideBarWidget::paintEvent( QPaintEvent * )
 	p.drawText( tx, ty, m_title );
 	p.drawLine( tx, ty + 4, width() - 4, ty + 4 );
 
-	p.drawImage( 2, 2, FastQImage( m_icon ).scaled( 48, 48 ) );
+	p.drawPixmap( 2, 2, m_icon.scaled( 48, 48, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
 }
 
 
diff --git a/ima/src/SideBarWidget.h b/ima/src/SideBarWidget.h
index 2cb0b17..3aa9b39 100644
--- a/ima/src/SideBarWidget.h
+++ b/ima/src/SideBarWidget.h
@@ -25,7 +25,7 @@
 #ifndef SIDE_BAR_WIDGET_H
 #define SIDE_BAR_WIDGET_H
 
-#include <QtGui/QWidget>
+#include <QWidget>
 #include <QtGui/QPixmap>
 
 
@@ -35,29 +35,29 @@ class MainWindow;
 class SideBarWidget : public QWidget
 {
 public:
-	SideBarWidget( const QPixmap & _icon, const QString & _title,
+	SideBarWidget( const QPixmap& icon, const QString & _title,
 			const QString & _description,
 				MainWindow * _main_window, QWidget * _parent );
 	virtual ~SideBarWidget();
 
-	inline const QPixmap & icon( void ) const
+	inline const QPixmap& icon() const
 	{
 		return m_icon;
 	}
 
-	inline const QString & title( void ) const
+	inline const QString & title() const
 	{
 		return m_title;
 	}
 
-	inline const QString & description( void ) const
+	inline const QString & description() const
 	{
 		return m_description;
 	}
 
 
 protected:
-	virtual void paintEvent( QPaintEvent * _pe );
+	virtual void paintEvent( QPaintEvent* event );
 
 	inline QWidget * contentParent()
 	{
@@ -71,8 +71,8 @@ protected:
 
 
 private:
-	MainWindow * m_mainWindow;
-	QWidget * m_contents;
+	MainWindow *m_mainWindow;
+	QWidget *m_contents;
 	QPixmap m_icon;
 	QString m_title;
 	QString m_description;
diff --git a/ima/src/SnapshotList.cpp b/ima/src/SnapshotList.cpp
index ea61401..2d22f40 100644
--- a/ima/src/SnapshotList.cpp
+++ b/ima/src/SnapshotList.cpp
@@ -1,7 +1,7 @@
 /*
- * snapshot_list.cpp - implementation of snapshot-list for side-bar
+ * SnapshotList.cpp - implementation of snapshot-list for side-bar
  *
- * Copyright (c) 2004-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -24,8 +24,8 @@
 
 #include <QtCore/QDir>
 #include <QtCore/QDate>
-#include <QtGui/QFileSystemModel>
-#include <QtGui/QScrollArea>
+#include <QFileSystemModel>
+#include <QScrollArea>
 
 #include "SnapshotList.h"
 #include "ItalcConfiguration.h"
@@ -37,7 +37,7 @@
 
 
 SnapshotList::SnapshotList( MainWindow *mainWindow, QWidget *parent ) :
-	SideBarWidget( QPixmap( ":/resources/snapshot.png" ),
+	SideBarWidget( QPixmap( ":/resources/camera-photo.png" ),
 			tr( "Snapshots" ),
 			tr( "Simply manage the snapshots you made using this workspace." ),
 			mainWindow, parent ),
diff --git a/ima/src/SnapshotList.h b/ima/src/SnapshotList.h
index 778ef0e..2688605 100644
--- a/ima/src/SnapshotList.h
+++ b/ima/src/SnapshotList.h
@@ -26,7 +26,7 @@
 #ifndef SNAPSHOT_LIST_H
 #define SNAPSHOT_LIST_H
 
-#include <QtGui/QWidget>
+#include <QWidget>
 
 #include "SideBarWidget.h"
 
diff --git a/ima/src/ToolButton.cpp b/ima/src/ToolButton.cpp
index e50a9f5..25f0bec 100644
--- a/ima/src/ToolButton.cpp
+++ b/ima/src/ToolButton.cpp
@@ -1,7 +1,7 @@
 /*
  * ToolButton.cpp - implementation of iTALC-tool-button
  *
- * Copyright (c) 2006-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users.sourceforge.net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -24,15 +24,15 @@
  
 
 #include <QtCore/QTimer>
-#include <QtGui/QAction>
-#include <QtGui/QApplication>
+#include <QAction>
+#include <QApplication>
 #include <QtGui/QBitmap>
-#include <QtGui/QDesktopWidget>
-#include <QtGui/QLabel>
-#include <QtGui/QLayout>
+#include <QDesktopWidget>
+#include <QLabel>
+#include <QLayout>
 #include <QtGui/QLinearGradient>
 #include <QtGui/QPainter>
-#include <QtGui/QToolBar>
+#include <QToolBar>
 
 #include "ToolButton.h"
 
@@ -41,19 +41,19 @@ const int MARGIN = 10;
 const int ROUNDED = 2000;
 
 #ifndef ITALC3
-bool ToolButton::s_toolTipsDisabled = FALSE;
-bool ToolButton::s_iconOnlyMode = FALSE;
+bool ToolButton::s_toolTipsDisabled = false;
+bool ToolButton::s_iconOnlyMode = false;
 #endif
 
 
-ToolButton::ToolButton( const QPixmap & _pixmap, const QString & _label,
+ToolButton::ToolButton( const QPixmap& pixmap, const QString & _label,
 				const QString & _alt_label,
 				const QString & _title, 
 				const QString & _desc, QObject * _receiver, 
 				const char * _slot, QWidget * _parent ) :
 	QToolButton( _parent ),
-	m_pixmap( _pixmap ),
-	m_img( FastQImage( _pixmap.toImage() ).scaled( 32, 32 ) ),
+	m_pixmap( pixmap ),
+	m_smallPixmap( pixmap.scaled( 32, 32, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ),
 	m_mouseOver( false ),
 	m_label( _label ),
 	m_altLabel( _alt_label ),
@@ -74,17 +74,17 @@ ToolButton::ToolButton( const QPixmap & _pixmap, const QString & _label,
 
 
 
-ToolButton::ToolButton( QAction * _a, const QString & _label,
+ToolButton::ToolButton( QAction* a, const QString& label,
 				const QString & _alt_label,
 				const QString & _desc, QObject * _receiver, 
 				const char * _slot, QWidget * _parent ) :
 	QToolButton( _parent ),
-	m_pixmap( _a->icon().pixmap( 128, 128 ) ),
-	m_img( FastQImage( m_pixmap.toImage() ).scaled( 32, 32 ) ),
+	m_pixmap( a->icon().pixmap( 128, 128 ) ),
+	m_smallPixmap( a->icon().pixmap( 32, 32 ) ),
 	m_mouseOver( false ),
-	m_label( _label ),
+	m_label( label ),
 	m_altLabel( _alt_label ),
-	m_title( _a->text() ),
+	m_title( a->text() ),
 	m_descr( _desc )
 {
 	setAttribute( Qt::WA_NoSystemBackground, true );
@@ -94,7 +94,7 @@ ToolButton::ToolButton( QAction * _a, const QString & _label,
 	if( _receiver != NULL && _slot != NULL )
 	{
 		connect( this, SIGNAL( clicked() ), _receiver, _slot );
-		connect( _a, SIGNAL( triggered( bool ) ), _receiver, _slot );
+		connect( a, SIGNAL( triggered( bool ) ), _receiver, _slot );
 	}
 
 }
@@ -241,16 +241,16 @@ void ToolButton::paintEvent( QPaintEvent * _pe )
 	painter.drawRoundedRect( 0, 0, width(), height(), 5, 5 );
 
 	const int dd = active ? 1 : 0;
-	QPoint pt = QPoint( ( width() - m_img.width() ) / 2 + dd, 3 + dd );
+	QPoint pt = QPoint( ( width() - m_smallPixmap.width() ) / 2 + dd, 3 + dd );
 	if( s_iconOnlyMode )
 	{
-		pt.setY( ( height() - m_img.height() ) / 2 - 1 + dd );
+		pt.setY( ( height() - m_smallPixmap.height() ) / 2 - 1 + dd );
 	}
-	painter.drawImage( pt, m_img );
+	painter.drawPixmap( pt, m_smallPixmap );
 
 	if( s_iconOnlyMode == false )
 	{
-		const QString l = ( active && m_altLabel.isEmpty() == FALSE ) ?
+		const QString l = ( active && m_altLabel.isEmpty() == false ) ?
 								m_altLabel : m_label;
 		const int w = painter.fontMetrics().width( l );
 		painter.setPen( Qt::black );
@@ -289,17 +289,17 @@ void ToolButton::updateSize()
 	f.setPointSizeF( 8 );
 	setFont( f );
 
+	QFontMetrics metrics( f );
+
+	int minWidth = ( ( ( qMax( metrics.width( m_label ), metrics.width( m_altLabel ) ) + MARGIN ) / 8 + 1 ) * 8 );
+
 	if( s_iconOnlyMode )
 	{
 		setFixedSize( 52, 48 );
 	}
-	else if( m_label.size() > 14 || m_altLabel.size() > 14 )
-	{
-		setFixedSize( 96, 48 );
-	}
 	else
 	{
-		setFixedSize( 88, 48 );
+		setFixedSize( qMax( minWidth, 88 ), 48 );
 	}
 }
 
@@ -309,17 +309,17 @@ void ToolButton::updateSize()
 
 
 
-ToolButtonTip::ToolButtonTip( const QPixmap & _pixmap, const QString & _title,
+ToolButtonTip::ToolButtonTip( const QPixmap& pixmap, const QString &title,
 				const QString & _description,
 				QWidget * _parent, QWidget * _tool_btn ) :
 	QWidget( _parent, Qt::ToolTip ),
-	m_icon( FastQImage( _pixmap ).scaled( 72, 72 ) ),
-	m_title( _title ),
+	m_icon( pixmap.scaled( 72, 72, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ),
+	m_title( title ),
 	m_description( _description ),
 	m_toolButton( _tool_btn )
 {
-	setAttribute( Qt::WA_DeleteOnClose, TRUE );
-	setAttribute( Qt::WA_NoSystemBackground, TRUE );
+	setAttribute( Qt::WA_DeleteOnClose, true );
+	setAttribute( Qt::WA_NoSystemBackground, true );
 
 	resize( sizeHint() );
 	updateMask();
@@ -331,7 +331,7 @@ ToolButtonTip::ToolButtonTip( const QPixmap & _pixmap, const QString & _title,
 QSize ToolButtonTip::sizeHint( void ) const
 {
 	QFont f = font();
-	f.setBold( TRUE );
+	f.setBold( true );
 	int title_w = QFontMetrics( f ).width( m_title );
 	QRect desc_rect = fontMetrics().boundingRect( QRect( 0, 0, 250, 100 ),
 					Qt::TextWordWrap, m_description );
@@ -380,11 +380,11 @@ void ToolButtonTip::resizeEvent( QResizeEvent * _re )
 		QPoint pt = m_toolButton->mapToGlobal( QPoint( 0, 0 ) );
 		p.setPen( color_top );
 		p.setBrush( color_top );
-		p.setRenderHint( QPainter::Antialiasing, FALSE );
+		p.setRenderHint( QPainter::Antialiasing, false );
 		p.drawLine( pt.x() - x(), 0,
 				pt.x() + m_toolButton->width() - x() - 2, 0 );
 		const int dx = pt.x() - x();
-		p.setRenderHint( QPainter::Antialiasing, TRUE );
+		p.setRenderHint( QPainter::Antialiasing, true );
 		if( dx < 10 && dx >= 0 )
 		{
 			p.setPen( pen );
@@ -394,15 +394,15 @@ void ToolButtonTip::resizeEvent( QResizeEvent * _re )
 	}
 	p.setPen( Qt::black );
 
-	p.drawImage( MARGIN, MARGIN, m_icon );
+	p.drawPixmap( MARGIN, MARGIN, m_icon );
 	QFont f = p.font();
-	f.setBold( TRUE );
+	f.setBold( true );
 	p.setFont( f );
 	const int title_x = MARGIN + m_icon.width() + MARGIN;
 	const int title_y = MARGIN + fontMetrics().height() - 2;
 	p.drawText( title_x, title_y, m_title );
 
-	f.setBold( FALSE );
+	f.setBold( false );
 	p.setFont( f );
 	p.drawText( QRect( title_x, title_y + MARGIN,
 					width() - MARGIN - title_x,
diff --git a/ima/src/ToolButton.h b/ima/src/ToolButton.h
index b631bc9..21cfcc9 100644
--- a/ima/src/ToolButton.h
+++ b/ima/src/ToolButton.h
@@ -1,7 +1,7 @@
 /*
  * ToolButton.h - declaration of class ToolButton
  *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users.sourceforge.net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users.sourceforge.net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,9 +25,7 @@
 #ifndef TOOL_BUTTON_H
 #define TOOL_BUTTON_H
 
-#include <QtGui/QToolButton>
-
-#include "FastQImage.h"
+#include <QToolButton>
 
 
 class QToolBar;
@@ -96,7 +94,7 @@ private:
 #endif
 
 	QPixmap m_pixmap;
-	FastQImage m_img;
+	QPixmap m_smallPixmap;
 	bool m_mouseOver;
 
 	QString m_label;
@@ -127,7 +125,7 @@ protected:
 private:
 	void updateMask( void );
 
-	QImage m_icon;
+	QPixmap m_icon;
 	QString m_title;
 	QString m_description;
 
diff --git a/ima/src/main.cpp b/ima/src/main.cpp
index d4c63db..2401f80 100644
--- a/ima/src/main.cpp
+++ b/ima/src/main.cpp
@@ -1,7 +1,7 @@
 /*
  * main.cpp - main-file for iTALC Master Application
  *
- * Copyright (c) 2004-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2004-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -24,8 +24,8 @@
 
 
 #include <QtCore/QModelIndex>
-#include <QtGui/QApplication>
-#include <QtGui/QSplashScreen>
+#include <QApplication>
+#include <QSplashScreen>
 
 #ifdef ITALC3
 #include "MasterCore.h"
@@ -38,7 +38,6 @@
 #include "RemoteControlWidget.h"
 
 
-
 QSplashScreen * splashScreen = NULL;
 
 #ifndef ITALC3
@@ -49,6 +48,8 @@ QString __default_domain;
 // good old main-function... initializes qt-app and starts iTALC
 int main( int argc, char * * argv )
 {
+	ItalcCore::setupApplicationParameters();
+
 	QApplication app( argc, argv );
 
 	ItalcCore::init();
@@ -57,22 +58,6 @@ int main( int argc, char * * argv )
 
 	app.connect( &app, SIGNAL( lastWindowClosed() ), SLOT( quit() ) );
 
-	app.setStyleSheet(
-		"QMenu { border:1px solid black; background-color: white; "
-			"background-image:url(:/resources/tray-menu-bg.png); "
-			"background-repeat:no-repeat; "
-			"background-position: bottom right; }"
-		"QMenu::separator { height: 1px; background: rgb(128,128,128); "
-					"margin-left: 5px; margin-right: 5px; }"
-		"QMenu::item { padding: 2px 32px 2px 20px; "
-						"margin:3px; }"
-		"QMenu::item:selected { color: white; font-weight:bold; "
-			"background-color: rgba(0, 0, 0, 160); "
-						"margin:3px; }"
-		"QMenu::item:disabled { color: white;  margin:0px; "
-			"background-color: rgba(0,0,0,192); font-size:14px;"
-			"font-weight:bold; padding: 4px 32px 4px 20px; }" );
-
 	// load translations
 	qRegisterMetaType<QModelIndex>( "QModelIndex" );
 	qRegisterMetaType<quint16>( "quint16" );
diff --git a/ima/src/moc_ClassroomManager.cxx_parameters b/ima/src/moc_ClassroomManager.cxx_parameters
deleted file mode 100644
index 69ab259..0000000
--- a/ima/src/moc_ClassroomManager.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_ClassroomManager.cxx
-/tmp/foo/ima/src/ClassroomManager.h
diff --git a/ima/src/moc_Client.cxx_parameters b/ima/src/moc_Client.cxx_parameters
deleted file mode 100644
index 925e278..0000000
--- a/ima/src/moc_Client.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_Client.cxx
-/tmp/foo/ima/src/Client.h
diff --git a/ima/src/moc_ConfigWidget.cxx_parameters b/ima/src/moc_ConfigWidget.cxx_parameters
deleted file mode 100644
index 0c0d39c..0000000
--- a/ima/src/moc_ConfigWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_ConfigWidget.cxx
-/tmp/foo/ima/src/ConfigWidget.h
diff --git a/ima/src/moc_Dialogs.cxx_parameters b/ima/src/moc_Dialogs.cxx_parameters
deleted file mode 100644
index 17fde9e..0000000
--- a/ima/src/moc_Dialogs.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_Dialogs.cxx
-/tmp/foo/ima/src/Dialogs.h
diff --git a/ima/src/moc_MainToolBar.cxx_parameters b/ima/src/moc_MainToolBar.cxx_parameters
deleted file mode 100644
index 017bf88..0000000
--- a/ima/src/moc_MainToolBar.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_MainToolBar.cxx
-/tmp/foo/ima/src/MainToolBar.h
diff --git a/ima/src/moc_MainWindow.cxx_parameters b/ima/src/moc_MainWindow.cxx_parameters
deleted file mode 100644
index c8c7c8f..0000000
--- a/ima/src/moc_MainWindow.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_MainWindow.cxx
-/tmp/foo/ima/src/MainWindow.h
diff --git a/ima/src/moc_OverviewWidget.cxx_parameters b/ima/src/moc_OverviewWidget.cxx_parameters
deleted file mode 100644
index 3e8c452..0000000
--- a/ima/src/moc_OverviewWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_OverviewWidget.cxx
-/tmp/foo/ima/src/OverviewWidget.h
diff --git a/ima/src/moc_RemoteControlWidget.cxx_parameters b/ima/src/moc_RemoteControlWidget.cxx_parameters
deleted file mode 100644
index 0a98b17..0000000
--- a/ima/src/moc_RemoteControlWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_RemoteControlWidget.cxx
-/tmp/foo/ima/src/RemoteControlWidget.h
diff --git a/ima/src/moc_RunCommandsDialog.cxx_parameters b/ima/src/moc_RunCommandsDialog.cxx_parameters
deleted file mode 100644
index 3f840e0..0000000
--- a/ima/src/moc_RunCommandsDialog.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_RunCommandsDialog.cxx
-/tmp/foo/ima/src/RunCommandsDialog.h
diff --git a/ima/src/moc_SideBar.cxx_parameters b/ima/src/moc_SideBar.cxx_parameters
deleted file mode 100644
index f00b321..0000000
--- a/ima/src/moc_SideBar.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_SideBar.cxx
-/tmp/foo/ima/src/SideBar.h
diff --git a/ima/src/moc_SideBarWidget.cxx_parameters b/ima/src/moc_SideBarWidget.cxx_parameters
deleted file mode 100644
index 7abad79..0000000
--- a/ima/src/moc_SideBarWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_SideBarWidget.cxx
-/tmp/foo/ima/src/SideBarWidget.h
diff --git a/ima/src/moc_SnapshotList.cxx_parameters b/ima/src/moc_SnapshotList.cxx_parameters
deleted file mode 100644
index dd33e25..0000000
--- a/ima/src/moc_SnapshotList.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_SnapshotList.cxx
-/tmp/foo/ima/src/SnapshotList.h
diff --git a/ima/src/moc_ToolButton.cxx_parameters b/ima/src/moc_ToolButton.cxx_parameters
deleted file mode 100644
index 5da0d20..0000000
--- a/ima/src/moc_ToolButton.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/ima/src/moc_ToolButton.cxx
-/tmp/foo/ima/src/ToolButton.h
diff --git a/imc/CMakeLists.txt b/imc/CMakeLists.txt
index 6a59a4a..7c553b8 100644
--- a/imc/CMakeLists.txt
+++ b/imc/CMakeLists.txt
@@ -2,10 +2,11 @@ FILE(GLOB imc_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)
 FILE(GLOB imc_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
 FILE(GLOB imc_UI ${CMAKE_CURRENT_SOURCE_DIR}/Forms/*.ui)
 SET(QRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/imc.qrc)
-QT4_WRAP_CPP(imc_MOC_out ${imc_INCLUDES})
-QT4_WRAP_UI(imc_UIC_out ${imc_UI})
-QT4_ADD_RESOURCES(imc_RCC_out ${QRC_FILE})
-QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${imc_SOURCES} ${imc_INCLUDES})
+
+QT5_WRAP_CPP(imc_MOC_out ${imc_INCLUDES})
+QT5_WRAP_UI(imc_UIC_out ${imc_UI})
+QT5_ADD_RESOURCES(imc_RCC_out ${QRC_FILE})
+#QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${imc_SOURCES} ${imc_INCLUDES})
 
 IF(ITALC_BUILD_WIN32)
 	SET(WINRC "${CMAKE_CURRENT_BINARY_DIR}/imcrc.obj")
diff --git a/imc/Forms/KeyFileAssistant.ui b/imc/Forms/KeyFileAssistant.ui
index b5a4a76..08fceea 100644
--- a/imc/Forms/KeyFileAssistant.ui
+++ b/imc/Forms/KeyFileAssistant.ui
@@ -141,7 +141,7 @@ The public key part is used on the client computers to verify that any incoming
        <string>Create new access keys (master computer)</string>
       </property>
       <attribute name="buttonGroup">
-       <string>assistantModeButtonGroup</string>
+       <string notr="true">assistantModeButtonGroup</string>
       </attribute>
      </widget>
     </item>
@@ -150,8 +150,11 @@ The public key part is used on the client computers to verify that any incoming
       <property name="text">
        <string>Import public key (client computer)</string>
       </property>
+      <property name="checked">
+       <bool>true</bool>
+      </property>
       <attribute name="buttonGroup">
-       <string>assistantModeButtonGroup</string>
+       <string notr="true">assistantModeButtonGroup</string>
       </attribute>
      </widget>
     </item>
@@ -643,12 +646,12 @@ The public key part is used on the client computers to verify that any incoming
  </customwidgets>
  <resources>
   <include location="../imc.qrc"/>
-  <include location="../../../.designer/imc.qrc"/>
+  <include location="../imc.qrc"/>
  </resources>
  <connections>
   <connection>
    <sender>useCustomDestDir</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>destDirEdit</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
@@ -664,7 +667,7 @@ The public key part is used on the client computers to verify that any incoming
   </connection>
   <connection>
    <sender>useCustomDestDir</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>openDestDir</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
@@ -744,7 +747,7 @@ The public key part is used on the client computers to verify that any incoming
   </connection>
   <connection>
    <sender>exportPublicKey</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>actionExportPublicKey</receiver>
    <slot>setVisible(bool)</slot>
    <hints>
@@ -839,24 +842,8 @@ The public key part is used on the client computers to verify that any incoming
    </hints>
   </connection>
   <connection>
-   <sender>modeImportPublicKey</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>publicKeyDir</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>263</x>
-     <y>181</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>262</x>
-     <y>120</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
    <sender>exportPublicKey</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>publicKeyDir</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
@@ -872,7 +859,7 @@ The public key part is used on the client computers to verify that any incoming
   </connection>
   <connection>
    <sender>exportPublicKey</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>openPubKeyDir</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
@@ -887,24 +874,8 @@ The public key part is used on the client computers to verify that any incoming
    </hints>
   </connection>
   <connection>
-   <sender>modeImportPublicKey</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>openPubKeyDir</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>263</x>
-     <y>181</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>492</x>
-     <y>119</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
    <sender>exportPublicKey</sender>
-   <signal>toggled(bool)</signal>
+   <signal>clicked(bool)</signal>
    <receiver>exportKeyDestDisplayLabel</receiver>
    <slot>setVisible(bool)</slot>
    <hints>
diff --git a/imc/Forms/MainWindow.ui b/imc/Forms/MainWindow.ui
index b26ca55..b4ffbb1 100644
--- a/imc/Forms/MainWindow.ui
+++ b/imc/Forms/MainWindow.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>715</width>
-    <height>565</height>
+    <width>1305</width>
+    <height>948</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -129,11 +129,27 @@
        <number>0</number>
       </property>
       <widget class="QWidget" name="generalSettingsPage">
-       <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1">
+       <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,0,1">
         <property name="spacing">
          <number>10</number>
         </property>
         <item>
+         <widget class="QGroupBox" name="groupBox_11">
+          <property name="title">
+           <string>User interface</string>
+          </property>
+          <layout class="QGridLayout" name="gridLayout_13">
+           <item row="0" column="0" colspan="2">
+            <widget class="QCheckBox" name="isHighDPIScalingEnabled">
+             <property name="text">
+              <string>Enable high DPI scaling</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
          <widget class="QGroupBox" name="groupBox_3">
           <property name="title">
            <string>iTALC Service</string>
@@ -519,13 +535,6 @@
              </item>
             </layout>
            </item>
-           <item>
-            <widget class="QCheckBox" name="isDemoServerMultithreaded">
-             <property name="text">
-              <string>Multithreading (can be enabled when using the VNC reflector backend)</string>
-             </property>
-            </widget>
-           </item>
           </layout>
          </widget>
         </item>
@@ -1332,7 +1341,7 @@ If the bug is not reproducible, skip step 1) - 3).</string>
                 </sizepolicy>
                </property>
                <property name="text">
-                <string>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+                <string>Go to the <a href="https://github.com/iTALC/italc/issues">iTALC issue tracker</a>, create a new issue, describe what you did in step 3) and attach the file you saved in step 4).</p>
 <br/>
 <br/>
 Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</string>
@@ -1404,8 +1413,8 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>715</width>
-     <height>25</height>
+     <width>1305</width>
+     <height>35</height>
     </rect>
    </property>
    <widget class="QMenu" name="menu_File">
@@ -1478,8 +1487,8 @@ Note: if the bug involves both a master and client computer, attach bug report a
   </action>
  </widget>
  <resources>
-  <include location="../imc.qrc"/>
   <include location="../../lib/ItalcCore.qrc"/>
+  <include location="../imc.qrc"/>
  </resources>
  <connections>
   <connection>
diff --git a/imc/imc.rc b/imc/imc.rc
deleted file mode 100644
index 7beaa04..0000000
--- a/imc/imc.rc
+++ /dev/null
@@ -1,26 +0,0 @@
-imcicon ICON Resources/imc.ico
-#include <windows.h>
-
-VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
-  FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-  FILEOS	VOS_NT_WINDOWS32
-  FILETYPE	VFT_APP
-  FILESUBTYPE	VFT2_UNKNOWN
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, charset = Windows, Multilingual
-    BEGIN
-      VALUE "Comments",		"Intelligent Teaching And Learning with Computers (http://italc.sf.net)\0"
-      VALUE "CompanyName",	"iTALC Solutions\0"
-      VALUE "FileDescription",	"iTALC Management Console\0"
-      VALUE "FileVersion",	"\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2010-2014 Tobias Doerffel\0"
-      VALUE "OriginalFilename",	"imc.exe\0"
-      VALUE "ProductName",	"iTALC\0"
-      VALUE "ProductVersion",	"\0"
-    END
-  END
-END
diff --git a/imc/imc.rc.in b/imc/imc.rc.in
index 8afe1a4..0dd125a 100644
--- a/imc/imc.rc.in
+++ b/imc/imc.rc.in
@@ -2,7 +2,7 @@ imcicon ICON Resources/imc.ico
 #include <windows.h>
 
 VS_VERSION_INFO	VERSIONINFO
-  FILEVERSION	2,0,2,0
+  FILEVERSION	3,0,1,0
   FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
   FILEOS	VOS_NT_WINDOWS32
   FILETYPE	VFT_APP
@@ -17,7 +17,7 @@ BEGIN
       VALUE "CompanyName",	"iTALC Solutions\0"
       VALUE "FileDescription",	"iTALC Management Console\0"
       VALUE "FileVersion",	"@PACKAGE_VERSION@\0"
-      VALUE "LegalCopyright",	"Copyright (c) 2010-2014 Tobias Doerffel\0"
+      VALUE "LegalCopyright",	"Copyright (c) 2010-2016 Tobias Doerffel\0"
       VALUE "OriginalFilename",	"imc.exe\0"
       VALUE "ProductName",	"iTALC\0"
       VALUE "ProductVersion",	"@PACKAGE_VERSION@\0"
diff --git a/imc/src/FileSystemBrowser.cpp b/imc/src/FileSystemBrowser.cpp
index a8aa5fa..fb7c60f 100644
--- a/imc/src/FileSystemBrowser.cpp
+++ b/imc/src/FileSystemBrowser.cpp
@@ -22,8 +22,8 @@
  *
  */
 
-#include <QtGui/QFileDialog>
-#include <QtGui/QLineEdit>
+#include <QFileDialog>
+#include <QLineEdit>
 
 #include "FileSystemBrowser.h"
 #include "LocalSystem.h"
diff --git a/imc/src/ImcCore.cpp b/imc/src/ImcCore.cpp
index 1487d98..2794414 100644
--- a/imc/src/ImcCore.cpp
+++ b/imc/src/ImcCore.cpp
@@ -22,8 +22,8 @@
  *
  */
 
-#include <QtGui/QApplication>
-#include <QtGui/QMessageBox>
+#include <QApplication>
+#include <QMessageBox>
 
 #include <italcconfig.h>
 
@@ -222,7 +222,7 @@ void informationMessage( const QString &title, const QString &msg )
 {
 	LogStream( Logger::LogLevelInfo ) << title.toUtf8().constData()
 								<< ":" << msg.toUtf8().constData();
-	if( QApplication::type() != QApplication::Tty && !silent )
+	if( qobject_cast<QApplication *>( QCoreApplication::instance() ) && !silent )
 	{
 		QMessageBox::information( NULL, title, msg );
 	}
@@ -234,7 +234,7 @@ void criticalMessage( const QString &title, const QString &msg )
 {
 	LogStream( Logger::LogLevelCritical ) << title.toUtf8().constData()
 								<< ":" << msg.toUtf8().constData();
-	if( QApplication::type() != QApplication::Tty && !silent )
+	if( qobject_cast<QApplication *>( QCoreApplication::instance() ) && !silent )
 	{
 		QMessageBox::critical( NULL, title, msg );
 	}
diff --git a/imc/src/KeyDirectoriesPage.cpp b/imc/src/KeyDirectoriesPage.cpp
index 27eb4d4..6e70447 100644
--- a/imc/src/KeyDirectoriesPage.cpp
+++ b/imc/src/KeyDirectoriesPage.cpp
@@ -1,7 +1,7 @@
 /*
  * KeyDirectoriesPage.cpp - QWizardPage for key directory selection
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -42,11 +42,11 @@ void KeyDirectoriesPage::setUi( Ui::KeyFileAssistant *ui )
 {
 	m_ui = ui;
 
-	connect( m_ui->exportPublicKey, SIGNAL( toggled( bool ) ),
+	connect( m_ui->exportPublicKey, SIGNAL( clicked( bool ) ),
 				this, SIGNAL( completeChanged() ) );
 	connect( m_ui->publicKeyDir, SIGNAL( textChanged( const QString & ) ),
 				this, SIGNAL( completeChanged() ) );
-	connect( m_ui->useCustomDestDir, SIGNAL( toggled( bool ) ),
+	connect( m_ui->useCustomDestDir, SIGNAL( clicked( bool ) ),
 				this, SIGNAL( completeChanged() ) );
 	connect( m_ui->destDirEdit, SIGNAL( textChanged( const QString & ) ),
 				this, SIGNAL( completeChanged() ) );
diff --git a/imc/src/KeyDirectoriesPage.h b/imc/src/KeyDirectoriesPage.h
index a4a87c2..fc71fe6 100644
--- a/imc/src/KeyDirectoriesPage.h
+++ b/imc/src/KeyDirectoriesPage.h
@@ -25,7 +25,7 @@
 #ifndef KEY_DIRECTORIES_PAGE_H
 #define KEY_DIRECTORIES_PAGE_H
 
-#include <QtGui/QWizardPage>
+#include <QWizardPage>
 
 namespace Ui { class KeyFileAssistant; }
 
diff --git a/imc/src/KeyFileAssistant.cpp b/imc/src/KeyFileAssistant.cpp
index a6fecfa..30d2aff 100644
--- a/imc/src/KeyFileAssistant.cpp
+++ b/imc/src/KeyFileAssistant.cpp
@@ -23,7 +23,7 @@
  */
 
 #include <QtCore/QDir>
-#include <QtGui/QMessageBox>
+#include <QMessageBox>
 
 #include "KeyFileAssistant.h"
 #include "DsaKey.h"
diff --git a/imc/src/KeyFileAssistant.h b/imc/src/KeyFileAssistant.h
index ca15f6a..ff8fa58 100644
--- a/imc/src/KeyFileAssistant.h
+++ b/imc/src/KeyFileAssistant.h
@@ -25,7 +25,7 @@
 #ifndef KEY_FILE_ASSISTANT_H
 #define KEY_FILE_ASSISTANT_H
 
-#include <QtGui/QWizard>
+#include <QWizard>
 
 namespace Ui { class KeyFileAssistant; }
 
diff --git a/imc/src/KeyFileAssistantModePage.cpp b/imc/src/KeyFileAssistantModePage.cpp
index 09a712b..dc6929e 100644
--- a/imc/src/KeyFileAssistantModePage.cpp
+++ b/imc/src/KeyFileAssistantModePage.cpp
@@ -22,7 +22,7 @@
  *
  */
 
-#include <QtGui/QButtonGroup>
+#include <QButtonGroup>
 
 #include "KeyFileAssistant.h"
 #include "KeyFileAssistantModePage.h"
diff --git a/imc/src/KeyFileAssistantModePage.h b/imc/src/KeyFileAssistantModePage.h
index ec6a9b2..f1c4c84 100644
--- a/imc/src/KeyFileAssistantModePage.h
+++ b/imc/src/KeyFileAssistantModePage.h
@@ -25,7 +25,7 @@
 #ifndef KEY_FILE_ASSISTANT_MODE_PAGE_H
 #define KEY_FILE_ASSISTANT_MODE_PAGE_H
 
-#include <QtGui/QWizardPage>
+#include <QWizardPage>
 
 class QButtonGroup;
 namespace Ui { class KeyFileAssistant; }
diff --git a/imc/src/LogonAclSettings.h b/imc/src/LogonAclSettings.h
index c2f8fdd..0614bad 100644
--- a/imc/src/LogonAclSettings.h
+++ b/imc/src/LogonAclSettings.h
@@ -1,7 +1,7 @@
 /*
  * LogonAclSettings.h - helper class for reading and setting logon ACLs
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -83,7 +83,7 @@ public:
 			return;
 		}
 
-		QByteArray d = QByteArray::fromBase64( base64ACL.toAscii() );
+		QByteArray d = QByteArray::fromBase64( base64ACL.toLatin1() );
 		HKEY hk = NULL;
 		if( RegOpenKeyEx( HKEY_LOCAL_MACHINE,
 							"Software\\iTALC Solutions\\iTALC\\Authentication",
diff --git a/imc/src/LogonGroupEditor.h b/imc/src/LogonGroupEditor.h
index c5a831b..039df10 100644
--- a/imc/src/LogonGroupEditor.h
+++ b/imc/src/LogonGroupEditor.h
@@ -25,7 +25,7 @@
 #ifndef LOGON_GROUP_EDITOR_H
 #define LOGON_GROUP_EDITOR_H
 
-#include <QtGui/QDialog>
+#include <QDialog>
 
 namespace Ui { class LogonGroupEditor; } ;
 
diff --git a/imc/src/MainWindow.cpp b/imc/src/MainWindow.cpp
index 80ada0a..a07cb64 100644
--- a/imc/src/MainWindow.cpp
+++ b/imc/src/MainWindow.cpp
@@ -1,7 +1,7 @@
 /*
  * MainWindow.cpp - implementation of MainWindow class
  *
- * Copyright (c) 2010-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -33,10 +33,10 @@ void Win32AclEditor( HWND hwnd );
 #include <QtCore/QProcess>
 #include <QtCore/QTimer>
 #include <QtGui/QCloseEvent>
-#include <QtGui/QFileDialog>
-#include <QtGui/QMessageBox>
-#include <QtGui/QProgressBar>
-#include <QtGui/QProgressDialog>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QProgressBar>
+#include <QProgressDialog>
 
 #include "Configuration/XmlStore.h"
 #include "Configuration/UiMapping.h"
@@ -431,7 +431,7 @@ void MainWindow::launchKeyFileAssistant()
 void MainWindow::manageACLs()
 {
 #ifdef ITALC_BUILD_WIN32
-	Win32AclEditor( winId() );
+	Win32AclEditor( LocalSystem::getHWNDForWidget( this ) );
 
 	if( LogonAclSettings().acl() !=
 				ItalcCore::config->value( "EncodedLogonACL", "Authentication" ) )
diff --git a/imc/src/MainWindow.h b/imc/src/MainWindow.h
index 85304f9..fb7cba3 100644
--- a/imc/src/MainWindow.h
+++ b/imc/src/MainWindow.h
@@ -25,7 +25,7 @@
 #ifndef MAIN_WINDOW_H
 #define MAIN_WINDOW_H
 
-#include <QtGui/QMainWindow>
+#include <QMainWindow>
 
 class QAbstractButton;
 
diff --git a/imc/src/main.cpp b/imc/src/main.cpp
index 9b84b9a..6835d31 100644
--- a/imc/src/main.cpp
+++ b/imc/src/main.cpp
@@ -25,7 +25,7 @@
 #include <italcconfig.h>
 
 #include <QtCore/QProcessEnvironment>
-#include <QtGui/QApplication>
+#include <QApplication>
 
 #include "Configuration/XmlStore.h"
 #include "ImcCore.h"
@@ -81,10 +81,7 @@ int main( int argc, char **argv )
 		return -1;
 	}
 
-	if( app.type() != QApplication::Tty )
-	{
-		app.connect( &app, SIGNAL( lastWindowClosed() ), SLOT( quit() ) );
-	}
+	app.connect( &app, SIGNAL( lastWindowClosed() ), SLOT( quit() ) );
 
 	// parse arguments
 	QStringListIterator argIt( app.arguments() );
diff --git a/imc/src/moc_FileSystemBrowser.cxx_parameters b/imc/src/moc_FileSystemBrowser.cxx_parameters
deleted file mode 100644
index 4ae6f97..0000000
--- a/imc/src/moc_FileSystemBrowser.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_FileSystemBrowser.cxx
-/tmp/foo/imc/src/FileSystemBrowser.h
diff --git a/imc/src/moc_ImcCore.cxx_parameters b/imc/src/moc_ImcCore.cxx_parameters
deleted file mode 100644
index 37c6a8f..0000000
--- a/imc/src/moc_ImcCore.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_ImcCore.cxx
-/tmp/foo/imc/src/ImcCore.h
diff --git a/imc/src/moc_KeyDirectoriesPage.cxx_parameters b/imc/src/moc_KeyDirectoriesPage.cxx_parameters
deleted file mode 100644
index 54b8721..0000000
--- a/imc/src/moc_KeyDirectoriesPage.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_KeyDirectoriesPage.cxx
-/tmp/foo/imc/src/KeyDirectoriesPage.h
diff --git a/imc/src/moc_KeyFileAssistant.cxx_parameters b/imc/src/moc_KeyFileAssistant.cxx_parameters
deleted file mode 100644
index 292406e..0000000
--- a/imc/src/moc_KeyFileAssistant.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_KeyFileAssistant.cxx
-/tmp/foo/imc/src/KeyFileAssistant.h
diff --git a/imc/src/moc_KeyFileAssistantModePage.cxx_parameters b/imc/src/moc_KeyFileAssistantModePage.cxx_parameters
deleted file mode 100644
index 2cbbc84..0000000
--- a/imc/src/moc_KeyFileAssistantModePage.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_KeyFileAssistantModePage.cxx
-/tmp/foo/imc/src/KeyFileAssistantModePage.h
diff --git a/imc/src/moc_LogonAclSettings.cxx_parameters b/imc/src/moc_LogonAclSettings.cxx_parameters
deleted file mode 100644
index 3f315e7..0000000
--- a/imc/src/moc_LogonAclSettings.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_LogonAclSettings.cxx
-/tmp/foo/imc/src/LogonAclSettings.h
diff --git a/imc/src/moc_LogonGroupEditor.cxx_parameters b/imc/src/moc_LogonGroupEditor.cxx_parameters
deleted file mode 100644
index fb8214f..0000000
--- a/imc/src/moc_LogonGroupEditor.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_LogonGroupEditor.cxx
-/tmp/foo/imc/src/LogonGroupEditor.h
diff --git a/imc/src/moc_MainWindow.cxx_parameters b/imc/src/moc_MainWindow.cxx_parameters
deleted file mode 100644
index 200fbda..0000000
--- a/imc/src/moc_MainWindow.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_MainWindow.cxx
-/tmp/foo/imc/src/MainWindow.h
diff --git a/imc/src/moc_SystemConfigurationModifier.cxx_parameters b/imc/src/moc_SystemConfigurationModifier.cxx_parameters
deleted file mode 100644
index 52e7feb..0000000
--- a/imc/src/moc_SystemConfigurationModifier.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_SystemConfigurationModifier.cxx
-/tmp/foo/imc/src/SystemConfigurationModifier.h
diff --git a/imc/src/moc_Win32AclEditor.cxx_parameters b/imc/src/moc_Win32AclEditor.cxx_parameters
deleted file mode 100644
index 351f534..0000000
--- a/imc/src/moc_Win32AclEditor.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_Win32AclEditor.cxx
-/tmp/foo/imc/src/Win32AclEditor.h
diff --git a/imc/src/moc_netfw.cxx_parameters b/imc/src/moc_netfw.cxx_parameters
deleted file mode 100644
index d5532ae..0000000
--- a/imc/src/moc_netfw.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/imc/src/moc_netfw.cxx
-/tmp/foo/imc/src/netfw.h
diff --git a/italcconfig.h.in b/italcconfig.h.in
index 02a00e1..5d23a67 100644
--- a/italcconfig.h.in
+++ b/italcconfig.h.in
@@ -105,3 +105,5 @@
 #cmakedefine ITALC_HAVE_LIBCRYPT 1
 #cmakedefine ITALC_HAVE_LIBPTHREAD 1
 #cmakedefine ITALC_HAVE_TLS 1
+
+#cmakedefine ITALC_HAVE_WS2TCPIP_H  1
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 4165168..7489ab3 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -20,18 +20,19 @@ ${CMAKE_CURRENT_SOURCE_DIR}/../ica/x11/libvncclient/vncviewer.c)
 
 
 SET(QRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/ItalcCore.qrc)
-QT4_WRAP_CPP(ic_MOC_out ${ic_INCLUDES})
-QT4_WRAP_UI(ic_UIC_out ${ic_UI})
-QT4_ADD_RESOURCES(ic_RCC_out ${QRC_FILE})
-IF(WIN32)
-	QT4_ADD_RESOURCES(ic_qt_qm_out ${CMAKE_CURRENT_BINARY_DIR}/qt_qm.qrc)
-ENDIF()
-QT4_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${ic_SOURCES} ${ic_INCLUDES})
+QT5_WRAP_CPP(ic_MOC_out ${ic_INCLUDES})
+QT5_WRAP_UI(ic_UIC_out ${ic_UI})
+QT5_ADD_RESOURCES(ic_RCC_out ${QRC_FILE})
+#IF(WIN32)
+#	QT5_ADD_RESOURCES(ic_qt_qm_out ${CMAKE_CURRENT_BINARY_DIR}/qt_qm.qrc)
+#ENDIF()
+#QT5_TRANSLATIONS_FOR_QRC(${QRC_FILE} ${ic_SOURCES} ${ic_INCLUDES})
 
 ADD_DEFINITIONS(-DBUILD_ICA -DBUILD_LIBRARY)
 IF(ITALC_BUILD_WIN32)
 	LINK_LIBRARIES(-lws2_32 -lwtsapi32 -lnetapi32 -luserenv -ladvapi32)
 	SET(CMAKE_MODULE_LINKER_FLAGS -Wl,-export-all-symbols)
+	INCLUDE_DIRECTORIES(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
 ENDIF(ITALC_BUILD_WIN32)
 
 INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/../ica/x11/common/)
@@ -45,3 +46,12 @@ ELSE()
 	INSTALL(TARGETS ItalcCore LIBRARY DESTINATION ${LIB_DIR})
 ENDIF(ITALC_BUILD_WIN32)
 
+TARGET_LINK_LIBRARIES(ItalcCore
+	Qt5::Gui
+	Qt5::Network
+	Qt5::Widgets
+	Qt5::Xml
+	)
+
+ADD_DEPENDENCIES(ItalcCore GenerateTranslationFiles)
+
diff --git a/lib/ItalcCore.qrc b/lib/ItalcCore.qrc
index 6703249..775bb5b 100644
--- a/lib/ItalcCore.qrc
+++ b/lib/ItalcCore.qrc
@@ -32,6 +32,12 @@
     <file>resources/el.qm</file>
     <file>resources/tr.qm</file>
     <file>resources/he.qm</file>
+    <file>resources/mn.qm</file>
+    <file>resources/nl.qm</file>
+    <file>resources/lt.qm</file>
+    <file>resources/ko_kr.qm</file>
+    <file>resources/bb.qm</file>
+    <file>resources/ca_ES.qm</file>
     <file>resources/locked_bg.png</file>
     <file>resources/icon16.png</file>
     <file>resources/icon22.png</file>
diff --git a/lib/dialogs/AboutDialog.ui b/lib/dialogs/AboutDialog.ui
index 0d10fe5..f565a52 100644
--- a/lib/dialogs/AboutDialog.ui
+++ b/lib/dialogs/AboutDialog.ui
@@ -102,7 +102,7 @@
          <property name="text">
           <string>iTALC - Intelligent Teaching And Learning with Computers
 
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</string>
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</string>
          </property>
         </widget>
        </item>
diff --git a/lib/include/AboutDialog.h b/lib/include/AboutDialog.h
index 6c26293..dc92195 100644
--- a/lib/include/AboutDialog.h
+++ b/lib/include/AboutDialog.h
@@ -25,7 +25,7 @@
 #ifndef ABOUT_DIALOG_H
 #define ABOUT_DIALOG_H
 
-#include <QtGui/QDialog>
+#include <QDialog>
 
 namespace Ui
 {
diff --git a/lib/include/Configuration/moc_LocalStore.cxx_parameters b/lib/include/Configuration/moc_LocalStore.cxx_parameters
deleted file mode 100644
index 47a9096..0000000
--- a/lib/include/Configuration/moc_LocalStore.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Configuration/moc_LocalStore.cxx
-/tmp/foo/lib/include/Configuration/LocalStore.h
diff --git a/lib/include/Configuration/moc_Object.cxx_parameters b/lib/include/Configuration/moc_Object.cxx_parameters
deleted file mode 100644
index d2586e0..0000000
--- a/lib/include/Configuration/moc_Object.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Configuration/moc_Object.cxx
-/tmp/foo/lib/include/Configuration/Object.h
diff --git a/lib/include/Configuration/moc_Store.cxx_parameters b/lib/include/Configuration/moc_Store.cxx_parameters
deleted file mode 100644
index a57abe0..0000000
--- a/lib/include/Configuration/moc_Store.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Configuration/moc_Store.cxx
-/tmp/foo/lib/include/Configuration/Store.h
diff --git a/lib/include/Configuration/moc_UiMapping.cxx_parameters b/lib/include/Configuration/moc_UiMapping.cxx_parameters
deleted file mode 100644
index 48eea37..0000000
--- a/lib/include/Configuration/moc_UiMapping.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Configuration/moc_UiMapping.cxx
-/tmp/foo/lib/include/Configuration/UiMapping.h
diff --git a/lib/include/Configuration/moc_XmlStore.cxx_parameters b/lib/include/Configuration/moc_XmlStore.cxx_parameters
deleted file mode 100644
index 623eee7..0000000
--- a/lib/include/Configuration/moc_XmlStore.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Configuration/moc_XmlStore.cxx
-/tmp/foo/lib/include/Configuration/XmlStore.h
diff --git a/lib/include/DecoratedMessageBox.h b/lib/include/DecoratedMessageBox.h
deleted file mode 100644
index 82befd9..0000000
--- a/lib/include/DecoratedMessageBox.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * DecoratedMessageBox.h - decorated messagebox
- *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
- *
- * This file is part of iTALC - http://italc.sourceforge.net
- *
- * 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 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program (see COPYING); if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef DECORATED_MESSAGEBOX_H
-#define DECORATED_MESSAGEBOX_H
-
-#include <QtGui/QDialog>
-#include <QtGui/QPixmap>
-
-class DecoratedMessageBox : public QDialog
-{
-	Q_OBJECT
-public:
-	enum MessageIcon
-	{
-		NoIcon,
-		Information,
-		Warning,
-		Critical
-	} ;
-
-	DecoratedMessageBox( const QString & _title, const QString & _msg,
-					const QPixmap & _pixmap = QPixmap() );
-
-	static void information( const QString & _title, const QString & _msg,
-					const QPixmap & _pixmap = QPixmap() );
-
-	static void trySysTrayMessage( const QString & _title,
-							const QString & _msg,
-							MessageIcon _msg_icon );
-} ;
-
-#endif
-
diff --git a/lib/include/DsaKey.h b/lib/include/DsaKey.h
index 3056473..5a47d90 100644
--- a/lib/include/DsaKey.h
+++ b/lib/include/DsaKey.h
@@ -1,8 +1,7 @@
 /*
- * DsaKey.h - easy to use C++ classes for dealing with DSA-keys, -signatures
- *            etc.
+ * DsaKey.h - C++ wrapper classes for dealing with DSA keys and signatures
  *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -122,7 +121,7 @@ public:
 	}
 
 	// constructor - generate new private key with given number of bits
-	PrivateDSAKey( const unsigned int _bits );
+	PrivateDSAKey( unsigned int bits );
 
 	// returns signature for data
 	QByteArray sign( const QByteArray & _data ) const;
diff --git a/lib/include/FastQImage.h b/lib/include/FastQImage.h
deleted file mode 100644
index c05ef97..0000000
--- a/lib/include/FastQImage.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * FastQImage.h - class FastQImage providing fast inline-QImage-manips
- *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
- *
- * This file is part of iTALC - http://italc.sourceforge.net
- *
- * 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 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program (see COPYING); if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef FAST_QIMAGE_H
-#define FAST_QIMAGE_H
-
-#include <stdint.h>
-
-#include <QtGui/QImage>
-#include <QtGui/QPixmap>
-
-
-class FastQImage : public QImage
-{
-public:
-	FastQImage() : QImage() { }
-	FastQImage( const QImage & _img ) : QImage( _img ) { }
-	FastQImage( const QPixmap & _pm ) : QImage( _pm.toImage() ) { }
-
-
-	QPixmap toPixmap( void ) const
-	{
-		return( QPixmap().fromImage( *this ) );
-	}
-
-
-	inline void fillRect( const uint16_t rx, const uint16_t ry,
-				const uint16_t rw, const uint16_t rh,
-				const QRgb pix )
-	{
-		const uint16_t img_width = width();
-		QRgb * dst = (QRgb *) scanLine( ry ) + rx;
-		// TODO: is it faster to fill first line and then memcpy()
-		//       this line?
-		for( uint16_t y = 0; y < rh; ++y )
-		{
-			//QRgb * dest = dst_base;
-			for( uint16_t x = 0; x < rw; ++x )
-			{
-				dst[x] = pix;
-			}
-			dst += img_width;
-		}
-	}
-
-
-
-	inline void copyRect( const uint16_t rx, const uint16_t ry,
-				const uint16_t rw, const uint16_t rh,
-				const QRgb * buf )
-	{
-		if( rh > 0 )
-		{
-			const uint16_t img_width = width();
-			QRgb * dst = (QRgb *) scanLine( ry ) + rx;
-			for( uint16_t y = 0; y < rh; ++y )
-			{
-				memcpy( dst, buf, rw * sizeof( QRgb ) );
-				buf += rw;
-				dst += img_width;
-			}
-		}
-		else
-		{
-			qWarning( "FastQImage::copyRect(): tried to copy a rect with zero-height - ignoring" );
-		}
-	}
-
-
-
-	inline void copyExistingRect( const uint16_t src_x,
-					const uint16_t src_y,
-					const uint16_t rw,
-					const uint16_t rh,
-					const uint16_t dest_x,
-					const uint16_t dest_y )
-	{
-		// TODO: check whether we need to handle if dest-rect is inside
-		//       src-rect
-		const uint16_t img_width = width();
-		const QRgb * src = (const QRgb *) scanLine( src_y ) + src_x;
-		QRgb * dst = (QRgb *) scanLine( dest_y ) + dest_x;
-		for( uint16_t y = 0; y < rh; ++y )
-		{
-			// TODO: vectorize
-			memcpy( dst, src, rw * sizeof( QRgb ) );
-			src += img_width;
-			dst += img_width;
-		}
-	}
-
-	// scales this image to the size, _dst has
-	QImage & scaleTo( QImage & _dst ) const;
-
-	// overload horribly slow scaled()-method
-	inline QImage scaled( const QSize & size,
-			Qt::AspectRatioMode arm = Qt::IgnoreAspectRatio,
-			Qt::TransformationMode tm = Qt::SmoothTransformation )
-									const
-	{
-		if( tm == Qt::SmoothTransformation &&
-			arm == Qt::IgnoreAspectRatio &&
-			size.isEmpty() == false )
-		{
-			QImage tmp( size, format() );
-			scaleTo( tmp );
-			return( tmp );
-		}
-		return( QImage::scaled( size, arm, tm ) );
-	}
-
-
-	inline QImage scaled( int width, int height,
-			Qt::AspectRatioMode arm = Qt::IgnoreAspectRatio,
-			Qt::TransformationMode tm = Qt::SmoothTransformation )
-									const
-	{
-		return( scaled( QSize( width, height ), arm, tm ) );
-	}
-
-
-	// fill alpha-channel of image with certain value
-	inline FastQImage & alphaFill( const unsigned char _alpha )
-	{
-		QRgb * ptr = (QRgb *) bits();
-		const unsigned int pixels = width() * height();
-		const QRgb mask = ((unsigned int) _alpha ) << 24;
-		for( unsigned int i = 0; i < pixels; ++i )
-		{
-			*ptr = ( *ptr & 0x00ffffff ) | mask;
-			++ptr;
-		}
-		return *this;
-	}
-
-
-	// set alpha-value of all pixels to a certain value it it is greater
-	// then it (something like max<..>(...) for QImage ;-)
-	inline FastQImage & alphaFillMax( const unsigned char _alpha )
-	{
-		unsigned char * ptr = bits() + 3;
-		const unsigned int pixels = width() * height();
-		for( unsigned int i = 0; i < pixels; ++i )
-		{
-			if( *ptr > _alpha )
-			{
-				*ptr = _alpha;
-			}
-			ptr += 4;
-		}
-		return( *this );
-	}
-
-
-	// darken whole image by _coeff (_coeff = [0;256])
-	inline FastQImage & darken( const uint16_t _coeff )
-	{
-		unsigned char * ptr = bits();
-		const unsigned int pixels = width() * height();
-		for( unsigned int i = 0; i < pixels; ++i )
-		{
-			ptr[0] = ( ptr[0] * _coeff ) >> 8;
-			ptr[1] = ( ptr[1] * _coeff ) >> 8;
-			ptr[2] = ( ptr[2] * _coeff ) >> 8;
-			ptr[3] = ( ptr[3] * 256 ) >> 8;
-			ptr += 4;
-		}
-		return *this;
-	}
-
-
-	inline FastQImage & toGray( void )
-	{
-		QRgb * ptr = (QRgb *) bits();
-		const unsigned int pixels = width() * height();
-		for( unsigned int i = 0; i < pixels; ++i )
-		{
-			const QRgb gray = qGray( *ptr );
-			const QRgb g = gray | ( gray << 8 ) | ( gray << 16 ) |
-													( qAlpha(*ptr) << 24 );
-			*ptr = g;
-			++ptr;
-		}
-		return *this;
-	}
-
-
-} ;
-
-
-
-
-inline QPixmap scaled( const QString & _file, const int _w, const int _h )
-{
-	return( QPixmap::fromImage( FastQImage( QPixmap( _file ) ).
-							scaled( _w, _h ) ) );
-}
-
-
-
-#endif
-
diff --git a/lib/include/Ipc/Core.h b/lib/include/Ipc/Core.h
index c2df199..51a6e7c 100644
--- a/lib/include/Ipc/Core.h
+++ b/lib/include/Ipc/Core.h
@@ -1,7 +1,7 @@
 /*
  * IpcCore.h - core definitions for the IPC framework
  *
- * Copyright (c) 2010-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -26,6 +26,7 @@
 #ifndef IPC_CORE_H
 #define IPC_CORE_H
 
+#include <QtCore/QDataStream>
 #include <QtCore/QMap>
 #include <QtCore/QString>
 #include <QtCore/QVariant>
@@ -107,7 +108,7 @@ namespace Ipc
 		{
 			QDataStream ds( d );
 			ds << m_cmd;
-			ds << m_args;
+			ds << QVariant( m_args );
 			d->flush();
 			return true;
 		}
@@ -116,8 +117,10 @@ namespace Ipc
 		Msg & receive( QIOD *d )
 		{
 			QDataStream ds( d );
+			QVariant args;
 			ds >> m_cmd;
-			ds >> m_args;
+			ds >> args;
+			m_args = args.toMap();
 			return *this;
 		}
 
diff --git a/lib/include/Ipc/Master.h b/lib/include/Ipc/Master.h
index 58a541e..2741466 100644
--- a/lib/include/Ipc/Master.h
+++ b/lib/include/Ipc/Master.h
@@ -1,7 +1,7 @@
 /*
  * IpcMaster.h - class Ipc::Master which manages Ipc::Slaves
  *
- * Copyright (c) 2010-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -27,8 +27,10 @@
 #define IPC_MASTER_H
 
 #include "Ipc/Core.h"
+#include "Ipc/SlaveLauncher.h"
 
 #include <QtCore/QMutex>
+#include <QtCore/QPointer>
 #include <QtCore/QProcess>
 #include <QtCore/QSignalMapper>
 #include <QtNetwork/QTcpServer>
@@ -37,8 +39,6 @@
 namespace Ipc
 {
 
-class SlaveLauncher;
-
 class Master : public QTcpServer
 {
 	Q_OBJECT
@@ -51,12 +51,11 @@ public:
 		return m_applicationFilePath;
 	}
 
-	virtual void createSlave( const Ipc::Id &id, SlaveLauncher *slaveLauncher = NULL );
-	void stopSlave( const Ipc::Id &id );
-	bool isSlaveRunning( const Ipc::Id &id );
+	Q_INVOKABLE virtual void createSlave( const Ipc::Id &id, Ipc::SlaveLauncher *slaveLauncher = NULL );
+	Q_INVOKABLE void stopSlave( const Ipc::Id& id );
+	bool isSlaveRunning( const Id& id );
 
-	void sendMessage( const Ipc::Id &id, const Ipc::Msg &msg );
-	Ipc::Msg receiveMessage( const Ipc::Id &id );
+	Q_INVOKABLE void sendMessage( const Ipc::Id& id, const Ipc::Msg& msg );
 
 	virtual bool handleMessage( const Ipc::Id &id, const Ipc::Msg &msg ) = 0;
 
@@ -74,7 +73,7 @@ private:
 	struct ProcessInformation
 	{
 		QTcpSocket *sock;
-		SlaveLauncher *slaveLauncher;
+		QPointer<SlaveLauncher> slaveLauncher;
 		QVector<Ipc::Msg> pendingMessages;
 
 		ProcessInformation() :
@@ -97,10 +96,6 @@ private:
 
 	QMutex m_processMapMutex;
 
-
-signals:
-	void messagesPending();
-
 };
 
 }
diff --git a/lib/include/Ipc/QtSlaveLauncher.h b/lib/include/Ipc/QtSlaveLauncher.h
index 412c832..940f22a 100644
--- a/lib/include/Ipc/QtSlaveLauncher.h
+++ b/lib/include/Ipc/QtSlaveLauncher.h
@@ -28,6 +28,7 @@
 #define IPC_QT_SLAVE_LAUNCHER_H
 
 #include <QtCore/QMutex>
+#include <QtCore/QPointer>
 
 #include "Ipc/SlaveLauncher.h"
 
@@ -38,6 +39,7 @@ namespace Ipc
 
 class QtSlaveLauncher : public SlaveLauncher
 {
+	Q_OBJECT
 public:
 	QtSlaveLauncher( const QString &applicationFilePath = QString() );
 	~QtSlaveLauncher();
@@ -49,7 +51,7 @@ public:
 
 private:
 	QMutex m_processMutex;
-	QProcess *m_process;
+	QPointer<QProcess> m_process;
 
 };
 
diff --git a/lib/include/Ipc/SlaveLauncher.h b/lib/include/Ipc/SlaveLauncher.h
index 3c1059d..e1dc053 100644
--- a/lib/include/Ipc/SlaveLauncher.h
+++ b/lib/include/Ipc/SlaveLauncher.h
@@ -32,8 +32,9 @@
 namespace Ipc
 {
 
-class SlaveLauncher
+class SlaveLauncher : public QObject
 {
+	Q_OBJECT
 public:
 	SlaveLauncher( const QString &applicationFilePath = QString() );
 	virtual ~SlaveLauncher();
@@ -51,6 +52,10 @@ public:
 private:
 	QString m_applicationFilePath;
 
+
+signals:
+	void finished();
+
 };
 
 }
diff --git a/lib/include/Ipc/moc_Core.cxx_parameters b/lib/include/Ipc/moc_Core.cxx_parameters
deleted file mode 100644
index db2aada..0000000
--- a/lib/include/Ipc/moc_Core.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Ipc/moc_Core.cxx
-/tmp/foo/lib/include/Ipc/Core.h
diff --git a/lib/include/Ipc/moc_Master.cxx_parameters b/lib/include/Ipc/moc_Master.cxx_parameters
deleted file mode 100644
index 2a90d70..0000000
--- a/lib/include/Ipc/moc_Master.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Ipc/moc_Master.cxx
-/tmp/foo/lib/include/Ipc/Master.h
diff --git a/lib/include/Ipc/moc_QtSlaveLauncher.cxx_parameters b/lib/include/Ipc/moc_QtSlaveLauncher.cxx_parameters
deleted file mode 100644
index faa6d41..0000000
--- a/lib/include/Ipc/moc_QtSlaveLauncher.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Ipc/moc_QtSlaveLauncher.cxx
-/tmp/foo/lib/include/Ipc/QtSlaveLauncher.h
diff --git a/lib/include/Ipc/moc_Slave.cxx_parameters b/lib/include/Ipc/moc_Slave.cxx_parameters
deleted file mode 100644
index 276cf23..0000000
--- a/lib/include/Ipc/moc_Slave.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Ipc/moc_Slave.cxx
-/tmp/foo/lib/include/Ipc/Slave.h
diff --git a/lib/include/Ipc/moc_SlaveLauncher.cxx_parameters b/lib/include/Ipc/moc_SlaveLauncher.cxx_parameters
deleted file mode 100644
index 4144ec8..0000000
--- a/lib/include/Ipc/moc_SlaveLauncher.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/Ipc/moc_SlaveLauncher.cxx
-/tmp/foo/lib/include/Ipc/SlaveLauncher.h
diff --git a/lib/include/ItalcConfiguration.h b/lib/include/ItalcConfiguration.h
index f2f414e..cc14ffd 100644
--- a/lib/include/ItalcConfiguration.h
+++ b/lib/include/ItalcConfiguration.h
@@ -2,7 +2,7 @@
  * ItalcConfiguration.h - a Configuration object storing system wide
  *                        configuration values
  *
- * Copyright (c) 2010-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -45,6 +45,8 @@ public:
 
 
 #define FOREACH_ITALC_CONFIG_PROPERTY(OP)												\
+		/* UI */																		\
+		OP( ItalcConfiguration, ItalcCore::config, BOOL, isHighDPIScalingEnabled, setHighDPIScalingEnabled, "EnableHighDPIScaling", "UI" );			\
 		/* iTALC Service */																\
 		OP( ItalcConfiguration, ItalcCore::config, BOOL, isTrayIconHidden, setTrayIconHidden, "HideTrayIcon", "Service" );			\
 		OP( ItalcConfiguration, ItalcCore::config, BOOL, lockWithDesktopSwitching, setLockWithDesktopSwitching, "LockWithDesktopSwitching", "Service" );			\
@@ -63,7 +65,6 @@ public:
 		OP( ItalcConfiguration, ItalcCore::config, BOOL, vncLowAccuracy, setVncLowAccuracy, "LowAccuracy", "VNC" );					\
 		/* Demo server */																\
 		OP( ItalcConfiguration, ItalcCore::config, INT, demoServerBackend, setDemoServerBackend, "Backend", "DemoServer" );		\
-		OP( ItalcConfiguration, ItalcCore::config, BOOL, isDemoServerMultithreaded, setDemoServerMultithreaded, "Multithreaded", "DemoServer" );		\
 		/* Network */																	\
 		OP( ItalcConfiguration, ItalcCore::config, INT, coreServerPort, setCoreServerPort, "CoreServerPort", "Network" );			\
 		OP( ItalcConfiguration, ItalcCore::config, INT, httpServerPort, setHttpServerPort, "HttpServerPort", "Network" );			\
@@ -91,6 +92,7 @@ public:
 	// unluckily we have to declare slots manually as Qt's MOC doesn't do any
 	// macro expansion :-(
 public slots:
+	void setHighDPIScalingEnabled( bool );
 	void setTrayIconHidden( bool );
 	void setLockWithDesktopSwitching( bool );
 	void setServiceAutostart( bool );
@@ -105,7 +107,6 @@ public slots:
 	void setVncPollFullScreen( bool );
 	void setVncLowAccuracy( bool );
 	void setDemoServerBackend( int );
-	void setDemoServerMultithreaded( bool );
 	void setCoreServerPort( int );
 	void setDemoServerPort( int );
 	void setHttpServerPort( int );
diff --git a/lib/include/ItalcCore.h b/lib/include/ItalcCore.h
index 6cb1ea7..4072245 100644
--- a/lib/include/ItalcCore.h
+++ b/lib/include/ItalcCore.h
@@ -1,7 +1,7 @@
 /*
  * ItalcCore.h - definitions for iTALC Core
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -39,6 +39,7 @@ class SocketDevice;
 
 namespace ItalcCore
 {
+	void setupApplicationParameters();
 	bool init();
 	bool initAuthentication( int credentialTypes =
 										AuthenticationCredentials::AllTypes );
diff --git a/lib/include/ItalcCoreConnection.h b/lib/include/ItalcCoreConnection.h
index ba52e4b..fea4168 100644
--- a/lib/include/ItalcCoreConnection.h
+++ b/lib/include/ItalcCoreConnection.h
@@ -1,7 +1,7 @@
 /*
  * ItalcCoreConnection.h - declaration of class ItalcCoreConnection
  *
- * Copyright (c) 2008-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2008-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -90,7 +90,7 @@ public:
 	void logonUser( const QString &uname, const QString &pw,
 						const QString &domain );
 	void logoutUser();
-	void displayTextMessage( const QString &msg );
+	void displayTextMessage( const QString& title, const QString &msg );
 
 	void powerOnComputer( const QString &mac );
 	void powerDownComputer();
diff --git a/lib/include/ItalcVncConnection.h b/lib/include/ItalcVncConnection.h
index 5ea6b17..47d1db7 100644
--- a/lib/include/ItalcVncConnection.h
+++ b/lib/include/ItalcVncConnection.h
@@ -1,7 +1,7 @@
 /*
  * ItalcVncConnection.h - declaration of ItalcVncConnection class
  *
- * Copyright (c) 2008-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2008-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -33,10 +33,10 @@
 #include <QtCore/QReadWriteLock>
 #include <QtCore/QThread>
 #include <QtCore/QWaitCondition>
+#include <QtGui/QImage>
 
 #include "ItalcCore.h"
 #include "ItalcRfbExt.h"
-#include "FastQImage.h"
 
 class PrivateDSAKey;
 
@@ -86,7 +86,7 @@ public:
 
 	const QImage image( int x = 0, int y = 0, int w = 0, int h = 0 ) const;
 	void setImage( const QImage &img );
-	void stop();
+	void stop( bool deleteAfterFinished = false );
 	void reset( const QString &host );
 	void setHost( const QString &host );
 	void setPort( int port );
@@ -159,7 +159,7 @@ public:
 		}
 	}
 
-	FastQImage scaledScreen()
+	QImage scaledScreen()
 	{
 		rescaleScreen();
 		return m_scaledScreen;
@@ -205,6 +205,10 @@ protected:
 
 
 private:
+	enum {
+		ThreadTerminationTimeout = 10000
+	};
+
 	// hooks for LibVNCClient
 	static rfbBool hookNewClient( rfbClient *cl );
 	static void hookUpdateFB( rfbClient *cl, int x, int y, int w, int h );
@@ -229,13 +233,12 @@ private:
 	mutable QReadWriteLock m_imgLock;
 	QQueue<ClientEvent *> m_eventQueue;
 
-	FastQImage m_image;
+	QImage m_image;
 	bool m_scaledScreenNeedsUpdate;
-	FastQImage m_scaledScreen;
+	QImage m_scaledScreen;
 	QSize m_scaledSize;
 
 	volatile State m_state;
-	volatile bool m_stopped;
 
 
 } ;
diff --git a/lib/include/LocalSystem.h b/lib/include/LocalSystem.h
index f05120c..b3e1ab7 100644
--- a/lib/include/LocalSystem.h
+++ b/lib/include/LocalSystem.h
@@ -1,7 +1,7 @@
 /*
  * LocalSystem.h - misc. platform-specific stuff
  *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -190,7 +190,8 @@ namespace LocalSystem
 	void logoutUser();
 
 #ifdef ITALC_BUILD_WIN32
-	BOOL enablePrivilege( LPCTSTR lpszPrivilegeName, BOOL bEnable );
+	BOOL enablePrivilege( const QString& privilegeName, bool enable );
+	HWND getHWNDForWidget( const QWidget* widget );
 #endif
 
 	void activateWindow( QWidget * _window );
diff --git a/lib/include/LockWidget.h b/lib/include/LockWidget.h
index d95acff..f750861 100644
--- a/lib/include/LockWidget.h
+++ b/lib/include/LockWidget.h
@@ -26,7 +26,7 @@
 
 #include <italcconfig.h>
 
-#include <QtGui/QWidget>
+#include <QWidget>
 #include <QtGui/QPixmap>
 
 #include "SystemKeyTrapper.h"
@@ -50,8 +50,10 @@ public:
 private:
 	virtual void paintEvent( QPaintEvent * );
 #ifdef ITALC_BUILD_LINUX
+#if QT_VERSION < 0x050000
 	virtual bool x11Event( XEvent * _e );
 #endif
+#endif
 
 	QPixmap m_background;
 	Modes m_mode;
diff --git a/lib/include/Logger.h b/lib/include/Logger.h
index 2a04734..cda0b7a 100644
--- a/lib/include/Logger.h
+++ b/lib/include/Logger.h
@@ -65,7 +65,7 @@ private:
 	void outputMessage( const QString &msg );
 
 	static QString formatMessage( LogLevel ll, const QString &msg );
-	static void qtMsgHandler( QtMsgType msgType, const char *msg );
+	static void qtMsgHandler( QtMsgType msgType, const QMessageLogContext &, const QString& msg );
 
 	static LogLevel logLevel;
 	static Logger *instance;
diff --git a/lib/include/PasswordDialog.h b/lib/include/PasswordDialog.h
index dfd9f24..d11a39d 100644
--- a/lib/include/PasswordDialog.h
+++ b/lib/include/PasswordDialog.h
@@ -27,7 +27,7 @@
 
 #include "AuthenticationCredentials.h"
 
-#include <QtGui/QDialog>
+#include <QDialog>
 
 namespace Ui { class PasswordDialog; }
 
diff --git a/lib/include/ProgressWidget.h b/lib/include/ProgressWidget.h
index 0805074..981de69 100644
--- a/lib/include/ProgressWidget.h
+++ b/lib/include/ProgressWidget.h
@@ -27,7 +27,7 @@
 
 #include <QtCore/QVector>
 #include <QtGui/QPixmap>
-#include <QtGui/QWidget>
+#include <QWidget>
 
 
 class ProgressWidget : public QWidget
diff --git a/lib/include/SocketDevice.h b/lib/include/SocketDevice.h
index 268b74c..f0cad40 100644
--- a/lib/include/SocketDevice.h
+++ b/lib/include/SocketDevice.h
@@ -1,7 +1,7 @@
 /*
  * SocketDevice.h - SocketDevice abstraction
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -25,6 +25,7 @@
 #ifndef SOCKET_DEVICE_H
 #define SOCKET_DEVICE_H
 
+#include <QtCore/QDataStream>
 #include <QtCore/QIODevice>
 #include <QtCore/QString>
 #include <QtCore/QVariant>
@@ -60,7 +61,9 @@ public:
 	QVariant read()
 	{
 		QDataStream d( this );
-		return d;
+		QVariant v;
+		d >> v;
+		return v;
 	}
 
 	void write( const QVariant &v )
diff --git a/lib/include/VncView.h b/lib/include/VncView.h
index 542839f..a90fac6 100644
--- a/lib/include/VncView.h
+++ b/lib/include/VncView.h
@@ -1,7 +1,7 @@
 /*
  * VncView.h - VNC viewer widget
  *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -28,11 +28,11 @@
 #include <italcconfig.h>
 
 #include <QtCore/QEvent>
+#include <QtCore/QPointer>
 #include <QtCore/QThread>
-#include <QtGui/QWidget>
+#include <QWidget>
 
 #include "ItalcVncConnection.h"
-#include "FastQImage.h"
 
 
 class ProgressWidget;
@@ -65,9 +65,9 @@ public:
 		return m_scaledView;
 	}
 
-	ItalcVncConnection * vncConnection()
+	ItalcVncConnection* vncConnection()
 	{
-		return &m_vncConn;
+		return m_vncConn;
 	}
 
 	QSize scaledSize() const;
@@ -118,12 +118,12 @@ private:
 	void updateLocalCursor();
 
 
-	ItalcVncConnection m_vncConn;
+	QPointer<ItalcVncConnection> m_vncConn;
 
 	Mode m_mode;
 	int m_x, m_y, m_w, m_h;
 	bool m_repaint;
-	FastQImage m_frame;
+	QImage m_frame;
 	QImage m_cursorShape;
 	int m_cursorX;
 	int m_cursorY;
@@ -142,9 +142,6 @@ private:
 
 	SystemKeyTrapper * m_sysKeyTrapper;
 
-
-	friend class remoteControlWidget;
-
 } ;
 
 #endif
diff --git a/lib/include/moc_AboutDialog.cxx_parameters b/lib/include/moc_AboutDialog.cxx_parameters
deleted file mode 100644
index f86f692..0000000
--- a/lib/include/moc_AboutDialog.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_AboutDialog.cxx
-/tmp/foo/lib/include/AboutDialog.h
diff --git a/lib/include/moc_AuthenticationCredentials.cxx_parameters b/lib/include/moc_AuthenticationCredentials.cxx_parameters
deleted file mode 100644
index 55fe301..0000000
--- a/lib/include/moc_AuthenticationCredentials.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_AuthenticationCredentials.cxx
-/tmp/foo/lib/include/AuthenticationCredentials.h
diff --git a/lib/include/moc_DecoratedMessageBox.cxx_parameters b/lib/include/moc_DecoratedMessageBox.cxx_parameters
deleted file mode 100644
index 0c9f211..0000000
--- a/lib/include/moc_DecoratedMessageBox.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_DecoratedMessageBox.cxx
-/tmp/foo/lib/include/DecoratedMessageBox.h
diff --git a/lib/include/moc_DsaKey.cxx_parameters b/lib/include/moc_DsaKey.cxx_parameters
deleted file mode 100644
index dbbfb5d..0000000
--- a/lib/include/moc_DsaKey.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_DsaKey.cxx
-/tmp/foo/lib/include/DsaKey.h
diff --git a/lib/include/moc_FastQImage.cxx_parameters b/lib/include/moc_FastQImage.cxx_parameters
deleted file mode 100644
index 5a3f196..0000000
--- a/lib/include/moc_FastQImage.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_FastQImage.cxx
-/tmp/foo/lib/include/FastQImage.h
diff --git a/lib/include/moc_Inject.cxx_parameters b/lib/include/moc_Inject.cxx_parameters
deleted file mode 100644
index 2a2d7f3..0000000
--- a/lib/include/moc_Inject.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_Inject.cxx
-/tmp/foo/lib/include/Inject.h
diff --git a/lib/include/moc_ItalcConfiguration.cxx_parameters b/lib/include/moc_ItalcConfiguration.cxx_parameters
deleted file mode 100644
index 5141c0f..0000000
--- a/lib/include/moc_ItalcConfiguration.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ItalcConfiguration.cxx
-/tmp/foo/lib/include/ItalcConfiguration.h
diff --git a/lib/include/moc_ItalcCore.cxx_parameters b/lib/include/moc_ItalcCore.cxx_parameters
deleted file mode 100644
index f405a4a..0000000
--- a/lib/include/moc_ItalcCore.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ItalcCore.cxx
-/tmp/foo/lib/include/ItalcCore.h
diff --git a/lib/include/moc_ItalcCoreConnection.cxx_parameters b/lib/include/moc_ItalcCoreConnection.cxx_parameters
deleted file mode 100644
index af9c28b..0000000
--- a/lib/include/moc_ItalcCoreConnection.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ItalcCoreConnection.cxx
-/tmp/foo/lib/include/ItalcCoreConnection.h
diff --git a/lib/include/moc_ItalcRfbExt.cxx_parameters b/lib/include/moc_ItalcRfbExt.cxx_parameters
deleted file mode 100644
index c6f02cd..0000000
--- a/lib/include/moc_ItalcRfbExt.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ItalcRfbExt.cxx
-/tmp/foo/lib/include/ItalcRfbExt.h
diff --git a/lib/include/moc_ItalcVncConnection.cxx_parameters b/lib/include/moc_ItalcVncConnection.cxx_parameters
deleted file mode 100644
index d26510e..0000000
--- a/lib/include/moc_ItalcVncConnection.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ItalcVncConnection.cxx
-/tmp/foo/lib/include/ItalcVncConnection.h
diff --git a/lib/include/moc_LocalSystem.cxx_parameters b/lib/include/moc_LocalSystem.cxx_parameters
deleted file mode 100644
index ceeda94..0000000
--- a/lib/include/moc_LocalSystem.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_LocalSystem.cxx
-/tmp/foo/lib/include/LocalSystem.h
diff --git a/lib/include/moc_LockWidget.cxx_parameters b/lib/include/moc_LockWidget.cxx_parameters
deleted file mode 100644
index b1a9176..0000000
--- a/lib/include/moc_LockWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_LockWidget.cxx
-/tmp/foo/lib/include/LockWidget.h
diff --git a/lib/include/moc_Logger.cxx_parameters b/lib/include/moc_Logger.cxx_parameters
deleted file mode 100644
index ec368e0..0000000
--- a/lib/include/moc_Logger.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_Logger.cxx
-/tmp/foo/lib/include/Logger.h
diff --git a/lib/include/moc_LogonAuthentication.cxx_parameters b/lib/include/moc_LogonAuthentication.cxx_parameters
deleted file mode 100644
index 1a0ce78..0000000
--- a/lib/include/moc_LogonAuthentication.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_LogonAuthentication.cxx
-/tmp/foo/lib/include/LogonAuthentication.h
diff --git a/lib/include/moc_PasswordDialog.cxx_parameters b/lib/include/moc_PasswordDialog.cxx_parameters
deleted file mode 100644
index f5f6573..0000000
--- a/lib/include/moc_PasswordDialog.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_PasswordDialog.cxx
-/tmp/foo/lib/include/PasswordDialog.h
diff --git a/lib/include/moc_ProgressWidget.cxx_parameters b/lib/include/moc_ProgressWidget.cxx_parameters
deleted file mode 100644
index 2783554..0000000
--- a/lib/include/moc_ProgressWidget.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_ProgressWidget.cxx
-/tmp/foo/lib/include/ProgressWidget.h
diff --git a/lib/include/moc_QuadTree.cxx_parameters b/lib/include/moc_QuadTree.cxx_parameters
deleted file mode 100644
index a2d713c..0000000
--- a/lib/include/moc_QuadTree.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_QuadTree.cxx
-/tmp/foo/lib/include/QuadTree.h
diff --git a/lib/include/moc_Snapshot.cxx_parameters b/lib/include/moc_Snapshot.cxx_parameters
deleted file mode 100644
index ea1a614..0000000
--- a/lib/include/moc_Snapshot.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_Snapshot.cxx
-/tmp/foo/lib/include/Snapshot.h
diff --git a/lib/include/moc_SocketDevice.cxx_parameters b/lib/include/moc_SocketDevice.cxx_parameters
deleted file mode 100644
index 0c7274d..0000000
--- a/lib/include/moc_SocketDevice.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_SocketDevice.cxx
-/tmp/foo/lib/include/SocketDevice.h
diff --git a/lib/include/moc_SystemKeyTrapper.cxx_parameters b/lib/include/moc_SystemKeyTrapper.cxx_parameters
deleted file mode 100644
index ca51709..0000000
--- a/lib/include/moc_SystemKeyTrapper.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_SystemKeyTrapper.cxx
-/tmp/foo/lib/include/SystemKeyTrapper.h
diff --git a/lib/include/moc_VncView.cxx_parameters b/lib/include/moc_VncView.cxx_parameters
deleted file mode 100644
index 51e5589..0000000
--- a/lib/include/moc_VncView.cxx_parameters
+++ /dev/null
@@ -1,22 +0,0 @@
--I/usr/include/qt4
--I/usr/include/qt4/QtGui
--I/usr/include/qt4/QtXml
--I/usr/include/qt4/QtNetwork
--I/usr/include/qt4/QtCore
--I/tmp/foo
--I/tmp/foo/lib/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--I/usr/include
--DQT_GUI_LIB
--DQT_XML_LIB
--DQT_NETWORK_LIB
--DQT_CORE_LIB
--DLIBVNCSERVER_HAVE_LIBZ
--DLIBVNCSERVER_HAVE_LIBJPEG
--DLIBVNCSERVER_HAVE_LIBPNG
--o
-/tmp/foo/lib/include/moc_VncView.cxx
-/tmp/foo/lib/include/VncView.h
diff --git a/lib/include/rfb/keysym.h b/lib/include/rfb/keysym.h
index 219f95b..92d5158 100644
--- a/lib/include/rfb/keysym.h
+++ b/lib/include/rfb/keysym.h
@@ -162,7 +162,7 @@ SOFTWARE.
 #define XK_Zen_Koho		0xFF3D	/* Multiple/All Candidate(s) */
 #define XK_Mae_Koho		0xFF3E	/* Previous Candidate */
 
-/* 0xFF31 thru 0xFF3F are under XK_KOREAN */
+/* 0xFF31 through 0xFF3F are under XK_KOREAN */
 
 /* Cursor control & motion */
 
@@ -240,7 +240,7 @@ SOFTWARE.
 
 
 /*
- * Auxilliary Functions; note the duplicate definitions for left and right
+ * Auxiliary Functions; note the duplicate definitions for left and right
  * function keys;  Sun keyboards and a few other manufactures have such
  * function key groups on the left and/or right sides of the keyboard.
  * We've not found a keyboard with more than 35 function keys total.
diff --git a/lib/include/rfb/rfb.h b/lib/include/rfb/rfb.h
index 45d5223..3010763 100644
--- a/lib/include/rfb/rfb.h
+++ b/lib/include/rfb/rfb.h
@@ -52,7 +52,7 @@ extern "C"
 #include <sys/types.h>
 #endif
 
-#ifdef __MINGW32__
+#ifdef WIN32
 #undef SOCKET
 #include <winsock2.h>
 #include <ws2tcpip.h>
@@ -264,7 +264,7 @@ typedef struct _rfbScreenInfo
     SOCKET listenSock;
     int maxSock;
     int maxFd;
-#ifdef __MINGW32__
+#ifdef WIN32
     struct fd_set allFds;
 #else
     fd_set allFds;
@@ -474,7 +474,7 @@ typedef struct _rfbClientRec {
        authentication.  If the right conditions are met this state will be
        set (see the auth.c file) when rfbProcessClientInitMessage is called.
 
-       If the state is RFB_INITIALISATION_SHARED we should not expect to recieve
+       If the state is RFB_INITIALISATION_SHARED we should not expect to receive
        any ClientInit message, but instead should proceed to the next stage
        of initialisation as though an implicit ClientInit message was received
        with a shared-flag of true.  (There is currently no corresponding
@@ -762,6 +762,7 @@ extern rfbBool webSocketsCheck(rfbClientPtr cl);
 extern rfbBool webSocketCheckDisconnect(rfbClientPtr cl);
 extern int webSocketsEncode(rfbClientPtr cl, const char *src, int len, char **dst);
 extern int webSocketsDecode(rfbClientPtr cl, char *dst, int len);
+extern rfbBool webSocketsHasDataInBuffer(rfbClientPtr cl);
 #endif
 
 /* rfbserver.c */
@@ -1249,14 +1250,14 @@ rfbBool rfbUpdateClient(rfbClientPtr cl);
  Try example.c: it outputs on which port it listens (default: 5900), so it is
  display 0. To view, call @code	vncviewer :0 @endcode
  You should see a sheet with a gradient and "Hello World!" written on it. Try
- to paint something. Note that everytime you click, there is some bigger blot,
+ to paint something. Note that every time you click, there is some bigger blot,
  whereas when you drag the mouse while clicked you draw a line. The size of the
  blot depends on the mouse button you click. Open a second vncviewer with
  the same parameters and watch it as you paint in the other window. This also
  works over internet. You just have to know either the name or the IP of your
  machine. Then it is @code vncviewer machine.where.example.runs.com:0 @endcode
  or similar for the remote client. Now you are ready to type something. Be sure
- that your mouse sits still, because everytime the mouse moves, the cursor is
+ that your mouse sits still, because every time the mouse moves, the cursor is
  reset to the position of the pointer! If you are done with that demo, press
  the down or up arrows. If your viewer supports it, then the dimensions of the
  sheet change. Just press Escape in the viewer. Note that the server still
diff --git a/lib/include/rfb/rfbclient.h b/lib/include/rfb/rfbclient.h
index 4ea0dd1..da47406 100644
--- a/lib/include/rfb/rfbclient.h
+++ b/lib/include/rfb/rfbclient.h
@@ -31,6 +31,10 @@
  * @file rfbclient.h
  */
 
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN /* Prevent loading any Winsock 1.x headers from windows.h */
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -169,9 +173,17 @@ typedef rfbCredential* (*GetCredentialProc)(struct _rfbClient* client, int crede
 typedef rfbBool (*MallocFrameBufferProc)(struct _rfbClient* client);
 typedef void (*GotXCutTextProc)(struct _rfbClient* client, const char *text, int textlen);
 typedef void (*BellProc)(struct _rfbClient* client);
-
+/**
+    Called when a cursor shape update was received from the server. The decoded cursor shape
+    will be in client->rcSource. It's up to the application to do something with this, e.g. draw
+    into a viewer's window. If you want the server to draw the cursor into the framebuffer, be
+    careful not to announce remote cursor support, i.e. not include rfbEncodingXCursor or
+    rfbEncodingRichCursor in SetFormatAndEncodings().
+*/
 typedef void (*GotCursorShapeProc)(struct _rfbClient* client, int xhot, int yhot, int width, int height, int bytesPerPixel);
 typedef void (*GotCopyRectProc)(struct _rfbClient* client, int src_x, int src_y, int w, int h, int dest_x, int dest_y);
+typedef rfbBool (*LockWriteToTLSProc)(struct _rfbClient* client);
+typedef rfbBool (*UnlockWriteToTLSProc)(struct _rfbClient* client);
 
 typedef struct _rfbClient {
 	uint8_t* frameBuffer;
@@ -266,6 +278,7 @@ typedef struct _rfbClient {
 
 
 	/* cursor.c */
+	/** Holds cursor shape data when received from server. */
 	uint8_t *rcSource, *rcMask;
 
 	/** private data pointer */
@@ -350,10 +363,19 @@ typedef struct _rfbClient {
         /* Output Window ID. When set, client application enables libvncclient to perform direct rendering in its window */
         unsigned long outputWindow;
 
+	/** Hooks for optional protection WriteToTLS() by mutex */
+	LockWriteToTLSProc LockWriteToTLS;
+	UnlockWriteToTLSProc UnlockWriteToTLS;
+
 } rfbClient;
 
 /* cursor.c */
-
+/**
+ * Handles XCursor and RichCursor shape updates from the server.
+ * We emulate cursor operating on the frame buffer (that is
+ * why we call it "software cursor"). This decodes the received cursor
+ * shape and hands it over to GotCursorShapeProc, if set.
+ */
 extern rfbBool HandleCursorShape(rfbClient* client,int xhot, int yhot, int width, int height, uint32_t enc);
 
 /* listen.c */
diff --git a/lib/include/rfb/rfbproto.h b/lib/include/rfb/rfbproto.h
index 9bfd2d2..1da1fa4 100644
--- a/lib/include/rfb/rfbproto.h
+++ b/lib/include/rfb/rfbproto.h
@@ -49,17 +49,17 @@
  *      messages have to be explained by comments.
  */
 
+#include <stdint.h>
 
 #if defined(WIN32) && !defined(__MINGW32__)
 #define LIBVNCSERVER_WORDS_BIGENDIAN
 #define rfbBool int
 #include <sys/timeb.h>
-#include <winsock.h>
+#include <winsock2.h>
 #undef SOCKET
 #define SOCKET int
 #else
 #include <rfb/rfbconfig.h>
-#include <rfb/rfbint.h>
 #endif
 #include <rfb/keysym.h>
 
@@ -71,17 +71,16 @@
 #endif
 #endif
 
-/* some autotool versions do not properly prefix
-   WORDS_BIGENDIAN, so do that manually */
-#ifdef WORDS_BIGENDIAN
-#define LIBVNCSERVER_WORDS_BIGENDIAN
-#endif
+#if !defined(_WIN32)
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define LIBVNCSERVER_WORDS_BIGENDIAN 1
+# endif
+#endif /* !_WIN32 */
 
+#define rfbMax(a,b) (((a)>(b))?(a):(b))
 #if !defined(WIN32) || defined(__MINGW32__)
 #ifndef __cplusplus
-#ifndef max
-#define max(a,b) (((a)>(b))?(a):(b))
-#endif
 #endif
 #ifdef LIBVNCSERVER_HAVE_SYS_TIME_H
 #include <sys/time.h>
@@ -112,7 +111,7 @@ typedef uint32_t in_addr_t;
 #define                INADDR_NONE     ((in_addr_t) 0xffffffff)
 #endif
 
-#define MAX_ENCODINGS 32
+#define MAX_ENCODINGS 64
 
 /*****************************************************************************
  *
@@ -870,21 +869,6 @@ typedef struct {
 #endif
 
 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * h264 - h264 encoding.  We have an rfbH264Header structure
- * giving the number of bytes following.  Finally the data follows is
- * h264 encoded frame.
- */
-
-typedef struct {
-    uint32_t nBytes;
-	uint32_t slice_type;
-	uint32_t width;
-	uint32_t height;
-} rfbH264Header;
-
-#define sz_rfbH264Header 16
-
-/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  * XCursor encoding. This is a special encoding used to transmit X-style
  * cursor shapes from server to clients. Note that for this encoding,
  * coordinates in rfbFramebufferUpdateRectHeader structure hold hotspot
@@ -1159,7 +1143,7 @@ typedef struct _rfbFileTransferMsg {
 #define rfbRErrorCmd			0xFFFFFFFF/*  Error when a command fails on remote side (ret in "size" field) */
 
 #define sz_rfbBlockSize			8192  /*  Size of a File Transfer packet (before compression) */
-#define rfbZipDirectoryPrefix   "!UVNCDIR-\0" /*  Transfered directory are zipped in a file with this prefix. Must end with "-" */
+#define rfbZipDirectoryPrefix   "!UVNCDIR-\0" /*  Transferred directory are zipped in a file with this prefix. Must end with "-" */
 #define sz_rfbZipDirectoryPrefix 9 
 #define rfbDirPrefix			"[ "
 #define rfbDirSuffix			" ]"		
diff --git a/lib/resources/ar.qm b/lib/resources/ar.qm
deleted file mode 100644
index 431bd8b..0000000
Binary files a/lib/resources/ar.qm and /dev/null differ
diff --git a/lib/resources/ar.ts b/lib/resources/ar.ts
index 04ed40c..d2bd737 100644
--- a/lib/resources/ar.ts
+++ b/lib/resources/ar.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="ar_SA">
+<TS version="2.1" language="ar_SA">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -34,7 +34,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation>ترخيص</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -442,6 +442,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation>يرجى ملاحظة أن بعض التغييرات لن يتم تفعيلها إلا بعد إعادة تشغيل نظام "آيتالك"‏</translation>
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -598,11 +698,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation>سيتم إتخاذ الإجراءات التالية</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>إنشاء مفاتيح وصول جديدة</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>استيراد مفتاح وصول عام من</translation>
     </message>
@@ -610,15 +710,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation><غير معروف></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>مفتاح أو مفاتيح الوصول إلى الكتابة إلى </translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>تصدير مفتاح عام إلى</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>تهيئة دور المستخدم</translation>
     </message>
diff --git a/lib/resources/sv.ts b/lib/resources/bb.ts
similarity index 90%
copy from lib/resources/sv.ts
copy to lib/resources/bb.ts
index 5ab525e..0055882 100644
--- a/lib/resources/sv.ts
+++ b/lib/resources/bb.ts
@@ -1,44 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="sv">
+<TS version="2.1" language="bb">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">Om iTALC</translation>
+        <translation>Àbaut iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">Om</translation>
+        <translation>Àbaut</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">Upphovsmän</translation>
+        <translation type="unfinished">Òŧās</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">Översättning</translation>
-    </message>
-    <message>
-        <source>Current language not translated yet (or native English).
-
-If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Transleiçion</translation>
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">Licens</translation>
+        <translation>Laisèns</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Current language not translated yet (or native English).
+
+If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
@@ -52,11 +52,12 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     </message>
     <message>
         <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <translation>Konförm desktop akses</translation>
     </message>
     <message>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
 </context>
 <context>
@@ -75,19 +76,19 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation>Klassrum/datorer</translation>
+        <translation>Klassrum/kompyutas</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation>IP-adress</translation>
+        <translation>IP-ädjres</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation>Användarnamn</translation>
+        <translation>Yusāneims</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation>Visa användarnamn</translation>
+        <translation>Displei yusāneims</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
@@ -103,43 +104,43 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation>Dölj lärardatorer</translation>
+        <translation>Neimai tiča-na kompyutās</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation>Visa/dölj</translation>
+        <translation>Displei/neimai</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation>Redigera inställningar</translation>
+        <translation>Edit setiŋs</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation>Ta bort</translation>
+        <translation>Rīmūv</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation>Visa alla datorer i klassrummet</translation>
+        <translation>Displei ol kompyutās in klassrūm</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation>Dölj alla datorer i klassrummet</translation>
+        <translation>Neimai ol kompyutās in klassrūm</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation>Redigera namn</translation>
+        <translation>Edit neim</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation>Ta bort klassrum</translation>
+        <translation>Rīmūv klassrūm</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation>Lägg till dator</translation>
+        <translation>Ädd kompyutā</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation>Lägg till klassrum</translation>
+        <translation>Ädd klassrūm</translation>
     </message>
     <message>
         <source>No configuration-file found</source>
@@ -169,23 +170,23 @@ Du måste redigera den. Om inte så bör du ta bort denna fil.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation>Välj utdatafil</translation>
+        <translation>Silekt output-fayl</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation>Textfiler (*.txt)</translation>
+        <translation>Tekstfayls (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation>Åtgärder för markerade</translation>
+        <translation>Akçions für silekten</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation>Åtgärder</translation>
+        <translation>Akçions</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation>Åtgärder för %1</translation>
+        <translation>Akçions für %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
@@ -294,7 +295,7 @@ Vill du skapa ett nytt klassrum nu?</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/värdnamn</translation>
+        <translation>IP/hostneim</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
@@ -302,7 +303,7 @@ Vill du skapa ett nytt klassrum nu?</translation>
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">Namn</translation>
+        <translation>Neim</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
@@ -310,7 +311,7 @@ Vill du skapa ett nytt klassrum nu?</translation>
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>MAK ädjres</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
@@ -334,15 +335,17 @@ Vill du skapa ett nytt klassrum nu?</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">Annan/odefinierad dator</translation>
+        <translation>Kita/mi-difainen kompyutā</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
 </context>
 <context>
@@ -411,7 +414,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Other</source>
-        <translation>Annan</translation>
+        <translation>Kita</translation>
     </message>
     <message>
         <source>Settings for multi-logon</source>
@@ -447,6 +450,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Observera att vissa  [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -518,18 +621,6 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished">Hur fungerar det?</translation>
     </message>
     <message>
-        <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
-
-Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
-
-The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished">iTALC-åtkomstnycklar består av två delar som tillhör varandra, en privat och en publik nyckeldel.
-
-Användare på huvuddatorn kan komma åt klientdatorer med den privata nyckeldelen. Det är viktigt att endast behöriga användare har läsrättigheter till den privata nyckeldelen.
-
-Den publika delen används på klientdatorerna för att verifiera att inkommande anslutningar är behöriga.</translation>
-    </message>
-    <message>
         <source>Assistant mode</source>
         <translation type="unfinished">Guideläge</translation>
     </message>
@@ -571,7 +662,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Annan</translation>
+        <translation>Kita</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
@@ -605,11 +696,11 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
         <source>The following actions will be taken:</source>
         <translation type="unfinished">Följande åtgärder kommer att genomföras:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished">• Skapa nya åtkomstnycklar</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished">• Importera publik åtkomstnyckel från</translation>
     </message>
@@ -617,15 +708,15 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
         <source><unknown></source>
         <translation type="unfinished"><okänt></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished">• Skriv åtkomstnycklar till</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished">• Exportera publik nyckel till</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished">• Konfigurera för användarrollen</translation>
     </message>
@@ -639,7 +730,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished">Ogiltig publik nyckel</translation>
+        <translation>Invälid pùblik kyivälyu</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
@@ -671,7 +762,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished">Import av publik nyckel</translation>
+        <translation>Pùblik kyivälyu import</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
@@ -679,6 +770,15 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
+        <translation type="unfinished">
+            </translation>
+    </message>
+    <message>
+        <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
+
+Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
+
+The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -693,7 +793,8 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
@@ -779,7 +880,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Logging</source>
-        <translation>Loggning</translation>
+        <translation>logiŋ</translation>
     </message>
     <message>
         <source>Log file directory</source>
@@ -791,7 +892,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Log level</source>
-        <translation>Loggnivå</translation>
+        <translation>Log levol</translation>
     </message>
     <message>
         <source>Nothing</source>
@@ -939,7 +1040,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>MainWindow</source>
-        <translation>Huvudfönster</translation>
+        <translation>MainWindow</translation>
     </message>
     <message>
         <source>toolBar</source>
@@ -1019,7 +1120,7 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Overview mode</source>
-        <translation>Översiktsläge</translation>
+        <translation>Ovèrvyu moud</translation>
     </message>
     <message>
         <source>Overview</source>
@@ -1167,231 +1268,280 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
     </message>
     <message>
         <source>Debugging</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Log to standard error output</source>
-        <translation type="unfinished"></translation>
+        <translation>Log tu ständard öra output</translation>
     </message>
     <message>
         <source>Log to Windows event log</source>
-        <translation type="unfinished"></translation>
+        <translation>Log tu Windows ivent log</translation>
     </message>
     <message>
         <source>Backend</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>iTALC 1 demo server</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>HTTP server port</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Allow connections from localhost only</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Key file authentication</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>ACL-based logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Public key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Beis direktori für pùblik kyivälyu fayl</translation>
     </message>
     <message>
         <source>Private key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Beis direktori für praiveit kyivälyu fayl</translation>
     </message>
     <message>
         <source>Launch key file assistant</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Manage permissions</source>
-        <translation type="unfinished"></translation>
+        <translation>Männeij pörmiçions</translation>
     </message>
     <message>
         <source>Test</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Access confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Debugging iTALC</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>1)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>2)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>3)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>4)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Generate bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>5)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
 <br/>
 <br/>
 Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished"></translation>
+        <translation>Logfayls klīren</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Poll full screen (leave this enabled per default)</source>
+        <translation type="unfinished">
+            </translation>
+    </message>
+    <message>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1458,15 +1608,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Password</source>
-        <translation>Lösenord</translation>
+        <translation>Paswörd</translation>
     </message>
     <message>
         <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Logon</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Männeij</translation>
     </message>
 </context>
 <context>
@@ -1586,11 +1736,12 @@ p, li { white-space: pre-wrap; }
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">Fjärrinloggning</translation>
+        <translation>Rīmot logon</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
     <message>
         <source>Username</source>
@@ -1598,7 +1749,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Lösenord</translation>
+        <translation>Paswörd</translation>
     </message>
     <message>
         <source>Domain</source>
@@ -1609,11 +1760,12 @@ p, li { white-space: pre-wrap; }
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished"></translation>
+        <translation>Rùn kommands</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
 </context>
 <context>
@@ -1687,7 +1839,8 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">
+            </translation>
     </message>
 </context>
 <context>
@@ -1744,7 +1897,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Logga ut användare</translation>
+        <translation>Logout yusā</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
@@ -1764,7 +1917,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Execute commands</source>
-        <translation>Kör kommandon</translation>
+        <translation>Iksekyut kommands</translation>
     </message>
 </context>
 </TS>
diff --git a/lib/resources/pt_br.ts b/lib/resources/ca_ES.ts
similarity index 57%
copy from lib/resources/pt_br.ts
copy to lib/resources/ca_ES.ts
index a9477fb..7602b07 100644
--- a/lib/resources/pt_br.ts
+++ b/lib/resources/ca_ES.ts
@@ -1,15 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ca_ES" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>Quant a iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation>Sobre</translation>
+        <translation>Quant a</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
@@ -17,389 +23,481 @@
     </message>
     <message>
         <source>Authors</source>
-        <translation>Autores</translation>
+        <translation>Autors</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation>Tradução</translation>
+        <translation>Traducció</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation>Idioma atual não traduzido ainda (ou está em Inglês nativo).
+        <translation>Traduït per
+
+Alexis Roda Villalonga <alexis.roda.villalonga at gmail dot com>
 
-Se você estiver interessado em traduzir o iTALC em seu idioma local ou outro idioma ou quer melhorar uma tradução existente, entre em contato com um desenvolvedor iTALC!</translation>
+Si voleu millorar una traducció existent, contacteu amb un desenvolupador d'iTALC!</translation>
     </message>
     <message>
         <source>License</source>
-        <translation>Licença</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished">iTALC -Ensino e Aprendizagem Inteligente com Computadores
-
-Copyright © 2004-2011 Tobias Doerffel / iTALC Solutions {2004-2013 ?}</translation>
+        <translation>Llicència</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation>Nunca para esta sessão</translation>
+        <source>Confirm desktop access</source>
+        <translation>Confirmeu l'accés a l'escriptori</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation>Sempre para esta sessão</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation>L'usuari %1 de l'equip %2 vol accedir al vostre escriptori. Voleu permetre-li accés?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation>Confirmar acesso ao desktop</translation>
+        <source>Never for this session</source>
+        <translation>Mai per a aquesta sessió</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation>O usuário %1 do computador %2 deseja acessar o seu desktop. Você quer conceder o acesso?</translation>
+        <source>Always for this session</source>
+        <translation>Sempre per a aquesta sessió</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation>Gerente de Sala de Aula</translation>
+        <translation>Gestor d'aules</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation>Use este espaço para gerenciar seus computadores e salas de aula de uma forma fácil.</translation>
+        <translation>Utilitzeu aquest espai per gestionar fàcilment els ordinadors i les aules.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation>Este é o lugar onde os computadores e salas de aula são gerenciados. Você pode adicionar computadores e salas de aula clicando à direita nesta lista.</translation>
+        <translation>Aquí és on es gestionen els ordinadors i les aules. Podeu afegir ordinadors o aules fent clic amb el botó de la dreta en aquesta llista.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation>Salas de aual/computadores</translation>
+        <translation>Aules/ordinadors</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation>Endereço IP</translation>
+        <translation>Adreça IP</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation>Nomes de usuários</translation>
+        <translation>Noms d'usuari</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation>Mostrar nomes de usuários</translation>
+        <translation>Mostra els noms d'usuari</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation>Use o menu de contexto (botão direito do mouse) para adicionar/remover computadores e/ou salas de aula.</translation>
+        <translation>Utilitzeu el menú contextual (botó de la dreta del ratolí) per afegir/eliminar ordinador i/o aules.</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation>Exportar para um arquivo texto</translation>
+        <source>Export to text file</source>
+        <translation>Exporta a un fitxer de text</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation>Use este botão para exportar esta lista de computadores e nomes de usuários para um arquivo texto. Você pode usar este arquivo mais tarde para recolher os arquivos dos usuários depois que um exame terminou. As vezes isso é necessário, porque alguns usuários podem ter terminado o exame mais cedo e ter feito logoff do computador e por isso impedindo você de recolher seus arquivos no final do exame.</translation>
+        <translation>Utilitzeu aquest botó per exportar aquesta llista d'ordinadors i noms d'usuari a un fitxer de text. Podeu utilitzar aquest fitxer més tard per recollir els arxius després d'acabar un examen. Açò de vegades és necessari, ja que alguns usuaris poden haver acabat i tancat la sessió abans, de manera que no és possible recuperar els seus fitxers al final de l'examen.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation>Ocultar computadores do professor</translation>
+        <translation>Amaga els ordinadors dels professors</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation>Mostrar/ocultar</translation>
+        <translation>Mostra/amaga</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation>Editar configurações</translation>
+        <translation>Edita la configuració</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation>Remover</translation>
+        <translation>Suprimeix</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation>Mostrar todos os computadores da sala de aula</translation>
+        <translation>Mostra tots els ordinadors de l'aula</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation>Ocultar todos os computadores da sala de aula</translation>
+        <translation>Amaga tots els ordinadors de l'aula</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation>Editar nome</translation>
+        <translation>Edita el nom</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation>Remover sala de aula</translation>
+        <translation>Suprimeix l'aula</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation>Adicionar computador</translation>
+        <translation>Afegeix un ordinador</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation>Adicionar sala de aula</translation>
+        <translation>Afegeix una aula</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation>Arquivo de configuração não encontrado</translation>
+        <source>No configuration file found</source>
+        <translation>No s'ha trobat cap fitxer de configuració</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation>Não foi possível abrir arquivo de configuração %1.
-É necessário adicionar no mínimo uma sala de aula e computadores usando o gerenciador de salas de aula que você encontra no lado esquerdo do programa.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>No es pot obrir el fitxer de configuració %1. Cal que afegiu almenys una aula i un ordinador utilitzant el gestor d'aules que trobareu dins el programa, en la barra lateral de l'esquerra.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation>Erro no arquivo de configuração</translation>
+        <source>Error in configuration file</source>
+        <translation>Hi ha un error en el fitxer de configuració</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo e terá que adicionar todas as salas de aula e computadores novamente.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>S'ha produït un error en analitzar el fitxer de configuració %1. Corregiu l'error manualment. També podeu esborrar el fitxer i afegir les aules i els ordinadors de nou.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>S'ha produït un error en analitzar el fitxer de configuració %1. Corregiu l'error manualment. També podeu esborrar el fitxer.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation>Selecionar arquivo de saida</translation>
+        <translation>Seleccioneu el fitxer de sortida</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation>Arquivos de texto (*.txt)</translation>
+        <translation>Fitxers de text (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation>Ações para selecionados</translation>
+        <translation>Accions per la selecció</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Accions</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation>Ações para %1</translation>
+        <translation>Accions per a %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation>Novo nome para a sala de aula</translation>
+        <translation>Nom nou per a l'aula</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation>Por favor, digite um novo nome para a sala de aula "%1".</translation>
+        <translation>Introduïu un nom nou per a l'aula "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation>Tem certeza que quer remover a sala de aula "%1"?
-Todos os computadores desta sala serão removidos também!</translation>
+        <translation>Esteu segur que voleu eliminar l'aula "%1"?
+També s'eliminaran tots els ordinadors que conté!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation>Sala de aula não encontrada</translation>
+        <translation>No s'ha trobat l'aula</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation>Antes de adicionar computadores, você tem que criar pelo menos uma sala de aula.
-Quer criar uma nova sala agora?</translation>
+        <translation>Abans de poder afegir ordinadors cal que creeu almenys una aula.
+Voleu crear una aula?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation>Nova sala de aula</translation>
+        <translation>Aula nova</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation>Por favor, digite o nome da sala de aula que você deseja criar.</translation>
+        <translation>Introduïu el nom de l'aula que voleu crear.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation>Estado desconhecido</translation>
+        <translation>Estat desconegut</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation>Nenhum usuário logado</translation>
+        <translation>No hi ha cap usuari connectat</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation>Computador inacessível</translation>
+        <translation>Amfitrió inaccessible</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation>Demonstração em execução</translation>
+        <translation>S'està executant una demostració</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation>Desktop bloqueado</translation>
+        <translation>S'ha blocat l'escriptori</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Missatge del professor</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores visíveis?</translation>
+        <translation>Esteu segur que voleu desconnectar els usuaris dels ordinadors visibles?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores selecionados?</translation>
+        <translation>Esteu segur que voleu desconnectar els usuaris dels ordinadors seleccionats?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Desconnecta l'usuari</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores visíveis?</translation>
+        <translation>Esteu segur que voleu reiniciar els ordinadors visibles?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores selecionados?</translation>
+        <translation>Esteu segur que voleu reiniciar els ordinadors seleccionats?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation>Reiniciar computadores</translation>
+        <translation>Reinicia els ordinadors</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores visíveis?</translation>
+        <translation>Esteu segur que voleu apagar els ordinadors visibles?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores selecionados?</translation>
+        <translation>Esteu segur que voleu apagar els ordinadors seleccionats?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation>Endereço MAC inválido</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation>Você especificou um endereço MAC inválido. Deixe este campo em branco ou digite um endereço MAC válido (use ":" como separador!).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation>Configurações do cliente</translation>
+        <translation>Configuració dels clients</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation>IP/nome do computador</translation>
+        <translation>IP/nom d'equip</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Digite um endereço IP ou nome do computador para que o iTALC possa acessar o cliente  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">introduïu una adreça IP o un nom d'equip per a que iTALC es connecti amb l' [...]
     </message>
     <message>
         <source>Name</source>
-        <translation>Nome</translation>
+        <translation>Nom</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Apelido opcional do computador que é exibido no iTALC.</p></body></htm [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Àlies opcional de l'equip que es mostrarà a l'iTALC.</p></body> [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation>Endereço MAC</translation>
+        <translation>Adreça MAC</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Endereço de Hardware (MAC) do cliente - somente usado para ligar o computador remotam [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Adreça física/MAC del client - utilitzada únicament per engegar l'equip</p&gt [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Aula</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation>Tipo</translation>
+        <translation>Tipus</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation>Computador do aluno</translation>
+        <translation>Ordinador d'estudiant</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation>Computador do professor</translation>
+        <translation>Ordinador de professor</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation>Outro computador (indefinido)</translation>
+        <translation>Altres ordinadors</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation>Faltando endereço IP/nome do computador</translation>
+        <translation>Falta l'adreça IP/nom d'equip</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation>Você não especificou um endereço IP ou nome para o computador!</translation>
+        <translation>No heu especificat una adreça IP o nom d'equip per l'ordinador!</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Adreça MAC incorrecta</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Heu especificat una adreça MAC incorrecta. Deixeu el camp en blanc o introduïu una adreça MAC vàlida (utilitzeu ":" com separador!).</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation>Intervalo entre as atualizações</translation>
+        <translation>Interval entre actualitzacions</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode determinar o intervalo entre as atualizações dos computadores. Valore [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí podeu definir l'interval entre actualitzacions dels equips. Un valor més al [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation> segundos</translation>
+        <translation> segons</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation>Interface do usuário</translation>
+        <translation>Interfície d'usuari</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar dicas de balão para os botões da barra de ferramentas</p></body& [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No mostra els globus d'ajuda dels botons de la barra d'eines</p></ [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Marque esta opção se você deseja desabilitar as dicas de balão que aparecem ao mover  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Marqueu aquesta opció si us molesta l'aparició dels globus d'ajuda en moure [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation>Sem dicas de balão</translation>
+        <translation>Desactiva els globus d'ajuda</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar textos nos botões da barra de ferramentas</p></body></html [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Oculta el text en els botons de la barra d'eines</p></body></html [...]
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation>Sem textos nos botões da barra de ferramentas</translation>
+        <translation>Desactiva el text en els botons</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Llengua:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Valor per defecte</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体字</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 簡體字</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation>Sua função (necessário as chaves estarem de acordo!)</translation>
+        <translation>El vostre rol (requereix les claus adients!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode selecionar sua função. Somente modifique isto, se você conhece o que está fazendo. Caso contrário, você não será capaz de acessar todos os computadores clientes até que você restaure sua antiga função.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí podeu seleccionar el vostre rol. Canvieu-lo únicament si sabeu el que esteu fent. D'altra manera no podreu connectar amb cap equip fins que recupereu el rol anterior.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
@@ -411,115 +509,100 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Supporter</source>
-        <translation>Ajudante</translation>
+        <translation>Personal de suport</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
+        <translation>Altres</translation>
     </message>
     <message>
-        <source>Settings for multi-logon</source>
-        <translation>Configurações para logon múltiplo</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation>Domínio</translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
-        <translation>Duplo clique na janela cliente</translation>
+        <source>Double click action for client window</source>
+        <translation>Acció del doble clic en la miniatura d'equip</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode definir o que deve acontecer se você clicar duas vezes em uma janela do cliente.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí podeu configurar el que passa quan feu doble clic sobre la miniatura d'un equip.</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Control remot</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation>Ver ao vivo em tela cheia</translation>
+        <translation>Veure en viu a pantalla completa</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Por favor, note que  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Si us plau, tingueu  [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation>Sua configuração do iTALC</translation>
+        <translation>Configuració d'iTALC</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation>Neste espaço, você pode personalizar o iTALC para atender as suas necessidades.</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation>OK</translation>
+        <translation>En aquest espai podeu configurar iTALC segons les vostres necessitats.</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation>Demonstrar iTALC</translation>
+        <translation>iTALC Demo</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation>Erro na autenticação</translation>
+        <translation>Error d'autentificació</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation>Alguém (IP: %1) tentou acessar este computador mas não se autenticou com sucesso!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>Algú (IP: %1) ha provat d'accedir a aquest ordinador però no ha pogut ser autentificat!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation>A autenticação do VNC falhou devido a muitas tentativas de autenticação.</translation>
+        <translation>L'autentificació VNC ha fallat degut a un excés d'intents d'autentificació.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation>A autenticação do VNC falhou.</translation>
+        <translation>L'autentificació VNC ha fallat.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation>O servidor VNC fechou a conexão.</translation>
+        <translation>El servidor VNC ha tancat la connexió.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation>Assistente Da Chave De Acesso Do iTALC</translation>
+        <translation>Gestor de claus d'accés de iTALC</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation>Criar/importar chaves de acesso do iTALC</translation>
+        <translation>Crear/importar claus d'accés iTALC</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation>Este assistente irá ajudá-lo a criar ou importar as chaves de acesso do iTALC.</translation>
+        <translation>Aquest assistent us ajudarà a crear o importar les claus d'accés iTALC.</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation>Como isso funciona?</translation>
+        <translation>Com funciona?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -527,39 +610,35 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation>As chaves de acesso do iTALC consistem em duas partes pertencentes em conjunto, uma chave pública e uma privada.
+        <translation>Les claus d'accés iTALC estan formades per dos parts que treballen juntes, una part pública i una part privada.
 
-Usando a chave privada, os usuários no computador mestre serão capazes de acessar os computadores clientes. É importante que somente usuários autorizados tenham acesso de leitura para o arquivo da chave privada.
+Utilitzant la part privada de la clau, els usuaris de l'ordinador meste podran accedir als ordinadors client. És important que només els usuaris autoritzat tinguin accés de lectura a l'arxiu de la clau privada.
 
-A chave pública é usada nos computadores clientes para verificar que qualquer entrada de solicitação de conexão está autorizada.</translation>
+La part pública s'utilitza en els ordinadors client per verificar que una petició de connexió entrant està autoritzada.</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation>Modo assistente</translation>
+        <translation>Mode assistent</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation>Por favor, escolha se deseja criar novas chaves de acesso ou importar uma chave pública de um cliente.</translation>
+        <translation>Si us plau, trieu si voleu crear una nova clau d'accés o importar una clau pública en un client.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation>Criar novas chaves de acesso (computador mestre)</translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation>assistantModeButtonGroup</translation>
+        <translation>Crear noves claus d'accés (ordinador mestre)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation>Importar chave pública (computador cliente)</translation>
+        <translation>Importar la clau pública (ordinador client)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation>Selecionar a função do usuário</translation>
+        <translation>Seleccioneu el rol de l'usuari</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation>Por favor, selecione uma função para o usuário para criar ou importar as chaves de acesso:</translation>
+        <translation>Si us plau, seleccioneu un rol d'usuari pel que crear o importar les claus d'accés:</translation>
     </message>
     <message>
         <source>Teacher</source>
@@ -571,23 +650,23 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Support team member</source>
-        <translation>Membro da equipe de apoio</translation>
+        <translation>Personal de suport</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
+        <translation>Altre</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation>Funções de usuário permitem usar múltiplas chaves de acesso em paralelo. Por exemplo, pode haver diferentes chaves de acesso do professor para cada sala de aula, enquanto que as chaves de acesso são as mesmas para toda a escola.</translation>
+        <translation>Els rols d'usuari permeten utilitzar múltiples claus d'accés en paral·lel. Per exemple, les claus d'accés del professor poder ser diferents per cada aula mentre que les claus d'accés del personal de suport són les mateixes per tota l'escola.</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation>Diretórios</translation>
+        <translation>Carpetes</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation>Exportar parte de chave pública (computador mestre)</translation>
+        <translation>Exportar la clau pública (ordinador mestre)</translation>
     </message>
     <message>
         <source>...</source>
@@ -595,117 +674,117 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation>Usar um diretório de destino personalizado para as chaves de acesso</translation>
+        <translation>Utilitzar una carpeta de destí personalitzada per les claus d'accés</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation>Por favor, especifique a localização da chave de acesso pública para ser importada.</translation>
+        <translation>Si us plau, especifiqueu la ubicació de la clau pública que voleu importar.</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation>Resumo</translation>
+        <translation>Resum</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation>As seguintes ações serão tomadas:</translation>
+        <translation>Es duran a terme les accions següents:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation>• Criar novas chaves de acesso</translation>
+        <translation>• Crear noves clau d'accés</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation>• Importar chave de acesso pública de</translation>
+        <translation>• Importar clau d'accés pública des de</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation><desconhecida></translation>
+        <translation><desconegut></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation>• Salvar chave(s) de acesso em</translation>
+        <translation>• Escriure clau(s) d'accés en</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation>• Exportar chave pública para</translation>
+        <translation>• Exportar clau pública en</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation>• Configurar para a função de usuário</translation>
+        <translation>• Configurar per rol d'usuari</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation>Selecionar o diretório para o qual a chave pública será exportada</translation>
+        <translation>Seleccioneu la carpeta en la que exportar la clau pública</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation>Chaves de acesso (*.key.txt)</translation>
+        <translation>Arxius de claus (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation>Chave pública inválida</translation>
+        <translation>Clau pública no vàlida</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation>O arquivo selecionado não contém uma válida chave de acesso pública do iTALC!</translation>
+        <translation>L'arxiu seleccionat no conté una clau pública iTALC vàlida!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation>Selecionar diretório de destino</translation>
+        <translation>Seleccioneu la carpeta de destí</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation>Criação da chave de acesso</translation>
+        <translation>Creació de les claus d'accés</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation>Não foi possível remover arquivo %1 previamente existente.</translation>
+        <translation>No es pot esborrar l'arxiu %1.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation>Falha ao exportar chave pública de acesso de %1 para %2.</translation>
+        <translation>Ha fallat l'exportació de la clau d'accés pública de %1 a %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation>Chaves de acesso foram criadas e escritas com sucesso para %1 e %2.</translation>
+        <translation>Les claus d'accés s'han creat i guardat amb èxit en %1 i %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation>Um erro ocorreu ao criar as chaves de acesso. Você provavalmente não tem permissão para escrever no diretório selecionado.</translation>
+        <translation>Ha ocorregut un error mentre es creaven les claus d'accés. Probablement no teniu permís d'escriptura en les carpetes seleccionades.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation>Chave pública importada</translation>
+        <translation>Importació de la clau pública</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation>Um erro ocorreu ao importa a chave pública de acesso. Você provavelmente não tem permissão para ler a chave de origem ou escrever no arquivo de destino.</translation>
+        <translation>Ha ocorregut un error mentre s'importava la clau d'accés pública. Probablement no teniu permís de lectura de la clau orígen o d'escriptura en l'arxiu de destí.</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation>A chave pública foi importada com sucesso de %1.</translation>
+        <translation>La clau pública s'ha importat amb èxit en %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation>bloquear tela</translation>
+        <translation>blocar pantalla</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation>Editor de grupo de acesso</translation>
+        <translation>Editor de grups d'inici de sessió</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation>Por favor, adicione os grupos cujos membros devem ser autorizados a acessar os computadores em sua rede iTALC.</translation>
+        <translation>Si us plau, afegiu els grups els membres tindran accés als ordinadors en la vostra xarxa iTALC.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation>Todos os grupos</translation>
+        <translation>Tots els grups</translation>
     </message>
     <message>
         <source>...</source>
@@ -713,29 +792,33 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation>Grupos com privilégios do iTALC</translation>
+        <translation>Grups amb privilegis iTALC</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Accions</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation>Geral</translation>
+        <source>MainWindow</source>
+        <translation>Finestra principal</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation>Sair</translation>
+        <source>toolBar</source>
+        <translation>Barra d'eines</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation>Console de gerenciamento do iTALC</translation>
+        <translation>Consola d'administració iTALC</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>General</translation>
     </message>
     <message>
         <source>iTALC Server</source>
@@ -743,51 +826,59 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Paths</source>
-        <translation>Caminhos</translation>
+        <translation>Rutes</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation>Autenticação</translation>
+        <translation>Autentificació</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>Depuració</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation>Serviço iTALC</translation>
+        <translation>Servei iTALC</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation>Ocultar ícone da área de notificação</translation>
+        <translation>Ocultar icona de la barra del sistema</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation>Iniciar automaticamente</translation>
+        <translation>Arranc automàtic</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation>Argumentos adicionais</translation>
+        <translation>Paràmetres addicionals</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation>Iniciar serviço</translation>
+        <translation>Arrancar servei</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation>Parar serviço</translation>
+        <translation>Aturar servei</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation>Estado:</translation>
+        <translation>Estat:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation>Parado</translation>
+        <translation>Aturat</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Activar el canvi d'escriptori pel bloqueig de pantalla (experimental)</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation>Registrando</translation>
+        <translation>Registre</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation>Diretório de arquivo de log</translation>
+        <translation>Carpeta dels arxius de registre</translation>
     </message>
     <message>
         <source>...</source>
@@ -795,203 +886,293 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Log level</source>
-        <translation>Nível de log</translation>
+        <translation>Nivell de registre</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation>Nada</translation>
+        <translation>Res</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation>Somente mensagens críticas</translation>
+        <translation>Només missatges crítics</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation>Mensagens críticas e de erros</translation>
+        <translation>Errors i missatges crítics</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation>Avisos e erros</translation>
+        <translation>Avisos i errors</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation>Informações, avisos e erros</translation>
+        <translation>Informació, avisos i errors</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation>Mensagens de depuração e tudo o mais</translation>
+        <translation>Missatges de depuració i tota la resta</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation>Limite do tamanho do arquivo de log</translation>
+        <translation>Límitar la mida de l'arxiu de registre</translation>
     </message>
     <message>
         <source>MB</source>
         <translation>MB</translation>
     </message>
     <message>
+        <source>Log to standard error output</source>
+        <translation>Registrar en la sortida d'error estàndard</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Registrar en el registre d'esdeveniments de Windows</translation>
+    </message>
+    <message>
         <source>Clear all log files</source>
-        <translation>Remover todos os arquivos de log</translation>
+        <translation>Buidar tots els arxius de registre</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation>Capturando desktop</translation>
+        <translation>Captura d'escriptori</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation>Habilitar captura de janelas em camadas (semi-transparente)</translation>
+        <translation>Habilitar la captura de finestres apilades (semitransparents)</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Monitoritza tota la pantalla (deixar activat per defecte)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation>Baixa precisão (modo turbo)</translation>
+        <translation>Baixa precissió (mode turbo)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation>Demonstrar servidor</translation>
+        <translation>Servidor demo</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>Backend</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>Reflector VNC</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>Servidor demo iTALC 1</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation>Rede</translation>
+        <translation>Xarxa</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation>Porta do servidor</translation>
+        <translation>Port del servidor principal</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation>Demonstrar porta do servidor</translation>
+        <translation>Port del servidor demo</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation>Habilitar exceção de firewall</translation>
+        <translation>Activar excepció en el tallafocs</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>Activar el servidor HTTP, proporciona un applet JavaViewer</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>Port del servidor HTTP</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Permet connexions només des d'aquest equip</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation>Arquivos de configuração</translation>
+        <translation>Arxius de configuració</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation>Configuração global</translation>
+        <translation>Configuració global</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation>Configuração pessoal</translation>
+        <translation>Configuració personal</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation>Diretórios de dados</translation>
+        <translation>Carpetes de dades</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Captures de pantalla</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation>Métodos de autenticação</translation>
+        <translation>Métodes d'autentificació</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>Autentificació amb arxiu de claus</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>Autentificació d'inici de sessió basada en ACL</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation>Gerenciamento de chaves de acesso</translation>
+        <translation>Gestió de les claus d'accés</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>Carpeta de l'arxiu de la clau pública</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>Carpeta de l'arxiu de la clau privada</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>Executar l'assistent d'arxiu de claus</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation>Configurações de logon</translation>
+        <translation>Ajustaments d'inici de sessió</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation>&Arquivo</translation>
+        <source>Manage permissions</source>
+        <translation>Gestionar permisos</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation>A&juda</translation>
+        <source>Test</source>
+        <translation>Comprovar</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation>&Sair</translation>
+        <source>Access confirmation</source>
+        <translation>Confirmació d'accés</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation>Ctrl+Q</translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>Podeu configurar iTALC per demanar a l'usuari el permís per accedir a l'escriptori quan s'utilitzen certs métodes d'autentificació.</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation>&Salvar configurações em arquivo</translation>
+        <source>Logon authentication</source>
+        <translation>Autentificació d'inici de sessió</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation>Salvar configurações em arquivo</translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Permetre al mateix usuari accedir a l'escriptori sense confirmació</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation>Ctrl+S</translation>
+        <source>Debugging iTALC</source>
+        <translation>Depurant iTALC</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation>Carregar c&onfigurações do arquivo</translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>Quan troveu un error o un mal funcionament en iTALC és important informar als desenvolupadors, de forma que els errors poden ser corregits en versions futures. Aquesta pàgina us permet enviar fàcilment un informe d'error.
+
+Si l'error no es pot reproduir, ometeu els passos 1) - 3).</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation>Ctrl+O</translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>Buida els arxius de registre en la secció "General".</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation>Sobre o QT</translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation>Janela principal</translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>En la secció "General" definiu el nivell de registre a "Missatges de depuració i tota la resta".</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation>toolBar</translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation>Console %1 de Gerenciamento do iTALC</translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Repetiu les accions que porten a la fallada o mal comportament.</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation>Em execução</translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation>Carregar configurações de um arquivo</translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Feu clic en el botó i guardeu l'arxiu en una ubicació coneguda.</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation>Arquivos XML (*.xml)</translation>
+        <source>Generate bug report archive</source>
+        <translation>Generar un arxiu d'informe d'errors</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation>Salvar configurações para arquivo</translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation>Configurações não salva</translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Aneu a la <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">gestió d'erros de iTALC</a>, obriu un nou ticket, describiu que heu fet en el pas 3) i adjunteu l'arxiu que heu guardat en el pas 4).</p>
+<br/>
+<br/>
+Nota: si l'error involucra un ordinador mestre i un client, adjunteu l'informe d'error dels dos ordinadors.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation>Existem configurações não salvas. Sair de qualquer maneira?</translation>
+        <source>&File</source>
+        <translation>&Arxiu</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation>Configuração não gravável</translation>
+        <source>&Help</source>
+        <translation>&Ajuda</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation>O backend de configuração local informou que a configuração não é gravável! Por favor, execute o Console de Gerenciamento do iTALC com privilégios mais elevados.</translation>
+        <source>&Quit</source>
+        <translation>&Sortir</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation>Todas as configurações foram aplicadas com sucesso.</translation>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation>Um erro ocorreu ao aplicar as configurações!</translation>
+        <source>&Save settings into file</source>
+        <translation>&Guardar ajustaments en arxiu</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Guardar ajustaments en arxiu</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>&Carregar ajustaments des d'arxiu</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>Quant a iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>Quant a Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
@@ -999,416 +1180,303 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>No write access</source>
-        <translation>Sem acesso de escrita</translation>
+        <translation>Sense permís d'escriptura</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation>Não foi possível ler/gravar ou criar o diretório %1! Para executar iTALC, verifique se você tem permissão de criar ou gravar nesse diretório.</translation>
+        <translation>No es pot llegir/escriure o crear la carpeta %1!. Per poder executar iTALC, assegureu-vos que podeu crer o escriure aquesta carpeta.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Aula</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation>Mudar de sala de aula</translation>
+        <translation>Canviar aula</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation>Clique neste botão para abrir um menu onde você pode escolher a sala de aula ativa.</translation>
+        <translation>Feu clic en aquest botó per obrir un menu des del que podeu triar l'aula activa.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation>Clique neste botão, para alternar entre as salas de aula.</translation>
+        <translation>Feu clic en aquest botó per canviar entre aules.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation>Modo visão geral</translation>
+        <translation>Mode ajuda</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ajuda</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation>Este é o modo padrão do iTALC e permite que você tenha uma visão geral sobre todos os computadores visíveis. Também clique neste boão para desbloquear os computadores ou para sair do modo de demonstração (demo).</translation>
+        <translation>Aquest és el mode per defecte en iTALC i us permet tindre una vista general dels ordinadors visibles. També podeu fer clic en aquest botó per desblocar equips blocats o per sortir del mode demo.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Demo a pantalla completa</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Demo a Pantalla Completa</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation>Parar demonstração</translation>
+        <translation>Aturar Demo</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation>Neste modo, a sua tela será exibida em todos os computadores. Além disso, os usuários não serão capazes de fazer outra coisa, pois todos os dispositivos de entrada (teclados e mouses) serão bloqueados neste modo.</translation>
+        <translation>En aquest mode la vostra pantalla es mostra en tots els equips visibles a pantalla completa. Els usuaris no poden fer res ja que el seu teclat i ratolí estan blocats en aquest mode.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Demo en finestra</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Demo en Finestra</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation>Neste modo, a sua tela será exibida em uma janela em todos os computadores. Os usuários serão capazes de alternar para outras janelas e assim podem continuar a trabalhar.</translation>
+        <translation>En aquest mode la vostra pantalla es mostra en tots els equips visibles dins una finestra. Els usuaris poden canviar a una altra finestra i així continuar treballant.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation>Bloquear/desbloquear os desktops</translation>
+        <translation>Blocar/desblocar escriptoris</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation>Bloquear todos</translation>
+        <translation>Blocar tots</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation>Desbloquear todos</translation>
+        <translation>Desblocar tots</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation>Para ter a atenção de todos os usuários, você pode bloquear seus desktops usando este botão. Neste modo, todos os dispositivos de entrada (teclados e mouses) serão bloqueados e a tela ficará preta.</translation>
+        <translation>Per tindre l'atenció dels usuaris podeu blocar els seus escriptoris amb aquest botó. En aquest mode els dispositius d'entrada són blocats i la pantalla queda en negre.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Enviar un missatge de text</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation>Mensagen de texto</translation>
+        <translation>Missatge de text</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation>Use este botão para enviar uma mensagem de texto para todos os usuários, por exemplo, para comunicar a nova tarefa etc.</translation>
+        <translation>Utilitzeu aquest botó per enviar un missatge de text a tots els usuari, per exemple per informar-los de noves tasques etc.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation>Ligar computadores</translation>
+        <translation>Engegar ordinadors</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Engegar</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation>Clique neste botão para ligar todos os computadores visíveis. Desta forma, você não tem que ligar cada computador manualmente.</translation>
+        <translation>Feu clic en aquest botó per engegar els ordinadors visibles. D'aquesta forma no cal engegar cada ordinador manualment.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation>Desligar computadores</translation>
+        <translation>Apagar ordinadors</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation>Para desligar todos os computadores visíveis (por exemplo, depois que terminou a aula), você pode clicar neste botão.</translation>
+        <translation>Feu clic en aquest botó per apagar els ordinadors visible (p.e. quan la classe ha acabat).</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Suport tècnic</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation>Ajuda direta</translation>
+        <translation>Suport directe</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation>Se você precisa ajudar alguém em um determinado computador, clique neste botão e digite o nome ou o endereço IP do seu computador.</translation>
+        <translation>Si necessiteu ajudar algú en un ordinador podeu fer click en aquest botó i introduir el corresponent nom d'equip o IP.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation>Ajustar/alinhar</translation>
+        <translation>Ajustar/alinear</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation>Ajustar janelas e seus tamanhos</translation>
+        <translation>Ajustar les finestre i la seva mida</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation>Ao clicar neste botão, o maior tamanho possível para as janelas do cliente será ajustada. Além disso, todas as janelas serão alinhadas.</translation>
+        <translation>Feu clic en aquest botó per ajustar la mida de les finestres i la seva alineació.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation>Visualizar automaticamente</translation>
+        <translation>Auto ajustament</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation>Rearranjar automaticamente o tamanho da janela</translation>
+        <translation>Ajusta automàticament la distribució de les finestres i la seva mida</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation>Ao clicar neste botão, todos as janelas visíveis serão rearranjadas e ajustadas.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation>Controle Mestre Do iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation>Não foi possível modificar a propriedade iniciar automaticamente para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation>Não foi possível modificar os argumentos do serviço para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation>Não foi possível alterar a configuração do firewall para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation>Depuração</translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation>Habilitar alternando desktop para bloquear tela (experimental)</translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation>Log para a saída de erro padrão</translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation>Log para registro de eventos de Janelas</translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation>Backend</translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation>Refletor VNC</translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation>Servidor de demonstração iTALC</translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation>Multithreading (pode ser habilitado ao usar o backend refletor VNC)</translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation>Habilitar servidor HTTP que fornece um applet JavaViewer</translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation>Porta do servidor HTTP</translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation>Permitir conexões de localhost apenas</translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation>Autenticação de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation>Autenticação de logon baseado em ACL</translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation>Diretório base do arquivo de chave pública</translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation>Diretório base do arquivo de chave privada</translation>
+        <translation>Fent clic en aquest botó les finiestres visibles son reditribuides i ajustades.</translation>
     </message>
     <message>
-        <source>Launch key file assistant</source>
-        <translation>Lançar assistente de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation>Gerenciar permissões</translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation>Teste</translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation>Confirmação de acesso</translation>
-    </message>
-    <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation>Você pode configurar iTALC para pedir a permissão do usuário para acessar o desktop ao usar determinados métodos de autenticação.</translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation>Autenticação de logon</translation>
+        <source>Could not contact iTALC service</source>
+        <translation>No es pot connectar amb el servei iTALC</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation>Permitir que o mesmo usuário acesse o desktop sem confirmação</translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>No es pot connectar amb el servei iTALC. És probable que hagueu introduït unes credencials incorrectes o que els arxius de claus no estiguin ben configurats. Torneu a provar-ho o contacteu amb l'administrador per resoldre el problema emprant la Consola d'Administracio de iTALC.</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation>Depurando iTALC</translation>
+        <source>iTALC Master Control</source>
+        <translation>Control mestre de iTALC</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation>Ao encontrar falhas ou outro mau comportamento em iTALC é importante informar os desenvolvedores sobre eles, de modo que as falhas possam ser corrigidas em versões futuras. Esta página permite que você envie um relatório de falha útil facilmente.
-
-Se a falha não é reproduzível, pule o passo1) - 3).</translation>
+        <source>Authentication impossible</source>
+        <translation>Autentificació impossible</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation>1)</translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>No s'han trobat els arxius de claus o estan caducats. Si us plau, creeu nous arxius de claus emprant la Consola de Gestió de iTALC. Alternativament activeu l'autentificació d'inici de sessió emprant la Consola de Gestió de iTALC. En altre cas no podreu accedir als ordinadors des de iTALC.</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation>Limpar os arquivos de log na seção "Geral".</translation>
+        <source>Remote control</source>
+        <translation>Control remot</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation>2)</translation>
+        <source>Quit</source>
+        <translation>Sortir</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation>Na seção "Geral" defina o nível do log para "Mensagens de depuração e tudo mais".</translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>No es pot modificar la propietat de inici automàtic del servei iTALC.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation>3)</translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>No es poden modificar els paràmetres del servei iTALC.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation>Repita as ações que conduzem ao erro ou mau comportamento.</translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>No es pot canviar la configuració del tallafocs pel servei iTALC.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation>4)</translation>
+        <source>Configuration not writable</source>
+        <translation>La configuració no es pot escriure</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation>Clique no botão abaixo e salve o arquivo em um local conhecido.</translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>El gestor de configuració local informa que la configuració no es pot escriure!. Si us plau, executeu la Consola de Gestió iTALC amb privilegis elevats.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation>Gerar arquivo de relatório de falha</translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Tots els ajustaments s'han aplicat amb èxit.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation>5)</translation>
+        <source>An error occured while applying settings!</source>
+        <translation>S'ha produït un error al aplicar els ajustaments!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation>Ir para o <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, abra um novo bug, descrever o que você fez no passo 3) e anexe o arquivo que você salvou no passo 4).</p>
-<br/>
-<br/>
-Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivos de relatório de erro para ambos os computadores.</translation>
+        <source>iTALC Management Console %1</source>
+        <translation>Consola de Gestió iTALC %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation>Reiniciar Servidor iTALC</translation>
+        <translation>Reiniciar el servei iTALC</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation>Todas as configurações foram salvas com sucesso. A fim de ter efeito, o serviço iTALC precisa ser reiniciado. Reiniciá-lo agora?</translation>
+        <translation>Els ajustaments s'han aplicat amb èxit. Per activar-los cal reiniciar el servei iTALC. Voleu reiniciar-lo ara?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation>Iniciando serviço iTALC</translation>
+        <translation>Iniciant servei iTALC</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation>Parando serviço iTALC</translation>
+        <translation>Aturant servei iTALC</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>Funcionant</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation>O serviço iTALC precisa ser parado temporariamente, a fim de remover os arquivos de log. Continuar?</translation>
+        <translation>Cal aturar el servei iTALC momentàniament per poder buidar els arxius de registre. Continuar?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation>Arquivos de log limpos</translation>
+        <translation>Arxius de registre buidats</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation>Todos os arquivos de log foram limpos com sucesso.</translation>
+        <translation>Tots els arxius de registre s'han buidat amb èxit.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation>Erro</translation>
+        <translation>Error</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation>Não foi possível remover todos os arquivos de log.</translation>
+        <translation>No s'han pogut buidar tots els arxius de registre.</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>Carregar ajustaments des d'arxiu</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>Arxius XML (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Guardar ajustament en un arxiu</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation>Teste de autenticação de logon</translation>
+        <translation>Provar autentificació d'inici de sessió</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation>A autenticação com credenciais fornecidas foi bem sucedida.</translation>
+        <translation>L'autentificació amb les credencials subministrades ha tingut èxit.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation>A autenticação com credenciais fornecidas falhou!</translation>
+        <translation>L'autentificació amb les credencials subministrades ha fallat!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation>Salvar arquivo de relatório de bug</translation>
+        <translation>Guardar arxiu d'informe d'error</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation>Arquivo de relatório de bug iTALC (*.ibra.xml)</translation>
+        <translation>Arxiu d'informe d'error iTALC (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation>Arquivo de relatório de bug iTALC salvo</translation>
+        <translation>Arxiu d'informe d'error iTALC guardat</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation>Um arquivo de relatório de bug do iTALC foi salvo em %1.Ele inclui arquivos de log do iTALC e informações sobre seu sistema operacional. Você pode atachá-lo a um relatório de bug.</translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation>Não foi possível contactar o serviço iTALC</translation>
+        <translation>Un arxiu d'informe d'error iTALC s'ha guardat en %1. Inclou arxius de registre de iTALC i informació sobre el vostre sistema operatiu. Podeu adjuntar-lo a un informe d'error.</translation>
     </message>
     <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation>Não foi possível contactar o serviço local iTALC. É provável que você inseriu as credenciais erradas ou arquivos de chaves não estão configurados corretamente. Tente novamente ou contate o administrador para resolver esse problema usando o Console De Gerenciamento Do iTALC. </translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation>Autenticação impossível</translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation>Nenhum arquivos de chave de autenticação foram encontrados ou seus atuais estão desatualizados. Por favor, crie novos arquivos de chave usando o Console De Gerenciamento Do iTALC. Alternativamente, configure a autenticação do usuário no Console De Gerenciamento Do iTALC. Caso contrário, você não será capaz de acessar computadores usando o iTALC.</translation>
-    </message>
-    <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Ajustaments no guardats</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation>Mensagem do professor</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Hi ha ajustaments no guardats. Sortir de totes formes?</translation>
     </message>
 </context>
 <context>
@@ -1416,239 +1484,239 @@ Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivo
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Bem vindo ao iTALC</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Benvingut a iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation>Aqui, você vê a barra de ferramentas que contém vários botões. Cada botão está conectado a um espaço de trabalho. Para dar uma olhada nos espaços de trabalho disponíveis, basta clicar no botão correspondente.</translation>
+        <translation>Aquí podeu veure la barra de treball que conté varis botons. Cada botó està connectat a un espai de treball. Feu un cop d'ull als espais de treball disponibles fent clic en el botó corresponent.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation>Usando o gerenciador de salas de aula, você pode gerenciar suas salas de aula e computadores. Você também pode ver qual usuário está logado.</translation>
+        <translation>Amb el gestor d'aules podeu gesionar les vostres aules i ordinadors. També podeu veure quins usuaris han iniciat sessió.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation>A captura do espaço de trabalho é uma ferramenta muito útil. Ela permite que você gerencie as capturas que você fez.</translation>
+        <translation>L'espai de captures és una eina molt útil. Us permet gestionar les captures de pantalla que heu fet.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation>Claro que você pode configurar o iTALC. Isso geralmente é feito usando a configuração do espaço de trabalho.</translation>
+        <translation>Per supost podeu configurar iTALC. Açò es fa habitualment utilitzant l'espai de configuració.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>Quant a iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ajuda</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation>Algumas informações básicas sobre iTALC e como usá-lo.</translation>
+        <translation>Informació bàsica sobre iTALC i com utilitzar-lo.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>Inici de sessió iTALC</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation>Por favor, digite seu nome de usuário e senha para acessar os clientes iTALC.</translation>
+        <translation>Si us plau, introduïu el vostre nom d'usuari i clau d'accés per accedir als clients iTALC.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Nom d'usuari</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation>Acessar iTALC</translation>
+        <translation>Clau d'accés</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Gestionar</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
-        <translation>Cliente iTALC %1 no %2:%3</translation>
+        <translation>Client iTALC %1 a %2:%3</translation>
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation>Não foi possível registrar o serviço  '%1'.</translation>
+        <translation>No es pot registrar el servei '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>No es pot contactar amb el gestor de control de serveis (teniu els permisos necessaris?!) . el servei '%1' no s'ha registrat.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation>O serviço '%1' já está registrado.</translation>
+        <translation>El servei '%1' ja està registrat.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation>O serviço '%1' não pode se registrado.</translation>
+        <translation>El servei '%1' no s'ha pogut registrar.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation>O serviço '%1' foi registrado com sucesso.</translation>
+        <translation>El servei '%1' s'ha registrat correctament.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation>O serviço '%1' não pode ser parado.</translation>
+        <translation>El servei '%1' no s'ha pogut aturar.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation>O serviço '%1' tem sido registrado.</translation>
+        <translation>El servei '%1' s'ha des-registrat.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation>O serviço '%1' não tem sido registrado e por isso não pode ser registrado.</translation>
+        <translation>El servei '%1' no està registrat pel que no es pot des-registrar.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation>O serviço '%1' não pode ser registrado.</translation>
+        <translation>El servei '%1' no s'ha pogut des-registrar.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation>O serviço '%1' não pode ser encontrado.</translation>
+        <translation>No es troba el servei '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>No es pot contactar amb el gestor de control de serveis (teniu els permisos necessaris?!) . el servei '%1' no s'ha des-registrat.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi parado.</translation>
+        <translation>No es pot contactar amb el gestor de control de serveis (teniu els permisos necessaris?!) . el servei '%1' no s'ha aturat.</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation>Ver ao vivo (%1 @ %2)</translation>
+        <translation>Veure en viu (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation>Controlar remotamente (%1 @ %2)</translation>
+        <translation>Control remot (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation>usuário desconhecido</translation>
+        <translation>usuari desconegut</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation>Visualizar somente</translation>
+        <translation>Només veure</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Control remot</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation>Bloquear aluno</translation>
+        <translation>Blocar estudiant</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation>Desbloquear aluno</translation>
+        <translation>Des-blocar estudiant</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Captura de pantalla</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation>Tela cheia</translation>
+        <translation>Pantalla completa</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation>Janela</translation>
+        <translation>Finestra</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation>Sair</translation>
+        <translation>Sortir</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation>Conectando %1</translation>
+        <translation>Connectant %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation>Conectado.</translation>
+        <translation>Connectat.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation>Acessar remotamente</translation>
+        <translation>Inici de sessió remota</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation>Use os campos abaixo para digitar o nome de usuário, senha e nome de domínio opcional. Estas informações serão usadas para fazer acessar o(s) computador(es).</translation>
+        <translation>Utilitzeu els camps de sota per introduir el nom d'usuari, la clau d'accés i opcionalment el nom del domini. Aquesta informació s'utilitzarà per iniciar sessió en el(s) ordinadors(s).</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Nom d'usuari</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
+        <translation>Clau d'accés</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation>Domínio</translation>
+        <translation>Domini</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Executar comandes</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation>Por favor, digite os comandos para executar no(s) cliente(s) selecionado(s). Você pode separar vários comandos por linha.</translation>
+        <translation>Si us plau, introduïu les comandes que s'executaran en el(s) client(s) seleccionat(s). Podeu separar múltiples comandes per línies.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation>desconhecido</translation>
+        <translation>desconegut</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation>Não foi possível tirar uma captura. O diretório %1 não existe ou não pode ser criado.</translation>
+        <translation>No es pot fer una captura de pantalla ja que el directori %1 no existeix i no pot ser creat.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Captura de pantalla</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Captures de pantalla</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation>Simplesmente gerencie as capturas que você fez usando este espaço de trabalho.</translation>
+        <translation>Gestioneu les captures de pantalla des d'aquest espai de treball.</translation>
     </message>
 </context>
 <context>
@@ -1656,20 +1724,20 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Todas as capturas que você fez, estão listadas aqui. Você pode fazer capturas selecionando a referente opção no menu de contexto (botão direito do mouse) de uma janela cliente. Estas capturas podem ser gerenciadas usando os botões abaixo.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Totes les captures de pantalla es llisten aquí. Podeu fer captures seleccionant l'entrada corresponent en el menú contextual d'una finestra client. Aquestes captures es poden gestionar amb els botons de sota.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation>Usuário:</translation>
+        <translation>Usuari:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation>Computador:</translation>
+        <translation>Equip:</translation>
     </message>
     <message>
         <source>Date:</source>
@@ -1685,83 +1753,83 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Delete</source>
-        <translation>Excluir</translation>
+        <translation>Esborrar</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Suport</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation>Por favor, digite o endereço IP ou nome do computador para o qual você deseja se conectar.</translation>
+        <translation>Si us plau, introduïu l'adreça IP o el nom de l'equip al que voleu connectar.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Enviar missatge de text</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation>Use o campo abaixo para digitar sua mensagem que será enviada para todos os usuários selecionados.</translation>
+        <translation>Utilitzeu el camp de sota per escriure el missatge que serà enviat als usuari seleccionats.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation>Estabelecendo conexão para %1 ...</translation>
+        <translation>Establint connexió amb %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ajuda</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstrar em tela cheia</translation>
+        <translation>Demo a pantalla completa</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstrar em uma janela</translation>
+        <translation>Demo en finestra</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation>Bloquear tela</translation>
+        <translation>Pantalla blocada</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation>Ver ao vivo</translation>
+        <translation>Veure en viu</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Control remot</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation>Deixar o aluno exibir uma demonstração</translation>
+        <translation>Permetre a l'estudiant mostrar la demo</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Enviar un missatge de text</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Desconnectar usuari</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation>Capturar uma tela</translation>
+        <translation>Fer una captura de pantalla</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Engegar</translation>
     </message>
     <message>
         <source>Reboot</source>
@@ -1769,11 +1837,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Executar comandes</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/cs.qm b/lib/resources/cs.qm
deleted file mode 100644
index 7869328..0000000
Binary files a/lib/resources/cs.qm and /dev/null differ
diff --git a/lib/resources/cs.ts b/lib/resources/cs.ts
index 70acd72..83afa04 100644
--- a/lib/resources/cs.ts
+++ b/lib/resources/cs.ts
@@ -1,521 +1,607 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="cs_CZ">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="cs" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">O iTALC</translation>
+        <translation>O aplikaci iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">O programu</translation>
+        <translation>O aplikaci</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC – Intelligent Teaching And Learning with Computers
+(smysluplné vyučování a učení se pomocí počítačů)
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">Autoři</translation>
+        <translation>Tvůrci</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">Překlad</translation>
+        <translation>Překlad</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation type="unfinished"></translation>
+        <translation>Texty rozhraní aplikace ještě nejsou přeloženy do vámi používaného jazyka (nebo používáte původní anglické).
+
+Pokud máte zájem vytvořit překlad do svého rodného (či jiného) jazyka, případně vylepšit ten stávající, kontaktujte vývojáře aplikace iTALC!</translation>
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">Licence</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
+        <translation>Licence</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation type="unfinished">Nikdy pro toto sezení</translation>
+        <source>Confirm desktop access</source>
+        <translation>Umožnit přístup k pracovní ploše</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation type="unfinished">Vždy pro toto sezení</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation>Uživatel %1 chce z počítače %2 přistoupit k Vaší pracovní ploše. Umožníte mu to?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <source>Never for this session</source>
+        <translation>Ne po celou dobu této relace</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <source>Always for this session</source>
+        <translation>Ano kdykoli po dobu této relace</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">Správce třídy</translation>
+        <translation>Správce učebny</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">V tomto rozhraní můžete snadno spravovat počítače a třídy.</translation>
+        <translation>Toto rozhraní slouží pro snadnou správu počítačů a učeben.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished">Zde se spravují počítače a učebny. Počítače přidáte kliknutím pravého tlačítka myši v seznamu.</translation>
+        <translation>Zde jsou spravovány počítače a učebny. Přidávat je můžete klikáním pravým tlačítkem myši v tomtu seznamu.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">Počítače/třídy</translation>
+        <translation>Učebny/počítače</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished">IP-adresa</translation>
+        <translation>IP adresa</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Uživatelská jména</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Zobrazit uživatelská jména</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished"></translation>
+        <translation>Pro přidávání/odebírání počítačů a učeben použijte kontextovou nabídku (kliknout pravým tlačítkem myši).</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation type="unfinished">Exportovat do textového souboru</translation>
+        <source>Export to text file</source>
+        <translation>Exportovat do textového souboru</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished"></translation>
+        <translation>Toto tlačítko slouží pro export seznamu počítačů a uživatelů do textového souboru. Ten pak pomůže při shromážďování souborů s výsledky po skončení zkoušení. Někteří uživatelé totiž mohou testy dokončit a odhlásit se dříve a vy byste se jinak k jejich souborům nedostali.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished">Skrýt učitelské počítače</translation>
+        <translation>Skrýt počítače vyučujících</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished">Zobrazit/skrýt</translation>
+        <translation>Zobrazit/skrýt</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished">Upravit nastavení</translation>
+        <translation>Upravit nastavení</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">Odstranit</translation>
+        <translation>Odstranit</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">Zobrazit všechny počítače ve třídě</translation>
+        <translation>Zobrazit všechny počítače v učebně</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">Skrýt všechny počítače ve třídě</translation>
+        <translation>Skrýt všechny počítače v učebně</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">Upravit jméno</translation>
+        <translation>Upravit název</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">Odstranit třídu</translation>
+        <translation>Odstranit učebnu</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">Přidat počítač</translation>
+        <translation>Přidat počítač</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">Přidat třídu</translation>
+        <translation>Přidat učebnu</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation type="unfinished">Nebyl nalezen žádný konfigurační soubor</translation>
+        <source>No configuration file found</source>
+        <translation>Nebyl nalezen žádný soubor s nastaveními</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished">Nemohu otevřít konfigurační soubor %1.
-Budete muset přidat alespoň jednu učebny a počítače pomocí Správce tříd, kterého naleznete v programu na levém panelu.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>Nedaří se otevřít soubor s nastaveními %1. Pomocí nástroje Správce učebny (který naleznete v levé postranní liště okna aplikace) je třeba přidat alespoň jednu učebnu a počítače.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation type="unfinished">Chyba v konfiguračním souboru</translation>
+        <source>Error in configuration file</source>
+        <translation>Chyba v souboru s nastaveními</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished">Chyba při analýze konfiguračního souboru %1.
-Upravte ho prosím ručně. Nebo také můžete tento soubor smazat a přidat všechny třídy a počítače znovu.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>Chyba při zpracování souboru s nastaveními %1. Opravte ho ručním zásahem. Případně ho smažte a znovu zadejte veškeré učebny a počítače.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished">Chyba při analýze konfiguračního souboru %1.
-Upravte ho prosím. Jinak byste tento soubor měli smazat.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>Chyba při zpracování souboru s nastaveními %1. Opravte ho ručním zásahem. Případně soubor smažte.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished">Vybrat výstupní soubor</translation>
+        <translation>Vyberte výstupní soubor</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished">Textové soubory (*.txt)</translation>
+        <translation>Textové soubory (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished"></translation>
+        <translation>Akce pro označené</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Akce</translation>
+        <translation>Akce</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished">Akce pro %1</translation>
+        <translation>Akce pro %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished">Nové jméno třídy</translation>
+        <translation>Nový název učebny</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished">Zadejte prosím nové jméno pro třídu "%1".</translation>
+        <translation>Zadejte nový název pro učetnu „%1“.</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished">Opravdu si přejete odstranit třídu "%1"?
-Všechny počítače ve třídě budou odstraněny též!</translation>
+        <translation>Opravdu chcete odstranit učebnu „%1“?
+Budou tím odstraněny také všechny počítače, které pod ní spadají!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished">Chybí třída</translation>
+        <translation>Chybí učebna</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished">Před přidáním počítačů musíte vytvořit alespoň jednu třídu.
-Přejete si nyní vytvořit novou třídu?</translation>
+        <translation>Aby bylo možné přidávat počítače, je třeba vytvořit alespoň jednu učebnu.
+Chcete vytvořit novou učebnu?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished">Nová třída</translation>
+        <translation>Nová učebna</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished">Zadejte prosím jméno nové třídy, kterou si přejete vytvořit.</translation>
+        <translation>Zadejte pro novou učebnu.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished">Neznámý stav</translation>
+        <translation>Neznámý stav</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">Žádný uživatel není přihlášen</translation>
+        <translation>Není přihlášený žádný uživatel</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished">Počítač není  k dispozici</translation>
+        <translation>Počítač není dosažitelný</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished">Běžící demo</translation>
+        <translation>Spuštěná ukázka</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished">Desktop zamknut</translation>
+        <translation>Pracovní plocha uzamčena</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Zpráva od vyučujícího</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">Opravdu chcete odhlásit uživatele všech zobrazených počítačů?</translation>
+        <translation>Opravdu chcete ze všech zobrazených počítačů odhlásit všechny uživatele?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete ze všech označených počítačů odhlásit všechny uživatele?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Odhlásit uživatele</translation>
+        <translation>Odhlásit uživatele</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished">Opravdu si přejete restartovat všechny zobrazené počítače?</translation>
+        <translation>Opravdu chcete restartovat všechny zobrazené počítače?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete restartovat všechny označené počítače?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished">Restartovat počítače</translation>
+        <translation>Restartovat počítače</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished">Opravdu si přejete vypnout všechny zobrazené počítače?</translation>
+        <translation>Opravdu chcete vypnout všechny zobrazené počítače?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete vypnout všechny označené počítače?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation type="unfinished">Neplatná MAC-adresa</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished">Musíte zadat platnou MAC-adresu. Buď zadejte platnou MAC-adresu (oddělovačem je ":"), nebo nechte políčko prázdné.</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation type="unfinished">Nastavení klienta</translation>
+        <translation>Nastavení klienta</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/jméno</translation>
+        <translation>IP adresa / název počítače</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">zadejte IP-adresu nebo jméno počítače, na kterém běží klient iTALC  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">zadejte IP adresu nebo název počítače, na kterém je spuštěný klient iTALC (pro určení [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">Jméno</translation>
+        <translation>Název</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Volitelná přezdívka počítače, zobrazovaná v iTALC.</p></body></html&gt [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>MAC adresa</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardwarová/MAC-adresa klienta - používá se pouze pro zapínání klien [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardwarová/MAC-adresa klienta - používá se pouze pro zapínání klientského počítače&lt [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Třída</translation>
+        <translation>Učebna</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">Typ</translation>
+        <translation>Typ</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">Studentský počítač</translation>
+        <translation>Počítač studenta</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">Učitelský počítač</translation>
+        <translation>Počítač vyučujícího</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">Jiný/nedefinovaný počítač</translation>
+        <translation>Jiný/neurčený počítač</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>Chybějící IP adresa/název počítače</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation>Nebyla zadána IP adresa či název počítače!</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Neplatná MAC adresa</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Zadali jste neplatnou MAC adresu. Buď kolonku ponechte prázdnou nebo zadejte platný údaj (jako odělovač použijte částí adresy použijte znak „:“ – dvojtečka!).</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">Interval mezi aktualizacemi</translation>
+        <translation>Interval mezi aktualizacemi</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde se zadává interval mezi jednotlivými aktualizacemi klientů. Vyš [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde se zadává interval mezi aktualizacemi stavu klientů. Vyšší hodnoty snižují provoz [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished">(sp) sekund</translation>
+        <translation> sekund</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">Uživatelské rozhraní</translation>
+        <translation>Uživatelské rozhraní</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nezobrazovat tipy v panelu nástrojů</p></body></html [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nezobrazovat tipy v panelu nástrojů</p></body></html></translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tuto volbu zaškrněte, pokud se vám nelíbí zobrazování nápovědy v pa [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tuto volbu zaškrněte, pokud vám nevyhovuje zobrazování tipů v panelu nástrojů při uká [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">Bez tipů panelu nástrojů</translation>
+        <translation>Bez tipů k nástrojům</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nezobrazovat texty na tlačítkách lišty nástrojů.</p></body></html>< [...]
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished"></translation>
+        <translation>Bez textů na tlačítkách lišty nástrojů</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Jazyk:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Výchozí systémový</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体字</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 簡體字</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished">Vaše role (vyžaduje odpovídající klíče!)</translation>
+        <translation>Vaše úloha (vyžaduje odpovídající klíče!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde můžete vybrat vaši roli. Volbu měňte pouze pokud skutečně víte co děláte. Jinak se může stát, že nebudete schopni přistupovat k žádným klientům až dokud neobnovíte svou roli.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde můžete vybrat svou úlohu. Volbu měňte pouze pokud skutečně víte co děláte. Jinak se může stát, že nebudete schopni přistupovat k žádným klientům,  dokud neobnovíte svou původní úlohu.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Učitel</translation>
+        <translation>Vyučující</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Administrátor</translation>
+        <translation>Správce systémů</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">Podpora</translation>
+        <translation>Technická podpora</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Jiná</translation>
-    </message>
-    <message>
-        <source>Settings for multi-logon</source>
-        <translation type="unfinished">Nastavení pro vícenásobné přihlášení</translation>
+        <translation>Jiná</translation>
     </message>
     <message>
-        <source>Domain</source>
-        <translation type="unfinished">Doména</translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
-        <translation type="unfinished">Dvojklik v okně klienta</translation>
+        <source>Double click action for client window</source>
+        <translation>Akce při dvojkliku na okně klienta</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde se nastavuje co se má stát, pokud provedete dvojklik v okně klienta.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Zde se nastavuje co se má stát při provedení dvojkliku v okně klienta.</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Vzdálené ovládání</translation>
+        <translation>Vzdálené ovládání</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished">Zobrazení naživo v celé obrazovce</translation>
+        <translation>Zobrazení naživo na celé obrazovce</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Pa [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Pamatujte, že změna  [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished">Konfigurace iTALC</translation>
+        <translation>Vaše nastavení pro iTALC</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished">V tomto praconím prostředí můžete upravit iTALC vašim potřebám.</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation type="unfinished">OK</translation>
+        <translation>Toto rozhraní slouží k přizpůsobení aplikace iTALC vašim potřebám.</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">Demo iTALC</translation>
+        <translation>Ukázka iTALC</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">Chyba autentizace</translation>
+        <translation>Chyba ověření</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished">Někdo (IP: %1) se pokouší přistupovat k tomuto počítači, ale nedaří se ho autentizovat!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>Někdo (IP adresa: %1) se pokusil přistoupit na tento počítač ale nebyl schopen poskytnout platné přihlašovací údaje!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ověřování VNC selhalo z důvodu příliš mnoha pokusů o ověření.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ověření VNC se nezdařilo.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC server ukončil spojení.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>Pomocník pro přístupové klíče k iTALC</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvořit/importovat přístupové klíče k iTALC</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation type="unfinished"></translation>
+        <translation>Tento pomocník vám pomůže s vytvořením či importem přístupových klíčů pro iTALC.</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation type="unfinished"></translation>
+        <translation>Jak to funguje?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -523,879 +609,873 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přístupové klíče k iTALC se sestávají ze dvou vzájemně si odpovídajících částí - soukromé a veřejné.
+
+S použitím soukromé části mohou uživatelé řídícího počítače přistupovat ke klientským počítačům. Je velmi důležité, aby k soukromé části klíče měli přístup pouze pověření uživatelé.
+
+Veřejná část klíče se používá na klientských počítačích pro ověřování příchozích požadavků na připojení.</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Režim pomocníka</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zvolte, zda vytvořit nový přístupový klíč či importovat veřejnou část klíče na klienta.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvořit nový přístupový klíč (řídící počítač)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Importovat veřejnou část klíče (klientský počítač)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation type="unfinished"></translation>
+        <translation>Vyberte úlohu uživatele</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation type="unfinished"></translation>
+        <translation>Zvolte úlohu uživatele pro kterou vytvořit či importovat přístupové klíče:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Učitel</translation>
+        <translation>Vyučující</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Administrátor</translation>
+        <translation>Správce systémů</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation type="unfinished"></translation>
+        <translation>Pracovník technické podpory</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Jiná</translation>
+        <translation>Jiná</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation type="unfinished"></translation>
+        <translation>Uživatelské úlohy umožňují používat více přístupových klíčů naráz. Například zde mohou být různé přístupové klíče vyučujících zvášť pro každou z učeben, zatímco klíče pracovníků technické podpory mohou být stejné pro celou školu.</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation type="unfinished"></translation>
+        <translation>Složky</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportovat veřejnou část klíče (řídící počítač)</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Pro přístupové klíče použít složku, kterou určíte</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte, kte se nachází veřejná část přístupového klíče, který má být importován.</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished"></translation>
+        <translation>Souhrn</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation type="unfinished"></translation>
+        <translation>Budou provedeny následující akce:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>• Vytvořit nové přístupové klíče</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation type="unfinished"></translation>
+        <translation>• Importovat veřejnou část přístupového klíče z</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation type="unfinished"></translation>
+        <translation><neznámé></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation type="unfinished"></translation>
+        <translation> Zapsat přístupové klíče do</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation type="unfinished"></translation>
+        <translation> Exportovat veřejnou část klíče do</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation type="unfinished"></translation>
+        <translation> Nastavit pro úlohu daného uživatele</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Zvolte složku do které má být exportována veřejná část klíče</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation type="unfinished"></translation>
+        <translation>Soubory s klíči (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Neplatná veřejná část klíče</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation type="unfinished"></translation>
+        <translation>Zvolený soubor neobsahuje platnou veřejnou část přístupového klíče pro iTALC!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Vyberte cílovou složku</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvoření přístupového klíče</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nelze odebrat již existující soubor %1.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nezdařil se export veřejné části přístupového klíče z %1 do %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přístupové klíče byly vytvořeny a úspěšně zapsány do %1 a %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při vytváření přístupových klíčů. Nejspíš nemáte oprávnění zapisovat do zvolených složek.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished"></translation>
+        <translation>Import veřejné části klíče</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při importu veřejné části přístupového klíče. Nejspíš nemáte oprávnění číst zdrojový klíč či zapisovat do cílového souboru.</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Veřejná část klíče byla úspěšně importována do %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished">zamknutí obrazovky</translation>
+        <translation>uzamčení obrazovky</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Editor přihlašovací skupiny</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidejte skupiny, jejichž členové budou moci přistupovat k počítačům v rámci sítě s iTALC.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechny skupiny</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation type="unfinished"></translation>
+        <translation>Skupiny s pověřeními pro iTALC</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Akce</translation>
+        <translation>Akce</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation type="unfinished">Obecné</translation>
+        <source>MainWindow</source>
+        <translation>HlavníOkno</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation type="unfinished">Ukončit</translation>
+        <source>toolBar</source>
+        <translation>Lišta nástrojů</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation type="unfinished"></translation>
+        <translation>Konzole pro správu iTALC</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>Obecné</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation type="unfinished"></translation>
+        <translation>Server iTALC</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Cesty</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Ověření</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>Ladění</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>služba iTALC</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt ikonu v oznamovací oblasti</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation type="unfinished"></translation>
+        <translation>Automatické spuštění</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation type="unfinished"></translation>
+        <translation>Další argumenty</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation type="unfinished"></translation>
+        <translation>Restartovat službu</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation type="unfinished"></translation>
+        <translation>Zastavit službu</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation type="unfinished"></translation>
+        <translation>Stav:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation type="unfinished"></translation>
+        <translation>Zastaveno</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Povolit přepínání ploch pro uzamčení obrazovky (pokusné)</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation type="unfinished"></translation>
+        <translation>Pořizování záznamů o provozu</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Složka pro soubor se záznamy o provozu</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Log level</source>
-        <translation type="unfinished"></translation>
+        <translation>Úroveň podrobností záznamů o provozu</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation type="unfinished"></translation>
+        <translation>Nic</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Pouze kritické zprávy</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyby a kritické zprávy</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Varování a chyby</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Informace, varování a chyby</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation type="unfinished"></translation>
+        <translation>Ladicí zprávy a vše ostatní</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation type="unfinished"></translation>
+        <translation>Omezit velikost souboru se záznamy o provozu</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished"></translation>
+        <translation>MB</translation>
+    </message>
+    <message>
+        <source>Log to standard error output</source>
+        <translation>Zaznamenávat na standardní chybový výstup</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Zaznamenávat v rámci záznamů o provozu Windows</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation type="unfinished"></translation>
+        <translation>Vymazat všechny soubory se záznamy o provozu</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation type="unfinished"></translation>
+        <translation>Zachytávání deskopu</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation type="unfinished"></translation>
+        <translation>Povolit zachytávání vrstvených (jako by průhledných) oken</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Kontrolovat celou obrazovku (ponechte povolené jako výchozí)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished"></translation>
+        <translation>Nízká přesnost (rychlé)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázkový server</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>Backend</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC reflector</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>Ukázkový server iTALC 1</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
+        <translation>Síť</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Port hlavního serveru</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Port ukázkového serveru</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation type="unfinished"></translation>
+        <translation>Povolit výjimku na firewallu</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>Povolit HTTP server, který poskytuje applet JavaViewer</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>Port HTTP serveru</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Povolit připojení pouze v rámci tohoto počítače</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation type="unfinished"></translation>
+        <translation>Soubory s nastaveními</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Globální nastavení</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Osobní nastavení</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation type="unfinished"></translation>
+        <translation>Složky s daty</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Snímky</translation>
+        <translation>Snímky</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation type="unfinished"></translation>
+        <translation>Metody ověření</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>Ověřování pomocí klíčů</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>Ověřování založené na ACL</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation type="unfinished"></translation>
+        <translation>Správa přístupových klíčů</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>Základní složka pro veřejnou část klíče</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>Základní složka pro soukromou část klíče</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>Spustit pomocníka pro klíče</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Nastavení přihlašování</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation type="unfinished"></translation>
+        <source>Manage permissions</source>
+        <translation>Spravovat povolení</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation type="unfinished"></translation>
+        <source>Test</source>
+        <translation>Zkouška</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation type="unfinished"></translation>
+        <source>Access confirmation</source>
+        <translation>Potvrzení přístupu</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation type="unfinished"></translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>iTALC je možné natstavit tak, aby se ptal uživatele na schválení přistupu k desktopu při použití konkrétních způsobů ověření.</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <source>Logon authentication</source>
+        <translation>Přihlašovací ověrení</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Povolit stejnému uživateli přistoupit k desktopu bez potvrzení</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <source>Debugging iTALC</source>
+        <translation>Ladění aplikace iTALC</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation type="unfinished"></translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>Setkáte-li se s chybou či neočekávaným chování aplikace iTALC, je důležité o tom informovat vývojáře, aby chyba mohla být opravena v příštích vydáních. Tato stránka slouží ke snadnému a správnému nahlášení chyby.
+
+Pokud chybu není možné zopakovat, přeskočte kroky 1 až 3.</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation type="unfinished">O iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>Vymažte soubory se záznamy o provozu v sekci "Obecné".</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation type="unfinished"></translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation type="unfinished"></translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>V sekci "Obecné" nastavte úroveň podrobností záznamů o provozu na "Ladicí zprávy a vše ostatní".</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation type="unfinished"></translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation type="unfinished"></translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Zopakujte akce, které vedou k manifestaci chyby či neočekávanému chování.</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation type="unfinished"></translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation type="unfinished"></translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Klikněte na následující tlačítko a uložte soubor někam, kde ho pak najdete.</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation type="unfinished"></translation>
+        <source>Generate bug report archive</source>
+        <translation>Vytvořit archiv s údaji pro hlášení chyby</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation type="unfinished"></translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation type="unfinished"></translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Přejděte do <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">systému sledování chyb v iTALC</a>, zadejte nové hlášení, popište, co jste dělali v kroku 3 a připojte soubor, který jste uložili v kroku 4.</p>
+<br/>
+<br/>
+Pozn.: pokud se chyba týká řídícího i klientského počítače, připojte archivy pro hlášení chyby z obou počítačů.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation type="unfinished"></translation>
+        <source>&File</source>
+        <translation>S&oubor</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation type="unfinished"></translation>
+        <source>&Help</source>
+        <translation>&Nápověda</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation type="unfinished"></translation>
+        <source>&Quit</source>
+        <translation>&Ukončit</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation type="unfinished"></translation>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation type="unfinished"></translation>
+        <source>&Save settings into file</source>
+        <translation>Uložit nastavení do &souboru</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Uložit nastavení do souboru</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>Načíst nastavení ze soub&oru</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>O aplikaci iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>O frameworku Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
-        <translation type="unfinished">iTALC</translation>
+        <translation>iTALC</translation>
     </message>
     <message>
         <source>No write access</source>
-        <translation type="unfinished"></translation>
+        <translation>Není přístupné pro zápis</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished">Nemohu číst/zapisovat nebo vytvořit adresář %1! Pro spuštění iTALC je nutné, abyste měli oprávnění vytvářet a zapisovat do tohoto adresáře.</translation>
+        <translation>Nelze číst/zapisovat nebo vytvořit složku %1! Pro spuštění iTALC je nutné, abyste měli oprávnění vytvářet a zapisovat do této složky.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Třída</translation>
+        <translation>Učebna</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation type="unfinished">Přepnout třídu</translation>
+        <translation>Přepnout učebnu</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished">Kliknutím na toto tlačítko se zobrazí nabídka, kde si budete moci zvolit aktivní třídu.</translation>
+        <translation>Kliknutím na toto tlačítko se zobrazí nabídka, ze které je možné zvolit učebnu.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished">Klikněte na toto tlačítko a přepněte se mezi třídami.</translation>
+        <translation>Kliknutím na toto tlačítko se přepněte mezi učebnami.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation type="unfinished">Přehledový mód</translation>
+        <translation>Přehledový režim</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Přehled</translation>
+        <translation>Přehled</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished">Toto je výchozí mód iTALC, který vám umožní zobrazit přehled dostupných počítačů. Kliknutím na toto tlačítko odemknete zamknuté stanice nebo opustíte ukázkový mód.</translation>
+        <translation>Toto je výchozí režim iTALC, ve kterém si zobrazíte přehled všech dostupných počítačů. Kliknutím na toto tlačítko též odemknete zamknuté stanice nebo opustíte ukázkový režim.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Celoobrazovková ukázka</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Celoobrazovková ukázka</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Zastavit ukázku</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">V tomto módu bude vaše obrazovka zobrazena na všech dostupných počítačích. Mimo to, uživatelé nebudou schopni dělat nic jiného, protože budou jejich vstupní zařízení uzamčeny.</translation>
+        <translation>V tomto režimu bude vaše obrazovka zobrazena na všech dostupných počítačích. Mimo to, uživatelé nebudou schopni dělat nic jiného, protože budou jejich vstupní zařízení uzamčena.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázka v okně</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázka v okně</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">V tomto módu se vaše obrazovka zobrazí na všech počítačích. Uživatelé přitom budou moci přepínat mezi dalšími oknami a tak může vaše práce pokračovat.</translation>
+        <translation>V tomto režimu se vaše obrazovka zobrazí na všech počítačích. Uživatelé přitom budou moci přepínat mezi dalšími okny a pokračovat ve své práci.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation type="unfinished">Zamknout/odemknout počítače</translation>
+        <translation>Zamknout/odemknout počítače</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation type="unfinished">Zamknout vše</translation>
+        <translation>Zamknout vše</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation type="unfinished">Odemknout vše</translation>
+        <translation>Odemknout vše</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">Abyste upoutali pozornost všech uživatelů, můžete jim pomocí tohoto tlačítka uzamknout všechny počítače. V tomto módu budou všechna vstupní zařízení uzamčena a obrazovky budou černé.</translation>
+        <translation>Abyste upoutali pozornost všech uživatelů, můžete jim pomocí tohoto tlačítka uzamknout jejich počítače. V tomto režimu budou všechna vstupní zařízení uzamčena a obrazovky budou černé.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Poslat textovou zprávu</translation>
+        <translation>Poslat textovou zprávu</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished">Textová zpráva</translation>
+        <translation>Textová zpráva</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">Pomocí tohoto tlačítka můžete poslat zprávu všem uživatelům, např. zadat jim tak nové úkoly, atd.</translation>
+        <translation>Tímto tlačítkem pošlete zprávu všem uživatelům, např. zadání nových úkolů, atd.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation type="unfinished">Zapne počítače</translation>
+        <translation>Zapnout počítače</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Zapnout</translation>
+        <translation>Zapnout</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished">Kliknutím na toto tlačítko zapnete všechny viditelné počítače. Tímto způsobem nebudete muset zapínat každý počítač ručně.</translation>
+        <translation>Kliknutím na toto tlačítko zapnete všechny dostupné počítače. Takto není třeba jednotlivě zapínat každý z počítačů ručně.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Vypnout</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Vypnout</translation>
+        <translation>Vypnout</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished">Pro vypnutí všech zobrazených počítačů (např. na konci hodiny), stačí kliknout na toto tlačítko.</translation>
+        <translation>Pro vypnutí všech dostupných počítačů (např. na konci lekce), stačí kliknout na toto tlačítko.</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Podpora</translation>
+        <translation>Podpora</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation type="unfinished"></translation>
+        <translation>Přímá podpora</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished"></translation>
+        <translation>Je-li třeba poskytnout podporu někomu na konkrétním počítači, klikněte na toto tlačítko a zadejte název nebo IP adresu příslušného počítače.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation type="unfinished">Seřadit/uspořádat</translation>
+        <translation>Přizpůsobit/zarovnat</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation type="unfinished">Uspořádá okna a nastaví jejich velikosti</translation>
+        <translation>Přizpůsobí okna a upraví jejich velikost</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished">Kliknutím na toto tlačítko bude nastavena ta největší možná velikost oken klientů. Kromě toho budou všechna okna srovnána.</translation>
+        <translation>Kliknutím na toto tlačítko bude nastavena ta největší možná velikost oken klientů. Dále budou všechna okna zarovnána.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation type="unfinished">Automatický pohled</translation>
+        <translation>Automatický pohled</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished">Automaticky přenastaví okna a jejich velikosti</translation>
+        <translation>Automaticky přeusporádá okna a jejich velikosti</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished">Kliknutím na toto tlačítko budou všechna okna přeuspořádána a přizpůsobena.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation type="unfinished">Vzdálené ovládání</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation type="unfinished"></translation>
+        <translation>Kliknutím na toto tlačítko budou všechna okna přeuspořádána a přizpůsobena.</translation>
     </message>
     <message>
-        <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Launch key file assistant</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation type="unfinished"></translation>
+        <source>Could not contact iTALC service</source>
+        <translation>Nedaří se kontaktovat službu iTALC</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished"></translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>Nelze se připojit k místní službe iTALC. Nejspíš jste zadali špatné přihlašovací údaje či soubory s klíči nejsou správně nastaveny. Zkuste to znovu a případně oslovte správce systémů, aby problém vyřešil s použitím konzole pro správu iTALC.</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation type="unfinished"></translation>
+        <source>iTALC Master Control</source>
+        <translation>Hlavní řízení iTALC</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished"></translation>
+        <source>Authentication impossible</source>
+        <translation>Ověření není možné</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation type="unfinished"></translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>Nebyly žádné ověrovací klíče nebo jsou ty vámi právě používané zastaralé. Vytvořte nové soubory s klíči pomocí konzole pro správu iTALC. Případně můžete nastavit přihlašovací ověřování s použitím konzole pro správu iTALC. Pokud tak neučiníte, nebudete moci přistupovat k počítačům s iTALC.</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished"></translation>
+        <source>Remote control</source>
+        <translation>Vzdálené ovládání</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation type="unfinished"></translation>
+        <source>Quit</source>
+        <translation>Ukončit</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished"></translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>Nelze upravit automatické spouštění služby iTALC.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation type="unfinished"></translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>Nelze upravit argumenty služby iTALC.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished"></translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>Nelze změnit nastavení firewallu pro službu iTALC.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation type="unfinished"></translation>
+        <source>Configuration not writable</source>
+        <translation>Nastavení nelze zapsat</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished"></translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>Místní nastavovací backend hlásí, že do nastavení nelze zapisovat! Spusťte konzoli pro správu iTALC s vyššími oprávněními.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation type="unfinished"></translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Veškerá nastavení byla úspěšně použita.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation type="unfinished"></translation>
+        <source>An error occured while applying settings!</source>
+        <translation>Chyba při použití nastavení! </translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished"></translation>
+        <source>iTALC Management Console %1</source>
+        <translation>Konzole pro správu iTALC %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>Restartovat službu iTALC</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechna nastavení byla úspěšně uložena. Aby se změny projevily, je třeba restartovat službu iTALC - provést nyní?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Spouštění služby iTALC</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Zastavování služby iTALC</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>V běhu</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>Pro smazání souborů se záznamy o provozu je třeba dočasně zastavit službu iTALC - pokračovat?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished"></translation>
+        <translation>Soubory se záznamy o provozu byly smazány</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechny soubory se záznamy o provozu byly úspěšně smazány.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nelze smazat soubory se záznamy o provozu.</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>Načíst nastavení ze souboru</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>Soubory XML (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Uložit nastavení do souboru</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished"></translation>
+        <translation>Test přihlašovacího ověřování</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ověření pomocí poskytnutých přihlašovacích údajů proběhlo úspěšně.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>Ověření pomocí poskytnutých přihlašovacích údajů se nezdařilo!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>Uložit přílohu pro hlášení chyby</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>Archiv s údaji pro hlášení chyby v iTALC (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished"></translation>
+        <translation>Archiv s údaji pro hlášení chyby v iTALC byl uložen</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Archiv s údaji pro hlášení chyby v iTALC byl uložen do %1. Obsahuje soubory se záznamy o provozu iTALC a informace o vašem operačním systému. Můžete jej připojit k hlášení chyby.</translation>
     </message>
     <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Neuložená nastavení</translation>
     </message>
     <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
-    <message>
-        <source>Message from teacher</source>
-        <translation type="unfinished">Zpráva od učitele</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Některá nastavení nebyla doposud uložena. Ukončit i tak?</translation>
     </message>
 </context>
 <context>
@@ -1403,66 +1483,66 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;"> Vítejte v iTALC!</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;"> Vítejte v aplikaci iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished">Na pracovní ploše jsou vidět různá tlačítka. Každé tlačítko je připojeno k nějaké pracovní ploše. Jednoduše se kliknutím na odpovídající tlačítko podívejte na dostupné pracovní plochy.</translation>
+        <translation>Zde vidíte pracovní lištu s různými tlačítky. Každé z nich je připojeno k nějaké pracovní ploše. Dostupné plochy si jednoduše zobrazíte kliknutím na odpovídající tlačítko.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished"></translation>
+        <translation>S použitím správce učeben můžete spravovat své učebny a počítače. Můžete zde též vidět kteří uživatelé jsou přihlášeni.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished">Plocha se snímky obrazovky je velmi užitečná. Umožní vám spravovat snímky, které provedete.</translation>
+        <translation>Plocha se snímky obrazovky je velmi užitečná. Umožňuje vám spravovat snímky, které jste pořídili.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished">Samozřejmě, že můžete nastavovat iTALC. To se obvykle provádí pomocí konfigurační plochy.</translation>
+        <translation>iTALC si samozřejmně můžete nastavit dle svých potřeb. Obvykle se to provádí pomocí rozhraní pro správu nastavení.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">O iTALC</translation>
+        <translation>O aplikaci iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Přehled</translation>
+        <translation>Přehled</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished">Některé základní informace o iTALC a použití programu.</translation>
+        <translation>Několik základních informací o iTALC a otom, jak jej používat.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>Přihlášení iTALC</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte své uživatelské jméno abyste mohli přistupovat k iTALC klientům.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Uživatelské jméno</translation>
+        <translation>Uživatelské jméno</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Heslo</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Spravovat</translation>
     </message>
 </context>
 <context>
@@ -1473,11 +1553,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation>Nemohu zaregistrovat službu '%1'.</translation>
+        <translation>Nelze zaregistrovat službu '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>Nemohu kontaktovat Správce služeb (máte potřebná oprávnění?!) - služba '%1' nebyla zaregistrována.</translation>
+        <translation>Nelze kontaktovat Správce služeb (máte potřebná oprávnění?!) - služba '%1' nebyla zaregistrována.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
@@ -1485,7 +1565,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation>Nemohu zaregistrovat službu '%1'.</translation>
+        <translation>Nelze zaregistrovat službu '%1'.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
@@ -1493,19 +1573,19 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation>Službu '%1' není možno zastavit.</translation>
+        <translation>Službu '%1' nelze zastavit.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation>Služba '%1' byla odregistrována.</translation>
+        <translation>Registrace služby '%1' byla zrušena.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation>Služba '%1' není registrována a z tohoto jí nelze odregistrovat.</translation>
+        <translation>Služba '%1' není registrována a proto není jakou registraci rušit.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation>Službu '%1' nebylo možno odregistrovat.</translation>
+        <translation>Registraci služby '%1' nelze zrušit.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
@@ -1513,129 +1593,129 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>Nemohu kontakovat Správce služeb (máte potřebná oprávnění?!) - službu '%1' nelze odregistrovat.</translation>
+        <translation>Nelze kontakovat Správce služeb (máte potřebná oprávnění?!) - registraci služby '%1' proto nelze zrušit.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>Nemohu kontaktovat Správce služeb (máte potřebná oprávnění?!) - služba '%1' nebyla zastavena.</translation>
+        <translation>Nelze kontaktovat Správce služeb (máte potřebná oprávnění?!) - služba '%1' proto nebyla zastavena.</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Živé zobrazení (%1 na %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Vzdálené ovládání (%1 na %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">neznámý uživatel</translation>
+        <translation>neznámý uživatel</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished">Pouze prohlížet</translation>
+        <translation>Pouze zobrazovat</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Vzdálené ovládání</translation>
+        <translation>Vzdálené ovládání</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished">Zamknout studenta</translation>
+        <translation>Zamknout studenta</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished">Odemknout studenta</translation>
+        <translation>Odemknout studenta</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Snímek</translation>
+        <translation>Snímek</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">Celá obrazovka</translation>
+        <translation>Celá obrazovka</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished">Okno</translation>
+        <translation>Okno</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished">Ukončit</translation>
+        <translation>Ukončit</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished">Připojuji %1</translation>
+        <translation>Připojování k %1 ...</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished">Připojeno.</translation>
+        <translation>Připojeno.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">Vzdálené odhlášení</translation>
+        <translation>Vzdálené přihlášení</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished"></translation>
+        <translation>Do políček níže zadejte uživatelské jméno, heslo a případně název domény. Tyto údaje pak budou používány k přihlašování na počítače.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Uživatelské jméno</translation>
+        <translation>Uživatelské jméno</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Heslo</translation>
+        <translation>Heslo</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Doména</translation>
+        <translation>Doména</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished"></translation>
+        <translation>Spustit příkazy</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte příkaz, který má být spuštěn na označených klientech. Je možné zadat více příkazů naráz – každý zvlášť na svém řádku.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>neznámé</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished">Nemohu získat snímek, protože adresář %1 neexistuje a nelze ho vytvořit.</translation>
+        <translation>Snímek nelze pořídit, protože složka %1 neexistuje a nedaří se jí vytvořit.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Snímek</translation>
+        <translation>Snímek obrazovky</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Snímky</translation>
+        <translation>Snímky obrazovek</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">Jednoduše spravuje vámi provedené snímky ploch.</translation>
+        <translation>Toto rozhraní slouží pro snadnou správu pořízených snímků obrazovek.</translation>
     </message>
 </context>
 <context>
@@ -1643,124 +1723,124 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Všechny pořízené snímky se uchovávají zde. Snímky můžete provádět výběrem odpovídající položky v kontextové nabídce klientského okna. Tyto snímky je možno spravovat pomocí tlačítek níže.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Všechny pořízené snímky se uchovávají zde. Snímky je možné pořizovat výběrem odpovídající položky v kontextové nabídce klientského okna. Tyto snímky je pak možné spravovat pomocí tlačítek níže.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">Uživatel:</translation>
+        <translation>Uživatel:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">Počítač:</translation>
+        <translation>Počítač:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">Datum:</translation>
+        <translation>Datum:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">Čas:</translation>
+        <translation>Čas:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished"></translation>
+        <translation>Zobrazit</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Podpora</translation>
+        <translation>Podpora</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte IP adresu nebo název počítače ke kterému se chcete připojit.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Poslat textovou zprávu</translation>
+        <translation>Poslat textovou zprávu</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">Do políčka níže zadejte vaši zprávu, která bude poslána vybraným uživatelům.</translation>
+        <translation>Do kolonky níže zadejte svou zprávu, určenou všem označeným uživatelům.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">Připojuji se k %1 ...</translation>
+        <translation>Připojování k %1…</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Přehled</translation>
+        <translation>Přehled</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázka na celou obrazovku</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázka v okně</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">Obrazovka zamknuta</translation>
+        <translation>Obrazovka uzamčena</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">Zobrazit naživo</translation>
+        <translation>Zobrazit naživo</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Vzdálené ovládání</translation>
+        <translation>Vzdálené ovládání</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">Zobrazit studentům demo</translation>
+        <translation>Nechat studenta předvést ukázku</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Poslat textovou zprávu</translation>
+        <translation>Poslat textovou zprávu</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Odhlásit uživatele</translation>
+        <translation>Odhlásit uživatele</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">Sejmout obrazovku</translation>
+        <translation>Pořídit snímek obrazovky</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Zapnout</translation>
+        <translation>Zapnout</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">Restartovat</translation>
+        <translation>Restartovat</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Vypnout</translation>
+        <translation>Vypnout</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">Vykonat příkaz</translation>
+        <translation>Spustit příkazy</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/de.qm b/lib/resources/de.qm
deleted file mode 100644
index 9276e1f..0000000
Binary files a/lib/resources/de.qm and /dev/null differ
diff --git a/lib/resources/de.ts b/lib/resources/de.ts
index 182ad4a..77d1a9d 100644
--- a/lib/resources/de.ts
+++ b/lib/resources/de.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation>Lizenz</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -442,6 +442,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Bitte beachten Sie,  [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -600,11 +700,11 @@ Der öffentliche Schlüssel wird auf den Clientcomputern genutzt, um für jede e
         <source>The following actions will be taken:</source>
         <translation>Die folgenden Aktionen werden durchgeführt:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>• Neue Zugriffsschlüssel erzeugen</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>• Öffentlichen Zugriffsschlüssel exportieren aus</translation>
     </message>
@@ -612,15 +712,15 @@ Der öffentliche Schlüssel wird auf den Clientcomputern genutzt, um für jede e
         <source><unknown></source>
         <translation><unbekannt></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• Zugriffsschlüssel schreiben nach</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• Öffentlichen Schlüssel exportieren nach</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>• Konfigurieren für Nutzerrolle</translation>
     </message>
diff --git a/lib/resources/el.qm b/lib/resources/el.qm
deleted file mode 100644
index d91f076..0000000
Binary files a/lib/resources/el.qm and /dev/null differ
diff --git a/lib/resources/el.ts b/lib/resources/el.ts
index 66cc2c1..1181f23 100644
--- a/lib/resources/el.ts
+++ b/lib/resources/el.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="el_GR">
+<TS version="2.1" language="el_GR">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Άδεια</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -444,6 +444,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Πρ [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -598,11 +698,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -610,15 +710,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/es.qm b/lib/resources/es.qm
deleted file mode 100644
index f7181d6..0000000
Binary files a/lib/resources/es.qm and /dev/null differ
diff --git a/lib/resources/es.ts b/lib/resources/es.ts
index e797a87..1e92428 100644
--- a/lib/resources/es.ts
+++ b/lib/resources/es.ts
@@ -1,515 +1,622 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">Acerca de iTALC</translation>
+        <translation>Acerca de iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">Acerca</translation>
+        <translation>Acerca</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">Autores</translation>
+        <translation>Autores</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">Traducción</translation>
+        <translation>Traducción</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation type="unfinished"></translation>
+        <translation>Traducción realizada por 
+
+José Antonio Muñoz Jiménez <jamj2000 at gmail dot com>
+(basándose en traducciones previas)
+
+Si deseas mejorar la traducción actual, por favor, ¡contacta con un desarrollador de iTALC!</translation>
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">Licencia</translation>
+        <translation>Licencia</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
         <source>Never for this session</source>
-        <translation type="unfinished">Nunca para esta sesión</translation>
+        <translation>Nunca para esta sesión</translation>
     </message>
     <message>
         <source>Always for this session</source>
-        <translation type="unfinished">Siempre para esta sesión</translation>
+        <translation>Siempre para esta sesión</translation>
     </message>
     <message>
         <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <translation>Confirmar acceso a escritorio</translation>
     </message>
     <message>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <translation>El usuario %1 en el equipo %2 quiere acceder a tu escritorio. ¿Quieres permitir el acceso?</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">Administrador de Clases</translation>
+        <translation>Administrador de clases</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">Utilice este espacio para administrar sus computadoras y clases de una manera fácil.</translation>
+        <translation>Utilice este espacio para administrar de una manera fácil sus equipos y clases.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished">Aquí es donde las computadoras y las clases son administradas. Puedes agregar computadoras o clases apretando el botón derecho en esta lista.</translation>
+        <translation>Aquí es donde se administran los equipos y las clases. Puede agregar equipos o clases pulsando el botón derecho en esta lista.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">Clases/computadoras</translation>
+        <translation>Clases/computadoras</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished">Dirección IP</translation>
+        <translation>Dirección IP</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombres de usuario</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostar nombres de usuario</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished"></translation>
+        <translation>Use el menú contextual (botón derecho del ratón) para añadir/eliminar equipos y/o clases.</translation>
     </message>
     <message>
         <source>Export to text-file</source>
-        <translation type="unfinished">Exportar a archivo de texto</translation>
+        <translation>Exportar a archivo de texto</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished"></translation>
+        <translation>Utilice este botón para exportar esta lista de equipos y nombres de usuario a un archivo de texto. Puede utilizar este archivo más tarde para recoger archivos después de la finalización de un examen. Esto es a veces necesario, ya que algunos usuarios podrían haber terminado y cerrado la sesión anterior, por lo que no pueden recogerse sus archivos al final del examen.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished">Ocultar computadora del Profesor</translation>
+        <translation>Ocultar equipo del profesor</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished">Mostrar/ocultar</translation>
+        <translation>Mostrar/ocultar</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished">Editar configuración</translation>
+        <translation>Editar configuración</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">Borrar</translation>
+        <translation>Borrar</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">Mostrar todas las computadoras en el aula</translation>
+        <translation>Mostrar todos los equipos en el aula</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">Ocultar todas las computadoras en el aula</translation>
+        <translation>Ocultar todos los equipos en el aula</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">Editar nombre</translation>
+        <translation>Editar nombre</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">Borrar clase</translation>
+        <translation>Borrar clase</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">Agregar computadora</translation>
+        <translation>Agregar equipo</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">Añadir clase</translation>
+        <translation>Añadir clase</translation>
     </message>
     <message>
         <source>No configuration-file found</source>
-        <translation type="unfinished">No se ha encontrado el archivo de configuración</translation>
+        <translation>No se ha encontrado el archivo de configuración</translation>
     </message>
     <message>
         <source>Could not open configuration file %1.
 You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished">No se ha encontrado el archivo de configuración %1.
-Deberás agregar al menos una clase y una computadora usando el Administrador de las Clases el cual lo encontraras dentro del programa en la barra lateral del lado izquierdo.</translation>
+        <translation>No pudo abrirse el archivo de configuración %1.
+Deberá agregar al menos una clase y un equipo usando el Administrador de clases que encontrará dentro del programa en la barra lateral al lado izquierdo.</translation>
     </message>
     <message>
         <source>Error in configuration-file</source>
-        <translation type="unfinished">Error en el archivo de configuración</translation>
+        <translation>Error en el archivo de configuración</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished">Error durante el análisis del archivo de configuración %1.
-Por favor editelo. De otra forma deberá borrar este archivo y tendrá que agregar todas las clases y computadoras de nuevo.</translation>
+        <translation>Error durante el análisis del archivo de configuración %1.
+Por favor edítelo. De otra forma deberá borrar este archivo y tendrá que agregar todas las clases y equipos de nuevo.</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished">Error al leer archivo de configuración %1.
+        <translation>Error al leer archivo de configuración %1.
 Por favor, edítelo o en otro caso, bórrelo.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished">Seleccionar archivo de salida</translation>
+        <translation>Seleccionar archivo de salida</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished">Archivos de texto (*.txt)</translation>
+        <translation>Archivos de texto (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished"></translation>
+        <translation>Acciones para lo seleccionado</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Acciones</translation>
+        <translation>Acciones</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished">Acciones para %1</translation>
+        <translation>Acciones para %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished">Nuevo nombre para la clase</translation>
+        <translation>Nuevo nombre para la clase</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished">Por favor introduzca el nuevo nombre para la clase "%1".</translation>
+        <translation>Por favor introduzca el nuevo nombre para la clase "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished">¿Esta seguro que desea remover la clase "%1"?
-Todas las computadoras tambien serán removidas!</translation>
+        <translation>¿Esta seguro que desea eliminar la clase "%1"?
+¡Todos los equipos serán eliminados también!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished">Clase no encontrada</translation>
+        <translation>Clase no encontrada</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished">Antes de agregar computadoras se debe crear al menos una clase.
+        <translation>Antes de agregar equipos debe crearse al menos una clase.
 ¿Desea crear una clase ahora?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished">Nueva clase</translation>
+        <translation>Nueva clase</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished">Por favor ingrese el nombre de la clase que desea crear.</translation>
+        <translation>Por favor ingrese el nombre de la clase que desea crear.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished">Estado desconocido</translation>
+        <translation>Estado desconocido</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">Usuario no conectado</translation>
+        <translation>Usuario no conectado</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished">Equipo no disponible</translation>
+        <translation>Equipo no disponible</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished">Modo demo funcionando</translation>
+        <translation>Modo demo funcionando</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished">Escritorio bloqueado</translation>
+        <translation>Escritorio bloqueado</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">¿Esta seguro que desea desconectar a todos los usuarios de las computadoras visibles?</translation>
+        <translation>¿Esta seguro que desea desconectar a todos los usuarios de los equipos visibles?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Esta seguro que desea desconectar a todos los usuarios de los equipos seleccionados?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Desconectar usuario</translation>
+        <translation>Desconectar usuario</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished">¿Esta seguro que desea reiniciar todas las computadoras visibles?</translation>
+        <translation>¿Esta seguro que desea reiniciar todos los equipos visibles?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Esta seguro que desea reiniciar todos los equipos seleccionados?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished">Reiniciar computadoras</translation>
+        <translation>Reiniciar computadoras</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished">¿Esta seguro que desea apagar todas las computadoras visibles?</translation>
+        <translation>¿Esta seguro que desea apagar todos los equipos visibles?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Esta seguro que desea apagar todos los equipos seleccionados?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
         <source>Invalid MAC-address</source>
-        <translation type="unfinished">Dirección MAC inválida</translation>
+        <translation>Dirección MAC inválida</translation>
     </message>
     <message>
         <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished">Ha especificado una dirección MAC invalida. Deje el campo en blanco o ingrese una dirección MAC valida (¡Utilice ":" como separador!).</translation>
+        <translation>Ha especificado una dirección MAC inválida. Deje el campo en blanco o ingrese una dirección MAC válida (¡Utilice ":" como separador!).</translation>
     </message>
     <message>
         <source>Client settings</source>
-        <translation type="unfinished">Configuración de los clientes</translation>
+        <translation>Configuración de los clientes</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/nombre de equipo</translation>
+        <translation>IP/nombre de equipo</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> introduzca una dirección IP o nombre de equipo para que iTALC se c [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> introduzca una dirección IP o nombre de equipo para que iTALC se conecte a ese equip [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">Nombre</translation>
+        <translation>Nombre</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alias opcional del equipo que se muestra en iTALC.</p></body></html&gt [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>Dirección MAC</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dirección MAC - sólo usada para encender los equipos</p></ [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dirección MAC - sólo usada para encender los equipos</p></body></html& [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Clase</translation>
+        <translation>Clase</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">Tipo</translation>
+        <translation>Tipo</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">Computadora Estudiante</translation>
+        <translation>Equipo de estudiante</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">Computadora Profesor</translation>
+        <translation>Equipo de profesor</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">Computadora: Otra o indefinida</translation>
+        <translation>Equipo: otro o indefinido</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>Falta la dirección IP/nombre de equipo</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation>¡No indicó una dirección IP o nombre de equipo!</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">Intervalo entre actualizaciones</translation>
+        <translation>Intervalo entre actualizaciones</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí puede asignar un intervalo entre la actualización de los clien [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí puede asignar un intervalo entre la actualización de los clientes. Valores más a [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished">segundos</translation>
+        <translation> segundos</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">Interfaz de usuario</translation>
+        <translation>Interfaz de usuario</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No mostrar los globos de ayuda para la barra de botones.</p>& [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No mostrar los globos de ayuda para la barra de botones.</p></body></h [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tilde esta opción si es molestado por la aparición de los globos de [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Marque esta opción si le molesta la aparición de los globos de ayuda cuando mueve el  [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">Desactivar ayudas en globos</translation>
+        <translation>Desactivar ayudas en globos</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No mostrar texto en la barra de botones</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished"></translation>
+        <translation>Barra de botones sin texto</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished">Su rol (¡se necesitan las claves correctas!)</translation>
+        <translation>Su rol (¡se necesitan las claves correctas!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&qu [...]
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí puede  [...]
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Profesor</translation>
+        <translation>Profesor</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Administrador</translation>
+        <translation>Administrador</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">Soporte técnico</translation>
+        <translation>Soporte técnico</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Otro</translation>
+        <translation>Otro</translation>
     </message>
     <message>
         <source>Settings for multi-logon</source>
-        <translation type="unfinished">Configuración para multi entrada</translation>
+        <translation>Configuración para multi entrada</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Dominio</translation>
+        <translation>Dominio</translation>
     </message>
     <message>
         <source>Double-click action for client-window</source>
-        <translation type="unfinished">Acción 'Doble Click' para ventana del cliente</translation>
+        <translation>Acción 'Doble Click' para ventana del cliente</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&qu [...]
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aquí puede  [...]
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Control remoto</translation>
+        <translation>Control remoto</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished">Ver en vivo en Pantalla Completa</translation>
+        <translation>Ver en vivo en Pantalla Completa</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Fa [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Por favor, tenga en  [...]
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished">Tu Configuración iTALC</translation>
+        <translation>Configuración de iTALC</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished">En esta zona puede configurar iTALC a sus necesidades.</translation>
+        <translation>En esta zona puede configurar iTALC según sus necesidades.</translation>
     </message>
 </context>
 <context>
     <name>DecoratedMessageBox</name>
     <message>
         <source>OK</source>
-        <translation type="unfinished">OK</translation>
+        <translation>OK</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">iTALC Demo</translation>
+        <translation>iTALC Demo</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">Error de autentificacion</translation>
+        <translation>Error de autentificacion</translation>
     </message>
     <message>
         <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished">Alguien (IP: %1) esta intentando acceder a este ordenador pero no puede autentificarse correctamente!</translation>
+        <translation>Alguien (IP: %1) esta intentando acceder a este ordenador pero no puede autentificarse correctamente!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation type="unfinished"></translation>
+        <translation>La autenticación VNC falló debido a demasiados intentos de autenticación.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación VNC fallida.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>El servidor VNC cerró la conexión.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Asistente de Clave de Acceso)</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Crear/importar claves de acceso iTALC</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este asistente le ayudará a crear o importar las claves de acceso iTALC.</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Cómo funciona?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -517,879 +624,888 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished"></translation>
+        <translation>Las claves de acceso de iTALC constan de dos partes que trabajan juntas, una parte privada y una parte pública.
+
+Usando la parte privada de la clave, los usuarios en el equipo maestro será capaces de acceder a los equipos cliente. Es importante que sólo los usuarios autorizados tengan acceso de lectura al archivo de clave privada.
+
+La parte pública de la clave se utiliza en los equipos cliente para verificar que cualquier solicitud de conexión entrante está autorizada.</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Modo asistente</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor, elija si desea crear nuevas claves de acceso o importar una clave pública en un cliente.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Crear nuevas claves de acceso (equipo maestro)</translation>
     </message>
     <message>
         <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
+        <translation>assistantModeButtonGroup</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar clave pública (equipo cliente)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccionar rol de usuario</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor, seleccione un rol de usuario para el cual crear o importar las claves de acceso:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Profesor</translation>
+        <translation>Profesor</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Administrador</translation>
+        <translation>Administrador</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation type="unfinished"></translation>
+        <translation>Miembro del equipo de soporte</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Otro</translation>
+        <translation>Otro</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation type="unfinished"></translation>
+        <translation>Los roles de usuario utilizan múltiples claves de acceso en paralelo. Por ejemplo, puede haber diferentes claves de acceso de profesor para cada clase, mientras que las claves de acceso de soporte son las mismas para toda la escuela.</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation type="unfinished"></translation>
+        <translation>Directorios</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar la parte pública de la clave (equipo maestro)</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Usar directorio de destino personalizado para las claves de acceso</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor, especifique la ubicación de la clave pública de acceso a ser importada.</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished"></translation>
+        <translation>Resumen</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation type="unfinished"></translation>
+        <translation>Se tomarán las siguientes acciones:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>• Crear nuevas claves de acceso</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation type="unfinished"></translation>
+        <translation>• Importar clave pública de acceso desde</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation type="unfinished"></translation>
+        <translation><desconocido></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation type="unfinished"></translation>
+        <translation>• Escribir clave(s) de acceso a</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation type="unfinished"></translation>
+        <translation>• Exportar clave pública a</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation type="unfinished"></translation>
+        <translation>• Configurar para rol de usuario</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccione directorio al que exportar la clave pública</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivos de clave (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Clave pública inválida</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation type="unfinished"></translation>
+        <translation>¡El archivo seleccionado no contiene una clave pública de acceso iTALC válida!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccione directorio de destino</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation type="unfinished"></translation>
+        <translation>Creación de clave de acceso</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo eliminar el archivo %1 existente previamente.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo exportar la clave pública de acceso de %1 a %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Las claves de acceso fueron creadas y escritas correctamente de %1 a %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se ha producido un error al crear las claves de acceso. Probablemente no tenga permisos de escritura en los directorios seleccionados.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished"></translation>
+        <translation>Importación de clave pública</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se produjo un error al importar la clave pública de acceso. Es probable que no tenga permiso para leer la clave de origen o para escribir el archivo de destino.</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>La clave pública fue importada correctamente a %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished"></translation>
+        <translation>bloquer pantalla</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Editor de grupos de inicio de sesión</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor, añada los grupos cuyos miembros tendrán acceso a los equipos de su red iTALC.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos los grupos</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation type="unfinished"></translation>
+        <translation>Grupos con privilegios iTALC</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Acciones</translation>
+        <translation>Acciones</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
         <source>General</source>
-        <translation type="unfinished">General</translation>
+        <translation>General</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished">Salir</translation>
+        <translation>Salir</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Consola de Administración)</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Servidor)</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Rutas</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Servicio)</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar icono</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation type="unfinished"></translation>
+        <translation>Arranque automático</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation type="unfinished"></translation>
+        <translation>Argumentos adicionales</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation type="unfinished"></translation>
+        <translation>Iniciar servicio</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation type="unfinished"></translation>
+        <translation>Parar servicio</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation type="unfinished"></translation>
+        <translation>Estado:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation type="unfinished"></translation>
+        <translation>Parado</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation type="unfinished"></translation>
+        <translation>Registro</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Directorio de registro</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Log level</source>
-        <translation type="unfinished"></translation>
+        <translation>Nivel de registro</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation type="unfinished"></translation>
+        <translation>Nada</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Solo mensajes críticos</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Errores y mensajes críticos</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Avisos y errores</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Información, avisos y errores</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation type="unfinished"></translation>
+        <translation>Mensajes de depuración y todo lo demás</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation type="unfinished"></translation>
+        <translation>Límite archivo de registro</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished"></translation>
+        <translation>MB</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar todos los archivos de registro</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura de escritorio</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation type="unfinished"></translation>
+        <translation>Habilitar captura de ventanas apiladas (semitransparentes)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished"></translation>
+        <translation>Baja precisión (modo turbo)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>Servidor demo</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
+        <translation>Red</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Puerto de servidor core</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Puerto de servidor demo</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar excepción en el cortafuegos</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivos de configuración</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuración global</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuración personal</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation type="unfinished"></translation>
+        <translation>Directorios de datos</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Capturas</translation>
+        <translation>Capturas</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation type="unfinished"></translation>
+        <translation>Métodos de autenticación</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation type="unfinished"></translation>
+        <translation>Administración de claves de acceso</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Ajustes de inicio de sesión</translation>
     </message>
     <message>
         <source>&File</source>
-        <translation type="unfinished"></translation>
+        <translation>&Archivo</translation>
     </message>
     <message>
         <source>&Help</source>
-        <translation type="unfinished"></translation>
+        <translation>A&yuda</translation>
     </message>
     <message>
         <source>&Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>&Salir</translation>
     </message>
     <message>
         <source>Ctrl+Q</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+S</translation>
     </message>
     <message>
         <source>&Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <translation>&Guardar configuración en archivo</translation>
     </message>
     <message>
         <source>Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar configuración en archivo</translation>
     </message>
     <message>
         <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+G</translation>
     </message>
     <message>
         <source>L&oad settings from file</source>
-        <translation type="unfinished"></translation>
+        <translation>&Leer configuración de archivo</translation>
     </message>
     <message>
         <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+L</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">Acerca de iTALC</translation>
+        <translation>Acerca de iTALC</translation>
     </message>
     <message>
         <source>About Qt</source>
-        <translation type="unfinished"></translation>
+        <translation>Acerca de Qt</translation>
     </message>
     <message>
         <source>MainWindow</source>
-        <translation type="unfinished"></translation>
+        <translation>MainWindow</translation>
     </message>
     <message>
         <source>toolBar</source>
-        <translation type="unfinished"></translation>
+        <translation>toolBar</translation>
     </message>
     <message>
         <source>iTALC Management Console %1</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Consola de Administración %1)</translation>
     </message>
     <message>
         <source>Running</source>
-        <translation type="unfinished"></translation>
+        <translation>Funcionando</translation>
     </message>
     <message>
         <source>Load settings from file</source>
-        <translation type="unfinished"></translation>
+        <translation>Leer configuración de archivo</translation>
     </message>
     <message>
         <source>XML files (*.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivos XML (*.xml)</translation>
     </message>
     <message>
         <source>Save settings to file</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar configuración en archivo</translation>
     </message>
     <message>
         <source>Unsaved settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Ajustes no guardados</translation>
     </message>
     <message>
         <source>There are unsaved settings. Quit anyway?</source>
-        <translation type="unfinished"></translation>
+        <translation>Hay ajustes no guardados. ¿Salir de todas maneras?</translation>
     </message>
     <message>
         <source>Configuration not writable</source>
-        <translation type="unfinished"></translation>
+        <translation>La configuración no se puede escribir</translation>
     </message>
     <message>
         <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation type="unfinished"></translation>
+        <translation>El back-end de configuración local informó que la configuración no se puede escribir. Por favor, ejecute la consola de administración ITALC con privilegios elevados.</translation>
     </message>
     <message>
         <source>All settings were applied successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos los ajustes se aplicaron con éxito.</translation>
     </message>
     <message>
         <source>An error occured while applying settings!</source>
-        <translation type="unfinished"></translation>
+        <translation>¡Se produjo un error al aplicar la configuración!</translation>
     </message>
     <message>
         <source>iTALC</source>
-        <translation type="unfinished">iTALC</translation>
+        <translation>iTALC</translation>
     </message>
     <message>
         <source>No write access</source>
-        <translation type="unfinished"></translation>
+        <translation>No hay acceso de escritura</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished">No puedo leer, escribir o crear el directorio %1! Para ejecutar iTALC asegúrese que tiene permitido crear o escribir en este directorio.</translation>
+        <translation>¡No puedo leer, escribir o crear el directorio %1! Para ejecutar iTALC asegúrese que tiene permitido crear o escribir en este directorio.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Clase</translation>
+        <translation>Clase</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation type="unfinished">Cambiar de clase</translation>
+        <translation>Cambiar de clase</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished">Haga click en este botón para abrir un menú donde puede seleccionar la clase activa.</translation>
+        <translation>Pulse en este botón para abrir un menú donde puede seleccionar la clase activa.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished">Haga Click en  este botón, para cambiar entre clases.</translation>
+        <translation>Pulse en este botón para cambiar entre clases.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation type="unfinished">Modo ayuda</translation>
+        <translation>Modo ayuda</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Ayuda</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished">Este es el modo por defecto de iTALC que le permite tener una visión general de todas las computadoras visibles. También use este botón para desbloquear estaciones bloqueadas o dejar el modo Demo.</translation>
+        <translation>Este es el modo por defecto de iTALC que le permite tener una visión general de todas las computadoras visibles. Use también este botón para desbloquear estaciones bloqueadas o dejar el modo Demo.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo a pantalla completa</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo en Pantalla</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Parar Demo</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">En este modo tu pantalla se verá en una ventana en todas las computadoras visibles. Además los usuarios no son capaces de hacer nada más dado que todos los dispositivos de entrada son bloqueados en este modo.</translation>
+        <translation>En este modo tu pantalla se verá a pantalla completa en todos los equipos visibles. Además los usuarios no son capaces de hacer nada más dado que todos los dispositivos de entrada son bloqueados en este modo.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">Demo en ventana</translation>
+        <translation>Demo en ventana</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo en Ventana</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">En este modo tu pantalla se verá en una ventana en todas las computadoras visibles. Los usuarios son capaces de cambiar a otras ventanas y así seguir trabajando.</translation>
+        <translation>En este modo tu pantalla se verá en una ventana en todos los equipos visibles. Los usuarios son capaces de cambiar a otras ventanas y así seguir trabajando.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation type="unfinished">Bloquear y desbloquear escritorios</translation>
+        <translation>Bloquear y desbloquear escritorios</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation type="unfinished">Bloquear todas</translation>
+        <translation>Bloquear todos</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation type="unfinished">Desbloquear todas</translation>
+        <translation>Desbloquear todos</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">Utilizando este botón usted puede tener la atención completa de todos los usuarios bloqueando sus escritorios. En este modo todos los dispositivos de entrada se bloquean y la pantalla queda en negro.</translation>
+        <translation>Utilizando este botón puede tener la atención completa de todos los usuarios bloqueando sus escritorios. En este modo todos los dispositivos de entrada se bloquean y la pantalla queda en negro.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Enviar mensaje de texto</translation>
+        <translation>Enviar mensaje de texto</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished">Mensaje</translation>
+        <translation>Mensaje de texto</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">Utilice este botón para enviar un mensaje de texto a todos los usuarios, por ejemplo para informarles nuevas tareas, etc.</translation>
+        <translation>Utilice este botón para enviar un mensaje de texto a todos los usuarios, por ejemplo para informarles de nuevas tareas, etc.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation type="unfinished">Arrancar computadoras</translation>
+        <translation>Encender equipos</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Encender</translation>
+        <translation>Encender</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished">Apreta este botón para encender todas las computadoras visibles. De esta forma no tienes que encender cada computadora manualmente.</translation>
+        <translation>Pulse este botón para encender todos los equipos visibles. De esta forma no tienes que encender cada computadora manualmente.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar equipos</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Apagar</translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished">Utilice este botón para apagar todas las computadoras visializadas (por ejemplo luego de finalizar la lección).</translation>
+        <translation>Utilice este botón para apagar todos los equipos visibles (por ejemplo después de finalizar la lección).</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Soporte técnico</translation>
+        <translation>Soporte técnico</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation type="unfinished"></translation>
+        <translation>Soporte directo</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished"></translation>
+        <translation>Si necesita ayudar a alguien en cierto equipo, puede pulsar este botón e introducir después el correspondiente nombre de equipo o IP.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation type="unfinished">Ajustar/Alinear</translation>
+        <translation>Ajustar/Alinear</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation type="unfinished">Ajustar tamaño de ventanas</translation>
+        <translation>Ajustar tamaño de ventanas</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished">Con este botón se ajustan los tamaños de las ventanas al mayor posible.</translation>
+        <translation>Con este botón se ajustan los tamaños de las ventanas al mayor posible.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation type="unfinished">Auto juste</translation>
+        <translation>Auto ajuste</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished">Reacomoda ventanas y su tamaño</translation>
+        <translation>Reacomoda ventanas y su tamaño</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished">Presionando este botón todos las ventanas visibles se ajustan y se reorganizan automáticamente.</translation>
+        <translation>Presionando este botón todos las ventanas visibles se ajustan y se reorganizan automáticamente.</translation>
     </message>
     <message>
         <source>iTALC Master Control</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC (Control Maestro)</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Control remoto</translation>
+        <translation>Control remoto</translation>
     </message>
     <message>
         <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo modificar la propiedad de arranque automático para el Servicio de iTALC.</translation>
     </message>
     <message>
         <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo modificar los argumentos de servicio para el Servicio de iTALC.</translation>
     </message>
     <message>
         <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo cambiar la configuración del cortafuegos para el Servicio de iTALC.</translation>
     </message>
     <message>
         <source>Debugging</source>
-        <translation type="unfinished"></translation>
+        <translation>Depuración</translation>
     </message>
     <message>
         <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished"></translation>
+        <translation>Permitir el cambio de escritorio para el bloqueo de pantalla (experimental)</translation>
     </message>
     <message>
         <source>Log to standard error output</source>
-        <translation type="unfinished"></translation>
+        <translation>Registro a salida de errores estándar</translation>
     </message>
     <message>
         <source>Log to Windows event log</source>
-        <translation type="unfinished"></translation>
+        <translation>Registro a registro de eventos de Windows</translation>
     </message>
     <message>
         <source>Backend</source>
-        <translation type="unfinished"></translation>
+        <translation>Backend</translation>
     </message>
     <message>
         <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC reflector</translation>
     </message>
     <message>
         <source>iTALC 1 demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 1 demo server</translation>
     </message>
     <message>
         <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished"></translation>
+        <translation>Multihilo (puede ser activada cuando se usa el backend VNC reflector)</translation>
     </message>
     <message>
         <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar servidor HTTP que proporciona un applet JavaViewer</translation>
     </message>
     <message>
         <source>HTTP server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Puerto de servidor HTTP</translation>
     </message>
     <message>
         <source>Allow connections from localhost only</source>
-        <translation type="unfinished"></translation>
+        <translation>Solo permitir conexiones desde equipo local</translation>
     </message>
     <message>
         <source>Key file authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación mediante archivo de clave</translation>
     </message>
     <message>
         <source>ACL-based logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación mediante inicio de sesión basado en ACL</translation>
     </message>
     <message>
         <source>Public key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Directorio base para archivo de clave pública</translation>
     </message>
     <message>
         <source>Private key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Directorio base para archivo de clave privada</translation>
     </message>
     <message>
         <source>Launch key file assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>Ejecutar asistente de archivo de claves</translation>
     </message>
     <message>
         <source>Manage permissions</source>
-        <translation type="unfinished"></translation>
+        <translation>Administrar permisos</translation>
     </message>
     <message>
         <source>Test</source>
-        <translation type="unfinished"></translation>
+        <translation>Comprobar</translation>
     </message>
     <message>
         <source>Access confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation>Confirmación de acceso</translation>
     </message>
     <message>
         <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished"></translation>
+        <translation>Puede configurar ITALC para pedir permiso al usuario para acceder al escritorio cuando se utilizan ciertos métodos de autenticación.</translation>
     </message>
     <message>
         <source>Logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación de inicio de sesión</translation>
     </message>
     <message>
         <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation>Permitir a un mismo usuario tener acceso al escritorio sin confirmación</translation>
     </message>
     <message>
         <source>Debugging iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>Depurando iTALC</translation>
     </message>
     <message>
         <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
 
 If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished"></translation>
+        <translation>Al encontrarse con errores u otro mal comportamiento en iTALC es importante informar a los desarrolladores acerca de ellos, de modo que los errores se puedan fijar en futuras versiones. Esta página le permite enviar fácilmente un informe de error útil.
+
+Si el error no es reproducible, omita el paso 1) - 3).</translation>
     </message>
     <message>
         <source>1)</source>
-        <translation type="unfinished"></translation>
+        <translation>1)</translation>
     </message>
     <message>
         <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpie los archivos de registro en la sección "General".</translation>
     </message>
     <message>
         <source>2)</source>
-        <translation type="unfinished"></translation>
+        <translation>2)</translation>
     </message>
     <message>
         <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished"></translation>
+        <translation>En la sección "General" establezca el nivel de registro a "Mensajes de depuración y todo lo demás".</translation>
     </message>
     <message>
         <source>3)</source>
-        <translation type="unfinished"></translation>
+        <translation>3)</translation>
     </message>
     <message>
         <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished"></translation>
+        <translation>Repita las acciones que conducen al fallo o mal comportamiento.</translation>
     </message>
     <message>
         <source>4)</source>
-        <translation type="unfinished"></translation>
+        <translation>4)</translation>
     </message>
     <message>
         <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished"></translation>
+        <translation>Haga clic en el botón siguiente y guarde el archivo en una ubicación conocida.</translation>
     </message>
     <message>
         <source>Generate bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>Genere un archivo de informe de error</translation>
     </message>
     <message>
         <source>5)</source>
-        <translation type="unfinished"></translation>
+        <translation>5)</translation>
     </message>
     <message>
         <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
 <br/>
 <br/>
 Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished"></translation>
+        <translation>Visite el <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">seguimiento de errores de iTALC</a>, inicie un nuevo error, describa lo que hizo en el paso 3) y adjunte el archivo que guardo en el paso 4).</p>
+<br/>
+<br/>
+Nota: si el error implica a la vez a un equipo maestro y a uno cliente, adjuntar archivos de informe de errores para ambos equipos.</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>Reiniciar Servicio de iTALC</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos los ajustes se guardaron correctamente. A fin de tener efecto, el servicio ITALC necesita ser reiniciado. ¿Reiniciarlo ahora?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Iniciando servicio iTALC</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Parando servicio iTALC</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>El servicio ITALC debe ser detenido temporalmente para eliminar los archivos de registro. ¿Continuar?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivos de registro limpiados</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos los archivos de registro se limpiaron correctamente.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation>Error</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudieron eliminar todos los archivos de registro.</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished"></translation>
+        <translation>Comprobación de autenticación de inicio de sesión</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>La autenticación con las credenciales proporcionadas se ha realizado correctamente.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>¡Falló la autenticación con las credenciales proporcionadas!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar archivo de informe de error</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivo de informe de error de iTALC (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivo de informe de error de iTALC guardado</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
+        <translation>Un archivo de informe de error de iTALC se ha guardado en %1. Incluye archivos de registro de iTALC e información acerca de su sistema operativo. Puede adjuntarlo a un informe de error.</translation>
     </message>
     <message>
         <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo conectar con el servicio iTALC</translation>
     </message>
     <message>
         <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se pudo conectar al servicio iTALC local. Es probable que haya introducido credenciales incorrectas o los archivos de clave no estén configurados correctamente. Inténtelo de nuevo o póngase en contacto con el administrador para resolver este problema utilizando la Consola de Administración de iTALC.</translation>
     </message>
     <message>
         <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticación imposible</translation>
     </message>
     <message>
         <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se encontraron archivos de claves de autenticación o están anticuados. Por favor, cree nuevos archivos de claves utilizando la Consola de Administración de iTALC. Otra opción es configurar la autenticación de inicio de sesión utilizando la Consola de Administración de iTALC. De lo contrario no será capaz de acceder a los ordenadores que utilizan iTALC.</translation>
     </message>
     <message>
         <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <translation>Sondeo de pantalla completa (dejar activado por defecto)</translation>
     </message>
 </context>
 <context>
     <name>MessageBoxSlave</name>
     <message>
         <source>Message from teacher</source>
-        <translation type="unfinished">Mensaje del profesor</translation>
+        <translation>Mensaje del profesor</translation>
     </message>
 </context>
 <context>
@@ -1399,115 +1515,115 @@ Note: if the bug involves both a master and client computer, attach bug report a
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Bienvenido a iTALC!</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">¡Bienvenido a iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished">Aquí puede ver la barra de trabajo la cual contiene varios botones. Cada botón esta conectado a un espacio de trabajo. Simplemente mire los espacios de trabajo disponibles cliqueando en el botón correspondiente.</translation>
+        <translation>Aquí puede ver la barra de trabajo la cual contiene varios botones. Cada botón esta conectado a una zona o espacio de trabajo. Simplemente mire los espacios de trabajo disponibles pulsando en el botón correspondiente.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished"></translation>
+        <translation>En la zona de Administrador de clases puede administrar sus clases y equipos. También puede ver que usuarios han iniciado sesión.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished">El espacio de trabajo de Captura es una herramienta muy útil. Le permite administrar las capturas que hace.</translation>
+        <translation>La zona de Capturas es una herramienta muy útil. Le permite administrar las capturas que hace.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished">Por supuesto que puede configurar iTALC. Esto se realiza usualmente con la configuración del espacio de trabajo.</translation>
+        <translation>Por supuesto que puede configurar iTALC. Esto se hace generalmente en la zona de Configuración.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">Acerca de iTALC</translation>
+        <translation>Acerca de iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Ayuda</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished">Alguna información básica sobre iTALC y como usarlo.</translation>
+        <translation>Alguna información básica sobre iTALC y como usarlo.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor introduzca su nombre de usuario y contraseña para acceder a los clientes iTALC.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Nombre de usuario</translation>
+        <translation>Nombre de usuario</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Contraseña</translation>
+        <translation>Contraseña</translation>
     </message>
     <message>
         <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation>Inicio de sesión iTALC</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Administrar</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation type="unfinished">No se puede registrar el servicio '%1'.</translation>
+        <translation>No se puede registrar el servicio '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation type="unfinished">El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha registrado.</translation>
+        <translation>El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha registrado.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation type="unfinished">El servicio '%1' ya está registrado.</translation>
+        <translation>El servicio '%1' ya está registrado.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation type="unfinished">El servicio '%1' no se pudo registrar.</translation>
+        <translation>El servicio '%1' no se pudo registrar.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation type="unfinished">El servicio '%1' no se pudo parar.</translation>
+        <translation>El servicio '%1' no se pudo parar.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation type="unfinished">El servicio '%1' se ha des-registrado.</translation>
+        <translation>El servicio '%1' se ha des-registrado.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation type="unfinished">El servicio '%1' no está registrado por lo que no se puede des-egistrar.</translation>
+        <translation>El servicio '%1' no está registrado por lo que no se puede des-registrar.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation type="unfinished">El servicio '%1' no se pudo des-registrar.</translation>
+        <translation>El servicio '%1' no se pudo des-registrar.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation type="unfinished">El servicio '%1' no se ha encontrado.</translation>
+        <translation>El servicio '%1' no se ha encontrado.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation type="unfinished">El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha des-registrado.</translation>
+        <translation>El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha des-registrado.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation type="unfinished">El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha parado.</translation>
+        <translation>El gestor de control de servicios no puedo ser contactado (¿tiene privilegios suficientes?) - el servicio '%1' no se ha parado.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation type="unfinished">El servicio '%1' se ha registrado correctamente.</translation>
+        <translation>El servicio '%1' se ha registrado correctamente.</translation>
     </message>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
@@ -1518,118 +1634,118 @@ p, li { white-space: pre-wrap; }
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Vista en vivo (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Control remoto (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">usuario desconocido</translation>
+        <translation>usuario desconocido</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished">Solo mirar</translation>
+        <translation>Solo mirar</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Control remoto</translation>
+        <translation>Control remoto</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished">Bloquear</translation>
+        <translation>Bloquear</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished">Desbloquear</translation>
+        <translation>Desbloquear</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Captura</translation>
+        <translation>Captura</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">Pantalla Completa</translation>
+        <translation>Pantalla completa</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished">Ventana</translation>
+        <translation>Ventana</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished">Salir</translation>
+        <translation>Salir</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished">Conectando %1</translation>
+        <translation>Conectando %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished">Conectado.</translation>
+        <translation>Conectado.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">Logueo remoto</translation>
+        <translation>Inicio de sesión remoto</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished"></translation>
+        <translation>Use los campos de abajo para introducir nombre de usuario, contraseña y, de manera opcional, el nombre de dominio. Esta información será usada para iniciar sesión en el/los equipo/s.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Nombre de usuario</translation>
+        <translation>Nombre de usuario</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Contraseña</translation>
+        <translation>Contraseña</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Dominio</translation>
+        <translation>Dominio</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished"></translation>
+        <translation>Ejecutar comandos</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor introduzca los comandos a ejecutar en los clientes seleccionados. Puede poner múltiples comandos, uno por línea.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>desconocido</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se puede tomar una captura porque el directorio %1 no existe y no puede ser creado.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Captura</translation>
+        <translation>Captura</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Capturas</translation>
+        <translation>Capturas</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">Utilizando este lugar de trabajo maneje fácilmente las capturas de pantalla realizadas.</translation>
+        <translation>Simplemente administre las capturas que hizo a través de este espacio de trabajo.</translation>
     </message>
 </context>
 <context>
@@ -1639,122 +1755,122 @@ p, li { white-space: pre-wrap; }
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Se listan aquí todas las capturas de pantalla realizadas. Ud. puede hacer capturas seleccionando la opción correspondiente en el menú contextual de cada ventana cliente. Estas capturas se pueden manejar usando los botones de aquí abajo.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">Usuario:</translation>
+        <translation>Usuario:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">Equipo:</translation>
+        <translation>Equipo:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">Fecha:</translation>
+        <translation>Fecha:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">Hora:</translation>
+        <translation>Hora:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Soporte técnico</translation>
+        <translation>Soporte técnico</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation>Por favor introduzca la dirección IP o el nombre de equipo al cual desea conectar.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Enviar mensaje de texto</translation>
+        <translation>Enviar mensaje de texto</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">Use el campo de más abajo para escribir tu mensaje que será enviado a todos los usuarios seleccionados.</translation>
+        <translation>Use el campo de más abajo para escribir su mensaje que será enviado a todos los usuarios seleccionados.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">Estableciendo conexión con %1 ...</translation>
+        <translation>Estableciendo conexión con %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Ayuda</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo a pantalla completa</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">Demo en ventana</translation>
+        <translation>Demo en ventana</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">Bloquear pantalla</translation>
+        <translation>Bloquear pantalla</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">Ver en vivo</translation>
+        <translation>Ver en vivo</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Control remoto</translation>
+        <translation>Control remoto</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">Permitir al alumno mostrar demo</translation>
+        <translation>Permitir al alumno mostrar demo</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Enviar mensaje de texto</translation>
+        <translation>Enviar mensaje de texto</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Desconectar usuario</translation>
+        <translation>Desconectar usuario</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">Tomar una Captura</translation>
+        <translation>Tomar una captura</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Encender</translation>
+        <translation>Encender</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">Reiniciar</translation>
+        <translation>Reiniciar</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Apagar</translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">Ejecutar comandos</translation>
+        <translation>Ejecutar comandos</translation>
     </message>
 </context>
 </TS>
diff --git a/lib/resources/fi.qm b/lib/resources/fi.qm
deleted file mode 100644
index afa2c57..0000000
Binary files a/lib/resources/fi.qm and /dev/null differ
diff --git a/lib/resources/fi.ts b/lib/resources/fi.ts
index 52f4175..ee79cc0 100644
--- a/lib/resources/fi.ts
+++ b/lib/resources/fi.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fi_FI">
+<TS version="2.1" language="fi_FI">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Lisenssi</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -447,6 +447,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Jo [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -601,11 +701,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -613,15 +713,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/fr.qm b/lib/resources/fr.qm
deleted file mode 100644
index d7b7e72..0000000
Binary files a/lib/resources/fr.qm and /dev/null differ
diff --git a/lib/resources/fr.ts b/lib/resources/fr.ts
index 535aaa7..f466840 100644
--- a/lib/resources/fr.ts
+++ b/lib/resources/fr.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Licence</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -449,6 +449,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">At [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -603,11 +703,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -615,15 +715,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/he.qm b/lib/resources/he.qm
deleted file mode 100644
index b7e28cb..0000000
Binary files a/lib/resources/he.qm and /dev/null differ
diff --git a/lib/resources/he.ts b/lib/resources/he.ts
index 8dfb4b2..1cb0789 100644
--- a/lib/resources/he.ts
+++ b/lib/resources/he.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="he_IL" sourcelanguage="en">
+<TS version="2.1" language="he_IL" sourcelanguage="en">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">רישיון</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -452,6 +452,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">שי [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -606,11 +706,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -618,15 +718,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/hu.qm b/lib/resources/hu.qm
deleted file mode 100644
index daaad4f..0000000
Binary files a/lib/resources/hu.qm and /dev/null differ
diff --git a/lib/resources/hu.ts b/lib/resources/hu.ts
index 09fc86d..6323240 100644
--- a/lib/resources/hu.ts
+++ b/lib/resources/hu.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="hu_HU">
+<TS version="2.1" language="hu_HU">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -38,7 +38,7 @@ Ha szeretné lefordítani másik nyelvre is, kérem jelezze az iTALC fejlesztőc
         <source>License</source>
         <translation>Licence</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -455,6 +455,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Fe [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -614,11 +714,11 @@ A publikus kulcs a kliens (diák) számítógépein azonosítja a bejövő kér
         <source>The following actions will be taken:</source>
         <translation type="unfinished">A következő műveletekre kerül sor:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished">• Új hozzáférési kulcs elkészítése</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished">• Publikus kulcs importálás</translation>
     </message>
@@ -626,15 +726,15 @@ A publikus kulcs a kliens (diák) számítógépein azonosítja a bejövő kér
         <source><unknown></source>
         <translation type="unfinished"><unknown></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• Hozzáférési kulcs(ok) másolása ide:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• Publikus kulcs exportálás ide:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished">• Felhasználói szerepkör beállítása:</translation>
     </message>
diff --git a/lib/resources/icon128.png b/lib/resources/icon128.png
new file mode 100644
index 0000000..933b4d0
Binary files /dev/null and b/lib/resources/icon128.png differ
diff --git a/lib/resources/icon16.png b/lib/resources/icon16.png
index 2e7d2b5..ba52ba2 100644
Binary files a/lib/resources/icon16.png and b/lib/resources/icon16.png differ
diff --git a/lib/resources/icon22.png b/lib/resources/icon22.png
index a8977ab..f9e38c2 100644
Binary files a/lib/resources/icon22.png and b/lib/resources/icon22.png differ
diff --git a/lib/resources/icon32.png b/lib/resources/icon32.png
index 4dafe35..2153fcb 100644
Binary files a/lib/resources/icon32.png and b/lib/resources/icon32.png differ
diff --git a/lib/resources/icon64.png b/lib/resources/icon64.png
index b03c8c5..ea2a410 100644
Binary files a/lib/resources/icon64.png and b/lib/resources/icon64.png differ
diff --git a/lib/resources/it.qm b/lib/resources/it.qm
deleted file mode 100644
index e59c8e1..0000000
Binary files a/lib/resources/it.qm and /dev/null differ
diff --git a/lib/resources/it.ts b/lib/resources/it.ts
index 98e5525..09c1bbf 100644
--- a/lib/resources/it.ts
+++ b/lib/resources/it.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="it_IT">
+<TS version="2.1" language="it_IT">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation>Licenza</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -444,6 +444,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Attenzione: alcune i [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -603,11 +703,11 @@ La chiave pubblica, invece, è utilizzata dai computer studente per verificare c
         <source>The following actions will be taken:</source>
         <translation>Le seguenti azioni saranno eseguite:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>• Crea nuove Chiavi di accesso</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>• Importa la chiave pubblica da</translation>
     </message>
@@ -615,15 +715,15 @@ La chiave pubblica, invece, è utilizzata dai computer studente per verificare c
         <source><unknown></source>
         <translation><sconosciuto></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• Salva la/e chiavi in</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• Esporta la chiave pubblica in</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>• Configura le chiavi per il ruolo utente di </translation>
     </message>
diff --git a/lib/resources/nl.ts b/lib/resources/italc.ts
similarity index 94%
copy from lib/resources/nl.ts
copy to lib/resources/italc.ts
index d0c0fec..50b6978 100644
--- a/lib/resources/nl.ts
+++ b/lib/resources/italc.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1" language="en_GB">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -12,6 +12,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
         <translation type="unfinished"></translation>
     </message>
@@ -33,29 +39,23 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
+        <source>Confirm desktop access</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Always for this session</source>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
+        <source>Never for this session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <source>Always for this session</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -94,7 +94,7 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export to text-file</source>
+        <source>Export to text file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -142,26 +142,23 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
+        <source>No configuration file found</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
+        <source>Error in configuration file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -237,6 +234,10 @@ Do you want to create a new classrom now?</source>
         <source>Desktop locked</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ClientAction</name>
@@ -276,14 +277,6 @@ Do you want to create a new classrom now?</source>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Client settings</source>
         <translation type="unfinished"></translation>
     </message>
@@ -339,6 +332,14 @@ Do you want to create a new classrom now?</source>
         <source>You didn't specify an IP address or hostname for the computer!</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Config</name>
@@ -379,6 +380,106 @@ Do you want to create a new classrom now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Your role (needs according keys!)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -406,15 +507,7 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Settings for multi-logon</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
+        <source>Double click action for client window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -449,13 +542,6 @@ p, li { white-space: pre-wrap; }
     </message>
 </context>
 <context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
@@ -469,7 +555,7 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -527,10 +613,6 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import public key (client computer)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -590,11 +672,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -602,15 +684,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
@@ -707,11 +789,11 @@ The public key part is used on the client computers to verify that any incoming
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
+        <source>MainWindow</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Quit</source>
+        <source>toolBar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -719,6 +801,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>iTALC Server</source>
         <translation type="unfinished"></translation>
     </message>
@@ -731,6 +817,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Debugging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>iTALC Service</source>
         <translation type="unfinished"></translation>
     </message>
@@ -763,6 +853,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Logging</source>
         <translation type="unfinished"></translation>
     </message>
@@ -811,524 +905,520 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Clear all log files</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Desktop capturing</source>
+        <source>Log to standard error output</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable capturing of layered (semi-transparent) windows</source>
+        <source>Log to Windows event log</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Low accuracy (turbo mode)</source>
+        <source>Clear all log files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Demo server</source>
+        <source>Desktop capturing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Network</source>
+        <source>Enable capturing of layered (semi-transparent) windows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Core server port</source>
+        <source>Poll full screen (leave this enabled per default)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Demo server port</source>
+        <source>Low accuracy (turbo mode)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable firewall exception</source>
+        <source>Demo server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Configuration files</source>
+        <source>Backend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Global configuration</source>
+        <source>VNC reflector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Personal configuration</source>
+        <source>iTALC 1 demo server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Data directories</source>
+        <source>Network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Snapshots</source>
+        <source>Core server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authentication methods</source>
+        <source>Demo server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Access key management</source>
+        <source>Enable firewall exception</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Logon settings</source>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&File</source>
+        <source>HTTP server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Help</source>
+        <source>Allow connections from localhost only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Quit</source>
+        <source>Configuration files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
+        <source>Global configuration</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
+        <source>Personal configuration</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save settings into file</source>
+        <source>Data directories</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
+        <source>Snapshots</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
+        <source>Authentication methods</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
+        <source>Key file authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>About iTALC</source>
+        <source>ACL-based logon authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>About Qt</source>
+        <source>Access key management</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>MainWindow</source>
+        <source>Public key file base directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>toolBar</source>
+        <source>Private key file base directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
+        <source>Launch key file assistant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Running</source>
+        <source>Logon settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Load settings from file</source>
+        <source>Manage permissions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
+        <source>Test</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save settings to file</source>
+        <source>Access confirmation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
+        <source>Logon authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
+        <source>Allow same user to access desktop without confirmation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <source>Debugging iTALC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
+        <source>1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC</source>
+        <source>Clear the logfiles in the "General" section.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No write access</source>
+        <source>2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Classroom</source>
+        <source>3)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Switch classroom</source>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click this button to open a menu where you can choose the active classroom.</source>
+        <source>4)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click on this button, to switch between classrooms.</source>
+        <source>Click the following button and save the file to a known location.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Overview mode</source>
+        <source>Generate bug report archive</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Overview</source>
+        <source>5)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Fullscreen demo</source>
+        <source>&File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Fullscreen Demo</source>
+        <source>&Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stop Demo</source>
+        <source>&Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
+        <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Window demo</source>
+        <source>&Save settings into file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Window Demo</source>
+        <source>Save settings into file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
+        <source>Ctrl+S</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Lock/unlock desktops</source>
+        <source>L&oad settings from file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Lock all</source>
+        <source>Ctrl+O</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unlock all</source>
+        <source>About iTALC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
+        <source>About Qt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Send text message</source>
+        <source>iTALC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Text message</source>
+        <source>No write access</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
+        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Power on computers</source>
+        <source>Classroom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Power on</source>
+        <source>Switch classroom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
+        <source>Click this button to open a menu where you can choose the active classroom.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Power down computers</source>
+        <source>Click on this button, to switch between classrooms.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Power down</source>
+        <source>Overview mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
+        <source>Overview</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Support</source>
+        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Direct support</source>
+        <source>Fullscreen demo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
+        <source>Fullscreen Demo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Adjust/align</source>
+        <source>Stop Demo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Adjust windows and their size</source>
+        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
+        <source>Window demo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Auto view</source>
+        <source>Window Demo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Auto re-arrange windows and their size</source>
+        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
+        <source>Lock/unlock desktops</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC Master Control</source>
+        <source>Lock all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remote control</source>
+        <source>Unlock all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <source>Send text message</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <source>Text message</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Debugging</source>
+        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
+        <source>Power on computers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log to standard error output</source>
+        <source>Power on</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log to Windows event log</source>
+        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Backend</source>
+        <source>Power down computers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>VNC reflector</source>
+        <source>Power down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC 1 demo server</source>
+        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
+        <source>Support</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <source>Direct support</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>HTTP server port</source>
+        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Allow connections from localhost only</source>
+        <source>Adjust/align</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Key file authentication</source>
+        <source>Adjust windows and their size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>ACL-based logon authentication</source>
+        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public key file base directory</source>
+        <source>Auto view</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Private key file base directory</source>
+        <source>Auto re-arrange windows and their size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Launch key file assistant</source>
+        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage permissions</source>
+        <source>Could not contact iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Test</source>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Access confirmation</source>
+        <source>iTALC Master Control</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <source>Authentication impossible</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Logon authentication</source>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
+        <source>Remote control</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
+        <source>Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>1)</source>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>2)</source>
+        <source>Configuration not writable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>3)</source>
+        <source>All settings were applied successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <source>An error occured while applying settings!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>4)</source>
+        <source>iTALC Management Console %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
+        <source>Restart iTALC Service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
+        <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>5)</source>
+        <source>Starting iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <source>Stopping iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Restart iTALC Service</source>
+        <source>Running</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
+        <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Starting iTALC service</source>
+        <source>Log files cleared</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stopping iTALC service</source>
+        <source>All log files were cleared successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
+        <source>Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log files cleared</source>
+        <source>Could not remove all log files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All log files were cleared successfully.</source>
+        <source>Load settings from file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Error</source>
+        <source>XML files (*.xml)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not remove all log files.</source>
+        <source>Save settings to file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1360,30 +1450,11 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Poll full screen (leave this enabled per default)</source>
+        <source>Unsaved settings</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
+        <source>There are unsaved settings. Quit anyway?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1431,19 +1502,19 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>PasswordDialog</name>
     <message>
-        <source>Please enter your username and password in order to access iTALC clients.</source>
+        <source>iTALC Logon</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Username</source>
+        <source>Please enter your username and password in order to access iTALC clients.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Password</source>
+        <source>Username</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC Logon</source>
+        <source>Password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
diff --git a/lib/resources/zh_cn.ts b/lib/resources/ko_kr.ts
similarity index 89%
copy from lib/resources/zh_cn.ts
copy to lib/resources/ko_kr.ts
index 63496d1..e4b244d 100644
--- a/lib/resources/zh_cn.ts
+++ b/lib/resources/ko_kr.ts
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<TS version="2.1" language="ko_KR">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">关于 iTALC</translation>
+        <translation type="unfinished">iTALC 소개</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">关于</translation>
+        <translation type="unfinished">소개</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
@@ -17,11 +17,11 @@
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">作者</translation>
+        <translation type="unfinished">제작자</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">翻译</translation>
+        <translation type="unfinished">번역</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
@@ -31,9 +31,9 @@ If you're interested in translating iTALC into your local or another langua
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">许可</translation>
+        <translation type="unfinished">라이센스</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -44,30 +44,30 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     <name>AccessDialogSlave</name>
     <message>
         <source>Never for this session</source>
-        <translation type="unfinished">从不使用这个会话</translation>
+        <translation type="unfinished">이번 세션에서는 사용하지 않기</translation>
     </message>
     <message>
         <source>Always for this session</source>
-        <translation type="unfinished">一直使用这个会话</translation>
+        <translation type="unfinished">항상 이 세션을 사용하기</translation>
     </message>
     <message>
         <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">컴퓨터 접속 허가</translation>
     </message>
     <message>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">%2 호스트의 사용자 %1 가 여러분의 컴퓨터에 접속하고자 합니다. 허락하시겠습니까?</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">班级管理</translation>
+        <translation type="unfinished">교과 관리자</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">使用这个工作空间简便地管理计算机和班级。</translation>
+        <translation type="unfinished">이곳에서 컴퓨터와 교과를 관리하세요.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
@@ -75,7 +75,7 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">班级/计算机</translation>
+        <translation type="unfinished">수업/컴퓨터</translation>
     </message>
     <message>
         <source>IP-address</source>
@@ -115,35 +115,35 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">删除</translation>
+        <translation type="unfinished">삭제</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">显示班级中的全部计算机</translation>
+        <translation type="unfinished">교실 안에 있는 모든 컴퓨터 보이기</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">隐藏班级中的全部计算机</translation>
+        <translation type="unfinished">교실 안에 있는 모든 컴퓨터 감추기</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">编辑名称</translation>
+        <translation type="unfinished">이름 수정하기</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">删除班级</translation>
+        <translation type="unfinished">교실 제거</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">添加计算机</translation>
+        <translation type="unfinished">컴퓨터 추가</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">添加班级</translation>
+        <translation type="unfinished">교실 추가</translation>
     </message>
     <message>
         <source>No configuration-file found</source>
-        <translation type="unfinished">配置文件没找到</translation>
+        <translation type="unfinished">설정 파일을 찾을 수 없습니다</translation>
     </message>
     <message>
         <source>Could not open configuration file %1.
@@ -228,7 +228,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">无用户登录</translation>
+        <translation type="unfinished">无유저登录</translation>
     </message>
     <message>
         <source>Host unreachable</source>
@@ -247,7 +247,7 @@ Do you want to create a new classrom now?</source>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">你确定要所有用户登出全部可见的计算机吗?</translation>
+        <translation type="unfinished">你确定要所有유저登出全部可见的计算机吗?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
@@ -255,7 +255,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">用户登出</translation>
+        <translation type="unfinished">유저登出</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
@@ -302,7 +302,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">名称</translation>
+        <translation type="unfinished">이름</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
@@ -310,7 +310,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">맥 어드레스</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
@@ -318,38 +318,38 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">班级</translation>
+        <translation type="unfinished">교실</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">类型</translation>
+        <translation type="unfinished">종류</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">学生计算机</translation>
+        <translation type="unfinished">학생 컴퓨터</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">教师计算机</translation>
+        <translation type="unfinished">교사 컴퓨터</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">其他/未定义计算机</translation>
+        <translation type="unfinished">기타/알수없는 컴퓨터</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">IP주소/호스트네임이 없습니다</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">IP주소 또는 호스트네임을 입력해주세요!</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">更新间隔时间</translation>
+        <translation type="unfinished">화면갱신주기</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
@@ -357,11 +357,11 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished"> 秒</translation>
+        <translation type="unfinished"> 초</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">用户界面</translation>
+        <translation type="unfinished">유저 인터페이스</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
@@ -373,7 +373,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">禁用 冒泡提示</translation>
+        <translation type="unfinished">풍선툴팁 끄기</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
@@ -381,7 +381,7 @@ Do you want to create a new classrom now?</source>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">툴바에 글자 숨기기</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
@@ -399,27 +399,27 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">教师</translation>
+        <translation type="unfinished">교사</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">管理员</translation>
+        <translation type="unfinished">관리자</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">协助者</translation>
+        <translation type="unfinished">조교</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">其他</translation>
+        <translation type="unfinished">기타</translation>
     </message>
     <message>
         <source>Settings for multi-logon</source>
-        <translation type="unfinished">多用户登录设置</translation>
+        <translation type="unfinished">多유저登录设置</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">域</translation>
+        <translation type="unfinished">도메인</translation>
     </message>
     <message>
         <source>Double-click action for client-window</source>
@@ -437,7 +437,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
+        <translation type="unfinished">원격제어</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
@@ -447,6 +447,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">请注 [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -463,21 +563,21 @@ p, li { white-space: pre-wrap; }
     <name>DecoratedMessageBox</name>
     <message>
         <source>OK</source>
-        <translation type="unfinished">确定</translation>
+        <translation type="unfinished">확인</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">iTALC 演示</translation>
+        <translation type="unfinished">iTALC 데모</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">验证错误</translation>
+        <translation type="unfinished">인즌 에러</translation>
     </message>
     <message>
         <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
@@ -567,7 +667,7 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">其他</translation>
+        <translation type="unfinished">기타</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
@@ -601,11 +701,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -613,15 +713,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1039,7 +1139,7 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机中显示,而且在该模式下客户端的所有输入设备都将被锁定,客户端用户不能做任何事。</translation>
+        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机中显示,而且在该模式下客户端的所有输入设备都将被锁定,客户端유저不能做任何事。</translation>
     </message>
     <message>
         <source>Window demo</source>
@@ -1051,7 +1151,7 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机的一个窗口中显示。客户端用户可以切换到其他窗口,因此可以继续工作。</translation>
+        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机的一个窗口中显示。客户端유저可以切换到기타窗口,因此可以继续工作。</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
@@ -1067,19 +1167,19 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">为了聚拢用户的注意力,你可以用这个按钮锁定他们的桌面。在该模式下客户端所有的输入设备将被锁定同时屏幕黑屏。</translation>
+        <translation type="unfinished">为了聚拢유저的注意力,你可以用这个按钮锁定他们的桌面。在该模式下客户端所有的输入设备将被锁定同时屏幕黑屏。</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation type="unfinished">发送메세지</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished">文字消息</translation>
+        <translation type="unfinished">메세지</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">使用这个按钮发送文字消息给全部用户。例如,告诉他们新的任务等等。</translation>
+        <translation type="unfinished">使用这个按钮发送메세지给全部유저。例如,告诉他们新的任务等等。</translation>
     </message>
     <message>
         <source>Power on computers</source>
@@ -1450,7 +1550,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">用户名</translation>
+        <translation type="unfinished">유저名</translation>
     </message>
     <message>
         <source>Password</source>
@@ -1532,7 +1632,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">未知用户</translation>
+        <translation type="unfinished">未知유저</translation>
     </message>
 </context>
 <context>
@@ -1590,7 +1690,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">用户名</translation>
+        <translation type="unfinished">유저名</translation>
     </message>
     <message>
         <source>Password</source>
@@ -1616,7 +1716,7 @@ p, li { white-space: pre-wrap; }
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">알 수 없음</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
@@ -1624,18 +1724,18 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">快照</translation>
+        <translation type="unfinished">스크린샷</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">快照</translation>
+        <translation type="unfinished">스크린샷</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">使用这个工作空间方便地管理你的快照。</translation>
+        <translation type="unfinished">이곳에서 컴퓨터 스크린샷을 간편하게 관리할 수 있습니다.</translation>
     </message>
 </context>
 <context>
@@ -1652,115 +1752,115 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">用户:</translation>
+        <translation type="unfinished">사용자:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">主机:</translation>
+        <translation type="unfinished">컴퓨터:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">日期:</translation>
+        <translation type="unfinished">날짜:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">时间:</translation>
+        <translation type="unfinished">시간:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">보기</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">삭제</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">协助</translation>
+        <translation type="unfinished">서포터</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">접속하고자 하는 컴퓨터의 IP주소 또는 호스트네임을 입력해주세요.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation type="unfinished">메세지 보내기</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">在下面的文本框中输入你要发送给所选用户的消息。</translation>
+        <translation type="unfinished">在下面的文本框中输入你要发送给所选유저的消息。</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">正在建立连接到 %1 ...</translation>
+        <translation type="unfinished">%1 로 연결 중입니다 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">概览</translation>
+        <translation type="unfinished">전체보기</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">全屏演示</translation>
+        <translation type="unfinished">전체화면 데모</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">窗口演示</translation>
+        <translation type="unfinished">윈도우 데모</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">锁定显示</translation>
+        <translation type="unfinished">화면잠그기</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">现场直播</translation>
+        <translation type="unfinished">직접 화면 보기</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
+        <translation type="unfinished">원격제어하기</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">展示学生演示</translation>
+        <translation type="unfinished">학생 화면 표시</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation type="unfinished">메세지 보내기</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">用户登出</translation>
+        <translation type="unfinished">유저 로그아웃하기</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">拍张快照</translation>
+        <translation type="unfinished">화면 저장하기</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">开机</translation>
+        <translation type="unfinished">전원켜기</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">重启</translation>
+        <translation type="unfinished">재시작</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">关机</translation>
+        <translation type="unfinished">전원끄기</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">执行命令</translation>
+        <translation type="unfinished">명령어 실행</translation>
     </message>
 </context>
 </TS>
diff --git a/lib/resources/pt_br.ts b/lib/resources/lt.ts
similarity index 57%
copy from lib/resources/pt_br.ts
copy to lib/resources/lt.ts
index a9477fb..91e3d14 100644
--- a/lib/resources/pt_br.ts
+++ b/lib/resources/lt.ts
@@ -1,525 +1,604 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="lt" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>Apie iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation>Sobre</translation>
+        <translation>Apie programą</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>ITALC-Sumanus Mokymas Ir Mokymasis su Kompiuteriu.
+
+Sukurta © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
+        <translation><a href="http://italc.sourceforge.net">italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation>Autores</translation>
+        <translation>Аutoriai</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation>Tradução</translation>
+        <translation>Vertimas</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation>Idioma atual não traduzido ainda (ou está em Inglês nativo).
+        <translation>Vertimo dabartiniai kalbai nėra arba jį gimtoji anglų.
 
-Se você estiver interessado em traduzir o iTALC em seu idioma local ou outro idioma ou quer melhorar uma tradução existente, entre em contato com um desenvolvedor iTALC!</translation>
+Jeigu norėtumėte padėti su programos iTALC vertimų į naują kalbą arba pataisyti jau esama vertimą susiekite su  iTALC! kurėjų komanda</translation>
     </message>
     <message>
         <source>License</source>
-        <translation>Licença</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished">iTALC -Ensino e Aprendizagem Inteligente com Computadores
-
-Copyright © 2004-2011 Tobias Doerffel / iTALC Solutions {2004-2013 ?}</translation>
+        <translation>Licencija</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation>Nunca para esta sessão</translation>
+        <source>Confirm desktop access</source>
+        <translation>Patvirtinti darbalaukio valdymą</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation>Sempre para esta sessão</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation> Vartotojas %1 iš kompiuterio  %2 bando prisijungti prie jūsų kompiuterio. Ar norite tai leisti?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation>Confirmar acesso ao desktop</translation>
+        <source>Never for this session</source>
+        <translation>Niekada šiame seanse</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation>O usuário %1 do computador %2 deseja acessar o seu desktop. Você quer conceder o acesso?</translation>
+        <source>Always for this session</source>
+        <translation>Visada šiame seanse</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation>Gerente de Sala de Aula</translation>
+        <translation>Klasių tvarkyklė</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation>Use este espaço para gerenciar seus computadores e salas de aula de uma forma fácil.</translation>
+        <translation>Naudokitės šia tvarkykle kad lengviau administruotumėte kompiuterius ir klases.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation>Este é o lugar onde os computadores e salas de aula são gerenciados. Você pode adicionar computadores e salas de aula clicando à direita nesta lista.</translation>
+        <translation>Čia jūs tvarkysite savo kompiuterius ir klases.Kadpridėtumėte naujus kompiuterius ar klases sąraše paspauskite dešinį pelės klavišą</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation>Salas de aual/computadores</translation>
+        <translation>Klasės/Kompiuteriai</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation>Endereço IP</translation>
+        <translation>IP-adresai</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation>Nomes de usuários</translation>
+        <translation>Vartotojai</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation>Mostrar nomes de usuários</translation>
+        <translation>Rodyti vartotojus</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation>Use o menu de contexto (botão direito do mouse) para adicionar/remover computadores e/ou salas de aula.</translation>
+        <translation>Naudokitės papildomumeniu (Paspausdami dešinį pelės klavišą) kad pridėti arba šalinti kompiuterius ar klases.</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation>Exportar para um arquivo texto</translation>
+        <source>Export to text file</source>
+        <translation>Eksportuoti į tekstinį failą</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation>Use este botão para exportar esta lista de computadores e nomes de usuários para um arquivo texto. Você pode usar este arquivo mais tarde para recolher os arquivos dos usuários depois que um exame terminou. As vezes isso é necessário, porque alguns usuários podem ter terminado o exame mais cedo e ter feito logoff do computador e por isso impedindo você de recolher seus arquivos no final do exame.</translation>
+        <translation>Naudokitės šiuo mygtuku kad eksportuotumėte šį kompiuterių ir vartotojų sąrašą į tekstinį failą.Vėliau galėsite pasinaudoti šiuo failu rinkdami informacją po testų pabaigos.Tai kai kada būtina ,nes vartotojas gali pabaigti ir atsijungti ankščiau ir taip jūs negalėsite išsaugoti jų failų po egzaminų pabaigos.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation>Ocultar computadores do professor</translation>
+        <translation>Paslėpti mokytojo kompiuterį</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation>Mostrar/ocultar</translation>
+        <translation>Rodyti/Slėpti</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation>Editar configurações</translation>
+        <translation>Redaguoti nustatymus</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation>Remover</translation>
+        <translation>Pašalinti</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation>Mostrar todos os computadores da sala de aula</translation>
+        <translation>Rodyti visus klasės kompiuterius</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation>Ocultar todos os computadores da sala de aula</translation>
+        <translation>Slėpti visus kompiuterius klasėe</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation>Editar nome</translation>
+        <translation>Redaguoti vardą</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation>Remover sala de aula</translation>
+        <translation>Pašalinti klasę</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation>Adicionar computador</translation>
+        <translation>Pridėti kompiuterį</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation>Adicionar sala de aula</translation>
+        <translation>Pridėti klasę</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation>Arquivo de configuração não encontrado</translation>
+        <source>No configuration file found</source>
+        <translation>Konfiguracinis failas nerastas.</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation>Não foi possível abrir arquivo de configuração %1.
-É necessário adicionar no mínimo uma sala de aula e computadores usando o gerenciador de salas de aula que você encontra no lado esquerdo do programa.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>Nepavyko atverti konfiguracijos failo %1. Turėsite pridėti bent vieną klasę ir kompiuterius naudodamiesi klasės valdymo įrankiu kurį rasite programos viduje kairės puses įrankių juostoje.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation>Erro no arquivo de configuração</translation>
+        <source>Error in configuration file</source>
+        <translation>Konfiguraciniame faile įvyko klaida.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo e terá que adicionar todas as salas de aula e computadores novamente.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>Įvyko klaida nuskaitant konfiguracijos failą %1. Prašome ištaisyti jį rankiniu būdu. Kitaip privalėsite pašalinti failą ir iš naujo pridėti klases ir kompiuterius</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>Įvyko klaida nuskaitant konfiguracijos failą %1. Prašome pataisyti jį rankiniu būdu. Kitaip tiesiog pašalinkite failą.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation>Selecionar arquivo de saida</translation>
+        <translation>Pasirinkite išeities failą</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation>Arquivos de texto (*.txt)</translation>
+        <translation>Tekstinis failas (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation>Ações para selecionados</translation>
+        <translation>Veiksmai pasirinktiems failams</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Veiksmai</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation>Ações para %1</translation>
+        <translation>Veiksmai failui %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation>Novo nome para a sala de aula</translation>
+        <translation>Naujas klasės pavadinimas</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation>Por favor, digite um novo nome para a sala de aula "%1".</translation>
+        <translation>Prašome įvesti naują klasės pavadinimą klasei: "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation>Tem certeza que quer remover a sala de aula "%1"?
-Todos os computadores desta sala serão removidos também!</translation>
+        <translation>Ar tikrai norite pašalinti klasę? su ja bus pašalinti ir pridėti kompiuteriai!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation>Sala de aula não encontrada</translation>
+        <translation>Trūkstamos klasės</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation>Antes de adicionar computadores, você tem que criar pelo menos uma sala de aula.
-Quer criar uma nova sala agora?</translation>
+        <translation>Prieš pridėdami kompiuterius turite sukurti bent vieną klasę. Ar norite tai padaryti dabar?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation>Nova sala de aula</translation>
+        <translation>Nauja klasė</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation>Por favor, digite o nome da sala de aula que você deseja criar.</translation>
+        <translation>Prašome įvesti norimos sukurti klasės pavadinimą.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation>Estado desconhecido</translation>
+        <translation>Būsena nežinoma</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation>Nenhum usuário logado</translation>
+        <translation>Aktyvių vartotojų nėra</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation>Computador inacessível</translation>
+        <translation>Kompiuteris nepasiekiamas</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation>Demonstração em execução</translation>
+        <translation>Paleista demonstracija</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation>Desktop bloqueado</translation>
+        <translation>Darbalaukis užrakintas</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Žinutė nuo mokytojo</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores visíveis?</translation>
+        <translation>Ar tikrai norite atjungti visus vartotojus visose matomose kompiuteriuose ??</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores selecionados?</translation>
+        <translation>Ar jūs tikrai norite atjungti visus vartotojus pasirinktuose kompiuteriuose?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Atjungti vartotoją</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores visíveis?</translation>
+        <translation>Ar tikrai norite perkrauti visus matomus kompiuterius?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores selecionados?</translation>
+        <translation>Ar tikrai norite perkrauti visus pasirinktus kompiuterius?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation>Reiniciar computadores</translation>
+        <translation>Perkrauti kompiuterius</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores visíveis?</translation>
+        <translation>Ar tikrai norite išjungti visus matomus kompiuterius?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores selecionados?</translation>
+        <translation>Ar tikrai norite išjungti visus pasirinktus kompiuterius?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation>Endereço MAC inválido</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation>Você especificou um endereço MAC inválido. Deixe este campo em branco ou digite um endereço MAC válido (use ":" como separador!).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation>Configurações do cliente</translation>
+        <translation>Kliento nustatymai</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation>IP/nome do computador</translation>
+        <translation>IP/Kompiuterio vardas</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Digite um endereço IP ou nome do computador para que o iTALC possa acessar o cliente  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Įveskite ip adresą arba kompiuterio vardą, kurio pagalba  iTALC galės nustatyti klien [...]
     </message>
     <message>
         <source>Name</source>
-        <translation>Nome</translation>
+        <translation>Vardas</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Apelido opcional do computador que é exibido no iTALC.</p></body></htm [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Numatytasis kompiuterio vardas kuris bus rodomas programoje iTALC.</p></body [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation>Endereço MAC</translation>
+        <translation>Mac adresas</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Endereço de Hardware (MAC) do cliente - somente usado para ligar o computador remotam [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliento Sisteminis/MAC-adresas  - Naudojamas įjungti klientą</p></body>&l [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Klasė</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation>Tipo</translation>
+        <translation>Tipas</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation>Computador do aluno</translation>
+        <translation>Mokinio kompiuteris</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation>Computador do professor</translation>
+        <translation>Mokytojo kompiuteris</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation>Outro computador (indefinido)</translation>
+        <translation>Kitas/Nepriskirtas kompiuteris</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation>Faltando endereço IP/nome do computador</translation>
+        <translation>Tūkstamas ip adresas/Vardas</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation>Você não especificou um endereço IP ou nome para o computador!</translation>
+        <translation>Jūs nenurodėte ip adreso arba vardo kompiuteriui</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Neleistinas mac adresas</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Jūs nurodėte neleistina MAC adresą. Palikite laukelį tuščia arba įveskite tinkama MAC adresą. (naudokite ":" kaip skirtuką)</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation>Intervalo entre as atualizações</translation>
+        <translation>Intervalas tarp atnaujinimų</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode determinar o intervalo entre as atualizações dos computadores. Valore [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Čia jūs galite nustatyti atsinaujinimo intervalą tarp kompiuterių. Didesnis perdavimo [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation> segundos</translation>
+        <translation>Sekundės</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation>Interface do usuário</translation>
+        <translation>Vartotojo sąsaja</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar dicas de balão para os botões da barra de ferramentas</p></body& [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nerodyti pagalbos patarimų irankių juostos mygtukams</p></body></html& [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Marque esta opção se você deseja desabilitar as dicas de balão que aparecem ao mover  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pažymėkite šia funkciją jeigu jums atsibodo iššokantys patarimai pasirodantys vaikšta [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation>Sem dicas de balão</translation>
+        <translation>Ne iššokantiems patarimams</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar textos nos botões da barra de ferramentas</p></body></html [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nerodyti teksto ant meniu mygtukų</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation>Sem textos nos botões da barra de ferramentas</translation>
+        <translation>Nerodyti teksto ant meniu mygtukų</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Kalba</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Gamykliniai nustatymai</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>Arabų</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>Čekų</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>Vokiečių</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>Graikų</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>Ispanų</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>Suomių</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>Prancuzų</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>Hebrajų</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>Vengrų</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>Italų</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>Olandų</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>Norvegų</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>Lenkų</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>Brazilų</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>Portugalų</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>Rusų</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>Slovakų</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>Slovėnų</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>Švedų</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>Turkų</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>Ukrainiečių</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>Kinų</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>Taivaniečių</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation>Sua função (necessário as chaves estarem de acordo!)</translation>
+        <translation>Jūsų teisės(Reikalauja patvirtinančio rakto)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode selecionar sua função. Somente modifique isto, se você conhece o que está fazendo. Caso contrário, você não será capaz de acessar todos os computadores clientes até que você restaure sua antiga função.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Čia galite pasirinkti savo teises kitam kompiuteriui. Keskite jei gikrai žinote ką darote kitaip negalėsite pasiekti kitų kompiuterių </p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation>Professor</translation>
+        <translation>Mokytojas</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation>Administrador</translation>
+        <translation>Administratorius</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation>Ajudante</translation>
+        <translation>Pagalbininkas</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
+        <translation>Kitas</translation>
     </message>
     <message>
-        <source>Settings for multi-logon</source>
-        <translation>Configurações para logon múltiplo</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation>Domínio</translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
-        <translation>Duplo clique na janela cliente</translation>
+        <source>Double click action for client window</source>
+        <translation>Du kart nuspauskite veiksmą and kliento lango.</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode definir o que deve acontecer se você clicar duas vezes em uma janela do cliente.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Čia jūs galite nusistatyti kas įvyks nuspaudus du kartus ant vartotojo kliento lango</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Nuotolinis valdymas</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation>Ver ao vivo em tela cheia</translation>
+        <translation>Rodyti pilno ekrano demonstraciją</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Por favor, note que  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Įsidemėkite kad kaik [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation>Sua configuração do iTALC</translation>
+        <translation>Jūsų iTALC konfiguracija</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation>Neste espaço, você pode personalizar o iTALC para atender as suas necessidades.</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation>OK</translation>
+        <translation>Šioje tvarkyklėje galite iTALC pritaikyti savo poreikiams.</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation>Demonstrar iTALC</translation>
+        <translation>iTALC demonstracija</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation>Erro na autenticação</translation>
+        <translation>Autorizacijos klaida</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation>Alguém (IP: %1) tentou acessar este computador mas não se autenticou com sucesso!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>Kažkas  (IP: %1) bandė patekti į šį kompiuterį ,bet negalėjo sėkmingai prisiregistruoti.</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation>A autenticação do VNC falhou devido a muitas tentativas de autenticação.</translation>
+        <translation>VNC autorizacija nepavyko ,nes bandėte per daug kartų.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation>A autenticação do VNC falhou.</translation>
+        <translation>VNC autorizacija nepavyko.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation>O servidor VNC fechou a conexão.</translation>
+        <translation>VNC serveris atsijungė.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation>Assistente Da Chave De Acesso Do iTALC</translation>
+        <translation>iTALC pasiekiamojo rakto veldys </translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation>Criar/importar chaves de acesso do iTALC</translation>
+        <translation>Sukurti/Importuoti pasiekiamumo raktą</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation>Este assistente irá ajudá-lo a criar ou importar as chaves de acesso do iTALC.</translation>
+        <translation>Šis vedlys padės jums susikurti arba importuoti iTALC pasiekiamumo raktus</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation>Como isso funciona?</translation>
+        <translation>Kaip tai veikia?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -527,67 +606,61 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation>As chaves de acesso do iTALC consistem em duas partes pertencentes em conjunto, uma chave pública e uma privada.
-
-Usando a chave privada, os usuários no computador mestre serão capazes de acessar os computadores clientes. É importante que somente usuários autorizados tenham acesso de leitura para o arquivo da chave privada.
-
-A chave pública é usada nos computadores clientes para verificar que qualquer entrada de solicitação de conexão está autorizada.</translation>
+        <translation>iTALC pasiekiamumo raktas turi dvi dalis privačia ir vieša.Naudojant privatų pasiekiamumo raktą vartotojas valdantis mokytojo kompiuterį galės pasiekti ir valdyti mokinių kompiuterius.Labai svarbu kad tik autorizuoti vartotojai turėtų prieėjimą prie privataus rakto
+	Viešas pasiekiamumo raktas naudojamas vartotojo mokinio kompiuteryje kad patvirtinti įeinančių susijungimų paraiška yra autorizuota.	
+		</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation>Modo assistente</translation>
+        <translation>Pagalbininko režimas</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation>Por favor, escolha se deseja criar novas chaves de acesso ou importar uma chave pública de um cliente.</translation>
+        <translation>Prašome pasirinkti ar norite sukurti naują pasiekiamumo raktą ar įmportuoti viešą raktą</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation>Criar novas chaves de acesso (computador mestre)</translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation>assistantModeButtonGroup</translation>
+        <translation>Sukurti naują pasiekiamumo raktą (Pagrindinis kompiuteris)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation>Importar chave pública (computador cliente)</translation>
+        <translation>Importuoti viešą raktą (Vartotojo kompiuteris)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation>Selecionar a função do usuário</translation>
+        <translation>Pasirinkite vartotojo vaidmenį</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation>Por favor, selecione uma função para o usuário para criar ou importar as chaves de acesso:</translation>
+        <translation>Prašome pasirinkti vartotojo vaidmenį kuriam sukursite ar importuosite pasiekiamumo raktą:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation>Professor</translation>
+        <translation>Mokytojas</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation>Administrador</translation>
+        <translation>Administratorius</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation>Membro da equipe de apoio</translation>
+        <translation>Pagalbininkas</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
+        <translation>Kita</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation>Funções de usuário permitem usar múltiplas chaves de acesso em paralelo. Por exemplo, pode haver diferentes chaves de acesso do professor para cada sala de aula, enquanto que as chaves de acesso são as mesmas para toda a escola.</translation>
+        <translation>Vartotojo vaidmuo leidžia sukurti daugybinius raktus.Pvz.: Gali būti skirtingi mokytojų raktai kiekvienai klasei atskirai kai tuo tarpu pagalbininkų raktai yra vienodi visoje mokykloje</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation>Diretórios</translation>
+        <translation>Katalogai</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation>Exportar parte de chave pública (computador mestre)</translation>
+        <translation>Eksportuoti viešo rakto dalį (administratoriaus kompiuteris)</translation>
     </message>
     <message>
         <source>...</source>
@@ -595,117 +668,117 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation>Usar um diretório de destino personalizado para as chaves de acesso</translation>
+        <translation>Naudokitės savo pasirinktu katalogu raktų išsaugojimui</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation>Por favor, especifique a localização da chave de acesso pública para ser importada.</translation>
+        <translation>Prašome nuroduyti importuojamo rakto katalogą</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation>Resumo</translation>
+        <translation>Suvestinė</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation>As seguintes ações serão tomadas:</translation>
+        <translation>Sekantis veiksmai bus atlikti:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation>• Criar novas chaves de acesso</translation>
+        <translation>• Sukurti nauji pasiekiamumo raktai</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation>• Importar chave de acesso pública de</translation>
+        <translation>• Importuoti vieši pasiekiamumo raktai</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation><desconhecida></translation>
+        <translation>Nežinoma</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation>• Salvar chave(s) de acesso em</translation>
+        <translation>• Raktai įrašyti į</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation>• Exportar chave pública para</translation>
+        <translation>• Eksportuoti raktus į</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation>• Configurar para a função de usuário</translation>
+        <translation>• Nustatyti vartotojo vaidmenį</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation>Selecionar o diretório para o qual a chave pública será exportada</translation>
+        <translation>Pasirinkite katalogą į kurį eksportuosite viešą raktą</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation>Chaves de acesso (*.key.txt)</translation>
+        <translation>Raktų failai (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation>Chave pública inválida</translation>
+        <translation>Neteisingas viešas raktas</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation>O arquivo selecionado não contém uma válida chave de acesso pública do iTALC!</translation>
+        <translation>Pasirinktas failas neturi reikiamos viešo rakto informacijos darbui su iTALC</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation>Selecionar diretório de destino</translation>
+        <translation>Pasirinkite katalogą</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation>Criação da chave de acesso</translation>
+        <translation>Pasiekiamumo rakto sukurimas</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation>Não foi possível remover arquivo %1 previamente existente.</translation>
+        <translation>Negaliu pašalinti senojo failo pavadinimu: %1.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation>Falha ao exportar chave pública de acesso de %1 para %2.</translation>
+        <translation>Nepavyko eksportuoti raktų iš %1 į %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation>Chaves de acesso foram criadas e escritas com sucesso para %1 e %2.</translation>
+        <translation>Pasiekiamumo raktai sukurti sėkmingai ir išsaugoti į %1 ir %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation>Um erro ocorreu ao criar as chaves de acesso. Você provavalmente não tem permissão para escrever no diretório selecionado.</translation>
+        <translation>Kuriant failą įvyko klaida. Jūs tikriausiai neturite administratoriaus teisių įrašymui į šį katalogą.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation>Chave pública importada</translation>
+        <translation>Viešo rakto importavimas</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation>Um erro ocorreu ao importa a chave pública de acesso. Você provavelmente não tem permissão para ler a chave de origem ou escrever no arquivo de destino.</translation>
+        <translation>Importuojant raktą įvyko klaida. Jūs tikriausiai negalite pasiekti šaltinio arba įrašynėti į failą</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation>A chave pública foi importada com sucesso de %1.</translation>
+        <translation>Viešas raktas sėkmingai importuotas į %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation>bloquear tela</translation>
+        <translation>Ekrano užrakinimas</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation>Editor de grupo de acesso</translation>
+        <translation>Prisijungimų grupės redagavimas</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation>Por favor, adicione os grupos cujos membros devem ser autorizados a acessar os computadores em sua rede iTALC.</translation>
+        <translation>Prašome pridėti grupes kurių nariai gali turėti prieigą prie iTALC kompiuterių tinklo.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation>Todos os grupos</translation>
+        <translation>Visos grupės</translation>
     </message>
     <message>
         <source>...</source>
@@ -713,81 +786,93 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation>Grupos com privilégios do iTALC</translation>
+        <translation>Grupės su iTALC privilegijomis</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Veiksmai</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation>Geral</translation>
+        <source>MainWindow</source>
+        <translation>Pagrindinis langas</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation>Sair</translation>
+        <source>toolBar</source>
+        <translation>Įrankių juosta</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation>Console de gerenciamento do iTALC</translation>
+        <translation>iTALC nustatymų konsolė</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>Pagrindinis</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation>Servidor iTALC</translation>
+        <translation>iTALC serveris</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation>Caminhos</translation>
+        <translation>Maršrutai</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation>Autenticação</translation>
+        <translation>Autorizavimas</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>Derinimas</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation>Serviço iTALC</translation>
+        <translation>iTALC tarnyba</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation>Ocultar ícone da área de notificação</translation>
+        <translation>Paslėpti piktogramas</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation>Iniciar automaticamente</translation>
+        <translation>Automatinė paleistis</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation>Argumentos adicionais</translation>
+        <translation>Papildomi parametrai</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation>Iniciar serviço</translation>
+        <translation>Paleisti tarnybą</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation>Parar serviço</translation>
+        <translation>Sustabdyti tarnybą</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation>Estado:</translation>
+        <translation>Būsena:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation>Parado</translation>
+        <translation>Sustabdytas</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Įjungti darbalukio perjungimą darbalaukio blokavimui (eksperimentinė funkcija</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation>Registrando</translation>
+        <translation>Įvykių žurnalas</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation>Diretório de arquivo de log</translation>
+        <translation>Įvykių žurnalo direktorija</translation>
     </message>
     <message>
         <source>...</source>
@@ -795,203 +880,291 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Log level</source>
-        <translation>Nível de log</translation>
+        <translation>Įvykių žurnalo lygmuo</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation>Nada</translation>
+        <translation>Nevygdyti įvykių žurnalo</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation>Somente mensagens críticas</translation>
+        <translation>Tik kritines klaidas</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation>Mensagens críticas e de erros</translation>
+        <translation>Visas klaidas</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation>Avisos e erros</translation>
+        <translation>Įspėjimai ir klaidos</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation>Informações, avisos e erros</translation>
+        <translation>Informaciniai įspėjimai ir klaidos</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation>Mensagens de depuração e tudo o mais</translation>
+        <translation>Patarimų žinutės ir visa kita</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation>Limite do tamanho do arquivo de log</translation>
+        <translation>Limituoti žurnalo failo dydį</translation>
     </message>
     <message>
         <source>MB</source>
         <translation>MB</translation>
     </message>
     <message>
+        <source>Log to standard error output</source>
+        <translation>Persijungti į įvykių žurnalą</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Persijungti į sisteminį įvykių žurnalą</translation>
+    </message>
+    <message>
         <source>Clear all log files</source>
-        <translation>Remover todos os arquivos de log</translation>
+        <translation>Išvalyti visus įvykių žurnalo failus</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation>Capturando desktop</translation>
+        <translation>Darbalaukio įrašinėjimas</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation>Habilitar captura de janelas em camadas (semi-transparente)</translation>
+        <translation>Leisti įrašinėti su permatomu langu</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Apklausa naudojant pilną ekraną (Palikite tai įjungta numatytuose nustatymuose)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation>Baixa precisão (modo turbo)</translation>
+        <translation>Žemos kokybės (Didelio įrašymo greičio)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation>Demonstrar servidor</translation>
+        <translation>Prezantacijų serveris</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>Vidinis</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC reflektorius</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>iTALC 1 - demonstracinis serveris</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation>Rede</translation>
+        <translation>Tinklas</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation>Porta do servidor</translation>
+        <translation>Pagrindinis serverio šliuzas</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation>Demonstrar porta do servidor</translation>
+        <translation>Prezaentacinio serverio šliuzas</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation>Habilitar exceção de firewall</translation>
+        <translation>Įjungti ugnesienės išimtį</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>Įjungti HTTP-serverį, kuris palaiko JavaViewer funkciją</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>HTTP serverio šliuzas</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Leisti prisijungimus tik vietiniam tinkle</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation>Arquivos de configuração</translation>
+        <translation>Konfiguraciniai failai</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation>Configuração global</translation>
+        <translation>Bendri nustatymai</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation>Configuração pessoal</translation>
+        <translation>Privatūs nustatymai</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation>Diretórios de dados</translation>
+        <translation>Katalogai su informacija</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Ekrano nuotraukos</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation>Métodos de autenticação</translation>
+        <translation>Autorizavimosi metodai</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>Autorizuotis naudojant pasiekiamumo raktą</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>ACL autorizavimas naudojant sąrašą</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation>Gerenciamento de chaves de acesso</translation>
+        <translation>Pasiekiamuymo raktų valdymas</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>Katalogas kuriame saugomas viešas raktas</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>Katalogas kuriame saugomas privatus raktas</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>Paleisti pasiekiamumo raktų vedlį</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation>Configurações de logon</translation>
+        <translation>Prisijungimo į sistemą nustatymai</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation>&Arquivo</translation>
+        <source>Manage permissions</source>
+        <translation>Tvarkyti teises</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation>A&juda</translation>
+        <source>Test</source>
+        <translation>Testuoti</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation>&Sair</translation>
+        <source>Access confirmation</source>
+        <translation>Priėjimo patvirtinimas</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation>Ctrl+Q</translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>Jūs galite nusistatyti iTALC taip kad būtu būtina prašyti vartotojo leidimo prisijungti prie jo naudojant tam tikrus metodus</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation>&Salvar configurações em arquivo</translation>
+        <source>Logon authentication</source>
+        <translation>Autorizacija prisijungiant į sistemą</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation>Salvar configurações em arquivo</translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Leisti tam pačiam vartotojui pasiekti ir darbalaukį be autorizacijos</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation>Ctrl+S</translation>
+        <source>Debugging iTALC</source>
+        <translation>iTALC derinimas</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation>Carregar c&onfigurações do arquivo</translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>Kada pastebite klaidas ar kitus negerus dalykus iTALC programoje svarbu informuoti kurėjus apie tai tam kad klaidos būtų kuo greičiau ištaisytos. Ši skiltis leidžia jums pranešti apie klaidas paprastai. Jeigu klaida nėra linkusi plisti ir kartotis tada praleiskite 1)-3) žingsnius</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation>Ctrl+O</translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>Išvalyti įvykių žurnalus skiltyje "Bendri nustatymai".</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation>Sobre o QT</translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation>Janela principal</translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>Skiltyje "bendri nustatymai" nustatykite kad įrašinėtu ir visas kitas klaidas</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation>toolBar</translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation>Console %1 de Gerenciamento do iTALC</translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Pakartokite veiksmus kurie sukėlė tą klaidą.</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation>Em execução</translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation>Carregar configurações de um arquivo</translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Paspauskite šį mygtuką ir išsaugokite failą žinomoje vietoje</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation>Arquivos XML (*.xml)</translation>
+        <source>Generate bug report archive</source>
+        <translation>Sukurti klaidos archyvą</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation>Salvar configurações para arquivo</translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation>Configurações não salva</translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Nueikite į <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375"> klaidų seklys iTALC</a>, atsidarykite nauja klaida ir aprašykite ką darėte 3 žingsnyje ir prisekite failą kurį gavote 4 žingsnyje.</p>
+<br/>
+<br/>
+Dėmesio:Jei klaida įtakoje mokytojo ir mokinio kompiuterius vienu metu reikalinga informacija iš abiejų kompiuterių.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation>Existem configurações não salvas. Sair de qualquer maneira?</translation>
+        <source>&File</source>
+        <translation>&Failas</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation>Configuração não gravável</translation>
+        <source>&Help</source>
+        <translation>&Pagalba</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation>O backend de configuração local informou que a configuração não é gravável! Por favor, execute o Console de Gerenciamento do iTALC com privilégios mais elevados.</translation>
+        <source>&Quit</source>
+        <translation>&Išeiti</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation>Todas as configurações foram aplicadas com sucesso.</translation>
+        <source>Ctrl+Q</source>
+        <translation>CTRL+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation>Um erro ocorreu ao aplicar as configurações!</translation>
+        <source>&Save settings into file</source>
+        <translation>&Išsaugoti nustatymus į failą</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Nustatymų išsaugojimas į failą</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>CTRL+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>Įkelti nustatymus iš failo</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>CTRL+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>Apie programą iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>Apie Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
@@ -999,416 +1172,303 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>No write access</source>
-        <translation>Sem acesso de escrita</translation>
+        <translation>Neturite leidimo įrašyti</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation>Não foi possível ler/gravar ou criar o diretório %1! Para executar iTALC, verifique se você tem permissão de criar ou gravar nesse diretório.</translation>
+        <translation>Neįmanoma skaityti ir rašyti į direktoriją %1!  iTALC paleidimui. Įsitikinkite kad jums leidžiama sukurti naujas direktorijas ir į jas rašyti.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Klasė</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation>Mudar de sala de aula</translation>
+        <translation>Perjungti klasę</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation>Clique neste botão para abrir um menu onde você pode escolher a sala de aula ativa.</translation>
+        <translation>Paspauskite šį mygtuką kad atverti meniu iš kurio pasirinksite aktyvią klasę.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation>Clique neste botão, para alternar entre as salas de aula.</translation>
+        <translation>PAspauskite šį mygtuką kad persijungti tarp klasių.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation>Modo visão geral</translation>
+        <translation>Peržiūros režimas</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Peržiūra</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation>Este é o modo padrão do iTALC e permite que você tenha uma visão geral sobre todos os computadores visíveis. Também clique neste boão para desbloquear os computadores ou para sair do modo de demonstração (demo).</translation>
+        <translation>Tai yra numatytasis iTALC režimas . Jame jūs galite peržiūrėti visus kompiuterius.Taip pat galite nuspausti šį mygtuką kad atrakintumėte užrakintus darbalaukius arba baigtumėte prezentaciją</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Prezentacija per visą ekraną</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Prezentacija per visą ekraną</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation>Parar demonstração</translation>
+        <translation>Sustabdyti prezentaciją</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation>Neste modo, a sua tela será exibida em todos os computadores. Além disso, os usuários não serão capazes de fazer outra coisa, pois todos os dispositivos de entrada (teclados e mouses) serão bloqueados neste modo.</translation>
+        <translation>Šiame re-ime jūsų ekranas rodomas visiems kompiuteriams.Kompiuteriai tuo metu nieko daryti ir negali ,nes jų darbalaukis tampa užrakintas</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Prezentacoka lange</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Prezentacija lange</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation>Neste modo, a sua tela será exibida em uma janela em todos os computadores. Os usuários serão capazes de alternar para outras janelas e assim podem continuar a trabalhar.</translation>
+        <translation>Šiame režime prezentacija rodoma lange visuose kompiuteriuose.Vartotojai gali persijungti į kitą langą ir tęsti darbą</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation>Bloquear/desbloquear os desktops</translation>
+        <translation>Užrakinti/Atrakinti darbalaukius</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation>Bloquear todos</translation>
+        <translation>Užrakinti visus</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation>Desbloquear todos</translation>
+        <translation>Atrakinti visus</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation>Para ter a atenção de todos os usuários, você pode bloquear seus desktops usando este botão. Neste modo, todos os dispositivos de entrada (teclados e mouses) serão bloqueados e a tela ficará preta.</translation>
+        <translation>Kad pritraukti visų mokinių dėmesį galite užrakinti jų darbalaukius.Šiame režime visi mokinių darbalaukiai yra užrakinti ir jie mato tik juodą ekraną</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Nusiųsti žinutę </translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation>Mensagen de texto</translation>
+        <translation>Tekstinė žinutė</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation>Use este botão para enviar uma mensagem de texto para todos os usuários, por exemplo, para comunicar a nova tarefa etc.</translation>
+        <translation>Pasinaudokite šiuo mygtuku kad nusiųsti žinutę visiems vartotojams pvz.: kad pasakytumėte jiems naujas užduotis</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation>Ligar computadores</translation>
+        <translation>Įjungti kompiuterius</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Įjungti</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation>Clique neste botão para ligar todos os computadores visíveis. Desta forma, você não tem que ligar cada computador manualmente.</translation>
+        <translation>Paspauskite šį mygtuką kad įjungti visus kompiuterius iš karto. Taip jums nereikės kiekvieno įjunginėti atskirai ranka</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation>Desligar computadores</translation>
+        <translation>Išjungti kompiuterius</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Išjungti</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation>Para desligar todos os computadores visíveis (por exemplo, depois que terminou a aula), você pode clicar neste botão.</translation>
+        <translation>Kad išjungti visus kompiuterius iš karto (Pavyzdžiui kada baigėsi pamokos) paspauskite šį mygtuką.</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Pagalba</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation>Ajuda direta</translation>
+        <translation>Tiesioginė pagalba</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation>Se você precisa ajudar alguém em um determinado computador, clique neste botão e digite o nome ou o endereço IP do seu computador.</translation>
+        <translation>Jeigu jums reikia bet kokios pagalbos paspauskite šį mygtuką ir įveskite vardą arba ip adresą</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation>Ajustar/alinhar</translation>
+        <translation>Reguliuoti/Lygiuoti</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation>Ajustar janelas e seus tamanhos</translation>
+        <translation>Reguliuoti langus ir jų dydžius</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation>Ao clicar neste botão, o maior tamanho possível para as janelas do cliente será ajustada. Além disso, todas as janelas serão alinhadas.</translation>
+        <translation>Kada nuspaudžiate šį mygtuką nustatomas dydžiausias galimas vartotojo lango dydis. O kiti langai yra lygiuojami</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation>Visualizar automaticamente</translation>
+        <translation>Automatinė išvaizda</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation>Rearranjar automaticamente o tamanho da janela</translation>
+        <translation>Automatiškia keisti langus ir jų dydžius</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation>Ao clicar neste botão, todos as janelas visíveis serão rearranjadas e ajustadas.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation>Controle Mestre Do iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation>Não foi possível modificar a propriedade iniciar automaticamente para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation>Não foi possível modificar os argumentos do serviço para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation>Não foi possível alterar a configuração do firewall para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation>Depuração</translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation>Habilitar alternando desktop para bloquear tela (experimental)</translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation>Log para a saída de erro padrão</translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation>Log para registro de eventos de Janelas</translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation>Backend</translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation>Refletor VNC</translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation>Servidor de demonstração iTALC</translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation>Multithreading (pode ser habilitado ao usar o backend refletor VNC)</translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation>Habilitar servidor HTTP que fornece um applet JavaViewer</translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation>Porta do servidor HTTP</translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation>Permitir conexões de localhost apenas</translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation>Autenticação de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation>Autenticação de logon baseado em ACL</translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation>Diretório base do arquivo de chave pública</translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation>Diretório base do arquivo de chave privada</translation>
+        <translation>Paspaudus šį mygtuką visi matomi langai yra surikiuojami ir pakeičiamas jų dydis.</translation>
     </message>
     <message>
-        <source>Launch key file assistant</source>
-        <translation>Lançar assistente de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation>Gerenciar permissões</translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation>Teste</translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation>Confirmação de acesso</translation>
-    </message>
-    <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation>Você pode configurar iTALC para pedir a permissão do usuário para acessar o desktop ao usar determinados métodos de autenticação.</translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation>Autenticação de logon</translation>
+        <source>Could not contact iTALC service</source>
+        <translation>Nepavyko susisiekti su iTALC tarnyba</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation>Permitir que o mesmo usuário acesse o desktop sem confirmação</translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>Neįmanoma susisiekti su vietinia iTALC tarnybą. Greičiausiai įvedėte neteisingą informaciją arba pasiekiamumo raktas nenustatytas teisingai.Pabandykite vėl arba susisiekite su savo sistemos administratoriumi kad išsprestu bėdą naudodamasis iTALC konsole  </translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation>Depurando iTALC</translation>
+        <source>iTALC Master Control</source>
+        <translation>iTALC pagrindinis valdymas</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation>Ao encontrar falhas ou outro mau comportamento em iTALC é importante informar os desenvolvedores sobre eles, de modo que as falhas possam ser corrigidas em versões futuras. Esta página permite que você envie um relatório de falha útil facilmente.
-
-Se a falha não é reproduzível, pule o passo1) - 3).</translation>
+        <source>Authentication impossible</source>
+        <translation>Autorizavimas neįmanomas</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation>1)</translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>Jokie autorizacijos raktai nerasti. Arba turimi yra per seni. Prašome sukurti naujus pasiekiamumo raktus naudojantis iTALC tvarkymo konsole.Alternatyvai galite nustatyti prisijungimo autorizavimą naudojantis iTALC konsole. Kitaip jūs negalėsite valdyti kompiuterių naudodamiesi iTALC</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation>Limpar os arquivos de log na seção "Geral".</translation>
+        <source>Remote control</source>
+        <translation>Nuotolonis valdymas</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation>2)</translation>
+        <source>Quit</source>
+        <translation>Išeiti</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation>Na seção "Geral" defina o nível do log para "Mensagens de depuração e tudo mais".</translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>Nepavyko pakeisti auto paleisties nusstatymų iTALC tarnybai.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation>3)</translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>Nepavyko pakeisti iTALC tarnybos parametrų.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation>Repita as ações que conduzem ao erro ou mau comportamento.</translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>Nepavyko pakeisti ugiasienės nustatymų  iTALC tarnybai.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation>4)</translation>
+        <source>Configuration not writable</source>
+        <translation>Konfiguracinis failas negali būti įrašytas</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation>Clique no botão abaixo e salve o arquivo em um local conhecido.</translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>Vietinis konfiguracijos veldys pranešė, kad konfiguracija negali būti įrašyta. Prašome paleisti iTALC konsolę su aukštesnėmis privilegijomis.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation>Gerar arquivo de relatório de falha</translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Visi nustatymai pritaikyti sėkmingai.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation>5)</translation>
+        <source>An error occured while applying settings!</source>
+        <translation>Pritaikaint nustatymus įvyko klaida!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation>Ir para o <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, abra um novo bug, descrever o que você fez no passo 3) e anexe o arquivo que você salvou no passo 4).</p>
-<br/>
-<br/>
-Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivos de relatório de erro para ambos os computadores.</translation>
+        <source>iTALC Management Console %1</source>
+        <translation>iTALC valdymo komnsolė %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation>Reiniciar Servidor iTALC</translation>
+        <translation>Perkrauti iTALC tarnybą</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation>Todas as configurações foram salvas com sucesso. A fim de ter efeito, o serviço iTALC precisa ser reiniciado. Reiniciá-lo agora?</translation>
+        <translation>Visi nustatymai išsaugoti sėkmingai. Tam kad pakeitimai taptu aktyvūs reikia perkrauti iTALC. Perkrauti dabar?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation>Iniciando serviço iTALC</translation>
+        <translation>Paleidžiama iTALC tarnyba</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation>Parando serviço iTALC</translation>
+        <translation>Sustabdoma iTALC tarnyba</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>Veikia</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation>O serviço iTALC precisa ser parado temporariamente, a fim de remover os arquivos de log. Continuar?</translation>
+        <translation>iTALC tarnyba turi būti laikinai sustabdyta kad ištrinti įvykių žurnalo failus. Tęsti?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation>Arquivos de log limpos</translation>
+        <translation>Įvykio failai ištrinti</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation>Todos os arquivos de log foram limpos com sucesso.</translation>
+        <translation>Visi įvyko failai pašalinti sėkmingai.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation>Erro</translation>
+        <translation>Klaida</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation>Não foi possível remover todos os arquivos de log.</translation>
+        <translation>Nepavyko pašalinti visų įvykio failų.</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>Įkelti nustatymus iš failo</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>XML failai (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Išsaugoti nustatymus į failą</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation>Teste de autenticação de logon</translation>
+        <translation>Prisijungimo prie sistemos autorizacijos testas</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation>A autenticação com credenciais fornecidas foi bem sucedida.</translation>
+        <translation>Autorizacija iš duotų duomenų įvygdyta sėkmingai.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation>A autenticação com credenciais fornecidas falhou!</translation>
+        <translation>Autorizacija iš duotų duomenų nepavyko!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation>Salvar arquivo de relatório de bug</translation>
+        <translation>Išsaugoti klaidų archyvą</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation>Arquivo de relatório de bug iTALC (*.ibra.xml)</translation>
+        <translation>iTALC klaidos archyvas (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation>Arquivo de relatório de bug iTALC salvo</translation>
+        <translation>iTALC klaidos archyvas išsaugotas</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation>Um arquivo de relatório de bug do iTALC foi salvo em %1.Ele inclui arquivos de log do iTALC e informações sobre seu sistema operacional. Você pode atachá-lo a um relatório de bug.</translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation>Não foi possível contactar o serviço iTALC</translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation>Não foi possível contactar o serviço local iTALC. É provável que você inseriu as credenciais erradas ou arquivos de chaves não estão configurados corretamente. Tente novamente ou contate o administrador para resolver esse problema usando o Console De Gerenciamento Do iTALC. </translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation>Autenticação impossível</translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation>Nenhum arquivos de chave de autenticação foram encontrados ou seus atuais estão desatualizados. Por favor, crie novos arquivos de chave usando o Console De Gerenciamento Do iTALC. Alternativamente, configure a autenticação do usuário no Console De Gerenciamento Do iTALC. Caso contrário, você não será capaz de acessar computadores usando o iTALC.</translation>
+        <translation>iTALC klaidos archyvas išsaugotas į %1 . Jame yra iTALC ivykių žurnalai ir informacija apie jūsų operacinę sistemą. Galita šį archyvą prisegti prie klaidos pranešimo </translation>
     </message>
     <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Neišsaugoti nustatymai</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation>Mensagem do professor</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Egzistuoja dar neišsaugoti nustatymai. Vistiek išeiti?</translation>
     </message>
 </context>
 <context>
@@ -1416,239 +1476,239 @@ Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivo
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Bem vindo ao iTALC</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Sveiki atvykę į iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation>Aqui, você vê a barra de ferramentas que contém vários botões. Cada botão está conectado a um espaço de trabalho. Para dar uma olhada nos espaços de trabalho disponíveis, basta clicar no botão correspondente.</translation>
+        <translation>Čia jūs matote darbo skydelį kuris turi kelis mygtukus. Kiekvienas mygtukas yra sujungtas su kompiuteriu.Tiesiog apsižiūrėkite galimus kompiuterius spausdami ant antitinkamo mygtuko</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation>Usando o gerenciador de salas de aula, você pode gerenciar suas salas de aula e computadores. Você também pode ver qual usuário está logado.</translation>
+        <translation>Naudodamiesi Klasių tvarkykle jūs galite tvarkyti savo klases ir kompiuterius.Taip pat galite matyti kuris vartotojas yra prisijungęs šiuo metu.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation>A captura do espaço de trabalho é uma ferramenta muito útil. Ela permite que você gerencie as capturas que você fez.</translation>
+        <translation>Darbalaukio fotografavvimo tvarkyklė labai naudingas dalykas.Ji leidžia tvarkyti jums ekrano nuotraukas kurias padarėte</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation>Claro que você pode configurar o iTALC. Isso geralmente é feito usando a configuração do espaço de trabalho.</translation>
+        <translation>Aišku jūs taip pat galite keisti iTALC nustatymus. Paprastai tai darosi naudojant Nustaymų tvarkyklę.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>Apie programą iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Peržiūra</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation>Algumas informações básicas sobre iTALC e como usá-lo.</translation>
+        <translation>Truputis pagrindinės informacijos apie iTALC ir kaip ja naudotis.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>Prisijungimas prie iTALC</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation>Por favor, digite seu nome de usuário e senha para acessar os clientes iTALC.</translation>
+        <translation>Prašome įvesti vartotojo vardą ir slaptažodį kad prisijungtumėte prie iTALC.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Vartotojo vardas</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation>Acessar iTALC</translation>
+        <translation>Slaptažodis</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Tvarkyti</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
-        <translation>Cliente iTALC %1 no %2:%3</translation>
+        <translation>iTALC klienras %1 yra %2:%3</translation>
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation>Não foi possível registrar o serviço  '%1'.</translation>
+        <translation>Negaliu užregistruoti tarnybos '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>Neįmanoma susisiekti su tarnybos administratoriumi (Gal jums neužtenka teisių?!) - tarnyba '%1' neužregistruota</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation>O serviço '%1' já está registrado.</translation>
+        <translation>Tarnyba '%1' jau užregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation>O serviço '%1' não pode se registrado.</translation>
+        <translation>Tarnyba '%1' negali būti užregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation>O serviço '%1' foi registrado com sucesso.</translation>
+        <translation>Tarnnyba '%1' sėkmingai užregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation>O serviço '%1' não pode ser parado.</translation>
+        <translation>Tarnyba '%1' negali būti sustabdyta.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation>O serviço '%1' tem sido registrado.</translation>
+        <translation>Tarnyba '%1' išregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation>O serviço '%1' não tem sido registrado e por isso não pode ser registrado.</translation>
+        <translation>Tarnyba '%1' nebuvo užregistruota bet ir negali būti išregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation>O serviço '%1' não pode ser registrado.</translation>
+        <translation>Tarnyba '%1' negali būti išregistruota.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation>O serviço '%1' não pode ser encontrado.</translation>
+        <translation>Tarnyba '%1' nerasta.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>Neįmanoma susisiekti su tarnybos administratoriumi (Gal jums neužtenka teisių?!) - tarnyba '%1' neužregistruota.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi parado.</translation>
+        <translation>Neįmanoma susisiekti su tarnybos administratoriumi (Gal jums neužtenka teisių?!) - tarnyba '%1' nesustabdyta.</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation>Ver ao vivo (%1 @ %2)</translation>
+        <translation>Peržiūrėti tiesiogiai (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation>Controlar remotamente (%1 @ %2)</translation>
+        <translation>Nuotolinis valdymas (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation>usuário desconhecido</translation>
+        <translation>Nežinomas vartotojas</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation>Visualizar somente</translation>
+        <translation>Tik peržiūra</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Nuotolinsi valdymas</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation>Bloquear aluno</translation>
+        <translation>Užblokuoti mokinį</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation>Desbloquear aluno</translation>
+        <translation>Atblokuoti studentą</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Ekrano nuotrauką</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation>Tela cheia</translation>
+        <translation>Per visą ekraną</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation>Janela</translation>
+        <translation>Lange</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation>Sair</translation>
+        <translation>Išeiti</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation>Conectando %1</translation>
+        <translation>Jungiamasi su %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation>Conectado.</translation>
+        <translation>Prisijungta.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation>Acessar remotamente</translation>
+        <translation>Nuotolinis prisijungimas</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation>Use os campos abaixo para digitar o nome de usuário, senha e nome de domínio opcional. Estas informações serão usadas para fazer acessar o(s) computador(es).</translation>
+        <translation>Naudokitės langeliais kad įvestumėte vartotojo vardą ir slaptažodį ir domeno pavadinimą.Ši informacija bus naudojama kad prisijungti prie kompiuterių.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Vartotojo vardas</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
+        <translation>Slaptažodis</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation>Domínio</translation>
+        <translation>Domenas</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Paleisti komandą</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation>Por favor, digite os comandos para executar no(s) cliente(s) selecionado(s). Você pode separar vários comandos por linha.</translation>
+        <translation>Prašome įvesti komandą kuria norite paleisti pasirinkto vartotojo kompiuuteryje. Galite paleisti daug komandų atskirdami jas linijomis</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation>desconhecido</translation>
+        <translation>Nežinomas</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation>Não foi possível tirar uma captura. O diretório %1 não existe ou não pode ser criado.</translation>
+        <translation>Neįmanoma padaryti ekrano nuotraukos nes katalogas %1 neegzistuoja arba negali būti sukurtas.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Ekrano nuotrauka</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Ekrano nuotraukos</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation>Simplesmente gerencie as capturas que você fez usando este espaço de trabalho.</translation>
+        <translation>Lengvai valdykite ekrano nuotraukas naudodamiesi šia tvarkykle.</translation>
     </message>
 </context>
 <context>
@@ -1656,20 +1716,20 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Todas as capturas que você fez, estão listadas aqui. Você pode fazer capturas selecionando a referente opção no menu de contexto (botão direito do mouse) de uma janela cliente. Estas capturas podem ser gerenciadas usando os botões abaixo.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Čia saugomos visos jūsų padarytos ekrano nuotraukos.Jūs galite padaryti ekrano nuotrauką pasirinkdami tikamą funkciją meniu kontekste paspausdami ant vartotojo kompiuterio ikonėlės.Nuotraukos gali būti tvarkomos naudojantis mygtuku apačioje.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation>Usuário:</translation>
+        <translation>Vartotojas:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation>Computador:</translation>
+        <translation>Kompiuteris:</translation>
     </message>
     <message>
         <source>Date:</source>
@@ -1677,103 +1737,103 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Time:</source>
-        <translation>Hora:</translation>
+        <translation>Laikas:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation>Mostrar</translation>
+        <translation>Rodyti</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation>Excluir</translation>
+        <translation>Ištrinti</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Pagalba</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation>Por favor, digite o endereço IP ou nome do computador para o qual você deseja se conectar.</translation>
+        <translation>Prašome įvesti ip adresą arva vardą kompiuterio prie kurio norite prisijungti.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Nusiųsti tekstine žinutę</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation>Use o campo abaixo para digitar sua mensagem que será enviada para todos os usuários selecionados.</translation>
+        <translation>Apačioje esančiame lange įveskite žinutę kuri bus išsiųsta visiems pasirinktiems vartotojams</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation>Estabelecendo conexão para %1 ...</translation>
+        <translation>Vykdomas sujungimas su  %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Peržiūra</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstrar em tela cheia</translation>
+        <translation>Pilno ekrano prezentacija</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstrar em uma janela</translation>
+        <translation>Prezentacija ekrane</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation>Bloquear tela</translation>
+        <translation>Užrakinti ekraną</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation>Ver ao vivo</translation>
+        <translation>Tiesioginis peržiūrėjimas</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Nuotolinis valdymas</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation>Deixar o aluno exibir uma demonstração</translation>
+        <translation>Leisti mokiniui parodyti prezentaciją</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Nusiųsti tekstine žinutę</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Išjungti vartotoją</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation>Capturar uma tela</translation>
+        <translation>Padaryti ekrano nuotrauką</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Įjungti</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation>Reiniciar</translation>
+        <translation>Perkrauti</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Išjungti</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Paleisti komandą</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/pt_br.ts b/lib/resources/mn.ts
similarity index 51%
copy from lib/resources/pt_br.ts
copy to lib/resources/mn.ts
index a9477fb..0b6aa57 100644
--- a/lib/resources/pt_br.ts
+++ b/lib/resources/mn.ts
@@ -1,15 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="mn" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>iTALC-ын тухай</translation>
     </message>
     <message>
         <source>About</source>
-        <translation>Sobre</translation>
+        <translation>Тухай</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
@@ -17,509 +23,587 @@
     </message>
     <message>
         <source>Authors</source>
-        <translation>Autores</translation>
+        <translation>Зохиогчид</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation>Tradução</translation>
+        <translation>Орчуулга</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation>Idioma atual não traduzido ainda (ou está em Inglês nativo).
+        <translation>Одоогоор энэ хэл дээр орчуулагдаагүй байна.
 
-Se você estiver interessado em traduzir o iTALC em seu idioma local ou outro idioma ou quer melhorar uma tradução existente, entre em contato com um desenvolvedor iTALC!</translation>
+Хэрвээ та өөрийн хэл рүү орчуулгах эсвэл одоо байгаа орчуулгыг сайжруулахыг хүсэж байгаа бол хөгжүүлэгчтэй холбоо барина уу!</translation>
     </message>
     <message>
         <source>License</source>
-        <translation>Licença</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished">iTALC -Ensino e Aprendizagem Inteligente com Computadores
-
-Copyright © 2004-2011 Tobias Doerffel / iTALC Solutions {2004-2013 ?}</translation>
+        <translation>Лиценз</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation>Nunca para esta sessão</translation>
+        <source>Confirm desktop access</source>
+        <translation>Дэлгэцийн хандалтийг зөвшөөрөх</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation>Sempre para esta sessão</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation>Хост дээрх %1 хэрэглэгч %2 таны компьютерт хандахыг хүсэж байна. Зөвшөөрч байна уу?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation>Confirmar acesso ao desktop</translation>
+        <source>Never for this session</source>
+        <translation>Хэзээ ч энэ горимд биш</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation>O usuário %1 do computador %2 deseja acessar o seu desktop. Você quer conceder o acesso?</translation>
+        <source>Always for this session</source>
+        <translation>Байнга энэ горимд</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation>Gerente de Sala de Aula</translation>
+        <translation>Ангийн-удирдлага</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation>Use este espaço para gerenciar seus computadores e salas de aula de uma forma fácil.</translation>
+        <translation>Энэ талбарт ангиуд болон компьютеруудын зохицуулалтыг хийнэ.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation>Este é o lugar onde os computadores e salas de aula são gerenciados. Você pode adicionar computadores e salas de aula clicando à direita nesta lista.</translation>
+        <translation>Энд та компьютер, ангиудыг удирдаж болно. Та жагсаалтын баруун даран компьютер, эсвэл анги нэмж болно.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation>Salas de aual/computadores</translation>
+        <translation>Ангиуд/компьютерууд</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation>Endereço IP</translation>
+        <translation>IP-хаяг</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation>Nomes de usuários</translation>
+        <translation>Хэрэглэгчийн нэрс</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation>Mostrar nomes de usuários</translation>
+        <translation>Хэрэглэгчийн нэрсийг харах</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation>Use o menu de contexto (botão direito do mouse) para adicionar/remover computadores e/ou salas de aula.</translation>
+        <translation>Дэд цэс(хулганын баруун даралт)-ээр компьютер нэмэх/хасах болон эсвэл анги нэмэх/хасах үйлдэл хийнэ.</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation>Exportar para um arquivo texto</translation>
+        <source>Export to text file</source>
+        <translation>Текст файл болгох</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation>Use este botão para exportar esta lista de computadores e nomes de usuários para um arquivo texto. Você pode usar este arquivo mais tarde para recolher os arquivos dos usuários depois que um exame terminou. As vezes isso é necessário, porque alguns usuários podem ter terminado o exame mais cedo e ter feito logoff do computador e por isso impedindo você de recolher seus arquivos no final do exame.</translation>
+        <translation>Энэ даралтыг компьютерууд болон хэрэглэгчийн нэрсийн жагсаалтыг текст-файлд хадгалахад хэрэглэнэ. Энэ файлаа шалгалт дууссаны дараа файл хураахад хэрэглэнэ. Энэ нь заримдаа хэрэгтэй, яагаад гэвэл зарим сурагч шалгалтаа эрт дуусгаад системээс гардаг.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation>Ocultar computadores do professor</translation>
+        <translation>Багшийн компьютерыг нуух</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation>Mostrar/ocultar</translation>
+        <translation>Харуулах/нуух</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation>Editar configurações</translation>
+        <translation>Тохиргоог өөрчлөх</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation>Remover</translation>
+        <translation>Устгах</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation>Mostrar todos os computadores da sala de aula</translation>
+        <translation>Ангид байгаа бүх компьютерыг харуулах</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation>Ocultar todos os computadores da sala de aula</translation>
+        <translation>Ангид байгаа бүх компьютерыг нуух</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation>Editar nome</translation>
+        <translation>Нэр өөрчлөх</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation>Remover sala de aula</translation>
+        <translation>Ангийг устгах</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation>Adicionar computador</translation>
+        <translation>Компьютер нэмэх</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation>Adicionar sala de aula</translation>
+        <translation>Анги нэмэх</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation>Arquivo de configuração não encontrado</translation>
+        <source>No configuration file found</source>
+        <translation>Тохируулгын файл олдсонгүй</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation>Não foi possível abrir arquivo de configuração %1.
-É necessário adicionar no mínimo uma sala de aula e computadores usando o gerenciador de salas de aula que você encontra no lado esquerdo do programa.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>Тохиргооны файлыг нээж чадахгүй байна  %1.
+Та ядаж нэг анги эсвэл компьютер нэмэж байж ангийн-удирдлагагыг хэрэглэж болно. Үүнийг програмын зүүн хэсгээс олж болно.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation>Erro no arquivo de configuração</translation>
+        <source>Error in configuration file</source>
+        <translation>Тохируулгын файл дээрх алдаа</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo e terá que adicionar todas as salas de aula e computadores novamente.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>Тохиргооны файл задлах үеийн алдаа %1.
+Үүнийг өөрчилнө үү. Үгүй бол та энэ файлыг устгах, дахин бүх анги танхим, компьютер нэмэх ёстой.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation>Erro ao analisar o arquivo de configuração %1.
-Por favor, edite-o. Caso contrário, você deve excluir este arquivo.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>Тохиргооны файл задлах үеийн алдаа %1.
+Үүнийг өөрчилнө үү. Үгүй бол та үүнийг устгах хэрэгтэй.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation>Selecionar arquivo de saida</translation>
+        <translation>Гаралтын файлыг сонгоно уу</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation>Arquivos de texto (*.txt)</translation>
+        <translation>Текст файл (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation>Ações para selecionados</translation>
+        <translation>Сонгосонд тохирох үйлдлүүд</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Үйлдлүүд</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation>Ações para %1</translation>
+        <translation>Үйлдлүүд %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation>Novo nome para a sala de aula</translation>
+        <translation>Шинэ ангид өгөх нэр</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation>Por favor, digite um novo nome para a sala de aula "%1".</translation>
+        <translation>Ангид өгөх шинэ нэрээ оруулна уу "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation>Tem certeza que quer remover a sala de aula "%1"?
-Todos os computadores desta sala serão removidos também!</translation>
+        <translation>Ангийг устгахыг хүсэж байна уу "%1"?
+Бүх компьютерууд устана гэдгийг анхаарна уу!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation>Sala de aula não encontrada</translation>
+        <translation>Орхигдож байгаа анги</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation>Antes de adicionar computadores, você tem que criar pelo menos uma sala de aula.
-Quer criar uma nova sala agora?</translation>
+        <translation>Компьютер нэмж эхлэхээсээ өмнө та хамгийн багадаа нэг анги бий болгох хэрэгтэй.
+Та одоо шинэ анги үүсгэх үү?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation>Nova sala de aula</translation>
+        <translation>Шинэ анги</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation>Por favor, digite o nome da sala de aula que você deseja criar.</translation>
+        <translation>Үүсгэхийг хүсэж буй ангийнхаа нэрийг оруулна уу.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation>Estado desconhecido</translation>
+        <translation>Үл мэдэгдэх төлөв</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation>Nenhum usuário logado</translation>
+        <translation>Нэвтэрсэн хэрэглэгч байхгүй байна</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation>Computador inacessível</translation>
+        <translation>Хост компьютер байхгүй байна</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation>Demonstração em execução</translation>
+        <translation>Үзүүлэн ажиллаж байна</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation>Desktop bloqueado</translation>
+        <translation>Компьютер түгжигдсэн</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Багшаас мессеж ирлээ</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores visíveis?</translation>
+        <translation>Та бүх компьютер дээрх хэрэглэгчдийг холболтоос салгахыг хүсэж байна уу ?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation>Tem certeza que quer fazer logoff de todos os usuários em todos os computadores selecionados?</translation>
+        <translation>Та бүх сонгогдсон компьютер дээрх хэрэглэгчдийг холболтоос салгахыг хүсэж байна уу ?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Хэрэглэгчийг гаргах</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores visíveis?</translation>
+        <translation>Та бүх компьютеруудыг дахин ачааллахыг хүсэж байна уу?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation>Tem certeza que quer reiniciar todos os computadores selecionados?</translation>
+        <translation>Та бүх сонгогдсон компьютеруудыг дахин ачааллахыг хүсэж байна уу?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation>Reiniciar computadores</translation>
+        <translation>Компьютеруудыг дахин ачааллах</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores visíveis?</translation>
+        <translation>Та бүх компьютеруудыг унтраахыг хүсэж байна уу?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation>Tem certeza que quer desligar todos os computadores selecionados?</translation>
+        <translation>Та бүх сонгогдсон компьютеруудыг унтраахыг хүсэж байна уу?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation>Endereço MAC inválido</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation>Você especificou um endereço MAC inválido. Deixe este campo em branco ou digite um endereço MAC válido (use ":" como separador!).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation>Configurações do cliente</translation>
+        <translation>Клиентийн тохиргоо</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation>IP/nome do computador</translation>
+        <translation>IP/хостын нэр</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Digite um endereço IP ou nome do computador para que o iTALC possa acessar o cliente  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iTALC клиентийн IP-хаяг эсвэл хостын нэрийг ':' оруулна уу.(Жишээлбэл 192.1 [...]
     </message>
     <message>
         <source>Name</source>
-        <translation>Nome</translation>
+        <translation>Нэр</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Apelido opcional do computador que é exibido no iTALC.</p></body></htm [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iTALC дээрх харагдах өгч болох хостын "хоч" нэр.</p></body>< [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation>Endereço MAC</translation>
+        <translation>MAC хаяг</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Endereço de Hardware (MAC) do cliente - somente usado para ligar o computador remotam [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Техник хангамж/Клиентийн МАС-хаяг - зөвхөн клиентийг асаахад хэрэглэгдэнэ.</p>& [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Анги</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation>Tipo</translation>
+        <translation>Төрөл</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation>Computador do aluno</translation>
+        <translation>Сурагчийн компьютер</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation>Computador do professor</translation>
+        <translation>Багшийн компьютер</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation>Outro computador (indefinido)</translation>
+        <translation>Бусад/тодорхойлогдоогүй компьютер</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation>Faltando endereço IP/nome do computador</translation>
+        <translation>Дутуу IP хаяг/хостын нэр</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation>Você não especificou um endereço IP ou nome para o computador!</translation>
+        <translation>Та компьютерын IP хаяг эсвэл хостын нэрийг тодорхой заагаагүй байна!</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Буруу MAC-хаяг</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Та буруу MAC-хаяг оруулсан байна. Зөв MAC-хаяг  оруулах эсвэл хоосон үлдээж болно (":" тэмдэгтийг тусгаарлагч болгон ашиглаарай!) </translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation>Intervalo entre as atualizações</translation>
+        <translation>Шинэчлэлт хоорондох интервал</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode determinar o intervalo entre as atualizações dos computadores. Valore [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Энд та клиентийн шинэчлэлт хоорондох интервалын хугацааг тохируулж болно. CPU болон с [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation> segundos</translation>
+        <translation> секунд</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation>Interface do usuário</translation>
+        <translation>Хэрэглэгчийн интерфейс</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar dicas de balão para os botões da barra de ferramentas</p></body& [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html>< [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Marque esta opção se você deseja desabilitar as dicas de balão que aparecem ao mover  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Та дээрх товчлуурууд дээр курсороо аваачих үед доош унаж харагдахаас залхсан байгаа б [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation>Sem dicas de balão</translation>
+        <translation>Дээрх товчлууруудыг текстгүй болгох</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar textos nos botões da barra de ferramentas</p></body></html [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Товчлуурууд дээр текст харуулахгүй</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation>Sem textos nos botões da barra de ferramentas</translation>
+        <translation>toolbar-buttons-ыг текстгүй болгох</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Хэл:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Системийн анхны хэл</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体字</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 簡體字</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation>Sua função (necessário as chaves estarem de acordo!)</translation>
+        <translation>Таны үүрэг(мөн түлхүүр хэрэгтэй)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode selecionar sua função. Somente modifique isto, se você conhece o que está fazendo. Caso contrário, você não será capaz de acessar todos os computadores clientes até que você restaure sua antiga função.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Энд та өөрийнхөө үүргийг сонгоно.Та өөрийгөө юу хийж байгаагаа мэдэж байгаа үед л үүнийг өөрчилж болно.Өөрөөр бол та өөрийнхөө хуучин үүргээ сэргээхгүйгээр клиентүүдэд хандах боломжгүй болно.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation>Professor</translation>
+        <translation>Багш</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation>Administrador</translation>
+        <translation>Администратор</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation>Ajudante</translation>
+        <translation>Дэмжигч</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
-    </message>
-    <message>
-        <source>Settings for multi-logon</source>
-        <translation>Configurações para logon múltiplo</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation>Domínio</translation>
+        <translation>Бусад</translation>
     </message>
     <message>
-        <source>Double-click action for client-window</source>
-        <translation>Duplo clique na janela cliente</translation>
+        <source>Double click action for client window</source>
+        <translation>Клиент цонхны 2 даралтаарх үйлдлүүд</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui, você pode definir o que deve acontecer se você clicar duas vezes em uma janela do cliente.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Энд та хоёр товшилтоор юу хийхийг тохируулж болно.</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Алсын удирдлага</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation>Ver ao vivo em tela cheia</translation>
+        <translation>Бүтэн дэлгэцээр шууд харах</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Por favor, note que  [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Та iTALC дахин эхлүү [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation>Sua configuração do iTALC</translation>
+        <translation>Таны iTALC-тохиргоо</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation>Neste espaço, você pode personalizar o iTALC para atender as suas necessidades.</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation>OK</translation>
+        <translation>Энэ хэсэгт та iTALC-ыг өөрийнхөөрөө тохируулж болно.</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation>Demonstrar iTALC</translation>
+        <translation>iTALC демо</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation>Erro na autenticação</translation>
+        <translation>Баталгаажуулалтын алдаа</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation>Alguém (IP: %1) tentou acessar este computador mas não se autenticou com sucesso!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>Хэн нэгэн (IP: %1) энэ компьютерт хандахыг оролдсон боловч зөвшөөрөгдөж чадахгүй байна!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation>A autenticação do VNC falhou devido a muitas tentativas de autenticação.</translation>
+        <translation>VNC баталгаажуулалтын алдаа. Учир нь хэтэрхий олон удаа оролдсон байна.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation>A autenticação do VNC falhou.</translation>
+        <translation>VNC баталгаажуулалтын алдаа.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation>O servidor VNC fechou a conexão.</translation>
+        <translation>VNC сервер хаалттай холболт.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation>Assistente Da Chave De Acesso Do iTALC</translation>
+        <translation>iTALC-д нэвтрэх туслагч түлхүүр</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation>Criar/importar chaves de acesso do iTALC</translation>
+        <translation>iTALC-д нэвтрэх түлхүүр үүсгэх/оруулах </translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation>Este assistente irá ajudá-lo a criar ou importar as chaves de acesso do iTALC.</translation>
+        <translation>Энэ туслагч нь iTALC-д нэвтрэх түлхүүр үүсгэх эсвэл оруулахад туслана.</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation>Como isso funciona?</translation>
+        <translation>Энэ нь хэрхэн ажиллах вэ?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -527,67 +611,63 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation>As chaves de acesso do iTALC consistem em duas partes pertencentes em conjunto, uma chave pública e uma privada.
+        <translation>iTALC-ын нэвтрэх түлхүүр нь хувийн болон нийтийн гэсэн 2 хэсэгтэй.
 
-Usando a chave privada, os usuários no computador mestre serão capazes de acessar os computadores clientes. É importante que somente usuários autorizados tenham acesso de leitura para o arquivo da chave privada.
+С помощью закрытого ключа пользователи главного компьютера смогут получить доступ к клиентским компьютерам. Обязательно необходимо убедиться, что только авторизованные пользователи имеют доступ на чтение файла, содержащего закрытый ключ.
 
-A chave pública é usada nos computadores clientes para verificar que qualquer entrada de solicitação de conexão está autorizada.</translation>
+Открытый ключ используется на клиентских компьютерах для проверки, что все входящие запросы посылаются главным компьютером.</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation>Modo assistente</translation>
+        <translation>Туслах горим</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation>Por favor, escolha se deseja criar novas chaves de acesso ou importar uma chave pública de um cliente.</translation>
+        <translation>Клиент компьюрт нэвтрэх түлхүүр үүсгэх эсвэл нийтийн түлхүүрийг оруулахын аль нэгийг нь сонгоно уу.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation>Criar novas chaves de acesso (computador mestre)</translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation>assistantModeButtonGroup</translation>
+        <translation>Шинэ нэвтрэх түлхүүр үүсгэх (мастер компьютер)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation>Importar chave pública (computador cliente)</translation>
+        <translation>Нийтийн нэвтрэх түлхүүр оруулах (Клиент компьютер)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation>Selecionar a função do usuário</translation>
+        <translation>Хэрэглэгчийн үүргийг тодорхойлох</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation>Por favor, selecione uma função para o usuário para criar ou importar as chaves de acesso:</translation>
+        <translation>Нэвтрэх түлхүүр үүсгэх эсвэл оруулахын аль нэгт нь тохирох хэрэглэгчийн үүргийг сонгоно уу:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation>Professor</translation>
+        <translation>Багш</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation>Administrador</translation>
+        <translation>Администратор</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation>Membro da equipe de apoio</translation>
+        <translation>Дэмжигч багийн гишүүн</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation>Outro</translation>
+        <translation>Бусад</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation>Funções de usuário permitem usar múltiplas chaves de acesso em paralelo. Por exemplo, pode haver diferentes chaves de acesso do professor para cada sala de aula, enquanto que as chaves de acesso são as mesmas para toda a escola.</translation>
+        <translation>Хэрэглэгчийн үүрэг нь зэрэг олон нэвтрэх түлхүүрүүдийг ашиглахыг зөвшөөрдөг. Жишээлбэл .</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation>Diretórios</translation>
+        <translation>Каталоги</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation>Exportar parte de chave pública (computador mestre)</translation>
+        <translation>Нийтийн түлхүүрийн  хэсэгийг гаргах (мастер компьютер)</translation>
     </message>
     <message>
         <source>...</source>
@@ -595,117 +675,117 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation>Usar um diretório de destino personalizado para as chaves de acesso</translation>
+        <translation>Нэвтрэх түлхүүрийг хадгалах санг ашиглах</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation>Por favor, especifique a localização da chave de acesso pública para ser importada.</translation>
+        <translation>Оруулах нийтийн нэвтрэх түлхүүрийн байршлийг тодорхойлно уу.</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation>Resumo</translation>
+        <translation>Хураангуй</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation>As seguintes ações serão tomadas:</translation>
+        <translation>Дараах үйлдлүүдийг авч болно:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation>• Criar novas chaves de acesso</translation>
+        <translation>• Нэвтрэх түлхүүр үүсгэх</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation>• Importar chave de acesso pública de</translation>
+        <translation>• Нийтийн нэвтрэх түлхүүрийг оруулах</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation><desconhecida></translation>
+        <translation><Үл-мэдэгдэх></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation>• Salvar chave(s) de acesso em</translation>
+        <translation>• Нэвтрэх түлхүүр бичих</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation>• Exportar chave pública para</translation>
+        <translation>•  Нийтийн түлхүүрийг гаргах -></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation>• Configurar para a função de usuário</translation>
+        <translation>• Хэрэглэгчийн үүргийг тохируулах</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation>Selecionar o diretório para o qual a chave pública será exportada</translation>
+        <translation>Нийтийн түлхүүр гаргах санг сонгоно уу</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation>Chaves de acesso (*.key.txt)</translation>
+        <translation>Түлхүүр файлууд (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation>Chave pública inválida</translation>
+        <translation>Хүчингүй нийтийн түлхүүр</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation>O arquivo selecionado não contém uma válida chave de acesso pública do iTALC!</translation>
+        <translation>Сонгогдсон файл хүчинтэй нийтийн түлхүүрийг агуулаагүй байна!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation>Selecionar diretório de destino</translation>
+        <translation>Очих санг сонгох</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation>Criação da chave de acesso</translation>
+        <translation>Нэврэх түлхүүр үүсгэх</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation>Não foi possível remover arquivo %1 previamente existente.</translation>
+        <translation>Өмнө нь байгаа файлыг устгаж чадсангүй %1.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation>Falha ao exportar chave pública de acesso de %1 para %2.</translation>
+        <translation>Нийтийн нэвтрэх түлхүүр гаргах үеийн алдаа аас %1 руу %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation>Chaves de acesso foram criadas e escritas com sucesso para %1 e %2.</translation>
+        <translation>Нэвтрэх түлхүүр амжилттай үүсэж, бичигдлээ -нд %1 болон %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation>Um erro ocorreu ao criar as chaves de acesso. Você provavalmente não tem permissão para escrever no diretório selecionado.</translation>
+        <translation>Нэвтрэх түлхүүр үүсгэх үед алдаа гарлаа. Магадгүй таны бичихээр сонгосон сан зөвшөөрөгдөөгүй байна.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation>Chave pública importada</translation>
+        <translation>Нийтийн түлхүүр оруулах</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation>Um erro ocorreu ao importa a chave pública de acesso. Você provavelmente não tem permissão para ler a chave de origem ou escrever no arquivo de destino.</translation>
+        <translation>Нэвтрэх түлхүүр оруулах үед алдаа гарлаа. Магадгүй та эх түлхүүрийг унших, эсвэл очих файлыг бичих боломжгүй байна.</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation>A chave pública foi importada com sucesso de %1.</translation>
+        <translation>Нийтийн түлхүүр амжилттай орлоо %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation>bloquear tela</translation>
+        <translation>дэлгэцийг түгжих</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation>Editor de grupo de acesso</translation>
+        <translation>Нэвтрэх группын эрхлэгч</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation>Por favor, adicione os grupos cujos membros devem ser autorizados a acessar os computadores em sua rede iTALC.</translation>
+        <translation>Таны iTALC сүлжээнд хандах эрхтэй компьютеруудын байх ёстой бүлгийг нэмнэ үү.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation>Todos os grupos</translation>
+        <translation>Бүх групп</translation>
     </message>
     <message>
         <source>...</source>
@@ -713,81 +793,93 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation>Grupos com privilégios do iTALC</translation>
+        <translation>iTALC давуу эрхтэй группууд</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation>Ações</translation>
+        <translation>Үйлдлүүд</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation>Geral</translation>
+        <source>MainWindow</source>
+        <translation>Үндсэн Цонх</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation>Sair</translation>
+        <source>toolBar</source>
+        <translation>Багажны хэсэг</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation>Console de gerenciamento do iTALC</translation>
+        <translation>iTALC менежмент консол</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>Ерөнхий</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation>Servidor iTALC</translation>
+        <translation>iTALC Сервер</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation>Caminhos</translation>
+        <translation>Замууд</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation>Autenticação</translation>
+        <translation>Баталгаажуулалт</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>Дибаг хийж байна</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation>Serviço iTALC</translation>
+        <translation>iTALC Сервис</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation>Ocultar ícone da área de notificação</translation>
+        <translation>Тавиурын дүрсийг нуух</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation>Iniciar automaticamente</translation>
+        <translation>Автоматаар эхлэх</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation>Argumentos adicionais</translation>
+        <translation>Нэмэлт өгөгдөлгүйгээр</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation>Iniciar serviço</translation>
+        <translation>Сервисийг эхлүүлэх</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation>Parar serviço</translation>
+        <translation>Сервисийг зогсоох</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation>Estado:</translation>
+        <translation>Төлөв:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation>Parado</translation>
+        <translation>Зогссон</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Дэлгэцийг түгжих шилжүүлэлтийг (туршилт) идэвхжүүлэх</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation>Registrando</translation>
+        <translation>Бүргэж байна</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation>Diretório de arquivo de log</translation>
+        <translation>Нэвтрэх файлын сан</translation>
     </message>
     <message>
         <source>...</source>
@@ -795,203 +887,293 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>Log level</source>
-        <translation>Nível de log</translation>
+        <translation>Нэвтрэх түвшин</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation>Nada</translation>
+        <translation>Идэвхгүй</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation>Somente mensagens críticas</translation>
+        <translation>Зөвхөн чухал мессежүүд</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation>Mensagens críticas e de erros</translation>
+        <translation>Алдаанууд болон чухал мессежүүд</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation>Avisos e erros</translation>
+        <translation>Анхааруулгууд ба алдаанууд</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation>Informações, avisos e erros</translation>
+        <translation>Мэдээллүүд, анхааруулгууд болон алдаанууд</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation>Mensagens de depuração e tudo o mais</translation>
+        <translation>Алдааны репорт болон бүх зүйл</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation>Limite do tamanho do arquivo de log</translation>
+        <translation>Бүртгэлийн файлын хэмжээний хязгаар</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation>MB</translation>
+        <translation>Мб</translation>
+    </message>
+    <message>
+        <source>Log to standard error output</source>
+        <translation>Нэвтрэх үеийн энгийн алдааны гаралт</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Системийн үйл явцын бүртгэлд бүртгэх нь</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation>Remover todos os arquivos de log</translation>
+        <translation>Бүх бүртгэлийн файлыг устгах</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation>Capturando desktop</translation>
+        <translation>Дэлгэцийг бичих</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation>Habilitar captura de janelas em camadas (semi-transparente)</translation>
+        <translation>Үечилсэн бичилтийг идэвхжүүлэх(хагас-тодорхой)</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Бүтэн дэлгэцээрх санал асуулга(үүнийг идэвхтэйгээр орхих хэрэгтэй)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation>Baixa precisão (modo turbo)</translation>
+        <translation>Бага нарийвчлал (өндөр хурдтай)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation>Demonstrar servidor</translation>
+        <translation>Демо сервер</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>Арын хэсэг</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC тусгал</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>iTALC 1 - демо сервер</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation>Rede</translation>
+        <translation>Сүлжээ</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation>Porta do servidor</translation>
+        <translation>Гол серверийн порт</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation>Demonstrar porta do servidor</translation>
+        <translation>Демо серверийн порт</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation>Habilitar exceção de firewall</translation>
+        <translation>Онцгой хамгаалалтыг идэвхжүүлэх</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>JavaViewer апплетийг хангах HTTP-серверийг идэвхжүүлэх</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>HTTP сервер порт</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Зөвхөн дотоод холболтууддаа зөвшөөрөх</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation>Arquivos de configuração</translation>
+        <translation>Тохируулгын файлууд</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation>Configuração global</translation>
+        <translation>Ерөнхий тохиргоо</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation>Configuração pessoal</translation>
+        <translation>Хувийн тохиргоо</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation>Diretórios de dados</translation>
+        <translation>Өгөгдлийн сангууд</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Түргэн зургууд</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation>Métodos de autenticação</translation>
+        <translation>Нэвтрэх аргууд</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>Түлхүүр файлын баталгаажуулалт</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>ACL-д суурилсан нэвтрэлт баталгаажуулалт</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation>Gerenciamento de chaves de acesso</translation>
+        <translation>Нэвтрэх түлхүүрийн менежмент</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>Нийтийн түлхүүрийг агуулсан сан</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>Хувийн түлхүүрийг агуулсан сан</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>Түлхүүр файлын туслагч ажиллуулах</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation>Configurações de logon</translation>
+        <translation>Нэвтрэх тохиргоо</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation>&Arquivo</translation>
+        <source>Manage permissions</source>
+        <translation>Зөвшөөрлийг удирдах</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation>A&juda</translation>
+        <source>Test</source>
+        <translation>Тест</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation>&Sair</translation>
+        <source>Access confirmation</source>
+        <translation>Хандалтын баталгаажуулалт</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation>Ctrl+Q</translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>Та зарим нэг таних аргыг ашиглан үед уг дэлгэцэнд хандахын тулд хэрэглэгчийн зөвшөөрлийг асууж iTALC-д тохируулж болно.</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation>&Salvar configurações em arquivo</translation>
+        <source>Logon authentication</source>
+        <translation>Нэвтрэлт танилт</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation>Salvar configurações em arquivo</translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Ижил хэрэглэгчидийг зөвшөөрөлгүйгээр хандахыг зөвшөөрөх</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation>Ctrl+S</translation>
+        <source>Debugging iTALC</source>
+        <translation>iTALC дибаг хийх</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation>Carregar c&onfigurações do arquivo</translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>iTALC дээрх алдаануудыг болон бусад алдаа тааралдсан үед алдаанууд нь ирээдүйн хувилбаруудад шийдэж болох тул, тэдний тухай хөгжүүлэгч мэдээлэх нь чухал юм. Энэ хуудас нь өөрийнхөө цуглуулгыг амархан тустай алдааны тайлан гаргах боломжийг олгодог.
+
+Алдаа давтан бол, алхмыг алгасаж 1) - 3).</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation>Ctrl+O</translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>"Ерөнхий" хэсэг дэх бүртгэлийн файлуудыг арилга.</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation>Sobre o QT</translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation>Janela principal</translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>"Ерөнхий" гэсэн хэсэгт нэвтэрч түвшинг нь "Debug мессеж ба бусад бүх зүйл" гэж тогтоосон юм.</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation>toolBar</translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation>Console %1 de Gerenciamento do iTALC</translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Алдаа, эсвэл сахилга батын алдаанд хүргэсэн үйл ажиллагааг давтан хийнэ.</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation>Em execução</translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation>Carregar configurações de um arquivo</translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Дараах товчийг дарж мэдэгдэж байгаа байршилд файлыг хадгал.</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation>Arquivos XML (*.xml)</translation>
+        <source>Generate bug report archive</source>
+        <translation>Алдааны тайланг агуулсан файлыг үүсгэнэ</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation>Salvar configurações para arquivo</translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation>Configurações não salva</translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Руу оч <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC алдаа байршуулагч</a>, шинэ алдаа нээж, та 3) алхамд юу хийснээ тайлбарлах мөн 4) алхамд файл хавсаргасанаа хэлэх.</p>
+<br/>
+<br/>
+Тайлбар: алдаа нь яг тэр үед гол компьютер болон клиент бүр дээр гарсан тохиолдолд аль аль нь алдааны тайланг илгээдэг.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation>Existem configurações não salvas. Sair de qualquer maneira?</translation>
+        <source>&File</source>
+        <translation>&Файл</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation>Configuração não gravável</translation>
+        <source>&Help</source>
+        <translation>&Тусламж</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation>O backend de configuração local informou que a configuração não é gravável! Por favor, execute o Console de Gerenciamento do iTALC com privilégios mais elevados.</translation>
+        <source>&Quit</source>
+        <translation>&Гарах</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation>Todas as configurações foram aplicadas com sucesso.</translation>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation>Um erro ocorreu ao aplicar as configurações!</translation>
+        <source>&Save settings into file</source>
+        <translation>&Тохиргоог файлд хадгалах</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Тохиргоог файлд хадгалах</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>Т&охиргоог файлаас унших</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>CTRL+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>iTALC-ын тухай</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>Qt-ын тухай</translation>
     </message>
     <message>
         <source>iTALC</source>
@@ -999,416 +1181,303 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
     </message>
     <message>
         <source>No write access</source>
-        <translation>Sem acesso de escrita</translation>
+        <translation>Бичих эрх байхгүй</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation>Não foi possível ler/gravar ou criar o diretório %1! Para executar iTALC, verifique se você tem permissão de criar ou gravar nesse diretório.</translation>
+        <translation>Санг уншиж/бичиж эсвэл үүсгэж чадсангүй%1! iTALC-ыг ажиллуулахын тулд та  энэ санг үүсгэх эсвэл бичихийг зөвшөөрөгдсөн байгаа эсэхийг шалгаарай.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation>Sala de aula</translation>
+        <translation>Анги</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation>Mudar de sala de aula</translation>
+        <translation>Анги шилжүүлэгч</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation>Clique neste botão para abrir um menu onde você pode escolher a sala de aula ativa.</translation>
+        <translation>Та идэвхтэй анги сонгож болох цэсийг нээж энэ товчин дээр дарна уу.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation>Clique neste botão, para alternar entre as salas de aula.</translation>
+        <translation>Анги танхим хооронд шилжихийн тулд, энэ товч дээр дарна уу.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation>Modo visão geral</translation>
+        <translation>Ерөнхий горим</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ерөнхий</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation>Este é o modo padrão do iTALC e permite que você tenha uma visão geral sobre todos os computadores visíveis. Também clique neste boão para desbloquear os computadores ou para sair do modo de demonstração (demo).</translation>
+        <translation>Энэ нь iTALC дахь анхдагч горим юм. Танд бүх боломжит компьютеруудыг еренхийд нь харах боломжийг олгодог.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Бүтэн дэлгэцийн үзүүлэн</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation>Demonstração em tela cheia</translation>
+        <translation>Бүтэн дэлгэцийн Үзүүлэн</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation>Parar demonstração</translation>
+        <translation>Үзүүлэнг зогсоох</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation>Neste modo, a sua tela será exibida em todos os computadores. Além disso, os usuários não serão capazes de fazer outra coisa, pois todos os dispositivos de entrada (teclados e mouses) serão bloqueados neste modo.</translation>
+        <translation>Энэ горимд таны дэлгэцийг бүх компьютерт харуулна. Түүнчлэн энэ горимд түгжигдсэн хэрэглэгчид ямар нэг үйлдэл хийх боломжгүй.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Цонхны үзүүлэн</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation>Demonstração em janela</translation>
+        <translation>Цонхны Үзүүлэн</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation>Neste modo, a sua tela será exibida em uma janela em todos os computadores. Os usuários serão capazes de alternar para outras janelas e assim podem continuar a trabalhar.</translation>
+        <translation>Энэ горимд таны дэлгэц бүх компьютерууд дээр цонхонд харуулна.Хэрэглэгчид цонхыг өөрчилж ажлаа үогэлжлүүлж болно.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation>Bloquear/desbloquear os desktops</translation>
+        <translation>Компьютеруудыг түгжих/түгжээг гаргах</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation>Bloquear todos</translation>
+        <translation>Бүгдийг түгжих</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation>Desbloquear todos</translation>
+        <translation>Бүгдийн түгжээг гаргах</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation>Para ter a atenção de todos os usuários, você pode bloquear seus desktops usando este botão. Neste modo, todos os dispositivos de entrada (teclados e mouses) serão bloqueados e a tela ficará preta.</translation>
+        <translation>Бүх хэрэглэгчийн анхаарлыг бүрэн татаж байхын тулд та энэ товчийг ашиглан өөрийн ширээний програмуудыг түгжих болно. Энэ горимд бүх оролтын төхөөрөмжүүд нь цоожтой байдаг бөгөөд дэлгэц нь хар юм.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Текст мессеж илгээх</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation>Mensagen de texto</translation>
+        <translation>Текст мессеж</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation>Use este botão para enviar uma mensagem de texto para todos os usuários, por exemplo, para comunicar a nova tarefa etc.</translation>
+        <translation>Энэ товчлуураар бүх хэрэглэгчдэд текст мессеж явуулахад хэрэглэнэ. Жишээлбэл шинэ даалгавар өгөх гэх мэт.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation>Ligar computadores</translation>
+        <translation>Компьютеруудыг асаах</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Асаах</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation>Clique neste botão para ligar todos os computadores visíveis. Desta forma, você não tem que ligar cada computador manualmente.</translation>
+        <translation>Энэ товчлуураар боломжит бүх копьютеруудыг асаана. Энэ байхгүй бол бүгдийг гараар асаана.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation>Desligar computadores</translation>
+        <translation>Компьютеруудыг унтраах</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Унтраах</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation>Para desligar todos os computadores visíveis (por exemplo, depois que terminou a aula), você pode clicar neste botão.</translation>
+        <translation>Энэ товчлуураар бүх харагдаж буй компютеруудыг унтраана.(жишээ нь: хичээл дууссаны дараа).</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Дэмжих</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation>Ajuda direta</translation>
+        <translation>Шууд туслах</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation>Se você precisa ajudar alguém em um determinado computador, clique neste botão e digite o nome ou o endereço IP do seu computador.</translation>
+        <translation>Хэрэв та тодорхой нэг компьютер дээр хэн нэгнийг дэмжих хэрэгтэй бол та энэ товчийг дарж, дараа нь хостын IP-г оруулж болно.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation>Ajustar/alinhar</translation>
+        <translation>Тохируулах/уялдуулах</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation>Ajustar janelas e seus tamanhos</translation>
+        <translation>Цонх, тэдгээрийн хэмжээг тохируулах</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation>Ao clicar neste botão, o maior tamanho possível para as janelas do cliente será ajustada. Além disso, todas as janelas serão alinhadas.</translation>
+        <translation>Энэ товчлуурыг дарахад клиент-цонхонд боломжит хамгийн томоор харагана.  Түүнчлэн бүх цонх нь нийцнэ.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation>Visualizar automaticamente</translation>
+        <translation>Автоматаар харах</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation>Rearranjar automaticamente o tamanho da janela</translation>
+        <translation>Автоматаар цонхнуудын хэмжээг дахин тохируулна</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation>Ao clicar neste botão, todos as janelas visíveis serão rearranjadas e ajustadas.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation>Controle Mestre Do iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation>Não foi possível modificar a propriedade iniciar automaticamente para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation>Não foi possível modificar os argumentos do serviço para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation>Não foi possível alterar a configuração do firewall para o Serviço iTALC.</translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation>Depuração</translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation>Habilitar alternando desktop para bloquear tela (experimental)</translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation>Log para a saída de erro padrão</translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation>Log para registro de eventos de Janelas</translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation>Backend</translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation>Refletor VNC</translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation>Servidor de demonstração iTALC</translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation>Multithreading (pode ser habilitado ao usar o backend refletor VNC)</translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation>Habilitar servidor HTTP que fornece um applet JavaViewer</translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation>Porta do servidor HTTP</translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation>Permitir conexões de localhost apenas</translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation>Autenticação de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation>Autenticação de logon baseado em ACL</translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation>Diretório base do arquivo de chave pública</translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation>Diretório base do arquivo de chave privada</translation>
-    </message>
-    <message>
-        <source>Launch key file assistant</source>
-        <translation>Lançar assistente de arquivo de chave</translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation>Gerenciar permissões</translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation>Teste</translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation>Confirmação de acesso</translation>
+        <translation>Энэ товчлуурыг дарахад боломжит бүх цонхнуудын хэмжээг дахин автоматаар тохируулна.</translation>
     </message>
     <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation>Você pode configurar iTALC para pedir a permissão do usuário para acessar o desktop ao usar determinados métodos de autenticação.</translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation>Autenticação de logon</translation>
+        <source>Could not contact iTALC service</source>
+        <translation>iTALC сервист холбогдож чадсангүй</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation>Permitir que o mesmo usuário acesse o desktop sem confirmação</translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>iTALC сервист холбогдож чадсангүй. Энэ бол буруу итгэмжлэлүүдийг эсвэл түлхүүр файлуудыг зөв тохируулж оруулаагүй байж болох юм.Дахин оролдоно уу эсвэл iTALC менежмент консолыг ашиглан энэ асуудлыг шийдвэрлэх таны администраторт хандана уу.</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation>Depurando iTALC</translation>
+        <source>iTALC Master Control</source>
+        <translation>iTALC мастер хяналт</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation>Ao encontrar falhas ou outro mau comportamento em iTALC é importante informar os desenvolvedores sobre eles, de modo que as falhas possam ser corrigidas em versões futuras. Esta página permite que você envie um relatório de falha útil facilmente.
-
-Se a falha não é reproduzível, pule o passo1) - 3).</translation>
+        <source>Authentication impossible</source>
+        <translation>Өөрийгөө таниулан нэвтэрч чадахгүй байна</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation>1)</translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>Ямар нэг нэвтрэлт танилтын түлхүүр файлууд олдсонгүй. Эсвэл таны одоогийнх хоцрогдсон байна. ITALC менежмент консолыг ашиглан шинэ түлхүүр файлуудыг үүсгэнэ үү. Өөрөөр iTALC менежмент консолыг ашиглан нэвтрэлтийг тохируулна уу. Үгүй бол та iTALC ашиглан компьютерт хандаж чадахгүй байх болно.</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation>Limpar os arquivos de log na seção "Geral".</translation>
+        <source>Remote control</source>
+        <translation>Алсын хяналт</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation>2)</translation>
+        <source>Quit</source>
+        <translation>Гарах</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation>Na seção "Geral" defina o nível do log para "Mensagens de depuração e tudo mais".</translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>iTALC сервис дээрх автоматаар эхлэхийг өөрчилж чадахгүй байна.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation>3)</translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>iTALC сервис дээрх нэмэлт өгөгдлүүдийг өөрчилж чадахгүй байна.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation>Repita as ações que conduzem ao erro ou mau comportamento.</translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>ITALC сервисийн хувьд галт ханын тохиргоог өөрчилж чадахгүй байна.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation>4)</translation>
+        <source>Configuration not writable</source>
+        <translation>Тохиргоо бичигдэх боломжгүй</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation>Clique no botão abaixo e salve o arquivo em um local conhecido.</translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>Локал тохиргооны арын хэсгийн тохиргооны бичигдэх боломжтой биш юм гэж хариулжээ! Илүү өндөр давуу эрх бүхий iTALC менежментийн консолыг ажиллуулна уу.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation>Gerar arquivo de relatório de falha</translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Бүх тохиргоог амжилттай хэрэглэж байна.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation>5)</translation>
+        <source>An error occured while applying settings!</source>
+        <translation>Тохиргоог хэрэгжүүлэх үед алдаа гарлаа!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation>Ir para o <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, abra um novo bug, descrever o que você fez no passo 3) e anexe o arquivo que você salvou no passo 4).</p>
-<br/>
-<br/>
-Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivos de relatório de erro para ambos os computadores.</translation>
+        <source>iTALC Management Console %1</source>
+        <translation>iTALC менежментийн консол %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation>Reiniciar Servidor iTALC</translation>
+        <translation>iTALC сервисийг дахин эхлүүлэх</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation>Todas as configurações foram salvas com sucesso. A fim de ter efeito, o serviço iTALC precisa ser reiniciado. Reiniciá-lo agora?</translation>
+        <translation>Бүх тохиргоог амжилттай хадгалагдсан байна. Тэднийг хүчин төгөлдөр тулд, та iTALC сервисийг дахин эхлүүлэх хэрэгтэй. Одоо түүнийг дахин эхлүүлэх үү?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation>Iniciando serviço iTALC</translation>
+        <translation>iTALC сервисийг эхлүүлж байна</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation>Parando serviço iTALC</translation>
+        <translation>iTALC сервисийг зогсоож байна</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>Ажиллуулах</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation>O serviço iTALC precisa ser parado temporariamente, a fim de remover os arquivos de log. Continuar?</translation>
+        <translation>ITALC сервисийг бүртгэлийн файлуудыг устгах зорилгоор түр хугацаагаар зогсоох шаардлагатай байна. Үргэлжлүүлэх үү?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation>Arquivos de log limpos</translation>
+        <translation>Нэвтрэх файлууд устгагдсан</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation>Todos os arquivos de log foram limpos com sucesso.</translation>
+        <translation>Бүх нэвтрэх файлууд амжилттай устгагдлаа.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation>Erro</translation>
+        <translation>Алдаа</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation>Não foi possível remover todos os arquivos de log.</translation>
+        <translation>Бүх бүртгэлийн файлуудыг устгаж чадсангүй.</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>Тохиргоог файлаас унших</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>XML файлууд (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Тохиргоог файлд хадгалах</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation>Teste de autenticação de logon</translation>
+        <translation>Нэврэлтийг баталгаажуулах тест</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation>A autenticação com credenciais fornecidas foi bem sucedida.</translation>
+        <translation>Нэврэлтийг баталгаажуулах тест амжилттай.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation>A autenticação com credenciais fornecidas falhou!</translation>
+        <translation>Нэврэлтийг баталгаажуулах тест амжилтгүй!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation>Salvar arquivo de relatório de bug</translation>
+        <translation>Алдааны архивыг хадгалах</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation>Arquivo de relatório de bug iTALC (*.ibra.xml)</translation>
+        <translation>iTALC алдааны архив (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation>Arquivo de relatório de bug iTALC salvo</translation>
+        <translation>iTALC алдааны архив хадгалагдлаа</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation>Um arquivo de relatório de bug do iTALC foi salvo em %1.Ele inclui arquivos de log do iTALC e informações sobre seu sistema operacional. Você pode atachá-lo a um relatório de bug.</translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation>Não foi possível contactar o serviço iTALC</translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation>Não foi possível contactar o serviço local iTALC. É provável que você inseriu as credenciais erradas ou arquivos de chaves não estão configurados corretamente. Tente novamente ou contate o administrador para resolver esse problema usando o Console De Gerenciamento Do iTALC. </translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation>Autenticação impossível</translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation>Nenhum arquivos de chave de autenticação foram encontrados ou seus atuais estão desatualizados. Por favor, crie novos arquivos de chave usando o Console De Gerenciamento Do iTALC. Alternativamente, configure a autenticação do usuário no Console De Gerenciamento Do iTALC. Caso contrário, você não será capaz de acessar computadores usando o iTALC.</translation>
+        <translation>iTALC алдааны архив хадгалагдаж байна %1. Энд таны үйлдлийн системийн тухай файл, бүртгэлийн мэдээлэл орно. Та үүнийг хавсаргаж болно.</translation>
     </message>
     <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Хадгалагдаагүй тохиргоо</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation>Mensagem do professor</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Тохиргоо хадгалагдаагүй байна. Шууд гарах уу?</translation>
     </message>
 </context>
 <context>
@@ -1416,239 +1485,239 @@ Nota: se o erro envolve ambos os computadores mestre e cliente, anexe os arquivo
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Bem vindo ao iTALC</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">iTALC-д тавтай морилно уу!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation>Aqui, você vê a barra de ferramentas que contém vários botões. Cada botão está conectado a um espaço de trabalho. Para dar uma olhada nos espaços de trabalho disponíveis, basta clicar no botão correspondente.</translation>
+        <translation>Энд та хэд хэдэн товчлууртай ажлын талбарыг харж болно. Бүх товчлуурууд ажлын талбартай холбогдсон байна. Ердөө л харгалзах товчийг дарж байгаа ажлын талбарыг үзнэ үү.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation>Usando o gerenciador de salas de aula, você pode gerenciar suas salas de aula e computadores. Você também pode ver qual usuário está logado.</translation>
+        <translation>Ангийн-удирдлагаыг та өөрийн ангиуд болон компьютеруудыг удирдахад хэрэглэнэ. Мөн та нэвтэрсэн хэрэглэчдийг харж чадна.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation>A captura do espaço de trabalho é uma ferramenta muito útil. Ela permite que você gerencie as capturas que você fez.</translation>
+        <translation>Түргэн зурагийн хэсэг бол үнэхээр хэрэгцээтэй хэсэг юм. Та өөрийн дарсан зурагуудаа зохицуулж болно.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation>Claro que você pode configurar o iTALC. Isso geralmente é feito usando a configuração do espaço de trabalho.</translation>
+        <translation>Мэдээж та iTALC-ыг тохируулж болно.Тохиргоо талбарт та бүх тохиргоо хийж болно.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation>Sobre iTALC</translation>
+        <translation>iTALC-ын тухай</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ерөнхий</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation>Algumas informações básicas sobre iTALC e como usá-lo.</translation>
+        <translation>iTALC дээрх зарим энгийн мэдээлэл болон үүнийг хэрхэн ашиглах тухай.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>iTALC-д нэвтрэх</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation>Por favor, digite seu nome de usuário e senha para acessar os clientes iTALC.</translation>
+        <translation>iTALC клиентүүдэд нэвтрэх хэрэглэгчийн нэр болон нууц үгээ оруулна уу.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Хэрэглэгчийн нэр</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation>Acessar iTALC</translation>
+        <translation>Нууц үг</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Удирдах</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
-        <translation>Cliente iTALC %1 no %2:%3</translation>
+        <translation>iTALC клиент %1 дээрх %2:%3</translation>
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation>Não foi possível registrar o serviço  '%1'.</translation>
+        <translation>Сервист бүртгүүлэх боломжгүй '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>Сервис удирлагын менежер холбогдсонгүй(танд шаардлагатай эрх байгаа юу?!) - сервис '%1' бүргэгдээгүй.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation>O serviço '%1' já está registrado.</translation>
+        <translation>Сервис '%1' аль хэдийн бүртгэгдсэн.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation>O serviço '%1' não pode se registrado.</translation>
+        <translation>Сервис '%1' бүртгүүлж чадахгүй байна.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation>O serviço '%1' foi registrado com sucesso.</translation>
+        <translation>Сервис '%1' амжилттай бүртгэгдсэн.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation>O serviço '%1' não pode ser parado.</translation>
+        <translation>Сервисийг '%1' зогсоож чадахгүй байна.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation>O serviço '%1' tem sido registrado.</translation>
+        <translation>Сервис '%1' бүртгэлгүй байна.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation>O serviço '%1' não tem sido registrado e por isso não pode ser registrado.</translation>
+        <translation>Сервис '%1'бүртгэлгүй, тиймийн тул үүнийг цуцлах боломжгүй.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation>O serviço '%1' não pode ser registrado.</translation>
+        <translation>Сервисийн '%1' бүртгэлийг цуцалж чадахгүй байна.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation>O serviço '%1' não pode ser encontrado.</translation>
+        <translation>Сервис '%1' олдохгүй байна.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi registrado.</translation>
+        <translation>Сервис удирлагын менежер холбогдсонгүй(танд шаардлагатай эрх байгаа юу?!)  - сервисийн '%1' бүртгэлийг цуцлагдсангүй.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>O Gerenciador de Controle de Servicos não pode ser contatado (você tem os direitos necessários?!) - o serviço '%1' não foi parado.</translation>
+        <translation>Сервис удирлагын менежер холбогдсонгүй(танд шаардлагатай эрх байгаа юу?!)  - сервисийг '%1' зогсоож чадсангүй.</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation>Ver ao vivo (%1 @ %2)</translation>
+        <translation>Шууд харах (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation>Controlar remotamente (%1 @ %2)</translation>
+        <translation>Алсын удирдлага (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation>usuário desconhecido</translation>
+        <translation>үл мэдэгдэх хэрэглэгч</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation>Visualizar somente</translation>
+        <translation>Зөвхөн харах</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Алсын удирдлага</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation>Bloquear aluno</translation>
+        <translation>Сурагчийг түгжих</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation>Desbloquear aluno</translation>
+        <translation>Сурагчийн түгжээг гаргах</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Түргэн зураг</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation>Tela cheia</translation>
+        <translation>Бүтэн дэлгэц</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation>Janela</translation>
+        <translation>Цонх</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation>Sair</translation>
+        <translation>Гарах</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation>Conectando %1</translation>
+        <translation>Холбогдож байна %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation>Conectado.</translation>
+        <translation>Холбогдсон.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation>Acessar remotamente</translation>
+        <translation>Шууд бусаар нэвтрэх</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation>Use os campos abaixo para digitar o nome de usuário, senha e nome de domínio opcional. Estas informações serão usadas para fazer acessar o(s) computador(es).</translation>
+        <translation>Энэ хэсэгт хэрэглэгчийн нэр, нууц үг болон домайн нэрийг оруулна. Эдгээр мэдээлэлүүд нь системд нэвтрэхэд хэрэглэгдэнэ.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation>Nome de usuário</translation>
+        <translation>Хэрэглэгчийн нэр</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation>Senha</translation>
+        <translation>Нууц үг</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation>Domínio</translation>
+        <translation>Домайн</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Командуудыг ажиллуулах</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation>Por favor, digite os comandos para executar no(s) cliente(s) selecionado(s). Você pode separar vários comandos por linha.</translation>
+        <translation>Сонгогдсон клиент(үүд)эд ажиллуулах командуудыг оруулна уу. Та дараалласан олон командуудыг тус тусад нь ажиллуулж болно.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation>desconhecido</translation>
+        <translation>үл мэдэгдэх</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation>Não foi possível tirar uma captura. O diretório %1 não existe ou não pode ser criado.</translation>
+        <translation>Түргэн зураг авч чадсангүй.%1 Учир нь хадгалах хавтас байхгүй эсвэл үүсгэж чадсангүй.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation>Captura</translation>
+        <translation>Түргэн зураг</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation>Capturas</translation>
+        <translation>Түргэн зургууд</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation>Simplesmente gerencie as capturas que você fez usando este espaço de trabalho.</translation>
+        <translation>Энэ хэсэгт та түргэн зургуудыг хялбархан удирдаж болно.</translation>
     </message>
 </context>
 <context>
@@ -1656,124 +1725,124 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Todas as capturas que você fez, estão listadas aqui. Você pode fazer capturas selecionando a referente opção no menu de contexto (botão direito do mouse) de uma janela cliente. Estas capturas podem ser gerenciadas usando os botões abaixo.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Энд таны авсан бүх дэлгэцийн агшинууд байна. Клиент цонхны дэд цэсний сонголтуудаар дэлгэцийн агшин авч болох юм. Эдгээрийг хулганы даралтаар зохицуулж болно.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation>Usuário:</translation>
+        <translation>Хэрэглэгч:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation>Computador:</translation>
+        <translation>Хост:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation>Data:</translation>
+        <translation>Огноо:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation>Hora:</translation>
+        <translation>Хугацаа:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation>Mostrar</translation>
+        <translation>Харах</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation>Excluir</translation>
+        <translation>Устгах</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation>Ajuda</translation>
+        <translation>Дэмжих, туслах</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation>Por favor, digite o endereço IP ou nome do computador para o qual você deseja se conectar.</translation>
+        <translation>Холбогдох гэж буй хостын нэр эсвэл IP хаягийг оруулна уу.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Текст мессеж илгээх</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation>Use o campo abaixo para digitar sua mensagem que será enviada para todos os usuários selecionados.</translation>
+        <translation>Доорх талбарт бүх сонгогдсон хэрэглэгчдэд илгээх мессежээ бичнэ.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation>Estabelecendo conexão para %1 ...</translation>
+        <translation>Үүлчилгээг бүртгүүлэх боломжгүй %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation>Visão geral</translation>
+        <translation>Ерөнхий</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation>Demonstrar em tela cheia</translation>
+        <translation>Бүтэн дэлгэцээр харуулах</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation>Demonstrar em uma janela</translation>
+        <translation>Дэлгэцээ харуулах</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation>Bloquear tela</translation>
+        <translation>Дэлгэц түгжигдсэн</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation>Ver ao vivo</translation>
+        <translation>Шууд харах</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation>Controlar remotamente</translation>
+        <translation>Алсын удирдлага</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation>Deixar o aluno exibir uma demonstração</translation>
+        <translation>Сурагчид жишээг үзүүлэх</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation>Enviar mensagem de texto</translation>
+        <translation>Текст мессеж явуулах</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation>Fazer logoff do usuário</translation>
+        <translation>Хэрэглэгчийг гаргах</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation>Capturar uma tela</translation>
+        <translation>Түргэн зураг дарах</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation>Ligar</translation>
+        <translation>Асаах</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation>Reiniciar</translation>
+        <translation>Дахин ачааллах</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation>Desligar</translation>
+        <translation>Унтраах</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation>Executar comandos</translation>
+        <translation>Командуудыг гүйцэтгэх</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/nl.qm b/lib/resources/nl.qm
deleted file mode 100644
index be651ee..0000000
--- a/lib/resources/nl.qm
+++ /dev/null
@@ -1 +0,0 @@
-<�d��!
�`���
\ No newline at end of file
diff --git a/lib/resources/nl.ts b/lib/resources/nl.ts
index d0c0fec..17cdf5d 100644
--- a/lib/resources/nl.ts
+++ b/lib/resources/nl.ts
@@ -1,27 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1" language="nl_NL">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>Over iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished"></translation>
+        <translation>Over</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished"></translation>
+        <translation>Auteurs</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished"></translation>
+        <translation>Vertaling</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
@@ -31,12 +31,12 @@ If you're interested in translating iTALC into your local or another langua
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished"></translation>
+        <translation>Licentie</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -44,396 +44,507 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
     <name>AccessDialogSlave</name>
     <message>
         <source>Never for this session</source>
-        <translation type="unfinished"></translation>
+        <translation>Nooit voor deze sessie</translation>
     </message>
     <message>
         <source>Always for this session</source>
-        <translation type="unfinished"></translation>
+        <translation>Altijd voor deze sessie</translation>
     </message>
     <message>
         <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <translation>Bevestig bureaublad toegang</translation>
     </message>
     <message>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <translation>De gebruiker %1 op host %2 wil toegang tot uw bureaublad. Wilt u toegang verlenen?</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokaal-Manager</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik deze werkruimte om uw computers en klaslokalen te beheren op een eenvoudige manier.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished"></translation>
+        <translation>Dit is waar computers en klaslokalen worden beheerd. U kunt computers of klaslokalen toevoegen door rechts in deze lijst te klikken.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokalen/computers</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished"></translation>
+        <translation>IP-adres</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruikersnamen</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>Toon gebruikersnamen</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik het context-menu (rechter muisknop) om de computers en/of klaslokalen toevoegen/verwijderen.</translation>
     </message>
     <message>
         <source>Export to text-file</source>
-        <translation type="unfinished"></translation>
+        <translation>Exporteren naar tekst-bestand</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik deze knop voor het exporteren van deze lijst met computers en gebruikersnamen in een text-bestand. U kunt dit bestand later gebruiken voor het verzamelen van bestanden na een examen voltooid is. Dit is soms nodig, omdat sommige gebruikers eerder zijn afgerond en uitgelogd hebben en dus kun je hun bestanden niet verzamelen aan het einde van het examen.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Verberg leraar computers</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished"></translation>
+        <translation>Toon/Verberg</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Instellingen bewerken</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished"></translation>
+        <translation>Verwijderen</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Laat alle computers in het klaslokaal zien</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Verberg alle computers in het klaslokaal</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished"></translation>
+        <translation>Naam bewerken</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Verwijder klaslokaal</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished"></translation>
+        <translation>Computer toevoegen</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokaal toevoegen</translation>
     </message>
     <message>
         <source>No configuration-file found</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen configuratie-bestand gevonden</translation>
     </message>
     <message>
         <source>Could not open configuration file %1.
 You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kon het configuratiebestand %1 niet openen.
+Je moet ten minste één klas en computers toevoegen met het klaslokaal-manager die je vindt binnen het programma in de navigatiekolom aan de linkerkant.</translation>
     </message>
     <message>
         <source>Error in configuration-file</source>
-        <translation type="unfinished"></translation>
+        <translation>Fout in het configuratie-bestand</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fout bij het ontleden van het configuratie-bestand %1.
+Gelieve te bewerken. Anders moet je dit bestand verwijderen en moeten alle klaslokalen en computers opnieuw worden toegevoegd.</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fout bij het ontleden van het configuratie-bestand %1.
+Gelieve te bewerken. Anders moet je dit bestand verwijderen.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer het output-bestand</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished"></translation>
+        <translation>Tekstbestanden (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished"></translation>
+        <translation>Acties voor geselecteerde</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished"></translation>
+        <translation>Acties</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Acties voor %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Nieuwe naam voor klaslokaal</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished"></translation>
+        <translation>Voer een nieuwe naam in voor klaslokaal "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je klaslokaal "%1" wilt verwijderen?
+Alle computers daar in zullen ook worden verwijderd!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Ontbrekend klaslokaal</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished"></translation>
+        <translation>Voor het toevoegen van computers moet je minstens één klaslokaal maken.
+Wilt u nu een nieuw klaslokaal maken?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Nieuw klaslokaal</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vul de naam van de klas die u wilt maken hier in.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished"></translation>
+        <translation>Onbekende status</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen gebruiker ingelogd</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished"></translation>
+        <translation>Host onbereikbaar</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo lopend</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished"></translation>
+        <translation>Bureaublad vergrendeld</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
-        <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished"></translation>
+        <source>Are you sure want logout all users on all visible computers?</source>
+        <translation>Weet je zeker dat je alle gebruikers uit wilt loggen op alle zichtbare computers?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je alle gebruikers uit wilt loggen op alle geselecteerde computers ?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruiker afmelden</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je alle zichtbare computers wilt herstarten?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je alle geselecteerde computers wilt herstarten?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Computers herstarten</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je alle zichtbare computers af wilt sluiten?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet je zeker dat je alle geselecteerde computers af wilt sluiten?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
         <source>Invalid MAC-address</source>
-        <translation type="unfinished"></translation>
+        <translation>Ongeldig MAC-adres</translation>
     </message>
     <message>
         <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished"></translation>
+        <translation>U heeft een ongeldig MAC-adres opgegeven. Laat het veld leeg of voer een geldig MAC-adres in (gebruik ":" als afscheider!).</translation>
     </message>
     <message>
         <source>Client settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Client instellingen</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>IP/hostnaam</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">voer een IP-adres of hostnaam in waaronder iTALC de client kan bereiken (gebruik &apo [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Naam</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optionele bijnaam van de host die wordt weergegeven in iTALC.</p></body>& [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>MAC adres</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-adres van de client - alleen gebruikt voor het aanzetten de client</p [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokaal</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished"></translation>
+        <translation>Type</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished"></translation>
+        <translation>Leerling Computer</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished"></translation>
+        <translation>Leraar computer</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished"></translation>
+        <translation>Overig/ongedefinieerde computer</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>Ontbreekt IP adres/hostnaam</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation>Je hebt het IP adres of de hostnaam voor deze computer niet opgegeven!</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished"></translation>
+        <translation>Interval tussen updates</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier kunt u het interval tussen de updates van de cliënten instellen. Hogere waarden  [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished"></translation>
+        <translation> seconden</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruikersomgeving</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Laat geen ballon-tooltip voor toolbar-knoppen zien</p></body></html&gt [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Selecteer deze optie als je geïrriteerd bent door de ballon-tooltips die verschijnen  [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen ballon-tooltips</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Laat geen tekst op werkbalk-knoppen zien</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen teksten in de werkbalk-knoppen</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished"></translation>
+        <translation>Jouw rol (moet volgens sleutels!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier kunt u uw rol selecteren. Verander dit alleen als je weet wat je doet. Anders zal je niet in staat zijn om toegang te krijgen tot computers totdat je je oude rol hersteld.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Leraar</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished"></translation>
+        <translation>Beheerder</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished"></translation>
+        <translation>Supporter</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished"></translation>
+        <translation>Overig</translation>
     </message>
     <message>
         <source>Settings for multi-logon</source>
-        <translation type="unfinished"></translation>
+        <translation>Instellingen voor multi-login</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domein</translation>
     </message>
     <message>
         <source>Double-click action for client-window</source>
-        <translation type="unfinished"></translation>
+        <translation>Dubbelklik actie voor client-venster</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier kunt u instellen wat er gebeurt als u dubbelklikt op een client-venster.</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation>Remote Control</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished"></translation>
+        <translation>Volledig scherm live bekijken</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Houd er rekening mee [...]
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Taal</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Systeem standaard</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -441,70 +552,70 @@ p, li { white-space: pre-wrap; }
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Uw iTALC-configuratie</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished"></translation>
+        <translation>In deze werkruimte kunt u iTALC aanpassen aan uw behoeften.</translation>
     </message>
 </context>
 <context>
     <name>DecoratedMessageBox</name>
     <message>
         <source>OK</source>
-        <translation type="unfinished"></translation>
+        <translation>OK</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Demo</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished"></translation>
+        <translation>Authenticatie fout</translation>
     </message>
     <message>
         <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished"></translation>
+        <translation>Iemand (IP: %1) probeerde toegang te krijgen tot deze computer, maar kon zich niet met succes authenticeren!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC authenticatie mislukt als gevolg van te veel authenticatie pogingen.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC-authenticatie is mislukt.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC-server gesloten verbinding.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Toegangs Sleutel Assistent</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Maak/importeer iTALC toegangssleutels</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation type="unfinished"></translation>
+        <translation>Deze assistent zal u helpen bij het maken of importeren van iTALC toegangssleutels.</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation type="unfinished"></translation>
+        <translation>Hoe werkt het?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -512,879 +623,887 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC toegangssleutels bestaan uit twee delen die bij elkaar horen, een private en een publieke sleutel deel.
+
+Met behulp van de private key deel, zullen de gebruikers op de master-computer toegang krijgen tot client-computers. Het is van belang dat alleen geautoriseerde gebruikers toegang hebben tot het private sleutel-bestand.
+
+De publieke sleutel deel wordt gebruikt op de clientcomputers te controleren of een binnenkomende verbindingsaanvraag wordt geautoriseerd.</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Assistent modus</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kies of u een nieuwe toegangssleutels wilt maken of het importeren van een publieke sleutel op een client.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Nieuwe toegangssleutels maken (master computer)</translation>
     </message>
     <message>
         <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
+        <translation>AssistentModusKnoppenGroep</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Importeer publieke sleutel (client computer)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer gebruikers rol</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer een gebruikersrol waarvoor u de toegangssleutels wilt maken of importeren:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Leraar</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished"></translation>
+        <translation>Beheerder</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation type="unfinished"></translation>
+        <translation>Support team lid</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished"></translation>
+        <translation>Overig</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruikersrollen toestaan met behulp van meerdere toegangssleutels in parallel. Zo kunnen er verschillende leraar sleutels voor elke klas zijn, terwijl de toegang tot support sleutels hetzelfde is voor de hele school.</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation type="unfinished"></translation>
+        <translation>Directories</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>Exporteer het publieke sleutel deel (master computer)</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik aangepaste doelmap voor toegangssleutels</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Geef de locatie van de publieke toegangssleutel waar die moet worden geimporteerd.</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished"></translation>
+        <translation>Overzicht</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation type="unfinished"></translation>
+        <translation>De volgende acties zullen worden genomen:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>• Creëer nieuwe toegangssleutels</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation type="unfinished"></translation>
+        <translation>• Importeer openbare sleutel uit</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation type="unfinished"></translation>
+        <translation><onbekend></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation type="unfinished"></translation>
+        <translation>• Toegangssleutel(s) schrijven naar</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation type="unfinished"></translation>
+        <translation>• Exporteer openbare sleutel aan</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation type="unfinished"></translation>
+        <translation>• configureer voor de gebruikersrol</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer de map waarin u de openbare sleutel wilt exporteren</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation type="unfinished"></translation>
+        <translation>Sleutel bestanden (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished"></translation>
+        <translation>Ongeldig publieke sleutel</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation type="unfinished"></translation>
+        <translation>Het geselecteerde bestand bevat geen geldige publieke iTALC toegangssleutel!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer de doelmap</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation type="unfinished"></translation>
+        <translation>Toegangssleutel creatie</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kon niet het laatst bestaande bestand %1 verwijderen.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Mislukt bij het exporteren van publieke sleutel uit %1 naar 2%.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Toegangssleutels zijn gemaakt en met succes geschreven naar %1 en 2%.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation type="unfinished"></translation>
+        <translation>Er is een fout opgetreden tijdens het maken van de toegang sleutels. Je bent waarschijnlijk niet bevoegd om te schrijven naar de geselecteerde directories.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished"></translation>
+        <translation>Publieke sleutel invoer</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Er is een fout opgetreden tijdens het importeren van de openbare sleutel. Je bent waarschijnlijk niet bevoegd om de bron sleutel te lezen of naar de bestemmings bestand te schrijven.</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>De publieke sleutel is succesvol geïmporteerd naar %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished"></translation>
+        <translation>schermvergrendeling</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Aanmeldt groeps bewerker</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation type="unfinished"></translation>
+        <translation>Voeg de groepen toe waarvan de leden moet worden toegestaan om toegang tot computers in uw iTALC netwerk te krijgen.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation type="unfinished"></translation>
+        <translation>Alle groepen</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation type="unfinished"></translation>
+        <translation>Groepen met iTALC bevoegdheden</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished"></translation>
+        <translation>Acties</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
         <source>General</source>
-        <translation type="unfinished"></translation>
+        <translation>Algemeen</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>Stoppen</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Beheer Console</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Server</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Paden</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Authenticatie</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Service</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation type="unfinished"></translation>
+        <translation>Pictogram in het systeemvak verbergen</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation type="unfinished"></translation>
+        <translation>Automatische start</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation type="unfinished"></translation>
+        <translation>Aanvullende argumenten</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation type="unfinished"></translation>
+        <translation>Start service</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation type="unfinished"></translation>
+        <translation>Stop service</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation type="unfinished"></translation>
+        <translation>Staat:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation type="unfinished"></translation>
+        <translation>Gestopt</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation type="unfinished"></translation>
+        <translation>Loggen</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Log bestands folder</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Log level</source>
-        <translation type="unfinished"></translation>
+        <translation>Log niveau</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation type="unfinished"></translation>
+        <translation>Niets</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Alleen kritieke berichten</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>Fouten en kritieke berichten</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Waarschuwingen en fouten</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>Informatie, waarschuwingen en foutmeldingen</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation type="unfinished"></translation>
+        <translation>Fout opsporings berichten en al het andere</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation type="unfinished"></translation>
+        <translation>Beperk log bestandsgrootte</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished"></translation>
+        <translation>MB</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation type="unfinished"></translation>
+        <translation>Wis alle logbestanden</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation type="unfinished"></translation>
+        <translation>Desktop capturing</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation type="unfinished"></translation>
+        <translation>Inschakelen capturing van gelaagde (semi-transparante) schermen</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished"></translation>
+        <translation>Lage nauwkeurigheid (turbo-modus)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo server</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
+        <translation>Netwerk</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Core server-poort</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation type="unfinished"></translation>
+        <translation>Demo server poort</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation type="unfinished"></translation>
+        <translation>Inschakelen van firewall uitzondering</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuratiebestanden</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Globale configuratie</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>Persoonlijke configuratie</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation type="unfinished"></translation>
+        <translation>De gegevens mappen</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished"></translation>
+        <translation>Momentopnames</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation type="unfinished"></translation>
+        <translation>Verificatiemethoden</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation type="unfinished"></translation>
+        <translation>Toegangs sleutelbeheer</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Aanmeld instellingen</translation>
     </message>
     <message>
         <source>&File</source>
-        <translation type="unfinished"></translation>
+        <translation>&Bestand</translation>
     </message>
     <message>
         <source>&Help</source>
-        <translation type="unfinished"></translation>
+        <translation>&Help</translation>
     </message>
     <message>
         <source>&Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>&Stoppen</translation>
     </message>
     <message>
         <source>Ctrl+Q</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
         <source>&Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <translation>&Instellingen opslaan in bestand</translation>
     </message>
     <message>
         <source>Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <translation>Instellingen opslaan in bestand</translation>
     </message>
     <message>
         <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+S</translation>
     </message>
     <message>
         <source>L&oad settings from file</source>
-        <translation type="unfinished"></translation>
+        <translation>&Laad instellingen uit bestand</translation>
     </message>
     <message>
         <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+O</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>Over iTALC</translation>
     </message>
     <message>
         <source>About Qt</source>
-        <translation type="unfinished"></translation>
+        <translation>Over Qt</translation>
     </message>
     <message>
         <source>MainWindow</source>
-        <translation type="unfinished"></translation>
+        <translation>HoofdScherm</translation>
     </message>
     <message>
         <source>toolBar</source>
-        <translation type="unfinished"></translation>
+        <translation>werkbalk</translation>
     </message>
     <message>
         <source>iTALC Management Console %1</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Console van het Beheer %1</translation>
     </message>
     <message>
         <source>Running</source>
-        <translation type="unfinished"></translation>
+        <translation>Uitvoeren</translation>
     </message>
     <message>
         <source>Load settings from file</source>
-        <translation type="unfinished"></translation>
+        <translation>Instellingen uit bestand laden</translation>
     </message>
     <message>
         <source>XML files (*.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>XML bestanden (*.xml)</translation>
     </message>
     <message>
         <source>Save settings to file</source>
-        <translation type="unfinished"></translation>
+        <translation>Instellingen opslaan naar bestand</translation>
     </message>
     <message>
         <source>Unsaved settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Niet-opgeslagen instellingen</translation>
     </message>
     <message>
         <source>There are unsaved settings. Quit anyway?</source>
-        <translation type="unfinished"></translation>
+        <translation>Er zijn niet-opgeslagen instellingen. Toch stoppen?</translation>
     </message>
     <message>
         <source>Configuration not writable</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuratie niet schrijfbaar</translation>
     </message>
     <message>
         <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation type="unfinished"></translation>
+        <translation>De lokale configuratie back-end meld dat de configuratie niet schrijfbaar is! Voer het iTALC Console van het Beheer met hogere privileges.</translation>
     </message>
     <message>
         <source>All settings were applied successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Alle instellingen werden met succes toegepast.</translation>
     </message>
     <message>
         <source>An error occured while applying settings!</source>
-        <translation type="unfinished"></translation>
+        <translation>Er is een fout opgetreden bij het toepassen van instellingen!</translation>
     </message>
     <message>
         <source>iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC</translation>
     </message>
     <message>
         <source>No write access</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen schrijftoegang</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan niet lezen/schrijven of creëren in folder %1! Voor het draaien van iTALC, zorg ervoor dat je bent toegestaan om te creëren of te schrijven in deze map.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokaal</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation type="unfinished"></translation>
+        <translation>Klaslokaal veranderen</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished"></translation>
+        <translation>Klik op deze knop om een menu te openen waar u de actieve klas kan kiezen.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished"></translation>
+        <translation>Klik op deze knop om te wisselen tussen de klaslokalen.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Overzicht modus</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Overzicht</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished"></translation>
+        <translation>Dit is de standaardmodus in iTALC en kunt u een overzicht van alle zichtbare computers krijgen. Klik ook op deze knop voor het ontgrendelen van vergrendelde werkstations of voor het verlaten van de demo-modus.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Volledig scherm demo</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Volledig scherm Demo</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Stop Demo</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished"></translation>
+        <translation>In deze modus wordt uw scherm weergegeven op alle getoonde computers. Verder zijn de gebruikers niet in staat om iets anders te doen omdat alle input devices gesloten zijn in deze modus.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Scherm demo</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Scherm Demo</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished"></translation>
+        <translation>In deze modus wordt uw scherm weergegeven in een venster op alle getoonde computers. De gebruikers zijn in staat om over te schakelen naar andere vensters en kunnen dus blijven werken.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation type="unfinished"></translation>
+        <translation>Vergrendelen/ontgrendelen bureaubladen</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation type="unfinished"></translation>
+        <translation>Vergrendel alles</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation type="unfinished"></translation>
+        <translation>Ontgrendel alles</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished"></translation>
+        <translation>Als u alle gebruikers volledige aandacht wilt kunt u hun bureaubladen vergrendelen met behulp van deze knop. In deze modus worden alle computers geblokkeerd en het scherm wordt zwart.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished"></translation>
+        <translation>Stuur tekstbericht</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished"></translation>
+        <translation>Tekstbericht</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik deze knop om een tekstbericht naar alle gebruikers te sturen, bijvoorbeeld om hen nieuwe taken te vertellen etc.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Computers inschakelen</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished"></translation>
+        <translation>Inschakelen</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished"></translation>
+        <translation>Klik op deze knop om alle zichtbare computers in te schakelen. Op deze manier hoef je niet elke computer aan te zetten met de hand.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation type="unfinished"></translation>
+        <translation>Computers uitschakelen</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished"></translation>
+        <translation>Uitschakelen</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished"></translation>
+        <translation>Om alle getoonde computers uit te schakelen (bijv. nadat de les klaar is), dan kunt u op deze knop klikken.</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation type="unfinished"></translation>
+        <translation>Ondersteuning</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation type="unfinished"></translation>
+        <translation>Directe ondersteuning</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished"></translation>
+        <translation>Als u iemand moet ondersteunen op een bepaalde computer dan kunt u klikken op deze knop en vervolgens de hostnaam of IP achteraf invoeren.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation type="unfinished"></translation>
+        <translation>Aanpassen/uitlijnen</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas vensters en de grootte aan</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished"></translation>
+        <translation>Bij het klikken op deze knop wordt de grootst mogelijke grote voor de gebruiker scherm aangepast. Verder zijn alle schermen uitgelijnd.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation type="unfinished"></translation>
+        <translation>Automatisch weergeven</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished"></translation>
+        <translation>Automatisch herindelen van vensters en de grootte van</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished"></translation>
+        <translation>Bij het klikken op deze knop alle zichtbare vensters worden herschikt en aangepast.</translation>
     </message>
     <message>
         <source>iTALC Master Control</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Master Control</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation>Remote Control</translation>
     </message>
     <message>
         <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan de autostart niet wijzigen voor de iTALC Dienst.</translation>
     </message>
     <message>
         <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan de dienst argumenten voor de iTALC Dienst niet wijzigen.</translation>
     </message>
     <message>
         <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan de firewall configuratie voor de iTALC Dienst niet veranderen.</translation>
     </message>
     <message>
         <source>Debugging</source>
-        <translation type="unfinished"></translation>
+        <translation>Debugging</translation>
     </message>
     <message>
         <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished"></translation>
+        <translation>Schakel bureaublad wisseling in tijdens scherm vergrendeling (experimenteel)</translation>
     </message>
     <message>
         <source>Log to standard error output</source>
-        <translation type="unfinished"></translation>
+        <translation>Log naar standaard fout uitgang</translation>
     </message>
     <message>
         <source>Log to Windows event log</source>
-        <translation type="unfinished"></translation>
+        <translation>Log naar Windows event log</translation>
     </message>
     <message>
         <source>Backend</source>
-        <translation type="unfinished"></translation>
+        <translation>Back-end</translation>
     </message>
     <message>
         <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC reflector</translation>
     </message>
     <message>
         <source>iTALC 1 demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 1 demo server</translation>
     </message>
     <message>
         <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished"></translation>
+        <translation>Multithreading (kan worden ingeschakeld bij gebruik van de VNC reflector back-end)</translation>
     </message>
     <message>
         <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished"></translation>
+        <translation>HTTP server inschakelen die een JavaViewer applet biedt</translation>
     </message>
     <message>
         <source>HTTP server port</source>
-        <translation type="unfinished"></translation>
+        <translation>HTTP server poort</translation>
     </message>
     <message>
         <source>Allow connections from localhost only</source>
-        <translation type="unfinished"></translation>
+        <translation>Sta alleen verbindingen van localhost toe</translation>
     </message>
     <message>
         <source>Key file authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Sleutel bestand authenticatie</translation>
     </message>
     <message>
         <source>ACL-based logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>ACL-gebaseerd login authenticatie</translation>
     </message>
     <message>
         <source>Public key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Publieke sleutel basis bestands folder</translation>
     </message>
     <message>
         <source>Private key file base directory</source>
-        <translation type="unfinished"></translation>
+        <translation>Privé sleutel basis bestands folder</translation>
     </message>
     <message>
         <source>Launch key file assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>Launch key bestand-assistent</translation>
     </message>
     <message>
         <source>Manage permissions</source>
-        <translation type="unfinished"></translation>
+        <translation>Rechten beheren</translation>
     </message>
     <message>
         <source>Test</source>
-        <translation type="unfinished"></translation>
+        <translation>Test</translation>
     </message>
     <message>
         <source>Access confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation>Toegang bevestiging</translation>
     </message>
     <message>
         <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished"></translation>
+        <translation>U kunt iTALC configureren om de gebruiker te vragen om toestemming voor toegang tot de desktop te krijgen wanneer u bepaalde verificatie methoden gebruikt.</translation>
     </message>
     <message>
         <source>Logon authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Aanmeldingsverificatie</translation>
     </message>
     <message>
         <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished"></translation>
+        <translation>Laat dezelfde gebruiker toegang tot desktop verlenen zonder bevestiging</translation>
     </message>
     <message>
         <source>Debugging iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>Debugging iTALC</translation>
     </message>
     <message>
         <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
 
 If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished"></translation>
+        <translation>Bij het aantreffen van bugs of ander wangedrag in iTALC is het belangrijk om de ontwikkelaars te informeren over dat, zodat de bugs in toekomstige releases kunnen worden opgelost. Deze pagina kunt u een bug report gemakkelijk in dienen.
+Als de bug niet reproduceerbaar is, dan slaat u stap 1) - 3) over.</translation>
     </message>
     <message>
         <source>1)</source>
-        <translation type="unfinished"></translation>
+        <translation>1)</translation>
     </message>
     <message>
         <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished"></translation>
+        <translation>Schakel de logbestanden in de "Algemeen" sectie uit.</translation>
     </message>
     <message>
         <source>2)</source>
-        <translation type="unfinished"></translation>
+        <translation>2)</translation>
     </message>
     <message>
         <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished"></translation>
+        <translation>In de "Algemeen" sectie stel het logniveau in in "Debug berichten en alle andere".</translation>
     </message>
     <message>
         <source>3)</source>
-        <translation type="unfinished"></translation>
+        <translation>3)</translation>
     </message>
     <message>
         <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished"></translation>
+        <translation>Herhaal de acties die leiden tot een bug of wangedrag.</translation>
     </message>
     <message>
         <source>4)</source>
-        <translation type="unfinished"></translation>
+        <translation>4)</translation>
     </message>
     <message>
         <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished"></translation>
+        <translation>Klik op de onderstaande knop en sla het bestand op een bekende locatie op.</translation>
     </message>
     <message>
         <source>Generate bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>Genereer bug report archief</translation>
     </message>
     <message>
         <source>5)</source>
-        <translation type="unfinished"></translation>
+        <translation>5)</translation>
     </message>
     <message>
         <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
 <br/>
 <br/>
 Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ga naar de <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open een nieuwe bug, beschrijf wat je bij stap 3) deed en voeg het opgeslagen bestand toe van stap 4).</p>
+<br/>
+<br/>
+Let op: als de bug zowel een meester en client computer betreft, bevestig bug report archief voor beide computers.</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>Restart iTALC Service</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished"></translation>
+        <translation>Alle instellingen zijn goed opgeslagen. Om de instellingen van kracht te laten worden moet de iTALC dienst opnieuw worden opgestart. Wil je nu herstarten?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC dienst wordt gestart</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Stoppen met iTALC dienst</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>De iTALC service moet tijdelijk worden stopgezet om de logbestanden te verwijderen. Doorgaan?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished"></translation>
+        <translation>Log bestanden gewist</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Alle logbestanden zijn succesvol gewist.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation>Fout</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kon alle log bestanden niet verwijderen.</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished"></translation>
+        <translation>Login authenticatie test</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Authenticatie met ontvangen aanmeldingsgegevens was succesvol.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>Authenticatie met ontvangen aanmeldingsgegevens mislukt!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>Bewaar bug report archief</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC bug report archief (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC bug report archief opgeslagen</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
+        <translation>Een iTALC bug report archief is opgeslagen in %1. Het omvat iTALC log bestanden en informatie over het besturingssysteem. U kunt het koppelen aan een bug report.</translation>
     </message>
     <message>
         <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>Kon geen contact met iTALC dienst maken</translation>
     </message>
     <message>
         <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan geen contact met de lokale iTALC service maken. Het is waarschijnlijk dat u verkeerde aanmeldingsgegevens hebt ingevoerd of sleutel-bestanden zijn niet goed ingesteld. Probeer het opnieuw of neem contact op met uw beheerder voor het oplossen van dit probleem met behulp van de iTALC Management Console.</translation>
     </message>
     <message>
         <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
+        <translation>Authenticatie onmogelijk</translation>
     </message>
     <message>
         <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
+        <translation>Er zijn geen verificatie sleutel bestanden gevonden of uw huidige zijn verouderd. Maak nieuwe sleutel bestanden met de iTALC Management Console. U kunt ook het opzetten van login authenticatie met behulp van de iTALC Management Console. Anders zal je niet in staat zijn om toegang te krijgen tot computers met iTALC.</translation>
     </message>
     <message>
         <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <translation>Start het volledige scherm (laat dit standaard ingeschakeld)</translation>
     </message>
 </context>
 <context>
     <name>MessageBoxSlave</name>
     <message>
         <source>Message from teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Bericht van de leraar</translation>
     </message>
 </context>
 <context>
@@ -1394,234 +1513,237 @@ Note: if the bug involves both a master and client computer, attach bug report a
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welkom bij iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier zie je de werkbalk, die een aantal knoppen bevat. Elke knop is verbonden met een werkomgeving. Neem eens een kijkje bij de beschikbare werkruimtes door te klikken op de bijbehorende knop.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished"></translation>
+        <translation>Met behulp van het klaslokaal-manager kunt u uw klaslokalen en computers beheren. U kunt ook zien welke gebruikers zijn ingelogd.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished"></translation>
+        <translation>Het momentopname-ruimte is een zeer nuttig hulpmiddel. Het laat je de momentopnamen die u hebt gemaakt beheren.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Natuurlijk kunt u iTALC configureren. Dit wordt meestal gedaan met behulp van de configuratie-ruimte.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished"></translation>
+        <translation>Over iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Overzicht</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished"></translation>
+        <translation>Wat basisinformatie over iTALC en hoe je het gebruikt.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vul uw gebruikersnaam en wachtwoord in om toegang te krijgen tot iTALC computers.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruikersnaam</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished"></translation>
+        <translation>Wachtwoord</translation>
     </message>
     <message>
         <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC Login</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Beheren</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC computer %1 op %2:%3</translation>
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation type="unfinished"></translation>
+        <translation>Niet in staat om dienst '%1' te registreren.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De Service Control Manager kon niet worden gecontacteerd (heb je de benodigde rechten?!) - de service '%1' werd niet geregistreerd.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' is al geregistreerd.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' kan niet worden geregistreerd.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' werd met succes geregistreerd.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' kon niet worden gestopt.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' is ongeregistreerd gezet.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' is niet geregistreerd en daarom kan die niet worden ongeregistreerd.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' kon niet ongeregisteerd worden gezet.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation type="unfinished"></translation>
+        <translation>De service '%1' kon niet gevonden worden.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation type="unfinished"></translation>
+        <translation>De Service Control Manager kon niet worden gecontacteerd (heb je de benodigde rechten?!) - de service '%1' werd niet op ongeristreerd gezet.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation type="unfinished"></translation>
+        <translation>De Service Control Manager kon niet worden gecontacteerd (heb je de benodigde rechten?!) - de service '%1' kon niet worden gestopt.</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Bekijk live (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Remote control (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished"></translation>
+        <translation>onbekende gebruiker</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished"></translation>
+        <translation>Alleen bekijken</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation>Remote control</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student vergrendelen</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student ontgrendelen</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished"></translation>
+        <translation>Momentopname</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished"></translation>
+        <translation>Volledig scherm</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished"></translation>
+        <translation>Venster</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>Stoppen</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Aansluiten van %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished"></translation>
+        <translation>Aangesloten.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished"></translation>
+        <translation>Extern inloggen</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik de onderstaande velden om de gebruikersnaam, wachtwoord en de optionele domeinnaam in te voeren. Deze informatie zal worden gebruikt om op de computer(s) in te loggen.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruikersnaam</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished"></translation>
+        <translation>Wachtwoord</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domein</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished"></translation>
+        <translation>Opdrachten uitvoeren</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vul de commando's in om deze uit te voeren op de geselecteerde computers. U kunt meerdere commando's scheiden per regel.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>onbekend</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan geen momentopname maken omdat folder %1 niet bestaat en niet kan worden gemaakt.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished"></translation>
+        <translation>Momentopname</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished"></translation>
+        <translation>Momentopnames</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Eenvoudig beheren van de momentopnamen die u hebt gemaakt met behulp van deze werkruimte.</translation>
     </message>
 </context>
 <context>
@@ -1631,119 +1753,122 @@ p, li { white-space: pre-wrap; }
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alle momentopnamen die u hebt gemaakt worden hier weergegeven. U kunt momentopnamen maken door het selecteren van de volgende vermelding in het context-menu van een client-venster. Deze momentopnamen kunnen worden beheerd met behulp van de onderstaande knoppen.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruiker:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished"></translation>
+        <translation>Host:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished"></translation>
+        <translation>Datum:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tijd:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished"></translation>
+        <translation>Tonen</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Verwijderen</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished"></translation>
+        <translation>Ondersteuning</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vul het IP adres of de naam van de host waarmee u verbinding wilt maken in.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished"></translation>
+        <translation>Stuur tekstbericht</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik de onderstaande veld om uw bericht dat voor alle geselecteerde gebruikers wordt verzonden te typen.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Vaststellen van de verbinding naar %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Overzicht</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Volledige scherm demo</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Venster demo</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished"></translation>
+        <translation>Vergrendeld scherm</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished"></translation>
+        <translation>Bekijk live</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation>Remote control</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished"></translation>
+        <translation>Laat de student demo tonen</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished"></translation>
+        <translation>Stuur tekstbericht</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruiker afmelden</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished"></translation>
+        <translation>Neem een momentopname</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished"></translation>
+        <translation>Inschakelen</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Herstarten</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished"></translation>
+        <translation>Uitschakelen</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished"></translation>
+        <translation>Commando's uitvoeren</translation>
     </message>
 </context>
 </TS>
diff --git a/lib/resources/nn.qm b/lib/resources/nn.qm
deleted file mode 100644
index 65ea34c..0000000
Binary files a/lib/resources/nn.qm and /dev/null differ
diff --git a/lib/resources/nn.ts b/lib/resources/nn.ts
index d3645ad..6459b5d 100644
--- a/lib/resources/nn.ts
+++ b/lib/resources/nn.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="nn">
+<TS version="2.1" language="nn">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Lisens</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -441,6 +441,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">No [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -595,11 +695,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -607,15 +707,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/pl.qm b/lib/resources/pl.qm
deleted file mode 100644
index 3835193..0000000
Binary files a/lib/resources/pl.qm and /dev/null differ
diff --git a/lib/resources/pl.ts b/lib/resources/pl.ts
index 6b22892..b841d33 100644
--- a/lib/resources/pl.ts
+++ b/lib/resources/pl.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="pl_PL">
+<TS version="2.1" language="pl_PL">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Licencja</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -447,6 +447,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Ni [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -601,11 +701,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -613,15 +713,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/pt_br.qm b/lib/resources/pt_br.qm
deleted file mode 100644
index bcdae1d..0000000
Binary files a/lib/resources/pt_br.qm and /dev/null differ
diff --git a/lib/resources/pt_br.ts b/lib/resources/pt_br.ts
index a9477fb..a02561a 100644
--- a/lib/resources/pt_br.ts
+++ b/lib/resources/pt_br.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="pt_BR">
+<TS version="2.1" language="pt_BR">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -35,7 +35,7 @@ Se você estiver interessado em traduzir o iTALC em seu idioma local ou outro id
         <source>License</source>
         <translation>Licença</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -451,6 +451,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Por favor, note que  [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -609,11 +709,11 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
         <source>The following actions will be taken:</source>
         <translation>As seguintes ações serão tomadas:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>• Criar novas chaves de acesso</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>• Importar chave de acesso pública de</translation>
     </message>
@@ -621,15 +721,15 @@ A chave pública é usada nos computadores clientes para verificar que qualquer
         <source><unknown></source>
         <translation><desconhecida></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• Salvar chave(s) de acesso em</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• Exportar chave pública para</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>• Configurar para a função de usuário</translation>
     </message>
diff --git a/lib/resources/fi.ts b/lib/resources/pt_pt.ts
similarity index 74%
copy from lib/resources/fi.ts
copy to lib/resources/pt_pt.ts
index 52f4175..8b13fe3 100644
--- a/lib/resources/fi.ts
+++ b/lib/resources/pt_pt.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fi_FI">
+<TS version="2.1" language="pt_PT">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -9,7 +9,7 @@
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">Tietoja</translation>
+        <translation type="unfinished">Sobre</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
@@ -17,11 +17,11 @@
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">Tekijät</translation>
+        <translation type="unfinished">Autores</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">Käännös</translation>
+        <translation type="unfinished">Tradução</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
@@ -31,9 +31,9 @@ If you're interested in translating iTALC into your local or another langua
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">Lisenssi</translation>
+        <translation type="unfinished">Licença</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -43,14 +43,6 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation type="unfinished">Ei koskaan tälle istunnolle</translation>
-    </message>
-    <message>
-        <source>Always for this session</source>
-        <translation type="unfinished">Aina tälle istunnolle</translation>
-    </message>
-    <message>
         <source>Confirm desktop access</source>
         <translation type="unfinished"></translation>
     </message>
@@ -58,255 +50,255 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Never for this session</source>
+        <translation type="unfinished">Nunca para esta sessão</translation>
+    </message>
+    <message>
+        <source>Always for this session</source>
+        <translation type="unfinished">Sempre para esta sessão</translation>
+    </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">Hallinta</translation>
+        <translation type="unfinished">Gestor de salas de aula</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">Käytä tätä näkymää tietokoneiden ja luokkahuoneiden hallintaan.</translation>
+        <translation type="unfinished">Utilize este local para gerir os seus computadores e salas de aula de uma forma fácil.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished">Tällä hallitset tietokoneita ja luokkahuoneita. Voit lisätä uusia koneita tai luokkahuoneita painamalla hiiren oikeaa näppäintä listassa.</translation>
+        <translation type="unfinished">É aqui que os computadores e salas de aula são geridos. Pode adicionar computadores ou salas de aula, clicando nesta lista.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">Luokkahuoneet/koneet</translation>
+        <translation type="unfinished">Salas de aula/computadores</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished">IP-osoite</translation>
+        <translation type="unfinished">Endereço-IP</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished">Käyttäjänimet</translation>
+        <translation type="unfinished">Nomes de utilizadores</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished">Näytä kayttäjänimet</translation>
+        <translation type="unfinished">Mostrar os nomes dos utilizadores</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished">Käytä ponnahdusvalikkoa (hiiren oikea näppäin) lisätäksesi tai poistaaksesi luokkahuoneita ja tietokoneita.</translation>
+        <translation type="unfinished">Use o menu de contexto (botão direito do rato) para adicionar/remover computadores e/ou salas de aula.</translation>
     </message>
     <message>
         <source>Export to text-file</source>
-        <translation type="unfinished">Vie tekstitiedostoksi</translation>
+        <translation type="unfinished">Exportar para ficheiro de texto</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished">Käytä tätä luodaksesi tekstitiedoston tietokoneista ja käyttäjistä. Voit käyttää tiedostoa myöhemmin kerätäksesi tiedostoja kokeen loputtua. Tätä tarvitaan, jos jotkut käyttäjät kirjautuvat ulos muita aikaisemmin ja tiedostojen suora kopiointi ei enää onnistu.</translation>
+        <translation type="unfinished">Utilize este botão para exportar esta lista de computadores e nomes de utilizadores para um ficheiro de texto. Pode usar este ficheiro mais tarde para recolher ficheiros após um exame ter terminado. Isso às vezes é necessário, pois alguns utilizadores podem ter acabado e desligado mais cedo e por isso não pôde recolher os seus ficheiros no final do exame.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished">Piilota opettajan koneet</translation>
+        <translation type="unfinished">Ocultar os computadores dos professores</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished">Näytä/piilota</translation>
+        <translation type="unfinished">Mostrar/ocultar</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished">Muokkaa asetuksia</translation>
+        <translation type="unfinished">Editar definições</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">Poista</translation>
+        <translation type="unfinished">Remover</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">Näytä kaikki luokkahuoneen koneet</translation>
+        <translation type="unfinished">Mostrar todos os computadores da sala de aula</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">Piilota kaikki luokkahuoneen koneet</translation>
+        <translation type="unfinished">Ocultar todos os computadores da sala de aula</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">Muokkaa nimeä</translation>
+        <translation type="unfinished">Editar nome</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">Poista luokkahuone</translation>
+        <translation type="unfinished">Remover sala de aula</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">Lisää tietokone</translation>
+        <translation type="unfinished">Adicionar computador</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">Lisää luokkahuone</translation>
+        <translation type="unfinished">Adicionar sala de aula</translation>
     </message>
     <message>
         <source>No configuration-file found</source>
-        <translation type="unfinished">Asetustiedostoa ei löytynyt</translation>
+        <translation type="unfinished">Não foi encontrado nenhum ficheiro de configuração</translation>
     </message>
     <message>
         <source>Could not open configuration file %1.
 You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished">Asetustiedoston %1 avaaminen epäonnistui.
-Sinun tulee lisätä ainakin yksi luokkahuone ja yksi tietokone käyttämällä hallintanäkymää, jonka löydät iTALC:n vasemmasta sivupalkista.</translation>
+        <translation type="unfinished">Não foi possível abrir o ficheiro de configuração %1.
+Terá de adicionar pelo menos uma sala de aula e computadores usando o gestor de salas de aula, que poderá encontrar dentro do programa na barra lateral do lado esquerdo.</translation>
     </message>
     <message>
         <source>Error in configuration-file</source>
-        <translation type="unfinished">Virhe asetustiedostossa</translation>
+        <translation type="unfinished">Erro no ficheiro de configuração</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished">Virhe asetustiedostossa %1.
-Ole hyvä ja korjaa se. Vaihtoehtoisesta voit poistaa tiedoston ja luoda uudestaan luokkahuoneet ja tietokoneet.</translation>
+        <translation type="unfinished">Erro ao analisar o ficheiro de configuração %1.
+Por favor, edite-o. Caso contrário, deverá eliminar este ficheiro e terá que adicionar outra vez todas as salas de aula e computadores.</translation>
     </message>
     <message>
         <source>Error while parsing configuration-file %1.
 Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished">Virhe asetustiedossa %1.
-Ole hyvä ja korjaa se. Vaihtoehtoisesti voit poistaa tiedoston.</translation>
+        <translation type="unfinished">Erro ao analisar o ficheiro de configuração %1.
+Por favor, edite-o. Caso contrário, deverá eliminar este ficheiro.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished">Tallenna tiedostoksi</translation>
+        <translation type="unfinished">Seleccione o ficheiro de saída</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished">Tekstitiedostot (*.txt)</translation>
+        <translation type="unfinished">Ficheiros de texto (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Acções para os seleccionados</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Toiminnot</translation>
+        <translation type="unfinished">Acções</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished">Suorita %1:lle</translation>
+        <translation type="unfinished">Acções para %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished">Nimeä luokkahuone</translation>
+        <translation type="unfinished">Novo nome para a sala de aula</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished">Kirjoita luokkahuoneen "%1" uusi nimi.</translation>
+        <translation type="unfinished">Por favor, indique um novo nome para sala de aula "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished">Haluatko varmasti poistaa luokkahuoneen "%1"?
-Samalla poistuvat kaikki luokkahuoneen sisältämät tietokoneet!</translation>
+        <translation type="unfinished">Tem a certeza que pretende remover a sala de aula "%1"?
+Todos os computadores dessa sala também serão removidos!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished">Luokkahuone puuttuu</translation>
+        <translation type="unfinished">Sala de aula em falta</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished">Sinun tulee luoda vähintään yksi luokkahuone ennen tietokoneiden lisäämistä.
-Haluatko luoda uuden luokkahuoneen?</translation>
+        <translation type="unfinished">Antes de adicionar computadores, deve criar pelo menos uma sala de aula.
+Quer criar uma nova sala de aula agora?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished">Uusi luokkahuone</translation>
+        <translation type="unfinished">Nova sala de aula</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished">Kirjoita uuden luokkahuoneen nimi.</translation>
+        <translation type="unfinished">Por favor, insira o nome da sala que deseja criar.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished">Tuntematon tila</translation>
+        <translation type="unfinished">Estado desconhecido</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">Ei käyttäjää</translation>
+        <translation type="unfinished">Nenhum utilizador ligado</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished">Ei yhteyttä koneeseen</translation>
+        <translation type="unfinished">Anfitrião inacessível</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished">Esitys käynnissä</translation>
+        <translation type="unfinished">Demonstração a decorrer</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished">Työpöytä lukittu</translation>
+        <translation type="unfinished">Ambiente de trabalho bloqueado</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">Haluatko varmasti kirjata käyttäjät ulos kaikilta näkyviltä tietokoneilta?</translation>
+        <translation type="unfinished">Tem a certeza que pretende desligar todos os utilizadores em todos os computadores visíveis?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Tem a certeza que pretende desligar todos os utilizadores em todos os computadores seleccionados?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Logout de utilizador</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished">Haluatko varmasti uudelleenkäynnistää kaikki näkyvät tietokoneet?</translation>
+        <translation type="unfinished">Tem certeza que pretende reiniciar todos os computadores visíveis?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Tem certeza que pretende reiniciar todos os computadores seleccionados?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished">Uudelleenkäynnistä tietokoneet</translation>
+        <translation type="unfinished">Reiniciar computadores</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished">Halutako varmasti sammuttaa kaikki näkyvät tietokoneet?</translation>
+        <translation type="unfinished">Tem certeza que pretende desligar todos os computadores visíveis?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Tem certeza que pretende desligar todos os computadores seleccionados?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation type="unfinished">Virheellinen MAC-osoite</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished">Annoit virheellisen MAC-osoitteen. Jätä kenttä tyhjäksi tai kirjoita oikea MAC-osoite (muotoa 12:34:56:78:9A:BC).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation type="unfinished">Tietokoneen asetukset</translation>
+        <translation type="unfinished">Configurações do cliente</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/verkkonimi</translation>
+        <translation type="unfinished">IP/nome do computador</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kirjoita koneen verkkonimi tai IP-osoite (käytä ':' jos h [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">introduza um endereço IP ou nome de computador de modo a que o iTAL [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">Nimi</translation>
+        <translation type="unfinished">Nome</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vaihtoehtoinen nimi koneelle iTALC:ssa.</p></body></ [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nome opcional do anfitrião, que é exibido no iTALC.</p></b [...]
     </message>
     <message>
         <source>MAC address</source>
@@ -314,27 +306,27 @@ Haluatko luoda uuden luokkahuoneen?</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tietokoneen verkkokortin MAC-osoite - tarvitaan vain koneen etäkäyn [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Endereço MAC do cliente - usada apenas para ligar cliente</p> [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Luokkahuone</translation>
+        <translation type="unfinished">Sala de aula</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">Konetyyppi</translation>
+        <translation type="unfinished">Tipo</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">Oppilaan kone</translation>
+        <translation type="unfinished">Computador de estudante</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">Opettajan kone</translation>
+        <translation type="unfinished">Computador do professor</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">Muu/määrittelemätön kone</translation>
+        <translation type="unfinished">Computador indefinido/outro</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
@@ -344,48 +336,56 @@ Haluatko luoda uuden luokkahuoneen?</translation>
         <source>You didn't specify an IP address or hostname for the computer!</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Invalid MAC-address</source>
+        <translation type="unfinished">Endereço MAC inválido</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
+        <translation type="unfinished">Especificou um endereço MAC inválido. Deixe o campo em branco ou introduza um endereço MAC válido (use ":" como separador!).</translation>
+    </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">Näytön päivitysväli</translation>
+        <translation type="unfinished">Intervalo entre actualizações</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tällä määrittelet koneiden näyttöjen päivitysvälin. Suurempi arvo v [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui pode definir o intervalo entre as actualizaçoes dos clientes.  [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished"> sekuntia</translation>
+        <translation type="unfinished"> segundos</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">Käyttöliittymä</translation>
+        <translation type="unfinished">Interface de utilizador</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Estä  opastetekstien näyttäminen</p></body></html&gt [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar os balões de dicas nos botões da barra de ferramentas&l [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Valitse tämä jos opastetekstit häiritsevät hiiren osoittimen osuess [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Seleccione esta opção se estiver irritado com os balões de dicas qu [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">Ei opastetekstejä</translation>
+        <translation type="unfinished">Sem balões de dicas</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Piilota painikkeiden tekstit työkalupalkissa</p></body> [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não mostrar textos nos botões da barra de ferramentas</p>< [...]
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished">Piilota työkalupalkin tekstit</translation>
+        <translation type="unfinished">Sem textos nos botões da barra de ferramentas</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished">Roolisi (tarvitset kyseisen avaimen!)</translation>
+        <translation type="unfinished">O seu papel (necessita das respectivas chaves!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
@@ -395,35 +395,35 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tällä valitset oman roolisi. Muuta tätä vain, jos tiedät varmsti mitä teet. Muuten saatat menettää yhteyden muihin koneisiin, kunnes palautat alkuperäisen roolisi.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui pode seleccionar o seu papel. Altere esta definição apenas se souber o que está a fazer. Caso contrário não poderá aceder a nenhum cliente até restaurar o seu antigo papel.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Opettaja</translation>
+        <translation type="unfinished">Professor</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Ylläpitäjä</translation>
+        <translation type="unfinished">Administrador</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">Tuki</translation>
+        <translation type="unfinished">Assistente</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Muu</translation>
+        <translation type="unfinished">Outro</translation>
     </message>
     <message>
         <source>Settings for multi-logon</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Configurações para logon múltiplo</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Toimialue</translation>
+        <translation type="unfinished">Domínio</translation>
     </message>
     <message>
         <source>Double-click action for client-window</source>
-        <translation type="unfinished">Ikkunan kaksoispainallus</translation>
+        <translation type="unfinished">Acçao de duplo-clique para a janela de cliente</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
@@ -433,30 +433,130 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tällä valitset mitä tapahtuu kaksoispainamalla hiiren näppäintä tietokoneiden näkymäikkunan kohdalla.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aqui pode definir o que deve acontecer quando faz duplo-clique na janela de um cliente.</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Controlo remoto</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished">Avaa näkymä</translation>
+        <translation type="unfinished">Ver ao vivo em ecrã inteiro</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Jo [...]
+        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Po [...]
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished">iTALC-asetukset</translation>
+        <translation type="unfinished">A sua configuração do iTALC</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished">Tässä tilassa voit muokata iTALC:a mieleiseksesi.</translation>
+        <translation type="unfinished">Neste local pode personalizar o iTALC de acordo com as suas necessidades.</translation>
     </message>
 </context>
 <context>
@@ -470,18 +570,18 @@ p, li { white-space: pre-wrap; }
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">iTALC esitys</translation>
+        <translation type="unfinished">Demonstração iTALC</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">Autentikointivirhe</translation>
+        <translation type="unfinished">Erro de autenticação</translation>
     </message>
     <message>
         <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished">Joku (IP: %1) yritti päästä näkemään kuvaruutusi, mutta ei onnistunut autentikoimaan itseään!</translation>
+        <translation type="unfinished">Alguém (IP: %1) tentou aceder a este computador mas não conseguiu autenticar-se com sucesso!</translation>
     </message>
 </context>
 <context>
@@ -555,11 +655,11 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Opettaja</translation>
+        <translation type="unfinished">Professor</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Ylläpitäjä</translation>
+        <translation type="unfinished">Administrador</translation>
     </message>
     <message>
         <source>Support team member</source>
@@ -567,7 +667,7 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Muu</translation>
+        <translation type="unfinished">Outro</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
@@ -601,11 +701,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -613,15 +713,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
@@ -682,7 +782,7 @@ The public key part is used on the client computers to verify that any incoming
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished">Lukitse</translation>
+        <translation type="unfinished">bloqueio de ecrã</translation>
     </message>
 </context>
 <context>
@@ -712,24 +812,192 @@ The public key part is used on the client computers to verify that any incoming
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Toiminnot</translation>
+        <translation>Acções</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation type="unfinished">Yleistä</translation>
+        <source>MainWindow</source>
+        <translation>Janela Principal</translation>
+    </message>
+    <message>
+        <source>toolBar</source>
+        <translation>Barra de Farementas</translation>
+    </message>
+    <message>
+        <source>iTALC</source>
+        <translation>ITALC</translation>
+    </message>
+    <message>
+        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
+        <translation>Não foi possível ler/escrever ou criar a pasta %1! Para executar o iTALC, verifique se está autorizado a criar ou gravar esta pasta.</translation>
+    </message>
+    <message>
+        <source>Classroom</source>
+        <translation>Sala de aula</translation>
+    </message>
+    <message>
+        <source>Switch classroom</source>
+        <translation>Alterar sala de aula</translation>
+    </message>
+    <message>
+        <source>Click this button to open a menu where you can choose the active classroom.</source>
+        <translation>Clique neste botão para abrir um menu onde pode escolher a sala de aula activa.</translation>
+    </message>
+    <message>
+        <source>Click on this button, to switch between classrooms.</source>
+        <translation>Clique neste botão para alternar entre as salas de aula.</translation>
+    </message>
+    <message>
+        <source>Overview mode</source>
+        <translation>Modo de visão geral</translation>
+    </message>
+    <message>
+        <source>Overview</source>
+        <translation>Visão geral</translation>
+    </message>
+    <message>
+        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
+        <translation>Este é o modo padrão no iTALC e permite-lhe ter uma visão geral sobre todos os computadores visíveis. Este botão também permite desbloquear as estações de trabalho bolqueadas ou para sair do modo de demonstração.</translation>
+    </message>
+    <message>
+        <source>Fullscreen demo</source>
+        <translation>Demonstração em ecrã inteiro</translation>
+    </message>
+    <message>
+        <source>Fullscreen Demo</source>
+        <translation>Demonstração em Ecrã Inteiro</translation>
+    </message>
+    <message>
+        <source>Stop Demo</source>
+        <translation>Parar demonstração</translation>
+    </message>
+    <message>
+        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
+        <translation>Neste modo o seu ambiente de trabalho será exibido em todos os computadores visíveis. Além disso os utlizadores não poderão fazer mais nada, uma vez que os dispositivos de entrada estão bloqueados.</translation>
+    </message>
+    <message>
+        <source>Window demo</source>
+        <translation>Demonstração em janela</translation>
+    </message>
+    <message>
+        <source>Window Demo</source>
+        <translation>Demonstração em Janela</translation>
+    </message>
+    <message>
+        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
+        <translation>Neste modo o seu ambiente de trabalho será exibido numa janela em todos os computadores visíveis. Os utilizadores poderão mudar para outras janelas e assim continuar a trabalhar.</translation>
+    </message>
+    <message>
+        <source>Lock/unlock desktops</source>
+        <translation>Bloquear/desbloquear ambientes de trabalho</translation>
+    </message>
+    <message>
+        <source>Lock all</source>
+        <translation>Bloquear todos</translation>
+    </message>
+    <message>
+        <source>Unlock all</source>
+        <translation>Desbolquear todos</translation>
+    </message>
+    <message>
+        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
+        <translation>Para ter a máxima atenção de todos os utilizadores, pode bloquear os seus ambientes de trabalho usando este botão. Neste modo, todos os dispositivos de entrada estão bloqueados e o ecrã fica preto.</translation>
+    </message>
+    <message>
+        <source>Send text message</source>
+        <translation>Enviar mensagem de texto</translation>
+    </message>
+    <message>
+        <source>Text message</source>
+        <translation>Mensagem de texto</translation>
+    </message>
+    <message>
+        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
+        <translation>Utilize este botão para enviar uma mensagem de texto para todos os utilizadores, por exemplo para transmitir novas tarefas, etc.</translation>
+    </message>
+    <message>
+        <source>Power on computers</source>
+        <translation>Ligar computadores</translation>
+    </message>
+    <message>
+        <source>Power on</source>
+        <translation>Ligar</translation>
+    </message>
+    <message>
+        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
+        <translation>Clique neste botão para ligar todos os computadores visíveis. Desta forma, você não tem que ligar cada computador manualmente.</translation>
+    </message>
+    <message>
+        <source>Power down computers</source>
+        <translation>Desligar computadores</translation>
+    </message>
+    <message>
+        <source>Power down</source>
+        <translation>Desligar</translation>
+    </message>
+    <message>
+        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
+        <translation>Para desligar todos os computadores visíveis (por exemplo, depois da aula ter terminado) pode clicar nesse botão.</translation>
+    </message>
+    <message>
+        <source>Support</source>
+        <translation>Assistência</translation>
+    </message>
+    <message>
+        <source>Direct support</source>
+        <translation>Assistência directa</translation>
+    </message>
+    <message>
+        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
+        <translation>Se precisa assistir alguém num determinado computador, pode clicar neste botão e posteriormente inserir o nome do computador ou endereço IP.</translation>
+    </message>
+    <message>
+        <source>Adjust/align</source>
+        <translation>Ajustar/alinhar</translation>
+    </message>
+    <message>
+        <source>Adjust windows and their size</source>
+        <translation>Ajustar janelas e o seu tamanho</translation>
+    </message>
+    <message>
+        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
+        <translation>Ao clicar neste botão, as janelas dos clientes serão ajustadas para o maior tamanho possível. Além disso, todas as janelas serão alinhadas.</translation>
+    </message>
+    <message>
+        <source>Auto view</source>
+        <translation>Visao automática</translation>
+    </message>
+    <message>
+        <source>Auto re-arrange windows and their size</source>
+        <translation>Re-organizar as janelas e seu tamanho automaticamente</translation>
+    </message>
+    <message>
+        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
+        <translation>Ao clicar neste botão, todas as janelas visíveis serão re-organizadas e ajustadas.</translation>
+    </message>
+    <message>
+        <source>iTALC Master Control</source>
+        <translation>Controlo Principal iTALC</translation>
+    </message>
+    <message>
+        <source>Remote control</source>
+        <translation>Controlo remoto</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>Sair</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>General</source>
+        <translation type="unfinished">Geral</translation>
+    </message>
+    <message>
         <source>iTALC Server</source>
         <translation type="unfinished"></translation>
     </message>
@@ -742,6 +1010,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Debugging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>iTALC Service</source>
         <translation type="unfinished"></translation>
     </message>
@@ -774,6 +1046,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Logging</source>
         <translation type="unfinished"></translation>
     </message>
@@ -822,524 +1098,360 @@ The public key part is used on the client computers to verify that any incoming
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Clear all log files</source>
+        <source>Log to standard error output</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Desktop capturing</source>
+        <source>Log to Windows event log</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable capturing of layered (semi-transparent) windows</source>
+        <source>Clear all log files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Demo server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Core server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Demo server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Enable firewall exception</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Configuration files</source>
+        <source>Desktop capturing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Global configuration</source>
+        <source>Enable capturing of layered (semi-transparent) windows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Personal configuration</source>
+        <source>Poll full screen (leave this enabled per default)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Data directories</source>
+        <source>Low accuracy (turbo mode)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Snapshots</source>
-        <translation type="unfinished">Kuvaruutukopiot</translation>
-    </message>
-    <message>
-        <source>Authentication methods</source>
+        <source>Demo server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Access key management</source>
+        <source>Backend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Logon settings</source>
+        <source>VNC reflector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&File</source>
+        <source>iTALC 1 demo server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Help</source>
+        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Quit</source>
+        <source>Network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
+        <source>Core server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
+        <source>Demo server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save settings into file</source>
+        <source>Enable firewall exception</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
+        <source>HTTP server port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
+        <source>Allow connections from localhost only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>About iTALC</source>
+        <source>Configuration files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>About Qt</source>
+        <source>Global configuration</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>MainWindow</source>
+        <source>Personal configuration</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>toolBar</source>
+        <source>Data directories</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation type="unfinished"></translation>
+        <source>Snapshots</source>
+        <translation type="unfinished">Capturas</translation>
     </message>
     <message>
-        <source>Running</source>
+        <source>Authentication methods</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Load settings from file</source>
+        <source>Key file authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
+        <source>ACL-based logon authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save settings to file</source>
+        <source>Access key management</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
+        <source>Public key file base directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
+        <source>Private key file base directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
+        <source>Launch key file assistant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <source>Logon settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
+        <source>Manage permissions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
+        <source>Test</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC</source>
-        <translation type="unfinished">iTALC</translation>
-    </message>
-    <message>
-        <source>No write access</source>
+        <source>Access confirmation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished">Hakemiston %1 luku/kirjoitus tai luonti ei onnistu. Käyttääksesi iTALC:ia varmista, että sinulla on oikeudet luoda ja kirjoittaa tähän hakemistoon.</translation>
-    </message>
-    <message>
-        <source>Classroom</source>
-        <translation type="unfinished">Luokkahuone</translation>
-    </message>
-    <message>
-        <source>Switch classroom</source>
-        <translation type="unfinished">Vaihda luokkahuonetta</translation>
-    </message>
-    <message>
-        <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished">Painamalla tätä voit valita käytettävän luokkahuoneen.</translation>
-    </message>
-    <message>
-        <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished">Painamalla tätä valitset eri luokkahuoneiden välillä.</translation>
-    </message>
-    <message>
-        <source>Overview mode</source>
-        <translation type="unfinished">Yleisnäkymä</translation>
-    </message>
-    <message>
-        <source>Overview</source>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished">Tämä on iTALC:n oletustila. Siinä näet kaikkien aktiivisten koneiden kuvaruudut. Painamalla tätä vapautat myös lukitut tietokoneet tai poistut esitystilasta.</translation>
-    </message>
-    <message>
-        <source>Fullscreen demo</source>
-        <translation type="unfinished">Esitys koko näytöllä</translation>
-    </message>
-    <message>
-        <source>Fullscreen Demo</source>
-        <translation type="unfinished">Esitys koko näytöllä</translation>
-    </message>
-    <message>
-        <source>Stop Demo</source>
-        <translation type="unfinished">Lopeta esitys</translation>
-    </message>
-    <message>
-        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">Tässä tilassa näyttösi pakotetaan kaikkien muiden koneiden näytölle. Tällöin muiden käyttäjien laitteet lukkiutuvat.</translation>
-    </message>
-    <message>
-        <source>Window demo</source>
-        <translation type="unfinished">Esitys ikkunassa</translation>
-    </message>
-    <message>
-        <source>Window Demo</source>
-        <translation type="unfinished">Esitys ikkunassa</translation>
-    </message>
-    <message>
-        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">Tässä tilassa näyttösi näytetään muiden koneilla omassa ikkunassaan. Käyttäjät voivat samanaikaisesti työskennellä muissa ikkunoissa.</translation>
-    </message>
-    <message>
-        <source>Lock/unlock desktops</source>
-        <translation type="unfinished">Lukitse/vapauta työtilat</translation>
-    </message>
-    <message>
-        <source>Lock all</source>
-        <translation type="unfinished">Lukitse kaikki</translation>
-    </message>
-    <message>
-        <source>Unlock all</source>
-        <translation type="unfinished">Vapauta kaikki</translation>
-    </message>
-    <message>
-        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">Saadaksesi käyttäjien täyden huomion, voit lukita heidän työtilansa painamalla tätä. Tässä tilassa käyttäjien koneet on lukittu ja näyttö pimennetty.</translation>
-    </message>
-    <message>
-        <source>Send text message</source>
+        <source>Logon authentication</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Text message</source>
-        <translation type="unfinished">Viesti</translation>
-    </message>
-    <message>
-        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">Käytä tätä lähettääksesi viestin kaikille käyttäjille, esim. antaaksesi heille tehtävän, tms.</translation>
-    </message>
-    <message>
-        <source>Power on computers</source>
-        <translation type="unfinished">Käynnistä tietokone</translation>
-    </message>
-    <message>
-        <source>Power on</source>
+        <source>Allow same user to access desktop without confirmation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished">Painamalla tätä käynnistät kaikki näkyvät tietokoneet. Tällä tavalla sinun ei tarvitse käydä käynnistämässä niitä jokaista käsin (MAC-osoite tulee olla määritetty koneen asetuksissa!).</translation>
-    </message>
-    <message>
-        <source>Power down computers</source>
+        <source>Debugging iTALC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Power down</source>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished">Painamalla tätä voit sammuttaa kaikki näkyvät tietokoneet (esim. oppitunnin päättyessä).</translation>
-    </message>
-    <message>
-        <source>Support</source>
-        <translation type="unfinished">Tukitoiminto</translation>
-    </message>
-    <message>
-        <source>Direct support</source>
-        <translation type="unfinished">Etätuki koneelle</translation>
-    </message>
-    <message>
-        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished">Tällä voit etähallita jotain vierasta konetta antamalla sen verkkonimi tai IP-osoite.</translation>
-    </message>
-    <message>
-        <source>Adjust/align</source>
-        <translation type="unfinished">Sovita</translation>
-    </message>
-    <message>
-        <source>Adjust windows and their size</source>
-        <translation type="unfinished">Sovita ikkunat</translation>
-    </message>
-    <message>
-        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished">Painamalla tätä kaikki ikkunat sovitetaan ruudulle mahdollisimman isokokoisina.</translation>
-    </message>
-    <message>
-        <source>Auto view</source>
-        <translation type="unfinished">Järjestä</translation>
-    </message>
-    <message>
-        <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished">Järjestä ja sovita ikkunat</translation>
-    </message>
-    <message>
-        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished">Painamalla tätä uudelleenjärjestetään ja sovitetaaan kaikki näkyvät ikkunat.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation type="unfinished">iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
+        <source>1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <source>Clear the logfiles in the "General" section.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <source>2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Debugging</source>
+        <source>3)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log to standard error output</source>
+        <source>4)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log to Windows event log</source>
+        <source>Click the following button and save the file to a known location.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Backend</source>
+        <source>Generate bug report archive</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>VNC reflector</source>
+        <source>5)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>iTALC 1 demo server</source>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
+        <source>&File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <source>&Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>HTTP server port</source>
+        <source>&Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Allow connections from localhost only</source>
+        <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Key file authentication</source>
+        <source>&Save settings into file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>ACL-based logon authentication</source>
+        <source>Save settings into file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public key file base directory</source>
+        <source>Ctrl+S</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Private key file base directory</source>
+        <source>L&oad settings from file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Launch key file assistant</source>
+        <source>Ctrl+O</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage permissions</source>
+        <source>About iTALC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Test</source>
+        <source>About Qt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Access confirmation</source>
+        <source>No write access</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <source>Could not contact iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Logon authentication</source>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
+        <source>Authentication impossible</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>1)</source>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>2)</source>
+        <source>Configuration not writable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>3)</source>
+        <source>All settings were applied successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <source>An error occured while applying settings!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>4)</source>
+        <source>iTALC Management Console %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
+        <source>Restart iTALC Service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
+        <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>5)</source>
+        <source>Starting iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <source>Stopping iTALC service</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Restart iTALC Service</source>
+        <source>Running</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
+        <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Starting iTALC service</source>
+        <source>Log files cleared</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stopping iTALC service</source>
+        <source>All log files were cleared successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
+        <source>Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Log files cleared</source>
+        <source>Could not remove all log files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All log files were cleared successfully.</source>
+        <source>Load settings from file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Error</source>
+        <source>XML files (*.xml)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not remove all log files.</source>
+        <source>Save settings to file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1371,23 +1483,11 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <source>Unsaved settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Poll full screen (leave this enabled per default)</source>
+        <source>There are unsaved settings. Quit anyway?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1395,7 +1495,7 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <name>MessageBoxSlave</name>
     <message>
         <source>Message from teacher</source>
-        <translation type="unfinished">Viesti opettajalta</translation>
+        <translation type="unfinished">Mensagem do professor</translation>
     </message>
 </context>
 <context>
@@ -1408,23 +1508,23 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Tervetuloa iTALC:n pariin!</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Bem vindo ao iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished">Viereisen työkalupalkin avulla valitset sen, mitä tässä työtilassa näytetään. Kokeile eri tiloja painamalla kuvakkeita. Painamalla valitun työtilan kuvaketta uudestaan piilotat tämän työtilan.</translation>
+        <translation type="unfinished">Aqui vê a barra de trabalho, que contém vários botões. Cada botão está associado a uma área de trabalho. Visualize as áreas de trabalho disponíveis, clicando no botão correspondente.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished">Luokkahuoneiden hallinnassa kontrolloit eri luokkahuoneita ja tietokoneita. Siinä näet myös käyttäjät, jotka ovat kirjautuneina koneille.</translation>
+        <translation type="unfinished">Através do gestor de salas de aula, pode gerir as suas salas e computadores. Pode também ver que utilizadores estão ligados.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished">Kuvaruutukopioiden hallinta on hyvin hyödyllinen työkalu. Sillä hallitset ottamiasi kuvaruutukopioita.</translation>
+        <translation type="unfinished">A área de gestão de capturas é uma ferramenta muito útil. Ela permite gerir as capturas efectuadas.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished">Tässä tilassa voit muokata iTALC:a mieleiseksesi.</translation>
+        <translation type="unfinished">Claro que pode configurar o iTALC. Isso é feito normalmente usando a área de configuração.</translation>
     </message>
     <message>
         <source>About iTALC</source>
@@ -1439,26 +1539,26 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished">Perustietoja iTALC:sta ja sen käytöstä.</translation>
+        <translation type="unfinished">Alguma informação básica sobre o iTALC e como usá-lo.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Käyttäjätunnus</translation>
+        <translation type="unfinished">Nome de utilizador</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Salasana</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Palavra-passe</translation>
     </message>
     <message>
         <source>Manage</source>
@@ -1469,55 +1569,55 @@ p, li { white-space: pre-wrap; }
     <name>QApplication</name>
     <message>
         <source>iTALC Client %1 on %2:%3</source>
-        <translation>ICA %1 portissa %2:%3</translation>
+        <translation>Cliente iTALC %1 ligado %2:%3</translation>
     </message>
     <message>
         <source>Unable to register service '%1'.</source>
-        <translation>Rekisteröityminen palveluun '%1' epäonnistui.</translation>
+        <translation>Não foi possível registrar serviço '%1'.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>Kytkeytyminen Service Control Manageriin epäonnistui (ovatko käyttöoikeutesi riittävät?) - palvelua '%1' ei rekisteröity.</translation>
+        <translation>O Gestor de Serviços não pôde ser contactado (tem os privilégios necessários?) - o serviço '%1' não foi registado.</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
-        <translation>Palvelu '%1' on jo rekisteröity.</translation>
+        <translation>O serviço '%1' já está registado.</translation>
     </message>
     <message>
         <source>The service '%1' could not be registered.</source>
-        <translation>Palvelua '%1' ei voitu rekisteröidä.</translation>
+        <translation>O serviço '%1' não pôde ser registado.</translation>
     </message>
     <message>
         <source>The service '%1' was successfully registered.</source>
-        <translation>Palvelu '%1' rekisteröity onnistuneesti.</translation>
+        <translation>O serviço '%1' foi registado com êxito.</translation>
     </message>
     <message>
         <source>The service '%1' could not be stopped.</source>
-        <translation>Palvelua '%1' ei voitu pysäyttää.</translation>
+        <translation>O serviço '%1' não pôde ser interrompido.</translation>
     </message>
     <message>
         <source>The service '%1' has been unregistered.</source>
-        <translation>Palvelu '%1' poistettu.</translation>
+        <translation>O serviço '%1' foi removido.</translation>
     </message>
     <message>
         <source>The service '%1' isn't registered and therefore can't be unregistered.</source>
-        <translation>Palvelua '%1' ei ole rekisteröity, joten sitä ei voida poistaa.</translation>
+        <translation>O serviço '%1' não está registado e, portanto, não pode ser removido.</translation>
     </message>
     <message>
         <source>The service '%1' could not be unregistered.</source>
-        <translation>Palvelua '%1' ei voitu poistaa.</translation>
+        <translation>O serviço '%1' não pôde ser removido.</translation>
     </message>
     <message>
         <source>The service '%1' could not be found.</source>
-        <translation>Palvelua '%1' ei löydy.</translation>
+        <translation>O serviço '%1' não foi encontrado.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>Kytkeytyminen Service Control Manageriin epäonnistui (ovatko käyttöoikeutesi riittävät?!) - palvelua '%1' ei poistettu.</translation>
+        <translation>O Gestor de Serviços não pôde ser contactado (tem os privilégios necessários?) - o serviço '%1' não foi removido.</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>Kytkeytyminen Service Control Manageriin epäonnistui (ovatko käyttöoikeutesi riittävät?!) - palvelua '%1' ei pysäytetty.</translation>
+        <translation>O Gestor de Serviços não pôde ser contactado (tem os privilégios necessários?) - o serviço '%1' não foi interrompido.</translation>
     </message>
 </context>
 <context>
@@ -1532,26 +1632,26 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">tuntematon käyttäjä</translation>
+        <translation type="unfinished">Utilizador desconhecido</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished">Etänäkymä</translation>
+        <translation type="unfinished">Apenas ver</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Controlo remoto</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished">Lukitse</translation>
+        <translation type="unfinished">Bloquear estudante</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished">Vapauta</translation>
+        <translation type="unfinished">Desbloquear estudante</translation>
     </message>
     <message>
         <source>Snapshot</source>
@@ -1559,30 +1659,30 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">Koko ruutu</translation>
+        <translation type="unfinished">Ecrã inteiro</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished">Ikkunoitu</translation>
+        <translation type="unfinished">Janela</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Sair</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished">Muodostaa yhteyttä %1</translation>
+        <translation type="unfinished">Ligando %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished">Yhteys muodostettu.</translation>
+        <translation type="unfinished">Ligado.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">Kirjaudu</translation>
+        <translation type="unfinished">Logon remoto</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
@@ -1590,15 +1690,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Käyttäjätunnus</translation>
+        <translation type="unfinished">Nome de utilizador</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Salasana</translation>
+        <translation type="unfinished">Palavra-passe</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Toimialue</translation>
+        <translation type="unfinished">Domínio</translation>
     </message>
 </context>
 <context>
@@ -1620,7 +1720,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished">Kuvaruutukopion ottaminen epäonnistui, koska hakemistoa %1 ei ole olemassa eikä sitä pystytty luomaan.</translation>
+        <translation type="unfinished">Não foi possível tirar uma captura de ecrã porque a pasta %1 não existe e não pôde ser criada.</translation>
     </message>
     <message>
         <source>Snapshot</source>
@@ -1631,11 +1731,11 @@ p, li { white-space: pre-wrap; }
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Kuvaruutukopiot</translation>
+        <translation type="unfinished">Capturas</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">Hallitse ottamiasi kuvaruutukopioita.</translation>
+        <translation type="unfinished">Faça a gestão das capturas realizadas utilizando este local.</translation>
     </message>
 </context>
 <context>
@@ -1648,23 +1748,23 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tässä on lueteltu kaikki ottamasti kuvaruutukopiot. Kuvaruutukopion saat otettua painamalla haluamasi koneen ikkunassa hiiren oikeaa näppäintä ja valitsemalla alivalikosta "Ota kuvaruutukopio". Näitä kuvia voidaan hallita alla olevilla painikkeilla.</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Todas as capturas feitas estão listadas aqui. Pode fazer capturas, selecionando a respectiva opção no menu de contexto de uma janela de cliente. Estas capturas podem ser geridas usando os botões abaixo.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">Käyttäjä:</translation>
+        <translation type="unfinished">Utilizador:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">Tietokone:</translation>
+        <translation type="unfinished">Anfitrião:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">Pvm:</translation>
+        <translation type="unfinished">Data:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">Aika:</translation>
+        <translation type="unfinished">Tempo:</translation>
     </message>
     <message>
         <source>Show</source>
@@ -1679,7 +1779,7 @@ p, li { white-space: pre-wrap; }
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Tukitoiminto</translation>
+        <translation type="unfinished">Assistência</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
@@ -1690,77 +1790,77 @@ p, li { white-space: pre-wrap; }
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Enviar mensagem de texto</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">Kirjoita viesti alla olevaan kentään. Viesti lähetetään kaikille valituille koneille.</translation>
+        <translation type="unfinished">Use o campo abaixo para digitar a sua mensagem que será enviada para todos os utilizadores seleccionados.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">Luodaan yhteyttä %1 ...</translation>
+        <translation type="unfinished">Estabelecendo ligação a %1 …</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished"></translation>
+        <translation>Visão Geral</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">Esitys koko näytöllä</translation>
+        <translation>Demonstração em ecrã inteiro</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">Esitys ikkunassa</translation>
+        <translation>Demonstração em janela</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">Lukitse</translation>
+        <translation>Monitor bloqueado</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">Avaa näkymä</translation>
+        <translation>Ver ao vivo</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished"></translation>
+        <translation>Controlo remoto</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">Oppilaan esitys</translation>
+        <translation>Deixar estudante fazer a demonstração</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished"></translation>
+        <translation>Enviar mensagem de texto</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished"></translation>
+        <translation>Logout de utilizador</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">Ota kuvaruutukopio</translation>
+        <translation>Capturar uma imagem de ecrã</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished"></translation>
+        <translation>Ligar</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">Uudelleenkäynnistä tietokone</translation>
+        <translation>Reiniciar</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished"></translation>
+        <translation>Desligar</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">Suorita komento</translation>
+        <translation>Executar comandos</translation>
     </message>
 </context>
 </TS>
diff --git a/lib/resources/ru.qm b/lib/resources/ru.qm
deleted file mode 100644
index 66d01c9..0000000
Binary files a/lib/resources/ru.qm and /dev/null differ
diff --git a/lib/resources/ru.ts b/lib/resources/ru.ts
index 85bc4cf..3635c59 100644
--- a/lib/resources/ru.ts
+++ b/lib/resources/ru.ts
@@ -1,523 +1,606 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">О программе iTALC</translation>
+        <translation>О программе iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">О программе</translation>
+        <translation>О программе</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+(Интеллектуальное преподавание и обучение на компьютерах)
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">Авторы</translation>
+        <translation>Авторы</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">Перевод</translation>
+        <translation>Перевод</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation type="unfinished">Перевод на данный язык еще не осуществлен.
+        <translation>Перевод на данный язык еще не осуществлен.
 
 Если Вы желаете добавить перевод программы iTALC на новый язык или улучшить уже существующий, пожалуйста, свяжитесь с разработчиками iTALC!</translation>
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">Лицензия</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
+        <translation>Лицензия</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation type="unfinished">Никогда в этом сеансе</translation>
+        <source>Confirm desktop access</source>
+        <translation>Подтверждать доступ к рабочему столу</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation type="unfinished">Всегда в этом сеансе</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation>Пользователь %1 компьютера %2 пытается подключиться к Вашему рабочему столу. Разрешить ему доступ к Вашему рабочему столу?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation type="unfinished">Подтверждать доступ к рабочему столу</translation>
+        <source>Never for this session</source>
+        <translation>Никогда в этом сеансе</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished">Пользователь %1 компьютера %2 пытается подключиться к Вашему рабочему столу. Разрешить ему доступ к Вашему рабочему столу?</translation>
+        <source>Always for this session</source>
+        <translation>Всегда в этом сеансе</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">Менеджер Классов</translation>
+        <translation>Менеджер Классов</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">Используйте это пространство для управления вашими компьютерами и классами самым простым способом.</translation>
+        <translation>Используйте это пространство для управления вашими компьютерами и классами самым простым способом.</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished">Здесь можно управлять компьютерами и классами. Вы можете добавить компьютеры или классы кликнув правой кнопкой по этому списку.</translation>
+        <translation>Здесь можно управлять компьютерами и классами. Вы можете добавить компьютеры или классы кликнув правой кнопкой по этому списку.</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">Классы/компьютеры</translation>
+        <translation>Классы/компьютеры</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished">IP-адреса</translation>
+        <translation>IP-адреса</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished">Имена пользователей</translation>
+        <translation>Имена пользователей</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished">Показать имена пользователей</translation>
+        <translation>Показать имена пользователей</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished">Используйте контекстное меню (правая кнопка мышки) для добавления/удаления компьютеров и/или классов.</translation>
+        <translation>Используйте контекстное меню (правая кнопка мышки) для добавления/удаления компьютеров и/или классов.</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation type="unfinished">Экспортировать в текстовый файл</translation>
+        <source>Export to text file</source>
+        <translation>Экспорт в текстовый файл</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished">Используйте эту кнопку для экспорта этого списока компьютеров и пользователей в текстовый файл. Вы можете использовать этот файл позже для сбора файлов после завершения экзамена. Иногда это необходимо, потому что некоторые пользователи могли завершить работу и выполнить выход раньше и поэтому вы не сможете собрать их файлы в конце экзамена.</translation>
+        <translation>Используйте эту кнопку для экспорта этого списока компьютеров и пользователей в текстовый файл. Вы можете использовать этот файл позже для сбора файлов после завершения экзамена. Иногда это необходимо, потому что некоторые пользователи могли завершить работу и выполнить выход раньше и поэтому вы не сможете собрать их файлы в конце экзамена.</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished">Скрыть компьютер учителя</translation>
+        <translation>Скрыть компьютер учителя</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished">Показать/скрыть</translation>
+        <translation>Показать/скрыть</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished">Редактировать параметры</translation>
+        <translation>Редактировать параметры</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">Удалить</translation>
+        <translation>Удалить</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">Показать все компьютеры в классе</translation>
+        <translation>Показать все компьютеры в классе</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">Скрыть все компьютеры в классе</translation>
+        <translation>Скрыть все компьютеры в классе</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">Редактировать имя</translation>
+        <translation>Редактировать имя</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">Удалить класс</translation>
+        <translation>Удалить класс</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">Добавить компьютер</translation>
+        <translation>Добавить компьютер</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">Добавить класс</translation>
+        <translation>Добавить класс</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation type="unfinished">Не найден файл конфигурации</translation>
+        <source>No configuration file found</source>
+        <translation>Не найдено файла конфигурации</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished">Не могу открыть файл конфигурации  %1.
-Вы должны добавить хотя бы один класс и компьютеры используя менеджер классов, который можно найти в программе не панели слева.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>Не удалось открыть файл конфигурации %1. Вы должны добавить по крайней мере один класс и компьютеры с помощью менеджера классов, который вы найдёте внутри программы на боковой панели слева.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation type="unfinished">Ошибка в файле конфигурации</translation>
+        <source>Error in configuration file</source>
+        <translation>Ошибка в файле конфигурации</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished">Ошибка обработки файла конфигурации %1.
-Отредактируйте его. Иначе вы должны его удалить и добавить все классы и компьютеры снова.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>Ошибка при разборе файла конфигурации %1. Исправьте файл вручную. В противном случае, вы должны удалить файл и добавить все классы и компьютеры снова.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished">Ошибка обработки файла конфигурации %1.
-Отредактируйте его. Иначе вы должны его удалить.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>Ошибка при разборе файла конфигурации %1. Исправьте файл вручную. В противном случае, вы должны удалить файл.</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished">Выберите выходной файл</translation>
+        <translation>Выберите выходной файл</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished">Текстовые файлы (*.txt)</translation>
+        <translation>Текстовые файлы (*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished">Действия для выбранных элементов</translation>
+        <translation>Действия для выбранных элементов</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Действия</translation>
+        <translation>Действия</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished">Действия для %1</translation>
+        <translation>Действия для %1</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished">Новое имя для класса</translation>
+        <translation>Новое имя для класса</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished">Пожалуйста введите новое имя для класса "%1".</translation>
+        <translation>Пожалуйста введите новое имя для класса "%1".</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished">Вы уверены, что хотите удалить класс "%1"?
+        <translation>Вы уверены, что хотите удалить класс "%1"?
 Все компьютеры в нем будут также удалены!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished">Отсутствующий класс</translation>
+        <translation>Отсутствующий класс</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished">Перед добавление компьютеров вы должны создать хотя бы один класс
+        <translation>Перед добавление компьютеров вы должны создать хотя бы один класс
 Вы хотите создать класс сейчас?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished">Новый класс</translation>
+        <translation>Новый класс</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished">Пожалуйста введите имя класса, который хотите создать.</translation>
+        <translation>Пожалуйста введите имя класса, который хотите создать.</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished">Неизвестное состояние</translation>
+        <translation>Неизвестное состояние</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">Нет начавших работу пользователей</translation>
+        <translation>Нет начавших работу пользователей</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished">Компьютер недоступен</translation>
+        <translation>Компьютер недоступен</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished">Запущенное демо</translation>
+        <translation>Запущенное демо</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished">Рабочий стол заблокирован</translation>
+        <translation>Рабочий стол заблокирован</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Сообщение от учителя</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">Вы действительно хотите завершить работу пользователей на всех видимых компьютерах?</translation>
+        <translation>Вы действительно хотите завершить работу пользователей на всех видимых компьютерах?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished">Вы действительно хотите завершить работу пользователей на всех выбранных компьютерах?</translation>
+        <translation>Вы действительно хотите завершить работу пользователей на всех выбранных компьютерах?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Завершить работу</translation>
+        <translation>Завершить работу</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished">Вы действительно хотите перезагрузить все видимые компьютеры?</translation>
+        <translation>Вы действительно хотите перезагрузить все видимые компьютеры?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished">Вы действительно хотите перезагрузить все выбранные компьютеры?</translation>
+        <translation>Вы действительно хотите перезагрузить все выбранные компьютеры?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished">Перезагрузить компьютеры</translation>
+        <translation>Перезагрузить компьютеры</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished">Вы действительно хотите завершить работу всех видимых компьютеров?</translation>
+        <translation>Вы действительно хотите завершить работу всех видимых компьютеров?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished">Вы действительно хотите завершить работу всех выбранных компьютеров?</translation>
+        <translation>Вы действительно хотите завершить работу всех выбранных компьютеров?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation type="unfinished">Некорректный MAC-адрес</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished">Вы задали некорректный MAC-адрес. Вы можете оставить это поле пустым или ввести корректный MAC-адрес (используйте ":" как разделитель!).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation type="unfinished">Параметры клиента</translation>
+        <translation>Параметры клиента</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/имя компьютера</translation>
+        <translation>IP/имя компьютера</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Введите IP-адрес или имя компьютера, который iTALC сможет определит [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Введите IP-адрес или имя компьютера, который iTALC сможет определить как клиента (исп [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">Имя</translation>
+        <translation>Имя</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Опциональное имя компьютера, которое должно отображаться в iTALC.&l [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Опциональное имя компьютера, которое должно отображаться в iTALC.</p></body& [...]
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>MAC-адрес</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Аппаратный/MAC-адреса клиента - используются только для включения к [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Аппаратный/MAC-адреса клиента - используются только для включения клиента</p>&l [...]
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Класс</translation>
+        <translation>Класс</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">Тип</translation>
+        <translation>Тип</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">Компьютер учащегося</translation>
+        <translation>Компьютер учащегося</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">Компьютер учителя</translation>
+        <translation>Компьютер учителя</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">Другой/незаданный компьютер</translation>
+        <translation>Другой/незаданный компьютер</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>Отсутствует IP-адрес/имя хоста</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation>Вы не указали IP-адрес или имя хоста для компьютера!</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Неверный MAC-адрес</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Вы указали неправильный МАС-адрес. Либо оставьте поле пустым, либо введите правильный MAC-адрес (используйте ":" в качестве разделителя).</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">Интервал между обновлениями</translation>
+        <translation>Интервал между обновлениями</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Здесь вы можете установить интервал между обновлениями клиентов. Вы [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Здесь вы можете установить интервал между обновлениями клиентов. Высокое значение при [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished">секунд</translation>
+        <translation>секунд</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">Интерфейс пользователя</translation>
+        <translation>Интерфейс пользователя</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Не показывать всплывающие подсказки к кнопкам</p></body&gt [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Не показывать всплывающие подсказки к кнопкам</p></body></html></tr [...]
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Отметьте эту опцию, если вас раздражают всплывающие подсказки, появ [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Отметьте эту опцию, если вас раздражают всплывающие подсказки, появляющиеся при навед [...]
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">Нет всплывающих подсказок</translation>
+        <translation>Нет всплывающих подсказок</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Не показывать подписи к кнопкам</p></body></html> [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Не показывать подписи к кнопкам</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished">Нет подписей к кнопкам</translation>
+        <translation>Нет подписей к кнопкам</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>Язык:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Системные установки по умолчанию</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体字</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 簡體字</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished">Ваша роль (требует соответствующего ключа!)</translation>
+        <translation>Ваша роль (требует соответствующего ключа!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Здесь вы можете выбрать вашу роль. Меняйте что либо здесь если только уверены в этом. Иначе вы можете потерять доступ к любым клиентам до восстановления старой роли.</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Учитель</translation>
+        <translation>Учитель</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Администратор</translation>
+        <translation>Администратор</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">Сторонник</translation>
+        <translation>Сторонник</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Другой</translation>
-    </message>
-    <message>
-        <source>Settings for multi-logon</source>
-        <translation type="unfinished">Установки для мульти-входа</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation type="unfinished">Домен</translation>
+        <translation>Другой</translation>
     </message>
     <message>
-        <source>Double-click action for client-window</source>
-        <translation type="unfinished">Действие по двойному щелчку в окне клиента</translation>
+        <source>Double click action for client window</source>
+        <translation>Действие двойного щелчка для окна клиента</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Здесь вы можете установить действие по двойному клику на окне клиента</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Удаленное управление</translation>
+        <translation>Удаленное управление</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished">Показать трансляцию на полном экране</translation>
+        <translation>Показать трансляцию на полном экране</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Вс [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Все изменения не буд [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished">Ваша конфигурация iTALC</translation>
+        <translation>Ваша конфигурация iTALC</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished">В этой области вы можете настроить  iTALC под себя.</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation type="unfinished">ОК</translation>
+        <translation>В этой области вы можете настроить  iTALC под себя.</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">Демо iTALC</translation>
+        <translation>Демо iTALC</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">Ошибка аутенфикации</translation>
+        <translation>Ошибка аутенфикации</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished">Кто-то (IP: %1) пытается получить доступ к этому компьютеру, но не прошел аутенфикацию!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>Кто-то (IP: %1) пытался получить доступ к этому компьютеру, но не удалось успешно выполнить проверку подлинности!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation type="unfinished">Превышено количество попыток VNC аутентификации.</translation>
+        <translation>Превышено количество попыток VNC аутентификации.</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation type="unfinished">VNC аутентификация не удалась.</translation>
+        <translation>VNC аутентификация не удалась.</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation type="unfinished">VNC сервер закрыл соединение.</translation>
+        <translation>VNC сервер закрыл соединение.</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation type="unfinished">Помощник операций с ключем доступа к iTALC</translation>
+        <translation>Помощник операций с ключем доступа к iTALC</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation type="unfinished">Создать/Импортировать ключи доступа к iTALC</translation>
+        <translation>Создать/Импортировать ключи доступа к iTALC</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation type="unfinished">Помощник поможет Вам создать или импортировать ключи доступа к iTALC</translation>
+        <translation>Помощник поможет Вам создать или импортировать ключи доступа к iTALC</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation type="unfinished">Как он работает?</translation>
+        <translation>Как он работает?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -525,7 +608,7 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished">Ключи доступа к iTALC состоят из двух частей - закрытого и открытого ключа.
+        <translation>Ключи доступа к iTALC состоят из двух частей - закрытого и открытого ключа.
 
 С помощью закрытого ключа пользователи главного компьютера смогут получить доступ к клиентским компьютерам. Обязательно необходимо убедиться, что только авторизованные пользователи имеют доступ на чтение файла, содержащего закрытый ключ.
 
@@ -533,880 +616,865 @@ The public key part is used on the client computers to verify that any incoming
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation type="unfinished">Режим работы помощника</translation>
+        <translation>Режим работы помощника</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation type="unfinished">Пожалуйста, выберите, нужно ли создавать новые ключи доступа или импортировать уже существующий открытый ключ на клиентскую машину.</translation>
+        <translation>Пожалуйста, выберите, нужно ли создавать новые ключи доступа или импортировать уже существующий открытый ключ на клиентскую машину.</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation type="unfinished">Создать новые ключи доступа (главный компьютер)</translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
+        <translation>Создать новые ключи доступа (главный компьютер)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation type="unfinished">Импортировать открытый ключ (для клиентских машин)</translation>
+        <translation>Импортировать открытый ключ (для клиентских машин)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation type="unfinished"></translation>
+        <translation>Выберите роль пользователя</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation type="unfinished">Пожалуйста, выберите роль пользователя, который будет создавать или импортировать ключи доступа:</translation>
+        <translation>Пожалуйста, выберите роль пользователя, который будет создавать или импортировать ключи доступа:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">Учитель</translation>
+        <translation>Учитель</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">Администратор</translation>
+        <translation>Администратор</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation type="unfinished">Член службы поддержки</translation>
+        <translation>Член службы поддержки</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">Другой</translation>
+        <translation>Другой</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation type="unfinished">Роли пользователей позволяют использовать несколько ключей доступа одновременно. Например, можно создать различные ключи доступа учителям для каждого класса, а ключи доступа для технической поддержки будут одинаковы для всего учебного заведения.</translation>
+        <translation>Роли пользователей позволяют использовать несколько ключей доступа одновременно. Например, можно создать различные ключи доступа учителям для каждого класса, а ключи доступа для технической поддержки будут одинаковы для всего учебного заведения.</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation type="unfinished">Каталоги</translation>
+        <translation>Каталоги</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation type="unfinished">Экспортировать открытый ключ (главный компьютер)</translation>
+        <translation>Экспортировать открытый ключ (главный компьютер)</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation type="unfinished">Использовать пользовательский каталог для хранения ключей доступа</translation>
+        <translation>Использовать пользовательский каталог для хранения ключей доступа</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation type="unfinished">Пожалуйста, укажите расположение открытого ключа доступа для его импорта</translation>
+        <translation>Пожалуйста, укажите расположение открытого ключа доступа для его импорта</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished">Основная информация</translation>
+        <translation>Основная информация</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation type="unfinished">Будут выполнены следующие действия:</translation>
+        <translation>Будут выполнены следующие действия:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation type="unfinished">• Созданы новые ключи доступа</translation>
+        <translation>• Созданы новые ключи доступа</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation type="unfinished">• Импортирован открытый ключ из</translation>
+        <translation>• Импортирован открытый ключ из</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation type="unfinished"></translation>
+        <translation><неизвестный></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation type="unfinished">• Записаны ключи в</translation>
+        <translation>• Записаны ключи в</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation type="unfinished">• Экспортирован открытый ключ в</translation>
+        <translation>• Экспортирован открытый ключ в</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation type="unfinished">• Выполнена настройка для роли пользователя</translation>
+        <translation>• Выполнена настройка для роли пользователя</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation type="unfinished">Выберите каталог, в который будет осуществлен экспорт открытого ключа</translation>
+        <translation>Выберите каталог, в который будет осуществлен экспорт открытого ключа</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation type="unfinished">Файлы ключей (*.key.txt)</translation>
+        <translation>Файлы ключей (*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished">Неправильный формат открытого ключа</translation>
+        <translation>Неправильный формат открытого ключа</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation type="unfinished">Выбранный файл не содержит открытый ключ доступа к iTALC</translation>
+        <translation>Выбранный файл не содержит открытый ключ доступа к iTALC</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation type="unfinished">Выберите каталог назначения</translation>
+        <translation>Выберите каталог назначения</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation type="unfinished">Создание ключа доступа</translation>
+        <translation>Создание ключа доступа</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation type="unfinished">Не удается удалить ранее существующий файл %1.</translation>
+        <translation>Не удается удалить ранее существующий файл %1.</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation type="unfinished">Ошибка экспорта открытых ключей доступа из %1 в %2.</translation>
+        <translation>Ошибка экспорта открытых ключей доступа из %1 в %2.</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation type="unfinished">Ключи доступа были успешно созданы в %1 и %2.</translation>
+        <translation>Ключи доступа были успешно созданы в %1 и %2.</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation type="unfinished">Произошла ошибка при создании ключей доступа. Возможно, у выбранного каталога установлен запрет на запись.</translation>
+        <translation>Произошла ошибка при создании ключей доступа. Возможно, у выбранного каталога установлен запрет на запись.</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished">Импорт открытого ключа</translation>
+        <translation>Импорт открытого ключа</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation type="unfinished">Произошла ошибка при импорте открытого ключа доступа. Возможно, у файла, содержащего исходный ключ, установлен запрет на чтение или существует запрет на запись в каталоге, содержащем ключи (конечном каталоге).</translation>
+        <translation>Произошла ошибка при импорте открытого ключа доступа. Возможно, у файла, содержащего исходный ключ, установлен запрет на чтение или существует запрет на запись в каталоге, содержащем ключи (конечном каталоге).</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation type="unfinished">Открытый ключ был успешно импортирован в %1.</translation>
+        <translation>Открытый ключ был успешно импортирован в %1.</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished">блокировка экрана</translation>
+        <translation>блокировка экрана</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
+        <source>Logon group editor</source>
+        <translation>Редактор группы входа в систему</translation>
+    </message>
+    <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation type="unfinished">Пожалуйста, добавьте группы, члены которых могут иметь доступ к компьютерам в сети iTALC.</translation>
+        <translation>Пожалуйста, добавьте группы, члены которых могут иметь доступ к компьютерам в сети iTALC.</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation type="unfinished">Все группы</translation>
+        <translation>Все группы</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation type="unfinished">Группы с привилегиями iTALC</translation>
-    </message>
-    <message>
-        <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Группы с привилегиями iTALC</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">Действия</translation>
+        <translation>Действия</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation type="unfinished">Главное</translation>
+        <source>MainWindow</source>
+        <translation>Главное окно</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation type="unfinished">Выход</translation>
+        <source>toolBar</source>
+        <translation>Панель инструментов</translation>
+    </message>
+    <message>
+        <source>iTALC Management Console</source>
+        <translation>Консоль управления iTALC</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>Главное</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation type="unfinished">Сервер iTALC</translation>
+        <translation>Сервер iTALC</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation type="unfinished">Пути</translation>
+        <translation>Пути</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation type="unfinished">Аутентификация</translation>
+        <translation>Аутентификация</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>Отладка</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation type="unfinished">Сервис iTALC</translation>
+        <translation>Сервис iTALC</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation type="unfinished">Скрыть иконку в трее</translation>
+        <translation>Скрыть иконку в трее</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation type="unfinished">Автозапуск</translation>
+        <translation>Автозапуск</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation type="unfinished">Дополнительные параметры</translation>
+        <translation>Дополнительные параметры</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation type="unfinished">Запустить сервис</translation>
+        <translation>Запустить сервис</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation type="unfinished">Остановить сервис</translation>
+        <translation>Остановить сервис</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation type="unfinished">Состояние:</translation>
+        <translation>Состояние:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation type="unfinished">Остановлен</translation>
+        <translation>Остановлен</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Включение переключения рабочего стола для блокировки экрана (экспериментальная функция)</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation type="unfinished">Ведение журнала</translation>
+        <translation>Ведение журнала</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation type="unfinished">Каталог, содержащий файл журнала</translation>
+        <translation>Каталог, содержащий файл журнала</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Log level</source>
-        <translation type="unfinished">Уровень журналирования</translation>
+        <translation>Уровень журналирования</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation type="unfinished">Отключить журналирование</translation>
+        <translation>Отключить журналирование</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation type="unfinished">Только критические ошибки</translation>
+        <translation>Только критические ошибки</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation type="unfinished">Все ошибки</translation>
+        <translation>Все ошибки</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation type="unfinished">Предупреждения и ошибки</translation>
+        <translation>Предупреждения и ошибки</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation type="unfinished">Информационные сообщения, предупреждения и ошибки</translation>
+        <translation>Информационные сообщения, предупреждения и ошибки</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation type="unfinished">Все сообщения вместе с отладочной информацией</translation>
+        <translation>Все сообщения вместе с отладочной информацией</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation type="unfinished">Ограничить размер файла журнала</translation>
+        <translation>Ограничить размер файла журнала</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished">Мб</translation>
+        <translation>Мб</translation>
+    </message>
+    <message>
+        <source>Log to standard error output</source>
+        <translation>Обычное журналирование</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Журналирование в системный журнал событий</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation type="unfinished">Очистить все файлы журналов</translation>
+        <translation>Очистить все файлы журналов</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation type="unfinished">Захват рабочего стола</translation>
+        <translation>Захват рабочего стола</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation type="unfinished">Включить захват с помощью полупрозрачного окна</translation>
+        <translation>Включить захват с помощью полупрозрачного окна</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Опрос полного экрана (оставьте включенным по-умолчанию)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished">Низкая четкость (высокая скорость)</translation>
+        <translation>Низкая четкость (высокая скорость)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation type="unfinished">Демонстрационный сервер</translation>
+        <translation>Демонстрационный сервер</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>Внутренний интерфейс</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC reflector</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>iTALC 1 - демонстрационный сервер</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Сеть</translation>
+        <translation>Сеть</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation type="unfinished">Основной порт сервера</translation>
+        <translation>Основной порт сервера</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation type="unfinished">Порт демонстрационного сервера</translation>
+        <translation>Порт демонстрационного сервера</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation type="unfinished">Включить исключения рандмауэра</translation>
+        <translation>Включить исключения рандмауэра</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>Включить HTTP-сервер, предоставляющий апплет JavaViewer</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>Порт HTTP-сервера</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Разрешить только локальные подключения</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation type="unfinished">Конфигурационные файлы</translation>
+        <translation>Конфигурационные файлы</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation type="unfinished">Общие настройки</translation>
+        <translation>Общие настройки</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation type="unfinished">Персональные настройки</translation>
+        <translation>Персональные настройки</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation type="unfinished">Каталоги с данными</translation>
+        <translation>Каталоги с данными</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Снимки экрана</translation>
+        <translation>Снимки экрана</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation type="unfinished">Методы аутентификации</translation>
+        <translation>Методы аутентификации</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>Аутентификация с помощью ключа доступа</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>Аутентификация с помощью списков доступа (ACL)</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation type="unfinished">Управление ключами доступа</translation>
+        <translation>Управление ключами доступа</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>Каталог, содержащий открытые ключи</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>Каталог, содержащий закрытые ключи</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>Запустить помощник операций с ключем доступа</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation type="unfinished">Настройки входа в систему</translation>
+        <translation>Настройки входа в систему</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation type="unfinished">&Файл</translation>
+        <source>Manage permissions</source>
+        <translation>Управление разрешениями</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation type="unfinished">&Помощь</translation>
+        <source>Test</source>
+        <translation>Тестировать</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation type="unfinished">&Выход</translation>
+        <source>Access confirmation</source>
+        <translation>Подтверждение доступа</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation type="unfinished"></translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>Вы можете настроить iTALC так, что он будет спрашивать у пользователя разрешение на доступ к рабочему столу, используя определенные методы аутентификации.</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation type="unfinished">&Сохранить настройки в файл</translation>
+        <source>Logon authentication</source>
+        <translation>Аутентификация при входе в систему</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation type="unfinished">Сохранить настройки в файл</translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Предоставить пользователю доступ к рабочему столу без повторного подтверждения</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <source>Debugging iTALC</source>
+        <translation>Отладка iTALC</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation type="unfinished">Загрузить настройки из файла</translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>При возникновении ошибки или другого неожиданного поведения iTALC желательно сообщить об этом разработчикам. В этом случае ошибки могут быть исправлены в будущих версиях. На этой странице можно создать отчет об ошибке.
+
+Если ошибка повторно не воспроизводится, пропустите шаг 1) - 3).</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation type="unfinished">О программе iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>Очистите файлы журналов в разделе "Общие настройки".</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation type="unfinished">О пакете Qt</translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation type="unfinished"></translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>В разделе "Общие настройки" установите уровень журналирования в "Все сообщения вместе с отладочной информацией".</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation type="unfinished"></translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation type="unfinished">Консоль управления iTALC %1</translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Повторите действия, ведущие к ошибке или неправильному поведению программы.</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation type="unfinished">Работает</translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation type="unfinished">Загрузить настройки из файла</translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Нажмите следующую кнопку и сохраните файл</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation type="unfinished">Файлы XML (*.xml)</translation>
+        <source>Generate bug report archive</source>
+        <translation>Создать архив, содержащий отчет об ошибке</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation type="unfinished">Сохранить настройки в файл</translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation type="unfinished">Несохраненные настройки</translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Откройте <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">трекер ошибок iTALC</a>, откройте новую запись с ошибкой, опишите шаги, приводящие к ней (шаг 3) и прикрепите файл с отладочной информацией (шаг 4).</p>
+<br/>
+<br/>
+Замечание: Если ошибка возникает на главном комьютере и клиентском компьютере одновременно, отправьте оба отчета об ошибке.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation type="unfinished">Существуют несохраненные настройки. Выйти, не сохранив их?</translation>
+        <source>&File</source>
+        <translation>&Файл</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation type="unfinished">Файл конфигурации не доступен для записи</translation>
+        <source>&Help</source>
+        <translation>&Помощь</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation type="unfinished">Локальный сервер сообщил, что конфигурация защищена от записи. Запустите консоль управления iTALC с более высокими привилегиями.</translation>
+        <source>&Quit</source>
+        <translation>&Выход</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation type="unfinished">Все настройки были успешно применены.</translation>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation type="unfinished">Ошибка в применении параметров!</translation>
+        <source>&Save settings into file</source>
+        <translation>&Сохранить настройки в файл</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Сохранить настройки в файл</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>Загрузить настройки из файла</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>О программе iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>О пакете Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
-        <translation type="unfinished">iTALC</translation>
+        <translation>iTALC</translation>
     </message>
     <message>
         <source>No write access</source>
-        <translation type="unfinished">Нет доступа на запись</translation>
+        <translation>Нет доступа на запись</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished">Невозможно читать/писать или создать директорию %1! Для запуска iTALC убедитесь что у вас есть права на создания или запись в эту директорию.</translation>
+        <translation>Невозможно читать/писать или создать директорию %1! Для запуска iTALC убедитесь что у вас есть права на создания или запись в эту директорию.</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">Класс</translation>
+        <translation>Класс</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation type="unfinished">Переключить класс</translation>
+        <translation>Переключить класс</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished">Нажмите эту кнопку для открытия меню в котором можно выбрать активную классную комнату.</translation>
+        <translation>Нажмите эту кнопку для открытия меню в котором можно выбрать активную классную комнату.</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished">Нажмите эту кнопку для переключения между классами.</translation>
+        <translation>Нажмите эту кнопку для переключения между классами.</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation type="unfinished">Режим обзора</translation>
+        <translation>Режим обзора</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Обзор</translation>
+        <translation>Обзор</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished">Это режим iTALC по умолчанию и он позволяет выполнять обзор всех видимых компьютеров. Также нажатие на эту кнопку разблокирует блокированные рабочие станции или покинет демо-режим.</translation>
+        <translation>Это режим iTALC по умолчанию и он позволяет выполнять обзор всех видимых компьютеров. Также нажатие на эту кнопку разблокирует блокированные рабочие станции или покинет демо-режим.</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">Полноэкранное демо</translation>
+        <translation>Полноэкранное демо</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation type="unfinished">Полноэкранное Демо</translation>
+        <translation>Полноэкранное Демо</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation type="unfinished">Остановить Демо</translation>
+        <translation>Остановить Демо</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">В этом режиме ваш экран будет отображаться на всех видимых компьютерах. Пользователи будут заблокированы и не смогут ничего делать.</translation>
+        <translation>В этом режиме ваш экран будет отображаться на всех видимых компьютерах. Пользователи будут заблокированы и не смогут ничего делать.</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">Демо в окне</translation>
+        <translation>Демо в окне</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation type="unfinished">Демо в окне</translation>
+        <translation>Демо в окне</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">В этом режиме ваш экран будет отображаться на экране всех выбранных компьютеров. Пользователи могут переключаться на другие окна, но этот режим будет продолжать работать.</translation>
+        <translation>В этом режиме ваш экран будет отображаться на экране всех выбранных компьютеров. Пользователи могут переключаться на другие окна, но этот режим будет продолжать работать.</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation type="unfinished">Блокировать/разблокировать компьютеры</translation>
+        <translation>Блокировать/разблокировать компьютеры</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation type="unfinished">Заблокировать все</translation>
+        <translation>Заблокировать все</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation type="unfinished">Разблокировать все</translation>
+        <translation>Разблокировать все</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">Вы можете использовать эту кнопку для привлечения полного внимания всех пользователей и блокировки их настольных компьютеров. В этом режиме блокируются все устройства ввода и гасится экран монитора.</translation>
+        <translation>Вы можете использовать эту кнопку для привлечения полного внимания всех пользователей и блокировки их настольных компьютеров. В этом режиме блокируются все устройства ввода и гасится экран монитора.</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Послать текстовое сообщение</translation>
+        <translation>Послать текстовое сообщение</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished">Текстовое сообщение</translation>
+        <translation>Текстовое сообщение</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">Используйте эту кнопку для посылки текстового сообщения всем пользователям, например сказав им о новых задачах.</translation>
+        <translation>Используйте эту кнопку для посылки текстового сообщения всем пользователям, например сказав им о новых задачах.</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation type="unfinished">Включить компьютеры</translation>
+        <translation>Включить компьютеры</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Включить</translation>
+        <translation>Включить</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished">Нажмите эту кнопку для включения всех видимых компьютеров. Это позволит вам не включать каждый компьютер вручную.</translation>
+        <translation>Нажмите эту кнопку для включения всех видимых компьютеров. Это позволит вам не включать каждый компьютер вручную.</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation type="unfinished">Выключить компьютеры</translation>
+        <translation>Выключить компьютеры</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Выключить</translation>
+        <translation>Выключить</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished">Вы должны нажать эту кнопку для выключения всех отображаемых компьютеров (например после завершения урока).</translation>
+        <translation>Вы должны нажать эту кнопку для выключения всех отображаемых компьютеров (например после завершения урока).</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Поддержка</translation>
+        <translation>Поддержка</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation type="unfinished">Прямая поддержка</translation>
+        <translation>Прямая поддержка</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished">Если вам нужно поддерживать какой-нибудь пользователя на определенном компьютере, вы можете нажать на эту кнопку и ввести соответствующее имя компьютера или IP.</translation>
+        <translation>Если вам нужно поддерживать какой-нибудь пользователя на определенном компьютере, вы можете нажать на эту кнопку и ввести соответствующее имя компьютера или IP.</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation type="unfinished">Подогнать/выровнять</translation>
+        <translation>Подогнать/выровнять</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation type="unfinished">Подогнать окно под его размер</translation>
+        <translation>Подогнать окно под его размер</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished">При нажатии этой кнопки окна клиентов станут максимально возможного размера. Также все окна будут перерасположены.</translation>
+        <translation>При нажатии этой кнопки окна клиентов станут максимально возможного размера. Также все окна будут перерасположены.</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation type="unfinished">Авто вид</translation>
+        <translation>Авто вид</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished">Автоматическая расстановка окон и подгонка размеров</translation>
+        <translation>Автоматическая расстановка окон и подгонка размеров</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished">При нажатии на эту кнопку все видимые окна будут перераспределены и подогнаны по размеру.</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation type="unfinished">Основной Контроль iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation type="unfinished">Удаленное управление</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation type="unfinished">Не удалось изменить настройки автозапуска службы iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation type="unfinished">Не удалось изменить параметры для службы iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation type="unfinished">Невозможно изменить настройки брандмауэра для службы iTALC.</translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation type="unfinished">Отладка</translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished">Включение переключения рабочего стола для блокировки экрана (экспериментальная функция)</translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation type="unfinished">Обычное журналирование</translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation type="unfinished">Журналирование в системный журнал событий</translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation type="unfinished">iTALC 1 - демонстрационный сервер</translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished">Многопоточность (может быть включена при использовании VNC reflector backend)</translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished">Включить HTTP-сервер, предоставляющий апплет JavaViewer</translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation type="unfinished">Порт HTTP-сервера</translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation type="unfinished">Разрешить только локальные подключения</translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation type="unfinished">Аутентификация с помощью ключа доступа</translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation type="unfinished">Аутентификация с помощью списков доступа (ACL)</translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation type="unfinished">Каталог, содержащий открытые ключи</translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation type="unfinished">Каталог, содержащий закрытые ключи</translation>
-    </message>
-    <message>
-        <source>Launch key file assistant</source>
-        <translation type="unfinished">Запустить помощник операций с ключем доступа</translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation type="unfinished">Управление разрешениями</translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation type="unfinished">Тестировать</translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation type="unfinished">Подтверждение доступа</translation>
+        <translation>При нажатии на эту кнопку все видимые окна будут перераспределены и подогнаны по размеру.</translation>
     </message>
     <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished">Вы можете настроить iTALC так, что он будет спрашивать у пользователя разрешение на доступ к рабочему столу, используя определенные методы аутентификации.</translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation type="unfinished">Аутентификация при входе в систему</translation>
+        <source>Could not contact iTALC service</source>
+        <translation>Невозможно соединиться с сервисом iTALC</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished">Предоставить пользователю доступ к рабочему столу без повторного подтверждения</translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>Невозможно соединиться с локальным сервисом iTALC. Возможно, Вы неправильно указали учетные данные или не установили файлы, содержащие ключи доступа. Попробуйте повторить попытку соединения. В случае, если ошибка повториться вновь, обратитесь к Вашему администратору для ее решения с помощью консоли управления iTALC.</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation type="unfinished">Отладка iTALC</translation>
+        <source>iTALC Master Control</source>
+        <translation>Основной Контроль iTALC</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished">При возникновении ошибки или другого неожиданного поведения iTALC желательно сообщить об этом разработчикам. В этом случае ошибки могут быть исправлены в будущих версиях. На этой странице можно создать отчет об ошибке.
-
-Если ошибка повторно не воспроизводится, пропустите шаг 1) - 3).</translation>
+        <source>Authentication impossible</source>
+        <translation>Невозможно выполнить аутентификацию</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation type="unfinished"></translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>Не найдены файлы ключей аутентификации или они устарели. Пожалуйста, создайте новые файлы, используя консоль управления iTALC. Иначе Вы не сможете получить доступ к компьютерам с помощью iTALC.</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished">Очистите файлы журналов в разделе "Общие настройки".</translation>
+        <source>Remote control</source>
+        <translation>Удаленное управление</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation type="unfinished"></translation>
+        <source>Quit</source>
+        <translation>Выход</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished">В разделе "Общие настройки" установите уровень журналирования в "Все сообщения вместе с отладочной информацией".</translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>Не удалось изменить настройки автозапуска службы iTALC.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation type="unfinished"></translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>Не удалось изменить параметры для службы iTALC.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished">Повторите действия, ведущие к ошибке или неправильному поведению программы.</translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>Невозможно изменить настройки брандмауэра для службы iTALC.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation type="unfinished"></translation>
+        <source>Configuration not writable</source>
+        <translation>Файл конфигурации не доступен для записи</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished">Нажмите следующую кнопку и сохраните файл</translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>Локальный сервер сообщил, что конфигурация защищена от записи. Запустите консоль управления iTALC с более высокими привилегиями.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation type="unfinished">Создать архив, содержащий отчет об ошибке</translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Все настройки были успешно применены.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation type="unfinished"></translation>
+        <source>An error occured while applying settings!</source>
+        <translation>Ошибка в применении параметров!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished">Откройте <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">трекер ошибок iTALC</a>, откройте новую запись с ошибкой, опишите шаги, приводящие к ней (шаг 3) и прикрепите файл с отладочной информацией (шаг 4).</p>
-<br/>
-<br/>
-Замечание: Если ошибка возникает на главном комьютере и клиентском компьютере одновременно, отправьте оба отчета об ошибке.</translation>
+        <source>iTALC Management Console %1</source>
+        <translation>Консоль управления iTALC %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished">Перезапуск сервиса iTALC</translation>
+        <translation>Перезапуск сервиса iTALC</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished">Все настройки были успешно сохранены. Для того чтобы они вступили в силу необходимо перезапустить службу iTALC. Перезапустить ее сейчас?</translation>
+        <translation>Все настройки были успешно сохранены. Для того чтобы они вступили в силу необходимо перезапустить службу iTALC. Перезапустить ее сейчас?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished">Запуск сервиса iTALC</translation>
+        <translation>Запуск сервиса iTALC</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished">Остановка сервиса iTALC</translation>
+        <translation>Остановка сервиса iTALC</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>Работает</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>Служба iTALC должна быть временно приостановлена для того, чтобы удалить файлы журналов. Продолжить?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished">Файлы журналов были очищены</translation>
+        <translation>Файлы журналов были очищены</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished">Все файлы журналов были успешно очищены.</translation>
+        <translation>Все файлы журналов были успешно очищены.</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished">Ошибка</translation>
+        <translation>Ошибка</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished">Невозможно удалить все файлы журналов.</translation>
+        <translation>Невозможно удалить все файлы журналов.</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>Загрузить настройки из файла</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>Файлы XML (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Сохранить настройки в файл</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished">Тестирования аутентификации входа в систему</translation>
+        <translation>Тестирования аутентификации входа в систему</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished">Аутентификация учетных данных прошла успешно.</translation>
+        <translation>Аутентификация учетных данных прошла успешно.</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished">При прохождении аутентификации учетных данных возникли ошибки!</translation>
+        <translation>При прохождении аутентификации учетных данных возникли ошибки!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished">Сохранить архив, содрежащий отчет об ошибках</translation>
+        <translation>Сохранить архив, содрежащий отчет об ошибках</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished">Архив отчета об ошибках iTALC (*.ibra.xml)</translation>
+        <translation>Архив отчета об ошибках iTALC (*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished">Архив, содержащий отчет об ошибках iTALC, сохранен</translation>
+        <translation>Архив, содержащий отчет об ошибках iTALC, сохранен</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation type="unfinished">Невозможно соединиться с сервисом iTALC</translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished">Невозможно соединиться с локальным сервисом iTALC. Возможно, Вы неправильно указали учетные данные или не установили файлы, содержащие ключи доступа. Попробуйте повторить попытку соединения. В случае, если ошибка повториться вновь, обратитесь к Вашему администратору для ее решения с помощью консоли управления iTALC.</translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation type="unfinished">Невозможно выполнить аутентификацию</translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished">Не найдены файлы ключей аутентификации или они устарели. Пожалуйста, создайте новые файлы, используя консоль управления iTALC. Иначе Вы не сможете получить доступ к компьютерам с помощью iTALC.</translation>
-    </message>
-    <message>
-        <source>iTALC Management Console</source>
-        <translation type="unfinished"></translation>
+        <translation>Заархивированное сообщение об ошибке iTALC было сохранено в %1. Оно включает в себя файлы журналов iTALC и информацию о вашей операционной системе. Вы можете прикрепить его к сообщению об ошибке.</translation>
     </message>
     <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Несохраненные настройки</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation type="unfinished">Сообщение для учителя</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Существуют несохраненные настройки. Выйти, не сохранив их?</translation>
     </message>
 </context>
 <context>
@@ -1414,66 +1482,66 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Добро пожаловать в iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished">Здесь вы видите на рабочую панель, которая содержит несколько кнопок. Каждая кнопка ведет к рабочей области. Просто взгляните на имеющиеся рабочие  области, нажав на соответствующую кнопку.</translation>
+        <translation>Здесь вы видите на рабочую панель, которая содержит несколько кнопок. Каждая кнопка ведет к рабочей области. Просто взгляните на имеющиеся рабочие  области, нажав на соответствующую кнопку.</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished">С помощью менеджера классов вы можете управлять классами и компьютерами. Вы также можете видеть подключенных пользователей.</translation>
+        <translation>С помощью менеджера классов вы можете управлять классами и компьютерами. Вы также можете видеть подключенных пользователей.</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished">Рабочая область снимков очень мощный инструмент. Он позволяет управлять сделанными вами снимками.</translation>
+        <translation>Рабочая область снимков очень мощный инструмент. Он позволяет управлять сделанными вами снимками.</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished">Конечно же вы можете настроить iTALC. Это можно сделать в соответствующей области.</translation>
+        <translation>Конечно же вы можете настроить iTALC. Это можно сделать в соответствующей области.</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">О программе iTALC</translation>
+        <translation>О программе iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Обзор</translation>
+        <translation>Обзор</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished">Начальная информация о iTALC и его использовании.</translation>
+        <translation>Начальная информация о iTALC и его использовании.</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>Вход в систему iTALC</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation type="unfinished">Пожалуйста, введите имя пользователя и пароль для доступа клиентских компьютеров к iTALC.</translation>
+        <translation>Пожалуйста, введите имя пользователя и пароль для доступа клиентских компьютеров к iTALC.</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Имя пользователя</translation>
+        <translation>Имя пользователя</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Пароль</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation type="unfinished">Вход в систему iTALC</translation>
+        <translation>Пароль</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Управлять</translation>
     </message>
 </context>
 <context>
@@ -1535,118 +1603,118 @@ p, li { white-space: pre-wrap; }
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation type="unfinished">Живой просмотр (%1 @ %2)</translation>
+        <translation>Живой просмотр (%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation type="unfinished">Удаленное управление (%1 @ %2)</translation>
+        <translation>Удаленное управление (%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">неизвестный пользователь</translation>
+        <translation>неизвестный пользователь</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished">Только обзор</translation>
+        <translation>Только обзор</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Удаленное управление</translation>
+        <translation>Удаленное управление</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished">Заблокировать студента</translation>
+        <translation>Заблокировать студента</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished">Разблокировать студента</translation>
+        <translation>Разблокировать студента</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Снимок экрана</translation>
+        <translation>Снимок экрана</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">На весь экран</translation>
+        <translation>На весь экран</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished">В окне</translation>
+        <translation>В окне</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished">Выход</translation>
+        <translation>Выход</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished">Соединение с %1</translation>
+        <translation>Соединение с %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished">Подключен.</translation>
+        <translation>Подключен.</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">Удаленный вход</translation>
+        <translation>Удаленный вход</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished">Используйте приведенные ниже поля для ввода имени пользователя, пароля и необязательного названия домена. Эта информация будет использована для входа в систему(ы).</translation>
+        <translation>Используйте приведенные ниже поля для ввода имени пользователя, пароля и необязательного названия домена. Эта информация будет использована для входа в систему(ы).</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">Имя пользователя</translation>
+        <translation>Имя пользователя</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">Пароль</translation>
+        <translation>Пароль</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">Домен</translation>
+        <translation>Домен</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished">Выполнить команды</translation>
+        <translation>Выполнить команды</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished">Пожалуйста, введите команды для их выполнения на выбранных клиентских компьютерах. Вы можете записать несколько команд, по одной в строке.</translation>
+        <translation>Пожалуйста, введите команды для их выполнения на выбранных клиентских компьютерах. Вы можете записать несколько команд, по одной в строке.</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>неизвестный</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished">Невозможно сделать снимок экрана, так как директория %1 не существует и не может быть создана.</translation>
+        <translation>Невозможно сделать снимок экрана, так как директория %1 не существует и не может быть создана.</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">Снимок экрана</translation>
+        <translation>Снимок экрана</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">Снимки экрана</translation>
+        <translation>Снимки экрана</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">Вы можете легко управлять снимками, используя эту рабочую область.</translation>
+        <translation>Вы можете легко управлять снимками, используя эту рабочую область.</translation>
     </message>
 </context>
 <context>
@@ -1654,124 +1722,124 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Здесь перечислены все сделанные вами снимки. Вы можете делать снимки, выбрав соответствующую запись в  контекстном меню окна клиента. Этими снимками можно управлять с помощью расположенных ниже кнопок.</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">Пользователь:</translation>
+        <translation>Пользователь:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">Компьютер:</translation>
+        <translation>Компьютер:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">Дата:</translation>
+        <translation>Дата:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">Время:</translation>
+        <translation>Время:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished">Показать</translation>
+        <translation>Показать</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Удалить</translation>
+        <translation>Удалить</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">Поддержка</translation>
+        <translation>Поддержка</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished">Пожалуйста, введите IP-адрес или имя хоста, к которому вы хотите подключиться.</translation>
+        <translation>Пожалуйста, введите IP-адрес или имя хоста, к которому вы хотите подключиться.</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Послать текстовое сообщение</translation>
+        <translation>Послать текстовое сообщение</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">Используйте это поле снизу для набора сообщения, которое хотите послать всем выбранным пользователям.</translation>
+        <translation>Используйте это поле снизу для набора сообщения, которое хотите послать всем выбранным пользователям.</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">Восстановление соединения с %1 ...</translation>
+        <translation>Восстановление соединения с %1 ...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">Обзор</translation>
+        <translation>Обзор</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">Полноэкранное демо</translation>
+        <translation>Полноэкранное демо</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">Демо в окне</translation>
+        <translation>Демо в окне</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">Заблокированный дисплей</translation>
+        <translation>Заблокированный дисплей</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">Прямая трансляция</translation>
+        <translation>Прямая трансляция</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">Удаленное управление</translation>
+        <translation>Удаленное управление</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">Разрешить учащемуся показать демо</translation>
+        <translation>Разрешить учащемуся показать демо</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">Послать текстовое сообщение</translation>
+        <translation>Послать текстовое сообщение</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">Завершить работу</translation>
+        <translation>Завершить работу</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">Сделать снимок экрана</translation>
+        <translation>Сделать снимок экрана</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">Включить</translation>
+        <translation>Включить</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">Перезагрузить</translation>
+        <translation>Перезагрузить</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">Выключить</translation>
+        <translation>Выключить</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">Запустить команду</translation>
+        <translation>Запустить команду</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/sk.qm b/lib/resources/sk.qm
deleted file mode 100644
index 52eb07f..0000000
Binary files a/lib/resources/sk.qm and /dev/null differ
diff --git a/lib/resources/sk.ts b/lib/resources/sk.ts
index 5401661..46da288 100644
--- a/lib/resources/sk.ts
+++ b/lib/resources/sk.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="sk_SK">
+<TS version="2.1" language="sk_SK">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Licencia</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -447,6 +447,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Za [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -601,11 +701,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -613,15 +713,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/sl.qm b/lib/resources/sl.qm
deleted file mode 100644
index 12929e6..0000000
Binary files a/lib/resources/sl.qm and /dev/null differ
diff --git a/lib/resources/sl.ts b/lib/resources/sl.ts
index f5b4d5f..b81a37b 100644
--- a/lib/resources/sl.ts
+++ b/lib/resources/sl.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Dovoljenja</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -448,6 +448,106 @@ p, li { white-space: pre-wrap; }(new line)
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Ne [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -602,11 +702,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -614,15 +714,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/sv.qm b/lib/resources/sv.qm
deleted file mode 100644
index 7d58928..0000000
Binary files a/lib/resources/sv.qm and /dev/null differ
diff --git a/lib/resources/sv.ts b/lib/resources/sv.ts
index 5ab525e..a01288d 100644
--- a/lib/resources/sv.ts
+++ b/lib/resources/sv.ts
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="sv">
+<TS version="2.1" language="sv">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">Om iTALC</translation>
+        <translation>Om iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">Om</translation>
+        <translation>Om</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Licens</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -447,6 +447,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Observera att vissa  [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -605,11 +705,11 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
         <source>The following actions will be taken:</source>
         <translation type="unfinished">Följande åtgärder kommer att genomföras:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished">• Skapa nya åtkomstnycklar</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished">• Importera publik åtkomstnyckel från</translation>
     </message>
@@ -617,15 +717,15 @@ Den publika delen används på klientdatorerna för att verifiera att inkommande
         <source><unknown></source>
         <translation type="unfinished"><okänt></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished">• Skriv åtkomstnycklar till</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished">• Exportera publik nyckel till</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished">• Konfigurera för användarrollen</translation>
     </message>
diff --git a/lib/resources/tr.qm b/lib/resources/tr.qm
deleted file mode 100644
index 4fd2868..0000000
Binary files a/lib/resources/tr.qm and /dev/null differ
diff --git a/lib/resources/tr.ts b/lib/resources/tr.ts
index 7afc406..92b3354 100644
--- a/lib/resources/tr.ts
+++ b/lib/resources/tr.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -33,7 +33,7 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation type="unfinished">Lisans</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>iTALC - Intelligent Teaching And Learning with Computers
 
 Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
@@ -444,6 +444,106 @@ p, li { white-space: pre-wrap; }
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
         <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Un [...]
     </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfigWidget</name>
@@ -598,11 +698,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation type="unfinished"></translation>
     </message>
@@ -610,15 +710,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/lib/resources/uk.qm b/lib/resources/uk.qm
deleted file mode 100644
index 717cb4b..0000000
Binary files a/lib/resources/uk.qm and /dev/null differ
diff --git a/lib/resources/uk.ts b/lib/resources/uk.ts
index bb6713a..92eb874 100644
--- a/lib/resources/uk.ts
+++ b/lib/resources/uk.ts
@@ -1,6 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="uk_UA">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="uk" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -12,6 +10,14 @@
         <translation>Про програму</translation>
     </message>
     <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC — інтелектуальна система викладання та навчання за допомогою комп’ютерів,
+
+© Tobias Doerffel / iTALC Solutions, 2004-2016</translation>
+    </message>
+    <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
         <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
@@ -35,24 +41,10 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation>Ліцензування</translation>
     </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation>Ніколи протягом цього сеансу</translation>
-    </message>
-    <message>
-        <source>Always for this session</source>
-        <translation>Завжди протягом цього сеансу</translation>
-    </message>
-    <message>
         <source>Confirm desktop access</source>
         <translation>Підтвердження доступу</translation>
     </message>
@@ -60,6 +52,14 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
         <translation>Користувач %1 з вузла %2 бажає отримати доступ до вашої системи. Надасте йому доступ?</translation>
     </message>
+    <message>
+        <source>Never for this session</source>
+        <translation>Ніколи протягом цього сеансу</translation>
+    </message>
+    <message>
+        <source>Always for this session</source>
+        <translation>Завжди протягом цього сеансу</translation>
+    </message>
 </context>
 <context>
     <name>ClassroomManager</name>
@@ -96,8 +96,8 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation>Щоб додати або вилучити комп’ютери і/або класи, скористайтеся контекстним меню (клацання правою кнопкою).</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation>Експорт до текстового файла</translation>
+        <source>Export to text file</source>
+        <translation>Експортувати до текстового файла</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
@@ -144,30 +144,24 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation>Додати клас</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation>Не знайдено файла налаштувань</translation>
+        <source>No configuration file found</source>
+        <translation>Файла налаштувань не знайдено</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation>Не вдалося відкрити файл налаштувань %1.
-Вам слід додати хоча б один клас та його комп’ютери за допомогою керування класами на бічній панелі програми ліворуч.</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>Не вдалося відкрити файл налаштувань %1. Вам слід додати принаймні одну класну кімнату та комп’ютери за допомогою засобу керування класними кімнатами, доступ до якого можна отримати за допомогою лівої бічної панелі основного вікна програми.</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
+        <source>Error in configuration file</source>
         <translation>Помилка у файлі налаштувань</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation>Помилка під час обробки файла налаштувань %1.
-Будь ласка, змініть його. Якщо ви не можете цього зробити, вам слід вилучити цей файл і виконати додавання всіх класів та комп’ютерів знову.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>Помилка під час спроби обробити файл налаштувань %1. Будь ласка, виправте її вручну. Якщо ви цього не зробите, вам доведеться вилучити файл і додати усі класні кімнати та комп’ютери знову.</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation>Помилка під час розбору файла налаштувань %1.
-Будь ласка, змініть його. Якщо ви не можете цього зробити, вам слід вилучити цей файл.</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>Помилка під час спроби обробити файл налаштувань %1. Будь ласка, виправте її вручну. Якщо ви цього не зробите, вам доведеться вилучити файл.</translation>
     </message>
     <message>
         <source>Select output-file</source>
@@ -244,6 +238,10 @@ Do you want to create a new classrom now?</source>
         <source>Desktop locked</source>
         <translation>Стільницю заблоковано</translation>
     </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>Повідомлення від вчителя</translation>
+    </message>
 </context>
 <context>
     <name>ClientAction</name>
@@ -283,14 +281,6 @@ Do you want to create a new classrom now?</source>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation>Некоректна MAC-адреса</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation>Вами вказано некоректну MAC-адресу. Ви можете або залишити це поле порожнім, або ввести коректну MAC-адресу (використовуйте ":" для відокремлення її частин!).</translation>
-    </message>
-    <message>
         <source>Client settings</source>
         <translation>Параметри клієнта</translation>
     </message>
@@ -346,6 +336,14 @@ Do you want to create a new classrom now?</source>
         <source>You didn't specify an IP address or hostname for the computer!</source>
         <translation>Вами не вказано IP-адреси або назви вузла комп’ютера!</translation>
     </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>Некоректна MAC-адреса</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>Вами вказано некоректну MAC-адресу. Або не заповнюйте відповідне поле, або вкажіть коректну MAC-адресу (використовуйте роздільник «:»!).</translation>
+    </message>
 </context>
 <context>
     <name>Config</name>
@@ -386,13 +384,113 @@ Do you want to create a new classrom now?</source>
         <translation>Без тексту на кнопках інструментів</translation>
     </message>
     <message>
+        <source>Language:</source>
+        <translation>Мова:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>Типова для системи</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>арабська</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>чеська</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>німецька</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>грецька</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>іспанська</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>фінська</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>французька</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>іврит</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>угорська</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>італійська</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>голландська</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>норвезька</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>польська</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>бразильська португальська</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>португальська</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>російська</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>словацька</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>словенська</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>шведська</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>турецька</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>китайська (спрощена)</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>китайська (традиційна)</translation>
+    </message>
+    <message>
         <source>Your role (needs according keys!)</source>
         <translation>Ваша роль (потрібні відповідні ключі!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -416,21 +514,13 @@ p, li { white-space: pre-wrap; }
         <translation>Інша</translation>
     </message>
     <message>
-        <source>Settings for multi-logon</source>
-        <translation>Параметри для одночасного входження</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation>Домен</translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
-        <translation>Дія за подвійним клацанням на вікні клієнта</translation>
+        <source>Double click action for client window</source>
+        <translation>Дія у відповідь на подвійне клацання у клієнтському вікні</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -462,13 +552,6 @@ p, li { white-space: pre-wrap; }
     </message>
 </context>
 <context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation>Гаразд</translation>
-    </message>
-</context>
-<context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
@@ -482,7 +565,7 @@ p, li { white-space: pre-wrap; }
         <translation>Помилка розпізнавання</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
         <translation>Хтось (IP: %1) намагався отримати доступ до цього комп’ютера, але не зміг пройти розпізнавання!</translation>
     </message>
 </context>
@@ -544,10 +627,6 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Створити ключі доступу (головний комп’ютер)</translation>
     </message>
     <message>
-        <source>assistantModeButtonGroup</source>
-        <translation>assistantModeButtonGroup</translation>
-    </message>
-    <message>
         <source>Import public key (client computer)</source>
         <translation>Імпортувати відкритий ключ (клієнтський комп’ютер)</translation>
     </message>
@@ -607,11 +686,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation>Буде виконано такі дії:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>• Створено нові ключі доступу</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>• Імпортовано відкритий ключ доступу з</translation>
     </message>
@@ -619,15 +698,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation><невідомо></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• Записано ключі доступу до</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• Експортовано відкритий ключ до</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>• Налаштовано роль користувача</translation>
     </message>
@@ -724,18 +803,22 @@ The public key part is used on the client computers to verify that any incoming
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation>Загальні</translation>
+        <source>MainWindow</source>
+        <translation>Головне вікно</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation>Вийти</translation>
+        <source>toolBar</source>
+        <translation>Панель інструментів</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
         <translation>Консоль керування iTALC</translation>
     </message>
     <message>
+        <source>General</source>
+        <translation>Загальні</translation>
+    </message>
+    <message>
         <source>iTALC Server</source>
         <translation>Сервер iTALC</translation>
     </message>
@@ -748,6 +831,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Розпізнавання</translation>
     </message>
     <message>
+        <source>Debugging</source>
+        <translation>Діагностика</translation>
+    </message>
+    <message>
         <source>iTALC Service</source>
         <translation>Служба iTALC</translation>
     </message>
@@ -780,6 +867,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Зупинено</translation>
     </message>
     <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>Увімкнути перемикання стільниць для блокування екрана (експериментальне)</translation>
+    </message>
+    <message>
         <source>Logging</source>
         <translation>Ведення журналу</translation>
     </message>
@@ -828,6 +919,14 @@ The public key part is used on the client computers to verify that any incoming
         <translation>МБ</translation>
     </message>
     <message>
+        <source>Log to standard error output</source>
+        <translation>Виводити повідомлення до стандартного виводу помилок</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>Вести журнал у журналі подій Windows</translation>
+    </message>
+    <message>
         <source>Clear all log files</source>
         <translation>Спорожнити всі файли журналу</translation>
     </message>
@@ -840,6 +939,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Увімкнути захоплення шарів (напівпрозорих) вікон</translation>
     </message>
     <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>Повноекранний режим (залиште це типово увімкненим)</translation>
+    </message>
+    <message>
         <source>Low accuracy (turbo mode)</source>
         <translation>Низька точність (турбо-режим)</translation>
     </message>
@@ -848,6 +951,18 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Демосервер</translation>
     </message>
     <message>
+        <source>Backend</source>
+        <translation>Сервер</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC reflector</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>Демосервер iTALC 1</translation>
+    </message>
+    <message>
         <source>Network</source>
         <translation>Мережа</translation>
     </message>
@@ -864,6 +979,18 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Увімкнути виключення брандмауера</translation>
     </message>
     <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>Увімкнути HTTP-сервер, який надає доступ до аплету JavaViewer</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>Порт HTTP-сервера</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>Дозволити з’єднання лише з локального вузла</translation>
+    </message>
+    <message>
         <source>Configuration files</source>
         <translation>Файли налаштувань</translation>
     </message>
@@ -888,108 +1015,162 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Способи розпізнавання</translation>
     </message>
     <message>
-        <source>Access key management</source>
-        <translation>Керування ключами доступу</translation>
+        <source>Key file authentication</source>
+        <translation>Розпізнавання за файлами ключів</translation>
     </message>
     <message>
-        <source>Logon settings</source>
-        <translation>Параметри входу</translation>
+        <source>ACL-based logon authentication</source>
+        <translation>Розпізнавання під час входу на основі ACL</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation>&Файл</translation>
+        <source>Access key management</source>
+        <translation>Керування ключами доступу</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation>&Довідка</translation>
+        <source>Public key file base directory</source>
+        <translation>Основний каталог файлів відкритих ключів</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation>Ви&йти</translation>
+        <source>Private key file base directory</source>
+        <translation>Основний каталог файлів закритих ключів</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation>Ctrl+Q</translation>
+        <source>Launch key file assistant</source>
+        <translation>Запустити помічника файлів ключів</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation>&Зберегти параметри до файла</translation>
+        <source>Logon settings</source>
+        <translation>Параметри входу</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation>Зберегти параметри до файла</translation>
+        <source>Manage permissions</source>
+        <translation>Керування правами доступу</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation>Ctrl+S</translation>
+        <source>Test</source>
+        <translation>Перевірити</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation>З&авантажити параметри з файла</translation>
+        <source>Access confirmation</source>
+        <translation>Підтвердження доступу</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation>Ctrl+O</translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>Ви можете налаштувати iTALC так, щоб програма запитувала користувача про права доступу до стільниці у разі використання певних способів розпізнавання.</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation>Про програму iTALC</translation>
+        <source>Logon authentication</source>
+        <translation>Розпізнавання під час входу</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation>Про Qt</translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>Дозволити користувачеві доступ до стільниці без підтвердження</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation>Головне вікно</translation>
+        <source>Debugging iTALC</source>
+        <translation>Діагностика iTALC</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation>Панель інструментів</translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>Якщо у вас виникли проблеми або якісь інші негаразди з iTALC, важливо повідомити про них розробникам, щоб ці проблеми було вирішено у наступних випусках. За допомогою цієї сторінки ви зможете без проблем створити якісний звіт щодо вади.
+
+Якщо ваду не вдається відтворити, пропустіть кроки 1) — 3).</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation>Консоль керування iTALC %1</translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation>Запущено</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>Спорожніть файли журналів у розділі «Загальні».</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation>Завантажити параметри з файла</translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation>Файли XML (*.xml)</translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>У розділі «Загальні» встановіть рівень ведення журналу у значення «Діагностичні повідомлення та все інше».</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation>Зберегти параметри до файла</translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation>Незбережені параметри</translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>Повторіть послідовність дій, яка призвела до проблеми або некоректної поведінки.</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation>Деякі з параметрів не збережено. Завершити роботу попри це?</translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation>Не вдалося записати налаштування</translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>Натисніть наведену нижче кнопку і збережіть файл до якоїсь з ваших тек.</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation>Локальним модулем налаштувань було повідомлено про неможливість запису налаштувань! Будь ласка, запустіть консоль керування iTALC з розширеними правами доступу.</translation>
+        <source>Generate bug report archive</source>
+        <translation>Створити архів звіту щодо вади</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation>Всі значення параметрів успішно застосовано.</translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation>Під час спроби застосування параметрів сталася помилка!</translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>Перейдіть на сторінку <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">стеження за вадами у iTALC</a>, створіть повідомлення щодо вади, опишіть ваші дії на кроці 3) і долучіть файл, збережений на кроці 4).</p>
+<br/>
+<br/>
+Зауваження: якщо ваду виявлено на головному і клієнтському комп’ютерах одночасно, долучіть архіви звітів щодо вади для обох комп’ютерів.</translation>
+    </message>
+    <message>
+        <source>&File</source>
+        <translation>&Файл</translation>
+    </message>
+    <message>
+        <source>&Help</source>
+        <translation>&Довідка</translation>
+    </message>
+    <message>
+        <source>&Quit</source>
+        <translation>Ви&йти</translation>
+    </message>
+    <message>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
+    </message>
+    <message>
+        <source>&Save settings into file</source>
+        <translation>&Зберегти параметри до файла</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>Зберегти параметри до файла</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>З&авантажити параметри з файла</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>Про програму iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>Про Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
@@ -1148,174 +1329,64 @@ The public key part is used on the client computers to verify that any incoming
         <translation>Якщо ви натиснете цю кнопку, всі видимі вікна буде перевпорядковано з підбиранням розміру.</translation>
     </message>
     <message>
-        <source>iTALC Master Control</source>
-        <translation>Головне керування iTALC</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation>Віддалене керування</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation>Не вдалося змінити параметр автоматичного запуску служби iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation>Не вдалося змінити параметри служби iTALC.</translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation>Не вдалося змінити налаштування брандмауера для служби iTALC.</translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation>Діагностика</translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation>Увімкнути перемикання стільниць для блокування екрана (експериментальне)</translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation>Виводити повідомлення до стандартного виводу помилок</translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation>Вести журнал у журналі подій Windows</translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation>Сервер</translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation>VNC reflector</translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation>Демосервер iTALC 1</translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation>Обробка у декілька потоків (можна скористатися, якщо використано сервер VNC reflector)</translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation>Увімкнути HTTP-сервер, який надає доступ до аплету JavaViewer</translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation>Порт HTTP-сервера</translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation>Дозволити з’єднання лише з локального вузла</translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation>Розпізнавання за файлами ключів</translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation>Розпізнавання під час входу на основі ACL</translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation>Основний каталог файлів відкритих ключів</translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation>Основний каталог файлів закритих ключів</translation>
-    </message>
-    <message>
-        <source>Launch key file assistant</source>
-        <translation>Запустити помічника файлів ключів</translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation>Керування правами доступу</translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation>Перевірити</translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation>Підтвердження доступу</translation>
-    </message>
-    <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation>Ви можете налаштувати iTALC так, щоб програма запитувала користувача про права доступу до стільниці у разі використання певних способів розпізнавання.</translation>
-    </message>
-    <message>
-        <source>Logon authentication</source>
-        <translation>Розпізнавання під час входу</translation>
+        <source>Could not contact iTALC service</source>
+        <translation>Не вдалося встановити зв’язок зі службою iTALC</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation>Дозволити користувачеві доступ до стільниці без підтвердження</translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>Не вдалося встановити зв’язок з локальною службою iTALC. Ймовірно, вами було вказано помилкові реєстраційні дані або файли ключів встановлено з помилками. Повторіть спробу або повідомте адміністратору вашої системи про те, що слід вирішити проблему з використанням консолі керування iTALC.</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation>Діагностика iTALC</translation>
+        <source>iTALC Master Control</source>
+        <translation>Головне керування iTALC</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation>Якщо у вас виникли проблеми або якісь інші негаразди з iTALC, важливо повідомити про них розробникам, щоб ці проблеми було вирішено у наступних випусках. За допомогою цієї сторінки ви зможете без проблем створити якісний звіт щодо вади.
-
-Якщо ваду не вдається відтворити, пропустіть кроки 1) — 3).</translation>
+        <source>Authentication impossible</source>
+        <translation>Розпізнавання неможливе</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation>1)</translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>Не було знайдено файлів ключів розпізнавання або поточні файли є застарілими. Будь ласка, створіть нові файли ключів за допомогою консолі керування iTALC. Крім того, ви можете налаштувати розпізнавання під час входу до системи за допомогою консолі керування iTALC. Якщо ви не налаштуйте розпізнавання, ви не зможете отримати доступ до комп’ютерів за допомогою iTALC.</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation>Спорожніть файли журналів у розділі «Загальні».</translation>
+        <source>Remote control</source>
+        <translation>Віддалене керування</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation>2)</translation>
+        <source>Quit</source>
+        <translation>Вийти</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation>У розділі «Загальні» встановіть рівень ведення журналу у значення «Діагностичні повідомлення та все інше».</translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>Не вдалося змінити параметр автоматичного запуску служби iTALC.</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation>3)</translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>Не вдалося змінити параметри служби iTALC.</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation>Повторіть послідовність дій, яка призвела до проблеми або некоректної поведінки.</translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>Не вдалося змінити налаштування брандмауера для служби iTALC.</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation>4)</translation>
+        <source>Configuration not writable</source>
+        <translation>Не вдалося записати налаштування</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation>Натисніть наведену нижче кнопку і збережіть файл до якоїсь з ваших тек.</translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>Локальним модулем налаштувань було повідомлено про неможливість запису налаштувань! Будь ласка, запустіть консоль керування iTALC з розширеними правами доступу.</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation>Створити архів звіту щодо вади</translation>
+        <source>All settings were applied successfully.</source>
+        <translation>Всі значення параметрів успішно застосовано.</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation>5)</translation>
+        <source>An error occured while applying settings!</source>
+        <translation>Під час спроби застосування параметрів сталася помилка!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation>Перейдіть на сторінку <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">стеження за вадами у iTALC</a>, створіть повідомлення щодо вади, опишіть ваші дії на кроці 3) і долучіть файл, збережений на кроці 4).</p>
-<br/>
-<br/>
-Зауваження: якщо ваду виявлено на головному і клієнтському комп’ютерах одночасно, долучіть архіви звітів щодо вади для обох комп’ютерів.</translation>
+        <source>iTALC Management Console %1</source>
+        <translation>Консоль керування iTALC %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
@@ -1334,6 +1405,10 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>Зупиняється служба iTALC</translation>
     </message>
     <message>
+        <source>Running</source>
+        <translation>Запущено</translation>
+    </message>
+    <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
         <translation>З метою вилучення файлів журналу роботу служби iTALC слід тимчасово зупинити. Зробити це?</translation>
     </message>
@@ -1354,6 +1429,18 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>Не вдалося вилучити всі файли журналу.</translation>
     </message>
     <message>
+        <source>Load settings from file</source>
+        <translation>Завантажити параметри з файла</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>Файли XML (*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>Зберегти параметри до файла</translation>
+    </message>
+    <message>
         <source>Logon authentication test</source>
         <translation>Перевірка розпізнавання під час входу</translation>
     </message>
@@ -1382,31 +1469,12 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>Архів звіту щодо вади iTALC було збережено до %1. До архіву включено файли журналу iTALC та дані щодо вашої операційної системи. Ви можете долучити архів до вашого звіту щодо вади.</translation>
     </message>
     <message>
-        <source>Could not contact iTALC service</source>
-        <translation>Не вдалося встановити зв’язок зі службою iTALC</translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation>Не вдалося встановити зв’язок з локальною службою iTALC. Ймовірно, вами було вказано помилкові реєстраційні дані або файли ключів встановлено з помилками. Повторіть спробу або повідомте адміністратору вашої системи про те, що слід вирішити проблему з використанням консолі керування iTALC.</translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation>Розпізнавання неможливе</translation>
-    </message>
-    <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation>Не було знайдено файлів ключів розпізнавання або поточні файли є застарілими. Будь ласка, створіть нові файли ключів за допомогою консолі керування iTALC. Крім того, ви можете налаштувати розпізнавання під час входу до системи за допомогою консолі керування iTALC. Якщо ви не налаштуйте розпізнавання, ви не зможете отримати доступ до комп’ютерів за допомогою iTALC.</translation>
-    </message>
-    <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>Незбережені параметри</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation>Повідомлення від вчителя</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>Деякі з параметрів не збережено. Завершити роботу попри це?</translation>
     </message>
 </context>
 <context>
@@ -1414,7 +1482,7 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -1456,6 +1524,10 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>Вхід до iTALC</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
         <translation>Будь ласка, вкажіть ваше ім’я користувача та пароль, щоб отримати доступ до клієнтів iTALC.</translation>
     </message>
@@ -1468,12 +1540,8 @@ p, li { white-space: pre-wrap; }
         <translation>Пароль</translation>
     </message>
     <message>
-        <source>iTALC Logon</source>
-        <translation>Вхід до iTALC</translation>
-    </message>
-    <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>Керування</translation>
     </message>
 </context>
 <context>
@@ -1654,7 +1722,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -1774,4 +1842,4 @@ p, li { white-space: pre-wrap; }
         <translation>Виконати команди</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/zh_cn.qm b/lib/resources/zh_cn.qm
deleted file mode 100644
index d702f79..0000000
Binary files a/lib/resources/zh_cn.qm and /dev/null differ
diff --git a/lib/resources/zh_cn.ts b/lib/resources/zh_cn.ts
index 63496d1..c25452a 100644
--- a/lib/resources/zh_cn.ts
+++ b/lib/resources/zh_cn.ts
@@ -1,521 +1,606 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="zh_CN">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">关于 iTALC</translation>
+        <translation>关于 iTALC</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished">关于</translation>
+        <translation>关于</translation>
+    </message>
+    <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
     </message>
     <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
-        <translation type="unfinished"></translation>
+        <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
     <message>
         <source>Authors</source>
-        <translation type="unfinished">作者</translation>
+        <translation>作者</translation>
     </message>
     <message>
         <source>Translation</source>
-        <translation type="unfinished">翻译</translation>
+        <translation>翻译</translation>
     </message>
     <message>
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation type="unfinished"></translation>
+        <translation>TeliuTe<teliute at 163.com>, 2014, 2016.
+
+如果您想参与 iTALC 翻译,或是对当前翻译提出建议,请与 iTALC 开发者联系。</translation>
     </message>
     <message>
         <source>License</source>
-        <translation type="unfinished">许可</translation>
-    </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
+        <translation>许可</translation>
     </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
     <message>
-        <source>Never for this session</source>
-        <translation type="unfinished">从不使用这个会话</translation>
+        <source>Confirm desktop access</source>
+        <translation>确认访问桌面</translation>
     </message>
     <message>
-        <source>Always for this session</source>
-        <translation type="unfinished">一直使用这个会话</translation>
+        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
+        <translation>位于 %2 上的用户 %1,想要访问您的桌面,是否允许?</translation>
     </message>
     <message>
-        <source>Confirm desktop access</source>
-        <translation type="unfinished"></translation>
+        <source>Never for this session</source>
+        <translation>从不使用这个会话</translation>
     </message>
     <message>
-        <source>The user %1 at host %2 wants to access your desktop. Do you want to grant access?</source>
-        <translation type="unfinished"></translation>
+        <source>Always for this session</source>
+        <translation>总是使用此会话</translation>
     </message>
 </context>
 <context>
     <name>ClassroomManager</name>
     <message>
         <source>Classroom-Manager</source>
-        <translation type="unfinished">班级管理</translation>
+        <translation>班级管理</translation>
     </message>
     <message>
         <source>Use this workspace to manage your computers and classrooms in an easy way.</source>
-        <translation type="unfinished">使用这个工作空间简便地管理计算机和班级。</translation>
+        <translation>在这个面板管理计算机和班级。</translation>
     </message>
     <message>
         <source>This is where computers and classrooms are managed. You can add computers or classrooms by clicking right in this list.</source>
-        <translation type="unfinished">这是管理计算机和班级的地方。你可以通过点击鼠标右键在列表中添加计算机或班级。</translation>
+        <translation>这是管理计算机和班级的地方,您可以通过点击鼠标右键在列表中添加计算机或班级。</translation>
     </message>
     <message>
         <source>Classrooms/computers</source>
-        <translation type="unfinished">班级/计算机</translation>
+        <translation>班级/计算机</translation>
     </message>
     <message>
         <source>IP-address</source>
-        <translation type="unfinished">IP地址</translation>
+        <translation>IP地址</translation>
     </message>
     <message>
         <source>Usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>用户名</translation>
     </message>
     <message>
         <source>Show usernames</source>
-        <translation type="unfinished"></translation>
+        <translation>显示用户名</translation>
     </message>
     <message>
         <source>Use the context-menu (right mouse-button) to add/remove computers and/or classrooms.</source>
-        <translation type="unfinished"></translation>
+        <translation>使用上下文关联菜单(鼠标右键),来添加/删除计算机和班级。</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
-        <translation type="unfinished">导出到文本文件</translation>
+        <source>Export to text file</source>
+        <translation>导出为文本文件</translation>
     </message>
     <message>
         <source>Use this button for exporting this list of computers and usernames into a text-file. You can use this file later for collecting files after an exam has finished. This is sometimes neccessary, because some users might have finished and logged out earlier and so you cannot collect their files at the end of the exam.</source>
-        <translation type="unfinished"></translation>
+        <translation>使用此按钮将列表中的计算机和用户名导出为文本文件。例如,您可以在一场考试结束后使用此文件统计考生信息。这在某些时候是很有必要的,因为有些考生可能会提前完成并退出,那样考试结束后您就不能收集到所有参加考试的考生信息。</translation>
     </message>
     <message>
         <source>Hide teacher computers</source>
-        <translation type="unfinished">隐藏教师计算机</translation>
+        <translation>隐藏教师计算机</translation>
     </message>
     <message>
         <source>Show/hide</source>
-        <translation type="unfinished">显示/隐藏</translation>
+        <translation>显示/隐藏</translation>
     </message>
     <message>
         <source>Edit settings</source>
-        <translation type="unfinished">编辑设置</translation>
+        <translation>编辑设置</translation>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished">删除</translation>
+        <translation>删除</translation>
     </message>
     <message>
         <source>Show all computers in classroom</source>
-        <translation type="unfinished">显示班级中的全部计算机</translation>
+        <translation>显示班级中的全部计算机</translation>
     </message>
     <message>
         <source>Hide all computers in classroom</source>
-        <translation type="unfinished">隐藏班级中的全部计算机</translation>
+        <translation>隐藏班级中的全部计算机</translation>
     </message>
     <message>
         <source>Edit name</source>
-        <translation type="unfinished">编辑名称</translation>
+        <translation>编辑名称</translation>
     </message>
     <message>
         <source>Remove classroom</source>
-        <translation type="unfinished">删除班级</translation>
+        <translation>删除班级</translation>
     </message>
     <message>
         <source>Add computer</source>
-        <translation type="unfinished">添加计算机</translation>
+        <translation>添加计算机</translation>
     </message>
     <message>
         <source>Add classroom</source>
-        <translation type="unfinished">添加班级</translation>
+        <translation>添加班级</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
-        <translation type="unfinished">配置文件没找到</translation>
+        <source>No configuration file found</source>
+        <translation>找不到配置文件</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation type="unfinished">不能打开配置文件 %1 。
-你必须在班级管理中至少添加一个班级和计算机。班级管理在程序的左侧栏中。</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>无法打开配置文件 %1 ,您必须在班级管理中至少添加一个班级和计算机。班级管理在程序的左侧栏中。</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
-        <translation type="unfinished">错误在配置文件中</translation>
+        <source>Error in configuration file</source>
+        <translation>配置文件中有错误</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation type="unfinished">分析配置文件 %1 时出错。
-请编辑它。否则,你将不得不删除该文件并重新添加所有的班级和计算机。</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>分析配置文件 %1 时出错。请手动改正它。否则,您将不得不删除该配置文件并重新添加所有的班级和计算机。</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation type="unfinished">分析配置文件 %1 时出错。
-请编辑它。否则,你将不得不删除该文件。</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>分析配置文件 %1 时出错。请手动改正它。否则,您将不得不删除该配置文件。</translation>
     </message>
     <message>
         <source>Select output-file</source>
-        <translation type="unfinished">选择输出文件</translation>
+        <translation>选择输出文件</translation>
     </message>
     <message>
         <source>Text files (*.txt)</source>
-        <translation type="unfinished">文本文件(*.txt)</translation>
+        <translation>文本文件(*.txt)</translation>
     </message>
     <message>
         <source>Actions for selected</source>
-        <translation type="unfinished"></translation>
+        <translation>选择一项操作</translation>
     </message>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">动作</translation>
+        <translation>操作</translation>
     </message>
     <message>
         <source>Actions for %1</source>
-        <translation type="unfinished">%1 动作</translation>
+        <translation>%1 操作</translation>
     </message>
     <message>
         <source>New name for classroom</source>
-        <translation type="unfinished">班级新名称</translation>
+        <translation>班级新名称</translation>
     </message>
     <message>
         <source>Please enter a new name for classroom "%1".</source>
-        <translation type="unfinished">请为班级 "%1" 输入一个新名称。</translation>
+        <translation>请为班级“%1” 输入一个新名称。</translation>
     </message>
     <message>
         <source>Are you sure want to remove classroom "%1"?
 All computers in it will be removed as well!</source>
-        <translation type="unfinished">你确定要删除班级 "%1" 吗?
+        <translation>您确定要删除班级“%1”吗?
 该班级中的所有计算机也将被删除!</translation>
     </message>
     <message>
         <source>Missing classroom</source>
-        <translation type="unfinished">缺少班级</translation>
+        <translation>缺少班级</translation>
     </message>
     <message>
         <source>Before adding computers you have to create at least one classroom.
 Do you want to create a new classrom now?</source>
-        <translation type="unfinished">在添加计算机之前你必须至少创建一个班级。
-你现在要创建新班级吗?</translation>
+        <translation>在添加计算机之前您必须至少创建一个班级。
+您现在要创建新班级吗?</translation>
     </message>
     <message>
         <source>New classroom</source>
-        <translation type="unfinished">新班级</translation>
+        <translation>新建班级</translation>
     </message>
     <message>
         <source>Please enter the name of the classroom you want to create.</source>
-        <translation type="unfinished">请输入要创建班级的名称。</translation>
+        <translation>请输入要创建班级的名称。</translation>
     </message>
 </context>
 <context>
     <name>Client</name>
     <message>
         <source>Unknown state</source>
-        <translation type="unfinished">未知状态</translation>
+        <translation>未知状态</translation>
     </message>
     <message>
         <source>No user logged in</source>
-        <translation type="unfinished">无用户登录</translation>
+        <translation>无用户登录</translation>
     </message>
     <message>
         <source>Host unreachable</source>
-        <translation type="unfinished">主机不可到达</translation>
+        <translation>连接已断开</translation>
     </message>
     <message>
         <source>Demo running</source>
-        <translation type="unfinished">演示进行中</translation>
+        <translation>正在演示</translation>
     </message>
     <message>
         <source>Desktop locked</source>
-        <translation type="unfinished">桌面锁定</translation>
+        <translation>锁定桌面</translation>
+    </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>来自教师的消息</translation>
     </message>
 </context>
 <context>
     <name>ClientAction</name>
     <message>
         <source>Are you sure want logout all users on all visible computers ?</source>
-        <translation type="unfinished">你确定要所有用户登出全部可见的计算机吗?</translation>
+        <translation>您确定要注销所有计算机上的用户吗?</translation>
     </message>
     <message>
         <source>Are you sure want logout all users on all selected computers ?</source>
-        <translation type="unfinished"></translation>
+        <translation>您确定要注销所有选中计算机上的用户吗?</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">用户登出</translation>
+        <translation>注销用户</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all visible computers?</source>
-        <translation type="unfinished">你确定要重新启动全部可见的计算机吗?</translation>
+        <translation>您确定要重启所有连接的计算机吗?</translation>
     </message>
     <message>
         <source>Are you sure want to reboot all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>您确定要重启所有选中的计算机吗?</translation>
     </message>
     <message>
         <source>Reboot computers</source>
-        <translation type="unfinished">重新启动计算机</translation>
+        <translation>重新启动计算机</translation>
     </message>
     <message>
         <source>Are you sure want to power down all visible computers?</source>
-        <translation type="unfinished">你确定要关闭全部可见的计算机吗?</translation>
+        <translation>您确定要关闭所有连接的计算机吗?</translation>
     </message>
     <message>
         <source>Are you sure want to power down all selected computers?</source>
-        <translation type="unfinished"></translation>
+        <translation>您确定要关闭所有选中的计算机吗?</translation>
     </message>
 </context>
 <context>
     <name>ClientSettingsDialog</name>
     <message>
-        <source>Invalid MAC-address</source>
-        <translation type="unfinished">无效的 MAC地址</translation>
-    </message>
-    <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation type="unfinished">你指定的 MAC地址无效。该项放空或者输入有效的MAC地址(用 "." 做分隔符!)。</translation>
-    </message>
-    <message>
         <source>Client settings</source>
-        <translation type="unfinished">客户端设置</translation>
+        <translation>客户端设置</translation>
     </message>
     <message>
         <source>IP/hostname</source>
-        <translation type="unfinished">IP/主机名</translation>
+        <translation>IP/主机名</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">enter an IP-address or hostname under which iTALC can reach the client (use ':'  [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">输入一个 iTALC 可到达客户端的IP地址或主机名(用':'指定可选的端口号)</p></bo [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">输入一个 iTALC 可到达客户端的IP地址或主机名(用':'指定可选的端口号)</p></body></html&gt [...]
     </message>
     <message>
         <source>Name</source>
-        <translation type="unfinished">名称</translation>
+        <translation>名称</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Optional nickname of the host which is displayed in iTALC.</p></body></html [...]
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 这个主机在 iTALC 中显示的昵称。</p></body></html></translation>
     </message>
     <message>
         <source>MAC address</source>
-        <translation type="unfinished"></translation>
+        <translation>MAC 地址</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware/MAC-address of client - only used for powering on client</p></body>&l [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">客户端的硬件/MAC地址 - 只有在需要远程开机的客户端上使用</p></body></html> [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">客户端的硬件/MAC地址 - 只有在需要远程开机的客户端上使用</p></body></html></translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">班级</translation>
+        <translation>班级</translation>
     </message>
     <message>
         <source>Type</source>
-        <translation type="unfinished">类型</translation>
+        <translation>类型</translation>
     </message>
     <message>
         <source>Student computer</source>
-        <translation type="unfinished">学生计算机</translation>
+        <translation>学生计算机</translation>
     </message>
     <message>
         <source>Teacher computer</source>
-        <translation type="unfinished">教师计算机</translation>
+        <translation>教师计算机</translation>
     </message>
     <message>
         <source>Other/undefined computer</source>
-        <translation type="unfinished">其他/未定义计算机</translation>
+        <translation>其他/未定义计算机</translation>
     </message>
     <message>
         <source>Missing IP address/hostname</source>
-        <translation type="unfinished"></translation>
+        <translation>错误的 IP 地址/主机名</translation>
     </message>
     <message>
         <source>You didn't specify an IP address or hostname for the computer!</source>
-        <translation type="unfinished"></translation>
+        <translation>您还没有为此计算机指定 IP 地址或主机名!</translation>
+    </message>
+    <message>
+        <source>Invalid MAC address</source>
+        <translation>无效的 MAC 地址</translation>
+    </message>
+    <message>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>您设定的 MAC地址无效。该项请留空或者输入有效的MAC地址(用英文冒号“:”做分隔符!)。</translation>
     </message>
 </context>
 <context>
     <name>Config</name>
     <message>
         <source>Interval between updates</source>
-        <translation type="unfinished">更新间隔时间</translation>
+        <translation>更新间隔时间</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set the interval between updates of clients. Higher values result in lower ne [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这你可以设置客户端的更新间隔时间。数值越高网络传输越低,这台计算机的CPU占用越低。</p></body>& [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这您可以设置客户端的更新间隔时间。数值越大占用网络传输越少,这台计算机的 CPU 占用也越低。</p></body></html>< [...]
     </message>
     <message>
         <source> seconds</source>
-        <translation type="unfinished"> 秒</translation>
+        <translation> 秒</translation>
     </message>
     <message>
         <source>User interface</source>
-        <translation type="unfinished">用户界面</translation>
+        <translation>用户界面</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show balloon-tooltips for toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">工具栏按钮不显示 冒泡提示</p></body></html></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">工具栏按钮不显示冒泡提示</p></body></html></translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Check this option if you're annoyed by the balloon-tooltips appearing when moving mou [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">如果你对鼠标移动到工具栏按钮上显示冒泡提示很生气,请选择该项。</p></body></html> [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">如果您希望鼠标移到工具栏按钮上时,不显示浮动帮助提示,那么请选择该项。</p></body></html></translation>
     </message>
     <message>
         <source>No balloon-tooltips</source>
-        <translation type="unfinished">禁用 冒泡提示</translation>
+        <translation>禁用冒泡提示</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Do not show texts on toolbar-buttons</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在工具栏按钮上不显示文字说明</p></body></html></translation>
     </message>
     <message>
         <source>No texts on toolbar-buttons</source>
-        <translation type="unfinished"></translation>
+        <translation>按钮上不显示文字</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>语言:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>系统默认</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体中文</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 繁體中文</translation>
     </message>
     <message>
         <source>Your role (needs according keys!)</source>
-        <translation type="unfinished">你的角色</translation>
+        <translation>您的角色</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这你可以选择你的角色。只有在你知道你要做什么时才能改变,否则你将有可能无法访问客户端直到你恢复旧的角色。</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这您可以选择自己的角色。只有在您知道您要做什么时才能改变,否则您将有可能无法访问客户端,此时您可以恢复原来的角色。</p></body></html></translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">教师</translation>
+        <translation>教师</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">管理员</translation>
+        <translation>管理员</translation>
     </message>
     <message>
         <source>Supporter</source>
-        <translation type="unfinished">协助者</translation>
+        <translation>技术人员</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">其他</translation>
-    </message>
-    <message>
-        <source>Settings for multi-logon</source>
-        <translation type="unfinished">多用户登录设置</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation type="unfinished">域</translation>
+        <translation>其他</translation>
     </message>
     <message>
-        <source>Double-click action for client-window</source>
-        <translation type="unfinished">客户端窗口双击动作</translation>
+        <source>Double click action for client window</source>
+        <translation>客户端图标上的双击动作</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这你可以设置双击客户端窗口时要发生的动作。</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">在这您可以设置双击客户端窗口时要发生的动作。</p></body></html></translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
+        <translation>远程控制</translation>
     </message>
     <message>
         <source>View live in fullscreen</source>
-        <translation type="unfinished">全屏现场直播</translation>
+        <translation>全屏显示</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">Please note, that some ch [...]
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">请注 [...]
+        <translation><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">请注意,某些改变不能立即生效,需要重启  [...]
     </message>
 </context>
 <context>
     <name>ConfigWidget</name>
     <message>
         <source>Your iTALC-configuration</source>
-        <translation type="unfinished">你的 iTALC 配置</translation>
+        <translation>您的 iTALC 配置</translation>
     </message>
     <message>
         <source>In this workspace you can customize iTALC to fit your needs.</source>
-        <translation type="unfinished">在这个工作空间中你可以定制 iTALC 适合你的需要。</translation>
-    </message>
-</context>
-<context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation type="unfinished">确定</translation>
+        <translation>在这个面板中您根据所需定制 iTALC。</translation>
     </message>
 </context>
 <context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
-        <translation type="unfinished">iTALC 演示</translation>
+        <translation>iTALC 演示</translation>
     </message>
 </context>
 <context>
     <name>ItalcCoreServer</name>
     <message>
         <source>Authentication error</source>
-        <translation type="unfinished">验证错误</translation>
+        <translation>验证错误</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
-        <translation type="unfinished">有人(IP: %1 )试图访问这台计算机但未能通过验证!</translation>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
+        <translation>有人(IP: %1 )试图访问本机但未能通过验证!</translation>
     </message>
 </context>
 <context>
     <name>ItalcVncConnection</name>
     <message>
         <source>VNC authentication failed because of too many authentication tries.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC 验证失败,原因为验证次数过多。</translation>
     </message>
     <message>
         <source>VNC authentication failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC 验证失败</translation>
     </message>
     <message>
         <source>VNC server closed connection.</source>
-        <translation type="unfinished"></translation>
+        <translation>VNC 服务器已关闭连接。</translation>
     </message>
 </context>
 <context>
     <name>KeyFileAssistant</name>
     <message>
         <source>iTALC Access Key Assistant</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 密钥助手</translation>
     </message>
     <message>
         <source>Create/import iTALC access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>创建/导入 iTALC 访问密钥</translation>
     </message>
     <message>
         <source>This assistant will help you to create or import iTALC access keys.</source>
-        <translation type="unfinished"></translation>
+        <translation>助手工具将帮助您创建或导入 iTALC 访问密钥。</translation>
     </message>
     <message>
         <source>How does it work?</source>
-        <translation type="unfinished"></translation>
+        <translation>密钥起什么作用?</translation>
     </message>
     <message>
         <source>iTALC access keys consist of two parts belonging together, a private and a public key part.
@@ -523,879 +608,873 @@ p, li { white-space: pre-wrap; }
 Using the private key part, users on the master computer will be able to access client computers. It is important that only authorized users have read access to the private key file.
 
 The public key part is used on the client computers to verify that any incoming connection request is authorized.</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 密钥包括两部分,私钥和公钥。
+
+教师端生成有私钥和公钥,把公钥复制到客户端,教师机通过私钥与学生机的公钥配对成功后,就可以访问并控制学生机。因此,私钥文件的权限,一定要设置为仅教师用户能读取。
+
+公钥存放于客户端学生机电脑,用以验证前来访问该电脑的请求。</translation>
     </message>
     <message>
         <source>Assistant mode</source>
-        <translation type="unfinished"></translation>
+        <translation>助手模式</translation>
     </message>
     <message>
         <source>Please choose whether to create new access keys or import a public key on a client.</source>
-        <translation type="unfinished"></translation>
+        <translation>请选择是创建新的密钥对,还是向客户机导入公钥。</translation>
     </message>
     <message>
         <source>Create new access keys (master computer)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>assistantModeButtonGroup</source>
-        <translation type="unfinished"></translation>
+        <translation>创建新的密钥对(教师机)</translation>
     </message>
     <message>
         <source>Import public key (client computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>导入公钥(学生机)</translation>
     </message>
     <message>
         <source>Select user role</source>
-        <translation type="unfinished"></translation>
+        <translation>选择用户角色</translation>
     </message>
     <message>
         <source>Please select a user role for which to create or import the access keys:</source>
-        <translation type="unfinished"></translation>
+        <translation>请为要创建或导入的密钥选择用户角色:</translation>
     </message>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">教师</translation>
+        <translation>教师</translation>
     </message>
     <message>
         <source>Administrator</source>
-        <translation type="unfinished">管理员</translation>
+        <translation>管理员</translation>
     </message>
     <message>
         <source>Support team member</source>
-        <translation type="unfinished"></translation>
+        <translation>技术人员</translation>
     </message>
     <message>
         <source>Other</source>
-        <translation type="unfinished">其他</translation>
+        <translation>其他</translation>
     </message>
     <message>
         <source>User roles allow using multiple access keys in parallel. For example there can be different teacher access keys for each classroom while the support access keys are the same for the whole school.</source>
-        <translation type="unfinished"></translation>
+        <translation>各个角色可以同时使用多个访问密钥。例如,可能一个班级有多个教师的访问密钥,而技术支持人员在全校都有。</translation>
     </message>
     <message>
         <source>Directories</source>
-        <translation type="unfinished"></translation>
+        <translation>文件夹</translation>
     </message>
     <message>
         <source>Export public key part (master computer)</source>
-        <translation type="unfinished"></translation>
+        <translation>导出公钥(主机)</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Use custom destination directory for access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>指定密钥的保存位置</translation>
     </message>
     <message>
         <source>Please specify the location of the public access key to be imported.</source>
-        <translation type="unfinished"></translation>
+        <translation>请指定要导入公钥文件的存放位置。</translation>
     </message>
     <message>
         <source>Summary</source>
-        <translation type="unfinished"></translation>
+        <translation>摘要</translation>
     </message>
     <message>
         <source>The following actions will be taken:</source>
-        <translation type="unfinished"></translation>
+        <translation>将要执行下列操作:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
-        <translation type="unfinished"></translation>
+        <translation>• 创建新密钥</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
-        <translation type="unfinished"></translation>
+        <translation>• 从这里导入公钥</translation>
     </message>
     <message>
         <source><unknown></source>
-        <translation type="unfinished"></translation>
+        <translation><未知></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
-        <translation type="unfinished"></translation>
+        <translation>• 密钥保存到</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
-        <translation type="unfinished"></translation>
+        <translation>• 导出公钥到</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
-        <translation type="unfinished"></translation>
+        <translation>• 选择用户角色</translation>
     </message>
     <message>
         <source>Select directory in which to export the public key</source>
-        <translation type="unfinished"></translation>
+        <translation>请选择公钥导出的位置</translation>
     </message>
     <message>
         <source>Key files (*.key.txt)</source>
-        <translation type="unfinished"></translation>
+        <translation>密钥文件(*.key.txt)</translation>
     </message>
     <message>
         <source>Invalid public key</source>
-        <translation type="unfinished"></translation>
+        <translation>无效的公钥</translation>
     </message>
     <message>
         <source>The selected file does not contain a valid public iTALC access key!</source>
-        <translation type="unfinished"></translation>
+        <translation>选中的文件不包含 iTALC 公钥!</translation>
     </message>
     <message>
         <source>Select destination directory</source>
-        <translation type="unfinished"></translation>
+        <translation>选择目标文件夹</translation>
     </message>
     <message>
         <source>Access key creation</source>
-        <translation type="unfinished"></translation>
+        <translation>创建密钥</translation>
     </message>
     <message>
         <source>Could not remove previously existing file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>不能删除已存在的文件 %1</translation>
     </message>
     <message>
         <source>Failed exporting public access key from %1 to %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>从 %1 导入公钥到 %2 失败。</translation>
     </message>
     <message>
         <source>Access keys were created and written successfully to %1 and %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>密钥成功创建并写入到 %1 和 %2</translation>
     </message>
     <message>
         <source>An error occured while creating the access keys. You probably are not permitted to write to the selected directories.</source>
-        <translation type="unfinished"></translation>
+        <translation>创建密钥时出错,您选中的文件夹可能没有写入权限。</translation>
     </message>
     <message>
         <source>Public key import</source>
-        <translation type="unfinished"></translation>
+        <translation>导入公钥</translation>
     </message>
     <message>
         <source>An error occured while importing the public access key. You probably are not permitted to read the source key or to write the destination file.</source>
-        <translation type="unfinished"></translation>
+        <translation>导入密钥时出错,您可能没有源文件的读取权限,或者没有目标文件夹的写入权限。</translation>
     </message>
     <message>
         <source>The public key was successfully imported to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>公钥成功导入到 %1</translation>
     </message>
 </context>
 <context>
     <name>LockWidget</name>
     <message>
         <source>screen lock</source>
-        <translation type="unfinished"></translation>
+        <translation>屏幕锁定</translation>
     </message>
 </context>
 <context>
     <name>LogonGroupEditor</name>
     <message>
         <source>Logon group editor</source>
-        <translation type="unfinished"></translation>
+        <translation>登录用户组管理器</translation>
     </message>
     <message>
         <source>Please add the groups whose members should be allowed to access computers in your iTALC network.</source>
-        <translation type="unfinished"></translation>
+        <translation>请添加允许访问 iTALC 网络中计算机的用户组。</translation>
     </message>
     <message>
         <source>All groups</source>
-        <translation type="unfinished"></translation>
+        <translation>所有群组</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Groups with iTALC privileges</source>
-        <translation type="unfinished"></translation>
+        <translation>有 iTALC 权限的群组</translation>
     </message>
 </context>
 <context>
     <name>MainToolBar</name>
     <message>
         <source>Actions</source>
-        <translation type="unfinished">动作</translation>
+        <translation>操作</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <source>General</source>
-        <translation type="unfinished">常规</translation>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation type="unfinished">退出</translation>
+        <source>toolBar</source>
+        <translation>工具栏</translation>
     </message>
     <message>
         <source>iTALC Management Console</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 管理控制台</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <translation>常规</translation>
     </message>
     <message>
         <source>iTALC Server</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 服务器</translation>
     </message>
     <message>
         <source>Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>路径</translation>
     </message>
     <message>
         <source>Authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>验证</translation>
+    </message>
+    <message>
+        <source>Debugging</source>
+        <translation>调试</translation>
     </message>
     <message>
         <source>iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 服务</translation>
     </message>
     <message>
         <source>Hide tray icon</source>
-        <translation type="unfinished"></translation>
+        <translation>隐藏托盘图标</translation>
     </message>
     <message>
         <source>Autostart</source>
-        <translation type="unfinished"></translation>
+        <translation>自动启动</translation>
     </message>
     <message>
         <source>Additional arguments</source>
-        <translation type="unfinished"></translation>
+        <translation>额外的参数</translation>
     </message>
     <message>
         <source>Start service</source>
-        <translation type="unfinished"></translation>
+        <translation>开启服务</translation>
     </message>
     <message>
         <source>Stop service</source>
-        <translation type="unfinished"></translation>
+        <translation>停止服务</translation>
     </message>
     <message>
         <source>State:</source>
-        <translation type="unfinished"></translation>
+        <translation>状态:</translation>
     </message>
     <message>
         <source>Stopped</source>
-        <translation type="unfinished"></translation>
+        <translation>已停止</translation>
+    </message>
+    <message>
+        <source>Enable desktop switching for screen lock (experimental)</source>
+        <translation>开启屏幕锁定时的桌面切换(实验性功能)</translation>
     </message>
     <message>
         <source>Logging</source>
-        <translation type="unfinished"></translation>
+        <translation>正在登录</translation>
     </message>
     <message>
         <source>Log file directory</source>
-        <translation type="unfinished"></translation>
+        <translation>日志文件存放目录</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <source>Log level</source>
-        <translation type="unfinished"></translation>
+        <translation>日志级别</translation>
     </message>
     <message>
         <source>Nothing</source>
-        <translation type="unfinished"></translation>
+        <translation>无</translation>
     </message>
     <message>
         <source>Only critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>只记录严重错误信息</translation>
     </message>
     <message>
         <source>Errors and critical messages</source>
-        <translation type="unfinished"></translation>
+        <translation>错误和严重错误信息</translation>
     </message>
     <message>
         <source>Warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>警告和错误</translation>
     </message>
     <message>
         <source>Information, warnings and errors</source>
-        <translation type="unfinished"></translation>
+        <translation>信息、警告和错误</translation>
     </message>
     <message>
         <source>Debug messages and everything else</source>
-        <translation type="unfinished"></translation>
+        <translation>调试信息和其他所有信息</translation>
     </message>
     <message>
         <source>Limit log file size</source>
-        <translation type="unfinished"></translation>
+        <translation>日志文件限制大小</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished"></translation>
+        <translation>MB</translation>
+    </message>
+    <message>
+        <source>Log to standard error output</source>
+        <translation>日志显示于标准输出设备(显示器)</translation>
+    </message>
+    <message>
+        <source>Log to Windows event log</source>
+        <translation>日志记录到 Windows 事件日志(Windows event log)</translation>
     </message>
     <message>
         <source>Clear all log files</source>
-        <translation type="unfinished"></translation>
+        <translation>清空所有日志文件</translation>
     </message>
     <message>
         <source>Desktop capturing</source>
-        <translation type="unfinished"></translation>
+        <translation>抓取桌面</translation>
     </message>
     <message>
         <source>Enable capturing of layered (semi-transparent) windows</source>
-        <translation type="unfinished"></translation>
+        <translation>开启多层次(半透明)窗口抓取</translation>
+    </message>
+    <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>抓取全屏幕(默认每次开启)</translation>
     </message>
     <message>
         <source>Low accuracy (turbo mode)</source>
-        <translation type="unfinished"></translation>
+        <translation>低分辨率(快速模式)</translation>
     </message>
     <message>
         <source>Demo server</source>
-        <translation type="unfinished"></translation>
+        <translation>演示服务</translation>
+    </message>
+    <message>
+        <source>Backend</source>
+        <translation>后台</translation>
+    </message>
+    <message>
+        <source>VNC reflector</source>
+        <translation>VNC reflector</translation>
+    </message>
+    <message>
+        <source>iTALC 1 demo server</source>
+        <translation>iTALC 1 演示服务</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
+        <translation>网络</translation>
     </message>
     <message>
         <source>Core server port</source>
-        <translation type="unfinished"></translation>
+        <translation>核心服务端口</translation>
     </message>
     <message>
         <source>Demo server port</source>
-        <translation type="unfinished"></translation>
+        <translation>演示服务端口</translation>
     </message>
     <message>
         <source>Enable firewall exception</source>
-        <translation type="unfinished"></translation>
+        <translation>开启防火墙例外设定</translation>
+    </message>
+    <message>
+        <source>Enable HTTP server which provides a JavaViewer applet</source>
+        <translation>开启一个提供 JavaViewer 的 HTTP 服务。</translation>
+    </message>
+    <message>
+        <source>HTTP server port</source>
+        <translation>HTTP 服务端口</translation>
+    </message>
+    <message>
+        <source>Allow connections from localhost only</source>
+        <translation>只允许本地连接</translation>
     </message>
     <message>
         <source>Configuration files</source>
-        <translation type="unfinished"></translation>
+        <translation>配置文件</translation>
     </message>
     <message>
         <source>Global configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>全局配置</translation>
     </message>
     <message>
         <source>Personal configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>个人配置</translation>
     </message>
     <message>
         <source>Data directories</source>
-        <translation type="unfinished"></translation>
+        <translation>数据文件夹</translation>
     </message>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">快照</translation>
+        <translation>截屏</translation>
     </message>
     <message>
         <source>Authentication methods</source>
-        <translation type="unfinished"></translation>
+        <translation>验证模式</translation>
+    </message>
+    <message>
+        <source>Key file authentication</source>
+        <translation>密钥验证</translation>
+    </message>
+    <message>
+        <source>ACL-based logon authentication</source>
+        <translation>ACL 登录验证</translation>
     </message>
     <message>
         <source>Access key management</source>
-        <translation type="unfinished"></translation>
+        <translation>密钥管理</translation>
+    </message>
+    <message>
+        <source>Public key file base directory</source>
+        <translation>公钥文件主目录</translation>
+    </message>
+    <message>
+        <source>Private key file base directory</source>
+        <translation>私钥文件主目录</translation>
+    </message>
+    <message>
+        <source>Launch key file assistant</source>
+        <translation>运行密钥文件助手</translation>
     </message>
     <message>
         <source>Logon settings</source>
-        <translation type="unfinished"></translation>
+        <translation>登录设置</translation>
     </message>
     <message>
-        <source>&File</source>
-        <translation type="unfinished"></translation>
+        <source>Manage permissions</source>
+        <translation>许可管理</translation>
     </message>
     <message>
-        <source>&Help</source>
-        <translation type="unfinished"></translation>
+        <source>Test</source>
+        <translation>测试</translation>
     </message>
     <message>
-        <source>&Quit</source>
-        <translation type="unfinished"></translation>
+        <source>Access confirmation</source>
+        <translation>确认允许访问</translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation type="unfinished"></translation>
+        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
+        <translation>您可以配置 iTALC 在当前验证方式,是否显示确认访问的对话框。</translation>
     </message>
     <message>
-        <source>&Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <source>Logon authentication</source>
+        <translation>登录验证</translation>
     </message>
     <message>
-        <source>Save settings into file</source>
-        <translation type="unfinished"></translation>
+        <source>Allow same user to access desktop without confirmation</source>
+        <translation>允许同一用户不经提示访问桌面</translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <source>Debugging iTALC</source>
+        <translation>iTALC 调试</translation>
     </message>
     <message>
-        <source>L&oad settings from file</source>
-        <translation type="unfinished"></translation>
+        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
+
+If the bug is not reproducible, skip step 1) - 3).</source>
+        <translation>当使用 iTALC 遇到问题或其他异常时,反馈给开发者是非常重要的,这样在发布下一版本时问题得以修正。此页面可以帮助您轻松提交错误报告。
+
+如果问题无法重现,请跳过步骤 1) - 3)。</translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <source>1)</source>
+        <translation>1)</translation>
     </message>
     <message>
-        <source>About iTALC</source>
-        <translation type="unfinished">关于 iTALC</translation>
+        <source>Clear the logfiles in the "General" section.</source>
+        <translation>在“常规”标签中,清除日志文件。</translation>
     </message>
     <message>
-        <source>About Qt</source>
-        <translation type="unfinished"></translation>
+        <source>2)</source>
+        <translation>2)</translation>
     </message>
     <message>
-        <source>MainWindow</source>
-        <translation type="unfinished"></translation>
+        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
+        <translation>在“常规”标签中,设置日志级别为“调试信息和其他所有信息”。</translation>
     </message>
     <message>
-        <source>toolBar</source>
-        <translation type="unfinished"></translation>
+        <source>3)</source>
+        <translation>3)</translation>
     </message>
     <message>
-        <source>iTALC Management Console %1</source>
-        <translation type="unfinished"></translation>
+        <source>Repeat the actions leading to the bug or misbehaviour.</source>
+        <translation>重新执行导致出错或异常的操作。</translation>
     </message>
     <message>
-        <source>Running</source>
-        <translation type="unfinished"></translation>
+        <source>4)</source>
+        <translation>4)</translation>
     </message>
     <message>
-        <source>Load settings from file</source>
-        <translation type="unfinished"></translation>
+        <source>Click the following button and save the file to a known location.</source>
+        <translation>点击下面的按钮保存日志文件到一个文件夹中。</translation>
     </message>
     <message>
-        <source>XML files (*.xml)</source>
-        <translation type="unfinished"></translation>
+        <source>Generate bug report archive</source>
+        <translation>生成错误报告文件</translation>
     </message>
     <message>
-        <source>Save settings to file</source>
-        <translation type="unfinished"></translation>
+        <source>5)</source>
+        <translation>5)</translation>
     </message>
     <message>
-        <source>Unsaved settings</source>
-        <translation type="unfinished"></translation>
+        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
+<br/>
+<br/>
+Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
+        <translation>访问 <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC 错误反馈站点</a>,建立一个新的错误报告,描述一下您在 3) 做了些什么,并附上 4) 所保存的日志文件。
+<br/>
+<br/>
+如果此问题需要在主机和客户机电脑上同时使用才会发生,请记得附上两台电脑上各自生成的日志文件。</translation>
     </message>
     <message>
-        <source>There are unsaved settings. Quit anyway?</source>
-        <translation type="unfinished"></translation>
+        <source>&File</source>
+        <translation>文件(&F)</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation type="unfinished"></translation>
+        <source>&Help</source>
+        <translation>帮助(&H)</translation>
     </message>
     <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation type="unfinished"></translation>
+        <source>&Quit</source>
+        <translation>退出(&Q)</translation>
     </message>
     <message>
-        <source>All settings were applied successfully.</source>
-        <translation type="unfinished"></translation>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation type="unfinished"></translation>
+        <source>&Save settings into file</source>
+        <translation>保存(&S)</translation>
+    </message>
+    <message>
+        <source>Save settings into file</source>
+        <translation>保存设置文件</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>L&oad settings from file</source>
+        <translation>打开(&O)</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>About iTALC</source>
+        <translation>关于 iTALC</translation>
+    </message>
+    <message>
+        <source>About Qt</source>
+        <translation>关于 Qt</translation>
     </message>
     <message>
         <source>iTALC</source>
-        <translation type="unfinished">iTALC</translation>
+        <translation>iTALC</translation>
     </message>
     <message>
         <source>No write access</source>
-        <translation type="unfinished"></translation>
+        <translation>没有写入权限</translation>
     </message>
     <message>
         <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation type="unfinished">不能读/写或创建目录 %1 !为了运行 iTALC ,请确认你有创建或写该目录的权限。</translation>
+        <translation>不能读/写或创建目录 %1 !为了运行 iTALC ,请确认您有创建或写入该目录的权限。</translation>
     </message>
     <message>
         <source>Classroom</source>
-        <translation type="unfinished">班级</translation>
+        <translation>班级</translation>
     </message>
     <message>
         <source>Switch classroom</source>
-        <translation type="unfinished">切换班级</translation>
+        <translation>切换班级</translation>
     </message>
     <message>
         <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation type="unfinished">点击按钮在菜单中选择要激活的班级。</translation>
+        <translation>点击此按钮在菜单中选择一个班级。</translation>
     </message>
     <message>
         <source>Click on this button, to switch between classrooms.</source>
-        <translation type="unfinished">点击按钮,切换班级。</translation>
+        <translation>点击按钮,切换班级。</translation>
     </message>
     <message>
         <source>Overview mode</source>
-        <translation type="unfinished">概览模式</translation>
+        <translation>预览模式</translation>
     </message>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">概览</translation>
+        <translation>预览</translation>
     </message>
     <message>
         <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation type="unfinished">这是 iTALC 的默认模式,让你对所有可见的计算机有一个概览。点击这个按钮也能为工作站解锁或退出演示模式。</translation>
+        <translation>这是 iTALC 的默认模式,让您预览所有已连接的计算机。点击此按钮也会解锁客户机或退出演示模式。</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">全屏演示</translation>
+        <translation>全屏演示</translation>
     </message>
     <message>
         <source>Fullscreen Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>全屏演示</translation>
     </message>
     <message>
         <source>Stop Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>停止演示</translation>
     </message>
     <message>
         <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机中显示,而且在该模式下客户端的所有输入设备都将被锁定,客户端用户不能做任何事。</translation>
+        <translation>在此模式下您的屏幕将在所有已连接的客户端计算机中显示,而且在该模式下客户端的所有输入设备将会锁定,客户端用户不能做任何事。</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">窗口演示</translation>
+        <translation>窗口演示</translation>
     </message>
     <message>
         <source>Window Demo</source>
-        <translation type="unfinished"></translation>
+        <translation>窗口演示</translation>
     </message>
     <message>
         <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation type="unfinished">在这个模式下你的屏幕将在所有可见的客户端计算机的一个窗口中显示。客户端用户可以切换到其他窗口,因此可以继续工作。</translation>
+        <translation>在此模式下您的屏幕将在所有已连接的客户端计算机的一个窗口中显示。客户端用户可以切换到其他窗口,因此可以继续工作。</translation>
     </message>
     <message>
         <source>Lock/unlock desktops</source>
-        <translation type="unfinished">锁定/解锁桌面</translation>
+        <translation>锁定/解锁桌面</translation>
     </message>
     <message>
         <source>Lock all</source>
-        <translation type="unfinished">全部锁定</translation>
+        <translation>全部锁定</translation>
     </message>
     <message>
         <source>Unlock all</source>
-        <translation type="unfinished">全部解锁</translation>
+        <translation>全部解锁</translation>
     </message>
     <message>
         <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation type="unfinished">为了聚拢用户的注意力,你可以用这个按钮锁定他们的桌面。在该模式下客户端所有的输入设备将被锁定同时屏幕黑屏。</translation>
+        <translation>为了聚拢用户的注意力,您可以用这个按钮锁定他们的桌面。在该模式下客户端所有的输入设备将被锁定同时屏幕黑屏。</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation>发送文字消息</translation>
     </message>
     <message>
         <source>Text message</source>
-        <translation type="unfinished">文字消息</translation>
+        <translation>文字消息</translation>
     </message>
     <message>
         <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation type="unfinished">使用这个按钮发送文字消息给全部用户。例如,告诉他们新的任务等等。</translation>
+        <translation>使用这个按钮发送文字消息给全部用户。例如,告诉他们新的任务等等。</translation>
     </message>
     <message>
         <source>Power on computers</source>
-        <translation type="unfinished">开启计算机</translation>
+        <translation>开启计算机</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">开机</translation>
+        <translation>开机</translation>
     </message>
     <message>
         <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation type="unfinished">点击这个按钮开启全部可见的计算机。这使你不必手工开启每一台计算机。</translation>
+        <translation>点击此按钮开启全部可见的计算机。这样您就不必手动去开启每一台计算机。</translation>
     </message>
     <message>
         <source>Power down computers</source>
-        <translation type="unfinished">关闭计算机</translation>
+        <translation>关闭计算机</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">关机</translation>
+        <translation>关机</translation>
     </message>
     <message>
         <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation type="unfinished">你可以点击这个按钮关闭全部可见的计算机(例如,下课时)。</translation>
+        <translation>您可以点击此按钮关闭全部已连接的计算机(例如,下课时)。</translation>
     </message>
     <message>
         <source>Support</source>
-        <translation type="unfinished">协助</translation>
+        <translation>协助</translation>
     </message>
     <message>
         <source>Direct support</source>
-        <translation type="unfinished"></translation>
+        <translation>直接协助</translation>
     </message>
     <message>
         <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation type="unfinished"></translation>
+        <translation>如果您需要协助某台电脑的使用者,可以按下这个按鈕,然后输入对方的主机名称或 IP 地址。</translation>
     </message>
     <message>
         <source>Adjust/align</source>
-        <translation type="unfinished">调整/对齐</translation>
+        <translation>调整/对齐</translation>
     </message>
     <message>
         <source>Adjust windows and their size</source>
-        <translation type="unfinished">调整窗口和它们的大小</translation>
+        <translation>调整图标大小</translation>
     </message>
     <message>
         <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation type="unfinished">点击这个按钮将以最大可能尺寸调整客户端窗口,同时对齐全部窗口。</translation>
+        <translation>点击此按钮将以最大可能尺寸显示客户端窗口,同时对齐全部窗口图标。</translation>
     </message>
     <message>
         <source>Auto view</source>
-        <translation type="unfinished">自动视图</translation>
+        <translation>自动视图</translation>
     </message>
     <message>
         <source>Auto re-arrange windows and their size</source>
-        <translation type="unfinished">自动重新排列窗口和调整大小</translation>
+        <translation>自动重新排列窗口图标和调整大小</translation>
     </message>
     <message>
         <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation type="unfinished">点击这个按钮重新安排和调整所有可见的窗口。</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
-    </message>
-    <message>
-        <source>Could not modify the autostart property for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not modify the service arguments for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not change the firewall configuration for the iTALC Service.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Debugging</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Enable desktop switching for screen lock (experimental)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Log to standard error output</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Log to Windows event log</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Backend</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>VNC reflector</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>iTALC 1 demo server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Enable HTTP server which provides a JavaViewer applet</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>HTTP server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Allow connections from localhost only</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Key file authentication</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>ACL-based logon authentication</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Public key file base directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Private key file base directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Launch key file assistant</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Manage permissions</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Test</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Access confirmation</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>You can configure iTALC to ask the user for permission to access the desktop when using certain authentication methods.</source>
-        <translation type="unfinished"></translation>
+        <translation>点击此按钮重新排列和调整所有的窗口图标。</translation>
     </message>
     <message>
-        <source>Logon authentication</source>
-        <translation type="unfinished"></translation>
+        <source>Could not contact iTALC service</source>
+        <translation>无法连接到 iTALC 服务</translation>
     </message>
     <message>
-        <source>Allow same user to access desktop without confirmation</source>
-        <translation type="unfinished"></translation>
+        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
+        <translation>无法连接到 iTALC 服务,可能是 ica 服务未启动,或者您的密钥文件错误,或是密钥安装不正确。请再次尝试,或者与管理员联系,运行 iTALC 管理控制台(imc)解决此问题。</translation>
     </message>
     <message>
-        <source>Debugging iTALC</source>
-        <translation type="unfinished"></translation>
+        <source>iTALC Master Control</source>
+        <translation>iTALC 主控台</translation>
     </message>
     <message>
-        <source>When encountering bugs or other misbehaviour in iTALC it is important to inform the developers about them, so that the bugs can be fixed in future releases. This page allows you to submit a helpful bug report easily.
-
-If the bug is not reproducible, skip step 1) - 3).</source>
-        <translation type="unfinished"></translation>
+        <source>Authentication impossible</source>
+        <translation>无法认证</translation>
     </message>
     <message>
-        <source>1)</source>
-        <translation type="unfinished"></translation>
+        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
+        <translation>找不到配对密钥,或者您的密钥已过期。请使用 iTALC 管理控制台(imc)建立新的密钥对。此外,您也可以在 iTALC 管理控制台更改登录认证方式,此问题导致无法使用 iTALC 来访问电脑。</translation>
     </message>
     <message>
-        <source>Clear the logfiles in the "General" section.</source>
-        <translation type="unfinished"></translation>
+        <source>Remote control</source>
+        <translation>远程控制</translation>
     </message>
     <message>
-        <source>2)</source>
-        <translation type="unfinished"></translation>
+        <source>Quit</source>
+        <translation>退出</translation>
     </message>
     <message>
-        <source>In the "General" section set the log level to "Debug messages and everything else".</source>
-        <translation type="unfinished"></translation>
+        <source>Could not modify the autostart property for the iTALC Service.</source>
+        <translation>不能设置 iTALC 服务的自启动属性。</translation>
     </message>
     <message>
-        <source>3)</source>
-        <translation type="unfinished"></translation>
+        <source>Could not modify the service arguments for the iTALC Service.</source>
+        <translation>不能设置 iTALC 服务参数。</translation>
     </message>
     <message>
-        <source>Repeat the actions leading to the bug or misbehaviour.</source>
-        <translation type="unfinished"></translation>
+        <source>Could not change the firewall configuration for the iTALC Service.</source>
+        <translation>不能更改 iTALC 服务的防火墙配置。</translation>
     </message>
     <message>
-        <source>4)</source>
-        <translation type="unfinished"></translation>
+        <source>Configuration not writable</source>
+        <translation>配置文件不可写</translation>
     </message>
     <message>
-        <source>Click the following button and save the file to a known location.</source>
-        <translation type="unfinished"></translation>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>本地配置后台反馈配置不能写入,请以更高的权限(如管理员)来运行 iTALC 管理控制台。</translation>
     </message>
     <message>
-        <source>Generate bug report archive</source>
-        <translation type="unfinished"></translation>
+        <source>All settings were applied successfully.</source>
+        <translation>所有设置应用成功。</translation>
     </message>
     <message>
-        <source>5)</source>
-        <translation type="unfinished"></translation>
+        <source>An error occured while applying settings!</source>
+        <translation>应用设置时出错!</translation>
     </message>
     <message>
-        <source>Go to the <a href="http://sourceforge.net/tracker/?group_id=132465&amp;atid=724375">iTALC bug tracker</a>, open a new bug, describe what you did in step 3) and attach the file you saved in step 4).</p>
-<br/>
-<br/>
-Note: if the bug involves both a master and client computer, attach bug report archives for both computers.</source>
-        <translation type="unfinished"></translation>
+        <source>iTALC Management Console %1</source>
+        <translation>iTALC 管理控制台 %1</translation>
     </message>
     <message>
         <source>Restart iTALC Service</source>
-        <translation type="unfinished"></translation>
+        <translation>重启 iTALC 服务</translation>
     </message>
     <message>
         <source>All settings were saved successfully. In order to take effect the iTALC service needs to be restarted. Restart it now?</source>
-        <translation type="unfinished"></translation>
+        <translation>所有设置均已保存成功。需要重启 iTALC 服务才能生效,要立即重启服务吗?</translation>
     </message>
     <message>
         <source>Starting iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>正在启动 iTALC 服务</translation>
     </message>
     <message>
         <source>Stopping iTALC service</source>
-        <translation type="unfinished"></translation>
+        <translation>正在停止 iTALC 服务</translation>
+    </message>
+    <message>
+        <source>Running</source>
+        <translation>正在运行</translation>
     </message>
     <message>
         <source>The iTALC service needs to be stopped temporarily in order to remove the log files. Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 服务需要暂时停止,以便删除日志文件,是否继续?</translation>
     </message>
     <message>
         <source>Log files cleared</source>
-        <translation type="unfinished"></translation>
+        <translation>日志文件已删除</translation>
     </message>
     <message>
         <source>All log files were cleared successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>所有日志文件均已删除成功。</translation>
     </message>
     <message>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation>错误</translation>
     </message>
     <message>
         <source>Could not remove all log files.</source>
-        <translation type="unfinished"></translation>
+        <translation>不能删除所有日志文件。</translation>
+    </message>
+    <message>
+        <source>Load settings from file</source>
+        <translation>打开配置文件</translation>
+    </message>
+    <message>
+        <source>XML files (*.xml)</source>
+        <translation>XML 文件(*.xml)</translation>
+    </message>
+    <message>
+        <source>Save settings to file</source>
+        <translation>保存配置文件</translation>
     </message>
     <message>
         <source>Logon authentication test</source>
-        <translation type="unfinished"></translation>
+        <translation>登录验证测试</translation>
     </message>
     <message>
         <source>Authentication with provided credentials was successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>使用提供的证书验证成功。</translation>
     </message>
     <message>
         <source>Authentication with provided credentials failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>使用提供的证书验证失败!</translation>
     </message>
     <message>
         <source>Save bug report archive</source>
-        <translation type="unfinished"></translation>
+        <translation>保存错误报告文档</translation>
     </message>
     <message>
         <source>iTALC bug report archive (*.ibra.xml)</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 错误报告文件(*.ibra.xml)</translation>
     </message>
     <message>
         <source>iTALC bug report archive saved</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 错误报告文件已保存</translation>
     </message>
     <message>
         <source>An iTALC bug report archive has been saved to %1. It includes iTALC log files and information about your operating system. You can attach it to a bug report.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact iTALC service</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Could not contact the local iTALC service. It is likely that you entered wrong credentials or key files are not set up properly. Try again or contact your administrator for solving this problem using the iTALC Management Console.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Authentication impossible</source>
-        <translation type="unfinished"></translation>
+        <translation>iTALC 错误报告文件已保存到 %1,包括 iTALC 日志文件和您操作系统的信息。您可以把它附在错误报告中一同提交。</translation>
     </message>
     <message>
-        <source>No authentication key files were found or your current ones are outdated. Please create new key files using the iTALC Management Console. Alternatively set up logon authentication using the iTALC Management Console. Otherwise you won't be able to access computers using iTALC.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
+        <source>Unsaved settings</source>
+        <translation>不保存</translation>
     </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
     <message>
-        <source>Message from teacher</source>
-        <translation type="unfinished">来自教师的消息</translation>
+        <source>There are unsaved settings. Quit anyway?</source>
+        <translation>设置还未保存,确定要退出吗?</translation>
     </message>
 </context>
 <context>
@@ -1403,77 +1482,81 @@ Note: if the bug involves both a master and client computer, attach bug report a
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">欢迎进入 iTALC!</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">欢迎使用 iTALC!</span></p></body></html></translation>
     </message>
     <message>
         <source>Here you see the working-bar which contains several buttons. Each button is connected to a workspace. Just take a look at the available workspaces by clicking on the corresponding button.</source>
-        <translation type="unfinished">请看这个包含多个按钮的工作栏。每个按钮联结一个工作空间。要使用那个工作空间点击对应的按钮即可。</translation>
+        <translation>请注意窗口的左侧边,您会看到一列包含小图标按钮的纵向工具栏。每个图标对应一个面板,要使用哪个面板,只需点击相应的图标即可。</translation>
     </message>
     <message>
         <source>Using the classroom-manager you can manage your classrooms and computers. You can also see which users are logged in.</source>
-        <translation type="unfinished"></translation>
+        <translation>点击这个班级管理图标,您可以管理班级和计算机,也可以查看已登录的用户。</translation>
     </message>
     <message>
         <source>The snapshot-workspace is a very useful tool. It let's you manage the snapshots you made.</source>
-        <translation type="unfinished">快照工作空间是一个非常有用的工具。它能让你管理你所拍的快照。</translation>
+        <translation>这个图标代表的是截图面板,它是一个非常有用的管理工具,能让您管理所拍的学生机屏幕快照。</translation>
     </message>
     <message>
         <source>Of course you can configure iTALC. This is usually done using the configuration-workspace.</source>
-        <translation type="unfinished">当然你可以配置 iTALC 。这是个常用的配置工作空间。</translation>
+        <translation>当然您可以点击这个图标按钮来配置 iTALC,它是一个常用的配置面板。</translation>
     </message>
     <message>
         <source>About iTALC</source>
-        <translation type="unfinished">关于 iTALC</translation>
+        <translation>关于 iTALC</translation>
     </message>
 </context>
 <context>
     <name>OverviewWidget</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">概览</translation>
+        <translation>简介</translation>
     </message>
     <message>
         <source>Some basic information on iTALC and how to use it.</source>
-        <translation type="unfinished">一些基本的 iTALC 信息和使用方法。</translation>
+        <translation>一些基本的 iTALC 信息和使用方法。</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
+        <source>iTALC Logon</source>
+        <translation>iTALC 登录</translation>
+    </message>
+    <message>
         <source>Please enter your username and password in order to access iTALC clients.</source>
-        <translation type="unfinished"></translation>
+        <translation>请输入您的用户名和密码,以便访问 iTALC 客户机。</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">用户名</translation>
+        <translation>用户名</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">密码</translation>
-    </message>
-    <message>
-        <source>iTALC Logon</source>
-        <translation type="unfinished"></translation>
+        <translation>密码</translation>
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>管理</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
+        <source>iTALC Client %1 on %2:%3</source>
+        <translation>在 %2:%3 上的 iTALC 客户机 %1</translation>
+    </message>
+    <message>
         <source>Unable to register service '%1'.</source>
         <translation>不能注册服务 '%1'。</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not registered.</source>
-        <translation>无法连接 Service Control Manager(您是否拥有所需的权限?)-服务 '%1' 未被注册。</translation>
+        <translation>无法连接服务控制管理器(您是否拥有所需的权限?) - 服务 '%1' 未被注册。</translation>
     </message>
     <message>
         <source>The service '%1' is already registered.</source>
@@ -1509,133 +1592,129 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not unregistered.</source>
-        <translation>无法连接 Service Control Manager(您是否拥有所需的权限?)-服务 '%1' 未能被取消注册。</translation>
+        <translation>无法连接服务控制管理器(您是否拥有所需的权限?) - 服务 '%1' 未能被取消注册。</translation>
     </message>
     <message>
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
-        <translation>无法连接 Service Control Manager(您是否拥有所需的权限?)-服务 '%1' 不能停止。</translation>
-    </message>
-    <message>
-        <source>iTALC Client %1 on %2:%3</source>
-        <translation type="unfinished"></translation>
+        <translation>无法连接服务控制管理器(您是否拥有所需的权限?) - 服务 '%1' 不能停止。</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
     <message>
         <source>View live (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>查看桌面(%1 @ %2)</translation>
     </message>
     <message>
         <source>Remote control (%1 @ %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>远程控制(%1 @ %2)</translation>
     </message>
     <message>
         <source>unknown user</source>
-        <translation type="unfinished">未知用户</translation>
+        <translation>未知用户</translation>
     </message>
 </context>
 <context>
     <name>RemoteControlWidgetToolBar</name>
     <message>
         <source>View only</source>
-        <translation type="unfinished">仅可视</translation>
+        <translation>仅可视</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
+        <translation>远程控制</translation>
     </message>
     <message>
         <source>Lock student</source>
-        <translation type="unfinished">锁定学生</translation>
+        <translation>锁定学生</translation>
     </message>
     <message>
         <source>Unlock student</source>
-        <translation type="unfinished">解锁学生</translation>
+        <translation>解锁学生</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">快照</translation>
+        <translation>截屏</translation>
     </message>
     <message>
         <source>Fullscreen</source>
-        <translation type="unfinished">全屏</translation>
+        <translation>全屏</translation>
     </message>
     <message>
         <source>Window</source>
-        <translation type="unfinished">窗口</translation>
+        <translation>窗口</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished">退出</translation>
+        <translation>退出</translation>
     </message>
     <message>
         <source>Connecting %1</source>
-        <translation type="unfinished">正在连接 %1</translation>
+        <translation>正在连接 %1</translation>
     </message>
     <message>
         <source>Connected.</source>
-        <translation type="unfinished">已连接。</translation>
+        <translation>已连接。</translation>
     </message>
 </context>
 <context>
     <name>RemoteLogonDialog</name>
     <message>
         <source>Remote logon</source>
-        <translation type="unfinished">远程登录</translation>
+        <translation>远程登录</translation>
     </message>
     <message>
         <source>Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).</source>
-        <translation type="unfinished"></translation>
+        <translation>在下面的文本框中输入用户名、密码和域名(可选)。这些信息将用于登录计算机。</translation>
     </message>
     <message>
         <source>Username</source>
-        <translation type="unfinished">用户名</translation>
+        <translation>用户名</translation>
     </message>
     <message>
         <source>Password</source>
-        <translation type="unfinished">密码</translation>
+        <translation>密码</translation>
     </message>
     <message>
         <source>Domain</source>
-        <translation type="unfinished">域</translation>
+        <translation>域</translation>
     </message>
 </context>
 <context>
     <name>RunCommandsDialog</name>
     <message>
         <source>Run commands</source>
-        <translation type="unfinished"></translation>
+        <translation>运行命令</translation>
     </message>
     <message>
         <source>Please enter the commands to run on the selected client(s). You can separate multiple commands by line.</source>
-        <translation type="unfinished"></translation>
+        <translation>请输入要在所选客户机上运行的命令,可以在多行输入不同命令。</translation>
     </message>
 </context>
 <context>
     <name>Snapshot</name>
     <message>
         <source>unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>未知</translation>
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn't exist and couldn't be created.</source>
-        <translation type="unfinished">不能拍快照,目录 %1 不存在并且不能创建。</translation>
+        <translation>不能进行屏幕截图,目录 %1 不存在并且不能创建。</translation>
     </message>
     <message>
         <source>Snapshot</source>
-        <translation type="unfinished">快照</translation>
+        <translation>屏幕截图</translation>
     </message>
 </context>
 <context>
     <name>SnapshotList</name>
     <message>
         <source>Snapshots</source>
-        <translation type="unfinished">快照</translation>
+        <translation>屏幕截图</translation>
     </message>
     <message>
         <source>Simply manage the snapshots you made using this workspace.</source>
-        <translation type="unfinished">使用这个工作空间方便地管理你的快照。</translation>
+        <translation>使用这个面板可以方便地管理您的所有屏幕截图。</translation>
     </message>
 </context>
 <context>
@@ -1643,124 +1722,124 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
-        <translation type="unfinished"><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+        <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">你拍的所有快照都列在这儿。你可以使用客户端窗口的右键菜单拍张快照。可以用下列的按钮来管理这些快照。</p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">您所有的屏幕截图都列在这儿。您可以在客户端窗口上点右键选择屏幕截图。可以用下列的按钮来管理这些截图。</p></body></html></translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">用户:</translation>
+        <translation>用户:</translation>
     </message>
     <message>
         <source>Host:</source>
-        <translation type="unfinished">主机:</translation>
+        <translation>主机:</translation>
     </message>
     <message>
         <source>Date:</source>
-        <translation type="unfinished">日期:</translation>
+        <translation>日期:</translation>
     </message>
     <message>
         <source>Time:</source>
-        <translation type="unfinished">时间:</translation>
+        <translation>时间:</translation>
     </message>
     <message>
         <source>Show</source>
-        <translation type="unfinished"></translation>
+        <translation>显示</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>删除</translation>
     </message>
 </context>
 <context>
     <name>SupportDialog</name>
     <message>
         <source>Support</source>
-        <translation type="unfinished">协助</translation>
+        <translation>协助</translation>
     </message>
     <message>
         <source>Please enter the IP address or the name of the host to which you want to connect.</source>
-        <translation type="unfinished"></translation>
+        <translation>请输入您要连接电脑的 IP 地址或主机名称。</translation>
     </message>
 </context>
 <context>
     <name>TextMessageDialog</name>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation>发送文字消息</translation>
     </message>
     <message>
         <source>Use the field below to type your message which will be sent to all selected users.</source>
-        <translation type="unfinished">在下面的文本框中输入你要发送给所选用户的消息。</translation>
+        <translation>在下面的文本框中输入您要发送给所选用户的消息。</translation>
     </message>
 </context>
 <context>
     <name>VncView</name>
     <message>
         <source>Establishing connection to %1 ...</source>
-        <translation type="unfinished">正在建立连接到 %1 ...</translation>
+        <translation>正在建立到 %1 的连接...</translation>
     </message>
 </context>
 <context>
     <name>clientMenu</name>
     <message>
         <source>Overview</source>
-        <translation type="unfinished">概览</translation>
+        <translation>预览模式</translation>
     </message>
     <message>
         <source>Fullscreen demo</source>
-        <translation type="unfinished">全屏演示</translation>
+        <translation>全屏演示</translation>
     </message>
     <message>
         <source>Window demo</source>
-        <translation type="unfinished">窗口演示</translation>
+        <translation>窗口演示</translation>
     </message>
     <message>
         <source>Locked display</source>
-        <translation type="unfinished">锁定显示</translation>
+        <translation>锁定屏幕</translation>
     </message>
     <message>
         <source>View live</source>
-        <translation type="unfinished">现场直播</translation>
+        <translation>屏幕监控</translation>
     </message>
     <message>
         <source>Remote control</source>
-        <translation type="unfinished">远程控制</translation>
+        <translation>远程控制</translation>
     </message>
     <message>
         <source>Let student show demo</source>
-        <translation type="unfinished">展示学生演示</translation>
+        <translation>学生演示</translation>
     </message>
     <message>
         <source>Send text message</source>
-        <translation type="unfinished">发送文字消息</translation>
+        <translation>发送消息</translation>
     </message>
     <message>
         <source>Logout user</source>
-        <translation type="unfinished">用户登出</translation>
+        <translation>注销用户</translation>
     </message>
     <message>
         <source>Take a snapshot</source>
-        <translation type="unfinished">拍张快照</translation>
+        <translation>屏幕截图</translation>
     </message>
     <message>
         <source>Power on</source>
-        <translation type="unfinished">开机</translation>
+        <translation>开机</translation>
     </message>
     <message>
         <source>Reboot</source>
-        <translation type="unfinished">重启</translation>
+        <translation>重启</translation>
     </message>
     <message>
         <source>Power down</source>
-        <translation type="unfinished">关机</translation>
+        <translation>关机</translation>
     </message>
     <message>
         <source>Execute commands</source>
-        <translation type="unfinished">执行命令</translation>
+        <translation>执行命令</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/resources/zh_tw.qm b/lib/resources/zh_tw.qm
deleted file mode 100644
index fa68a15..0000000
Binary files a/lib/resources/zh_tw.qm and /dev/null differ
diff --git a/lib/resources/zh_tw.ts b/lib/resources/zh_tw.ts
index eb74923..726fee6 100644
--- a/lib/resources/zh_tw.ts
+++ b/lib/resources/zh_tw.ts
@@ -1,6 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="zh_TW">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_TW" version="2.1">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -12,6 +10,14 @@
         <translation>關於</translation>
     </message>
     <message>
+        <source>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</source>
+        <translation>iTALC - Intelligent Teaching And Learning with Computers
+
+Copyright © 2004-2016 Tobias Doerffel / iTALC Solutions</translation>
+    </message>
+    <message>
         <source><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></source>
         <translation><a href="http://italc.sourceforge.net">http://italc.sourceforge.net</a></translation>
     </message>
@@ -27,7 +33,7 @@
         <source>Current language not translated yet (or native English).
 
 If you're interested in translating iTALC into your local or another language or want to improve an existing translation, please contact an iTALC developer!</source>
-        <translation>您目前使用的語言尚未翻譯。
+        <translation>TeliuTe<teliute at 163.com>, 2014, 2016.
 
 若您想參與翻譯 iTALC,或是想修正目前的翻譯,請與 iTALC 開發者聯絡。</translation>
     </message>
@@ -35,12 +41,6 @@ If you're interested in translating iTALC into your local or another langua
         <source>License</source>
         <translation>授權條款</translation>
     </message>
-    <message utf8="true">
-        <source>iTALC - Intelligent Teaching And Learning with Computers
-
-Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>AccessDialogSlave</name>
@@ -96,7 +96,7 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation>使用快顯功能表(滑鼠右鍵)來加入/移除電腦和/或教室。</translation>
     </message>
     <message>
-        <source>Export to text-file</source>
+        <source>Export to text file</source>
         <translation>匯出為純文字檔案</translation>
     </message>
     <message>
@@ -144,30 +144,24 @@ Copyright © 2004-2013 Tobias Doerffel / iTALC Solutions</source>
         <translation>加入教室</translation>
     </message>
     <message>
-        <source>No configuration-file found</source>
+        <source>No configuration file found</source>
         <translation>找不到組態檔案</translation>
     </message>
     <message>
-        <source>Could not open configuration file %1.
-You will have to add at least one classroom and computers using the classroom-manager which you'll find inside the program in the sidebar on the left side.</source>
-        <translation>無法開啟組態檔案 %1。
-您必須先使用位於程式中左側的側邊列的教室管理程式加入至少一個教室與電腦。</translation>
+        <source>Could not open configuration file %1. You will have to add at least one classroom and computers using the classroom manager which you'll find inside the program in the sidebar on the left side.</source>
+        <translation>無法開啟組態檔案 %1。您必須先使用位於程式中左側的側邊列的教室管理程式加入至少一個教室與電腦。</translation>
     </message>
     <message>
-        <source>Error in configuration-file</source>
+        <source>Error in configuration file</source>
         <translation>組態檔案中有錯誤</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file and have to add all classrooms and computers again.</source>
-        <translation>解析組態檔案 %1 時發生錯誤。
-請編輯它。否則您應該刪除這個檔案並且須要重新加入所有的教室和電腦。</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file and add all classrooms and computers again.</source>
+        <translation>解析組態檔案 %1 時發生錯誤。請編輯它。否則您應該刪除這個檔案並且須要重新加入所有的教室和電腦。</translation>
     </message>
     <message>
-        <source>Error while parsing configuration-file %1.
-Please edit it. Otherwise you should delete this file.</source>
-        <translation>解析組態檔案 %1 時發生錯誤。
-請編輯它。否則您應該刪除這個檔案。</translation>
+        <source>Error while parsing configuration file %1. Please fix the file manually. Otherwise you should delete the file.</source>
+        <translation>解析組態檔案 %1 時發生錯誤。請編輯它。否則您應該刪除這個檔案。</translation>
     </message>
     <message>
         <source>Select output-file</source>
@@ -244,6 +238,10 @@ Do you want to create a new classrom now?</source>
         <source>Desktop locked</source>
         <translation>桌面已鎖定</translation>
     </message>
+    <message>
+        <source>Message from teacher</source>
+        <translation>來自老師的訊息</translation>
+    </message>
 </context>
 <context>
     <name>ClientAction</name>
@@ -339,12 +337,12 @@ Do you want to create a new classrom now?</source>
         <translation>您沒有指定此電腦的 IP 位址或主機名稱!</translation>
     </message>
     <message>
-        <source>Invalid MAC-address</source>
+        <source>Invalid MAC address</source>
         <translation>無效的 MAC-位址</translation>
     </message>
     <message>
-        <source>You specified an invalid MAC-address. Either leave the field blank or enter a valid MAC-address (use ":" as separator!).</source>
-        <translation>您指定了無效的 MAC-位址。您可以讓此欄位留空或輸入有效的 MAC-位址(使用 ":" 分隔!)。.</translation>
+        <source>You specified an invalid MAC address. Either leave the field blank or enter a valid MAC address (use ":" as separator!).</source>
+        <translation>您指定了無效的 MAC-位址。您可以讓此欄位留空或輸入有效的 MAC-位址(使用 英文冒號“:”分隔!)。</translation>
     </message>
 </context>
 <context>
@@ -386,13 +384,113 @@ Do you want to create a new classrom now?</source>
         <translation>工具列按鈕不顯示文字</translation>
     </message>
     <message>
+        <source>Language:</source>
+        <translation>語言:</translation>
+    </message>
+    <message>
+        <source>System default</source>
+        <translation>系統默認</translation>
+    </message>
+    <message>
+        <source>ar - العربية</source>
+        <translation>ar - العربية</translation>
+    </message>
+    <message>
+        <source>cs - Česky</source>
+        <translation>cs - Česky</translation>
+    </message>
+    <message>
+        <source>de - Deutsch</source>
+        <translation>de - Deutsch</translation>
+    </message>
+    <message>
+        <source>el - Ελληνικά</source>
+        <translation>el - Ελληνικά</translation>
+    </message>
+    <message>
+        <source>es - Español</source>
+        <translation>es - Español</translation>
+    </message>
+    <message>
+        <source>fi - Suomi</source>
+        <translation>fi - Suomi</translation>
+    </message>
+    <message>
+        <source>fr - Français</source>
+        <translation>fr - Français</translation>
+    </message>
+    <message>
+        <source>he - עִבְרִית</source>
+        <translation>he - עִבְרִית</translation>
+    </message>
+    <message>
+        <source>hu - Magyar</source>
+        <translation>hu - Magyar</translation>
+    </message>
+    <message>
+        <source>it - Italiano</source>
+        <translation>it - Italiano</translation>
+    </message>
+    <message>
+        <source>nl - Nederlands</source>
+        <translation>nl - Nederlands</translation>
+    </message>
+    <message>
+        <source>nn - Norsk</source>
+        <translation>nn - Norsk</translation>
+    </message>
+    <message>
+        <source>pl - Polski</source>
+        <translation>pl - Polski</translation>
+    </message>
+    <message>
+        <source>pt_br - Brasileiro</source>
+        <translation>pt_br - Brasileiro</translation>
+    </message>
+    <message>
+        <source>pt_pt - Português</source>
+        <translation>pt_pt - Português</translation>
+    </message>
+    <message>
+        <source>ru - Русский</source>
+        <translation>ru - Русский</translation>
+    </message>
+    <message>
+        <source>sk - Slovenský</source>
+        <translation>sk - Slovenský</translation>
+    </message>
+    <message>
+        <source>sl - Slovenčina</source>
+        <translation>sl - Slovenčina</translation>
+    </message>
+    <message>
+        <source>sv - Svenska</source>
+        <translation>sv - Svenska</translation>
+    </message>
+    <message>
+        <source>tr - Türkçe</source>
+        <translation>tr - Türkçe</translation>
+    </message>
+    <message>
+        <source>uk - Українська</source>
+        <translation>uk - Українська</translation>
+    </message>
+    <message>
+        <source>zh_cn - 简体字</source>
+        <translation>zh_cn - 简体字</translation>
+    </message>
+    <message>
+        <source>zh_tw - 簡體字</source>
+        <translation>zh_tw - 繁體字</translation>
+    </message>
+    <message>
         <source>Your role (needs according keys!)</source>
         <translation>您的角色(需要對應的鍵值!)</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can select your role. Only change this if you know what you're doing. Otherwise you won't be able to access any clients until you restore your old role.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -416,21 +514,13 @@ p, li { white-space: pre-wrap; }
         <translation>其他</translation>
     </message>
     <message>
-        <source>Settings for multi-logon</source>
-        <translation>多重登入的設定值</translation>
-    </message>
-    <message>
-        <source>Domain</source>
-        <translation>網域</translation>
-    </message>
-    <message>
-        <source>Double-click action for client-window</source>
-        <translation>對客戶端視窗使用雙擊動作</translation>
+        <source>Double click action for client window</source>
+        <translation>應用於客戶端窗口的雙擊動作</translation>
     </message>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here you can set what should happen if you double-click a client-window.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -462,13 +552,6 @@ p, li { white-space: pre-wrap; }
     </message>
 </context>
 <context>
-    <name>DecoratedMessageBox</name>
-    <message>
-        <source>OK</source>
-        <translation>確定</translation>
-    </message>
-</context>
-<context>
     <name>DemoClient</name>
     <message>
         <source>iTALC Demo</source>
@@ -482,7 +565,7 @@ p, li { white-space: pre-wrap; }
         <translation>驗證錯誤</translation>
     </message>
     <message>
-        <source>Somebody (IP: %1) tried to access this computer but could not authenticate itself successfully!</source>
+        <source>Somebody (IP: %1) tried to access this computer but could not authenticate successfully!</source>
         <translation>某人 (IP: %1) 嘗試存取這台電腦,但是無法成功的通過驗證!</translation>
     </message>
 </context>
@@ -544,10 +627,6 @@ The public key part is used on the client computers to verify that any incoming
         <translation>建立新的存取金鑰(主電腦)</translation>
     </message>
     <message>
-        <source>assistantModeButtonGroup</source>
-        <translation>assistantModeButtonGroup</translation>
-    </message>
-    <message>
         <source>Import public key (client computer)</source>
         <translation>匯入公開金鑰(客戶端電腦)</translation>
     </message>
@@ -607,11 +686,11 @@ The public key part is used on the client computers to verify that any incoming
         <source>The following actions will be taken:</source>
         <translation>將會進行以下的動作:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Create new access keys</source>
         <translation>• 建立新的存取金鑰</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Import public access key from</source>
         <translation>• 從以下來源匯入公開存取金鑰:</translation>
     </message>
@@ -619,15 +698,15 @@ The public key part is used on the client computers to verify that any incoming
         <source><unknown></source>
         <translation><未知></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Write access key(s) to</source>
         <translation>• 將存取金鑰寫到:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Export public key to</source>
         <translation>• 將公開金鑰匯出到:</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source>• Configure for user role</source>
         <translation>• 設定使用者角色</translation>
     </message>
@@ -724,10 +803,6 @@ The public key part is used on the client computers to verify that any incoming
 <context>
     <name>MainWindow</name>
     <message>
-        <source>Quit</source>
-        <translation>離開</translation>
-    </message>
-    <message>
         <source>MainWindow</source>
         <translation>主視窗</translation>
     </message>
@@ -736,166 +811,6 @@ The public key part is used on the client computers to verify that any incoming
         <translation>工具列</translation>
     </message>
     <message>
-        <source>iTALC</source>
-        <translation>iTALC</translation>
-    </message>
-    <message>
-        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
-        <translation>無法讀取/寫入或建立目錄 %1!為了執行 iTALC,請確定您被允許建立或寫入這個目錄。</translation>
-    </message>
-    <message>
-        <source>Classroom</source>
-        <translation>教室</translation>
-    </message>
-    <message>
-        <source>Switch classroom</source>
-        <translation>切換教室</translation>
-    </message>
-    <message>
-        <source>Click this button to open a menu where you can choose the active classroom.</source>
-        <translation>按下這個按鈕會開啟一個選單讓您選擇使用中的教室。</translation>
-    </message>
-    <message>
-        <source>Click on this button, to switch between classrooms.</source>
-        <translation>按下這個按鈕在教室間切換。</translation>
-    </message>
-    <message>
-        <source>Overview mode</source>
-        <translation>概覽模式</translation>
-    </message>
-    <message>
-        <source>Overview</source>
-        <translation>概覽</translation>
-    </message>
-    <message>
-        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
-        <translation>這是 iTALC 的預設模式,讓您可以概覽所有可見的電腦。同時按下這個按鈕可以解鎖被鎖定的工作站或離開示範模式。</translation>
-    </message>
-    <message>
-        <source>Fullscreen demo</source>
-        <translation>全螢幕示範</translation>
-    </message>
-    <message>
-        <source>Fullscreen Demo</source>
-        <translation>全螢幕示範</translation>
-    </message>
-    <message>
-        <source>Stop Demo</source>
-        <translation>停止示範</translation>
-    </message>
-    <message>
-        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
-        <translation>在這個模式中您的螢幕會在所有出現的電腦中。同時使用者將無法進行其他操作,因為所有的輸入裝置在這個模式中都會被鎖定。</translation>
-    </message>
-    <message>
-        <source>Window demo</source>
-        <translation>視窗示範</translation>
-    </message>
-    <message>
-        <source>Window Demo</source>
-        <translation>視窗示範</translation>
-    </message>
-    <message>
-        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
-        <translation>在這個模式中您的螢幕會以視窗的形式顯示在所有出現的電腦中。使用者可以切換到其他視窗以繼續他們的操作。</translation>
-    </message>
-    <message>
-        <source>Lock/unlock desktops</source>
-        <translation>鎖定/解鎖桌面</translation>
-    </message>
-    <message>
-        <source>Lock all</source>
-        <translation>鎖定全部</translation>
-    </message>
-    <message>
-        <source>Unlock all</source>
-        <translation>鎖定全部</translation>
-    </message>
-    <message>
-        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
-        <translation>要讓所有的使用者全心注意您可以使用這個按鈕鎖定他們的桌面。在這個模式中所有的輸入裝置都會被鎖定而畫面都會變成黑色。</translation>
-    </message>
-    <message>
-        <source>Send text message</source>
-        <translation>傳送文字訊息</translation>
-    </message>
-    <message>
-        <source>Text message</source>
-        <translation>文字訊息</translation>
-    </message>
-    <message>
-        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
-        <translation>使用這個按鈕傳送文字訊息給所有的使用者,例如告訴他們新的工作等等。</translation>
-    </message>
-    <message>
-        <source>Power on computers</source>
-        <translation>讓電腦開機</translation>
-    </message>
-    <message>
-        <source>Power on</source>
-        <translation>開機</translation>
-    </message>
-    <message>
-        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
-        <translation>按下這個按鈕讓所有可視的電腦開機。這樣您可以不用親自開啟每一台電腦。</translation>
-    </message>
-    <message>
-        <source>Power down computers</source>
-        <translation>關閉電腦</translation>
-    </message>
-    <message>
-        <source>Power down</source>
-        <translation>關機</translation>
-    </message>
-    <message>
-        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
-        <translation>要讓所有顯示的電腦關機(例如在課程結束後)您可以按這個按鈕。</translation>
-    </message>
-    <message>
-        <source>Support</source>
-        <translation>支援</translation>
-    </message>
-    <message>
-        <source>Direct support</source>
-        <translation>直接協助</translation>
-    </message>
-    <message>
-        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
-        <translation>如果您需要協助使用某台電腦的人,可以按下這個按鈕,然後輸入對應的主機名稱或 IP。</translation>
-    </message>
-    <message>
-        <source>Adjust/align</source>
-        <translation>調整/對齊</translation>
-    </message>
-    <message>
-        <source>Adjust windows and their size</source>
-        <translation>調整視窗和他們的大小</translation>
-    </message>
-    <message>
-        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
-        <translation>當按下這個按鈕會調整客戶端視窗為最大可能的大小。同時所有的視窗也會被調整。</translation>
-    </message>
-    <message>
-        <source>Auto view</source>
-        <translation>自動檢視</translation>
-    </message>
-    <message>
-        <source>Auto re-arrange windows and their size</source>
-        <translation>自動重新排列視窗和他們的大小</translation>
-    </message>
-    <message>
-        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
-        <translation>當按下這個按鈕所有可見的視窗會重新排列並調整。</translation>
-    </message>
-    <message>
-        <source>iTALC Master Control</source>
-        <translation>iTALC 主要控制</translation>
-    </message>
-    <message>
-        <source>Remote control</source>
-        <translation>遠端控制</translation>
-    </message>
-    <message>
         <source>iTALC Management Console</source>
         <translation>iTALC 管理主控台</translation>
     </message>
@@ -1024,6 +939,10 @@ The public key part is used on the client computers to verify that any incoming
         <translation>開啟多層次(半透明)視窗擷取</translation>
     </message>
     <message>
+        <source>Poll full screen (leave this enabled per default)</source>
+        <translation>輪詢全螢幕(默認開啓)</translation>
+    </message>
+    <message>
         <source>Low accuracy (turbo mode)</source>
         <translation>低精確度(快速模式)</translation>
     </message>
@@ -1044,10 +963,6 @@ The public key part is used on the client computers to verify that any incoming
         <translation>iTALC 1 展示伺服器</translation>
     </message>
     <message>
-        <source>Multithreading (can be enabled when using the VNC reflector backend)</source>
-        <translation>多執行緒(若是使用 VNC reflector 後端介面時可以開啟)</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>網路</translation>
     </message>
@@ -1258,10 +1173,162 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>關於 Qt</translation>
     </message>
     <message>
+        <source>iTALC</source>
+        <translation>iTALC</translation>
+    </message>
+    <message>
         <source>No write access</source>
         <translation>沒有寫入權限</translation>
     </message>
     <message>
+        <source>Could not read/write or create directory %1! For running iTALC, make sure you're permitted to create or write this directory.</source>
+        <translation>無法讀取/寫入或建立目錄 %1!為了執行 iTALC,請確定您被允許建立或寫入這個目錄。</translation>
+    </message>
+    <message>
+        <source>Classroom</source>
+        <translation>教室</translation>
+    </message>
+    <message>
+        <source>Switch classroom</source>
+        <translation>切換教室</translation>
+    </message>
+    <message>
+        <source>Click this button to open a menu where you can choose the active classroom.</source>
+        <translation>按下這個按鈕會開啟一個選單讓您選擇使用中的教室。</translation>
+    </message>
+    <message>
+        <source>Click on this button, to switch between classrooms.</source>
+        <translation>按下這個按鈕在教室間切換。</translation>
+    </message>
+    <message>
+        <source>Overview mode</source>
+        <translation>概覽模式</translation>
+    </message>
+    <message>
+        <source>Overview</source>
+        <translation>概覽</translation>
+    </message>
+    <message>
+        <source>This is the default mode in iTALC and allows you to have an overview over all visible computers. Also click on this button for unlocking locked workstations or for leaving demo-mode.</source>
+        <translation>這是 iTALC 的預設模式,讓您可以概覽所有可見的電腦。同時按下這個按鈕可以解鎖被鎖定的工作站或離開示範模式。</translation>
+    </message>
+    <message>
+        <source>Fullscreen demo</source>
+        <translation>全螢幕示範</translation>
+    </message>
+    <message>
+        <source>Fullscreen Demo</source>
+        <translation>全螢幕示範</translation>
+    </message>
+    <message>
+        <source>Stop Demo</source>
+        <translation>停止示範</translation>
+    </message>
+    <message>
+        <source>In this mode your screen is being displayed on all shown computers. Furthermore the users aren't able to do something else as all input devices are locked in this mode.</source>
+        <translation>在這個模式中您的螢幕會在所有出現的電腦中。同時使用者將無法進行其他操作,因為所有的輸入裝置在這個模式中都會被鎖定。</translation>
+    </message>
+    <message>
+        <source>Window demo</source>
+        <translation>視窗示範</translation>
+    </message>
+    <message>
+        <source>Window Demo</source>
+        <translation>視窗示範</translation>
+    </message>
+    <message>
+        <source>In this mode your screen being displayed in a window on all shown computers. The users are able to switch to other windows and thus can continue to work.</source>
+        <translation>在這個模式中您的螢幕會以視窗的形式顯示在所有出現的電腦中。使用者可以切換到其他視窗以繼續他們的操作。</translation>
+    </message>
+    <message>
+        <source>Lock/unlock desktops</source>
+        <translation>鎖定/解鎖桌面</translation>
+    </message>
+    <message>
+        <source>Lock all</source>
+        <translation>鎖定全部</translation>
+    </message>
+    <message>
+        <source>Unlock all</source>
+        <translation>鎖定全部</translation>
+    </message>
+    <message>
+        <source>To have all user's full attention you can lock their desktops using this button. In this mode all input devices are locked and the screen is black.</source>
+        <translation>要讓所有的使用者全心注意您可以使用這個按鈕鎖定他們的桌面。在這個模式中所有的輸入裝置都會被鎖定而畫面都會變成黑色。</translation>
+    </message>
+    <message>
+        <source>Send text message</source>
+        <translation>傳送文字訊息</translation>
+    </message>
+    <message>
+        <source>Text message</source>
+        <translation>文字訊息</translation>
+    </message>
+    <message>
+        <source>Use this button to send a text message to all users e.g. to tell them new tasks etc.</source>
+        <translation>使用這個按鈕傳送文字訊息給所有的使用者,例如告訴他們新的工作等等。</translation>
+    </message>
+    <message>
+        <source>Power on computers</source>
+        <translation>讓電腦開機</translation>
+    </message>
+    <message>
+        <source>Power on</source>
+        <translation>開機</translation>
+    </message>
+    <message>
+        <source>Click this button to power on all visible computers. This way you do not have to turn on each computer by hand.</source>
+        <translation>按下這個按鈕讓所有可視的電腦開機。這樣您可以不用親自開啟每一台電腦。</translation>
+    </message>
+    <message>
+        <source>Power down computers</source>
+        <translation>關閉電腦</translation>
+    </message>
+    <message>
+        <source>Power down</source>
+        <translation>關機</translation>
+    </message>
+    <message>
+        <source>To power down all shown computers (e.g. after the lesson has finished) you can click this button.</source>
+        <translation>要讓所有顯示的電腦關機(例如在課程結束後)您可以按這個按鈕。</translation>
+    </message>
+    <message>
+        <source>Support</source>
+        <translation>支援</translation>
+    </message>
+    <message>
+        <source>Direct support</source>
+        <translation>直接協助</translation>
+    </message>
+    <message>
+        <source>If you need to support someone at a certain computer you can click this button and enter the according hostname or IP afterwards.</source>
+        <translation>如果您需要協助使用某台電腦的人,可以按下這個按鈕,然後輸入對應的主機名稱或 IP。</translation>
+    </message>
+    <message>
+        <source>Adjust/align</source>
+        <translation>調整/對齊</translation>
+    </message>
+    <message>
+        <source>Adjust windows and their size</source>
+        <translation>調整視窗和他們的大小</translation>
+    </message>
+    <message>
+        <source>When clicking this button the biggest possible size for the client-windows is adjusted. Furthermore all windows are aligned.</source>
+        <translation>當按下這個按鈕會調整客戶端視窗為最大可能的大小。同時所有的視窗也會被調整。</translation>
+    </message>
+    <message>
+        <source>Auto view</source>
+        <translation>自動檢視</translation>
+    </message>
+    <message>
+        <source>Auto re-arrange windows and their size</source>
+        <translation>自動重新排列視窗和他們的大小</translation>
+    </message>
+    <message>
+        <source>When clicking this button all visible windows are re-arranged and adjusted.</source>
+        <translation>當按下這個按鈕所有可見的視窗會重新排列並調整。</translation>
+    </message>
+    <message>
         <source>Could not contact iTALC service</source>
         <translation>無法與 iTALC 服務聯繫</translation>
     </message>
@@ -1270,6 +1337,10 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>無法與本地端的 iTALC 服務聯繫。您有可能是輸入了錯誤的密碼或是金鑰檔並未正確安裝。請與您的站台管理員聯絡,以便使用 iTALC 管理主控台來解決此問題。</translation>
     </message>
     <message>
+        <source>iTALC Master Control</source>
+        <translation>iTALC 主要控制</translation>
+    </message>
+    <message>
         <source>Authentication impossible</source>
         <translation>無法認證</translation>
     </message>
@@ -1278,20 +1349,12 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>找不到認證金鑰檔,或是您目前使用的金鑰檔已過期。請使用 iTALC 管理主控台建立新的金鑰檔。此外您也可以在 iTALC 管理主控台裡設定登入認證方式。不然您將無法使用iTALC 存取電腦。</translation>
     </message>
     <message>
-        <source>Configuration not writable</source>
-        <translation>設定檔無法寫入</translation>
-    </message>
-    <message>
-        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
-        <translation>本地端的設定後端回報,您的設定無法寫入。請以較高的權限執行 iTALC 管理主控台。</translation>
-    </message>
-    <message>
-        <source>All settings were applied successfully.</source>
-        <translation>所有設定均已成功套用。</translation>
+        <source>Remote control</source>
+        <translation>遠端控制</translation>
     </message>
     <message>
-        <source>An error occured while applying settings!</source>
-        <translation>當套用設定時發生錯誤!</translation>
+        <source>Quit</source>
+        <translation>離開</translation>
     </message>
     <message>
         <source>Could not modify the autostart property for the iTALC Service.</source>
@@ -1306,6 +1369,22 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <translation>無法變更 iTALC 服務的防火牆設定。</translation>
     </message>
     <message>
+        <source>Configuration not writable</source>
+        <translation>設定檔無法寫入</translation>
+    </message>
+    <message>
+        <source>The local configuration backend reported that the configuration is not writable! Please run the iTALC Management Console with higher privileges.</source>
+        <translation>本地端的設定後端回報,您的設定無法寫入。請以較高的權限執行 iTALC 管理主控台。</translation>
+    </message>
+    <message>
+        <source>All settings were applied successfully.</source>
+        <translation>所有設定均已成功套用。</translation>
+    </message>
+    <message>
+        <source>An error occured while applying settings!</source>
+        <translation>當套用設定時發生錯誤!</translation>
+    </message>
+    <message>
         <source>iTALC Management Console %1</source>
         <translation>iTALC 管理主控台 %1</translation>
     </message>
@@ -1397,24 +1476,13 @@ Note: if the bug involves both a master and client computer, attach bug report a
         <source>There are unsaved settings. Quit anyway?</source>
         <translation>有尚未儲存的設定。還是要離開嗎?</translation>
     </message>
-    <message>
-        <source>Poll full screen (leave this enabled per default)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>MessageBoxSlave</name>
-    <message>
-        <source>Message from teacher</source>
-        <translation>來自老師的訊息</translation>
-    </message>
 </context>
 <context>
     <name>Overview</name>
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; font-style:italic;">Welcome to iTALC!</span></p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -1473,12 +1541,16 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Manage</source>
-        <translation type="unfinished"></translation>
+        <translation>管理</translation>
     </message>
 </context>
 <context>
     <name>QApplication</name>
     <message>
+        <source>iTALC Client %1 on %2:%3</source>
+        <translation>iTALC 客戶端 %1 於 %2:%3</translation>
+    </message>
+    <message>
         <source>Unable to register service '%1'.</source>
         <translation>無法註冊服務 '%1'。</translation>
     </message>
@@ -1526,10 +1598,6 @@ p, li { white-space: pre-wrap; }
         <source>The Service Control Manager could not be contacted (do you have the neccessary rights?!) - the service '%1' was not stopped.</source>
         <translation>無法連接服務控制管理程式(您是否有需要的權限?!)- 服務 '%1' 尚未停止。</translation>
     </message>
-    <message>
-        <source>iTALC Client %1 on %2:%3</source>
-        <translation>iTALC 客戶端 %1 於 %2:%3</translation>
-    </message>
 </context>
 <context>
     <name>RemoteControlWidget</name>
@@ -1654,7 +1722,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">All snapshots you made are listed here. You can make snapshots by selecting the according entry in the context-menu of a client-window. These snapshosts can be managed using the buttons below.</p></body></html></source>
         <translation><html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
@@ -1774,4 +1842,4 @@ p, li { white-space: pre-wrap; }
         <translation>執行指令</translation>
     </message>
 </context>
-</TS>
+</TS>
\ No newline at end of file
diff --git a/lib/src/AuthenticationCredentials.cpp b/lib/src/AuthenticationCredentials.cpp
index dbb5807..60230a7 100644
--- a/lib/src/AuthenticationCredentials.cpp
+++ b/lib/src/AuthenticationCredentials.cpp
@@ -62,7 +62,7 @@ bool AuthenticationCredentials::hasCredentials( TypeFlags credentialType ) const
 	if( credentialType & CommonSecret )
 	{
 		return !m_commonSecret.isEmpty() &&
-				QByteArray::fromBase64( m_commonSecret.toAscii() ).size() ==
+				QByteArray::fromBase64( m_commonSecret.toLatin1() ).size() ==
 												DsaKey::DefaultChallengeSize;
 	}
 
diff --git a/lib/src/DecoratedMessageBox.cpp b/lib/src/DecoratedMessageBox.cpp
deleted file mode 100644
index e43cc9b..0000000
--- a/lib/src/DecoratedMessageBox.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * DecoratedMessageBox.cpp - simple message-box
- *
- * Copyright (c) 2006-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
- *
- * This file is part of iTALC - http://italc.sourceforge.net
- *
- * 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 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program (see COPYING); if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#include "DecoratedMessageBox.h"
-#include "LocalSystem.h"
-
-#include <QtCore/QThread>
-#include <QtGui/QApplication>
-#include <QtGui/QWidget>
-#include <QtGui/QPixmap>
-#include <QtGui/QIcon>
-#include <QtGui/QLabel>
-#include <QtGui/QBoxLayout>
-#include <QtGui/QPushButton>
-#include <QtGui/QSystemTrayIcon>
-
-QSystemTrayIcon * __systray_icon = NULL;
-
-
-DecoratedMessageBox::DecoratedMessageBox( const QString & _title,
-						const QString & _msg,
-						const QPixmap & _pixmap ) :
-	QDialog()
-{
-	QVBoxLayout * vl = new QVBoxLayout( this );
-
-	QWidget * content = new QWidget( this );
-
-	QHBoxLayout * hl1 = new QHBoxLayout( content );
-	hl1->setSpacing( 20 );
-
-	QLabel * icon_lbl = new QLabel( content );
-	if( _pixmap.isNull() == FALSE )
-	{
-		icon_lbl->setPixmap( _pixmap );
-	}
-	else
-	{
-		icon_lbl->setPixmap( QPixmap( ":/resources/info.png" ) );
-	}
-	icon_lbl->setFixedSize( icon_lbl->pixmap()->size() );
-
-	QLabel * txt_lbl = new QLabel( _msg, content );
-	txt_lbl->setMinimumWidth( 400 );
-	txt_lbl->setWordWrap( TRUE );
-
-	hl1->addWidget( icon_lbl );
-	hl1->addWidget( txt_lbl );
-
-	QWidget * btn_area = new QWidget( this );
-	QHBoxLayout * hl2 = new QHBoxLayout( btn_area );
-
-	QPushButton * ok_btn = new QPushButton( QPixmap( ":/resources/ok.png" ),
-						tr( "OK" ), btn_area );
-	connect( ok_btn, SIGNAL( clicked() ), this, SLOT( accept() ) );
-
-	hl2->addStretch();
-	hl2->addWidget( ok_btn );
-	hl2->addStretch();
-
-	vl->addWidget( content );
-	vl->addWidget( btn_area );
-
-	setWindowTitle( _title );
-	setWindowIcon( *icon_lbl->pixmap() );
-	setAttribute( Qt::WA_DeleteOnClose, TRUE );
-	setModal( TRUE );
-	show();
-	LocalSystem::activateWindow( this );
-}
-
-
-
-
-void DecoratedMessageBox::information( const QString & _title,
-						const QString & _msg,
-						const QPixmap & _pixmap )
-{
-	DecoratedMessageBox * m =
-			new DecoratedMessageBox( _title, _msg, _pixmap );
-	m->exec();
-}
-
-
-
-void DecoratedMessageBox::trySysTrayMessage( const QString & _title,
-					const QString & _msg,
-					MessageIcon _msg_icon )
-{
-	qWarning( "%s", _msg.toUtf8().constData() );
-	if( QThread::currentThreadId() !=
-		QCoreApplication::instance()->thread()->currentThreadId() )
-	{
-		return;
-	}
-
-	// OS X does not support messages
-	if( QSystemTrayIcon::supportsMessages() && __systray_icon )
-	{
-		__systray_icon->showMessage( _title, _msg,
-				(QSystemTrayIcon::MessageIcon) _msg_icon, -1 );
-		return;
-	}
-
-	QPixmap p;
-	switch( _msg_icon )
-	{
-		case Information:
-		case Warning:
-			p = QPixmap( ":/resources/info.png" );
-			break;
-		case Critical:
-			p = QPixmap( ":/resources/stop.png" );
-			break;
-
-		default: break;
-	}
-
-	new DecoratedMessageBox( _title, _msg, p );
-
-}
-
-
diff --git a/lib/src/DsaKey.cpp b/lib/src/DsaKey.cpp
index 2eb84c8..a319e47 100644
--- a/lib/src/DsaKey.cpp
+++ b/lib/src/DsaKey.cpp
@@ -1,8 +1,7 @@
 /*
- * DsaKey.cpp - easy to use C++ classes for dealing with DSA-keys, -signatures
- *              etc.
+ * DsaKey.cpp - C++ wrapper classes for dealing with DSA keys and signatures
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -352,7 +351,11 @@ buffer_put_bignum2(Buffer *buffer, BIGNUM *value)
 		exit( -1 );
 	}
 	hasnohigh = (buf[1] & 0x80) ? 0 : 1;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	if (BN_is_negative(value)) {
+#else
 	if (value->neg) {
+#endif
 		/**XXX should be two's-complement */
 		int i, carry;
 		unsigned char *uc = buf;
@@ -424,32 +427,48 @@ bool DsaKey::verifySignature( const QByteArray & _data,
 		return false;
 	}
 
-	if( ( sig->r = BN_new() ) == NULL )
+	BIGNUM* bn_r = BN_new();
+	BIGNUM* bn_s = BN_new();
+
+	if( bn_r == NULL || bn_s == NULL )
 	{
 		qCritical( "DsaKey::verifySignature(): BN_new failed" );
 		return false;
 	}
 
-	if( ( sig->s = BN_new() ) == NULL )
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	if( DSA_SIG_set0( sig, bn_r, bn_s ) == 0 )
 	{
-		qCritical( "DsaKey::verifySignature(): BN_new failed" );
+		qCritical( "DsaKey::verifySignature(): DSA_SIG_set0 failed" );
 		return false;
 	}
+#else
+	sig->r = bn_r;
+	sig->s = bn_s;
+#endif
 
-	BN_bin2bn( sigblob, INTBLOB_LEN, sig->r );
-	BN_bin2bn( sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s );
+	BN_bin2bn( sigblob, INTBLOB_LEN, bn_r );
+	BN_bin2bn( sigblob+ INTBLOB_LEN, INTBLOB_LEN, bn_s );
 
 	memset( sigblob, 0, len );
 	delete[] sigblob;
 
 	// sha1 the data
 	const EVP_MD * evp_md = EVP_sha1();
-	EVP_MD_CTX md;
 	unsigned char digest[EVP_MAX_MD_SIZE];
 	unsigned int dlen;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	EVP_MD_CTX* md = EVP_MD_CTX_new();
+	EVP_DigestInit( md, evp_md );
+	EVP_DigestUpdate( md, _data.constData(), _data.size() );
+	EVP_DigestFinal( md, digest, &dlen );
+	EVP_MD_CTX_free( md );
+#else
+	EVP_MD_CTX md;
 	EVP_DigestInit( &md, evp_md );
 	EVP_DigestUpdate( &md, _data.constData(), _data.size() );
 	EVP_DigestFinal( &md, digest, &dlen );
+#endif
 
 	int ret = DSA_do_verify( digest, dlen, sig, m_dsa );
 	memset( digest, 'd', sizeof( digest ) );
@@ -489,20 +508,25 @@ QByteArray DsaKey::generateChallenge()
 
 
 
-PrivateDSAKey::PrivateDSAKey( const unsigned int _bits) :
+PrivateDSAKey::PrivateDSAKey( unsigned int bits) :
 	DsaKey( Private )
 {
-	m_dsa = DSA_generate_parameters( _bits, NULL, 0, NULL, NULL, NULL,
-									NULL );
-	if( m_dsa == NULL)
+	m_dsa = DSA_new();
+	if( m_dsa == NULL )
 	{
-		qCritical( "PrivateDSAKey::PrivateDSAKey(): DSA_generate_parameters failed" );
+		qCritical( "PrivateDSAKey(): DSA_new failed" );
+		return;
+	}
+
+	if( DSA_generate_parameters_ex( m_dsa, bits, NULL, 0, NULL, NULL, NULL ) == 0 )
+	{
+		qCritical( "PrivateDSAKey(): DSA_generate_parameters_ex failed" );
 		return;
 	}
 
 	if( !DSA_generate_key( m_dsa ) )
 	{
-		qCritical( "PrivateDSAKey::PrivateDSAKey(): DSA_generate_key failed" );
+		qCritical( "PrivateDSAKey(): DSA_generate_key failed" );
 		m_dsa = NULL;
 		return;
 	}
@@ -520,13 +544,21 @@ QByteArray PrivateDSAKey::sign( const QByteArray & _data ) const
 	}
 
 	const EVP_MD * evp_md = EVP_sha1();
-	EVP_MD_CTX md;
 	unsigned char digest[EVP_MAX_MD_SIZE];
 	unsigned int dlen;
-
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	EVP_MD_CTX* md = EVP_MD_CTX_new();
+	EVP_DigestInit( md, evp_md );
+	EVP_DigestUpdate( md, _data.constData(), _data.size() );
+	EVP_DigestFinal( md, digest, &dlen );
+	EVP_MD_CTX_free( md );
+#else
+	EVP_MD_CTX md;
 	EVP_DigestInit( &md, evp_md );
 	EVP_DigestUpdate( &md, _data.constData(), _data.size() );
 	EVP_DigestFinal( &md, digest, &dlen );
+#endif
+
 
 	DSA_SIG * sig = DSA_do_sign( digest, dlen, m_dsa );
 	memset( digest, 'd', sizeof( digest ) );
@@ -537,8 +569,17 @@ QByteArray PrivateDSAKey::sign( const QByteArray & _data ) const
 		return QByteArray();
 	}
 
-	unsigned int rlen = BN_num_bytes( sig->r );
-	unsigned int slen = BN_num_bytes( sig->s );
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	BIGNUM const* bn_r = NULL;
+	BIGNUM const* bn_s = NULL;
+	DSA_SIG_get0( sig, &bn_r, &bn_s );
+#else
+	BIGNUM* bn_r = sig->r;
+	BIGNUM* bn_s = sig->s;
+#endif
+
+	unsigned int rlen = BN_num_bytes( bn_r );
+	unsigned int slen = BN_num_bytes( bn_s );
 	if( rlen > INTBLOB_LEN || slen > INTBLOB_LEN )
 	{
 		qCritical( "bad sig size %u %u", rlen, slen );
@@ -548,8 +589,8 @@ QByteArray PrivateDSAKey::sign( const QByteArray & _data ) const
 
 	unsigned char sigblob[SIGBLOB_LEN];
 	memset( sigblob, 0, SIGBLOB_LEN );
-	BN_bn2bin( sig->r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen );
-	BN_bn2bin( sig->s, sigblob + SIGBLOB_LEN - slen );
+	BN_bn2bin( bn_r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen );
+	BN_bn2bin( bn_s, sigblob + SIGBLOB_LEN - slen );
 	DSA_SIG_free( sig );
 
 	// ietf-drafts
@@ -586,7 +627,7 @@ bool PrivateDSAKey::load( const QString & _file, QString _passphrase )
 	}
 	FILE * fp = fdopen( infile.handle(), "r" );
 /*#else
-	FILE * fp = fopen( _file.toAscii().constData(), "r" );
+	FILE * fp = fopen( _file.toLatin1().constData(), "r" );
 #endif*/
 	if( fp == NULL )
 	{
@@ -595,21 +636,30 @@ bool PrivateDSAKey::load( const QString & _file, QString _passphrase )
 	}
 
 	EVP_PKEY * pk = PEM_read_PrivateKey( fp, NULL, NULL,
-						_passphrase.toAscii().data() );
+						_passphrase.toLatin1().data() );
 	if( pk == NULL )
 	{
 		qCritical( "PEM_read_PrivateKey failed" );
 		fclose( fp );
 		return false;
 	}
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	else if( EVP_PKEY_base_id( pk ) == EVP_PKEY_DSA )
+#else
 	else if( pk->type == EVP_PKEY_DSA )
+#endif
 	{
 		m_dsa = EVP_PKEY_get1_DSA( pk );
 	}
 	else
 	{
-		qCritical( "PEM_read_PrivateKey: mismatch or "
-			    "unknown EVP_PKEY save_type %d", pk->save_type );
+		qCritical( "PEM_read_PrivateKey: mismatch or unknown EVP_PKEY save_type %d",
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+					EVP_PKEY_base_id( pk )
+#else
+					pk->save_type
+#endif
+			);
 		EVP_PKEY_free( pk );
 		return false;
 	}
@@ -652,7 +702,7 @@ bool PrivateDSAKey::save( const QString & _file, QString _passphrase ) const
 	}
 	FILE * fp = fdopen( outfile.handle(), "w" );
 /*#else
-	FILE * fp = fopen( _file.toAscii().constData(), "w" );
+	FILE * fp = fopen( _file.toLatin1().constData(), "w" );
 #endif*/
 	if( fp == NULL )
 	{
@@ -664,7 +714,7 @@ bool PrivateDSAKey::save( const QString & _file, QString _passphrase ) const
 						NULL : EVP_des_ede3_cbc();
 
 	PEM_write_DSAPrivateKey( fp, m_dsa, cipher, _passphrase.isEmpty() ?
-			NULL : (unsigned char *) _passphrase.toAscii().data(),
+			NULL : (unsigned char *) _passphrase.toLatin1().data(),
 					_passphrase.length(), NULL, NULL );
 	fclose( fp );
 	outfile.close();
@@ -685,10 +735,15 @@ DSA * createNewDSA()
 		qCritical( "createNewDSA(): DSA_new failed" );
 		return NULL;
 	}
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	if( DSA_set0_pqg( dsa, BN_new(), BN_new(), BN_new() ) == 0 ||
+		DSA_set0_key( dsa, BN_new(), NULL ) == 0 )
+#else
 	if( ( dsa->p = BN_new() ) == NULL ||
 		( dsa->q = BN_new() ) == NULL ||
 		( dsa->g = BN_new() ) == NULL ||
 		( dsa->pub_key = BN_new() ) == NULL )
+#endif
 	{
 		qCritical( "createNewDSA(): BN_new failed" );
 		return NULL;
@@ -711,10 +766,24 @@ DSA * keyFromBlob( const QByteArray & _ba )
 	if( strcmp(ktype, "dsa") == 0 || strcmp(ktype, "italc-dss" ) == 0 || strcmp(ktype, "ssh-dss" ) == 0 )
 	{
 		dsa = createNewDSA();
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+		BIGNUM const* bn_p = NULL;
+		BIGNUM const* bn_q = NULL;
+		BIGNUM const* bn_g = NULL;
+		BIGNUM const* pubkey = NULL;
+		BIGNUM const* privkey = NULL;
+		DSA_get0_pqg( dsa, &bn_p, &bn_q, &bn_g );
+		DSA_get0_key( dsa, &pubkey, &privkey );
+		buffer_get_bignum2(&b, (BIGNUM *) bn_p);
+		buffer_get_bignum2(&b, (BIGNUM *) bn_q);
+		buffer_get_bignum2(&b, (BIGNUM *) bn_g);
+		buffer_get_bignum2(&b, (BIGNUM *) pubkey);
+#else
 		buffer_get_bignum2(&b, dsa->p);
 		buffer_get_bignum2(&b, dsa->q);
 		buffer_get_bignum2(&b, dsa->g);
 		buffer_get_bignum2(&b, dsa->pub_key);
+#endif
 	}
 	else
 	{
@@ -742,10 +811,32 @@ PublicDSAKey::PublicDSAKey( const PrivateDSAKey & _pk ) :
 	m_dsa = createNewDSA();
 	if( m_dsa != NULL )
 	{
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+		BIGNUM const* src_bn_p = NULL;
+		BIGNUM const* src_bn_q = NULL;
+		BIGNUM const* src_bn_g = NULL;
+		BIGNUM const* src_pubkey = NULL;
+		BIGNUM const* src_privkey = NULL;
+		DSA_get0_pqg( _pk.dsaData(), &src_bn_p, &src_bn_q, &src_bn_g );
+		DSA_get0_key( _pk.dsaData(), &src_pubkey, &src_privkey );
+
+		BIGNUM const* dst_bn_p = NULL;
+		BIGNUM const* dst_bn_q = NULL;
+		BIGNUM const* dst_bn_g = NULL;
+		BIGNUM const* dst_pubkey = NULL;
+		BIGNUM const* dst_privkey = NULL;
+		DSA_get0_pqg( m_dsa, &dst_bn_p, &dst_bn_q, &dst_bn_g );
+		DSA_get0_key( m_dsa, &dst_pubkey, &dst_privkey );
+		BN_copy( (BIGNUM *) dst_bn_p, src_bn_p );
+		BN_copy( (BIGNUM *) dst_bn_q, src_bn_q );
+		BN_copy( (BIGNUM *) dst_bn_g, src_bn_g );
+		BN_copy( (BIGNUM *) dst_pubkey, src_pubkey );
+#else
 		BN_copy( m_dsa->p, _pk.dsaData()->p );
 		BN_copy( m_dsa->q, _pk.dsaData()->q );
 		BN_copy( m_dsa->g, _pk.dsaData()->g );
 		BN_copy( m_dsa->pub_key, _pk.dsaData()->pub_key );
+#endif
 	}
 }
 
@@ -781,7 +872,7 @@ bool PublicDSAKey::load( const QString & _file, QString )
 				continue;
 			}
 			m_dsa = keyFromBlob( QByteArray::fromBase64(
-					line.section( ' ', 1, 1 ).toAscii() ) );
+					line.section( ' ', 1, 1 ).toLatin1() ) );
 			if( m_dsa == NULL )
 			{
 				qCritical( "PublicDSAKey::load(): keyFromBlob failed" );
@@ -828,10 +919,24 @@ bool PublicDSAKey::save( const QString & _file, QString ) const
 	Buffer b;
 	buffer_init( &b );
 	buffer_put_cstring( &b, "italc-dss" );
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	BIGNUM const* bn_p = NULL;
+	BIGNUM const* bn_q = NULL;
+	BIGNUM const* bn_g = NULL;
+	BIGNUM const* pubkey = NULL;
+	BIGNUM const* privkey = NULL;
+	DSA_get0_pqg( m_dsa, &bn_p, &bn_q, &bn_g );
+	DSA_get0_key( m_dsa, &pubkey, &privkey );
+	buffer_put_bignum2( &b, (BIGNUM *) bn_p );
+	buffer_put_bignum2( &b, (BIGNUM *) bn_q );
+	buffer_put_bignum2( &b, (BIGNUM *) bn_g );
+	buffer_put_bignum2( &b, (BIGNUM *) pubkey );
+#else
 	buffer_put_bignum2( &b, m_dsa->p );
 	buffer_put_bignum2( &b, m_dsa->q );
 	buffer_put_bignum2( &b, m_dsa->g );
 	buffer_put_bignum2( &b, m_dsa->pub_key );
+#endif
 
 	char * p = (char *) buffer_ptr( &b );
 	const int len = buffer_len( &b );
diff --git a/lib/src/FastQImage.cpp b/lib/src/FastQImage.cpp
deleted file mode 100644
index 0f092c3..0000000
--- a/lib/src/FastQImage.cpp
+++ /dev/null
@@ -1,864 +0,0 @@
-/*
- * FastQImage.cpp - class FastQImage providing fast inline-QImage-manips
- *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
- *
- * This file is part of iTALC - http://italc.sourceforge.net
- *
- * 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 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License aint with this program (see COPYING); if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-
-#include "FastQImage.h"
-
-// the following code has been taken from pygame-library and and modified
-// by Tobias Doerffel, 2008
-
-/*
-  pygame - Python Game Library
-  Copyright (C) 2000-2001  Pete Shinners
-  Copyright (C) 2007  Rene Dudfield, Richard Goedeken
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  This library 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
-  Library General Public License for more details.
-
-  You should have received a copy of the GNU Library General Public
-  License along with this library; if not, write to the Free
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-  Pete Shinners
-  pete at shinners.org
-*/
-
-
-#define ALIGN_SIZE 16
-
-void aligned_free( void * _buf )
-{
-	if( _buf != NULL )
-	{
-		int *ptr2=(int *)_buf - 1;
-		_buf = (char *)_buf- *ptr2;
-		free(_buf);
-	}
-}
-
-
-
-
-void * aligned_malloc( uint32_t _bytes )
-{
-	char *ptr,*ptr2,*aligned_ptr;
-	int align_mask = ALIGN_SIZE- 1;
-	ptr=(char *)malloc(_bytes +ALIGN_SIZE+ sizeof(int));
-	if(ptr==NULL) return NULL;
-
-	ptr2 = ptr + sizeof(int);
-	aligned_ptr = ptr2 + (ALIGN_SIZE- ((size_t)ptr2 & align_mask));
-
-
-	ptr2 = aligned_ptr - sizeof(int);
-	*((int *)ptr2)=(int)(aligned_ptr - ptr);
-
-	return aligned_ptr;
-}
-
-
-
-/* this function implements an area-averaging shrinking filter in the X-dimension */
-static void filter_shrink_X_C(uint8_t *srcpix, uint8_t *dstpix, unsigned int height, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcwidth, unsigned int dstwidth)
-{
-    const unsigned int srcdiff = srcpitch - (srcwidth * 4);
-    const unsigned int dstdiff = dstpitch - (dstwidth * 4);
-
-    const unsigned int xspace = 0x10000 * srcwidth / dstwidth; /* must be > 1 */
-    const unsigned int xrecip = (int) ((long long) 0x100000000LL / xspace);
-    for (unsigned int y = 0; y < height; y++)
-    {
-        uint32_t accumulate[4] = {0,0,0,0};
-        unsigned int xcounter = xspace;
-        for (unsigned int x = 0; x < srcwidth; x++)
-        {
-            if (xcounter > 0x10000)
-            {
-                accumulate[0] += (uint32_t) *srcpix++;
-                accumulate[1] += (uint32_t) *srcpix++;
-                accumulate[2] += (uint32_t) *srcpix++;
-                accumulate[3] += (uint32_t) *srcpix++;
-                xcounter -= 0x10000;
-            }
-            else
-            {
-                /* write out a destination pixel */
-                *dstpix++ = (uint8_t) (((accumulate[0] + ((srcpix[0] * xcounter) >> 16)) * xrecip) >> 16);
-                *dstpix++ = (uint8_t) (((accumulate[1] + ((srcpix[1] * xcounter) >> 16)) * xrecip) >> 16);
-                *dstpix++ = (uint8_t) (((accumulate[2] + ((srcpix[2] * xcounter) >> 16)) * xrecip) >> 16);
-                *dstpix++ = (uint8_t) (((accumulate[3] + ((srcpix[3] * xcounter) >> 16)) * xrecip) >> 16);
-                /* reload the accumulator with the remainder of this pixel */
-                const unsigned int xfrac = 0x10000 - xcounter;
-                accumulate[0] = (uint32_t) ((*srcpix++ * xfrac) >> 16);
-                accumulate[1] = (uint32_t) ((*srcpix++ * xfrac) >> 16);
-                accumulate[2] = (uint32_t) ((*srcpix++ * xfrac) >> 16);
-                accumulate[3] = (uint32_t) ((*srcpix++ * xfrac) >> 16);
-                xcounter = xspace - xfrac;
-            }
-        }
-        srcpix += srcdiff;
-        dstpix += dstdiff;
-    }
-}
-
-/* this function implements an area-averaging shrinking filter in the Y-dimension */
-static void filter_shrink_Y_C(uint8_t *srcpix, uint8_t *dstpix, unsigned int width, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcheight, unsigned int dstheight)
-{
-    uint16_t *templine;
-    const unsigned int srcdiff = srcpitch - (width * 4);
-    const unsigned int dstdiff = dstpitch - (width * 4);
-
-    /* allocate and clear a memory area for storing the accumulator line */
-    templine = (uint16_t *) aligned_malloc(dstpitch * 2);
-    if (templine == NULL) return;
-    memset(templine, 0, dstpitch * 2);
-
-    const unsigned int yspace = 0x10000 * srcheight / dstheight; /* must be > 1 */
-    const unsigned int yrecip = (unsigned int) ((long long) 0x100000000LL / yspace);
-    unsigned int ycounter = yspace;
-    for (unsigned int y = 0; y < srcheight; y++)
-    {
-        uint16_t *accumulate = templine;
-        if (ycounter > 0x10000)
-        {
-            for (unsigned int x = 0; x < width; x++)
-            {
-                *accumulate++ += (uint16_t) *srcpix++;
-                *accumulate++ += (uint16_t) *srcpix++;
-                *accumulate++ += (uint16_t) *srcpix++;
-                *accumulate++ += (uint16_t) *srcpix++;
-            }
-            ycounter -= 0x10000;
-        }
-        else
-        {
-            /* write out a destination line */
-            for (unsigned int x = 0; x < width; x++)
-            {
-                *dstpix++ = (uint8_t) (((*accumulate++ + ((*srcpix++ * ycounter) >> 16)) * yrecip) >> 16);
-                *dstpix++ = (uint8_t) (((*accumulate++ + ((*srcpix++ * ycounter) >> 16)) * yrecip) >> 16);
-                *dstpix++ = (uint8_t) (((*accumulate++ + ((*srcpix++ * ycounter) >> 16)) * yrecip) >> 16);
-                *dstpix++ = (uint8_t) (((*accumulate++ + ((*srcpix++ * ycounter) >> 16)) * yrecip) >> 16);
-            }
-            dstpix += dstdiff;
-            /* reload the accumulator with the remainder of this line */
-            accumulate = templine;
-            srcpix -= 4 * width;
-            const unsigned int yfrac = 0x10000 - ycounter;
-            for (unsigned int x = 0; x < width; x++)
-            {
-                *accumulate++ = (uint16_t) ((*srcpix++ * yfrac) >> 16);
-                *accumulate++ = (uint16_t) ((*srcpix++ * yfrac) >> 16);
-                *accumulate++ = (uint16_t) ((*srcpix++ * yfrac) >> 16);
-                *accumulate++ = (uint16_t) ((*srcpix++ * yfrac) >> 16);
-            }
-            ycounter = yspace - yfrac;
-        }
-        srcpix += srcdiff;
-    } /* for (int y = 0; y < srcheight; y++) */
-
-    /* free the temporary memory */
-    aligned_free(templine);
-}
-
-
-/* this function implements a bilinear filter in the X-dimension */
-static void filter_expand_X_C(uint8_t *srcpix, uint8_t *dstpix, unsigned int height, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcwidth, unsigned int dstwidth)
-{
-    int dstdiff = dstpitch - (dstwidth * 4);
-    int *xidx0, *xmult0, *xmult1;
-    unsigned int x, y;
-
-    /* Allocate memory for factors */
-    xidx0 = (int*)aligned_malloc(dstwidth * 4);
-    if (xidx0 == NULL) return;
-    xmult0 = (int *) aligned_malloc(dstwidth * 4);
-    xmult1 = (int *) aligned_malloc(dstwidth * 4);
-    if (xmult0 == NULL || xmult1 == NULL)
-    {
-        aligned_free(xidx0);
-        if (xmult0) aligned_free(xmult0);
-        if (xmult1) aligned_free(xmult1);
-    }
-
-    /* Create multiplier factors and starting indices and put them in arrays */
-    for (x = 0; x < dstwidth; x++)
-    {
-        xidx0[x] = x * (srcwidth - 1) / dstwidth;
-        xmult1[x] = 0x10000 * ((x * (srcwidth - 1)) % dstwidth) / dstwidth;
-        xmult0[x] = 0x10000 - xmult1[x];
-    }
-
-    /* Do the scaling in raster order so we don't trash the cache */
-    for (y = 0; y < height; y++)
-    {
-        uint8_t *srcrow0 = srcpix + y * srcpitch;
-        for (x = 0; x < dstwidth; x++)
-        {
-            uint8_t *src = srcrow0 + xidx0[x] * 4;
-            int xm0 = xmult0[x];
-            int xm1 = xmult1[x];
-            *dstpix++ = (uint8_t) (((src[0] * xm0) + (src[4] * xm1)) >> 16);
-            *dstpix++ = (uint8_t) (((src[1] * xm0) + (src[5] * xm1)) >> 16);
-            *dstpix++ = (uint8_t) (((src[2] * xm0) + (src[6] * xm1)) >> 16);
-            *dstpix++ = (uint8_t) (((src[3] * xm0) + (src[7] * xm1)) >> 16);
-        }
-        dstpix += dstdiff;
-    }
-
-    /* free memory */
-    aligned_free(xidx0);
-    aligned_free(xmult0);
-    aligned_free(xmult1);
-}
-
-/* this function implements a bilinear filter in the Y-dimension */
-static void filter_expand_Y_C(uint8_t *srcpix, uint8_t *dstpix, unsigned int width, int unsigned srcpitch, unsigned int/* dstpitch*/, unsigned int srcheight, unsigned int dstheight)
-{
-    for (unsigned int y = 0; y < dstheight; y++)
-    {
-        const unsigned int yidx0 = y * (srcheight - 1) / dstheight;
-        uint8_t *srcrow0 = srcpix + yidx0 * srcpitch;
-        uint8_t *srcrow1 = srcrow0 + srcpitch;
-        unsigned int ymult1 = 0x10000 * ((y * (srcheight - 1)) % dstheight) / dstheight;
-        unsigned int ymult0 = 0x10000 - ymult1;
-        for (unsigned int x = 0; x < width; x++)
-        {
-            *dstpix++ = (uint8_t) (((*srcrow0++ * ymult0) + (*srcrow1++ * ymult1)) >> 16);
-            *dstpix++ = (uint8_t) (((*srcrow0++ * ymult0) + (*srcrow1++ * ymult1)) >> 16);
-            *dstpix++ = (uint8_t) (((*srcrow0++ * ymult0) + (*srcrow1++ * ymult1)) >> 16);
-            *dstpix++ = (uint8_t) (((*srcrow0++ * ymult0) + (*srcrow1++ * ymult1)) >> 16);
-        }
-    }
-}
-
-
-#if defined(__GNUC__) && defined(__i386__) /* || defined(__x86_64__))*/
-#define USE_MMX
-#endif
-
-#ifdef USE_MMX
-
-/* this function implements an area-averaging shrinking filter in the X-dimension */
-static void filter_shrink_X_MMX(uint8_t *srcpix, uint8_t *dstpix, unsigned int height, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcwidth, unsigned int dstwidth)
-{
-    const unsigned int srcdiff = srcpitch - (srcwidth * 4);
-    const unsigned int dstdiff = dstpitch - (dstwidth * 4);
-
-#if defined(__x86_64__)
-    const unsigned int xspace = 0x04000 * srcwidth / dstwidth; /* must be > 1 */
-    const unsigned int xrecip = (int) ((long long) 0x040000000 / xspace);
-    long long srcdiff64 = srcdiff;
-    long long dstdiff64 = dstdiff;
-    long long One64 = 0x4000400040004000LL;
-    asm(" /* MMX code for X-shrink area average filter */ "
-        " pxor          %%mm0,      %%mm0;           "
-        " movd             %6,      %%mm7;           " /* mm7 == xrecipmmx */
-        " movq             %2,      %%mm6;           " /* mm6 = 2^14  */
-        " pshufw    $0, %%mm7,      %%mm7;           "
-        "1:                                          " /* outer Y-loop */
-        " movl             %5,      %%ecx;           " /* ecx == xcounter */
-        " pxor          %%mm1,      %%mm1;           " /* mm1 == accumulator */
-        " movl             %4,      %%edx;           " /* edx == width */
-        "2:                                          " /* inner X-loop */
-        " cmpl        $0x4000,      %%ecx;           "
-        " jbe              3f;                       "
-        " movd           (%0),      %%mm2;           " /* mm2 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm2;           "
-        " paddw         %%mm2,      %%mm1;           " /* accumulator += srcpix */
-        " subl        $0x4000,      %%ecx;           "
-        " jmp              4f;                       "
-        "3:                                          " /* prepare to output a pixel */
-        " movd          %%ecx,      %%mm2;           "
-        " movq          %%mm6,      %%mm3;           " /* mm3 = 2^14  */
-        " pshufw    $0, %%mm2,      %%mm2;           "
-        " movd           (%0),      %%mm4;           " /* mm4 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm4;           "
-        " psubw         %%mm2,      %%mm3;           " /* mm3 = xfrac */
-        " psllw            $2,      %%mm4;           "
-        " pmulhuw       %%mm4,      %%mm2;           " /* mm2 = (srcpix * xcounter >> 16) */
-        " pmulhuw       %%mm4,      %%mm3;           " /* mm3 = (srcpix * xfrac) >> 16 */
-        " paddw         %%mm1,      %%mm2;           "
-        " movq          %%mm3,      %%mm1;           " /* accumulator = (srcpix * xfrac) >> 16 */
-        " pmulhuw       %%mm7,      %%mm2;           "
-        " packuswb      %%mm0,      %%mm2;           "
-        " movd          %%mm2,       (%1);           "
-        " add              %5,      %%ecx;           "
-        " add              $4,         %1;           "
-        " subl        $0x4000,      %%ecx;           "
-        "4:                                          " /* tail of inner X-loop */
-        " decl          %%edx;                       "
-        " jne              2b;                       "
-        " add              %7,         %0;           " /* srcpix += srcdiff */
-        " add              %8,         %1;           " /* dstpix += dstdiff */
-        " decl             %3;                       "
-        " jne              1b;                       "
-        " emms;                                      "
-        :                   /* no outputs */
-        : "r"(srcpix), "r"(dstpix), "m"(One64),     "m"(height),   "m"(srcwidth),
-          "m"(xspace), "m"(xrecip), "m"(srcdiff64), "m"(dstdiff64)                /* input */
-        : "%ecx","%edx"     /* clobbered */
-        );
-#elif defined(__i386__)
-    const unsigned int xspace = 0x04000 * srcwidth / dstwidth; /* must be > 1 */
-    const unsigned int xrecip = (int) ((long long) 0x040000000 / xspace);
-    long long One64 = 0x4000400040004000LL;
-
-    asm(" /* MMX code for X-shrink area average filter */ "
-        " pxor          %%mm0,      %%mm0;           "
-        " movd             %6,      %%mm7;           " /* mm7 == xrecipmmx */
-        " movq             %2,      %%mm6;           " /* mm6 = 2^14  */
-        " pshufw    $0, %%mm7,      %%mm7;           "
-        "1:                                          " /* outer Y-loop */
-        " movl             %5,      %%ecx;           " /* ecx == xcounter */
-        " pxor          %%mm1,      %%mm1;           " /* mm1 == accumulator */
-        " movl             %4,      %%edx;           " /* edx == width */
-        "2:                                          " /* inner X-loop */
-        " cmpl        $0x4000,      %%ecx;           "
-        " jbe              3f;                       "
-        " movd           (%0),      %%mm2;           " /* mm2 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm2;           "
-        " paddw         %%mm2,      %%mm1;           " /* accumulator += srcpix */
-        " subl        $0x4000,      %%ecx;           "
-        " jmp              4f;                       "
-        "3:                                          " /* prepare to output a pixel */
-        " movd          %%ecx,      %%mm2;           "
-        " movq          %%mm6,      %%mm3;           " /* mm3 = 2^14  */
-        " pshufw    $0, %%mm2,      %%mm2;           "
-        " movd           (%0),      %%mm4;           " /* mm4 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm4;           "
-        " psubw         %%mm2,      %%mm3;           " /* mm3 = xfrac */
-        " psllw            $2,      %%mm4;           "
-        " pmulhuw       %%mm4,      %%mm2;           " /* mm2 = (srcpix * xcounter >> 16) */
-        " pmulhuw       %%mm4,      %%mm3;           " /* mm3 = (srcpix * xfrac) >> 16 */
-        " paddw         %%mm1,      %%mm2;           "
-        " movq          %%mm3,      %%mm1;           " /* accumulator = (srcpix * xfrac) >> 16 */
-        " pmulhuw       %%mm7,      %%mm2;           "
-        " packuswb      %%mm0,      %%mm2;           "
-        " movd          %%mm2,       (%1);           "
-        " add              %5,      %%ecx;           "
-        " add              $4,         %1;           "
-        " subl        $0x4000,      %%ecx;           "
-        "4:                                          " /* tail of inner X-loop */
-        " decl          %%edx;                       "
-        " jne              2b;                       "
-        " add              %7,         %0;           " /* srcpix += srcdiff */
-        " add              %8,         %1;           " /* dstpix += dstdiff */
-        " decl             %3;                       "
-        " jne              1b;                       "
-        :                   /* no outputs */
-        : "S"(srcpix), "D"(dstpix), "m"(One64),     "m"(height),   "m"(srcwidth),
-          "m"(xspace), "m"(xrecip), "m"(srcdiff),   "m"(dstdiff)                  /* input */
-        : "%ecx","%edx"     /* clobbered */
-        );
-        asm(" emms;                                      "
-            :
-            :
-            : "%esi", "%edi");
-#endif
-}
-
-/* this function implements an area-averaging shrinking filter in the Y-dimension */
-static void filter_shrink_Y_MMX(uint8_t *srcpix, uint8_t *dstpix, unsigned int width, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcheight, unsigned int dstheight)
-{
-    uint16_t *templine;
-    int srcdiff = srcpitch - (width * 4);
-    int dstdiff = dstpitch - (width * 4);
-
-    /* allocate and clear a memory area for storing the accumulator line */
-    templine = (uint16_t *) aligned_malloc(dstpitch * 2);
-    if (templine == NULL) return;
-    memset(templine, 0, dstpitch * 2);
-
-#if defined(__x86_64__)
-    int yspace = 0x4000 * srcheight / dstheight; /* must be > 1 */
-    int yrecip = (int) ((long long) 0x040000000 / yspace);
-    long long srcdiff64 = srcdiff;
-    long long dstdiff64 = dstdiff;
-    long long One64 = 0x4000400040004000LL;
-    asm(" /* MMX code for Y-shrink area average filter */ "
-        " movl             %5,      %%ecx;           " /* ecx == ycounter */
-        " pxor          %%mm0,      %%mm0;           "
-        " movd             %6,      %%mm7;           " /* mm7 == yrecipmmx */
-        " pshufw    $0, %%mm7,      %%mm7;           "
-        "1:                                          " /* outer Y-loop */
-        " mov              %2,      %%rax;           " /* rax == accumulate */
-        " cmpl        $0x4000,      %%ecx;           "
-        " jbe              3f;                       "
-        " movl             %4,      %%edx;           " /* edx == width */
-        "2:                                          "
-        " movd           (%0),      %%mm1;           "
-        " add              $4,         %0;           "
-        " movq        (%%rax),      %%mm2;           "
-        " punpcklbw     %%mm0,      %%mm1;           "
-        " paddw         %%mm1,      %%mm2;           "
-        " movq          %%mm2,    (%%rax);           "
-        " add              $8,      %%rax;           "
-        " decl          %%edx;                       "
-        " jne              2b;                       "
-        " subl        $0x4000,      %%ecx;           "
-        " jmp              6f;                       "
-        "3:                                          " /* prepare to output a line */
-        " movd          %%ecx,      %%mm1;           "
-        " movl             %4,      %%edx;           " /* edx = width */
-        " movq             %9,      %%mm6;           " /* mm6 = 2^14  */
-        " pshufw    $0, %%mm1,      %%mm1;           "
-        " psubw         %%mm1,      %%mm6;           " /* mm6 = yfrac */
-        "4:                                          "
-        " movd           (%0),      %%mm4;           " /* mm4 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm4;           "
-        " movq        (%%rax),      %%mm5;           " /* mm5 = accumulate */
-        " movq          %%mm6,      %%mm3;           "
-        " psllw            $2,      %%mm4;           "
-        " pmulhuw       %%mm4,      %%mm3;           " /* mm3 = (srcpix * yfrac) >> 16 */
-        " pmulhuw       %%mm1,      %%mm4;           " /* mm4 = (srcpix * ycounter >> 16) */
-        " movq          %%mm3,    (%%rax);           "
-        " paddw         %%mm5,      %%mm4;           "
-        " add              $8,      %%rax;           "
-        " pmulhuw       %%mm7,      %%mm4;           "
-        " packuswb      %%mm0,      %%mm4;           "
-        " movd          %%mm4,       (%1);           "
-        " add              $4,         %1;           "
-        " decl          %%edx;                       "
-        " jne              4b;                       "
-        " add              %8,         %1;           " /* dstpix += dstdiff */
-        " addl             %5,      %%ecx;           "
-        " subl        $0x4000,      %%ecx;           "
-        "6:                                          " /* tail of outer Y-loop */
-        " add              %7,         %0;           " /* srcpix += srcdiff */
-        " decl             %3;                       "
-        " jne              1b;                       "
-        " emms;                                      "
-        :                   /* no outputs */
-        : "r"(srcpix), "r"(dstpix), "m"(templine),  "m"(srcheight), "m"(width),
-          "m"(yspace), "m"(yrecip), "m"(srcdiff64), "m"(dstdiff64), "m"(One64)  /* input */
-        : "%ecx","%edx","%rax"     /* clobbered */
-        );
-#elif defined(__i386__)
-    int yspace = 0x4000 * srcheight / dstheight; /* must be > 1 */
-    int yrecip = (int) ((long long) 0x040000000 / yspace);
-    long long One64 = 0x4000400040004000LL;
-    asm(" /* MMX code for Y-shrink area average filter */ "
-        " movl             %5,      %%ecx;           " /* ecx == ycounter */
-        " pxor          %%mm0,      %%mm0;           "
-        " movd             %6,      %%mm7;           " /* mm7 == yrecipmmx */
-        " pshufw    $0, %%mm7,      %%mm7;           "
-        "1:                                          " /* outer Y-loop */
-        " movl             %2,      %%eax;           " /* rax == accumulate */
-        " cmpl        $0x4000,      %%ecx;           "
-        " jbe              3f;                       "
-        " movl             %4,      %%edx;           " /* edx == width */
-        "2:                                          "
-        " movd           (%0),      %%mm1;           "
-        " add              $4,         %0;           "
-        " movq        (%%eax),      %%mm2;           "
-        " punpcklbw     %%mm0,      %%mm1;           "
-        " paddw         %%mm1,      %%mm2;           "
-        " movq          %%mm2,    (%%eax);           "
-        " add              $8,      %%eax;           "
-        " decl          %%edx;                       "
-        " jne              2b;                       "
-        " subl        $0x4000,      %%ecx;           "
-        " jmp              6f;                       "
-        "3:                                          " /* prepare to output a line */
-        " movd          %%ecx,      %%mm1;           "
-        " movl             %4,      %%edx;           " /* edx = width */
-        " movq             %9,      %%mm6;           " /* mm6 = 2^14  */
-        " pshufw    $0, %%mm1,      %%mm1;           "
-        " psubw         %%mm1,      %%mm6;           " /* mm6 = yfrac */
-        "4:                                          "
-        " movd           (%0),      %%mm4;           " /* mm4 = srcpix */
-        " add              $4,         %0;           "
-        " punpcklbw     %%mm0,      %%mm4;           "
-        " movq        (%%eax),      %%mm5;           " /* mm5 = accumulate */
-        " movq          %%mm6,      %%mm3;           "
-        " psllw            $2,      %%mm4;           "
-        " pmulhuw       %%mm4,      %%mm3;           " /* mm3 = (srcpix * yfrac) >> 16 */
-        " pmulhuw       %%mm1,      %%mm4;           " /* mm4 = (srcpix * ycounter >> 16) */
-        " movq          %%mm3,    (%%eax);           "
-        " paddw         %%mm5,      %%mm4;           "
-        " add              $8,      %%eax;           "
-        " pmulhuw       %%mm7,      %%mm4;           "
-        " packuswb      %%mm0,      %%mm4;           "
-        " movd          %%mm4,       (%1);           "
-        " add              $4,         %1;           "
-        " decl          %%edx;                       "
-        " jne              4b;                       "
-        " add              %8,         %1;           " /* dstpix += dstdiff */
-        " addl             %5,      %%ecx;           "
-        " subl        $0x4000,      %%ecx;           "
-        "6:                                          " /* tail of outer Y-loop */
-        " add              %7,         %0;           " /* srcpix += srcdiff */
-        " decl             %3;                       "
-        " jne              1b;                       "
-        " emms;                                      "
-        :                   /* no outputs */
-        : "S"(srcpix), "D"(dstpix), "m"(templine),  "m"(srcheight), "m"(width),
-          "m"(yspace), "m"(yrecip), "m"(srcdiff),   "m"(dstdiff),   "m"(One64)  /* input */
-        : "%ecx","%edx","%rax"     /* clobbered */
-        );
-        asm(" emms;                                      "
-            :
-            :
-            : "%esi", "%edi");
-#endif
-    /* free the temporary memory */
-    aligned_free(templine);
-}
-
-
-/* this function implements a bilinear filter in the X-dimension */
-static void filter_expand_X_MMX(uint8_t *srcpix, uint8_t *dstpix, unsigned int height, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcwidth, unsigned int dstwidth)
-{
-    int *xidx0, *xmult0, *xmult1;
-    unsigned int x, y;
-
-    /* Allocate memory for factors */
-    xidx0 = (int*)aligned_malloc(dstwidth * 4);
-    if (xidx0 == NULL) return;
-    xmult0 = (int *) aligned_malloc(dstwidth * 8);
-    xmult1 = (int *) aligned_malloc(dstwidth * 8);
-    if (xmult0 == NULL || xmult1 == NULL)
-    {
-        aligned_free(xidx0);
-        if (xmult0) aligned_free(xmult0);
-        if (xmult1) aligned_free(xmult1);
-    }
-
-    /* Create multiplier factors and starting indices and put them in arrays */
-    for (x = 0; x < dstwidth; x++)
-    {
-        xidx0[x] = x * (srcwidth - 1) / dstwidth;
-        const unsigned int xm1 = 0x100 * ((x * (srcwidth - 1)) % dstwidth) / dstwidth;
-        const unsigned int xm0 = 0x100 - xm1;
-        xmult1[x*2]   = xm1 | (xm1 << 16);
-        xmult1[x*2+1] = xm1 | (xm1 << 16);
-        xmult0[x*2]   = xm0 | (xm0 << 16);
-        xmult0[x*2+1] = xm0 | (xm0 << 16);
-    }
-
-    /* Do the scaling in raster order so we don't trash the cache */
-    for (y = 0; y < height; y++)
-    {
-        uint8_t *srcrow0 = srcpix + y * srcpitch;
-        uint8_t *dstrow = dstpix + y * dstpitch;
-        int *xm0 = xmult0;
-        int *x0 = xidx0;
-#if defined(__x86_64__)
-        int *xm1 = xmult1;
-        asm( " /* MMX code for inner loop of Y bilinear filter */ "
-             " movl             %3,      %%ecx;           "
-             " pxor          %%mm0,      %%mm0;           "
-             "1:                                          "
-             " movsxl         (%5),      %%rax;           " /* get xidx0[x] */
-             " add              $4,         %5;           "
-             " movq           (%1),      %%mm1;           " /* load mult0 */
-             " add              $8,         %1;           "
-             " movq           (%2),      %%mm2;           " /* load mult1 */
-             " add              $8,         %2;           "
-             " movd   (%0,%%rax,4),      %%mm4;           "
-             " movd  4(%0,%%rax,4),      %%mm5;           "
-             " punpcklbw     %%mm0,      %%mm4;           "
-             " punpcklbw     %%mm0,      %%mm5;           "
-             " pmullw        %%mm1,      %%mm4;           "
-             " pmullw        %%mm2,      %%mm5;           "
-             " paddw         %%mm4,      %%mm5;           "
-             " psrlw            $8,      %%mm5;           "
-             " packuswb      %%mm0,      %%mm5;           "
-             " movd          %%mm5,       (%4);           "
-             " add              $4,         %4;           "
-             " decl          %%ecx;                       "
-             " jne              1b;                       "
-             " emms;                                      "
-             :                   /* no outputs */
-             : "r"(srcrow0), "r"(xm0), "r"(xm1), "m"(dstwidth), "r"(dstrow), "r"(x0)  /* input */
-             : "%ecx","%rax"     /* clobbered */
-             );
-#elif defined(__i386__)
-	int width = dstwidth;
-	long long One64 = 0x0100010001000100LL;
-        asm( " /* MMX code for inner loop of Y bilinear filter */ "
-             " pxor          %%mm0,      %%mm0;           "
-             " movq             %2,      %%mm7;           "
-             "1:                                          "
-             " movl           (%5),      %%eax;           " /* get xidx0[x] */
-             " add              $4,         %5;           "
-             " movq          %%mm7,      %%mm2;           "
-             " movq           (%1),      %%mm1;           " /* load mult0 */
-             " add              $8,         %1;           "
-             " psubw         %%mm1,      %%mm2;           " /* load mult1 */
-             " movd   (%0,%%eax,4),      %%mm4;           "
-             " movd  4(%0,%%eax,4),      %%mm5;           "
-             " punpcklbw     %%mm0,      %%mm4;           "
-             " punpcklbw     %%mm0,      %%mm5;           "
-             " pmullw        %%mm1,      %%mm4;           "
-             " pmullw        %%mm2,      %%mm5;           "
-             " paddw         %%mm4,      %%mm5;           "
-             " psrlw            $8,      %%mm5;           "
-             " packuswb      %%mm0,      %%mm5;           "
-             " movd          %%mm5,       (%4);           "
-             " add              $4,         %4;           "
-             " decl             %3;                       "
-             " jne              1b;                       "
-             :                   /* no outputs */
-             : "S"(srcrow0), "c"(xm0), "m"(One64), "m"(width), "D"(dstrow), "d"(x0)  /* input */
-             : "%eax"     /* clobbered */
-             );
-        asm(" emms;                                      "
-            :
-            :
-            : "%ecx", "%esi", "%edi", "%edx");
-#endif
-    }
-
-    /* free memory */
-    aligned_free(xidx0);
-    aligned_free(xmult0);
-    aligned_free(xmult1);
-}
-
-/* this function implements a bilinear filter in the Y-dimension */
-static void filter_expand_Y_MMX(uint8_t *srcpix, uint8_t *dstpix, unsigned int width, unsigned int srcpitch, unsigned int dstpitch, unsigned int srcheight, unsigned int dstheight)
-{
-    for (unsigned int y = 0; y < dstheight; y++)
-    {
-        int yidx0 = y * (srcheight - 1) / dstheight;
-        uint8_t *srcrow0 = srcpix + yidx0 * srcpitch;
-        uint8_t *srcrow1 = srcrow0 + srcpitch;
-        int ymult1 = 0x0100 * ((y * (srcheight - 1)) % dstheight) / dstheight;
-        int ymult0 = 0x0100 - ymult1;
-        uint8_t *dstrow = dstpix + y * dstpitch;
-#if defined(__x86_64__)
-        asm( " /* MMX code for inner loop of Y bilinear filter */ "
-             " movl          %4,      %%ecx;                      "
-             " movd          %2,      %%mm1;                      "
-             " movd          %3,      %%mm2;                      "
-             " pxor       %%mm0,      %%mm0;                      "
-             " pshufw      $0, %%mm1, %%mm1;                      "
-             " pshufw      $0, %%mm2, %%mm2;                      "
-             "1:                                                  "
-             " movd        (%0),      %%mm4;                      "
-             " add           $4,         %0;                      "
-             " movd        (%1),      %%mm5;                      "
-             " add           $4,         %1;                      "
-             " punpcklbw  %%mm0,     %%mm4;                       "
-             " punpcklbw  %%mm0,     %%mm5;                       "
-             " pmullw     %%mm1,     %%mm4;                       "
-             " pmullw     %%mm2,     %%mm5;                       "
-             " paddw      %%mm4,     %%mm5;                       "
-             " psrlw         $8,     %%mm5;                       "
-             " packuswb   %%mm0,     %%mm5;                       "
-             " movd       %%mm5,      (%5);                       "
-             " add           $4,        %5;                       "
-             " decl       %%ecx;                                  "
-             " jne           1b;                                  "
-             " emms;                                              "
-             :                /* no outputs */
-             : "r"(srcrow0), "r"(srcrow1), "m"(ymult0), "m"(ymult1), "m"(width), "r"(dstrow)  /* input */
-             : "%ecx"         /* clobbered */
-             );
-#elif defined(__i386__)
-        asm( " /* MMX code for inner loop of Y bilinear filter */ "
-             " movl          %4,      %%eax;                      "
-             " movd          %2,      %%mm1;                      "
-             " movd          %3,      %%mm2;                      "
-             " pxor       %%mm0,      %%mm0;                      "
-             " pshufw      $0, %%mm1, %%mm1;                      "
-             " pshufw      $0, %%mm2, %%mm2;                      "
-             "1:                                                  "
-             " movd        (%0),      %%mm4;                      "
-             " add           $4,         %0;                      "
-             " movd        (%1),      %%mm5;                      "
-             " add           $4,         %1;                      "
-             " punpcklbw  %%mm0,     %%mm4;                       "
-             " punpcklbw  %%mm0,     %%mm5;                       "
-             " pmullw     %%mm1,     %%mm4;                       "
-             " pmullw     %%mm2,     %%mm5;                       "
-             " paddw      %%mm4,     %%mm5;                       "
-             " psrlw         $8,     %%mm5;                       "
-             " packuswb   %%mm0,     %%mm5;                       "
-             " movd       %%mm5,      (%5);                       "
-             " add           $4,        %5;                       "
-             " decl       %%eax;                                  "
-             " jne           1b;                                  "
-             :                /* no outputs */
-             : "S"(srcrow0), "c"(srcrow1), "m"(ymult0), "m"(ymult1), "m"(width), "D"(dstrow)  /* input */
-             : "%eax"         /* clobbered */
-             );
-        asm(" emms;                                      "
-            :
-            :
-            : "%esi", "%edi", "%ecx");
-#endif
-    }
-}
-#endif
-
-
-typedef void (*filter_fn)(uint8_t*, uint8_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
-
-static filter_fn filter_shrink_X = filter_shrink_X_C;
-static filter_fn filter_shrink_Y = filter_shrink_Y_C;
-static filter_fn filter_expand_X = filter_expand_X_C;
-static filter_fn filter_expand_Y = filter_expand_Y_C;
-
-QImage & FastQImage::scaleTo( QImage & _dst ) const
-{
-	if( size() == _dst.size() )
-	{
-		return _dst = *this;
-	}
-	if( !_dst.size().isValid() )
-	{
-		return _dst = QImage();
-	}
-	if( format() == Format_Invalid )
-	{
-		return _dst;
-	}
-	if( format() != Format_ARGB32 && format() != Format_RGB32 &&
-				format() != Format_ARGB32_Premultiplied )
-	{
-		qWarning( "FastQImage::scaleTo(...): converting source-image "
-							"to Format_ARGB32" );
-		return FastQImage( convertToFormat( Format_ARGB32 ) ).
-							scaleTo( _dst );
-	}
-
-#ifdef USE_MMX
-#if !defined(__x86_64__)
-	static bool MMX_checked = false;
-	if( MMX_checked == false )
-	{
-		int features = 0;
-		asm(	"pushl	%%ebx;		\n"
-			"mov	$1,%%eax;	\n"
-			"cpuid;			\n"
-			"popl	%%ebx;		\n"
-			: "=d"( features ) : : "%eax", "%ecx" );
-		if( features & 0x00800000 )
-		{
-#endif
-			filter_shrink_X = filter_shrink_X_MMX;
-			filter_shrink_Y = filter_shrink_Y_MMX;
-			filter_expand_X = filter_expand_X_MMX;
-			filter_expand_Y = filter_expand_Y_MMX;
-#if !defined(__x86_64__)
-		}
-
-		MMX_checked = true;
-	}
-#endif
-#endif
-	uint8_t* srcpix = (uint8_t*)bits();
-	uint8_t* dstpix = (uint8_t*)_dst.bits();
-	int srcpitch = width()*4;
-	int dstpitch = _dst.width()*4;
-
-	const int srcwidth = width();
-	const int srcheight = height();
-	const int dstwidth = _dst.width();
-	const int dstheight = _dst.height();
-
-	// Create a temporary processing buffer if we will be scaling both X and Y
-	uint8_t *temppix = NULL;
-	int tempwidth=0, temppitch=0, tempheight=0;
-	if (srcwidth != dstwidth && srcheight != dstheight)
-	{
-		tempwidth = dstwidth;
-		temppitch = tempwidth << 2;
-		tempheight = srcheight;
-		temppix = (uint8_t *) aligned_malloc(temppitch * tempheight);
-		if (temppix == NULL)
-		{
-			return _dst;
-		}
-	}
-
-	/* Start the filter by doing X-scaling */
-	if (dstwidth < srcwidth) /* shrink */
-	{
-		if (srcheight != dstheight)
-		{
-		    filter_shrink_X(srcpix, temppix, srcheight, srcpitch, temppitch, srcwidth, dstwidth);
-		}
-		else
-		{
-		    filter_shrink_X(srcpix, dstpix, srcheight, srcpitch, dstpitch, srcwidth, dstwidth);
-		}
-	}
-	else if (dstwidth > srcwidth) /* expand */
-	{
-		if (srcheight != dstheight)
-		{
-		    filter_expand_X(srcpix, temppix, srcheight, srcpitch, temppitch, srcwidth, dstwidth);
-		}
-		else
-		{
-		    filter_expand_X(srcpix, dstpix, srcheight, srcpitch, dstpitch, srcwidth, dstwidth);
-		}
-	}
-
-	/* Now do the Y scale */
-	if (dstheight < srcheight) /* shrink */
-	{
-		if (srcwidth != dstwidth)
-		{
-		    filter_shrink_Y(temppix, dstpix, tempwidth, temppitch, dstpitch, srcheight, dstheight);
-		}
-		else
-		{
-		    filter_shrink_Y(srcpix, dstpix, srcwidth, srcpitch, dstpitch, srcheight, dstheight);
-		}
-	}
-	else if (dstheight > srcheight)  /* expand */
-	{
-		if (srcwidth != dstwidth)
-		{
-		    filter_expand_Y(temppix, dstpix, tempwidth, temppitch, dstpitch, srcheight, dstheight);
-		}
-		else
-		{
-		    filter_expand_Y(srcpix, dstpix, srcwidth, srcpitch, dstpitch, srcheight, dstheight);
-		}
-	}
-
-	aligned_free( temppix );
-
-	return _dst;
-}
-
-
diff --git a/lib/src/Ipc/Master.cpp b/lib/src/Ipc/Master.cpp
index 19dcaa1..83a2588 100644
--- a/lib/src/Ipc/Master.cpp
+++ b/lib/src/Ipc/Master.cpp
@@ -1,7 +1,7 @@
 /*
  * IpcMaster.cpp - class Ipc::Master which manages IpcSlaves
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -24,15 +24,21 @@
  */
 
 #include <QtCore/QCoreApplication>
+#include <QtCore/QThread>
 #include <QtNetwork/QTcpSocket>
 
 #include "Ipc/Master.h"
 #include "Ipc/QtSlaveLauncher.h"
 #include "Logger.h"
 
+Q_DECLARE_METATYPE(Ipc::Id)
+Q_DECLARE_METATYPE(Ipc::Msg)
+Q_DECLARE_METATYPE(Ipc::SlaveLauncher*)
+
 namespace Ipc
 {
 
+
 Master::Master( const QString &applicationFilePath ) :
 	QTcpServer(),
 	m_applicationFilePath( applicationFilePath ),
@@ -53,8 +59,9 @@ Master::Master( const QString &applicationFilePath ) :
 	connect( this, SIGNAL( newConnection() ),
 			 this, SLOT( acceptConnection() ) );
 
-	connect( this, SIGNAL( messagesPending() ),
-				this, SLOT( sendPendingMessages() ), Qt::QueuedConnection );
+	qRegisterMetaType<Ipc::Id>();
+	qRegisterMetaType<Ipc::Msg>();
+	qRegisterMetaType<Ipc::SlaveLauncher *>();
 }
 
 
@@ -64,8 +71,8 @@ Master::~Master()
 {
 	QMutexLocker l( &m_processMapMutex );
 
-	const QList<Ipc::Id> processIds = m_processes.keys();
-	foreach( const Ipc::Id &id, processIds )
+	auto processIds = m_processes.keys();
+	for( auto id : processIds )
 	{
 		stopSlave( id );
 	}
@@ -76,8 +83,15 @@ Master::~Master()
 
 
 
-void Master::createSlave( const Ipc::Id &id, SlaveLauncher *slaveLauncher )
+void Master::createSlave( const Ipc::Id& id, Ipc::SlaveLauncher *slaveLauncher )
 {
+	if( thread() != QThread::currentThread() )
+	{
+		QMetaObject::invokeMethod( this, "createSlave", Qt::BlockingQueuedConnection,
+								   Q_ARG( const Ipc::Id&, id ), Q_ARG( Ipc::SlaveLauncher*, slaveLauncher ) );
+		return;
+	}
+
 	// make sure to stop a slave with the same id
 	stopSlave( id );
 
@@ -103,8 +117,14 @@ void Master::createSlave( const Ipc::Id &id, SlaveLauncher *slaveLauncher )
 
 
 
-void Master::stopSlave( const Ipc::Id &id )
+void Master::stopSlave( const Ipc::Id& id )
 {
+	if( thread() != QThread::currentThread() )
+	{
+		QMetaObject::invokeMethod( this, "stopSlave", Qt::BlockingQueuedConnection, Q_ARG( Ipc::Id, id ) );
+		return;
+	}
+
 	QMutexLocker l( &m_processMapMutex );
 
 	if( m_processes.contains( id ) )
@@ -112,21 +132,21 @@ void Master::stopSlave( const Ipc::Id &id )
 		LogStream() << "Stopping slave" << id;
 		if( isSlaveRunning( id ) )
 		{
-			l.unlock();
+			// tell slave to quit
 			sendMessage( id, Ipc::Commands::Quit );
-			m_processes[id].slaveLauncher->stop();
-			l.relock();
-		}
 
-		delete m_processes[id].slaveLauncher;
+			// close socket so that client quits even if quit message isn't processed
+			if( m_processes[id].sock != NULL )
+			{
+				m_processes[id].sock->close();
+			}
 
-		if( m_processes[id].sock != NULL )
-		{
-			// schedule deletion of socket - can't delete it here as this
-			// crashes Qt on Win32
-			m_processes[id].sock->deleteLater();
+			// terminate process after internal timeout
+			m_processes[id].slaveLauncher->stop();
 		}
 
+		delete m_processes[id].sock;
+
 		m_processes.remove( id );
 	}
 	else
@@ -139,14 +159,13 @@ void Master::stopSlave( const Ipc::Id &id )
 
 
 
-bool Master::isSlaveRunning( const Ipc::Id &id )
+bool Master::isSlaveRunning( const Ipc::Id& id )
 {
 	QMutexLocker l( &m_processMapMutex );
 
-	if( m_processes.contains( id ) )
-	{
-		return m_processes[id].slaveLauncher->isRunning();
-	}
+	return m_processes.contains( id ) &&
+			m_processes[id].slaveLauncher &&
+			m_processes[id].slaveLauncher->isRunning();
 
 	return false;
 }
@@ -154,18 +173,30 @@ bool Master::isSlaveRunning( const Ipc::Id &id )
 
 
 
-void Master::sendMessage( const Ipc::Id &id, const Ipc::Msg &msg )
+void Master::sendMessage( const Ipc::Id& id, const Ipc::Msg& msg )
 {
+	if( thread() != QThread::currentThread() )
+	{
+		QMetaObject::invokeMethod( this, "sendMessage", Qt::BlockingQueuedConnection,
+								   Q_ARG( const Ipc::Id&, id ), Q_ARG(const Ipc::Msg&, msg ) );
+		return;
+	}
+
 	QMutexLocker l( &m_processMapMutex );
 
 	if( m_processes.contains( id ) )
 	{
-		qDebug() << "Ipc::Master: queuing message" << msg.cmd()
-					<< "for slave" << id;
-		m_processes[id].pendingMessages << msg;
-		if( m_processes[id].sock )
+		ProcessInformation& processInfo = m_processes[id];
+
+		if( processInfo.sock )
 		{
-			emit messagesPending();
+			qDebug() << "Ipc::Master: sending message" << msg.cmd() << "to slave" << id;
+			msg.send( processInfo.sock );
+		}
+		else
+		{
+			qDebug() << "Ipc::Master: queuing message" << msg.cmd() << "for slave" << id;
+			processInfo.pendingMessages << msg;
 		}
 	}
 	else
@@ -178,24 +209,6 @@ void Master::sendMessage( const Ipc::Id &id, const Ipc::Msg &msg )
 
 
 
-Ipc::Msg Master::receiveMessage( const Ipc::Id &id )
-{
-	QMutexLocker l( &m_processMapMutex );
-
-	Ipc::Msg m;
-	if( m_processes.contains( id ) && m_processes[id].sock )
-	{
-		m.receive( m_processes[id].sock );
-		qDebug() << "Ipc::Master: received message" << m.cmd()
-					<< "from slave" << id;
-	}
-
-	return m;
-}
-
-
-
-
 void Master::acceptConnection()
 {
 	qDebug( "Ipc::Master: accepting connection" );
@@ -210,7 +223,6 @@ void Master::acceptConnection()
 	m_socketReceiveMapper.setMapping( s, s );
 
 	Ipc::Msg( Ipc::Commands::Identify ).send( s );
-
 }
 
 
diff --git a/lib/src/Ipc/QtSlaveLauncher.cpp b/lib/src/Ipc/QtSlaveLauncher.cpp
index 9010c69..18a0303 100644
--- a/lib/src/Ipc/QtSlaveLauncher.cpp
+++ b/lib/src/Ipc/QtSlaveLauncher.cpp
@@ -2,7 +2,7 @@
  * QtSlaveLauncher.cpp - class Ipc::QtSlaveLauncher providing mechanisms for
  *                       launching a slave application via QProcess
  *
- * Copyright (c) 2010-2013 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -26,7 +26,7 @@
 
 #include <QtCore/QCoreApplication>
 #include <QtCore/QProcess>
-#include <QtCore/QTime>
+#include <QtCore/QTimer>
 
 #include "Ipc/QtSlaveLauncher.h"
 
@@ -36,6 +36,9 @@
 
 #ifdef ITALC_BUILD_WIN32
 #include <windows.h>
+#define DEV_NULL "NUL"
+#else
+#define DEV_NULL "/dev/null"
 #endif
 
 namespace Ipc
@@ -43,7 +46,7 @@ namespace Ipc
 
 QtSlaveLauncher::QtSlaveLauncher( const QString &applicationFilePath ) :
 	SlaveLauncher( applicationFilePath ),
-	m_processMutex(),
+	m_processMutex( QMutex::Recursive ),
 	m_process( NULL )
 {
 }
@@ -61,56 +64,45 @@ void QtSlaveLauncher::start( const QStringList &arguments )
 {
 	stop();
 
-	m_processMutex.lock();
+	QMutexLocker l( &m_processMutex );
+
 	m_process = new QProcess;
 
-	// forward stdout from slave to master when in debug mode
-	if( ItalcCore::config->logLevel() >= Logger::LogLevelDebug )
-	{
-		m_process->setProcessChannelMode( QProcess::ForwardedChannels );
-	}
+	// forward stdout/stderr from slave to master
+	m_process->setProcessChannelMode( QProcess::ForwardedChannels );
+
+#if QT_VERSION >= 0x050000
+	QObject::connect( m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+					  m_process, &QProcess::deleteLater );
+	QObject::connect( m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+					  this, &QtSlaveLauncher::finished );
+#else
+	connect( m_process, SIGNAL(finished(int)), m_process, SLOT(deleteLater()) );
+	connect( m_process, SIGNAL(finished(int)), this, SIGNAL(finished()) );
+#endif
 
 #ifndef DEBUG
 	m_process->start( applicationFilePath(), arguments );
 #else
 	qWarning() << applicationFilePath() << arguments;
 #endif
-	m_processMutex.unlock();
 }
 
 
 
 void QtSlaveLauncher::stop()
 {
-	m_processMutex.lock();
-	if( m_process )
-	{
-		QTime t;
-		t.start();
-
-		while( t.elapsed() < 5000 && m_process->state() != QProcess::NotRunning )
-		{
-			QCoreApplication::processEvents();
-#ifdef ITALC_BUILD_WIN32
-			// Silvio 2012-01-07: I don't know why this works and why this "Sleep" helps
-			// but after adding these two lines taskbar returns and screen unlocks almost
-			// instantly (before it took few seconds). Same is true for demo mode.
-			Sleep( 500 );
-			QCoreApplication::processEvents();
-#endif
-		}
-
-		if( m_process->state() != QProcess::NotRunning )
-		{
-			qWarning( "Slave still running, terminating it now." );
-			m_process->terminate();
-			m_process->kill();
-		}
+	QMutexLocker l( &m_processMutex );
 
-		delete m_process;
-		m_process = NULL;
+	// process still running?
+	if( isRunning() )
+	{
+		// then register some logic for asynchronously stopping process after timeout
+		QTimer* killTimer = new QTimer( m_process );
+		connect( killTimer, SIGNAL(timeout()), m_process, SLOT(terminate()) );
+		connect( killTimer, SIGNAL(timeout()), m_process, SLOT(kill()) );
+		killTimer->start( 5000 );
 	}
-	m_processMutex.unlock();
 }
 
 
@@ -118,15 +110,13 @@ void QtSlaveLauncher::stop()
 bool QtSlaveLauncher::isRunning()
 {
 	QMutexLocker l( &m_processMutex );
+
+	// guarded pointer still valid?
 	if( m_process )
 	{
-		// we have to call this in order to update the state if the
-		// process has finished already
-		m_process->waitForFinished( 0 );
-
-		return m_process->state() != QProcess::NotRunning;
+		// then process is running
+		return true;
 	}
-
 	return false;
 }
 
diff --git a/lib/src/Ipc/SlaveLauncher.cpp b/lib/src/Ipc/SlaveLauncher.cpp
index ea7d28e..dc82ae7 100644
--- a/lib/src/Ipc/SlaveLauncher.cpp
+++ b/lib/src/Ipc/SlaveLauncher.cpp
@@ -2,7 +2,8 @@
  * IpcSlaveLauncher.cpp - class Ipc::SlaveLauncher providing mechanisms for
  *                        launching a slave application
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+
  * Copyright (c) 2010 Univention GmbH
  *
  * This file is part of iTALC - http://italc.sourceforge.net
@@ -38,6 +39,12 @@ SlaveLauncher::SlaveLauncher( const QString &applicationFilePath ) :
 	{
 		m_applicationFilePath = QCoreApplication::applicationFilePath();
 	}
+
+#if QT_VERSION >= 0x050000
+	connect( this, &SlaveLauncher::finished, this, &SlaveLauncher::deleteLater );
+#else
+	connect( this, SIGNAL(finished()), this, SLOT(deleteLater()) );
+#endif
 }
 
 
diff --git a/lib/src/ItalcConfiguration.cpp b/lib/src/ItalcConfiguration.cpp
index f10e1a7..9c59956 100644
--- a/lib/src/ItalcConfiguration.cpp
+++ b/lib/src/ItalcConfiguration.cpp
@@ -2,7 +2,7 @@
  * ItalcConfiguration.cpp - a Configuration object storing system wide
  *                          configuration values
  *
- * Copyright (c) 2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2010-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -63,6 +63,8 @@ ItalcConfiguration ItalcConfiguration::defaultConfiguration()
 {
 	ItalcConfiguration c( Configuration::Store::NoBackend );
 
+	c.setHighDPIScalingEnabled( false );
+
 	c.setTrayIconHidden( false );
 	c.setServiceAutostart( true );
 	c.setServiceArguments( QString() );
@@ -92,7 +94,6 @@ ItalcConfiguration ItalcConfiguration::defaultConfiguration()
 	c.setVncLowAccuracy( true );
 
 	c.setDemoServerBackend( 0 );
-	c.setDemoServerMultithreaded( true );
 
 	c.setCoreServerPort( PortOffsetVncServer );
 	c.setDemoServerPort( PortOffsetDemoServer );
diff --git a/lib/src/ItalcCore.cpp b/lib/src/ItalcCore.cpp
index e1eddc5..68f0955 100644
--- a/lib/src/ItalcCore.cpp
+++ b/lib/src/ItalcCore.cpp
@@ -1,7 +1,7 @@
 /*
  * ItalcCore.cpp - implementation of iTALC Core
  *
- * Copyright (c) 2006-2010 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -32,7 +32,7 @@
 #include <QtCore/QFileInfo>
 #include <QtCore/QLocale>
 #include <QtCore/QTranslator>
-#include <QtGui/QApplication>
+#include <QApplication>
 
 #include "ItalcCore.h"
 #include "ItalcConfiguration.h"
@@ -59,8 +59,10 @@ void initResources()
 {
 	Q_INIT_RESOURCE(ItalcCore);
 #ifndef QT_TRANSLATIONS_DIR
+#if QT_VERSION < 0x050000
 	Q_INIT_RESOURCE(qt_qm);
 #endif
+#endif
 }
 
 
@@ -126,6 +128,24 @@ static void killWisPtis()
 }
 
 
+
+void ItalcCore::setupApplicationParameters()
+{
+	QCoreApplication::setOrganizationName( "iTALC Solutions" );
+	QCoreApplication::setOrganizationDomain( "italcsolutions.org" );
+	QCoreApplication::setApplicationName( "iTALC" );
+
+	if( ItalcConfiguration().isHighDPIScalingEnabled() )
+	{
+
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
+		QApplication::setAttribute( Qt::AA_EnableHighDpiScaling );
+#endif
+	}
+}
+
+
+
 bool ItalcCore::init()
 {
 	if( config )
@@ -137,9 +157,7 @@ bool ItalcCore::init()
 
 	lzo_init();
 
-	QCoreApplication::setOrganizationName( "iTALC Solutions" );
-	QCoreApplication::setOrganizationDomain( "italcsolutions.org" );
-	QCoreApplication::setApplicationName( "iTALC" );
+	setupApplicationParameters();
 
 	initResources();
 
@@ -189,7 +207,7 @@ bool ItalcCore::initAuthentication( int credentialTypes )
 	if( credentialTypes & AuthenticationCredentials::UserLogon &&
 			config->isLogonAuthenticationEnabled() )
 	{
-		if( QApplication::type() != QApplication::Tty )
+		if( qobject_cast<QApplication *>( QCoreApplication::instance() ) )
 		{
 			PasswordDialog dlg( QApplication::activeWindow() );
 			if( dlg.exec() &&
diff --git a/lib/src/ItalcCoreConnection.cpp b/lib/src/ItalcCoreConnection.cpp
index 76ab24b..9ed0b1c 100644
--- a/lib/src/ItalcCoreConnection.cpp
+++ b/lib/src/ItalcCoreConnection.cpp
@@ -1,7 +1,7 @@
 /*
  * ItalcCoreConnection.cpp - implementation of ItalcCoreConnection
  *
- * Copyright (c) 2008-2011 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2008-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -252,9 +252,10 @@ void ItalcCoreConnection::logoutUser()
 
 
 
-void ItalcCoreConnection::displayTextMessage( const QString &msg )
+void ItalcCoreConnection::displayTextMessage( const QString& title, const QString &msg )
 {
 	enqueueMessage( ItalcCore::Msg( ItalcCore::DisplayTextMessage ).
+						addArg( "title", title ).
 						addArg( "text", msg ) );
 }
 
diff --git a/lib/src/ItalcVncConnection.cpp b/lib/src/ItalcVncConnection.cpp
index 1eb9e00..ddbf1e4 100644
--- a/lib/src/ItalcVncConnection.cpp
+++ b/lib/src/ItalcVncConnection.cpp
@@ -1,7 +1,7 @@
 /*
  * ItalcVncConnection.cpp - implementation of ItalcVncConnection class
  *
- * Copyright (c) 2008-2014 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2008-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -36,6 +36,7 @@
 #include <QtCore/QCoreApplication>
 #include <QtCore/QMutexLocker>
 #include <QtCore/QTime>
+#include <QtCore/QTimer>
 
 #include <rfb/dh.h>
 
@@ -336,8 +337,7 @@ ItalcVncConnection::ItalcVncConnection( QObject *parent ) :
 	m_scaledScreenNeedsUpdate( false ),
 	m_scaledScreen(),
 	m_scaledSize(),
-	m_state( Disconnected ),
-	m_stopped( false )
+	m_state( Disconnected )
 {
 }
 
@@ -347,29 +347,50 @@ ItalcVncConnection::~ItalcVncConnection()
 {
 	stop();
 
-	delete [] m_frameBuffer;
+	if( isRunning() )
+	{
+		qWarning( "Waiting for VNC connection thread to finish." );
+		wait( ThreadTerminationTimeout );
+	}
+
+	if( isRunning() )
+	{
+		qWarning( "Terminating hanging VNC connection thread!" );
+
+		terminate();
+		wait();
+	}
+
+	delete[] m_frameBuffer;
 }
 
 
 
 
-void ItalcVncConnection::stop()
+void ItalcVncConnection::stop( bool deleteAfterFinished )
 {
 	if( isRunning() )
 	{
-		m_stopped = true;
-		m_updateIntervalSleeper.wakeAll();
-
-		if( !wait( 1000 ) )
+		if( deleteAfterFinished )
 		{
-			qWarning( "ItalcVncConnection::stop(): terminating thread" );
-			terminate();
-
-			while( !wait( 1000 ) )
-			{
-				qWarning( "ItalcVncConnection::stop(): terminated thread is still alive!" );
-			}
+			connect( this, &ItalcVncConnection::finished,
+					 this, &ItalcVncConnection::deleteLater );
 		}
+
+		requestInterruption();
+
+		m_updateIntervalSleeper.wakeAll();
+
+		// terminate thread in background after timeout
+#if QT_VERSION < 0x050400
+		QTimer::singleShot( ThreadTerminationTimeout, this, SLOT(terminate()) );
+#else
+		QTimer::singleShot( ThreadTerminationTimeout, this, &ItalcVncConnection::terminate );
+#endif
+	}
+	else if( deleteAfterFinished )
+	{
+		deleteLater();
 	}
 }
 
@@ -492,7 +513,7 @@ void ItalcVncConnection::rescaleScreen()
 		if( m_image.size().isValid() )
 		{
 			m_scaledScreenNeedsUpdate = false;
-			m_image.scaleTo( m_scaledScreen );
+			m_scaledScreen = m_image.scaled( m_scaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
 		}
 	}
 }
@@ -504,12 +525,11 @@ void ItalcVncConnection::run()
 {
 	m_state = Disconnected;
 	emit stateChanged( m_state );
-	m_stopped = false;
 
 	rfbClientLog = hookOutputHandler;
 	rfbClientErr = hookOutputHandler;
 
-	while( m_stopped == false )
+	while( isInterruptionRequested() == false )
 	{
 		doConnection();
 	}
@@ -521,7 +541,7 @@ void ItalcVncConnection::doConnection()
 {
 	QMutex sleeperMutex;
 
-	while( !m_stopped && m_state != Connected ) // try to connect as long as the server allows
+	while( isInterruptionRequested() == false && m_state != Connected ) // try to connect as long as the server allows
 	{
 		m_cl = rfbGetClient( 8, 3, 4 );
 		m_cl->MallocFrameBuffer = hookNewClient;
@@ -588,7 +608,7 @@ void ItalcVncConnection::doConnection()
 			}
 
 			// do not sleep when already requested to stop
-			if( m_stopped )
+			if( isInterruptionRequested() )
 			{
 				break;
 			}
@@ -612,7 +632,7 @@ void ItalcVncConnection::doConnection()
 	//QTime lastFullUpdate = QTime::currentTime();
 
 	// Main VNC event loop
-	while( !m_stopped )
+	while( isInterruptionRequested() == false )
 	{
 		int timeout = 500;
 		if( m_framebufferUpdateInterval < 0 )
@@ -620,7 +640,7 @@ void ItalcVncConnection::doConnection()
 			timeout = 100*1000;	// 100 ms
 		}
 		const int i = WaitForMessage( m_cl, timeout );
-		if( m_stopped || i < 0 )
+		if( isInterruptionRequested() || i < 0 )
 		{
 			break;
 		}
@@ -674,7 +694,7 @@ void ItalcVncConnection::doConnection()
 
 		m_mutex.unlock();
 
-		if( m_framebufferUpdateInterval > 0 && m_stopped == false )
+		if( m_framebufferUpdateInterval > 0 && isInterruptionRequested() == false )
 		{
 			sleeperMutex.lock();
 			m_updateIntervalSleeper.wait( &sleeperMutex,
@@ -689,6 +709,7 @@ void ItalcVncConnection::doConnection()
 	}
 
 	m_state = Disconnected;
+
 	emit stateChanged( m_state );
 }
 
diff --git a/lib/src/LocalSystem.cpp b/lib/src/LocalSystem.cpp
index 467cb98..82809a6 100644
--- a/lib/src/LocalSystem.cpp
+++ b/lib/src/LocalSystem.cpp
@@ -2,7 +2,7 @@
  * LocalSystem.cpp - namespace LocalSystem, providing an interface for
  *				   transparent usage of operating-system-specific functions
  *
- * Copyright (c) 2006-2012 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
+ * Copyright (c) 2006-2016 Tobias Doerffel <tobydox/at/users/dot/sf/dot/net>
  *
  * This file is part of iTALC - http://italc.sourceforge.net
  *
@@ -27,13 +27,16 @@
 
 #include <QtCore/QDir>
 #include <QtCore/QProcess>
-#include <QtGui/QWidget>
+#include <QWidget>
 #include <QtNetwork/QHostInfo>
 
 
 #ifdef ITALC_BUILD_WIN32
 
+#define UNICODE
 #include <QtCore/QLibrary>
+#include <QtGui/QGuiApplication>
+#include <qpa/qplatformnativeinterface.h>
 
 #include <windows.h>
 #include <shlobj.h>
@@ -47,19 +50,19 @@ namespace LocalSystem
 {
 
 // taken from qt-win-opensource-src-4.2.2/src/corelib/io/qsettings.cpp
-QString windowsConfigPath( int _type )
+QString windowsConfigPath( int type )
 {
 	QString result;
 
 	QLibrary library( "shell32" );
-	typedef BOOL( WINAPI* GetSpecialFolderPath )( HWND, char *, int, BOOL );
+	typedef BOOL( WINAPI* GetSpecialFolderPath )( HWND, LPTSTR, int, BOOL );
 	GetSpecialFolderPath SHGetSpecialFolderPath = (GetSpecialFolderPath)
-				library.resolve( "SHGetSpecialFolderPathA" );
+				library.resolve( "SHGetSpecialFolderPathW" );
 	if( SHGetSpecialFolderPath )
 	{
-		char path[MAX_PATH];
-		SHGetSpecialFolderPath( 0, path, _type, FALSE );
-		result = QString::fromLocal8Bit( path );
+		wchar_t path[MAX_PATH];
+		SHGetSpecialFolderPath( 0, path, type, FALSE );
+		result = QString::fromWCharArray( path );
 	}
 	return( result );
 }
@@ -131,12 +134,12 @@ Desktop Desktop::activeDesktop()
 #ifdef ITALC_BUILD_WIN32
 	HDESK desktopHandle = OpenInputDesktop( 0, TRUE, DESKTOP_READOBJECTS );
 
-	char dname[256];
+	wchar_t dname[256];
 	dname[0] = 0;
 	if( GetUserObjectInformation( desktopHandle, UOI_NAME, dname,
-									sizeof( dname ), NULL ) )
+									sizeof( dname ) / sizeof( wchar_t ), NULL ) )
 	{
-		deskName = QString( "winsta0\\%1" ).arg( dname );
+		deskName = QString( "winsta0\\%1" ).arg( QString::fromWCharArray( dname ) );
 	}
 	CloseDesktop( desktopHandle );
 #endif
@@ -163,7 +166,7 @@ User::User( const QString &name, const QString &dom, const QString &fullname ) :
 #ifdef ITALC_BUILD_WIN32
 	// try to look up the user -> domain
 	DWORD sidLen = 256;
-	char domainName[MAX_PATH];
+	wchar_t domainName[MAX_PATH];
 	domainName[0] = 0;
 	char *sid = new char[sidLen];
 	DWORD domainLen = MAX_PATH;
@@ -171,7 +174,7 @@ User::User( const QString &name, const QString &dom, const QString &fullname ) :
 	m_userToken = sid;
 
 	if( !LookupAccountName( NULL,		// system name
-							m_name.toAscii().constData(),
+							(LPCWSTR) m_name.utf16(),
 							m_userToken,		// SID
 							&sidLen,
 							domainName,
@@ -184,13 +187,14 @@ User::User( const QString &name, const QString &dom, const QString &fullname ) :
 
 	if( m_domain.isEmpty() )
 	{
-		CHAR computerName[MAX_PATH];
+		wchar_t computerName[MAX_PATH];
 		DWORD size = MAX_PATH;
 		GetComputerName( computerName, &size );
 
-		if( QString( domainName ) != computerName )
+		if( QString::fromWCharArray( domainName ) !=
+			QString::fromWCharArray( computerName ) )
 		{
-			m_domain = domainName;
+			m_domain = QString::fromWCharArray( domainName );
 		}
 	}
 
@@ -269,7 +273,7 @@ static QString querySessionInformation( DWORD sessionId,
 					&pBuffer,
 					&dwBufferLen ) )
 	{
-		result = pBuffer;
+		result = QString::fromWCharArray( pBuffer );
 	}
 	WTSFreeMemory( pBuffer );
 
@@ -294,11 +298,11 @@ User User::loggedOnUser()
 	// check whether we just got the name of the local computer
 	if( !domainName.isEmpty() )
 	{
-		CHAR computerName[MAX_PATH];
+		wchar_t computerName[MAX_PATH];
 		DWORD size = MAX_PATH;
 		GetComputerName( computerName, &size );
 
-		if( domainName == computerName )
+		if( domainName == QString::fromWCharArray( computerName ) )
 		{
 			// reset domain name as storing the local computer's name
 			// doesn't help here
@@ -359,11 +363,11 @@ QString User::homePath() const
 	if( OpenProcessToken( userProcess.processHandle(),
 									MAXIMUM_ALLOWED, &hToken ) )
 	{
-		CHAR userProfile[MAX_PATH];
+		wchar_t userProfile[MAX_PATH];
 		DWORD size = MAX_PATH;
 		if( GetUserProfileDirectory( hToken, userProfile, &size ) )
 		{
-			homePath = userProfile;
+			homePath = QString::fromWCharArray( userProfile );
 			CloseHandle( hToken );
 		}
 		else
@@ -401,25 +405,26 @@ void User::lookupNameAndDomain()
 		return;
 	}
 
-	char * accName = new char[accNameLen];
-	char * domainName = new char[domainNameLen];
+	wchar_t* accName = new wchar_t[accNameLen];
+	wchar_t* domainName = new wchar_t[domainNameLen];
 	LookupAccountSid( NULL, userToken(), accName, &accNameLen,
 						domainName, &domainNameLen, &snu );
 
 	if( m_name.isEmpty() )
 	{
-		m_name = accName;
+		m_name = QString::fromWCharArray( accName );
 	}
 
 	if( m_domain.isEmpty() )
 	{
-		CHAR computerName[MAX_PATH];
+		wchar_t computerName[MAX_PATH];
 		DWORD size = MAX_PATH;
 		GetComputerName( computerName, &size );
 
-		if( QString( domainName ) != computerName )
+		if( QString::fromWCharArray( domainName ) !=
+			QString::fromWCharArray( computerName ) )
 		{
-			m_domain = domainName;
+			m_domain = QString::fromWCharArray( domainName );
 		}
 	}
 
@@ -455,43 +460,20 @@ void User::lookupFullName()
 	lookupNameAndDomain();
 
 #ifdef ITALC_BUILD_WIN32
-	char * accName = qstrdup( m_name.toAscii().constData() );
-	char * domainName = qstrdup( m_domain.toAscii().constData() );
-
 	// try to retrieve user's full name from domain
-	WCHAR wszDomain[256];
-	MultiByteToWideChar( CP_ACP, 0, domainName,
-			strlen( domainName ) + 1, wszDomain, sizeof( wszDomain ) /
-											sizeof( wszDomain[0] ) );
-	WCHAR wszUser[256];
-	MultiByteToWideChar( CP_ACP, 0, accName,
-			strlen( accName ) + 1, wszUser, sizeof( wszUser ) /
-											sizeof( wszUser[0] ) );
 
 	PBYTE dc = NULL;	// domain controller
-	if( NetGetDCName( NULL, wszDomain, &dc ) != NERR_Success )
+	if( NetGetDCName( NULL, (LPWSTR) m_domain.unicode(), &dc ) != NERR_Success )
 	{
 		dc = NULL;
 	}
 
 	LPUSER_INFO_2 pBuf = NULL;
-	NET_API_STATUS nStatus = NetUserGetInfo( (LPWSTR)dc, wszUser, 2,
+	NET_API_STATUS nStatus = NetUserGetInfo( (LPWSTR)dc, (LPWSTR) m_name.unicode(), 2,
 												(LPBYTE *) &pBuf );
 	if( nStatus == NERR_Success && pBuf != NULL )
 	{
-		int len = WideCharToMultiByte( CP_ACP, 0, pBuf->usri2_full_name,
-											-1, NULL, 0, NULL, NULL );
-		if( len > 0 )
-		{
-			char *mbstr = new char[len];
-			len = WideCharToMultiByte( CP_ACP, 0, pBuf->usri2_full_name,
-										-1, mbstr, len, NULL, NULL );
-			if( strlen( mbstr ) >= 1 )
-			{
-				m_fullName = mbstr;
-			}
-			delete[] mbstr;
-		}
+		m_fullName = QString::fromWCharArray( pBuf->usri2_full_name );
 	}
 
 	if( pBuf != NULL )
@@ -502,10 +484,6 @@ void User::lookupFullName()
 	{
 		NetApiBufferFree( dc );
 	}
-
-	delete[] accName;
-	delete[] domainName;
-
 #else
 
 #ifdef ITALC_HAVE_PWD_H
@@ -582,7 +560,7 @@ static DWORD findProcessId_WTS( const QString &processName, DWORD sessionId,
 			continue;
 		}
 		if( processName.isEmpty() ||
-				processName.compare( pProcessInfo[proc].pProcessName,
+			processName.compare( QString::fromWCharArray( pProcessInfo[proc].pProcessName ),
 												Qt::CaseInsensitive	) == 0 )
 		{
 			if( (int) sessionId < 0 ||
@@ -635,7 +613,7 @@ static DWORD findProcessId_TH32( const QString &processName, DWORD sessionId,
 	do
 	{
 		if( processName.isEmpty() ||
-				processName.compare( procEntry.szExeFile,
+			processName.compare( QString::fromWCharArray( procEntry.szExeFile ),
 									Qt::CaseInsensitive ) == 0 )
 		{
 			if( processOwner == NULL )
@@ -740,8 +718,8 @@ Process::Handle Process::runAsUser( const QString &proc,
 									const QString &desktop )
 {
 #ifdef ITALC_BUILD_WIN32
-	enablePrivilege( SE_ASSIGNPRIMARYTOKEN_NAME, true );
-	enablePrivilege( SE_INCREASE_QUOTA_NAME, true );
+	enablePrivilege( QString::fromWCharArray( SE_ASSIGNPRIMARYTOKEN_NAME ), true );
+	enablePrivilege( QString::fromWCharArray( SE_INCREASE_QUOTA_NAME ), true );
 	HANDLE hToken = NULL;
 
 	if( !OpenProcessToken( processHandle(), MAXIMUM_ALLOWED, &hToken ) )
@@ -762,7 +740,7 @@ Process::Handle Process::runAsUser( const QString &proc,
 	si.cb = sizeof( STARTUPINFO );
 	if( !desktop.isEmpty() )
 	{
-		si.lpDesktop = (CHAR *) qstrdup( desktop.toAscii().constData() );
+		si.lpDesktop = (LPWSTR) desktop.utf16();
 	}
 	HANDLE hNewToken = NULL;
 
@@ -772,7 +750,7 @@ Process::Handle Process::runAsUser( const QString &proc,
 	if( !CreateProcessAsUser(
 				hNewToken,			// client's access token
 				NULL,			  // file to execute
-				(CHAR *) proc.toUtf8().constData(),	 // command line
+				(LPWSTR) proc.utf16(),	 // command line
 				NULL,			  // pointer to process SECURITY_ATTRIBUTES
 				NULL,			  // pointer to thread SECURITY_ATTRIBUTES
 				FALSE,			 // handles are not inheritable
@@ -787,8 +765,6 @@ Process::Handle Process::runAsUser( const QString &proc,
 		return NULL;
 	}
 
-	delete[] si.lpDesktop;
-
 	CloseHandle( hNewToken );
 	RevertToSelf();
 	CloseHandle( hToken );
@@ -842,10 +818,10 @@ bool Process::runAsAdmin( const QString &appPath, const QString &parameters )
 {
 #ifdef ITALC_BUILD_WIN32
 	SHELLEXECUTEINFO sei = { sizeof(sei) };
-	sei.lpVerb = "runas";
-	sei.lpFile = appPath.toUtf8().constData();
+	sei.lpVerb = L"runas";
+	sei.lpFile = (LPWSTR) appPath.utf16();
 	sei.hwnd = GetForegroundWindow();
-	sei.lpParameters = parameters.toUtf8().constData();
+	sei.lpParameters = (LPWSTR) parameters.utf16();
 	sei.nShow = SW_NORMAL;
 
 	if( !ShellExecuteEx( &sei ) )
@@ -886,7 +862,7 @@ void broadcastWOLPacket( const QString & _mac )
 	unsigned char mac[MAC_SIZE];
 	char out_buf[OUTBUF_SIZE];
 
-	if( sscanf( _mac.toAscii().constData(),
+	if( sscanf( _mac.toLatin1().constData(),
 				"%2x:%2x:%2x:%2x:%2x:%2x",
 				(unsigned int *) &mac[0],
 				(unsigned int *) &mac[1],
@@ -1134,7 +1110,7 @@ QString Path::systemConfigDataPath()
 
 
 #ifdef ITALC_BUILD_WIN32
-BOOL enablePrivilege( LPCTSTR lpszPrivilegeName, BOOL bEnable )
+BOOL enablePrivilege( const QString& privilegeName, bool enable )
 {
 	HANDLE			hToken;
 	TOKEN_PRIVILEGES	tp;
@@ -1147,14 +1123,14 @@ BOOL enablePrivilege( LPCTSTR lpszPrivilegeName, BOOL bEnable )
 		return FALSE;
 	}
 
-	if( !LookupPrivilegeValue( NULL, lpszPrivilegeName, &luid ) )
+	if( !LookupPrivilegeValue( NULL, (LPWSTR) privilegeName.utf16(), &luid ) )
 	{
 		return FALSE;
 	}
 
 	tp.PrivilegeCount		   = 1;
 	tp.Privileges[0].Luid	   = luid;
-	tp.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
+	tp.Privileges[0].Attributes = enable ? SE_PRIVILEGE_ENABLED : 0;
 
 	ret = AdjustTokenPrivileges( hToken, FALSE, &tp, 0, NULL, NULL );
 
@@ -1165,15 +1141,46 @@ BOOL enablePrivilege( LPCTSTR lpszPrivilegeName, BOOL bEnable )
 #endif
 
 
+#ifdef ITALC_BUILD_WIN32
+static QWindow* windowForWidget( const QWidget* widget )
+{
+	QWindow* window = widget->windowHandle();
+	if( window )
+	{
+		return window;
+	}
+
+	const QWidget* nativeParent = widget->nativeParentWidget();
+	if( nativeParent )
+	{
+		return nativeParent->windowHandle();
+	}
+
+	return 0;
+}
+
+
+HWND getHWNDForWidget(const QWidget* widget )
+{
+	QWindow* window = windowForWidget( widget );
+	if( window )
+	{
+		QPlatformNativeInterface* interfacep = QGuiApplication::platformNativeInterface();
+		return static_cast<HWND>( interfacep->nativeResourceForWindow( QByteArrayLiteral( "handle" ), window ) );
+	}
+	return 0;
+}
+#endif
+
 
-void activateWindow( QWidget * _w )
+void activateWindow( QWidget* w )
 {
-	_w->activateWindow();
-	_w->raise();
+	w->activateWindow();
+	w->raise();
 #ifdef ITALC_BUILD_WIN32
-	SetWindowPos( _w->winId(), HWND_TOPMOST, 0, 0, 0, 0,
+	SetWindowPos( getHWNDForWidget(w), HWND_TOPMOST, 0, 0, 0, 0,
 						SWP_NOMOVE | SWP_NOSIZE );
-	SetWindowPos( _w->winId(), HWND_NOTOPMOST, 0, 0, 0, 0,
+	SetWindowPos( getHWNDForWidget(w), HWND_NOTOPMOST, 0, 0, 0, 0,
 						SWP_NOMOVE | SWP_NOSIZE );
 #endif
 }
diff --git a/lib/src/LockWidget.cpp b/lib/src/LockWidget.cpp
index fec9f20..a2d10fd 100644
--- a/lib/src/LockWidget.cpp
+++ b/lib/src/LockWidget.cpp
@@ -29,8 +29,8 @@
 #include "LockWidget.h"
 #include "LocalSystem.h"
 
-#include <QtGui/QApplication>
-#include <QtGui/QDesktopWidget>
+#include <QApplication>
+#include <QDesktopWidget>
 #include <QtGui/QIcon>
 #include <QtGui/QPainter>
 
@@ -139,6 +139,7 @@ void LockWidget::paintEvent( QPaintEvent * )
 
 
 #ifdef ITALC_BUILD_LINUX
+#if QT_VERSION < 0x050000
 bool LockWidget::x11Event( XEvent * _e )
 {
 	switch( _e->type )
@@ -153,5 +154,6 @@ bool LockWidget::x11Event( XEvent * _e )
 	return false;
 }
 #endif
+#endif
 
 
diff --git a/lib/src/Logger.cpp b/lib/src/Logger.cpp
index 5c38700..9a13e90 100644
--- a/lib/src/Logger.cpp
+++ b/lib/src/Logger.cpp
@@ -58,7 +58,7 @@ Logger::Logger( const QString &appName ) :
 	logLevel = qBound( LogLevelMin, static_cast<LogLevel>( ll ), LogLevelMax );
 	initLogFile();
 
-	qInstallMsgHandler( qtMsgHandler );
+	qInstallMessageHandler( qtMsgHandler );
 
 #ifdef ITALC_BUILD_WIN32
 	if( ItalcCore::config->logToWindowsEventLog() )
@@ -151,7 +151,7 @@ QString Logger::formatMessage( LogLevel ll, const QString &msg )
 
 
 
-void Logger::qtMsgHandler( QtMsgType msgType, const char *msg )
+void Logger::qtMsgHandler( QtMsgType msgType, const QMessageLogContext &, const QString& msg )
 {
 	LogLevel ll = LogLevelDefault;
 
diff --git a/lib/src/PasswordDialog.cpp b/lib/src/PasswordDialog.cpp
index fb74729..82399a5 100644
--- a/lib/src/PasswordDialog.cpp
+++ b/lib/src/PasswordDialog.cpp
@@ -26,7 +26,7 @@
 
 #include <QtCore/QDir>
 #include <QtCore/QProcess>
-#include <QtGui/QPushButton>
+#include <QPushButton>
 
 #include "PasswordDialog.h"
 #include "LocalSystem.h"
diff --git a/lib/src/Snapshot.cpp b/lib/src/Snapshot.cpp
index acdb64f..3c33065 100644
--- a/lib/src/Snapshot.cpp
+++ b/lib/src/Snapshot.cpp
@@ -24,8 +24,8 @@
 #include <QtCore/QDateTime>
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
-#include <QtGui/QApplication>
-#include <QtGui/QMessageBox>
+#include <QApplication>
+#include <QMessageBox>
 #include <QtGui/QPainter>
 
 #include "Snapshot.h"
@@ -73,7 +73,7 @@ void Snapshot::take( ItalcVncConnection *vncConn, const QString &user )
 								"doesn't exist and couldn't be "
 								"created." ).arg( dir );
 		qCritical() << msg.toUtf8().constData();
-		if( QApplication::type() != QApplication::Tty )
+		if( qobject_cast<QApplication *>( QCoreApplication::instance() ) )
 		{
 			QMessageBox::critical( NULL, tr( "Snapshot" ), msg );
 		}
diff --git a/lib/src/SystemKeyTrapper.cpp b/lib/src/SystemKeyTrapper.cpp
index 0d3d3e2..aa74f40 100644
--- a/lib/src/SystemKeyTrapper.cpp
+++ b/lib/src/SystemKeyTrapper.cpp
@@ -286,7 +286,7 @@ void SystemKeyTrapper::setEnabled( bool on )
 		// start new xmodmap process and dump our modified keytable from stdin
 		p.start( "xmodmap", QStringList() << "-" );
 		p.waitForStarted();
-		p.write( keyTableModified.toAscii() );
+		p.write( keyTableModified.toLatin1() );
 		p.closeWriteChannel();
 		p.waitForFinished();
 #endif
diff --git a/lib/src/VncView.cpp b/lib/src/VncView.cpp
index 8546931..67e7ac1 100644
--- a/lib/src/VncView.cpp
+++ b/lib/src/VncView.cpp
@@ -29,16 +29,16 @@
 #include "ProgressWidget.h"
 #include "SystemKeyTrapper.h"
 
-#include <QtGui/QApplication>
-#include <QtGui/QDesktopWidget>
-#include <QtGui/QMouseEvent>
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QMouseEvent>
 #include <QtGui/QPainter>
 
 
 
 VncView::VncView( const QString &host, QWidget *parent, Mode mode ) :
 	QWidget( parent ),
-	m_vncConn( this ),
+	m_vncConn( new ItalcVncConnection( QCoreApplication::instance() ) ),
 	m_mode( mode ),
 	m_frame(),
 	m_cursorShape(),
@@ -55,39 +55,39 @@ VncView::VncView( const QString &host, QWidget *parent, Mode mode ) :
 	m_establishingConnection( NULL ),
 	m_sysKeyTrapper( new SystemKeyTrapper( false ) )
 {
-	m_vncConn.setHost( host );
+	m_vncConn->setHost( host );
 	if( m_mode == DemoMode )
 	{
-		m_vncConn.setQuality( ItalcVncConnection::DemoClientQuality );
-		m_vncConn.setItalcAuthType( ItalcAuthHostBased );
+		m_vncConn->setQuality( ItalcVncConnection::DemoClientQuality );
+		m_vncConn->setItalcAuthType( ItalcAuthHostBased );
 		m_establishingConnection = new ProgressWidget(
 			tr( "Establishing connection to %1 ..." ).arg( host ),
 					":/resources/watch%1.png", 16, this );
-		connect( &m_vncConn, SIGNAL( connected() ),
+		connect( m_vncConn, SIGNAL( connected() ),
 					m_establishingConnection, SLOT( hide() ) );
 
 	}
 	else if( m_mode == RemoteControlMode )
 	{
-		m_vncConn.setQuality( ItalcVncConnection::RemoteControlQuality );
+		m_vncConn->setQuality( ItalcVncConnection::RemoteControlQuality );
 	}
 
-	connect( &m_vncConn, SIGNAL( imageUpdated( int, int, int, int ) ),
+	connect( m_vncConn, SIGNAL( imageUpdated( int, int, int, int ) ),
 			this, SLOT( updateImage( int, int, int, int ) ),
 						Qt::BlockingQueuedConnection );
 
-	connect( &m_vncConn, SIGNAL( framebufferSizeChanged( int, int ) ),
+	connect( m_vncConn, SIGNAL( framebufferSizeChanged( int, int ) ),
 				this, SLOT( updateSizeHint( int, int ) ), Qt::QueuedConnection );
 
-	connect( &m_vncConn, SIGNAL( cursorPosChanged( int, int ) ),
+	connect( m_vncConn, SIGNAL( cursorPosChanged( int, int ) ),
 				this, SLOT( updateCursorPos( int, int ) ) );
 
-	connect( &m_vncConn, SIGNAL( cursorShapeUpdated( const QImage &, int, int ) ),
+	connect( m_vncConn, SIGNAL( cursorShapeUpdated( const QImage &, int, int ) ),
 				this, SLOT( updateCursorShape( const QImage &, int, int ) ) );
 
 	// forward trapped special keys
 	connect( m_sysKeyTrapper, SIGNAL( keyEvent( unsigned int, bool ) ),
-				&m_vncConn, SLOT( keyEvent( unsigned int, bool ) ) );
+				m_vncConn, SLOT( keyEvent( unsigned int, bool ) ) );
 	connect( m_sysKeyTrapper, SIGNAL( keyEvent( unsigned int, bool ) ),
 				this, SLOT( checkKeyEvent( unsigned int, bool ) ) );
 
@@ -109,7 +109,7 @@ VncView::VncView( const QString &host, QWidget *parent, Mode mode ) :
 	setFocusPolicy( Qt::StrongFocus );
 	setFocus();
 
-	m_vncConn.start();
+	m_vncConn->start();
 }
 
 
@@ -117,14 +117,16 @@ VncView::VncView( const QString &host, QWidget *parent, Mode mode ) :
 
 VncView::~VncView()
 {
-	disconnect( &m_vncConn, SIGNAL( imageUpdated( int, int, int, int ) ),
+	disconnect( m_vncConn, SIGNAL( imageUpdated( int, int, int, int ) ),
 			this, SLOT( updateImage( int, int, int, int ) ) );
 
 	unpressModifiers();
 	delete m_sysKeyTrapper;
 
-	m_vncConn.stop();
-	m_vncConn.wait( 500 );
+	if( m_vncConn )
+	{
+		m_vncConn->stop( true );
+	}
 }
 
 
@@ -205,7 +207,7 @@ void VncView::setViewOnly( bool _vo )
 void VncView::setScaledView( bool scaledView )
 {
 	m_scaledView = scaledView;
-	m_vncConn.setScaledSize( scaledSize() );
+	m_vncConn->setScaledSize( scaledSize() );
 	update();
 }
 
@@ -435,7 +437,7 @@ void VncView::keyEventHandler( QKeyEvent * _ke )
 						key >= 64 && key < 0xF000 )
 	{
 		unpressModifiers();
-		m_vncConn.keyEvent( XK_ISO_Level3_Shift, true );
+		m_vncConn->keyEvent( XK_ISO_Level3_Shift, true );
 	}
 #endif
 
@@ -448,12 +450,12 @@ void VncView::keyEventHandler( QKeyEvent * _ke )
 		if( pressed )
 		{
 			unpressModifiers();
-			m_vncConn.keyEvent( XK_Control_L, true );
-			m_vncConn.keyEvent( XK_Alt_L, true );
-			m_vncConn.keyEvent( XK_Delete, true );
-			m_vncConn.keyEvent( XK_Delete, false );
-			m_vncConn.keyEvent( XK_Alt_L, false );
-			m_vncConn.keyEvent( XK_Control_L, false );
+			m_vncConn->keyEvent( XK_Control_L, true );
+			m_vncConn->keyEvent( XK_Alt_L, true );
+			m_vncConn->keyEvent( XK_Delete, true );
+			m_vncConn->keyEvent( XK_Delete, false );
+			m_vncConn->keyEvent( XK_Alt_L, false );
+			m_vncConn->keyEvent( XK_Control_L, false );
 			key = 0;
 		}
 	}
@@ -479,7 +481,7 @@ void VncView::keyEventHandler( QKeyEvent * _ke )
 	if( key )
 	{
 		// forward key event to the VNC connection
-		m_vncConn.keyEvent( key, pressed );
+		m_vncConn->keyEvent( key, pressed );
 
 		// signal key event - used by RemoteControlWidget to close itself
 		// when pressing Esc
@@ -499,7 +501,7 @@ void VncView::unpressModifiers()
 	QList<unsigned int>::const_iterator it = keys.begin();
 	while( it != keys.end() )
 	{
-		m_vncConn.keyEvent( *it, false );
+		m_vncConn->keyEvent( *it, false );
 		it++;
 	}
 	m_mods.clear();
@@ -613,8 +615,7 @@ void VncView::paintEvent( QPaintEvent *paintEvent )
 		}
 		else
 		{
-			FastQImage i = m_frame;
-			p.drawImage( 0, 0, m_frame.scaled( sSize ) );
+			p.drawImage( 0, 0, m_frame.scaled( sSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
 		}
 	}
 	else
@@ -661,13 +662,13 @@ void VncView::paintEvent( QPaintEvent *paintEvent )
 
 	// draw black borders if neccessary
 	const int fbw = sSize.isValid() ? sSize.width() :
-				m_vncConn.framebufferSize().width();
+				m_vncConn->framebufferSize().width();
 	if( fbw < width() )
 	{
 		p.fillRect( fbw, 0, width() - fbw, height(), Qt::black );
 	}
 	const int fbh = sSize.isValid() ? sSize.height() :
-				m_vncConn.framebufferSize().height();
+				m_vncConn->framebufferSize().height();
 	if( fbh < height() )
 	{
 		p.fillRect( 0, fbh, fbw, height() - fbh, Qt::black );
@@ -680,7 +681,7 @@ void VncView::paintEvent( QPaintEvent *paintEvent )
 
 void VncView::resizeEvent( QResizeEvent *event )
 {
-	m_vncConn.setScaledSize( scaledSize() );
+	m_vncConn->setScaledSize( scaledSize() );
 
 	update();
 
@@ -700,9 +701,9 @@ void VncView::resizeEvent( QResizeEvent *event )
 void VncView::wheelEventHandler( QWheelEvent * _we )
 {
 	const QPoint p = mapToFramebuffer( _we->pos() );
-	m_vncConn.mouseEvent( p.x(), p.y(), m_buttonMask |
+	m_vncConn->mouseEvent( p.x(), p.y(), m_buttonMask |
 		( ( _we->delta() < 0 ) ? rfbButton5Mask : rfbButton4Mask ) );
-	m_vncConn.mouseEvent( p.x(), p.y(), m_buttonMask );
+	m_vncConn->mouseEvent( p.x(), p.y(), m_buttonMask );
 }
 
 
@@ -752,7 +753,7 @@ void VncView::mouseEventHandler( QMouseEvent * _me )
 	if( !m_viewOnly )
 	{
 		const QPoint p = mapToFramebuffer( _me->pos() );
-		m_vncConn.mouseEvent( p.x(), p.y(), m_buttonMask );
+		m_vncConn->mouseEvent( p.x(), p.y(), m_buttonMask );
 	}
 }
 
@@ -778,7 +779,7 @@ void VncView::updateImage(int x, int y, int w, int h)
 		m_h+=2;
 	}
 
-	m_frame = m_vncConn.image();
+	m_frame = m_vncConn->image();
 
 	if( !m_initDone )
 	{
@@ -790,7 +791,7 @@ void VncView::updateImage(int x, int y, int w, int h)
 		setFocusPolicy( Qt::WheelFocus );
 
 		resize( sizeHint() );
-		m_vncConn.setScaledSize( scaledSize() );
+		m_vncConn->setScaledSize( scaledSize() );
 
 		emit connectionEstablished();
 		m_initDone = true;
diff --git a/nsis/header.bmp b/nsis/header.bmp
index b59a2b7..74b2f4c 100644
Binary files a/nsis/header.bmp and b/nsis/header.bmp differ
diff --git a/nsis/welcome-page.bmp b/nsis/welcome-page.bmp
index f00c14e..1095a39 100644
Binary files a/nsis/welcome-page.bmp and b/nsis/welcome-page.bmp differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-edu/pkg-team/italc.git



More information about the debian-edu-commits mailing list