summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--automation/source/testtool/objtest.cxx4
-rw-r--r--avmedia/source/gstreamer/gstplayer.cxx2
-rw-r--r--basic/source/app/process.cxx2
-rw-r--r--basic/source/sbx/sbxscan.cxx2
-rw-r--r--bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx3
-rw-r--r--bridges/prj/build.lst4
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/call.s268
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx493
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk81
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx447
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx357
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx70
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s93
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx544
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk80
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx561
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/except.cxx8
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk5
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx8
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk5
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/call.s268
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx493
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk81
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx447
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx358
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx70
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s93
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx544
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx340
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk80
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx93
-rw-r--r--bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx561
-rw-r--r--bridges/source/cpp_uno/shared/vtablefactory.cxx2
-rw-r--r--configure.in36
-rw-r--r--connectivity/source/drivers/adabas/BDriver.cxx10
-rw-r--r--connectivity/source/drivers/ado/makefile.mk1
-rw-r--r--cppu/source/typelib/typelib.cxx2
-rw-r--r--cppu/source/uno/data.cxx6
-rw-r--r--cppu/util/makefile.mk2
-rw-r--r--cppu/util/target.pmk9
-rw-r--r--cppunit/makefile.mk4
-rw-r--r--cppunit/prj/d.lst3
-rw-r--r--dbaccess/source/core/api/RowSet.cxx2
-rw-r--r--dbaccess/source/ui/querydesign/QTableWindow.cxx2
-rw-r--r--[-rwxr-xr-x]default_images/brand/about-pt_BR.pngbin8427 -> 8427 bytes
-rw-r--r--default_images/brand/shell/backing_hc-pt_BR.pngbin6315 -> 15142 bytes
-rw-r--r--default_images/brand/shell/backing_left-pt_BR.pngbin12535 -> 15142 bytes
-rw-r--r--default_images/brand/shell/backing_left-pt_BR.svg1054
-rw-r--r--default_images/brand/shell/backing_right-pt_BR.pngbin9942 -> 9575 bytes
-rw-r--r--default_images/brand/shell/backing_right_hc-pt_BR.pngbin4658 -> 9575 bytes
-rw-r--r--default_images/res/mainapp_16.pngbin842 -> 231 bytes
-rw-r--r--default_images/res/mainapp_16_8.pngbin838 -> 231 bytes
-rw-r--r--default_images/res/mainapp_16_h.pngbin164 -> 231 bytes
-rw-r--r--default_images/res/mainapp_32.pngbin2288 -> 831 bytes
-rw-r--r--default_images/res/mainapp_32_8.pngbin2288 -> 831 bytes
-rw-r--r--default_images/res/mainapp_32_h.pngbin243 -> 1026 bytes
-rw-r--r--default_images/res/mainapp_48_8.pngbin3793 -> 1116 bytes
-rw-r--r--default_images/res/printeradmin_16.pngbin703 -> 572 bytes
-rw-r--r--default_images/res/printeradmin_16_8.pngbin705 -> 572 bytes
-rw-r--r--default_images/res/printeradmin_16_h.pngbin159 -> 253 bytes
-rw-r--r--default_images/res/printeradmin_32.pngbin1941 -> 1355 bytes
-rw-r--r--default_images/res/printeradmin_32_8.pngbin1941 -> 1355 bytes
-rw-r--r--default_images/res/printeradmin_32_h.pngbin268 -> 899 bytes
-rw-r--r--default_images/res/printeradmin_48_8.pngbin3577 -> 1699 bytes
-rw-r--r--desktop/scripts/soffice.sh5
-rw-r--r--desktop/source/app/app.cxx7
-rw-r--r--desktop/source/deployment/misc/dp_platform.cxx6
-rw-r--r--desktop/unx/source/start.c69
-rw-r--r--desktop/unx/splash/unxsplash.cxx7
-rw-r--r--extensions/source/nsplugin/source/makefile.mk2
-rw-r--r--extensions/source/oooimprovecore/core.cxx2
-rw-r--r--extensions/source/plugin/unx/makefile.mk2
-rw-r--r--extensions/source/scanner/makefile.mk7
-rw-r--r--external/gcc3_specific/makefile.mk2
-rw-r--r--filter/source/svg/b2dellipse.cxx30
-rw-r--r--filter/source/svg/b2dellipse.hxx30
-rw-r--r--filter/source/svg/gentoken.pl27
-rw-r--r--filter/source/svg/gfxtypes.hxx30
-rw-r--r--filter/source/svg/parserfragments.cxx30
-rw-r--r--filter/source/svg/parserfragments.hxx30
-rw-r--r--filter/source/svg/spirit_supplements.hxx30
-rw-r--r--filter/source/svg/svgreader.cxx31
-rw-r--r--filter/source/svg/svgreader.hxx30
-rw-r--r--filter/source/svg/test/parsertest.cxx30
-rw-r--r--filter/source/svg/tokenmap.hxx30
-rw-r--r--filter/source/svg/units.cxx32
-rw-r--r--filter/source/svg/units.hxx32
-rw-r--r--fpicker/source/aqua/SalAquaConstants.h2
-rw-r--r--fpicker/source/unx/gnome/SalGtkFilePicker.cxx13
-rw-r--r--framework/uiconfig/startmodule/menubar/menubar.xml1
-rw-r--r--hyphen/hyphen-2.4.patch9
-rw-r--r--idlc/inc/idlc/idlc.hxx8
-rw-r--r--idlc/source/errorhandler.cxx15
-rw-r--r--idlc/source/idlc.cxx2
-rw-r--r--idlc/source/idlccompile.cxx3
-rw-r--r--idlc/source/parser.y4
-rw-r--r--idlc/source/scanner.ll22
-rw-r--r--instsetoo_native/util/openoffice.lst12
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx3
-rw-r--r--lpsolve/lp_solve_5.5-openbsd.patch20
-rw-r--r--lpsolve/makefile.mk4
-rwxr-xr-xodk/configure.pl4
-rwxr-xr-xodk/setsdkenv_unix2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Labels.xcu340
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu11
-rwxr-xr-xofficecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu5
-rw-r--r--oox/inc/oox/export/drawingml.hxx2
-rw-r--r--oox/source/export/chartexport.cxx12
-rw-r--r--packimages/pack/makefile.mk2
-rw-r--r--python/makefile.mk2
-rw-r--r--pyuno/source/module/makefile.mk2
-rw-r--r--sal/inc/osl/endian.h6
-rw-r--r--sal/inc/rtl/uuid.h2
-rw-r--r--sal/inc/sal/alloca.h2
-rw-r--r--sal/inc/sal/config.h3
-rw-r--r--sal/inc/sal/types.h4
-rw-r--r--sal/osl/unx/backtrace.c2
-rw-r--r--sal/osl/unx/backtrace.h7
-rw-r--r--sal/osl/unx/file.cxx3
-rw-r--r--sal/osl/unx/file_error_transl.cxx6
-rw-r--r--sal/osl/unx/file_volume.cxx27
-rw-r--r--sal/osl/unx/makefile.mk4
-rw-r--r--sal/osl/unx/nlsupport.c41
-rw-r--r--sal/osl/unx/process.c2
-rw-r--r--sal/osl/unx/socket.c3
-rw-r--r--sal/osl/unx/system.h29
-rw-r--r--sal/osl/unx/thread.c24
-rw-r--r--sal/osl/unx/time.c3
-rw-r--r--sal/rtl/source/alloc.c5
-rw-r--r--sal/rtl/source/macro.hxx2
-rw-r--r--sal/workben/makefile.mk3
-rw-r--r--salhelper/inc/salhelper/simplereferenceobject.hxx6
-rw-r--r--salhelper/source/msci.map12
-rw-r--r--salhelper/source/simplereferenceobject.cxx15
-rw-r--r--sc/qa/unit/ucalc.cxx7
-rw-r--r--sc/source/core/tool/docoptio.cxx5
-rw-r--r--sc/source/filter/excel/frmbase.cxx4
-rwxr-xr-xscp2/source/ooo/ure.scp16
-rwxr-xr-xsdext/source/presenter/makefile.mk2
-rw-r--r--set_soenv.in78
-rw-r--r--setup_native/source/mac/Info.plist.langpack2
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall.pngbin15942 -> 18881 bytes
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall.svg1765
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall_nologo.pngbin14323 -> 18881 bytes
-rw-r--r--setup_native/source/win32/nsis/brobanner.bmpbin8964 -> 18150 bytes
-rw-r--r--setup_native/source/win32/nsis/brobanner.svg667
-rw-r--r--setup_native/source/win32/nsis/brobitmap.bmpbin52100 -> 153558 bytes
-rw-r--r--setup_native/source/win32/nsis/brobitmap.svg1011
-rw-r--r--setup_native/source/win32/nsis/brosdkbanner.bmpbin25818 -> 18150 bytes
-rw-r--r--sfx2/inc/sfx2/sfxsids.hrc1
-rw-r--r--sfx2/sdi/appslots.sdi4
-rwxr-xr-xsfx2/sdi/sfx.sdi25
-rw-r--r--sfx2/source/appl/appserv.cxx25
-rw-r--r--shell/source/backends/gconfbe/gconfaccess.cxx2
-rw-r--r--shell/source/backends/kde4be/kde4access.cxx12
-rw-r--r--shell/source/unix/misc/makefile.mk2
-rwxr-xr-xsolenv/bin/deliver.pl2
-rw-r--r--solenv/bin/macosx-change-install-names.pl1
-rw-r--r--solenv/bin/make_installer.pl3
-rw-r--r--solenv/bin/mapgen.pl3
-rw-r--r--solenv/bin/modules/installer/download.pm2
-rw-r--r--solenv/bin/modules/installer/parameter.pm5
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm2
-rw-r--r--solenv/bin/modules/installer/systemactions.pm34
-rwxr-xr-xsolenv/bin/modules/osarch.pm3
-rwxr-xr-xsolenv/bin/ooinstall18
-rw-r--r--solenv/inc/installationtest.mk2
-rw-r--r--solenv/inc/libs.mk3
-rw-r--r--solenv/inc/unitools.mk2
-rw-r--r--solenv/inc/unx.mk4
-rw-r--r--solenv/inc/unxlng.mk12
-rw-r--r--solenv/inc/unxobsd.mk271
-rw-r--r--soltools/checkdll/makefile.mk3
-rw-r--r--starmath/source/view.cxx5
-rw-r--r--svx/inc/gallery.hxx2
-rw-r--r--svx/inc/galtheme.hrc2
-rw-r--r--svx/inc/globlmn_tmpl.hrc10
-rw-r--r--svx/source/fmcomp/trace.cxx2
-rw-r--r--svx/source/gallery2/galtheme.src4
-rw-r--r--svx/source/intro/ooo.src6
-rw-r--r--sw/inc/crsrsh.hxx2
-rw-r--r--sw/source/core/layout/virtoutp.cxx2
-rw-r--r--sw/source/core/text/inftxt.cxx2
-rw-r--r--sw/source/core/text/inftxt.hxx2
-rw-r--r--sw/source/core/text/txtfly.cxx2
-rw-r--r--sw/source/core/text/txtio.cxx5
-rw-r--r--sw/source/core/view/viewsh.cxx2
-rw-r--r--sw/source/filter/html/htmltabw.cxx2
-rw-r--r--sw/source/filter/ww8/docxexport.cxx30
-rw-r--r--sw/source/filter/ww8/docxexport.hxx6
-rw-r--r--sw/source/filter/ww8/rtfimportfilter.cxx4
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx5
-rw-r--r--sw/source/ui/dbui/dbinsdlg.cxx2
-rw-r--r--sw/source/ui/dbui/mmoutputpage.cxx2
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx2
-rw-r--r--sw/source/ui/docvw/srcedtw.cxx2
-rw-r--r--sysui/desktop/macosx/Info.plist4
-rw-r--r--sysui/desktop/macosx/makefile.mk7
-rw-r--r--tools/bootstrp/command.cxx2
-rw-r--r--tools/inc/tools/inetdef.hxx4
-rw-r--r--tools/inc/tools/prex.h2
-rw-r--r--tools/inc/tools/solar.h3
-rw-r--r--tools/qa/makefile.mk7
-rw-r--r--tools/qa/test_pathutils.cxx2
-rw-r--r--tools/source/fsys/unx.cxx5
-rw-r--r--tools/source/stream/strmunx.cxx6
-rw-r--r--vcl/unx/inc/dtint.hxx2
-rw-r--r--vcl/unx/inc/saldata.hxx3
-rw-r--r--vcl/unx/inc/salunx.h3
-rw-r--r--vcl/unx/kde/kdedata.cxx12
-rw-r--r--vcl/unx/kde4/KDEXLib.cxx14
-rw-r--r--vcl/unx/source/app/i18n_ic.cxx4
-rw-r--r--vcl/unx/source/app/saldisp.cxx4
-rw-r--r--vcl/unx/source/dtrans/X11_selection.cxx2
-rw-r--r--vcl/unx/source/printer/printerinfomanager.cxx4
-rw-r--r--vcl/util/makefile.mk3
222 files changed, 6162 insertions, 8141 deletions
diff --git a/automation/source/testtool/objtest.cxx b/automation/source/testtool/objtest.cxx
index 968af92ba880..8143700f7cd8 100644
--- a/automation/source/testtool/objtest.cxx
+++ b/automation/source/testtool/objtest.cxx
@@ -505,6 +505,10 @@ void TestToolObj::LoadIniFile() // Laden der IniEinstellungen, die d
abGP.Append( "23" ); // Linux ALPHA
#elif defined NETBSD && defined X86_64
abGP.Append( "24" ); // NetBSD/amd64
+#elif defined OPENBSD && defined X86
+ abGP.Append( "25" ); // OpenBSD/i386
+#elif defined OPENBSD && defined X86_64
+ abGP.Append( "26" ); // OpenBSD/amd64
#else
#error ("unknown platform. please request an ID for your platform on qa/dev")
#endif
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 8d2d94d7eafa..7a5defdb7dd1 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -73,7 +73,7 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
{
// Initialize GStreamer library
int argc = 1;
- char *arguments[] = { "openoffice.org" };
+ char *arguments[] = { "libreoffice.org" };
char** argv = arguments;
GError* pError = NULL;
diff --git a/basic/source/app/process.cxx b/basic/source/app/process.cxx
index 837820eb1234..7d6d9a0d8eca 100644
--- a/basic/source/app/process.cxx
+++ b/basic/source/app/process.cxx
@@ -179,7 +179,7 @@ void Process::SetImage( const String &aAppPath, const String &aAppParams, const
BOOL Process::Start()
{ // Start program
BOOL bSuccess=FALSE;
- if ( m_pProcess && !ImplIsRunning() )
+ if ( m_aProcessName.getLength() && !ImplIsRunning() )
{
bWasGPF = FALSE;
#ifdef WNT
diff --git a/basic/source/sbx/sbxscan.cxx b/basic/source/sbx/sbxscan.cxx
index 9f4c9a6bd495..5fe1704bcc38 100644
--- a/basic/source/sbx/sbxscan.cxx
+++ b/basic/source/sbx/sbxscan.cxx
@@ -405,7 +405,7 @@ void ImpCvtNum( double nNum, short nPrec, ::rtl::OUString& rRes, BOOL bCoreStrin
*p++ = '-';
}
double dMaxNumWithoutExp = (nPrec == 6) ? 1E6 : 1E14;
- myftoa( nNum, p, nPrec,( nNum &&( nNum < 1E-1 || nNum > dMaxNumWithoutExp ) ) ? 4:0,
+ myftoa( nNum, p, nPrec,( nNum &&( nNum < 1E-1 || nNum >= dMaxNumWithoutExp ) ) ? 4:0,
FALSE, TRUE, cDecimalSep );
// Trailing Zeroes weg:
for( p = cBuf; *p &&( *p != 'E' ); p++ ) {}
diff --git a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
index be5894a0b4b5..247b12aafb25 100644
--- a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
+++ b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
@@ -38,7 +38,8 @@
#include <hash_map>
/*See: http://people.redhat.com/drepper/selinux-mem.html*/
-#ifdef LINUX
+#if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \
+ || defined(NETBSD)
#define USE_DOUBLE_MMAP
#endif
diff --git a/bridges/prj/build.lst b/bridges/prj/build.lst
index 51c342af809d..34eda8ae63c2 100644
--- a/bridges/prj/build.lst
+++ b/bridges/prj/build.lst
@@ -9,9 +9,7 @@ br bridges\source\cpp_uno\mingw_intel nmake - w br_gcc3i br_cppuno_shared br_uno
br bridges\source\cpp_uno\msvc_win32_intel nmake - w br_msci br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_linux_intel nmake - u br_gcc3li br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_os2_intel nmake - p br_gcc3os br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_freebsd_intel nmake - u br_gcc3fi br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_linux_x86-64 nmake - u br_gcc3lx br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_freebsd_x86-64 nmake - u br_gcc3fx br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_linux_powerpc nmake - u br_gcc3lp br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_aix_powerpc nmake - u br_gcc3ap br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_linux_powerpc64 nmake - u br_gcc3lp_64 br_cppuno_shared br_unotypes br_inc NULL
@@ -31,8 +29,6 @@ br bridges\source\cpp_uno\cc5_solaris_sparc64 nmake - u br_cc5sols64 br_unotype
br bridges\source\cpp_uno\cc50_solaris_intel nmake - u br_cc50soli br_unotypes br_cppuno_shared br_inc NULL
br bridges\source\cpp_uno\gcc3_solaris_sparc nmake - u br_gcc3sogs br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_solaris_intel nmake - u br_gcc3sogi br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_netbsd_intel nmake - u br_gccni br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_netbsd_x86-64 nmake - u br_gcc3nx br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\shared nmake - all br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\jni_uno nmake - all br_jni_uno br_unotypes br_inc NULL
br bridges\source\jni_uno\java\com\sun\star\bridges\jni_uno nmake - all br_jni_uno_java br_unotypes br_inc NULL
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s b/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s
deleted file mode 100644
index f345e3a764ac..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/call.s
+++ /dev/null
@@ -1,268 +0,0 @@
- .text
-
-.globl privateSnippetExecutorGeneral
- .type privateSnippetExecutorGeneral,@function
-privateSnippetExecutorGeneral:
-.LFBg:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIg0:
- movl %esp,%ebp
-.LCFIg1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 32bit returnValue
- leave
- ret
-.LFEg:
- .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
-
-.globl privateSnippetExecutorVoid
- .type privateSnippetExecutorVoid,@function
-privateSnippetExecutorVoid:
-.LFBv:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIv0:
- movl %esp,%ebp
-.LCFIv1:
- pushl $0 # 32bit null pointer (returnValue not used)
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- leave
- ret
-.LFEv:
- .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
-
-.globl privateSnippetExecutorHyper
- .type privateSnippetExecutorHyper,@function
-privateSnippetExecutorHyper:
-.LFBh:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIh0:
- movl %esp,%ebp
-.LCFIh1:
- subl $0x8,%esp # 64bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 64bit returnValue, lower half
- movl 20(%esp),%edx # 64bit returnValue, upper half
- leave
- ret
-.LFEh:
- .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
-
-.globl privateSnippetExecutorFloat
- .type privateSnippetExecutorFloat,@function
-privateSnippetExecutorFloat:
-.LFBf:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIf0:
- movl %esp,%ebp
-.LCFIf1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- flds 16(%esp) # 32bit returnValue
- leave
- ret
-.LFEf:
- .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
-
-.globl privateSnippetExecutorDouble
- .type privateSnippetExecutorDouble,@function
-privateSnippetExecutorDouble:
-.LFBd:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFId0:
- movl %esp,%ebp
-.LCFId1:
- subl $0x8,%esp # 64bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- fldl 16(%esp) # 64bit returnValue
- leave
- ret
-.LFEd:
- .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
-
-.globl privateSnippetExecutorClass
- .type privateSnippetExecutorClass,@function
-privateSnippetExecutorClass:
-.LFBc:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIc0:
- movl %esp,%ebp
-.LCFIc1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 32bit returnValue
- leave
- ret $4
-.LFEc:
- .size privateSnippetExecutorClass,.-privateSnippetExecutorClass
-
- .section .eh_frame,"a",@progbits
-.Lframe1:
- .long .LECIE1-.LSCIE1 # length
-.LSCIE1:
- .long 0 # CIE_ID
- .byte 1 # version
- .string "zR" # augmentation
- .uleb128 1 # code_alignment_factor
- .sleb128 -4 # data_alignment_factor
- .byte 8 # return_address_register
- .uleb128 1 # augmentation size 1:
- .byte 0x1B # FDE Encoding (pcrel sdata4)
- # initial_instructions:
- .byte 0x0C # DW_CFA_def_cfa %esp, 4
- .uleb128 4
- .uleb128 4
- .byte 0x88 # DW_CFA_offset ret, 1
- .uleb128 1
- .align 4
-.LECIE1:
-.LSFDEg:
- .long .LEFDEg-.LASFDEg # length
-.LASFDEg:
- .long .LASFDEg-.Lframe1 # CIE_pointer
- .long .LFBg-. # initial_location
- .long .LFEg-.LFBg # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg0-.LFBg
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg1-.LCFIg0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEg:
-.LSFDEv:
- .long .LEFDEv-.LASFDEv # length
-.LASFDEv:
- .long .LASFDEv-.Lframe1 # CIE_pointer
- .long .LFBv-. # initial_location
- .long .LFEv-.LFBv # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv0-.LFBv
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv1-.LCFIv0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEv:
-.LSFDEh:
- .long .LEFDEh-.LASFDEh # length
-.LASFDEh:
- .long .LASFDEh-.Lframe1 # CIE_pointer
- .long .LFBh-. # initial_location
- .long .LFEh-.LFBh # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh0-.LFBh
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh1-.LCFIh0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEh:
-.LSFDEf:
- .long .LEFDEf-.LASFDEf # length
-.LASFDEf:
- .long .LASFDEf-.Lframe1 # CIE_pointer
- .long .LFBf-. # initial_location
- .long .LFEf-.LFBf # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf0-.LFBf
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf1-.LCFIf0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEf:
-.LSFDEd:
- .long .LEFDEd-.LASFDEd # length
-.LASFDEd:
- .long .LASFDEd-.Lframe1 # CIE_pointer
- .long .LFBd-. # initial_location
- .long .LFEd-.LFBd # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId0-.LFBd
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId1-.LCFId0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEd:
-.LSFDEc:
- .long .LEFDEc-.LASFDEc # length
-.LASFDEc:
- .long .LASFDEc-.Lframe1 # CIE_pointer
- .long .LFBc-. # initial_location
- .long .LFEc-.LFBc # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc0-.LFBc
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc1-.LCFIc0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEc:
- .section .note.GNU-stack,"",@progbits
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx
deleted file mode 100644
index afb3d1434db4..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx
+++ /dev/null
@@ -1,493 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <typelib/typedescription.hxx>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/vtablefactory.hxx"
-
-#include "share.hxx"
-
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-//==================================================================================================
-void cpp2uno_call(
- bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
- const typelib_TypeDescription * pMemberTypeDescr,
- typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void ** pCallStack,
- void * pReturnValue )
-{
- // pCallStack: ret, [return ptr], this, params
- char * pCppStack = (char *)(pCallStack +1);
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- if (pReturnTypeRef)
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-
- void * pUnoReturn = 0;
- void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pUnoReturn = pReturnValue; // direct way for simple types
- }
- else // complex return via ptr (pCppReturn)
- {
- pCppReturn = *(void **)pCppStack;
- pCppStack += sizeof(void *);
-
- pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pCppReturn); // direct way
- }
- }
- // pop this
- pCppStack += sizeof( void* );
-
- // stack space
- OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
- // parameters
- void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
- void ** pCppArgs = pUnoArgs + nParams;
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- // value
- {
- pCppArgs[nPos] = pCppStack;
- pUnoArgs[nPos] = pCppStack;
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- pCppArgs[nPos] = *(void **)pCppStack;
-
- if (! rParam.bIn) // is pure out
- {
- // uno out is unconstructed mem!
- pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
- pTempIndizes[nTempIndizes] = nPos;
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- *(void **)pCppStack, pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pUnoArgs[nPos] = *(void **)pCppStack;
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- // ExceptionHolder
- uno_Any aUnoExc; // Any will be constructed by callee
- uno_Any * pUnoExc = &aUnoExc;
-
- // invoke uno dispatch call
- (*pThis->getUnoI()->pDispatcher)(
- pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
-
- // in case an exception occured...
- if (pUnoExc)
- {
- // destruct temporary in/inout params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-
- if (pParams[nIndex].bIn) // is in/inout => was constructed
- uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
-
- CPPU_CURRENT_NAMESPACE::raiseException(
- &aUnoExc, pThis->getBridge()->getUno2Cpp() );
- // has to destruct the any
- }
- else // else no exception occured...
- {
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bOut) // inout/out
- {
- // convert and assign
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
- uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- }
- // destroy temp uno param
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return
- if (pCppReturn) // has complex return
- {
- if (pUnoReturn != pCppReturn) // needs reconversion
- {
- uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- // destroy temp uno return
- uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
- }
- // complex return ptr is set to eax
- *static_cast< void ** >(pReturnValue) = pCppReturn;
- }
- if (pReturnTypeDescr)
- {
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
- }
-}
-
-
-//==================================================================================================
-extern "C" void cpp_vtable_call(
- int nFunctionIndex, int nVtableOffset, void** pCallStack,
- void * pReturnValue )
-{
- OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" );
-
- // pCallStack: ret adr, [ret *], this, params
- void * pThis;
- if( nFunctionIndex & 0x80000000 )
- {
- nFunctionIndex &= 0x7fffffff;
- pThis = pCallStack[2];
- }
- else
- {
- pThis = pCallStack[1];
- }
- pThis = static_cast< char * >(pThis) - nVtableOffset;
- bridges::cpp_uno::shared::CppInterfaceProxy * pCppI
- = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy(
- pThis);
-
- typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
-
- OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
- if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
- {
- throw RuntimeException(
- rtl::OUString::createFromAscii("illegal vtable index!"),
- (XInterface *)pThis );
- }
-
- // determine called method
- sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
-
- TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
-
- switch (aMemberDescr.get()->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex)
- {
- // is GET method
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef,
- 0, 0, // no params
- pCallStack, pReturnValue );
- }
- else
- {
- // is SET method
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- 0, // indicates void return
- 1, &aParam,
- pCallStack, pReturnValue );
- }
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // is METHOD
- switch (nFunctionIndex)
- {
- case 1: // acquire()
- pCppI->acquireProxy(); // non virtual call!
- break;
- case 2: // release()
- pCppI->releaseProxy(); // non virtual call!
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pCallStack[3] )->getTypeLibType() );
- if (pTD)
- {
- XInterface * pInterface = 0;
- (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)(
- pCppI->getBridge()->getCppEnv(),
- (void **)&pInterface, pCppI->getOid().pData,
- (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pCallStack[1] ),
- &pInterface, pTD, cpp_acquire );
- pInterface->release();
- TYPELIB_DANGER_RELEASE( pTD );
- *static_cast< void ** >(pReturnValue) = pCallStack[1];
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams,
- pCallStack, pReturnValue );
- }
- break;
- }
- default:
- {
- throw RuntimeException(
- rtl::OUString::createFromAscii("no member description found!"),
- (XInterface *)pThis );
- }
- }
-}
-
-//==================================================================================================
-extern "C" void privateSnippetExecutorGeneral();
-extern "C" void privateSnippetExecutorVoid();
-extern "C" void privateSnippetExecutorHyper();
-extern "C" void privateSnippetExecutorFloat();
-extern "C" void privateSnippetExecutorDouble();
-extern "C" void privateSnippetExecutorClass();
-extern "C" typedef void (*PrivateSnippetExecutor)();
-
-int const codeSnippetSize = 16;
-
-unsigned char * codeSnippet(
- unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
- typelib_TypeClass returnTypeClass)
-{
- if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) {
- functionIndex |= 0x80000000;
- }
- PrivateSnippetExecutor exec;
- switch (returnTypeClass) {
- case typelib_TypeClass_VOID:
- exec = privateSnippetExecutorVoid;
- break;
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- exec = privateSnippetExecutorHyper;
- break;
- case typelib_TypeClass_FLOAT:
- exec = privateSnippetExecutorFloat;
- break;
- case typelib_TypeClass_DOUBLE:
- exec = privateSnippetExecutorDouble;
- break;
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_INTERFACE:
- exec = privateSnippetExecutorClass;
- break;
- default:
- exec = privateSnippetExecutorGeneral;
- break;
- }
- unsigned char * p = code;
- OSL_ASSERT(sizeof (sal_Int32) == 4);
- // mov function_index, %eax:
- *p++ = 0xB8;
- *reinterpret_cast< sal_Int32 * >(p) = functionIndex;
- p += sizeof (sal_Int32);
- // mov vtable_offset, %edx:
- *p++ = 0xBA;
- *reinterpret_cast< sal_Int32 * >(p) = vtableOffset;
- p += sizeof (sal_Int32);
- // jmp privateSnippetExecutor:
- *p++ = 0xE9;
- *reinterpret_cast< sal_Int32 * >(p)
- = ((unsigned char *) exec) - p - sizeof (sal_Int32);
- p += sizeof (sal_Int32);
- OSL_ASSERT(p - code <= codeSnippetSize);
- return code + codeSnippetSize;
-}
-
-}
-
-struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
-{
- return static_cast< Slot * >(block) + 2;
-}
-
-sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
- sal_Int32 slotCount)
-{
- return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
-}
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::initializeBlock(
- void * block, sal_Int32 slotCount)
-{
- Slot * slots = mapBlockToVtable(block);
- slots[-2].fn = 0;
- slots[-1].fn = 0;
- return slots + slotCount;
-}
-
-unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
- typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
- sal_Int32 functionCount, sal_Int32 vtableOffset)
-{
- (*slots) -= functionCount;
- Slot * s = *slots;
- for (sal_Int32 i = 0; i < type->nMembers; ++i) {
- typelib_TypeDescription * member = 0;
- TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
- OSL_ASSERT(member != 0);
- switch (member->eTypeClass) {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- // Getter:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >(
- member)->pAttributeTypeRef->eTypeClass);
- // Setter:
- if (!reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription * >(
- member)->bReadOnly)
- {
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- typelib_TypeClass_VOID);
- }
- break;
-
- case typelib_TypeClass_INTERFACE_METHOD:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceMethodTypeDescription * >(
- member)->pReturnTypeRef->eTypeClass);
- break;
-
- default:
- OSL_ASSERT(false);
- break;
- }
- TYPELIB_DANGER_RELEASE(member);
- }
- return code;
-}
-
-void bridges::cpp_uno::shared::VtableFactory::flushCode(
- unsigned char const *, unsigned char const *)
-{}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx
deleted file mode 100644
index 05db0ced9cf3..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx
+++ /dev/null
@@ -1,340 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <dlfcn.h>
-#include <cxxabi.h>
-#include <hash_map>
-#include <sys/param.h>
-
-#include <rtl/strbuf.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <osl/diagnose.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <typelib/typedescription.hxx>
-#include <uno/any2.h>
-
-#include "share.hxx"
-
-
-using namespace ::std;
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::__cxxabiv1;
-
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * )
-{
-}
-
-//==================================================================================================
-static OUString toUNOname( char const * p ) SAL_THROW( () )
-{
-#if OSL_DEBUG_LEVEL > 1
- char const * start = p;
-#endif
-
- // example: N3com3sun4star4lang24IllegalArgumentExceptionE
-
- OUStringBuffer buf( 64 );
- OSL_ASSERT( 'N' == *p );
- ++p; // skip N
-
- while ('E' != *p)
- {
- // read chars count
- long n = (*p++ - '0');
- while ('0' <= *p && '9' >= *p)
- {
- n *= 10;
- n += (*p++ - '0');
- }
- buf.appendAscii( p, n );
- p += n;
- if ('E' != *p)
- buf.append( (sal_Unicode)'.' );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- OUString ret( buf.makeStringAndClear() );
- OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
- return ret;
-#else
- return buf.makeStringAndClear();
-#endif
-}
-
-//==================================================================================================
-class RTTI
-{
- typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map;
-
- Mutex m_mutex;
- t_rtti_map m_rttis;
- t_rtti_map m_generatedRttis;
-
- void * m_hApp;
-
-public:
- RTTI() SAL_THROW( () );
- ~RTTI() SAL_THROW( () );
-
- type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () );
-};
-//__________________________________________________________________________________________________
-RTTI::RTTI() SAL_THROW( () )
-#if __FreeBSD_version < 602103
- : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
-#else
- : m_hApp( dlopen( 0, RTLD_LAZY ) )
-#endif
-{
-}
-//__________________________________________________________________________________________________
-RTTI::~RTTI() SAL_THROW( () )
-{
- dlclose( m_hApp );
-}
-
-//__________________________________________________________________________________________________
-type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () )
-{
- type_info * rtti;
-
- OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
-
- MutexGuard guard( m_mutex );
- t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) );
- if (iRttiFind == m_rttis.end())
- {
- // RTTI symbol
- OStringBuffer buf( 64 );
- buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
- sal_Int32 index = 0;
- do
- {
- OUString token( unoName.getToken( 0, '.', index ) );
- buf.append( token.getLength() );
- OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
- buf.append( c_token );
- }
- while (index >= 0);
- buf.append( 'E' );
-
- OString symName( buf.makeStringAndClear() );
-#if __FreeBSD_version < 602103 /* #i22253# */
- rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
-#else
- rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
-#endif
-
- if (rtti)
- {
- pair< t_rtti_map::iterator, bool > insertion(
- m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" );
- }
- else
- {
- // try to lookup the symbol in the generated rtti map
- t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
- if (iFind == m_generatedRttis.end())
- {
- // we must generate it !
- // symbol and rtti-name is nearly identical,
- // the symbol is prefixed with _ZTI
- char const * rttiName = symName.getStr() +4;
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr,"generated rtti for %s\n", rttiName );
-#endif
- if (pTypeDescr->pBaseTypeDescription)
- {
- // ensure availability of base
- type_info * base_rtti = getRTTI(
- (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
- rtti = new __si_class_type_info(
- strdup( rttiName ), (__class_type_info *)base_rtti );
- }
- else
- {
- // this class has no base class
- rtti = new __class_type_info( strdup( rttiName ) );
- }
-
- pair< t_rtti_map::iterator, bool > insertion(
- m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" );
- }
- else // taking already generated rtti
- {
- rtti = iFind->second;
- }
- }
- }
- else
- {
- rtti = iRttiFind->second;
- }
-
- return rtti;
-}
-
-//--------------------------------------------------------------------------------------------------
-static void deleteException( void * pExc )
-{
- __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
- typelib_TypeDescription * pTD = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
- ::typelib_typedescription_getByName( &pTD, unoName.pData );
- OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" );
- if (pTD)
- {
- ::uno_destructData( pExc, pTD, cpp_release );
- ::typelib_typedescription_release( pTD );
- }
-}
-
-//==================================================================================================
-void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
-{
-#if OSL_DEBUG_LEVEL > 1
- OString cstr(
- OUStringToOString(
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() );
-#endif
- void * pCppExc;
- type_info * rtti;
-
- {
- // construct cpp exception object
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
- OSL_ASSERT( pTypeDescr );
- if (! pTypeDescr)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
-
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
- ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
-
- // destruct uno exception
- ::uno_any_destruct( pUnoExc, 0 );
- // avoiding locked counts
- static RTTI * s_rtti = 0;
- if (! s_rtti)
- {
- MutexGuard guard( Mutex::getGlobalMutex() );
- if (! s_rtti)
- {
-#ifdef LEAK_STATIC_DATA
- s_rtti = new RTTI();
-#else
- static RTTI rtti_data;
- s_rtti = &rtti_data;
-#endif
- }
- }
- rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- OSL_ENSURE( rtti, "### no rtti for throwing exception!" );
- if (! rtti)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
- }
-
- __cxa_throw( pCppExc, rtti, deleteException );
-}
-
-//==================================================================================================
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
-{
- if (! header)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ),
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- return;
- }
-
- typelib_TypeDescription * pExcTypeDescr = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
-#if OSL_DEBUG_LEVEL > 1
- OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() );
-#endif
- typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
- if (0 == pExcTypeDescr)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName,
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- }
- else
- {
- // construct uno exception any
- uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
- typelib_typedescription_release( pExcTypeDescr );
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk
deleted file mode 100644
index 87ff690dd653..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk
+++ /dev/null
@@ -1,81 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=bridges
-TARGET=gcc3_uno
-LIBTARGET=no
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDIgcc3"
-
-.IF "$(cppu_no_leak)" == ""
-CFLAGS += -DLEAK_STATIC_DATA
-.ENDIF
-
-# In case someone enabled the non-standard -fomit-frame-pointer which does not
-# work with the .cxx sources in this directory:
-CFLAGSCXX += -fno-omit-frame-pointer
-
-CFLAGSNOOPT=-O0
-
-SLOFILES= \
- $(SLO)$/except.obj \
- $(SLO)$/cpp2uno.obj \
- $(SLO)$/uno2cpp.obj \
- $(SLO)$/call.obj
-
-SHL1TARGET= $(TARGET)
-
-SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-SHL1IMPLIB=i$(TARGET)
-SHL1VERSIONMAP=..$/..$/bridge_exports.map
-SHL1RPATH=URELIB
-
-SHL1OBJS = $(SLOFILES)
-SHL1LIBS = $(SLB)$/cpp_uno_shared.lib
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(SALLIB)
-
-.ENDIF
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(SLO)$/%.obj: %.s
- $(CC) -c -o $(SLO)$/$(@:b).o $<
- touch $@
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx
deleted file mode 100644
index da2367ad172b..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/share.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "uno/mapping.h"
-
-#include <typeinfo>
-#include <exception>
-#include <cstddef>
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * );
-
-// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
-
-struct _Unwind_Exception
-{
- unsigned exception_class __attribute__((__mode__(__DI__)));
- void * exception_cleanup;
- unsigned private_1 __attribute__((__mode__(__word__)));
- unsigned private_2 __attribute__((__mode__(__word__)));
-} __attribute__((__aligned__));
-
-struct __cxa_exception
-{
- ::std::type_info *exceptionType;
- void (*exceptionDestructor)(void *);
-
- ::std::unexpected_handler unexpectedHandler;
- ::std::terminate_handler terminateHandler;
-
- __cxa_exception *nextException;
-
- int handlerCount;
-
- int handlerSwitchValue;
- const unsigned char *actionRecord;
- const unsigned char *languageSpecificData;
- void *catchTemp;
- void *adjustedPtr;
-
- _Unwind_Exception unwindHeader;
-};
-
-extern "C" void *__cxa_allocate_exception(
- std::size_t thrown_size ) throw();
-extern "C" void __cxa_throw (
- void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
-
-struct __cxa_eh_globals
-{
- __cxa_exception *caughtExceptions;
- unsigned int uncaughtExceptions;
-};
-extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
-
-// -----
-
-//==================================================================================================
-void raiseException(
- uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-//==================================================================================================
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx
deleted file mode 100644
index f468ffc33715..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx
+++ /dev/null
@@ -1,447 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdlib.h>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/vtables.hxx"
-
-#include "share.hxx"
-
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-//==================================================================================================
-// The call instruction within the asm section of callVirtualMethod may throw
-// exceptions. So that the compiler handles this correctly, it is important
-// that (a) callVirtualMethod might call dummy_can_throw_anything (although this
-// never happens at runtime), which in turn can throw exceptions, and (b)
-// callVirtualMethod is not inlined at its call site (so that any exceptions are
-// caught which are thrown from the instruction calling callVirtualMethod):
-void callVirtualMethod(
- void * pAdjustedThisPtr,
- sal_Int32 nVtableIndex,
- void * pRegisterReturn,
- typelib_TypeClass eReturnType,
- sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs ) __attribute__((noinline));
-
-void callVirtualMethod(
- void * pAdjustedThisPtr,
- sal_Int32 nVtableIndex,
- void * pRegisterReturn,
- typelib_TypeClass eReturnType,
- sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs )
-{
- // parameter list is mixed list of * and values
- // reference parameters are pointers
-
- OSL_ENSURE( pStackLongs && pAdjustedThisPtr, "### null ptr!" );
- OSL_ENSURE( (sizeof(void *) == 4) && (sizeof(sal_Int32) == 4), "### unexpected size of int!" );
- OSL_ENSURE( nStackLongs && pStackLongs, "### no stack in callVirtualMethod !" );
-
- // never called
- if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
-
- volatile long edx = 0, eax = 0; // for register returns
- void * stackptr;
- asm volatile (
- "mov %%esp, %6\n\t"
- // copy values
- "mov %0, %%eax\n\t"
- "mov %%eax, %%edx\n\t"
- "dec %%edx\n\t"
- "shl $2, %%edx\n\t"
- "add %1, %%edx\n"
- "Lcopy:\n\t"
- "pushl 0(%%edx)\n\t"
- "sub $4, %%edx\n\t"
- "dec %%eax\n\t"
- "jne Lcopy\n\t"
- // do the actual call
- "mov %2, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
- "shl $2, %%eax\n\t"
- "add %%eax, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "call *%%edx\n\t"
- // save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
- // cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
- : "eax", "edx" );
- switch( eReturnType )
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- ((long*)pRegisterReturn)[1] = edx;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_ENUM:
- ((long*)pRegisterReturn)[0] = eax;
- break;
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- *(unsigned short*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- *(unsigned char*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_FLOAT:
- asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) );
- break;
- case typelib_TypeClass_DOUBLE:
- asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) );
- break;
- default:
- break;
- }
-}
-
-//==================================================================================================
-static void cpp_call(
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
- bridges::cpp_uno::shared::VtableSlot aVtableSlot,
- typelib_TypeDescriptionReference * pReturnTypeRef,
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
-{
- // max space for: [complex ret ptr], values|ptr ...
- char * pCppStack =
- (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) );
- char * pCppStackStart = pCppStack;
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
- OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
-
- void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pCppReturn = pUnoReturn; // direct way for simple types
- }
- else
- {
- // complex return via ptr
- pCppReturn = *(void **)pCppStack
- = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pUnoReturn); // direct way
- pCppStack += sizeof(void *);
- }
- }
- // push this
- void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI())
- + aVtableSlot.offset;
- *(void**)pCppStack = pAdjustedThisPtr;
- pCppStack += sizeof( void* );
-
- // stack space
- OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
- // args
- void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- {
- uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- if (! rParam.bIn) // is pure out
- {
- // cpp out is constructed mem, uno out is not!
- uno_constructData(
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pParamTypeDescr );
- pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData(
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos];
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- try
- {
- OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" );
- callVirtualMethod(
- pAdjustedThisPtr, aVtableSlot.index,
- pCppReturn, pReturnTypeDescr->eTypeClass,
- (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) );
- // NO exception occured...
- *ppUnoExc = 0;
-
- // reconvert temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bIn)
- {
- if (pParams[nIndex].bOut) // inout
- {
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- }
- else // pure out
- {
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return value
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
- uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
- }
- }
- catch (...)
- {
- // fill uno exception
- fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
-
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- // return type
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
-}
-
-}
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-void unoInterfaceProxyDispatch(
- uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
- void * pReturn, void * pArgs[], uno_Any ** ppException )
-{
- // is my surrogate
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
- = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
-
- switch (pMemberDescr->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription const * >(
- pMemberDescr)));
- if (pReturn)
- {
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
- 0, 0, // no params
- pReturn, pArgs, ppException );
- }
- else
- {
- // is SET
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- typelib_TypeDescriptionReference * pReturnTypeRef = 0;
- OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") );
- typelib_typedescriptionreference_new(
- &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
-
- // dependent dispatch
- aVtableSlot.index += 1; // get, then set method
- cpp_call(
- pThis, aVtableSlot,
- pReturnTypeRef,
- 1, &aParam,
- pReturn, pArgs, ppException );
-
- typelib_typedescriptionreference_release( pReturnTypeRef );
- }
-
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceMethodTypeDescription const * >(
- pMemberDescr)));
- switch (aVtableSlot.index)
- {
- // standard calls
- case 1: // acquire uno interface
- (*pUnoI->acquire)( pUnoI );
- *ppException = 0;
- break;
- case 2: // release uno interface
- (*pUnoI->release)( pUnoI );
- *ppException = 0;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
- if (pTD)
- {
- uno_Interface * pInterface = 0;
- (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)(
- pThis->pBridge->getUnoEnv(),
- (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pReturn ),
- &pInterface, pTD, 0 );
- (*pInterface->release)( pInterface );
- TYPELIB_DANGER_RELEASE( pTD );
- *ppException = 0;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
- pReturn, pArgs, ppException );
- }
- break;
- }
- default:
- {
- ::com::sun::star::uno::RuntimeException aExc(
- OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ),
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
-
- Type const & rExcType = ::getCppuType( &aExc );
- // binary identical null reference
- ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
- }
- }
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx
deleted file mode 100644
index 77e2edebcc8b..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.cxx
+++ /dev/null
@@ -1,357 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-//
-// The code in this file is a modification of src/x86/ffi64.c from libffi
-// (http://sources.redhat.com/libffi/) which is under the following license:
-
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
-
- x86-64 Foreign Function Interface
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- ``Software''), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- ----------------------------------------------------------------------- */
-
-#include <abi.hxx>
-
-#include <rtl/ustring.hxx>
-
-using namespace x86_64;
-
-typedef struct
-{
- /* Registers for argument passing. */
- long gpr[MAX_GPR_REGS];
- __int128_t sse[MAX_SSE_REGS];
-
- /* Stack space for arguments. */
- char argspace[0];
-} stackLayout;
-
-/* Register class used for passing given 64bit part of the argument.
- These represent classes as documented by the PS ABI, with the exception
- of SSESF, SSEDF classes, that are basically SSE class, just gcc will
- use SF or DFmode move instead of DImode to avoid reformating penalties.
-
- Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
- whenever possible (upper half does contain padding).
- */
-enum x86_64_reg_class
-{
- X86_64_NO_CLASS,
- X86_64_INTEGER_CLASS,
- X86_64_INTEGERSI_CLASS,
- X86_64_SSE_CLASS,
- X86_64_SSESF_CLASS,
- X86_64_SSEDF_CLASS,
- X86_64_SSEUP_CLASS,
- X86_64_X87_CLASS,
- X86_64_X87UP_CLASS,
- X86_64_MEMORY_CLASS
-};
-
-#define MAX_CLASSES 4
-
-#define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1)
-
-/* x86-64 register passing implementation. See x86-64 ABI for details. Goal
- of this code is to classify each 8bytes of incoming argument by the register
- class and assign registers accordingly. */
-
-/* Return the union class of CLASS1 and CLASS2.
- See the x86-64 PS ABI for details. */
-
-static enum x86_64_reg_class
-merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
-{
- /* Rule #1: If both classes are equal, this is the resulting class. */
- if (class1 == class2)
- return class1;
-
- /* Rule #2: If one of the classes is NO_CLASS, the resulting class is
- the other class. */
- if (class1 == X86_64_NO_CLASS)
- return class2;
- if (class2 == X86_64_NO_CLASS)
- return class1;
-
- /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */
- if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */
- if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS)
- || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS))
- return X86_64_INTEGERSI_CLASS;
- if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS
- || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS)
- return X86_64_INTEGER_CLASS;
-
- /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */
- if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS
- || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #6: Otherwise class SSE is used. */
- return X86_64_SSE_CLASS;
-}
-
-/* Classify the argument of type TYPE and mode MODE.
- CLASSES will be filled by the register class used to pass each word
- of the operand. The number of words is returned. In case the parameter
- should be passed in memory, 0 is returned. As a special case for zero
- sized containers, classes[0] will be NO_CLASS and 1 is returned.
-
- See the x86-64 PS ABI for details.
-*/
-static int
-classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_class classes[], int &rByteOffset )
-{
- /* First, align to the right place. */
- rByteOffset = ALIGN( rByteOffset, pTypeRef->pType->nAlignment );
-
- switch ( pTypeRef->eTypeClass )
- {
- case typelib_TypeClass_VOID:
- classes[0] = X86_64_NO_CLASS;
- return 1;
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_ENUM:
- if ( ( rByteOffset % 8 + pTypeRef->pType->nSize ) <= 4 )
- classes[0] = X86_64_INTEGERSI_CLASS;
- else
- classes[0] = X86_64_INTEGER_CLASS;
- return 1;
- case typelib_TypeClass_FLOAT:
- if ( ( rByteOffset % 8 ) == 0 )
- classes[0] = X86_64_SSESF_CLASS;
- else
- classes[0] = X86_64_SSE_CLASS;
- return 1;
- case typelib_TypeClass_DOUBLE:
- classes[0] = X86_64_SSEDF_CLASS;
- return 1;
- /*case LONGDOUBLE:
- classes[0] = X86_64_X87_CLASS;
- classes[1] = X86_64_X87UP_CLASS;
- return 2;*/
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_TYPEDEF:
- case typelib_TypeClass_UNION:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_ARRAY:
- case typelib_TypeClass_INTERFACE:
- return 0;
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_EXCEPTION:
- {
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef );
-
- const int UNITS_PER_WORD = 8;
- int words = ( pTypeDescr->nSize + UNITS_PER_WORD - 1 ) / UNITS_PER_WORD;
- enum x86_64_reg_class subclasses[MAX_CLASSES];
-
- /* If the struct is larger than 16 bytes, pass it on the stack. */
- if ( pTypeDescr->nSize > 16 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < words; i++ )
- classes[i] = X86_64_NO_CLASS;
-
- const typelib_CompoundTypeDescription *pStruct = reinterpret_cast<const typelib_CompoundTypeDescription*>( pTypeDescr );
-
- /* Merge the fields of structure. */
- for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember )
- {
- typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ];
-
- int num = classify_argument( pTypeInStruct, subclasses, rByteOffset );
-
- if ( num == 0 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < num; i++ )
- {
- int pos = rByteOffset / 8;
- classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] );
- }
-
- if ( pTypeInStruct->eTypeClass != typelib_TypeClass_STRUCT )
- rByteOffset = pStruct->pMemberOffsets[ nMember ];
- }
-
- TYPELIB_DANGER_RELEASE( pTypeDescr );
-
- /* Final merger cleanup. */
- for ( int i = 0; i < words; i++ )
- {
- /* If one class is MEMORY, everything should be passed in
- memory. */
- if ( classes[i] == X86_64_MEMORY_CLASS )
- return 0;
-
- /* The X86_64_SSEUP_CLASS should be always preceded by
- X86_64_SSE_CLASS. */
- if ( classes[i] == X86_64_SSEUP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_SSE_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
-
- /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */
- if ( classes[i] == X86_64_X87UP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_X87_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
- }
- return words;
- }
-
- default:
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "Unhandled case: pType->eTypeClass == %d\n", pTypeRef->eTypeClass );
-#endif
- OSL_ASSERT(0);
- }
- return 0; /* Never reached. */
-}
-
-/* Examine the argument and return set number of register required in each
- class. Return 0 iff parameter should be passed in memory. */
-bool x86_64::examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE )
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int offset = 0;
- int n;
-
- n = classify_argument( pTypeRef, classes, offset );
-
- if ( n == 0 )
- return false;
-
- nUsedGPR = 0;
- nUsedSSE = 0;
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- nUsedGPR++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- nUsedSSE++;
- break;
- case X86_64_NO_CLASS:
- case X86_64_SSEUP_CLASS:
- break;
- case X86_64_X87_CLASS:
- case X86_64_X87UP_CLASS:
- if ( !bInReturn )
- return false;
- break;
- default:
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "Unhandled case: classes[n] == %d\n", classes[n] );
-#endif
- OSL_ASSERT(0);
- }
- return true;
-}
-
-bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef )
-{
- int g, s;
-
- return examine_argument( pTypeRef, true, g, s ) == 0;
-}
-
-void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct )
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int offset = 0;
- int n;
-
- n = classify_argument( pTypeRef, classes, offset );
-
- sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct );
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pGPR++ );
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pSSE++ );
- break;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx
deleted file mode 100644
index 6d40eafb1c0c..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/abi.hxx
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-#define _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-
-#include <typelib/typedescription.hxx>
-
-namespace x86_64
-{
-
-/* 6 general purpose registers are used for parameter passing */
-const sal_uInt32 MAX_GPR_REGS = 6;
-
-/* 8 SSE registers are used for parameter passing */
-const sal_uInt32 MAX_SSE_REGS = 8;
-
-/* Count number of required registers.
-
- Examine the argument and return set number of register required in each
- class.
-
- Return false iff parameter should be passed in memory.
-*/
-bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE );
-
-/** Does function that returns this type use a hidden parameter, or registers?
-
- The value can be returned either in a hidden 1st parameter (which is a
- pointer to a structure allocated by the caller), or in registers (rax, rdx
- for the integers, xmm0, xmm1 for the floating point numbers).
-*/
-bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef );
-
-void fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct );
-
-} // namespace x86_64
-
-#endif // _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s
deleted file mode 100644
index 736230705d5a..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .text
- .align 2
-.globl privateSnippetExecutor
- .type privateSnippetExecutor, @function
-privateSnippetExecutor:
-.LFB3:
- pushq %rbp
-.LCFI0:
- movq %rsp, %rbp
-.LCFI1:
- subq $160, %rsp
-.LCFI2:
- movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex
-
- movq %rdi, -112(%rbp) # Save GP registers
- movq %rsi, -104(%rbp)
- movq %rdx, -96(%rbp)
- movq %rcx, -88(%rbp)
- movq %r8 , -80(%rbp)
- movq %r9 , -72(%rbp)
-
- movsd %xmm0, -64(%rbp) # Save FP registers
- movsd %xmm1, -56(%rbp)
- movsd %xmm2, -48(%rbp)
- movsd %xmm3, -40(%rbp)
- movsd %xmm4, -32(%rbp)
- movsd %xmm5, -24(%rbp)
- movsd %xmm6, -16(%rbp)
- movsd %xmm7, -8(%rbp)
-
- leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn
- leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw
- leaq -64(%rbp), %rcx # 4th param: void ** fpreg
- leaq -112(%rbp), %rdx # 3rd param: void ** gpreg
- movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset
- movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex
-
- call cpp_vtable_call
-
- cmp $10, %rax # typelib_TypeClass_FLOAT
- je .Lfloat
- cmp $11, %rax # typelib_TypeClass_DOUBLE
- je .Lfloat
-
- movq -144(%rbp), %rax # Return value (int case)
- jmp .Lfinish
-.Lfloat:
- movlpd -144(%rbp), %xmm0 # Return value (float/double case)
-
-.Lfinish:
- leave
- ret
-.LFE3:
- .size privateSnippetExecutor, .-privateSnippetExecutor
- .section .eh_frame,"a",@progbits
-.Lframe1:
- .long .LECIE1-.LSCIE1
-.LSCIE1:
- .long 0x0
- .byte 0x1
- .string "zR"
- .uleb128 0x1
- .sleb128 -8
- .byte 0x10
- .uleb128 0x1
- .byte 0x1b
- .byte 0xc
- .uleb128 0x7
- .uleb128 0x8
- .byte 0x90
- .uleb128 0x1
- .align 8
-.LECIE1:
-.LSFDE1:
- .long .LEFDE1-.LASFDE1
-.LASFDE1:
- .long .LASFDE1-.Lframe1
- .long .LFB3-.
- .long .LFE3-.LFB3
- .uleb128 0x0
- .byte 0x4
- .long .LCFI0-.LFB3
- .byte 0xe
- .uleb128 0x10
- .byte 0x86
- .uleb128 0x2
- .byte 0x4
- .long .LCFI1-.LCFI0
- .byte 0xd
- .uleb128 0x6
- .align 8
-.LEFDE1:
- .section .note.GNU-stack,"",@progbits
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx
deleted file mode 100644
index dcb45eaae62e..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/cpp2uno.cxx
+++ /dev/null
@@ -1,544 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <hash_map>
-
-#include <rtl/alloc.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <typelib/typedescription.hxx>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/vtablefactory.hxx"
-
-#include "abi.hxx"
-#include "share.hxx"
-
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-//==================================================================================================
-
-// Perform the UNO call
-//
-// We must convert the paramaters stored in gpreg, fpreg and ovrflw to UNO
-// arguments and call pThis->getUnoI()->pDispatcher.
-//
-// gpreg: [ret *], this, [gpr params]
-// fpreg: [fpr params]
-// ovrflw: [gpr or fpr params (properly aligned)]
-//
-// [ret *] is present when we are returning a structure bigger than 16 bytes
-// Simple types are returned in rax, rdx (int), or xmm0, xmm1 (fp).
-// Similarly structures <= 16 bytes are in rax, rdx, xmm0, xmm1 as necessary.
-static typelib_TypeClass cpp2uno_call(
- bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
- const typelib_TypeDescription * pMemberTypeDescr,
- typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void ** gpreg, void ** fpreg, void ** ovrflw,
- sal_uInt64 * pRegisterReturn /* space for register return */ )
-{
- int nr_gpr = 0; //number of gpr registers used
- int nr_fpr = 0; //number of fpr regsiters used
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- if (pReturnTypeRef)
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-
- void * pUnoReturn = 0;
- void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
-
- if ( pReturnTypeDescr )
- {
- if ( x86_64::return_in_hidden_param( pReturnTypeRef ) )
- {
- pCppReturn = *gpreg++;
- nr_gpr++;
-
- pUnoReturn = ( bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pCppReturn ); // direct way
- }
- else
- pUnoReturn = pRegisterReturn; // direct way for simple types
- }
-
- // pop this
- gpreg++;
- nr_gpr++;
-
- // stack space
- // parameters
- void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
- void ** pCppArgs = pUnoArgs + nParams;
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- int nUsedGPR = 0;
- int nUsedSSE = 0;
- bool bFitsRegisters = x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE );
- if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value
- {
- // Simple types must fit exactly one register on x86_64
- OSL_ASSERT( bFitsRegisters && ( ( nUsedSSE == 1 && nUsedGPR == 0 ) || ( nUsedSSE == 0 && nUsedGPR == 1 ) ) );
-
- if ( nUsedSSE == 1 )
- {
- if ( nr_fpr < x86_64::MAX_SSE_REGS )
- {
- pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++;
- nr_fpr++;
- }
- else
- pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++;
- }
- else if ( nUsedGPR == 1 )
- {
- if ( nr_gpr < x86_64::MAX_GPR_REGS )
- {
- pCppArgs[nPos] = pUnoArgs[nPos] = gpreg++;
- nr_gpr++;
- }
- else
- pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++;
- }
-
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // struct <= 16 bytes || ptr to complex value || ref
- {
- void *pCppStack;
- char pTmpStruct[16];
-
- if ( bFitsRegisters && !rParam.bOut &&
- ( pParamTypeDescr->eTypeClass == typelib_TypeClass_STRUCT ||
- pParamTypeDescr->eTypeClass == typelib_TypeClass_EXCEPTION ) )
- {
- if ( ( nr_gpr + nUsedGPR <= x86_64::MAX_GPR_REGS ) && ( nr_fpr + nUsedSSE <= x86_64::MAX_SSE_REGS ) )
- {
- x86_64::fill_struct( rParam.pTypeRef, gpreg, fpreg, pTmpStruct );
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "nUsedGPR == %d, nUsedSSE == %d, pTmpStruct[0] == 0x%x, pTmpStruct[1] == 0x%x, **gpreg == 0x%lx\n",
- nUsedGPR, nUsedSSE, pTmpStruct[0], pTmpStruct[1], *(sal_uInt64*)*gpreg );
-#endif
-
- pCppArgs[nPos] = pCppStack = reinterpret_cast<void *>( pTmpStruct );
- gpreg += nUsedGPR;
- fpreg += nUsedSSE;
- }
- else
- pCppArgs[nPos] = pCppStack = *ovrflw++;
- }
- else if ( nr_gpr < x86_64::MAX_GPR_REGS )
- {
- pCppArgs[nPos] = pCppStack = *gpreg++;
- nr_gpr++;
- }
- else
- pCppArgs[nPos] = pCppStack = *ovrflw++;
-
- if (! rParam.bIn) // is pure out
- {
- // uno out is unconstructed mem!
- pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
- pTempIndizes[nTempIndizes] = nPos;
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else if ( bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ) ) // is in/inout
- {
- uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pCppStack, pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pUnoArgs[nPos] = pCppStack;
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- }
-
- // ExceptionHolder
- uno_Any aUnoExc; // Any will be constructed by callee
- uno_Any * pUnoExc = &aUnoExc;
-
- // invoke uno dispatch call
- (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
-
- // in case an exception occured...
- if ( pUnoExc )
- {
- // destruct temporary in/inout params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-
- if (pParams[nIndex].bIn) // is in/inout => was constructed
- uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
-
- CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any
- // is here for dummy
- return typelib_TypeClass_VOID;
- }
- else // else no exception occured...
- {
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if ( pParams[nIndex].bOut ) // inout/out
- {
- // convert and assign
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
- uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- }
- // destroy temp uno param
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return
- if ( pCppReturn ) // has complex return
- {
- if ( pUnoReturn != pCppReturn ) // needs reconversion
- {
- uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- // destroy temp uno return
- uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
- }
- // complex return ptr is set to return reg
- *(void **)pRegisterReturn = pCppReturn;
- }
- if ( pReturnTypeDescr )
- {
- typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass;
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- return eRet;
- }
- else
- return typelib_TypeClass_VOID;
- }
-}
-
-
-//==================================================================================================
-extern "C" typelib_TypeClass cpp_vtable_call(
- sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset,
- void ** gpreg, void ** fpreg, void ** ovrflw,
- sal_uInt64 * pRegisterReturn /* space for register return */ )
-{
- // gpreg: [ret *], this, [other gpr params]
- // fpreg: [fpr params]
- // ovrflw: [gpr or fpr params (properly aligned)]
- void * pThis;
- if ( nFunctionIndex & 0x80000000 )
- {
- nFunctionIndex &= 0x7fffffff;
- pThis = gpreg[1];
- }
- else
- {
- pThis = gpreg[0];
- }
- pThis = static_cast<char *>( pThis ) - nVtableOffset;
-
- bridges::cpp_uno::shared::CppInterfaceProxy * pCppI =
- bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( pThis );
-
- typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
-
- OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!\n" );
- if ( nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex )
- {
- throw RuntimeException( OUString::createFromAscii("illegal vtable index!"),
- reinterpret_cast<XInterface *>( pCppI ) );
- }
-
- // determine called method
- sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!\n" );
-
- TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
-
- typelib_TypeClass eRet;
- switch ( aMemberDescr.get()->eTypeClass )
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- typelib_TypeDescriptionReference *pAttrTypeRef =
- reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( aMemberDescr.get() )->pAttributeTypeRef;
-
- if ( pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex )
- {
- // is GET method
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(), pAttrTypeRef,
- 0, 0, // no params
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- else
- {
- // is SET method
- typelib_MethodParameter aParam;
- aParam.pTypeRef = pAttrTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(),
- 0, // indicates void return
- 1, &aParam,
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // is METHOD
- switch ( nFunctionIndex )
- {
- case 1: // acquire()
- pCppI->acquireProxy(); // non virtual call!
- eRet = typelib_TypeClass_VOID;
- break;
- case 2: // release()
- pCppI->releaseProxy(); // non virtual call!
- eRet = typelib_TypeClass_VOID;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast<Type *>( gpreg[2] )->getTypeLibType() );
- if ( pTD )
- {
- XInterface * pInterface = 0;
- (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)
- ( pCppI->getBridge()->getCppEnv(),
- (void **)&pInterface,
- pCppI->getOid().pData,
- reinterpret_cast<typelib_InterfaceTypeDescription *>( pTD ) );
-
- if ( pInterface )
- {
- ::uno_any_construct( reinterpret_cast<uno_Any *>( gpreg[0] ),
- &pInterface, pTD, cpp_acquire );
-
- pInterface->release();
- TYPELIB_DANGER_RELEASE( pTD );
-
- reinterpret_cast<void **>( pRegisterReturn )[0] = gpreg[0];
- eRet = typelib_TypeClass_ANY;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- {
- typelib_InterfaceMethodTypeDescription *pMethodTD =
- reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( aMemberDescr.get() );
-
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(),
- pMethodTD->pReturnTypeRef,
- pMethodTD->nParams,
- pMethodTD->pParams,
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- }
- break;
- }
- default:
- {
- throw RuntimeException( OUString::createFromAscii("no member description found!"),
- reinterpret_cast<XInterface *>( pCppI ) );
- // is here for dummy
- eRet = typelib_TypeClass_VOID;
- }
- }
-
- return eRet;
-}
-
-//==================================================================================================
-extern "C" void privateSnippetExecutor( ... );
-
-const int codeSnippetSize = 24;
-
-// Generate a trampoline that redirects method calls to
-// privateSnippetExecutor().
-//
-// privateSnippetExecutor() saves all the registers that are used for
-// parameter passing on x86_64, and calls the cpp_vtable_call().
-// When it returns, privateSnippetExecutor() sets the return value.
-//
-// Note: The code snippet we build here must not create a stack frame,
-// otherwise the UNO exceptions stop working thanks to non-existing
-// unwinding info.
-unsigned char * codeSnippet( unsigned char * code,
- sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset,
- bool bHasHiddenParam ) SAL_THROW( () )
-{
- sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex );
-
- if ( bHasHiddenParam )
- nOffsetAndIndex |= 0x80000000;
-
- // movq $<nOffsetAndIndex>, %r10
- *reinterpret_cast<sal_uInt16 *>( code ) = 0xba49;
- *reinterpret_cast<sal_uInt64 *>( code + 2 ) = nOffsetAndIndex;
-
- // movq $<address of the privateSnippetExecutor>, %r11
- *reinterpret_cast<sal_uInt16 *>( code + 10 ) = 0xbb49;
- *reinterpret_cast<sal_uInt64 *>( code + 12 ) = reinterpret_cast<sal_uInt64>( privateSnippetExecutor );
-
- // jmpq *%r11
- *reinterpret_cast<sal_uInt32 *>( code + 20 ) = 0x00e3ff49;
-
- return code + codeSnippetSize;
-}
-
-//==================================================================================================
-struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
-{
- return static_cast< Slot * >(block) + 2;
-}
-
-//==================================================================================================
-sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
- sal_Int32 slotCount)
-{
- return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
-}
-
-//==================================================================================================
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::initializeBlock(
- void * block, sal_Int32 slotCount)
-{
- Slot * slots = mapBlockToVtable(block);
- slots[-2].fn = 0;
- slots[-1].fn = 0;
- return slots + slotCount;
-}
-
-//==================================================================================================
-
-unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
- typelib_InterfaceTypeDescription const * type, sal_Int32 nFunctionOffset,
- sal_Int32 functionCount, sal_Int32 nVtableOffset )
-{
- (*slots) -= functionCount;
- Slot * s = *slots;
-
- for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos )
- {
- typelib_TypeDescription * pTD = 0;
-
- TYPELIB_DANGER_GET( &pTD, type->ppMembers[ nPos ] );
- OSL_ASSERT( pTD );
-
- if ( typelib_TypeClass_INTERFACE_ATTRIBUTE == pTD->eTypeClass )
- {
- typelib_InterfaceAttributeTypeDescription *pAttrTD =
- reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( pTD );
-
- // get method
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset,
- x86_64::return_in_hidden_param( pAttrTD->pAttributeTypeRef ) );
-
- if ( ! pAttrTD->bReadOnly )
- {
- // set method
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset, false );
- }
- }
- else if ( typelib_TypeClass_INTERFACE_METHOD == pTD->eTypeClass )
- {
- typelib_InterfaceMethodTypeDescription *pMethodTD =
- reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( pTD );
-
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset,
- x86_64::return_in_hidden_param( pMethodTD->pReturnTypeRef ) );
- }
- else
- OSL_ASSERT( false );
-
- TYPELIB_DANGER_RELEASE( pTD );
- }
- return code;
-}
-
-//==================================================================================================
-void bridges::cpp_uno::shared::VtableFactory::flushCode(
- unsigned char const *, unsigned char const * )
-{
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
deleted file mode 100644
index d6bfa3abccce..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx
+++ /dev/null
@@ -1,340 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <dlfcn.h>
-#include <cxxabi.h>
-#include <hash_map>
-#include <sys/param.h>
-
-#include <rtl/strbuf.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <osl/diagnose.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <typelib/typedescription.hxx>
-#include <uno/any2.h>
-
-#include "share.hxx"
-
-
-using namespace ::std;
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::__cxxabiv1;
-
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * )
-{
-}
-
-//==================================================================================================
-static OUString toUNOname( char const * p ) SAL_THROW( () )
-{
-#if OSL_DEBUG_LEVEL > 1
- char const * start = p;
-#endif
-
- // example: N3com3sun4star4lang24IllegalArgumentExceptionE
-
- OUStringBuffer buf( 64 );
- OSL_ASSERT( 'N' == *p );
- ++p; // skip N
-
- while ('E' != *p)
- {
- // read chars count
- long n = (*p++ - '0');
- while ('0' <= *p && '9' >= *p)
- {
- n *= 10;
- n += (*p++ - '0');
- }
- buf.appendAscii( p, n );
- p += n;
- if ('E' != *p)
- buf.append( (sal_Unicode)'.' );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- OUString ret( buf.makeStringAndClear() );
- OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
- return ret;
-#else
- return buf.makeStringAndClear();
-#endif
-}
-
-//==================================================================================================
-class RTTI
-{
- typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map;
-
- Mutex m_mutex;
- t_rtti_map m_rttis;
- t_rtti_map m_generatedRttis;
-
- void * m_hApp;
-
-public:
- RTTI() SAL_THROW( () );
- ~RTTI() SAL_THROW( () );
-
- type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () );
-};
-//__________________________________________________________________________________________________
-RTTI::RTTI() SAL_THROW( () )
-#if __FreeBSD_version < 602103
- : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
-#else
- : m_hApp( dlopen( 0, RTLD_LAZY ) )
-#endif
-{
-}
-//__________________________________________________________________________________________________
-RTTI::~RTTI() SAL_THROW( () )
-{
- dlclose( m_hApp );
-}
-
-//__________________________________________________________________________________________________
-type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () )
-{
- type_info * rtti;
-
- OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
-
- MutexGuard guard( m_mutex );
- t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) );
- if (iFind == m_rttis.end())
- {
- // RTTI symbol
- OStringBuffer buf( 64 );
- buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
- sal_Int32 index = 0;
- do
- {
- OUString token( unoName.getToken( 0, '.', index ) );
- buf.append( token.getLength() );
- OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
- buf.append( c_token );
- }
- while (index >= 0);
- buf.append( 'E' );
-
- OString symName( buf.makeStringAndClear() );
-#if __FreeBSD_version < 602103 /* #i22253# */
- rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
-#else
- rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
-#endif
-
- if (rtti)
- {
- pair< t_rtti_map::iterator, bool > insertion(
- m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" );
- }
- else
- {
- // try to lookup the symbol in the generated rtti map
- t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
- if (iFind == m_generatedRttis.end())
- {
- // we must generate it !
- // symbol and rtti-name is nearly identical,
- // the symbol is prefixed with _ZTI
- char const * rttiName = symName.getStr() +4;
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr,"generated rtti for %s\n", rttiName );
-#endif
- if (pTypeDescr->pBaseTypeDescription)
- {
- // ensure availability of base
- type_info * base_rtti = getRTTI(
- (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
- rtti = new __si_class_type_info(
- strdup( rttiName ), (__class_type_info *)base_rtti );
- }
- else
- {
- // this class has no base class
- rtti = new __class_type_info( strdup( rttiName ) );
- }
-
- pair< t_rtti_map::iterator, bool > insertion(
- m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" );
- }
- else // taking already generated rtti
- {
- rtti = iFind->second;
- }
- }
- }
- else
- {
- rtti = iFind->second;
- }
-
- return rtti;
-}
-
-//--------------------------------------------------------------------------------------------------
-static void deleteException( void * pExc )
-{
- __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
- typelib_TypeDescription * pTD = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
- ::typelib_typedescription_getByName( &pTD, unoName.pData );
- OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" );
- if (pTD)
- {
- ::uno_destructData( pExc, pTD, cpp_release );
- ::typelib_typedescription_release( pTD );
- }
-}
-
-//==================================================================================================
-void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
-{
-#if OSL_DEBUG_LEVEL > 1
- OString cstr(
- OUStringToOString(
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() );
-#endif
- void * pCppExc;
- type_info * rtti;
-
- {
- // construct cpp exception object
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
- OSL_ASSERT( pTypeDescr );
- if (! pTypeDescr)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
-
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
- ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
-
- // destruct uno exception
- ::uno_any_destruct( pUnoExc, 0 );
- // avoiding locked counts
- static RTTI * s_rtti = 0;
- if (! s_rtti)
- {
- MutexGuard guard( Mutex::getGlobalMutex() );
- if (! s_rtti)
- {
-#ifdef LEAK_STATIC_DATA
- s_rtti = new RTTI();
-#else
- static RTTI rtti_data;
- s_rtti = &rtti_data;
-#endif
- }
- }
- rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- OSL_ENSURE( rtti, "### no rtti for throwing exception!" );
- if (! rtti)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
- }
-
- __cxa_throw( pCppExc, rtti, deleteException );
-}
-
-//==================================================================================================
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
-{
- if (! header)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ),
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- return;
- }
-
- typelib_TypeDescription * pExcTypeDescr = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
-#if OSL_DEBUG_LEVEL > 1
- OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() );
-#endif
- typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
- if (0 == pExcTypeDescr)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName,
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- }
- else
- {
- // construct uno exception any
- uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
- typelib_typedescription_release( pExcTypeDescr );
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk
deleted file mode 100644
index 9c37d6cd8227..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=bridges
-TARGET=gcc3_uno
-LIBTARGET=no
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDXgcc3"
-
-.IF "$(cppu_no_leak)" == ""
-CFLAGS += -DLEAK_STATIC_DATA
-.ENDIF
-
-# In case someone enabled the non-standard -fomit-frame-pointer which does not
-# work with the .cxx sources in this directory:
-CFLAGSCXX += -fno-omit-frame-pointer
-
-SLOFILES= \
- $(SLO)$/abi.obj \
- $(SLO)$/except.obj \
- $(SLO)$/cpp2uno.obj \
- $(SLO)$/uno2cpp.obj \
- $(SLO)$/call.obj
-
-SHL1TARGET= $(TARGET)
-
-SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-SHL1IMPLIB=i$(TARGET)
-SHL1VERSIONMAP=..$/..$/bridge_exports.map
-SHL1RPATH=URELIB
-
-SHL1OBJS = $(SLOFILES)
-SHL1LIBS = $(SLB)$/cpp_uno_shared.lib
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(SALLIB)
-
-.ENDIF
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(SLO)$/%.obj: %.s
- $(CC) -c -o $(SLO)$/$(@:b).o $<
- touch $@
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx
deleted file mode 100644
index da2367ad172b..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/share.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "uno/mapping.h"
-
-#include <typeinfo>
-#include <exception>
-#include <cstddef>
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * );
-
-// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
-
-struct _Unwind_Exception
-{
- unsigned exception_class __attribute__((__mode__(__DI__)));
- void * exception_cleanup;
- unsigned private_1 __attribute__((__mode__(__word__)));
- unsigned private_2 __attribute__((__mode__(__word__)));
-} __attribute__((__aligned__));
-
-struct __cxa_exception
-{
- ::std::type_info *exceptionType;
- void (*exceptionDestructor)(void *);
-
- ::std::unexpected_handler unexpectedHandler;
- ::std::terminate_handler terminateHandler;
-
- __cxa_exception *nextException;
-
- int handlerCount;
-
- int handlerSwitchValue;
- const unsigned char *actionRecord;
- const unsigned char *languageSpecificData;
- void *catchTemp;
- void *adjustedPtr;
-
- _Unwind_Exception unwindHeader;
-};
-
-extern "C" void *__cxa_allocate_exception(
- std::size_t thrown_size ) throw();
-extern "C" void __cxa_throw (
- void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
-
-struct __cxa_eh_globals
-{
- __cxa_exception *caughtExceptions;
- unsigned int uncaughtExceptions;
-};
-extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
-
-// -----
-
-//==================================================================================================
-void raiseException(
- uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-//==================================================================================================
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx
deleted file mode 100644
index d4885fd06274..000000000000
--- a/bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx
+++ /dev/null
@@ -1,561 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <rtl/alloc.h>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-
-#include <bridges/cpp_uno/shared/bridge.hxx>
-#include <bridges/cpp_uno/shared/types.hxx>
-#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/vtables.hxx"
-
-#include "abi.hxx"
-#include "share.hxx"
-
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-//==================================================================================================
-static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
- void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn,
- sal_uInt64 *pStack, sal_uInt32 nStack,
- sal_uInt64 *pGPR, sal_uInt32 nGPR,
- double *pFPR, sal_uInt32 nFPR) __attribute__((noinline));
-
-static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
- void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn,
- sal_uInt64 *pStack, sal_uInt32 nStack,
- sal_uInt64 *pGPR, sal_uInt32 nGPR,
- double *pFPR, sal_uInt32 nFPR)
-{
-#if OSL_DEBUG_LEVEL > 1
- // Let's figure out what is really going on here
- {
- fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR );
- for ( int i = 0; i < nGPR; ++i )
- fprintf( stderr, "0x%lx, ", pGPR[i] );
- fprintf( stderr, "\nFPR's (%d): ", nFPR );
- for ( int i = 0; i < nFPR; ++i )
- fprintf( stderr, "%f, ", pFPR[i] );
- fprintf( stderr, "\nStack (%d): ", nStack );
- for ( int i = 0; i < nStack; ++i )
- fprintf( stderr, "0x%lx, ", pStack[i] );
- fprintf( stderr, "\n" );
- }
-#endif
-
- // The call instruction within the asm section of callVirtualMethod may throw
- // exceptions. So that the compiler handles this correctly, it is important
- // that (a) callVirtualMethod might call dummy_can_throw_anything (although this
- // never happens at runtime), which in turn can throw exceptions, and (b)
- // callVirtualMethod is not inlined at its call site (so that any exceptions are
- // caught which are thrown from the instruction calling callVirtualMethod):
- if ( !pThis )
- CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything( "xxx" ); // address something
-
- // Should not happen, but...
- if ( nFPR > x86_64::MAX_SSE_REGS )
- nFPR = x86_64::MAX_SSE_REGS;
- if ( nGPR > x86_64::MAX_GPR_REGS )
- nGPR = x86_64::MAX_GPR_REGS;
-
- // Get pointer to method
- sal_uInt64 pMethod = *((sal_uInt64 *)pThis);
- pMethod += 8 * nVtableIndex;
- pMethod = *((sal_uInt64 *)pMethod);
-
- // Load parameters to stack, if necessary
- if ( nStack )
- {
- // 16-bytes aligned
- sal_uInt32 nStackBytes = ( ( nStack + 1 ) >> 1 ) * 16;
- sal_uInt64 *pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes );
- memcpy( pCallStack, pStack, nStackBytes );
- }
-
- // Return values
- sal_uInt64 rax;
- sal_uInt64 rdx;
- double xmm0;
-
- asm volatile (
-
- // Fill the xmm registers
- "movq %2, %%rax\n\t"
-
- "movsd (%%rax), %%xmm0\n\t"
- "movsd 8(%%rax), %%xmm1\n\t"
- "movsd 16(%%rax), %%xmm2\n\t"
- "movsd 24(%%rax), %%xmm3\n\t"
- "movsd 32(%%rax), %%xmm4\n\t"
- "movsd 40(%%rax), %%xmm5\n\t"
- "movsd 48(%%rax), %%xmm6\n\t"
- "movsd 56(%%rax), %%xmm7\n\t"
-
- // Fill the general purpose registers
- "movq %1, %%rax\n\t"
-
- "movq (%%rax), %%rdi\n\t"
- "movq 8(%%rax), %%rsi\n\t"
- "movq 16(%%rax), %%rdx\n\t"
- "movq 24(%%rax), %%rcx\n\t"
- "movq 32(%%rax), %%r8\n\t"
- "movq 40(%%rax), %%r9\n\t"
-
- // Perform the call
- "movq %0, %%r11\n\t"
- "movq %3, %%rax\n\t"
- "call *%%r11\n\t"
-
- // Fill the return values
- "movq %%rax, %4\n\t"
- "movq %%rdx, %5\n\t"
- "movsd %%xmm0, %6\n\t"
- :
- : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ),
- "m" ( rax ), "m" ( rdx ), "m" ( xmm0 )
- : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11"
- );
-
- switch (pReturnTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- *reinterpret_cast<sal_uInt64 *>( pRegisterReturn ) = rax;
- break;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_ENUM:
- *reinterpret_cast<sal_uInt32 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt32*>( &rax );
- break;
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- *reinterpret_cast<sal_uInt16 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt16*>( &rax );
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- *reinterpret_cast<sal_uInt8 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt8*>( &rax );
- break;
- case typelib_TypeClass_FLOAT:
- case typelib_TypeClass_DOUBLE:
- *reinterpret_cast<double *>( pRegisterReturn ) = xmm0;
- break;
- default:
- {
- sal_Int32 const nRetSize = pReturnTypeDescr->nSize;
- if (bSimpleReturn && nRetSize <= 16 && nRetSize > 0)
- {
- if (nRetSize > 8)
- static_cast<sal_uInt64 *>(pRegisterReturn)[1] = rdx;
- static_cast<sal_uInt64 *>(pRegisterReturn)[0] = rax;
- }
- break;
- }
- }
-}
-
-//==================================================================================================
-
-// Macros for easier insertion of values to registers or stack
-// pSV - pointer to the source
-// nr - order of the value [will be increased if stored to register]
-// pFPR, pGPR - pointer to the registers
-// pDS - pointer to the stack [will be increased if stored here]
-
-// The value in %xmm register is already prepared to be retrieved as a float,
-// thus we treat float and double the same
-#define INSERT_FLOAT_DOUBLE( pSV, nr, pFPR, pDS ) \
- if ( nr < x86_64::MAX_SSE_REGS ) \
- pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim!
-
-#define INSERT_INT64( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV );
-
-#define INSERT_INT32( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV );
-
-#define INSERT_INT16( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV );
-
-#define INSERT_INT8( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV );
-
-//==================================================================================================
-
-static void cpp_call(
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
- bridges::cpp_uno::shared::VtableSlot aVtableSlot,
- typelib_TypeDescriptionReference * pReturnTypeRef,
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
-{
- // Maxium space for [complex ret ptr], values | ptr ...
- // (but will be used less - some of the values will be in pGPR and pFPR)
- sal_uInt64 *pStack = (sal_uInt64 *)__builtin_alloca( (nParams + 3) * sizeof(sal_uInt64) );
- sal_uInt64 *pStackStart = pStack;
-
- sal_uInt64 pGPR[x86_64::MAX_GPR_REGS];
- sal_uInt32 nGPR = 0;
-
- double pFPR[x86_64::MAX_SSE_REGS];
- sal_uInt32 nFPR = 0;
-
- // Return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
- OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
-
- void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion (see below)
-
- bool bSimpleReturn = true;
- if ( pReturnTypeDescr )
- {
- if ( x86_64::return_in_hidden_param( pReturnTypeRef ) )
- bSimpleReturn = false;
-
- if ( bSimpleReturn )
- pCppReturn = pUnoReturn; // direct way for simple types
- else
- {
- // complex return via ptr
- pCppReturn = bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )?
- __builtin_alloca( pReturnTypeDescr->nSize ) : pUnoReturn;
- INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack );
- }
- }
-
- // Push "this" pointer
- void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset;
- INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack );
-
- // Args
- void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
- // Indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
- // Type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- {
- uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_ENUM:
- INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_UNSIGNED_SHORT:
- INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_FLOAT:
- case typelib_TypeClass_DOUBLE:
- INSERT_FLOAT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack );
- break;
- }
-
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- if (! rParam.bIn) // is pure out
- {
- // cpp out is constructed mem, uno out is not!
- uno_constructData(
- pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pParamTypeDescr );
- pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
- {
- uno_copyAndConvertData(
- pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
-
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pCppArgs[nPos] = pUnoArgs[nPos];
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack );
- }
- }
-
- try
- {
- callVirtualMethod(
- pAdjustedThisPtr, aVtableSlot.index,
- pCppReturn, pReturnTypeDescr, bSimpleReturn,
- pStackStart, ( pStack - pStackStart ),
- pGPR, nGPR,
- pFPR, nFPR );
- // NO exception occured...
- *ppUnoExc = 0;
-
- // reconvert temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bIn)
- {
- if (pParams[nIndex].bOut) // inout
- {
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- }
- else // pure out
- {
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return value
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
- uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
- }
- }
- catch (...)
- {
- // fill uno exception
- fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
-
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- // return type
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
-}
-
-//==================================================================================================
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-void unoInterfaceProxyDispatch(
- uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
- void * pReturn, void * pArgs[], uno_Any ** ppException )
-{
- // is my surrogate
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
- = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
- typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr;
-
- switch (pMemberDescr->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- // determine vtable call index
- sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition;
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" );
-
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription const * >(
- pMemberDescr)));
-
- if (pReturn)
- {
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
- 0, 0, // no params
- pReturn, pArgs, ppException );
- }
- else
- {
- // is SET
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- typelib_TypeDescriptionReference * pReturnTypeRef = 0;
- OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") );
- typelib_typedescriptionreference_new(
- &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
-
- // dependent dispatch
- aVtableSlot.index += 1; // get, then set method
- cpp_call(
- pThis, aVtableSlot, // get, then set method
- pReturnTypeRef,
- 1, &aParam,
- pReturn, pArgs, ppException );
-
- typelib_typedescriptionreference_release( pReturnTypeRef );
- }
-
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // determine vtable call index
- sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition;
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" );
-
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceMethodTypeDescription const * >(
- pMemberDescr)));
-
- switch (aVtableSlot.index)
- {
- // standard calls
- case 1: // acquire uno interface
- (*pUnoI->acquire)( pUnoI );
- *ppException = 0;
- break;
- case 2: // release uno interface
- (*pUnoI->release)( pUnoI );
- *ppException = 0;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
- if (pTD)
- {
- uno_Interface * pInterface = 0;
- (*pThis->getBridge()->getUnoEnv()->getRegisteredInterface)(
- pThis->getBridge()->getUnoEnv(),
- (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pReturn ),
- &pInterface, pTD, 0 );
- (*pInterface->release)( pInterface );
- TYPELIB_DANGER_RELEASE( pTD );
- *ppException = 0;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
- pReturn, pArgs, ppException );
- }
- break;
- }
- default:
- {
- ::com::sun::star::uno::RuntimeException aExc(
- OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ),
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
-
- Type const & rExcType = ::getCppuType( &aExc );
- // binary identical null reference
- ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
- }
- }
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
index 1c573aa80f5c..69785be506f1 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
@@ -119,7 +119,11 @@ public:
};
//__________________________________________________________________________________________________
RTTI::RTTI() SAL_THROW( () )
+#if defined(FREEBSD) && __FreeBSD_version < 702104
+ : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
+#else
: m_hApp( dlopen( 0, RTLD_LAZY ) )
+#endif
{
}
//__________________________________________________________________________________________________
@@ -154,7 +158,11 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
buf.append( 'E' );
OString symName( buf.makeStringAndClear() );
+#if defined(FREEBSD) && __FreeBSD_version < 702104 /* #i22253# */
+ rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
+#else
rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
+#endif
if (rtti)
{
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
index c03a43ce8aba..6e2b7529247f 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
@@ -38,7 +38,10 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXIgcc3"
+.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXIgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCOPENBSDIgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDIgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDIgcc3"
.IF "$(cppu_no_leak)" == ""
CFLAGS += -DLEAK_STATIC_DATA
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx
index 57c9c3caf287..759f28764fa7 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx
@@ -119,7 +119,11 @@ public:
};
//__________________________________________________________________________________________________
RTTI::RTTI() SAL_THROW( () )
+#if defined(FREEBSD) && __FreeBSD_version < 702104
+ : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
+#else
: m_hApp( dlopen( 0, RTLD_LAZY ) )
+#endif
{
}
//__________________________________________________________________________________________________
@@ -154,7 +158,11 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR
buf.append( 'E' );
OString symName( buf.makeStringAndClear() );
+#if defined(FREEBSD) && __FreeBSD_version < 702104 /* #i22253# */
+ rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
+#else
rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
+#endif
if (rtti)
{
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk
index 291397147c48..156ca4f27d4a 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/makefile.mk
@@ -38,7 +38,10 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXXgcc3"
+.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCLINUXXgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCOPENBSDXgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDXgcc3" || \
+ "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDXgcc3"
.IF "$(cppu_no_leak)" == ""
CFLAGS += -DLEAK_STATIC_DATA
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s b/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s
deleted file mode 100644
index f345e3a764ac..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/call.s
+++ /dev/null
@@ -1,268 +0,0 @@
- .text
-
-.globl privateSnippetExecutorGeneral
- .type privateSnippetExecutorGeneral,@function
-privateSnippetExecutorGeneral:
-.LFBg:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIg0:
- movl %esp,%ebp
-.LCFIg1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 32bit returnValue
- leave
- ret
-.LFEg:
- .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
-
-.globl privateSnippetExecutorVoid
- .type privateSnippetExecutorVoid,@function
-privateSnippetExecutorVoid:
-.LFBv:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIv0:
- movl %esp,%ebp
-.LCFIv1:
- pushl $0 # 32bit null pointer (returnValue not used)
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- leave
- ret
-.LFEv:
- .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
-
-.globl privateSnippetExecutorHyper
- .type privateSnippetExecutorHyper,@function
-privateSnippetExecutorHyper:
-.LFBh:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIh0:
- movl %esp,%ebp
-.LCFIh1:
- subl $0x8,%esp # 64bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 64bit returnValue, lower half
- movl 20(%esp),%edx # 64bit returnValue, upper half
- leave
- ret
-.LFEh:
- .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
-
-.globl privateSnippetExecutorFloat
- .type privateSnippetExecutorFloat,@function
-privateSnippetExecutorFloat:
-.LFBf:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIf0:
- movl %esp,%ebp
-.LCFIf1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- flds 16(%esp) # 32bit returnValue
- leave
- ret
-.LFEf:
- .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
-
-.globl privateSnippetExecutorDouble
- .type privateSnippetExecutorDouble,@function
-privateSnippetExecutorDouble:
-.LFBd:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFId0:
- movl %esp,%ebp
-.LCFId1:
- subl $0x8,%esp # 64bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- fldl 16(%esp) # 64bit returnValue
- leave
- ret
-.LFEd:
- .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
-
-.globl privateSnippetExecutorClass
- .type privateSnippetExecutorClass,@function
-privateSnippetExecutorClass:
-.LFBc:
- movl %esp,%ecx
- pushl %ebp # proper stack frame needed for exception handling
-.LCFIc0:
- movl %esp,%ebp
-.LCFIc1:
- subl $0x4,%esp # 32bit returnValue
- pushl %esp # 32bit &returnValue
- pushl %ecx # 32bit pCallStack
- pushl %edx # 32bit nVtableOffset
- pushl %eax # 32bit nFunctionIndex
- call cpp_vtable_call
- movl 16(%esp),%eax # 32bit returnValue
- leave
- ret $4
-.LFEc:
- .size privateSnippetExecutorClass,.-privateSnippetExecutorClass
-
- .section .eh_frame,"a",@progbits
-.Lframe1:
- .long .LECIE1-.LSCIE1 # length
-.LSCIE1:
- .long 0 # CIE_ID
- .byte 1 # version
- .string "zR" # augmentation
- .uleb128 1 # code_alignment_factor
- .sleb128 -4 # data_alignment_factor
- .byte 8 # return_address_register
- .uleb128 1 # augmentation size 1:
- .byte 0x1B # FDE Encoding (pcrel sdata4)
- # initial_instructions:
- .byte 0x0C # DW_CFA_def_cfa %esp, 4
- .uleb128 4
- .uleb128 4
- .byte 0x88 # DW_CFA_offset ret, 1
- .uleb128 1
- .align 4
-.LECIE1:
-.LSFDEg:
- .long .LEFDEg-.LASFDEg # length
-.LASFDEg:
- .long .LASFDEg-.Lframe1 # CIE_pointer
- .long .LFBg-. # initial_location
- .long .LFEg-.LFBg # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg0-.LFBg
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIg1-.LCFIg0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEg:
-.LSFDEv:
- .long .LEFDEv-.LASFDEv # length
-.LASFDEv:
- .long .LASFDEv-.Lframe1 # CIE_pointer
- .long .LFBv-. # initial_location
- .long .LFEv-.LFBv # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv0-.LFBv
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIv1-.LCFIv0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEv:
-.LSFDEh:
- .long .LEFDEh-.LASFDEh # length
-.LASFDEh:
- .long .LASFDEh-.Lframe1 # CIE_pointer
- .long .LFBh-. # initial_location
- .long .LFEh-.LFBh # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh0-.LFBh
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIh1-.LCFIh0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEh:
-.LSFDEf:
- .long .LEFDEf-.LASFDEf # length
-.LASFDEf:
- .long .LASFDEf-.Lframe1 # CIE_pointer
- .long .LFBf-. # initial_location
- .long .LFEf-.LFBf # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf0-.LFBf
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIf1-.LCFIf0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEf:
-.LSFDEd:
- .long .LEFDEd-.LASFDEd # length
-.LASFDEd:
- .long .LASFDEd-.Lframe1 # CIE_pointer
- .long .LFBd-. # initial_location
- .long .LFEd-.LFBd # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId0-.LFBd
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFId1-.LCFId0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEd:
-.LSFDEc:
- .long .LEFDEc-.LASFDEc # length
-.LASFDEc:
- .long .LASFDEc-.Lframe1 # CIE_pointer
- .long .LFBc-. # initial_location
- .long .LFEc-.LFBc # address_range
- .uleb128 0 # augmentation size 0
- # instructions:
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc0-.LFBc
- .byte 0x0E # DW_CFA_def_cfa_offset 8
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp, 2
- .uleb128 2
- .byte 0x04 # DW_CFA_advance_loc4
- .long .LCFIc1-.LCFIc0
- .byte 0x0D # DW_CFA_def_cfa_register %ebp
- .uleb128 5
- .align 4
-.LEFDEc:
- .section .note.GNU-stack,"",@progbits
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx
deleted file mode 100644
index afb3d1434db4..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx
+++ /dev/null
@@ -1,493 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <typelib/typedescription.hxx>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/vtablefactory.hxx"
-
-#include "share.hxx"
-
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-//==================================================================================================
-void cpp2uno_call(
- bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
- const typelib_TypeDescription * pMemberTypeDescr,
- typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void ** pCallStack,
- void * pReturnValue )
-{
- // pCallStack: ret, [return ptr], this, params
- char * pCppStack = (char *)(pCallStack +1);
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- if (pReturnTypeRef)
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-
- void * pUnoReturn = 0;
- void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pUnoReturn = pReturnValue; // direct way for simple types
- }
- else // complex return via ptr (pCppReturn)
- {
- pCppReturn = *(void **)pCppStack;
- pCppStack += sizeof(void *);
-
- pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pCppReturn); // direct way
- }
- }
- // pop this
- pCppStack += sizeof( void* );
-
- // stack space
- OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
- // parameters
- void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
- void ** pCppArgs = pUnoArgs + nParams;
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- // value
- {
- pCppArgs[nPos] = pCppStack;
- pUnoArgs[nPos] = pCppStack;
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- pCppArgs[nPos] = *(void **)pCppStack;
-
- if (! rParam.bIn) // is pure out
- {
- // uno out is unconstructed mem!
- pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
- pTempIndizes[nTempIndizes] = nPos;
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- *(void **)pCppStack, pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pUnoArgs[nPos] = *(void **)pCppStack;
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- // ExceptionHolder
- uno_Any aUnoExc; // Any will be constructed by callee
- uno_Any * pUnoExc = &aUnoExc;
-
- // invoke uno dispatch call
- (*pThis->getUnoI()->pDispatcher)(
- pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
-
- // in case an exception occured...
- if (pUnoExc)
- {
- // destruct temporary in/inout params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-
- if (pParams[nIndex].bIn) // is in/inout => was constructed
- uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
-
- CPPU_CURRENT_NAMESPACE::raiseException(
- &aUnoExc, pThis->getBridge()->getUno2Cpp() );
- // has to destruct the any
- }
- else // else no exception occured...
- {
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bOut) // inout/out
- {
- // convert and assign
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
- uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- }
- // destroy temp uno param
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return
- if (pCppReturn) // has complex return
- {
- if (pUnoReturn != pCppReturn) // needs reconversion
- {
- uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- // destroy temp uno return
- uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
- }
- // complex return ptr is set to eax
- *static_cast< void ** >(pReturnValue) = pCppReturn;
- }
- if (pReturnTypeDescr)
- {
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
- }
-}
-
-
-//==================================================================================================
-extern "C" void cpp_vtable_call(
- int nFunctionIndex, int nVtableOffset, void** pCallStack,
- void * pReturnValue )
-{
- OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" );
-
- // pCallStack: ret adr, [ret *], this, params
- void * pThis;
- if( nFunctionIndex & 0x80000000 )
- {
- nFunctionIndex &= 0x7fffffff;
- pThis = pCallStack[2];
- }
- else
- {
- pThis = pCallStack[1];
- }
- pThis = static_cast< char * >(pThis) - nVtableOffset;
- bridges::cpp_uno::shared::CppInterfaceProxy * pCppI
- = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy(
- pThis);
-
- typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
-
- OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
- if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
- {
- throw RuntimeException(
- rtl::OUString::createFromAscii("illegal vtable index!"),
- (XInterface *)pThis );
- }
-
- // determine called method
- sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
-
- TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
-
- switch (aMemberDescr.get()->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex)
- {
- // is GET method
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef,
- 0, 0, // no params
- pCallStack, pReturnValue );
- }
- else
- {
- // is SET method
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- 0, // indicates void return
- 1, &aParam,
- pCallStack, pReturnValue );
- }
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // is METHOD
- switch (nFunctionIndex)
- {
- case 1: // acquire()
- pCppI->acquireProxy(); // non virtual call!
- break;
- case 2: // release()
- pCppI->releaseProxy(); // non virtual call!
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pCallStack[3] )->getTypeLibType() );
- if (pTD)
- {
- XInterface * pInterface = 0;
- (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)(
- pCppI->getBridge()->getCppEnv(),
- (void **)&pInterface, pCppI->getOid().pData,
- (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pCallStack[1] ),
- &pInterface, pTD, cpp_acquire );
- pInterface->release();
- TYPELIB_DANGER_RELEASE( pTD );
- *static_cast< void ** >(pReturnValue) = pCallStack[1];
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- cpp2uno_call(
- pCppI, aMemberDescr.get(),
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams,
- ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams,
- pCallStack, pReturnValue );
- }
- break;
- }
- default:
- {
- throw RuntimeException(
- rtl::OUString::createFromAscii("no member description found!"),
- (XInterface *)pThis );
- }
- }
-}
-
-//==================================================================================================
-extern "C" void privateSnippetExecutorGeneral();
-extern "C" void privateSnippetExecutorVoid();
-extern "C" void privateSnippetExecutorHyper();
-extern "C" void privateSnippetExecutorFloat();
-extern "C" void privateSnippetExecutorDouble();
-extern "C" void privateSnippetExecutorClass();
-extern "C" typedef void (*PrivateSnippetExecutor)();
-
-int const codeSnippetSize = 16;
-
-unsigned char * codeSnippet(
- unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
- typelib_TypeClass returnTypeClass)
-{
- if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) {
- functionIndex |= 0x80000000;
- }
- PrivateSnippetExecutor exec;
- switch (returnTypeClass) {
- case typelib_TypeClass_VOID:
- exec = privateSnippetExecutorVoid;
- break;
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- exec = privateSnippetExecutorHyper;
- break;
- case typelib_TypeClass_FLOAT:
- exec = privateSnippetExecutorFloat;
- break;
- case typelib_TypeClass_DOUBLE:
- exec = privateSnippetExecutorDouble;
- break;
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_INTERFACE:
- exec = privateSnippetExecutorClass;
- break;
- default:
- exec = privateSnippetExecutorGeneral;
- break;
- }
- unsigned char * p = code;
- OSL_ASSERT(sizeof (sal_Int32) == 4);
- // mov function_index, %eax:
- *p++ = 0xB8;
- *reinterpret_cast< sal_Int32 * >(p) = functionIndex;
- p += sizeof (sal_Int32);
- // mov vtable_offset, %edx:
- *p++ = 0xBA;
- *reinterpret_cast< sal_Int32 * >(p) = vtableOffset;
- p += sizeof (sal_Int32);
- // jmp privateSnippetExecutor:
- *p++ = 0xE9;
- *reinterpret_cast< sal_Int32 * >(p)
- = ((unsigned char *) exec) - p - sizeof (sal_Int32);
- p += sizeof (sal_Int32);
- OSL_ASSERT(p - code <= codeSnippetSize);
- return code + codeSnippetSize;
-}
-
-}
-
-struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
-{
- return static_cast< Slot * >(block) + 2;
-}
-
-sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
- sal_Int32 slotCount)
-{
- return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
-}
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::initializeBlock(
- void * block, sal_Int32 slotCount)
-{
- Slot * slots = mapBlockToVtable(block);
- slots[-2].fn = 0;
- slots[-1].fn = 0;
- return slots + slotCount;
-}
-
-unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
- typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
- sal_Int32 functionCount, sal_Int32 vtableOffset)
-{
- (*slots) -= functionCount;
- Slot * s = *slots;
- for (sal_Int32 i = 0; i < type->nMembers; ++i) {
- typelib_TypeDescription * member = 0;
- TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
- OSL_ASSERT(member != 0);
- switch (member->eTypeClass) {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- // Getter:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >(
- member)->pAttributeTypeRef->eTypeClass);
- // Setter:
- if (!reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription * >(
- member)->bReadOnly)
- {
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- typelib_TypeClass_VOID);
- }
- break;
-
- case typelib_TypeClass_INTERFACE_METHOD:
- (s++)->fn = code;
- code = codeSnippet(
- code, functionOffset++, vtableOffset,
- reinterpret_cast< typelib_InterfaceMethodTypeDescription * >(
- member)->pReturnTypeRef->eTypeClass);
- break;
-
- default:
- OSL_ASSERT(false);
- break;
- }
- TYPELIB_DANGER_RELEASE(member);
- }
- return code;
-}
-
-void bridges::cpp_uno::shared::VtableFactory::flushCode(
- unsigned char const *, unsigned char const *)
-{}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx
deleted file mode 100644
index 623046140e84..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx
+++ /dev/null
@@ -1,340 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <dlfcn.h>
-#include <cxxabi.h>
-#include <hash_map>
-#include <sys/param.h>
-
-#include <rtl/strbuf.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <osl/diagnose.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <typelib/typedescription.hxx>
-#include <uno/any2.h>
-
-#include "share.hxx"
-
-
-using namespace ::std;
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::__cxxabiv1;
-
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * )
-{
-}
-
-//==================================================================================================
-static OUString toUNOname( char const * p ) SAL_THROW( () )
-{
-#if OSL_DEBUG_LEVEL > 1
- char const * start = p;
-#endif
-
- // example: N3com3sun4star4lang24IllegalArgumentExceptionE
-
- OUStringBuffer buf( 64 );
- OSL_ASSERT( 'N' == *p );
- ++p; // skip N
-
- while ('E' != *p)
- {
- // read chars count
- long n = (*p++ - '0');
- while ('0' <= *p && '9' >= *p)
- {
- n *= 10;
- n += (*p++ - '0');
- }
- buf.appendAscii( p, n );
- p += n;
- if ('E' != *p)
- buf.append( (sal_Unicode)'.' );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- OUString ret( buf.makeStringAndClear() );
- OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
- return ret;
-#else
- return buf.makeStringAndClear();
-#endif
-}
-
-//==================================================================================================
-class RTTI
-{
- typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map;
-
- Mutex m_mutex;
- t_rtti_map m_rttis;
- t_rtti_map m_generatedRttis;
-
- void * m_hApp;
-
-public:
- RTTI() SAL_THROW( () );
- ~RTTI() SAL_THROW( () );
-
- type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () );
-};
-//__________________________________________________________________________________________________
-RTTI::RTTI() SAL_THROW( () )
-#if 1
- : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
-#else
- : m_hApp( dlopen( 0, RTLD_LAZY ) )
-#endif
-{
-}
-//__________________________________________________________________________________________________
-RTTI::~RTTI() SAL_THROW( () )
-{
- dlclose( m_hApp );
-}
-
-//__________________________________________________________________________________________________
-type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () )
-{
- type_info * rtti;
-
- OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
-
- MutexGuard guard( m_mutex );
- t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) );
- if (iRttiFind == m_rttis.end())
- {
- // RTTI symbol
- OStringBuffer buf( 64 );
- buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
- sal_Int32 index = 0;
- do
- {
- OUString token( unoName.getToken( 0, '.', index ) );
- buf.append( token.getLength() );
- OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
- buf.append( c_token );
- }
- while (index >= 0);
- buf.append( 'E' );
-
- OString symName( buf.makeStringAndClear() );
-#if 1 /* #i22253# */
- rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
-#else
- rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
-#endif
-
- if (rtti)
- {
- pair< t_rtti_map::iterator, bool > insertion(
- m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" );
- }
- else
- {
- // try to lookup the symbol in the generated rtti map
- t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
- if (iFind == m_generatedRttis.end())
- {
- // we must generate it !
- // symbol and rtti-name is nearly identical,
- // the symbol is prefixed with _ZTI
- char const * rttiName = symName.getStr() +4;
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr,"generated rtti for %s\n", rttiName );
-#endif
- if (pTypeDescr->pBaseTypeDescription)
- {
- // ensure availability of base
- type_info * base_rtti = getRTTI(
- (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
- rtti = new __si_class_type_info(
- strdup( rttiName ), (__class_type_info *)base_rtti );
- }
- else
- {
- // this class has no base class
- rtti = new __class_type_info( strdup( rttiName ) );
- }
-
- pair< t_rtti_map::iterator, bool > insertion(
- m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" );
- }
- else // taking already generated rtti
- {
- rtti = iFind->second;
- }
- }
- }
- else
- {
- rtti = iRttiFind->second;
- }
-
- return rtti;
-}
-
-//--------------------------------------------------------------------------------------------------
-static void deleteException( void * pExc )
-{
- __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
- typelib_TypeDescription * pTD = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
- ::typelib_typedescription_getByName( &pTD, unoName.pData );
- OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" );
- if (pTD)
- {
- ::uno_destructData( pExc, pTD, cpp_release );
- ::typelib_typedescription_release( pTD );
- }
-}
-
-//==================================================================================================
-void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
-{
-#if OSL_DEBUG_LEVEL > 1
- OString cstr(
- OUStringToOString(
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() );
-#endif
- void * pCppExc;
- type_info * rtti;
-
- {
- // construct cpp exception object
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
- OSL_ASSERT( pTypeDescr );
- if (! pTypeDescr)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
-
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
- ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
-
- // destruct uno exception
- ::uno_any_destruct( pUnoExc, 0 );
- // avoiding locked counts
- static RTTI * s_rtti = 0;
- if (! s_rtti)
- {
- MutexGuard guard( Mutex::getGlobalMutex() );
- if (! s_rtti)
- {
-#ifdef LEAK_STATIC_DATA
- s_rtti = new RTTI();
-#else
- static RTTI rtti_data;
- s_rtti = &rtti_data;
-#endif
- }
- }
- rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- OSL_ENSURE( rtti, "### no rtti for throwing exception!" );
- if (! rtti)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
- }
-
- __cxa_throw( pCppExc, rtti, deleteException );
-}
-
-//==================================================================================================
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
-{
- if (! header)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ),
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- return;
- }
-
- typelib_TypeDescription * pExcTypeDescr = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
-#if OSL_DEBUG_LEVEL > 1
- OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() );
-#endif
- typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
- if (0 == pExcTypeDescr)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName,
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- }
- else
- {
- // construct uno exception any
- uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
- typelib_typedescription_release( pExcTypeDescr );
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk
deleted file mode 100644
index 3f6274fd36c0..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/makefile.mk
+++ /dev/null
@@ -1,81 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=bridges
-TARGET=gcc3_uno
-LIBTARGET=no
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDIgcc3"
-
-.IF "$(cppu_no_leak)" == ""
-CFLAGS += -DLEAK_STATIC_DATA
-.ENDIF
-
-# In case someone enabled the non-standard -fomit-frame-pointer which does not
-# work with the .cxx sources in this directory:
-CFLAGSCXX += -fno-omit-frame-pointer
-
-CFLAGSNOOPT=-O0
-
-SLOFILES= \
- $(SLO)$/except.obj \
- $(SLO)$/cpp2uno.obj \
- $(SLO)$/uno2cpp.obj \
- $(SLO)$/call.obj
-
-SHL1TARGET= $(TARGET)
-
-SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-SHL1IMPLIB=i$(TARGET)
-SHL1VERSIONMAP=..$/..$/bridge_exports.map
-SHL1RPATH=URELIB
-
-SHL1OBJS = $(SLOFILES)
-SHL1LIBS = $(SLB)$/cpp_uno_shared.lib
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(SALLIB)
-
-.ENDIF
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(SLO)$/%.obj: %.s
- $(CC) -c -o $(SLO)$/$(@:b).o $<
- touch $@
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx
deleted file mode 100644
index da2367ad172b..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/share.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "uno/mapping.h"
-
-#include <typeinfo>
-#include <exception>
-#include <cstddef>
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * );
-
-// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
-
-struct _Unwind_Exception
-{
- unsigned exception_class __attribute__((__mode__(__DI__)));
- void * exception_cleanup;
- unsigned private_1 __attribute__((__mode__(__word__)));
- unsigned private_2 __attribute__((__mode__(__word__)));
-} __attribute__((__aligned__));
-
-struct __cxa_exception
-{
- ::std::type_info *exceptionType;
- void (*exceptionDestructor)(void *);
-
- ::std::unexpected_handler unexpectedHandler;
- ::std::terminate_handler terminateHandler;
-
- __cxa_exception *nextException;
-
- int handlerCount;
-
- int handlerSwitchValue;
- const unsigned char *actionRecord;
- const unsigned char *languageSpecificData;
- void *catchTemp;
- void *adjustedPtr;
-
- _Unwind_Exception unwindHeader;
-};
-
-extern "C" void *__cxa_allocate_exception(
- std::size_t thrown_size ) throw();
-extern "C" void __cxa_throw (
- void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
-
-struct __cxa_eh_globals
-{
- __cxa_exception *caughtExceptions;
- unsigned int uncaughtExceptions;
-};
-extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
-
-// -----
-
-//==================================================================================================
-void raiseException(
- uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-//==================================================================================================
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx
deleted file mode 100644
index f468ffc33715..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx
+++ /dev/null
@@ -1,447 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdlib.h>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/vtables.hxx"
-
-#include "share.hxx"
-
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-namespace
-{
-
-//==================================================================================================
-// The call instruction within the asm section of callVirtualMethod may throw
-// exceptions. So that the compiler handles this correctly, it is important
-// that (a) callVirtualMethod might call dummy_can_throw_anything (although this
-// never happens at runtime), which in turn can throw exceptions, and (b)
-// callVirtualMethod is not inlined at its call site (so that any exceptions are
-// caught which are thrown from the instruction calling callVirtualMethod):
-void callVirtualMethod(
- void * pAdjustedThisPtr,
- sal_Int32 nVtableIndex,
- void * pRegisterReturn,
- typelib_TypeClass eReturnType,
- sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs ) __attribute__((noinline));
-
-void callVirtualMethod(
- void * pAdjustedThisPtr,
- sal_Int32 nVtableIndex,
- void * pRegisterReturn,
- typelib_TypeClass eReturnType,
- sal_Int32 * pStackLongs,
- sal_Int32 nStackLongs )
-{
- // parameter list is mixed list of * and values
- // reference parameters are pointers
-
- OSL_ENSURE( pStackLongs && pAdjustedThisPtr, "### null ptr!" );
- OSL_ENSURE( (sizeof(void *) == 4) && (sizeof(sal_Int32) == 4), "### unexpected size of int!" );
- OSL_ENSURE( nStackLongs && pStackLongs, "### no stack in callVirtualMethod !" );
-
- // never called
- if (! pAdjustedThisPtr) CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything("xxx"); // address something
-
- volatile long edx = 0, eax = 0; // for register returns
- void * stackptr;
- asm volatile (
- "mov %%esp, %6\n\t"
- // copy values
- "mov %0, %%eax\n\t"
- "mov %%eax, %%edx\n\t"
- "dec %%edx\n\t"
- "shl $2, %%edx\n\t"
- "add %1, %%edx\n"
- "Lcopy:\n\t"
- "pushl 0(%%edx)\n\t"
- "sub $4, %%edx\n\t"
- "dec %%eax\n\t"
- "jne Lcopy\n\t"
- // do the actual call
- "mov %2, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "mov %3, %%eax\n\t"
- "shl $2, %%eax\n\t"
- "add %%eax, %%edx\n\t"
- "mov 0(%%edx), %%edx\n\t"
- "call *%%edx\n\t"
- // save return registers
- "mov %%eax, %4\n\t"
- "mov %%edx, %5\n\t"
- // cleanup stack
- "mov %6, %%esp\n\t"
- :
- : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr),
- "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr)
- : "eax", "edx" );
- switch( eReturnType )
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- ((long*)pRegisterReturn)[1] = edx;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_ENUM:
- ((long*)pRegisterReturn)[0] = eax;
- break;
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- *(unsigned short*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- *(unsigned char*)pRegisterReturn = eax;
- break;
- case typelib_TypeClass_FLOAT:
- asm ( "fstps %0" : : "m"(*(char *)pRegisterReturn) );
- break;
- case typelib_TypeClass_DOUBLE:
- asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) );
- break;
- default:
- break;
- }
-}
-
-//==================================================================================================
-static void cpp_call(
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
- bridges::cpp_uno::shared::VtableSlot aVtableSlot,
- typelib_TypeDescriptionReference * pReturnTypeRef,
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
-{
- // max space for: [complex ret ptr], values|ptr ...
- char * pCppStack =
- (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) );
- char * pCppStackStart = pCppStack;
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
- OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
-
- void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
-
- if (pReturnTypeDescr)
- {
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
- {
- pCppReturn = pUnoReturn; // direct way for simple types
- }
- else
- {
- // complex return via ptr
- pCppReturn = *(void **)pCppStack
- = (bridges::cpp_uno::shared::relatesToInterfaceType(
- pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pUnoReturn); // direct way
- pCppStack += sizeof(void *);
- }
- }
- // push this
- void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI())
- + aVtableSlot.offset;
- *(void**)pCppStack = pAdjustedThisPtr;
- pCppStack += sizeof( void* );
-
- // stack space
- OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
- // args
- void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut
- && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- {
- uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_DOUBLE:
- pCppStack += sizeof(sal_Int32); // extra long
- break;
- default:
- break;
- }
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- if (! rParam.bIn) // is pure out
- {
- // cpp out is constructed mem, uno out is not!
- uno_constructData(
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pParamTypeDescr );
- pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType(
- pParamTypeDescr ))
- {
- uno_copyAndConvertData(
- *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos];
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- pCppStack += sizeof(sal_Int32); // standard parameter length
- }
-
- try
- {
- OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" );
- callVirtualMethod(
- pAdjustedThisPtr, aVtableSlot.index,
- pCppReturn, pReturnTypeDescr->eTypeClass,
- (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) );
- // NO exception occured...
- *ppUnoExc = 0;
-
- // reconvert temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bIn)
- {
- if (pParams[nIndex].bOut) // inout
- {
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- }
- else // pure out
- {
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return value
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
- uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
- }
- }
- catch (...)
- {
- // fill uno exception
- fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
-
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- // return type
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
-}
-
-}
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-void unoInterfaceProxyDispatch(
- uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
- void * pReturn, void * pArgs[], uno_Any ** ppException )
-{
- // is my surrogate
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
- = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
-
- switch (pMemberDescr->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription const * >(
- pMemberDescr)));
- if (pReturn)
- {
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
- 0, 0, // no params
- pReturn, pArgs, ppException );
- }
- else
- {
- // is SET
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- typelib_TypeDescriptionReference * pReturnTypeRef = 0;
- OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") );
- typelib_typedescriptionreference_new(
- &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
-
- // dependent dispatch
- aVtableSlot.index += 1; // get, then set method
- cpp_call(
- pThis, aVtableSlot,
- pReturnTypeRef,
- 1, &aParam,
- pReturn, pArgs, ppException );
-
- typelib_typedescriptionreference_release( pReturnTypeRef );
- }
-
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceMethodTypeDescription const * >(
- pMemberDescr)));
- switch (aVtableSlot.index)
- {
- // standard calls
- case 1: // acquire uno interface
- (*pUnoI->acquire)( pUnoI );
- *ppException = 0;
- break;
- case 2: // release uno interface
- (*pUnoI->release)( pUnoI );
- *ppException = 0;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
- if (pTD)
- {
- uno_Interface * pInterface = 0;
- (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)(
- pThis->pBridge->getUnoEnv(),
- (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pReturn ),
- &pInterface, pTD, 0 );
- (*pInterface->release)( pInterface );
- TYPELIB_DANGER_RELEASE( pTD );
- *ppException = 0;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
- pReturn, pArgs, ppException );
- }
- break;
- }
- default:
- {
- ::com::sun::star::uno::RuntimeException aExc(
- OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ),
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
-
- Type const & rExcType = ::getCppuType( &aExc );
- // binary identical null reference
- ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
- }
- }
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx
deleted file mode 100644
index 1ba2a5f46640..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.cxx
+++ /dev/null
@@ -1,358 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-//
-// The code in this file is a modification of src/x86/ffi64.c from libffi
-// (http://sources.redhat.com/libffi/) which is under the following license:
-
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
-
- x86-64 Foreign Function Interface
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- ``Software''), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- ----------------------------------------------------------------------- */
-
-#include <abi.hxx>
-
-#include <rtl/ustring.hxx>
-
-using namespace x86_64;
-
-typedef struct
-{
- /* Registers for argument passing. */
- long gpr[MAX_GPR_REGS];
- __int128_t sse[MAX_SSE_REGS];
-
- /* Stack space for arguments. */
- char argspace[0];
-} stackLayout;
-
-/* Register class used for passing given 64bit part of the argument.
- These represent classes as documented by the PS ABI, with the exception
- of SSESF, SSEDF classes, that are basically SSE class, just gcc will
- use SF or DFmode move instead of DImode to avoid reformating penalties.
-
- Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
- whenever possible (upper half does contain padding).
- */
-enum x86_64_reg_class
-{
- X86_64_NO_CLASS,
- X86_64_INTEGER_CLASS,
- X86_64_INTEGERSI_CLASS,
- X86_64_SSE_CLASS,
- X86_64_SSESF_CLASS,
- X86_64_SSEDF_CLASS,
- X86_64_SSEUP_CLASS,
- X86_64_X87_CLASS,
- X86_64_X87UP_CLASS,
- X86_64_MEMORY_CLASS
-};
-
-#define MAX_CLASSES 4
-
-#define ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1)
-
-/* x86-64 register passing implementation. See x86-64 ABI for details. Goal
- of this code is to classify each 8bytes of incoming argument by the register
- class and assign registers accordingly. */
-
-/* Return the union class of CLASS1 and CLASS2.
- See the x86-64 PS ABI for details. */
-
-static enum x86_64_reg_class
-merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
-{
- /* Rule #1: If both classes are equal, this is the resulting class. */
- if (class1 == class2)
- return class1;
-
- /* Rule #2: If one of the classes is NO_CLASS, the resulting class is
- the other class. */
- if (class1 == X86_64_NO_CLASS)
- return class2;
- if (class2 == X86_64_NO_CLASS)
- return class1;
-
- /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */
- if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */
- if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS)
- || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS))
- return X86_64_INTEGERSI_CLASS;
- if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS
- || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS)
- return X86_64_INTEGER_CLASS;
-
- /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */
- if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS
- || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #6: Otherwise class SSE is used. */
- return X86_64_SSE_CLASS;
-}
-
-/* Classify the argument of type TYPE and mode MODE.
- CLASSES will be filled by the register class used to pass each word
- of the operand. The number of words is returned. In case the parameter
- should be passed in memory, 0 is returned. As a special case for zero
- sized containers, classes[0] will be NO_CLASS and 1 is returned.
-
- See the x86-64 PS ABI for details.
-*/
-static int
-classify_argument( typelib_TypeDescriptionReference *pTypeRef, enum x86_64_reg_class classes[], int &rByteOffset )
-{
- /* First, align to the right place. */
- rByteOffset = ALIGN( rByteOffset, pTypeRef->pType->nAlignment );
-
- switch ( pTypeRef->eTypeClass )
- {
- case typelib_TypeClass_VOID:
- classes[0] = X86_64_NO_CLASS;
- return 1;
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- case typelib_TypeClass_ENUM:
- if ( ( rByteOffset % 8 + pTypeRef->pType->nSize ) <= 4 )
- classes[0] = X86_64_INTEGERSI_CLASS;
- else
- classes[0] = X86_64_INTEGER_CLASS;
- return 1;
- case typelib_TypeClass_FLOAT:
- if ( ( rByteOffset % 8 ) == 0 )
- classes[0] = X86_64_SSESF_CLASS;
- else
- classes[0] = X86_64_SSE_CLASS;
- return 1;
- case typelib_TypeClass_DOUBLE:
- classes[0] = X86_64_SSEDF_CLASS;
- return 1;
- /*case LONGDOUBLE:
- classes[0] = X86_64_X87_CLASS;
- classes[1] = X86_64_X87UP_CLASS;
- return 2;*/
- case typelib_TypeClass_STRING:
- case typelib_TypeClass_TYPE:
- case typelib_TypeClass_ANY:
- case typelib_TypeClass_TYPEDEF:
- case typelib_TypeClass_UNION:
- case typelib_TypeClass_SEQUENCE:
- case typelib_TypeClass_ARRAY:
- case typelib_TypeClass_INTERFACE:
- return 0;
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_EXCEPTION:
- {
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef );
-
- const int UNITS_PER_WORD = 8;
- int words = ( pTypeDescr->nSize + UNITS_PER_WORD - 1 ) / UNITS_PER_WORD;
- enum x86_64_reg_class subclasses[MAX_CLASSES];
-
- /* If the struct is larger than 16 bytes, pass it on the stack. */
- if ( pTypeDescr->nSize > 16 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < words; i++ )
- classes[i] = X86_64_NO_CLASS;
-
- const typelib_CompoundTypeDescription *pStruct = reinterpret_cast<const typelib_CompoundTypeDescription*>( pTypeDescr );
-
- /* Merge the fields of structure. */
- for ( sal_Int32 nMember = 0; nMember < pStruct->nMembers; ++nMember )
- {
- typelib_TypeDescriptionReference *pTypeInStruct = pStruct->ppTypeRefs[ nMember ];
-
- int num = classify_argument( pTypeInStruct, subclasses, rByteOffset );
-
- if ( num == 0 )
- {
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- return 0;
- }
-
- for ( int i = 0; i < num; i++ )
- {
- int pos = rByteOffset / 8;
- classes[i + pos] = merge_classes( subclasses[i], classes[i + pos] );
- }
-
- if ( pTypeInStruct->eTypeClass != typelib_TypeClass_STRUCT )
- rByteOffset = pStruct->pMemberOffsets[ nMember ];
- }
-
- TYPELIB_DANGER_RELEASE( pTypeDescr );
-
- /* Final merger cleanup. */
- for ( int i = 0; i < words; i++ )
- {
- /* If one class is MEMORY, everything should be passed in
- memory. */
- if ( classes[i] == X86_64_MEMORY_CLASS )
- return 0;
-
- /* The X86_64_SSEUP_CLASS should be always preceded by
- X86_64_SSE_CLASS. */
- if ( classes[i] == X86_64_SSEUP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_SSE_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
-
- /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */
- if ( classes[i] == X86_64_X87UP_CLASS
- && ( i == 0 || classes[i - 1] != X86_64_X87_CLASS ) )
- classes[i] = X86_64_SSE_CLASS;
- }
- return words;
- }
-
- default:
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "Unhandled case: pType->eTypeClass == %d\n", pTypeRef->eTypeClass );
-#endif
- OSL_ASSERT(0);
- }
- return 0; /* Never reached. */
-}
-
-/* Examine the argument and return set number of register required in each
- class. Return 0 iff parameter should be passed in memory. */
-bool x86_64::examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE )
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int offset = 0;
- int n;
-
- n = classify_argument( pTypeRef, classes, offset );
-
- if ( n == 0 )
- return false;
-
- nUsedGPR = 0;
- nUsedSSE = 0;
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- nUsedGPR++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- nUsedSSE++;
- break;
- case X86_64_NO_CLASS:
- case X86_64_SSEUP_CLASS:
- break;
- case X86_64_X87_CLASS:
- case X86_64_X87UP_CLASS:
- if ( !bInReturn )
- return false;
- break;
- default:
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "Unhandled case: classes[n] == %d\n", classes[n] );
-#endif
- OSL_ASSERT(0);
- }
- return true;
-}
-
-bool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef )
-{
- int g, s;
-
- return examine_argument( pTypeRef, true, g, s ) == 0;
-}
-
-void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct )
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- int offset = 0;
- int n;
-
- n = classify_argument( pTypeRef, classes, offset );
-
- sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct );
- for ( n--; n >= 0; n-- )
- switch ( classes[n] )
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pGPR++ );
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- *pStructAlign++ = *reinterpret_cast<sal_uInt64 *>( *pSSE++ );
- break;
- }
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx
deleted file mode 100644
index 6d40eafb1c0c..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/abi.hxx
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-#define _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-
-// This is an implementation of the x86-64 ABI as described in 'System V
-// Application Binary Interface, AMD64 Architecture Processor Supplement'
-// (http://www.x86-64.org/documentation/abi-0.95.pdf)
-
-#include <typelib/typedescription.hxx>
-
-namespace x86_64
-{
-
-/* 6 general purpose registers are used for parameter passing */
-const sal_uInt32 MAX_GPR_REGS = 6;
-
-/* 8 SSE registers are used for parameter passing */
-const sal_uInt32 MAX_SSE_REGS = 8;
-
-/* Count number of required registers.
-
- Examine the argument and return set number of register required in each
- class.
-
- Return false iff parameter should be passed in memory.
-*/
-bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE );
-
-/** Does function that returns this type use a hidden parameter, or registers?
-
- The value can be returned either in a hidden 1st parameter (which is a
- pointer to a structure allocated by the caller), or in registers (rax, rdx
- for the integers, xmm0, xmm1 for the floating point numbers).
-*/
-bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef );
-
-void fill_struct( typelib_TypeDescriptionReference *pTypeRef, void * const *pGPR, void * const *pSSE, void *pStruct );
-
-} // namespace x86_64
-
-#endif // _BRIDGES_CPP_UNO_X86_64_ABI_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s
deleted file mode 100644
index 7964399cfeaa..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/call.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .text
- .align 2
-.globl privateSnippetExecutor
- .type privateSnippetExecutor, @function
-privateSnippetExecutor:
-.LFB3:
- pushq %rbp
-.LCFI0:
- movq %rsp, %rbp
-.LCFI1:
- subq $160, %rsp
-.LCFI2:
- movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex
-
- movq %rdi, -112(%rbp) # Save GP registers
- movq %rsi, -104(%rbp)
- movq %rdx, -96(%rbp)
- movq %rcx, -88(%rbp)
- movq %r8 , -80(%rbp)
- movq %r9 , -72(%rbp)
-
- movsd %xmm0, -64(%rbp) # Save FP registers
- movsd %xmm1, -56(%rbp)
- movsd %xmm2, -48(%rbp)
- movsd %xmm3, -40(%rbp)
- movsd %xmm4, -32(%rbp)
- movsd %xmm5, -24(%rbp)
- movsd %xmm6, -16(%rbp)
- movsd %xmm7, -8(%rbp)
-
- leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * pRegisterReturn
- leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw
- leaq -64(%rbp), %rcx # 4th param: void ** fpreg
- leaq -112(%rbp), %rdx # 3rd param: void ** gpreg
- movl -148(%rbp), %esi # 2nd param: sal_int32 nVtableOffset
- movl -152(%rbp), %edi # 1st param: sal_int32 nFunctionIndex
-
- call cpp_vtable_call
-
- cmp $10, %rax # typelib_TypeClass_FLOAT
- je .Lfloat
- cmp $11, %rax # typelib_TypeClass_DOUBLE
- je .Lfloat
-
- movq -144(%rbp), %rax # Return value (int case)
- jmp .Lfinish
-.Lfloat:
- movlpd -144(%rbp), %xmm0 # Return value (float/double case)
-
-.Lfinish:
- leave
- ret
-.LFE3:
- .size privateSnippetExecutor, .-privateSnippetExecutor
- .section .eh_frame,"a",@progbits
-.Lframe1:
- .long .LECIE1-.LSCIE1
-.LSCIE1:
- .long 0x0
- .byte 0x1
- .string "zR"
- .uleb128 0x1
- .sleb128 -8
- .byte 0x10
- .uleb128 0x1
- .byte 0x1b
- .byte 0xc
- .uleb128 0x7
- .uleb128 0x8
- .byte 0x90
- .uleb128 0x1
- .align 8
-.LECIE1:
-.LSFDE1:
- .long .LEFDE1-.LASFDE1
-.LASFDE1:
- .long .LASFDE1-.Lframe1
- .long .LFB3-.
- .long .LFE3-.LFB3
- .uleb128 0x0
- .byte 0x4
- .long .LCFI0-.LFB3
- .byte 0xe
- .uleb128 0x10
- .byte 0x86
- .uleb128 0x2
- .byte 0x4
- .long .LCFI1-.LCFI0
- .byte 0xd
- .uleb128 0x6
- .align 8
-.LEFDE1:
- .section .note.GNU-stack,"",@progbits
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx
deleted file mode 100644
index dcb45eaae62e..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/cpp2uno.cxx
+++ /dev/null
@@ -1,544 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <hash_map>
-
-#include <rtl/alloc.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-#include <typelib/typedescription.hxx>
-
-#include "bridges/cpp_uno/shared/bridge.hxx"
-#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/types.hxx"
-#include "bridges/cpp_uno/shared/vtablefactory.hxx"
-
-#include "abi.hxx"
-#include "share.hxx"
-
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-//==================================================================================================
-
-// Perform the UNO call
-//
-// We must convert the paramaters stored in gpreg, fpreg and ovrflw to UNO
-// arguments and call pThis->getUnoI()->pDispatcher.
-//
-// gpreg: [ret *], this, [gpr params]
-// fpreg: [fpr params]
-// ovrflw: [gpr or fpr params (properly aligned)]
-//
-// [ret *] is present when we are returning a structure bigger than 16 bytes
-// Simple types are returned in rax, rdx (int), or xmm0, xmm1 (fp).
-// Similarly structures <= 16 bytes are in rax, rdx, xmm0, xmm1 as necessary.
-static typelib_TypeClass cpp2uno_call(
- bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
- const typelib_TypeDescription * pMemberTypeDescr,
- typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void ** gpreg, void ** fpreg, void ** ovrflw,
- sal_uInt64 * pRegisterReturn /* space for register return */ )
-{
- int nr_gpr = 0; //number of gpr registers used
- int nr_fpr = 0; //number of fpr regsiters used
-
- // return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- if (pReturnTypeRef)
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
-
- void * pUnoReturn = 0;
- void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
-
- if ( pReturnTypeDescr )
- {
- if ( x86_64::return_in_hidden_param( pReturnTypeRef ) )
- {
- pCppReturn = *gpreg++;
- nr_gpr++;
-
- pUnoReturn = ( bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
- ? alloca( pReturnTypeDescr->nSize )
- : pCppReturn ); // direct way
- }
- else
- pUnoReturn = pRegisterReturn; // direct way for simple types
- }
-
- // pop this
- gpreg++;
- nr_gpr++;
-
- // stack space
- // parameters
- void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
- void ** pCppArgs = pUnoArgs + nParams;
- // indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
- // type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- int nUsedGPR = 0;
- int nUsedSSE = 0;
- bool bFitsRegisters = x86_64::examine_argument( rParam.pTypeRef, false, nUsedGPR, nUsedSSE );
- if ( !rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ) ) // value
- {
- // Simple types must fit exactly one register on x86_64
- OSL_ASSERT( bFitsRegisters && ( ( nUsedSSE == 1 && nUsedGPR == 0 ) || ( nUsedSSE == 0 && nUsedGPR == 1 ) ) );
-
- if ( nUsedSSE == 1 )
- {
- if ( nr_fpr < x86_64::MAX_SSE_REGS )
- {
- pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++;
- nr_fpr++;
- }
- else
- pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++;
- }
- else if ( nUsedGPR == 1 )
- {
- if ( nr_gpr < x86_64::MAX_GPR_REGS )
- {
- pCppArgs[nPos] = pUnoArgs[nPos] = gpreg++;
- nr_gpr++;
- }
- else
- pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw++;
- }
-
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // struct <= 16 bytes || ptr to complex value || ref
- {
- void *pCppStack;
- char pTmpStruct[16];
-
- if ( bFitsRegisters && !rParam.bOut &&
- ( pParamTypeDescr->eTypeClass == typelib_TypeClass_STRUCT ||
- pParamTypeDescr->eTypeClass == typelib_TypeClass_EXCEPTION ) )
- {
- if ( ( nr_gpr + nUsedGPR <= x86_64::MAX_GPR_REGS ) && ( nr_fpr + nUsedSSE <= x86_64::MAX_SSE_REGS ) )
- {
- x86_64::fill_struct( rParam.pTypeRef, gpreg, fpreg, pTmpStruct );
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "nUsedGPR == %d, nUsedSSE == %d, pTmpStruct[0] == 0x%x, pTmpStruct[1] == 0x%x, **gpreg == 0x%lx\n",
- nUsedGPR, nUsedSSE, pTmpStruct[0], pTmpStruct[1], *(sal_uInt64*)*gpreg );
-#endif
-
- pCppArgs[nPos] = pCppStack = reinterpret_cast<void *>( pTmpStruct );
- gpreg += nUsedGPR;
- fpreg += nUsedSSE;
- }
- else
- pCppArgs[nPos] = pCppStack = *ovrflw++;
- }
- else if ( nr_gpr < x86_64::MAX_GPR_REGS )
- {
- pCppArgs[nPos] = pCppStack = *gpreg++;
- nr_gpr++;
- }
- else
- pCppArgs[nPos] = pCppStack = *ovrflw++;
-
- if (! rParam.bIn) // is pure out
- {
- // uno out is unconstructed mem!
- pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
- pTempIndizes[nTempIndizes] = nPos;
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else if ( bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ) ) // is in/inout
- {
- uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pCppStack, pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pUnoArgs[nPos] = pCppStack;
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- }
- }
-
- // ExceptionHolder
- uno_Any aUnoExc; // Any will be constructed by callee
- uno_Any * pUnoExc = &aUnoExc;
-
- // invoke uno dispatch call
- (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
-
- // in case an exception occured...
- if ( pUnoExc )
- {
- // destruct temporary in/inout params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
-
- if (pParams[nIndex].bIn) // is in/inout => was constructed
- uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
-
- CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any
- // is here for dummy
- return typelib_TypeClass_VOID;
- }
- else // else no exception occured...
- {
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if ( pParams[nIndex].bOut ) // inout/out
- {
- // convert and assign
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
- uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- }
- // destroy temp uno param
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return
- if ( pCppReturn ) // has complex return
- {
- if ( pUnoReturn != pCppReturn ) // needs reconversion
- {
- uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
- // destroy temp uno return
- uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
- }
- // complex return ptr is set to return reg
- *(void **)pRegisterReturn = pCppReturn;
- }
- if ( pReturnTypeDescr )
- {
- typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass;
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- return eRet;
- }
- else
- return typelib_TypeClass_VOID;
- }
-}
-
-
-//==================================================================================================
-extern "C" typelib_TypeClass cpp_vtable_call(
- sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset,
- void ** gpreg, void ** fpreg, void ** ovrflw,
- sal_uInt64 * pRegisterReturn /* space for register return */ )
-{
- // gpreg: [ret *], this, [other gpr params]
- // fpreg: [fpr params]
- // ovrflw: [gpr or fpr params (properly aligned)]
- void * pThis;
- if ( nFunctionIndex & 0x80000000 )
- {
- nFunctionIndex &= 0x7fffffff;
- pThis = gpreg[1];
- }
- else
- {
- pThis = gpreg[0];
- }
- pThis = static_cast<char *>( pThis ) - nVtableOffset;
-
- bridges::cpp_uno::shared::CppInterfaceProxy * pCppI =
- bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( pThis );
-
- typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
-
- OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!\n" );
- if ( nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex )
- {
- throw RuntimeException( OUString::createFromAscii("illegal vtable index!"),
- reinterpret_cast<XInterface *>( pCppI ) );
- }
-
- // determine called method
- sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!\n" );
-
- TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
-
- typelib_TypeClass eRet;
- switch ( aMemberDescr.get()->eTypeClass )
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- typelib_TypeDescriptionReference *pAttrTypeRef =
- reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( aMemberDescr.get() )->pAttributeTypeRef;
-
- if ( pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex )
- {
- // is GET method
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(), pAttrTypeRef,
- 0, 0, // no params
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- else
- {
- // is SET method
- typelib_MethodParameter aParam;
- aParam.pTypeRef = pAttrTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(),
- 0, // indicates void return
- 1, &aParam,
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // is METHOD
- switch ( nFunctionIndex )
- {
- case 1: // acquire()
- pCppI->acquireProxy(); // non virtual call!
- eRet = typelib_TypeClass_VOID;
- break;
- case 2: // release()
- pCppI->releaseProxy(); // non virtual call!
- eRet = typelib_TypeClass_VOID;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast<Type *>( gpreg[2] )->getTypeLibType() );
- if ( pTD )
- {
- XInterface * pInterface = 0;
- (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)
- ( pCppI->getBridge()->getCppEnv(),
- (void **)&pInterface,
- pCppI->getOid().pData,
- reinterpret_cast<typelib_InterfaceTypeDescription *>( pTD ) );
-
- if ( pInterface )
- {
- ::uno_any_construct( reinterpret_cast<uno_Any *>( gpreg[0] ),
- &pInterface, pTD, cpp_acquire );
-
- pInterface->release();
- TYPELIB_DANGER_RELEASE( pTD );
-
- reinterpret_cast<void **>( pRegisterReturn )[0] = gpreg[0];
- eRet = typelib_TypeClass_ANY;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- {
- typelib_InterfaceMethodTypeDescription *pMethodTD =
- reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( aMemberDescr.get() );
-
- eRet = cpp2uno_call( pCppI, aMemberDescr.get(),
- pMethodTD->pReturnTypeRef,
- pMethodTD->nParams,
- pMethodTD->pParams,
- gpreg, fpreg, ovrflw, pRegisterReturn );
- }
- }
- break;
- }
- default:
- {
- throw RuntimeException( OUString::createFromAscii("no member description found!"),
- reinterpret_cast<XInterface *>( pCppI ) );
- // is here for dummy
- eRet = typelib_TypeClass_VOID;
- }
- }
-
- return eRet;
-}
-
-//==================================================================================================
-extern "C" void privateSnippetExecutor( ... );
-
-const int codeSnippetSize = 24;
-
-// Generate a trampoline that redirects method calls to
-// privateSnippetExecutor().
-//
-// privateSnippetExecutor() saves all the registers that are used for
-// parameter passing on x86_64, and calls the cpp_vtable_call().
-// When it returns, privateSnippetExecutor() sets the return value.
-//
-// Note: The code snippet we build here must not create a stack frame,
-// otherwise the UNO exceptions stop working thanks to non-existing
-// unwinding info.
-unsigned char * codeSnippet( unsigned char * code,
- sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset,
- bool bHasHiddenParam ) SAL_THROW( () )
-{
- sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex );
-
- if ( bHasHiddenParam )
- nOffsetAndIndex |= 0x80000000;
-
- // movq $<nOffsetAndIndex>, %r10
- *reinterpret_cast<sal_uInt16 *>( code ) = 0xba49;
- *reinterpret_cast<sal_uInt64 *>( code + 2 ) = nOffsetAndIndex;
-
- // movq $<address of the privateSnippetExecutor>, %r11
- *reinterpret_cast<sal_uInt16 *>( code + 10 ) = 0xbb49;
- *reinterpret_cast<sal_uInt64 *>( code + 12 ) = reinterpret_cast<sal_uInt64>( privateSnippetExecutor );
-
- // jmpq *%r11
- *reinterpret_cast<sal_uInt32 *>( code + 20 ) = 0x00e3ff49;
-
- return code + codeSnippetSize;
-}
-
-//==================================================================================================
-struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
-
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
-{
- return static_cast< Slot * >(block) + 2;
-}
-
-//==================================================================================================
-sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
- sal_Int32 slotCount)
-{
- return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
-}
-
-//==================================================================================================
-bridges::cpp_uno::shared::VtableFactory::Slot *
-bridges::cpp_uno::shared::VtableFactory::initializeBlock(
- void * block, sal_Int32 slotCount)
-{
- Slot * slots = mapBlockToVtable(block);
- slots[-2].fn = 0;
- slots[-1].fn = 0;
- return slots + slotCount;
-}
-
-//==================================================================================================
-
-unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
- typelib_InterfaceTypeDescription const * type, sal_Int32 nFunctionOffset,
- sal_Int32 functionCount, sal_Int32 nVtableOffset )
-{
- (*slots) -= functionCount;
- Slot * s = *slots;
-
- for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos )
- {
- typelib_TypeDescription * pTD = 0;
-
- TYPELIB_DANGER_GET( &pTD, type->ppMembers[ nPos ] );
- OSL_ASSERT( pTD );
-
- if ( typelib_TypeClass_INTERFACE_ATTRIBUTE == pTD->eTypeClass )
- {
- typelib_InterfaceAttributeTypeDescription *pAttrTD =
- reinterpret_cast<typelib_InterfaceAttributeTypeDescription *>( pTD );
-
- // get method
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset,
- x86_64::return_in_hidden_param( pAttrTD->pAttributeTypeRef ) );
-
- if ( ! pAttrTD->bReadOnly )
- {
- // set method
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset, false );
- }
- }
- else if ( typelib_TypeClass_INTERFACE_METHOD == pTD->eTypeClass )
- {
- typelib_InterfaceMethodTypeDescription *pMethodTD =
- reinterpret_cast<typelib_InterfaceMethodTypeDescription *>( pTD );
-
- (s++)->fn = code;
- code = codeSnippet( code, nFunctionOffset++, nVtableOffset,
- x86_64::return_in_hidden_param( pMethodTD->pReturnTypeRef ) );
- }
- else
- OSL_ASSERT( false );
-
- TYPELIB_DANGER_RELEASE( pTD );
- }
- return code;
-}
-
-//==================================================================================================
-void bridges::cpp_uno::shared::VtableFactory::flushCode(
- unsigned char const *, unsigned char const * )
-{
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx
deleted file mode 100644
index 0e133d996c91..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/except.cxx
+++ /dev/null
@@ -1,340 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <dlfcn.h>
-#include <cxxabi.h>
-#include <hash_map>
-#include <sys/param.h>
-
-#include <rtl/strbuf.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <osl/diagnose.h>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <typelib/typedescription.hxx>
-#include <uno/any2.h>
-
-#include "share.hxx"
-
-
-using namespace ::std;
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::__cxxabiv1;
-
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * )
-{
-}
-
-//==================================================================================================
-static OUString toUNOname( char const * p ) SAL_THROW( () )
-{
-#if OSL_DEBUG_LEVEL > 1
- char const * start = p;
-#endif
-
- // example: N3com3sun4star4lang24IllegalArgumentExceptionE
-
- OUStringBuffer buf( 64 );
- OSL_ASSERT( 'N' == *p );
- ++p; // skip N
-
- while ('E' != *p)
- {
- // read chars count
- long n = (*p++ - '0');
- while ('0' <= *p && '9' >= *p)
- {
- n *= 10;
- n += (*p++ - '0');
- }
- buf.appendAscii( p, n );
- p += n;
- if ('E' != *p)
- buf.append( (sal_Unicode)'.' );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- OUString ret( buf.makeStringAndClear() );
- OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
- return ret;
-#else
- return buf.makeStringAndClear();
-#endif
-}
-
-//==================================================================================================
-class RTTI
-{
- typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map;
-
- Mutex m_mutex;
- t_rtti_map m_rttis;
- t_rtti_map m_generatedRttis;
-
- void * m_hApp;
-
-public:
- RTTI() SAL_THROW( () );
- ~RTTI() SAL_THROW( () );
-
- type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () );
-};
-//__________________________________________________________________________________________________
-RTTI::RTTI() SAL_THROW( () )
-#if 1
- : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
-#else
- : m_hApp( dlopen( 0, RTLD_LAZY ) )
-#endif
-{
-}
-//__________________________________________________________________________________________________
-RTTI::~RTTI() SAL_THROW( () )
-{
- dlclose( m_hApp );
-}
-
-//__________________________________________________________________________________________________
-type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () )
-{
- type_info * rtti;
-
- OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
-
- MutexGuard guard( m_mutex );
- t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) );
- if (iFind == m_rttis.end())
- {
- // RTTI symbol
- OStringBuffer buf( 64 );
- buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
- sal_Int32 index = 0;
- do
- {
- OUString token( unoName.getToken( 0, '.', index ) );
- buf.append( token.getLength() );
- OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
- buf.append( c_token );
- }
- while (index >= 0);
- buf.append( 'E' );
-
- OString symName( buf.makeStringAndClear() );
-#if 1 /* #i22253# */
- rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
-#else
- rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
-#endif
-
- if (rtti)
- {
- pair< t_rtti_map::iterator, bool > insertion(
- m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" );
- }
- else
- {
- // try to lookup the symbol in the generated rtti map
- t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
- if (iFind == m_generatedRttis.end())
- {
- // we must generate it !
- // symbol and rtti-name is nearly identical,
- // the symbol is prefixed with _ZTI
- char const * rttiName = symName.getStr() +4;
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr,"generated rtti for %s\n", rttiName );
-#endif
- if (pTypeDescr->pBaseTypeDescription)
- {
- // ensure availability of base
- type_info * base_rtti = getRTTI(
- (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
- rtti = new __si_class_type_info(
- strdup( rttiName ), (__class_type_info *)base_rtti );
- }
- else
- {
- // this class has no base class
- rtti = new __class_type_info( strdup( rttiName ) );
- }
-
- pair< t_rtti_map::iterator, bool > insertion(
- m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
- OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" );
- }
- else // taking already generated rtti
- {
- rtti = iFind->second;
- }
- }
- }
- else
- {
- rtti = iFind->second;
- }
-
- return rtti;
-}
-
-//--------------------------------------------------------------------------------------------------
-static void deleteException( void * pExc )
-{
- __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
- typelib_TypeDescription * pTD = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
- ::typelib_typedescription_getByName( &pTD, unoName.pData );
- OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" );
- if (pTD)
- {
- ::uno_destructData( pExc, pTD, cpp_release );
- ::typelib_typedescription_release( pTD );
- }
-}
-
-//==================================================================================================
-void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
-{
-#if OSL_DEBUG_LEVEL > 1
- OString cstr(
- OUStringToOString(
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> uno exception occured: %s\n", cstr.getStr() );
-#endif
- void * pCppExc;
- type_info * rtti;
-
- {
- // construct cpp exception object
- typelib_TypeDescription * pTypeDescr = 0;
- TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
- OSL_ASSERT( pTypeDescr );
- if (! pTypeDescr)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get typedescription for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
-
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
- ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
-
- // destruct uno exception
- ::uno_any_destruct( pUnoExc, 0 );
- // avoiding locked counts
- static RTTI * s_rtti = 0;
- if (! s_rtti)
- {
- MutexGuard guard( Mutex::getGlobalMutex() );
- if (! s_rtti)
- {
-#ifdef LEAK_STATIC_DATA
- s_rtti = new RTTI();
-#else
- static RTTI rtti_data;
- s_rtti = &rtti_data;
-#endif
- }
- }
- rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
- TYPELIB_DANGER_RELEASE( pTypeDescr );
- OSL_ENSURE( rtti, "### no rtti for throwing exception!" );
- if (! rtti)
- {
- throw RuntimeException(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no rtti for type ") ) +
- *reinterpret_cast< OUString const * >( &pUnoExc->pType->pTypeName ),
- Reference< XInterface >() );
- }
- }
-
- __cxa_throw( pCppExc, rtti, deleteException );
-}
-
-//==================================================================================================
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
-{
- if (! header)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("no exception header!") ),
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- return;
- }
-
- typelib_TypeDescription * pExcTypeDescr = 0;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
-#if OSL_DEBUG_LEVEL > 1
- OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
- fprintf( stderr, "> c++ exception occured: %s\n", cstr_unoName.getStr() );
-#endif
- typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
- if (0 == pExcTypeDescr)
- {
- RuntimeException aRE(
- OUString( RTL_CONSTASCII_USTRINGPARAM("exception type not found: ") ) + unoName,
- Reference< XInterface >() );
- Type const & rType = ::getCppuType( &aRE );
- uno_type_any_constructAndConvert( pUnoExc, &aRE, rType.getTypeLibType(), pCpp2Uno );
-#if OSL_DEBUG_LEVEL > 0
- OString cstr( OUStringToOString( aRE.Message, RTL_TEXTENCODING_ASCII_US ) );
- OSL_ENSURE( 0, cstr.getStr() );
-#endif
- }
- else
- {
- // construct uno exception any
- uno_any_constructAndConvert( pUnoExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
- typelib_typedescription_release( pExcTypeDescr );
- }
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk
deleted file mode 100644
index 28df8815ecb9..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..
-
-PRJNAME=bridges
-TARGET=gcc3_uno
-LIBTARGET=no
-ENABLE_EXCEPTIONS=TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDXgcc3"
-
-.IF "$(cppu_no_leak)" == ""
-CFLAGS += -DLEAK_STATIC_DATA
-.ENDIF
-
-# In case someone enabled the non-standard -fomit-frame-pointer which does not
-# work with the .cxx sources in this directory:
-CFLAGSCXX += -fno-omit-frame-pointer
-
-SLOFILES= \
- $(SLO)$/abi.obj \
- $(SLO)$/except.obj \
- $(SLO)$/cpp2uno.obj \
- $(SLO)$/uno2cpp.obj \
- $(SLO)$/call.obj
-
-SHL1TARGET= $(TARGET)
-
-SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-SHL1IMPLIB=i$(TARGET)
-SHL1VERSIONMAP=..$/..$/bridge_exports.map
-SHL1RPATH=URELIB
-
-SHL1OBJS = $(SLOFILES)
-SHL1LIBS = $(SLB)$/cpp_uno_shared.lib
-
-SHL1STDLIBS= \
- $(CPPULIB) \
- $(SALLIB)
-
-.ENDIF
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(SLO)$/%.obj: %.s
- $(CC) -c -o $(SLO)$/$(@:b).o $<
- touch $@
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx
deleted file mode 100644
index da2367ad172b..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/share.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "uno/mapping.h"
-
-#include <typeinfo>
-#include <exception>
-#include <cstddef>
-
-namespace CPPU_CURRENT_NAMESPACE
-{
-
-void dummy_can_throw_anything( char const * );
-
-// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
-
-struct _Unwind_Exception
-{
- unsigned exception_class __attribute__((__mode__(__DI__)));
- void * exception_cleanup;
- unsigned private_1 __attribute__((__mode__(__word__)));
- unsigned private_2 __attribute__((__mode__(__word__)));
-} __attribute__((__aligned__));
-
-struct __cxa_exception
-{
- ::std::type_info *exceptionType;
- void (*exceptionDestructor)(void *);
-
- ::std::unexpected_handler unexpectedHandler;
- ::std::terminate_handler terminateHandler;
-
- __cxa_exception *nextException;
-
- int handlerCount;
-
- int handlerSwitchValue;
- const unsigned char *actionRecord;
- const unsigned char *languageSpecificData;
- void *catchTemp;
- void *adjustedPtr;
-
- _Unwind_Exception unwindHeader;
-};
-
-extern "C" void *__cxa_allocate_exception(
- std::size_t thrown_size ) throw();
-extern "C" void __cxa_throw (
- void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
-
-struct __cxa_eh_globals
-{
- __cxa_exception *caughtExceptions;
- unsigned int uncaughtExceptions;
-};
-extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
-
-// -----
-
-//==================================================================================================
-void raiseException(
- uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-//==================================================================================================
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx
deleted file mode 100644
index d4885fd06274..000000000000
--- a/bridges/source/cpp_uno/gcc3_netbsd_x86-64/uno2cpp.cxx
+++ /dev/null
@@ -1,561 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_bridges.hxx"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <rtl/alloc.h>
-
-#include <com/sun/star/uno/genfunc.hxx>
-#include "com/sun/star/uno/RuntimeException.hpp"
-#include <uno/data.h>
-
-#include <bridges/cpp_uno/shared/bridge.hxx>
-#include <bridges/cpp_uno/shared/types.hxx>
-#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
-#include "bridges/cpp_uno/shared/vtables.hxx"
-
-#include "abi.hxx"
-#include "share.hxx"
-
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-
-//==================================================================================================
-static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
- void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn,
- sal_uInt64 *pStack, sal_uInt32 nStack,
- sal_uInt64 *pGPR, sal_uInt32 nGPR,
- double *pFPR, sal_uInt32 nFPR) __attribute__((noinline));
-
-static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
- void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, bool bSimpleReturn,
- sal_uInt64 *pStack, sal_uInt32 nStack,
- sal_uInt64 *pGPR, sal_uInt32 nGPR,
- double *pFPR, sal_uInt32 nFPR)
-{
-#if OSL_DEBUG_LEVEL > 1
- // Let's figure out what is really going on here
- {
- fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR );
- for ( int i = 0; i < nGPR; ++i )
- fprintf( stderr, "0x%lx, ", pGPR[i] );
- fprintf( stderr, "\nFPR's (%d): ", nFPR );
- for ( int i = 0; i < nFPR; ++i )
- fprintf( stderr, "%f, ", pFPR[i] );
- fprintf( stderr, "\nStack (%d): ", nStack );
- for ( int i = 0; i < nStack; ++i )
- fprintf( stderr, "0x%lx, ", pStack[i] );
- fprintf( stderr, "\n" );
- }
-#endif
-
- // The call instruction within the asm section of callVirtualMethod may throw
- // exceptions. So that the compiler handles this correctly, it is important
- // that (a) callVirtualMethod might call dummy_can_throw_anything (although this
- // never happens at runtime), which in turn can throw exceptions, and (b)
- // callVirtualMethod is not inlined at its call site (so that any exceptions are
- // caught which are thrown from the instruction calling callVirtualMethod):
- if ( !pThis )
- CPPU_CURRENT_NAMESPACE::dummy_can_throw_anything( "xxx" ); // address something
-
- // Should not happen, but...
- if ( nFPR > x86_64::MAX_SSE_REGS )
- nFPR = x86_64::MAX_SSE_REGS;
- if ( nGPR > x86_64::MAX_GPR_REGS )
- nGPR = x86_64::MAX_GPR_REGS;
-
- // Get pointer to method
- sal_uInt64 pMethod = *((sal_uInt64 *)pThis);
- pMethod += 8 * nVtableIndex;
- pMethod = *((sal_uInt64 *)pMethod);
-
- // Load parameters to stack, if necessary
- if ( nStack )
- {
- // 16-bytes aligned
- sal_uInt32 nStackBytes = ( ( nStack + 1 ) >> 1 ) * 16;
- sal_uInt64 *pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes );
- memcpy( pCallStack, pStack, nStackBytes );
- }
-
- // Return values
- sal_uInt64 rax;
- sal_uInt64 rdx;
- double xmm0;
-
- asm volatile (
-
- // Fill the xmm registers
- "movq %2, %%rax\n\t"
-
- "movsd (%%rax), %%xmm0\n\t"
- "movsd 8(%%rax), %%xmm1\n\t"
- "movsd 16(%%rax), %%xmm2\n\t"
- "movsd 24(%%rax), %%xmm3\n\t"
- "movsd 32(%%rax), %%xmm4\n\t"
- "movsd 40(%%rax), %%xmm5\n\t"
- "movsd 48(%%rax), %%xmm6\n\t"
- "movsd 56(%%rax), %%xmm7\n\t"
-
- // Fill the general purpose registers
- "movq %1, %%rax\n\t"
-
- "movq (%%rax), %%rdi\n\t"
- "movq 8(%%rax), %%rsi\n\t"
- "movq 16(%%rax), %%rdx\n\t"
- "movq 24(%%rax), %%rcx\n\t"
- "movq 32(%%rax), %%r8\n\t"
- "movq 40(%%rax), %%r9\n\t"
-
- // Perform the call
- "movq %0, %%r11\n\t"
- "movq %3, %%rax\n\t"
- "call *%%r11\n\t"
-
- // Fill the return values
- "movq %%rax, %4\n\t"
- "movq %%rdx, %5\n\t"
- "movsd %%xmm0, %6\n\t"
- :
- : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ),
- "m" ( rax ), "m" ( rdx ), "m" ( xmm0 )
- : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11"
- );
-
- switch (pReturnTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- *reinterpret_cast<sal_uInt64 *>( pRegisterReturn ) = rax;
- break;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_ENUM:
- *reinterpret_cast<sal_uInt32 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt32*>( &rax );
- break;
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_UNSIGNED_SHORT:
- *reinterpret_cast<sal_uInt16 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt16*>( &rax );
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- *reinterpret_cast<sal_uInt8 *>( pRegisterReturn ) = *reinterpret_cast<sal_uInt8*>( &rax );
- break;
- case typelib_TypeClass_FLOAT:
- case typelib_TypeClass_DOUBLE:
- *reinterpret_cast<double *>( pRegisterReturn ) = xmm0;
- break;
- default:
- {
- sal_Int32 const nRetSize = pReturnTypeDescr->nSize;
- if (bSimpleReturn && nRetSize <= 16 && nRetSize > 0)
- {
- if (nRetSize > 8)
- static_cast<sal_uInt64 *>(pRegisterReturn)[1] = rdx;
- static_cast<sal_uInt64 *>(pRegisterReturn)[0] = rax;
- }
- break;
- }
- }
-}
-
-//==================================================================================================
-
-// Macros for easier insertion of values to registers or stack
-// pSV - pointer to the source
-// nr - order of the value [will be increased if stored to register]
-// pFPR, pGPR - pointer to the registers
-// pDS - pointer to the stack [will be increased if stored here]
-
-// The value in %xmm register is already prepared to be retrieved as a float,
-// thus we treat float and double the same
-#define INSERT_FLOAT_DOUBLE( pSV, nr, pFPR, pDS ) \
- if ( nr < x86_64::MAX_SSE_REGS ) \
- pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim!
-
-#define INSERT_INT64( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV );
-
-#define INSERT_INT32( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV );
-
-#define INSERT_INT16( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV );
-
-#define INSERT_INT8( pSV, nr, pGPR, pDS ) \
- if ( nr < x86_64::MAX_GPR_REGS ) \
- pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \
- else \
- *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV );
-
-//==================================================================================================
-
-static void cpp_call(
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
- bridges::cpp_uno::shared::VtableSlot aVtableSlot,
- typelib_TypeDescriptionReference * pReturnTypeRef,
- sal_Int32 nParams, typelib_MethodParameter * pParams,
- void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
-{
- // Maxium space for [complex ret ptr], values | ptr ...
- // (but will be used less - some of the values will be in pGPR and pFPR)
- sal_uInt64 *pStack = (sal_uInt64 *)__builtin_alloca( (nParams + 3) * sizeof(sal_uInt64) );
- sal_uInt64 *pStackStart = pStack;
-
- sal_uInt64 pGPR[x86_64::MAX_GPR_REGS];
- sal_uInt32 nGPR = 0;
-
- double pFPR[x86_64::MAX_SSE_REGS];
- sal_uInt32 nFPR = 0;
-
- // Return
- typelib_TypeDescription * pReturnTypeDescr = 0;
- TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
- OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
-
- void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion (see below)
-
- bool bSimpleReturn = true;
- if ( pReturnTypeDescr )
- {
- if ( x86_64::return_in_hidden_param( pReturnTypeRef ) )
- bSimpleReturn = false;
-
- if ( bSimpleReturn )
- pCppReturn = pUnoReturn; // direct way for simple types
- else
- {
- // complex return via ptr
- pCppReturn = bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )?
- __builtin_alloca( pReturnTypeDescr->nSize ) : pUnoReturn;
- INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack );
- }
- }
-
- // Push "this" pointer
- void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset;
- INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack );
-
- // Args
- void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
- // Indizes of values this have to be converted (interface conversion cpp<=>uno)
- sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
- // Type descriptions for reconversions
- typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
-
- sal_Int32 nTempIndizes = 0;
-
- for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
- {
- const typelib_MethodParameter & rParam = pParams[nPos];
- typelib_TypeDescription * pParamTypeDescr = 0;
- TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
-
- if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
- {
- uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr,
- pThis->getBridge()->getUno2Cpp() );
-
- switch (pParamTypeDescr->eTypeClass)
- {
- case typelib_TypeClass_HYPER:
- case typelib_TypeClass_UNSIGNED_HYPER:
- INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_LONG:
- case typelib_TypeClass_UNSIGNED_LONG:
- case typelib_TypeClass_ENUM:
- INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_SHORT:
- case typelib_TypeClass_CHAR:
- case typelib_TypeClass_UNSIGNED_SHORT:
- INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_BOOLEAN:
- case typelib_TypeClass_BYTE:
- INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack );
- break;
- case typelib_TypeClass_FLOAT:
- case typelib_TypeClass_DOUBLE:
- INSERT_FLOAT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack );
- break;
- }
-
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- else // ptr to complex value | ref
- {
- if (! rParam.bIn) // is pure out
- {
- // cpp out is constructed mem, uno out is not!
- uno_constructData(
- pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pParamTypeDescr );
- pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- // is in/inout
- else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
- {
- uno_copyAndConvertData(
- pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
- pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
-
- pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
- // will be released at reconversion
- ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
- }
- else // direct way
- {
- pCppArgs[nPos] = pUnoArgs[nPos];
- // no longer needed
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack );
- }
- }
-
- try
- {
- callVirtualMethod(
- pAdjustedThisPtr, aVtableSlot.index,
- pCppReturn, pReturnTypeDescr, bSimpleReturn,
- pStackStart, ( pStack - pStackStart ),
- pGPR, nGPR,
- pFPR, nFPR );
- // NO exception occured...
- *ppUnoExc = 0;
-
- // reconvert temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
-
- if (pParams[nIndex].bIn)
- {
- if (pParams[nIndex].bOut) // inout
- {
- uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- }
- else // pure out
- {
- uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- }
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
-
- TYPELIB_DANGER_RELEASE( pParamTypeDescr );
- }
- // return value
- if (pCppReturn && pUnoReturn != pCppReturn)
- {
- uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
- pThis->getBridge()->getCpp2Uno() );
- uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
- }
- }
- catch (...)
- {
- // fill uno exception
- fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
-
- // temporary params
- for ( ; nTempIndizes--; )
- {
- sal_Int32 nIndex = pTempIndizes[nTempIndizes];
- // destroy temp cpp param => cpp: every param was constructed
- uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
- TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
- }
- // return type
- if (pReturnTypeDescr)
- TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
- }
-}
-
-//==================================================================================================
-
-namespace bridges { namespace cpp_uno { namespace shared {
-
-void unoInterfaceProxyDispatch(
- uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
- void * pReturn, void * pArgs[], uno_Any ** ppException )
-{
- // is my surrogate
- bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
- = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
- typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr;
-
- switch (pMemberDescr->eTypeClass)
- {
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- {
- // determine vtable call index
- sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition;
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" );
-
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceAttributeTypeDescription const * >(
- pMemberDescr)));
-
- if (pReturn)
- {
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
- 0, 0, // no params
- pReturn, pArgs, ppException );
- }
- else
- {
- // is SET
- typelib_MethodParameter aParam;
- aParam.pTypeRef =
- ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
- aParam.bIn = sal_True;
- aParam.bOut = sal_False;
-
- typelib_TypeDescriptionReference * pReturnTypeRef = 0;
- OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") );
- typelib_typedescriptionreference_new(
- &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
-
- // dependent dispatch
- aVtableSlot.index += 1; // get, then set method
- cpp_call(
- pThis, aVtableSlot, // get, then set method
- pReturnTypeRef,
- 1, &aParam,
- pReturn, pArgs, ppException );
-
- typelib_typedescriptionreference_release( pReturnTypeRef );
- }
-
- break;
- }
- case typelib_TypeClass_INTERFACE_METHOD:
- {
- // determine vtable call index
- sal_Int32 nMemberPos = ((typelib_InterfaceMemberTypeDescription *)pMemberDescr)->nPosition;
- OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### member pos out of range!" );
-
- VtableSlot aVtableSlot(
- getVtableSlot(
- reinterpret_cast<
- typelib_InterfaceMethodTypeDescription const * >(
- pMemberDescr)));
-
- switch (aVtableSlot.index)
- {
- // standard calls
- case 1: // acquire uno interface
- (*pUnoI->acquire)( pUnoI );
- *ppException = 0;
- break;
- case 2: // release uno interface
- (*pUnoI->release)( pUnoI );
- *ppException = 0;
- break;
- case 0: // queryInterface() opt
- {
- typelib_TypeDescription * pTD = 0;
- TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
- if (pTD)
- {
- uno_Interface * pInterface = 0;
- (*pThis->getBridge()->getUnoEnv()->getRegisteredInterface)(
- pThis->getBridge()->getUnoEnv(),
- (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
-
- if (pInterface)
- {
- ::uno_any_construct(
- reinterpret_cast< uno_Any * >( pReturn ),
- &pInterface, pTD, 0 );
- (*pInterface->release)( pInterface );
- TYPELIB_DANGER_RELEASE( pTD );
- *ppException = 0;
- break;
- }
- TYPELIB_DANGER_RELEASE( pTD );
- }
- } // else perform queryInterface()
- default:
- // dependent dispatch
- cpp_call(
- pThis, aVtableSlot,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
- ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
- pReturn, pArgs, ppException );
- }
- break;
- }
- default:
- {
- ::com::sun::star::uno::RuntimeException aExc(
- OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ),
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
-
- Type const & rExcType = ::getCppuType( &aExc );
- // binary identical null reference
- ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
- }
- }
-}
-
-} } }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/bridges/source/cpp_uno/shared/vtablefactory.cxx b/bridges/source/cpp_uno/shared/vtablefactory.cxx
index b13c85248ed2..02247de10bf3 100644
--- a/bridges/source/cpp_uno/shared/vtablefactory.cxx
+++ b/bridges/source/cpp_uno/shared/vtablefactory.cxx
@@ -82,7 +82,7 @@ namespace {
extern "C" void * SAL_CALL allocExec(rtl_arena_type *, sal_Size * size) {
sal_Size pagesize;
#if defined SAL_UNX
-#if defined FREEBSD || defined NETBSD
+#if defined FREEBSD || defined NETBSD || defined OPENBSD
pagesize = getpagesize();
#else
pagesize = sysconf(_SC_PAGESIZE);
diff --git a/configure.in b/configure.in
index 7a9dc4317e88..ec349b6371bb 100644
--- a/configure.in
+++ b/configure.in
@@ -1037,9 +1037,6 @@ AC_ARG_WITH(os-version,
Usage: --with-os-version=<OSVERSION>
],,)
-AC_ARG_WITH(unzip-home,
-[ --with-unzip-home Deprecated: use --with-zip-home instead],,)
-
AC_ARG_WITH(zip-home,
[ --with-zip-home If you use a non standard zip, for example windows
please supply the path for zip
@@ -1382,9 +1379,21 @@ case "$build_os" in
test_cups=no
test_randr=no
test_freetype=yes
- PTHREAD_LIBS=-pthread
+ PTHREAD_LIBS=-pthread
_os=AIX
;;
+ openbsd*)
+ test_x=yes
+ test_gtk=yes
+ build_cairo=yes
+ test_kde=yes
+ test_cups=yes
+ test_freetype=yes
+ test_randr=yes
+ PTHREAD_CFLAGS="-pthread -D_THREAD_SAFE"
+ PTHREAD_LIBS="-pthread"
+ _os=OpenBSD
+ ;;
*)
AC_MSG_ERROR([$_os operating system is not suitable to build LibreOffice!])
;;
@@ -3629,6 +3638,9 @@ if test "$enable_epm" = "yes"; then
AIX)
PKGFORMAT=rpm
;;
+ OpenBSD)
+ PKGFORMAT=portable
+ ;;
*BSD)
PKGFORMAT=bsd
;;
@@ -5375,7 +5387,7 @@ fi
dnl ===================================================================
dnl Check for system openssl
dnl ===================================================================
-if test "$_os" = "Darwin" -o "$_os" = "NetBSD" && test "$with_system_openssl" != "no"; then
+if test "$_os" = "Darwin" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" && test "$with_system_openssl" != "no"; then
with_system_openssl=yes
fi
AC_MSG_CHECKING([which libssl to use])
@@ -5384,7 +5396,7 @@ if test -n "$with_system_openssl" -o -n "$with_system_libs" && \
AC_MSG_RESULT([external])
# Mac OS builds should get out without extra stuff is the Mac porters'
# wish. And pkg-config is although Xcode ships a .pc for openssl
- if test "$_os" = "Darwin" -o "$_os" = "NetBSD" ; then
+ if test "$_os" = "Darwin" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" ; then
OPENSSL_CFLAGS=
OPENSSL_LIBS="-lssl -lcrypto"
else
@@ -5882,12 +5894,6 @@ ASM_HOME="$with_asm_home"
AC_SUBST(ASM_HOME)
dnl ===================================================================
-dnl testing handle deprecated unzip switch
-dnl ===================================================================
-if test -z "$with_zip_home"; then
- with_zip_home="$with_unzip_home"
-fi
-dnl ===================================================================
dnl Zip will be found where you tell me to find it
dnl ===================================================================
if test -n "$with_zip_home" ; then
@@ -6999,7 +7005,7 @@ else
LIGHTPROOF_LANG=
# check whether the langs are requested at all
for lang in $wanted_lightproof ; do
- if test -n "`echo $with_lang | grep "$lang"`" ; then
+ if test "$with_lang" = "ALL" -o -n "`echo $with_lang | grep "$lang"`" ; then
LIGHTPROOF_LANG="$LIGHTPROOF_LANG $lang"
fi
done
@@ -7173,7 +7179,7 @@ else
SUNTEMPLATES_LANG=
# check whether the langs are requested at all
for lang in $wanted_sun_templates ; do
- if test -n "`echo $with_lang | grep "$lang"`" ; then
+ if test "$with_lang" = "ALL" -o -n "`echo $with_lang | grep "$lang"`" ; then
SUNTEMPLATES_LANG="$SUNTEMPLATES_LANG $lang"
fi
done
@@ -7665,7 +7671,7 @@ dnl ===================================================================
dnl Number of CPUs to use during the build
dnl ===================================================================
AC_MSG_CHECKING([for number of processors to use])
-if test "z`uname -s`" = "zDarwin"; then
+if test "z`uname -s`" = "zDarwin" -o "z`uname -s`" = "zOpenBSD"; then
BUILD_NCPUS=`sysctl -n hw.ncpu`
else
BUILD_NCPUS=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
diff --git a/connectivity/source/drivers/adabas/BDriver.cxx b/connectivity/source/drivers/adabas/BDriver.cxx
index fb1df922ccfb..8c702e1793b0 100644
--- a/connectivity/source/drivers/adabas/BDriver.cxx
+++ b/connectivity/source/drivers/adabas/BDriver.cxx
@@ -1028,7 +1028,7 @@ int ODriver::X_PARAM(const ::rtl::OUString& _DBNAME,
oslProcess aApp;
#if OSL_DEBUG_LEVEL > 0
- oslProcesError eError =
+ oslProcessError eError =
#endif
osl_executeProcess(sCommandFile.pData, NULL, 0,
osl_Process_HIDDEN | osl_Process_WAIT,
@@ -1071,7 +1071,7 @@ void ODriver::PutParam(const ::rtl::OUString& sDBName,
#if OSL_DEBUG_LEVEL > 0
- oslProcesError eError =
+ oslProcessError eError =
#endif
osl_executeProcess(sCommand.pData, pArgs, nArgsCount,
OPROCESS_ADABAS,
@@ -1180,7 +1180,7 @@ int ODriver::X_STOP(const ::rtl::OUString& sDBName)
::rtl::OUString sArg2 = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-NoDBService"));
const sal_uInt32 nArgsCount = 3;
- rtl_uString* pArgs[nArgsCount] = { sArg1.pData, sDBName.pData, sArg3.pData };
+ rtl_uString* pArgs[nArgsCount] = { sArg1.pData, sDBName.pData, sArg2.pData };
sCommand = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("stp.exe"));
#else
const sal_uInt32 nArgsCount = 1;
@@ -1249,7 +1249,7 @@ void ODriver::XUTIL(const ::rtl::OUString& _rParam,
#if OSL_DEBUG_LEVEL > 0
- oslProcesError eError =
+ oslProcessError eError =
#endif
osl_executeProcess(sCommandFile.pData, NULL, 0,
osl_Process_HIDDEN | osl_Process_WAIT,
@@ -1311,7 +1311,7 @@ void ODriver::LoadBatch(const ::rtl::OUString& sDBName,
#if OSL_DEBUG_LEVEL > 0
- oslProcesError eError =
+ oslProcessError eError =
#endif
osl_executeProcess(sCommandFile.pData, NULL, 0,
osl_Process_HIDDEN | osl_Process_WAIT,
diff --git a/connectivity/source/drivers/ado/makefile.mk b/connectivity/source/drivers/ado/makefile.mk
index 8fdae27db992..54bebe6a2824 100644
--- a/connectivity/source/drivers/ado/makefile.mk
+++ b/connectivity/source/drivers/ado/makefile.mk
@@ -86,6 +86,7 @@ SHL1STDLIBS=\
$(CPPULIB) \
$(CPPUHELPERLIB) \
$(SALLIB) \
+ $(SALHELPERLIB) \
$(OLE32LIB) \
$(OLEAUT32LIB) \
$(UUIDLIB) \
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 3cf9abe0934e..c248af3228e5 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -275,6 +275,7 @@ inline void TypeDescriptor_Init_Impl::callChain(
//__________________________________________________________________________________________________
TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () )
{
+#ifndef CPPU_LEAK_STATIC_DATA
if( pCache )
{
TypeDescriptionList_Impl::const_iterator aIt = pCache->begin();
@@ -354,6 +355,7 @@ TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () )
#endif
delete pCallbacks;
pCallbacks = 0;
+#endif // CPPU_LEAK_STATIC_DATA
if( pMutex )
{
diff --git a/cppu/source/uno/data.cxx b/cppu/source/uno/data.cxx
index 7fb77a81c308..6d2982981d35 100644
--- a/cppu/source/uno/data.cxx
+++ b/cppu/source/uno/data.cxx
@@ -360,7 +360,8 @@ sal_Bool SAL_CALL uno_type_isAssignableFromData(
#endif
#if defined(INTEL) \
- && (defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OS2)) || defined(MACOSX) \
+ && (defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OS2) || \
+ defined(OPENBSD)) || defined(MACOSX) \
|| defined(__SUNPRO_CC) && defined(SOLARIS))
#define MAX_ALIGNMENT_4
#endif
@@ -373,7 +374,8 @@ sal_Bool SAL_CALL uno_type_isAssignableFromData(
if (OFFSET_OF(s, m) != n) { fprintf( stderr, "### OFFSET_OF(" #s ", " #m ") = %d instead of expected %d!!!\n", OFFSET_OF(s, m), n ); abort(); }
#if OSL_DEBUG_LEVEL > 1
-#if defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD)) && (defined(INTEL) || defined(POWERPC) || defined(X86_64) || defined(S390))
+#if defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD) || defined(OPENBSD)) && \
+ (defined(INTEL) || defined(POWERPC) || defined(X86_64) || defined(S390))
#define BINTEST_VERIFYSIZE( s, n ) \
fprintf( stderr, "> sizeof(" #s ") = %d; __alignof__ (" #s ") = %d\n", sizeof(s), __alignof__ (s) ); \
if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %d instead of expected %d!!!\n", sizeof(s), n ); abort(); }
diff --git a/cppu/util/makefile.mk b/cppu/util/makefile.mk
index 2e52c28b5193..f86835309323 100644
--- a/cppu/util/makefile.mk
+++ b/cppu/util/makefile.mk
@@ -60,7 +60,7 @@ SHL1STDLIBS = $(SALLIB)
SHL1DEPN=
SHL1IMPLIB=i$(TARGET)
-.IF "$(OS)"!="FREEBSD"
+.IF "$(OS)"!="FREEBSD" && "$(OS)"!="OPENBSD"
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
.ENDIF
diff --git a/cppu/util/target.pmk b/cppu/util/target.pmk
index 3befcb154753..70be64b8e3f4 100644
--- a/cppu/util/target.pmk
+++ b/cppu/util/target.pmk
@@ -45,9 +45,16 @@ CFLAGS += -O
.ELSE
-# msvc++: no inlining
.IF "$(COM)" == "MSC"
+# msvc++: no inlining
CFLAGS += -Ob0
+.IF "$(cppu_no_leak)" == ""
+.IF "$(bndchk)" == ""
+# msvc++: workaround for strange crash at exit: just don't do the
+# cleanup of types and whatnot...
+CFLAGS += -DCPPU_LEAK_STATIC_DATA
+.ENDIF
+.ENDIF
.ENDIF
.ENDIF
diff --git a/cppunit/makefile.mk b/cppunit/makefile.mk
index 50d489322d31..26e68450277a 100644
--- a/cppunit/makefile.mk
+++ b/cppunit/makefile.mk
@@ -142,7 +142,7 @@ OOO_STLPORT_LIBS += -lstdc++
# execute that program; however, the program would fail to locate the STLport
# library (another work-around might be to add something like --as-needed around
# $(LIBSTLPORT)):
-.IF "$(OS)" == "FREEBSD" || "$(OS)" == "LINUX" || "$(OS)" == "SOLARIS"
+.IF "$(OS)" == "FREEBSD" || "$(OS)" == "LINUX" || "$(OS)" == "SOLARIS" || "$(OS)" == "OPENBSD"
.IF "$(LD_LIBRARY_PATH)" == ""
LD_LIBRARY_PATH := $(SOLARLIBDIR)
# strictly speaking, this is incorrect if the LD_LIBRARY_PATH environment
@@ -183,6 +183,8 @@ OUT2LIB = ooo-install/lib/libcppunit-1.12.1.dylib
EXTRPATH = NONE
.ELIF "$(OS)" == "AIX"
OUT2LIB = ooo-install/lib/libcppunit-1.12.a
+.ELIF "$(OS)" == "OPENBSD"
+OUT2LIB = ooo-install/lib/libcppunit-1.12.so.1.0
.ELSE
OUT2LIB = ooo-install/lib/libcppunit-1.12.so.1
.END
diff --git a/cppunit/prj/d.lst b/cppunit/prj/d.lst
index e881e4a2d033..3e30ad21bbf0 100644
--- a/cppunit/prj/d.lst
+++ b/cppunit/prj/d.lst
@@ -24,6 +24,9 @@ symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.1.dylib %_DEST%\lib%_EXT%\libcppunit.
..\%__SRC%\lib\libcppunit-1.12.so.1 %_DEST%\lib%_EXT%\libcppunit-1.12.so.1
symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.so.1 %_DEST%\lib%_EXT%\libcppunit.so
+..\%__SRC%\lib\libcppunit-1.12.so.1.0 %_DEST%\lib%_EXT%\libcppunit-1.12.so.1.0
+symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.so.1.0 %_DEST%\lib%_EXT%\libcppunit.so
+
..\%__SRC%\lib\libcppunit-1.12.a %_DEST%\lib%_EXT%\libcppunit-1.12.a
symlink: %_DEST%\lib%_EXT%\libcppunit-1.12.a %_DEST%\lib%_EXT%\libcppunit.a
diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx
index 3287aa61072b..d035d1480648 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -1665,7 +1665,7 @@ Reference< XResultSet > ORowSet::impl_prepareAndExecute_throw()
catch( const SQLException& )
{
SQLExceptionInfo aError( ::cppu::getCaughtException() );
- OSL_ENSURE( aError.is(), "ORowSet::impl_prepareAndExecute_throw: caught an SQLException which we cannot analyze!" );
+ OSL_ENSURE( aError.isValid(), "ORowSet::impl_prepareAndExecute_throw: caught an SQLException which we cannot analyze!" );
// append information about what we were actually going to execute
try
diff --git a/dbaccess/source/ui/querydesign/QTableWindow.cxx b/dbaccess/source/ui/querydesign/QTableWindow.cxx
index 405bd8870fab..45135346cde9 100644
--- a/dbaccess/source/ui/querydesign/QTableWindow.cxx
+++ b/dbaccess/source/ui/querydesign/QTableWindow.cxx
@@ -188,7 +188,7 @@ void OQueryTableWindow::OnEntryDoubleClicked(SvLBoxEntry* pEntry)
sal_Bool OQueryTableWindow::ExistsField(const ::rtl::OUString& strFieldName, OTableFieldDescRef& rInfo)
{
DBG_ASSERT(m_pListBox != NULL, "OQueryTableWindow::ExistsField : habe keine ::com::sun::star::form::ListBox !");
- OSL_ENSURE(rInfo.isValid(),"OQueryTableWindow::ExistsField: invlid argument for OTableFieldDescRef!");
+ OSL_ENSURE(rInfo.is(),"OQueryTableWindow::ExistsField: invlid argument for OTableFieldDescRef!");
Reference< XConnection> xConnection = getTableView()->getDesignView()->getController().getConnection();
sal_Bool bExists = sal_False;
if(xConnection.is())
diff --git a/default_images/brand/about-pt_BR.png b/default_images/brand/about-pt_BR.png
index 2c024598a5e7..2c024598a5e7 100755..100644
--- a/default_images/brand/about-pt_BR.png
+++ b/default_images/brand/about-pt_BR.png
Binary files differ
diff --git a/default_images/brand/shell/backing_hc-pt_BR.png b/default_images/brand/shell/backing_hc-pt_BR.png
index 0549dda178ee..c023ea7759f8 100644
--- a/default_images/brand/shell/backing_hc-pt_BR.png
+++ b/default_images/brand/shell/backing_hc-pt_BR.png
Binary files differ
diff --git a/default_images/brand/shell/backing_left-pt_BR.png b/default_images/brand/shell/backing_left-pt_BR.png
index bbaf0ef2bc57..c023ea7759f8 100644
--- a/default_images/brand/shell/backing_left-pt_BR.png
+++ b/default_images/brand/shell/backing_left-pt_BR.png
Binary files differ
diff --git a/default_images/brand/shell/backing_left-pt_BR.svg b/default_images/brand/shell/backing_left-pt_BR.svg
new file mode 100644
index 000000000000..402f0951a39d
--- /dev/null
+++ b/default_images/brand/shell/backing_left-pt_BR.svg
@@ -0,0 +1,1054 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="569"
+ height="582"
+ id="svg3365"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="Start Center (start_OOo_left, start_OOo_middle, start_OOo_right).svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs3367">
+ <linearGradient
+ id="linearGradient7426">
+ <stop
+ id="stop7428"
+ offset="0"
+ style="stop-color:#f2f2f2;stop-opacity:1" />
+ <stop
+ id="stop7430"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3373" />
+ <inkscape:perspective
+ id="perspective2777"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,-750.5598)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2591"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,250.4502)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4800" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3742" />
+ <inkscape:perspective
+ id="perspective3744"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2870" />
+ <inkscape:perspective
+ id="perspective2557"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2531" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2854" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective4034" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3939" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3852" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ id="perspective3771" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective59" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3532" />
+ <inkscape:perspective
+ id="perspective2543"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2818"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2521" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4715" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4717" />
+ <inkscape:perspective
+ id="perspective4719"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4721"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4723"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4725"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4727"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4729"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4731"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4733"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4735" />
+ <inkscape:perspective
+ id="perspective4737"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4739" />
+ <inkscape:perspective
+ id="perspective4741"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4743"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4211" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="391.03 : 12.41 : 1"
+ inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
+ id="perspective3301" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="399.49701 : 12.41 : 1"
+ inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
+ id="perspective3226" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3158" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3146" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2742" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2740" />
+ <inkscape:perspective
+ id="perspective2738"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2736"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2734"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2732"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2730"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2728"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2726"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2724"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2753" />
+ <inkscape:perspective
+ id="perspective2721"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2719" />
+ <inkscape:perspective
+ id="perspective2717"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2715"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="401.944 : 18.512501 : 1"
+ inkscape:persp3d-origin="200.972 : 12.341667 : 1"
+ id="perspective2645" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="385.51999 : 18.512501 : 1"
+ inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
+ id="perspective2633" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2474" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2426" />
+ <inkscape:perspective
+ id="perspective2709"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2567"
+ inkscape:persp3d-origin="116.447 : 10.698667 : 1"
+ inkscape:vp_z="232.894 : 16.048 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 16.048 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2664"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,-750.5598)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2667"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8854545,0,0,0.109589,122.48584,250.4502)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.6224435"
+ inkscape:cx="640.79795"
+ inkscape:cy="255.59842"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1264"
+ inkscape:window-height="750"
+ inkscape:window-x="0"
+ inkscape:window-y="14"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="70.744936,429.98395"
+ id="guide2449" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="75.990283,486.6068"
+ id="guide2451" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="62.002691,482.57192"
+ id="guide2453" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="363.67739,427.83202"
+ id="guide2455" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3370">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Camada 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-86.928567,-218.505)">
+ <text
+ transform="scale(1.0168078,0.98347)"
+ font-size="103.091"
+ id="text43"
+ style="font-size:48.89245605px;font-family:Vegur-Regular"
+ x="2379.1858"
+ y="704.18951" />
+ <text
+ transform="scale(0.9979479,1.0020563)"
+ font-size="103.091"
+ id="text3748"
+ style="font-size:91.03964996px;font-family:Vegur-Regular"
+ x="2273.7813"
+ y="577.92413" />
+ <g
+ id="g2673"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Start Center (start_OOo_left, start_OOo_middle, start_OOo_right).png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <image
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_left.png"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWkAAAJGCAYAAACZaXQwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAALc5JREFUeNrs3QuYVXW9//HfmgEEAQHlJigK QagUapqGaV5OebwValImR9O//sfHjj1qHbtZmp20TpbHjv31gb8ePZq3LInUtLygadrxL2l4QAwF L4ggyB25KOz/fJasYc3av99av7X23jN7D+/X8+xnhj179szsYT7ru76/ywpaWlpMo5o6dWpgAKAL 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 "
+ width="361"
+ height="582"
+ id="image10968"
+ x="86.928566"
+ y="218.505"
+ style="display:inline" />
+ <image
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_right.png"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAAJGCAYAAAD1SnEcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAAQxBJREFUeNrsnQeQXMl53/9vZnZmZ3NEBg44 XMYdLvN4JimSoo4iqWSppJIt2bJluY7loLJKLsmqkmyZtlWUqVCiaYviWYEWJZVIiqIiRfEYdTwe LycSB9whZ2Cxi81hwmv3193vzZvZCW8CsAvs/398nNnJM+jf+0J//XUKgAeKukp69NFH1bX62T3C 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 irBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFooiLBRFERaKIiwURVgoirBQFGGhKMJCURRhoSjCQlGE haIIC0URFooiLBRFWCiKIiwURVgoirBQFGGhKMJCUYSFoggLRVGEhaIIC0URFooiLBRFWCiKsFAU RVgoirBQFGGhKMJCUYSFoggLRREWiqIIC0URFooiLBRFWCiKsFAUYaEoirBQFGGhKMJCUYSFoggL RREWiiIsFEURFooiLBRFWCiKsFAUYaEowkJRhIWiKMJCUYSFoggLRREWiiIsFEVYKIoiLBRFWCiK sFAUYaEowkJRhIWiCAtFUYSFoggLRREWiiIsFEVYKIqwUBRhoSiKsFAUYaEowkJRhIWiCAtFERaK oggLRREWiiIsFEVYKIqwUBRhoSjCQlEUYaEowkJRhIWiCAtFERaKIiwURREWiiIsFEVYKIqwUBRh oSjCQlGEhaIowkJRhIWiCAtFERaKIiwURVgoirBQFEVYKIqwUBRhoSjCQlGEhaIIC0VRhIWiCAtF ERaKIiwURVgoirBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFoqiCAtFERaKIiwURVgoirBQFGGhKMJC URRhoSjCQlGEhaIIC0URFooiLBRFWCiKIiwURVgoirBQFGGhKMJCUYSFoijCQlGEhaIIC0URFooi LBRFWCiKsFAURVgoirBQFGGhKMJCUYSFoggLRREWiqIIC0URFooiLBRFWCiKsFAUYaEoirBQFGGh KMJCUYSFoggLRREWiiIsFEURFooiLBRFWCiKsFAUYaEowkJRFGGhKMJCUYSFoggLRREWiiIsFEVY KIoiLBRFWCiKsFAUYaEowkJRhIWiCAtFUYSFoggLRREWiiIsFEVYKIqwUBRFWCiKsFAUYaEowkJR hIWiCAtFERaKoggLRREWiiIsFEVYKIqwUBRhoSiKsFAUYaEowkJRhIWiCAtFERaKIiwURREWiiIs FEVYKIqwUBRhoSjCQlGEhaIowkJRhIWiCAtFERaKIiwURVgoiiIsFEVYKIqwUBRhoSjCQlGEhaII C0VRhIWiCAtFERaKIiwURVgoirBQFGGhKIqwUBRhoSjCQlGEhaIIC0URFoqiCAtFERaKIiwURVgo irBQFGGhKMJCURRhoSjCQlGEhaIIC0URFooiLBRFERaKIiwURVgoirBQFGGhKMJCUYSFoijCQlGE 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 TkSuQmCC "
+ width="203"
+ height="582"
+ id="image10982"
+ x="452.92856"
+ y="218.505"
+ style="display:inline" />
+ <image
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/test.png"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAJGCAYAAACTPE8OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAADV9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMu MzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRm PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9w aG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0 ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgog ICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSJWaXN1YWwgRGVzaWduZXIiPgogICA8ZGM6cmln aHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TdGVs bGEgU2NodWx6ZTwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnJpZ2h0cz4KICAgPGRj OmNyZWF0b3I+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpPlN0ZWxsYSBTY2h1bHplPC9yZGY6 bGk+CiAgICA8L3JkZjpTZXE+CiAgIDwvZGM6Y3JlYXRvcj4KICAgPGRjOnRpdGxlPgogICAgPHJk ZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+ CiAgIDwvZGM6dGl0bGU+CiAgIDx4bXBSaWdodHM6VXNhZ2VUZXJtcz4KICAgIDxyZGY6QWx0Pgog ICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L3ht cFJpZ2h0czpVc2FnZVRlcm1zPgogICA8SXB0YzR4bXBDb3JlOkNyZWF0b3JDb250YWN0SW5mbwog ICAgSXB0YzR4bXBDb3JlOkNpQWRyRXh0YWRyPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDaXR5 PSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJSZWdpb249IiIKICAgIElwdGM0eG1wQ29yZTpDaUFk clBjb2RlPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJDdHJ5PSIiCiAgICBJcHRjNHhtcENvcmU6 Q2lUZWxXb3JrPSIiCiAgICBJcHRjNHhtcENvcmU6Q2lFbWFpbFdvcms9IiIKICAgIElwdGM0eG1w Q29yZTpDaVVybFdvcms9IiIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6 eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+3TfPlAAAAK5JREFUeNrs2jEOgzAMhWEn4XK9SHIKBs4N IaVrMJLBFTD8llg+PdsMiMlBRIJ0FUUpFQet3Y7nZkZze7w+81zSieqiZG5Pvu3pZZhz/vQY2lbX v08QBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBMFHcCilTD3+TkfHXXJ7Fg2rOenE2bx9vuuV 6l0zX4irGasv2Xzb7dj+nDy8IbfNVNuTKKfdh+j4M3wFGADTUDWBAr7xEgAAAABJRU5ErkJggg== "
+ width="5"
+ height="582"
+ id="image11010"
+ x="447.92856"
+ y="218.505"
+ style="display:inline" />
+ <rect
+ y="250.505"
+ x="122.92857"
+ height="500"
+ width="487"
+ id="rect11032"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ y="250.505"
+ x="122.92857"
+ height="40"
+ width="487"
+ id="rect11255"
+ style="fill:url(#linearGradient2667);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="scale(1,-1)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ style="fill:url(#linearGradient2664);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect11303"
+ width="487"
+ height="40"
+ x="122.92857"
+ y="-750.505" />
+ <g
+ transform="matrix(0.6722998,0,0,0.6722996,239.51336,-664.5004)"
+ id="g11259"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_right.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
+ id="path11261"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
+ id="path11263"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11265"
+ d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
+ id="path11267"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11269"
+ d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
+ id="path11271"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11273"
+ d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
+ id="path11275"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11277"
+ d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
+ id="path11279"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11281"
+ d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
+ id="path11283"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11285"
+ d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
+ id="path11287"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11289"
+ d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
+ id="path11291"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
+ id="path11293"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11295"
+ d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
+ id="path11297"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11299"
+ d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
+ id="path11301"
+ sodipodi:nodetypes="csccscccc" />
+ </g>
+ <g
+ transform="matrix(0.6723,0,0,0.6723,122.92857,-918.4395)"
+ id="g11124"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/start_OOo_left.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11126"
+ d="M 101.93612,1738.725 C 101.18148,1738.706 100.43803,1739.1779 100.14306,1739.8632 C 99.848073,1740.5485 100.02025,1741.4039 100.55836,1741.9261 L 116.75462,1758.1736 C 117.27697,1758.6968 118.12749,1758.8703 118.81733,1758.5942 C 119.50718,1758.3182 119.99483,1757.6092 119.99999,1756.875 L 119.99999,1740.5974 C 120.00199,1739.6166 119.09611,1738.7233 118.10176,1738.725 L 101.93612,1738.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11128"
+ d="M 1.9361232,1838.725 C 1.1814832,1838.706 0.4380332,1839.1779 0.1430632,1839.8632 C -0.1519268,1840.5485 0.0202532,1841.4039 0.5583632,1841.9261 L 16.754623,1858.1736 C 17.276973,1858.6968 18.127493,1858.8703 18.817333,1858.5942 C 19.507183,1858.3182 19.994833,1857.6092 19.999993,1856.875 L 19.999993,1840.5974 C 20.001993,1839.6166 19.096113,1838.7233 18.101763,1838.725 L 1.9361232,1838.725 L 1.9361232,1838.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,1738.725 C 1.1814832,1738.706 0.4380332,1739.1779 0.1430632,1739.8632 C -0.1519268,1740.5485 0.0202532,1741.4039 0.5583632,1741.9261 L 16.754623,1758.1736 C 17.276973,1758.6968 18.127493,1758.8703 18.817333,1758.5942 C 19.507183,1758.3182 19.994833,1757.6092 19.999993,1756.875 L 19.999993,1740.5974 C 20.001993,1739.6166 19.096113,1738.7233 18.101763,1738.725 L 1.9361232,1738.725 L 1.9361232,1738.725 z"
+ id="path11130"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11132"
+ d="M 21.936123,1738.725 C 21.181483,1738.706 20.438033,1739.1779 20.143063,1739.8632 C 19.848073,1740.5485 20.020253,1741.4039 20.558363,1741.9261 L 36.754623,1758.1736 C 37.276973,1758.6968 38.127493,1758.8703 38.817333,1758.5942 C 39.507183,1758.3182 39.994833,1757.6092 39.999993,1756.875 L 39.999993,1740.5974 C 40.001993,1739.6166 39.096113,1738.7233 38.101763,1738.725 L 21.936123,1738.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 41.936123,1738.725 C 41.181483,1738.706 40.438033,1739.1779 40.143063,1739.8632 C 39.848073,1740.5485 40.020253,1741.4039 40.558363,1741.9261 L 56.754623,1758.1736 C 57.276973,1758.6968 58.127493,1758.8703 58.817333,1758.5942 C 59.507183,1758.3182 59.994833,1757.6092 59.999993,1756.875 L 59.999993,1740.5974 C 60.001993,1739.6166 59.096113,1738.7233 58.101763,1738.725 L 41.936123,1738.725 L 41.936123,1738.725 z"
+ id="path11134"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11136"
+ d="M 61.936123,1738.725 C 61.181483,1738.706 60.438033,1739.1779 60.143063,1739.8632 C 59.848073,1740.5485 60.020253,1741.4039 60.558363,1741.9261 L 76.754623,1758.1736 C 77.276973,1758.6968 78.127493,1758.8703 78.817333,1758.5942 C 79.507183,1758.3182 79.994833,1757.6092 79.999993,1756.875 L 79.999993,1740.5974 C 80.001993,1739.6166 79.096113,1738.7233 78.101763,1738.725 L 61.936123,1738.725 L 61.936123,1738.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 81.936123,1738.725 C 81.181483,1738.706 80.438033,1739.1779 80.143063,1739.8632 C 79.848073,1740.5485 80.020253,1741.4039 80.558363,1741.9261 L 96.754623,1758.1736 C 97.276973,1758.6968 98.127493,1758.8703 98.817333,1758.5942 C 99.50718,1758.3182 99.99483,1757.6092 99.99999,1756.875 L 99.99999,1740.5974 C 100.00199,1739.6166 99.09611,1738.7233 98.101763,1738.725 L 81.936123,1738.725 z"
+ id="path11138"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11140"
+ d="M 1.9361232,1758.725 C 1.1814832,1758.706 0.4380332,1759.1779 0.1430632,1759.8632 C -0.1519268,1760.5485 0.0202532,1761.4039 0.5583632,1761.9261 L 16.754623,1778.1736 C 17.276973,1778.6968 18.127493,1778.8703 18.817333,1778.5942 C 19.507183,1778.3182 19.994833,1777.6092 19.999993,1776.875 L 19.999993,1760.5974 C 20.001993,1759.6166 19.096113,1758.7233 18.101763,1758.725 L 1.9361232,1758.725 L 1.9361232,1758.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 21.936123,1758.725 C 21.181483,1758.706 20.438033,1759.1779 20.143063,1759.8632 C 19.848073,1760.5485 20.020253,1761.4039 20.558363,1761.9261 L 36.754623,1778.1736 C 37.276973,1778.6968 38.127493,1778.8703 38.817333,1778.5942 C 39.507183,1778.3182 39.994833,1777.6092 39.999993,1776.875 L 39.999993,1760.5974 C 40.001993,1759.6166 39.096113,1758.7233 38.101763,1758.725 L 21.936123,1758.725 z"
+ id="path11142"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11144"
+ d="M 41.936123,1758.725 C 41.181483,1758.706 40.438033,1759.1779 40.143063,1759.8632 C 39.848073,1760.5485 40.020253,1761.4039 40.558363,1761.9261 L 56.754623,1778.1736 C 57.276973,1778.6968 58.127493,1778.8703 58.817333,1778.5942 C 59.507183,1778.3182 59.994833,1777.6092 59.999993,1776.875 L 59.999993,1760.5974 C 60.001993,1759.6166 59.096113,1758.7233 58.101763,1758.725 L 41.936123,1758.725 L 41.936123,1758.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 61.936123,1758.725 C 61.181483,1758.706 60.438033,1759.1779 60.143063,1759.8632 C 59.848073,1760.5485 60.020253,1761.4039 60.558363,1761.9261 L 76.754623,1778.1736 C 77.276973,1778.6968 78.127493,1778.8703 78.817333,1778.5942 C 79.507183,1778.3182 79.994833,1777.6092 79.999993,1776.875 L 79.999993,1760.5974 C 80.001993,1759.6166 79.096113,1758.7233 78.101763,1758.725 L 61.936123,1758.725 L 61.936123,1758.725 z"
+ id="path11146"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11148"
+ d="M 81.936123,1758.725 C 81.181483,1758.706 80.438033,1759.1779 80.143063,1759.8632 C 79.848073,1760.5485 80.020253,1761.4039 80.558363,1761.9261 L 96.754623,1778.1736 C 97.276973,1778.6968 98.127493,1778.8703 98.817333,1778.5942 C 99.50718,1778.3182 99.99483,1777.6092 99.99999,1776.875 L 99.99999,1760.5974 C 100.00199,1759.6166 99.09611,1758.7233 98.101763,1758.725 L 81.936123,1758.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,1778.725 C 1.1814832,1778.706 0.4380332,1779.1779 0.1430632,1779.8632 C -0.1519268,1780.5485 0.0202532,1781.4039 0.5583632,1781.9261 L 16.754623,1798.1736 C 17.276973,1798.6968 18.127493,1798.8703 18.817333,1798.5942 C 19.507183,1798.3182 19.994833,1797.6092 19.999993,1796.875 L 19.999993,1780.5974 C 20.001993,1779.6166 19.096113,1778.7233 18.101763,1778.725 L 1.9361232,1778.725 L 1.9361232,1778.725 z"
+ id="path11150"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11152"
+ d="M 21.936123,1778.725 C 21.181483,1778.706 20.438033,1779.1779 20.143063,1779.8632 C 19.848073,1780.5485 20.020253,1781.4039 20.558363,1781.9261 L 36.754623,1798.1736 C 37.276973,1798.6968 38.127493,1798.8703 38.817333,1798.5942 C 39.507183,1798.3182 39.994833,1797.6092 39.999993,1796.875 L 39.999993,1780.5974 C 40.001993,1779.6166 39.096113,1778.7233 38.101763,1778.725 L 21.936123,1778.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 41.936123,1778.725 C 41.181483,1778.706 40.438033,1779.1779 40.143063,1779.8632 C 39.848073,1780.5485 40.020253,1781.4039 40.558363,1781.9261 L 56.754623,1798.1736 C 57.276973,1798.6968 58.127493,1798.8703 58.817333,1798.5942 C 59.507183,1798.3182 59.994833,1797.6092 59.999993,1796.875 L 59.999993,1780.5974 C 60.001993,1779.6166 59.096113,1778.7233 58.101763,1778.725 L 41.936123,1778.725 L 41.936123,1778.725 z"
+ id="path11154"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11156"
+ d="M 61.936123,1778.725 C 61.181483,1778.706 60.438033,1779.1779 60.143063,1779.8632 C 59.848073,1780.5485 60.020253,1781.4039 60.558363,1781.9261 L 76.754623,1798.1736 C 77.276973,1798.6968 78.127493,1798.8703 78.817333,1798.5942 C 79.507183,1798.3182 79.994833,1797.6092 79.999993,1796.875 L 79.999993,1780.5974 C 80.001993,1779.6166 79.096113,1778.7233 78.101763,1778.725 L 61.936123,1778.725 L 61.936123,1778.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11158"
+ d="M 1.9361232,1798.725 C 1.1814832,1798.706 0.4380332,1799.1779 0.1430632,1799.8632 C -0.1519268,1800.5485 0.0202532,1801.4039 0.5583632,1801.9261 L 16.754623,1818.1736 C 17.276973,1818.6968 18.127493,1818.8703 18.817333,1818.5942 C 19.507183,1818.3182 19.994833,1817.6092 19.999993,1816.875 L 19.999993,1800.5974 C 20.001993,1799.6166 19.096113,1798.7233 18.101763,1798.725 L 1.9361232,1798.725 L 1.9361232,1798.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 21.936123,1798.725 C 21.181483,1798.706 20.438033,1799.1779 20.143063,1799.8632 C 19.848073,1800.5485 20.020253,1801.4039 20.558363,1801.9261 L 36.754623,1818.1736 C 37.276973,1818.6968 38.127493,1818.8703 38.817333,1818.5942 C 39.507183,1818.3182 39.994833,1817.6092 39.999993,1816.875 L 39.999993,1800.5974 C 40.001993,1799.6166 39.096113,1798.7233 38.101763,1798.725 L 21.936123,1798.725 z"
+ id="path11160"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11162"
+ d="M 41.936123,1798.725 C 41.181483,1798.706 40.438033,1799.1779 40.143063,1799.8632 C 39.848073,1800.5485 40.020253,1801.4039 40.558363,1801.9261 L 56.754623,1818.1736 C 57.276973,1818.6968 58.127493,1818.8703 58.817333,1818.5942 C 59.507183,1818.3182 59.994833,1817.6092 59.999993,1816.875 L 59.999993,1800.5974 C 60.001993,1799.6166 59.096113,1798.7233 58.101763,1798.725 L 41.936123,1798.725 L 41.936123,1798.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,1818.725 C 1.1814832,1818.706 0.4380332,1819.1779 0.1430632,1819.8632 C -0.1519268,1820.5485 0.0202532,1821.4039 0.5583632,1821.9261 L 16.754623,1838.1736 C 17.276973,1838.6968 18.127493,1838.8703 18.817333,1838.5942 C 19.507183,1838.3182 19.994833,1837.6092 19.999993,1836.875 L 19.999993,1820.5974 C 20.001993,1819.6166 19.096113,1818.7233 18.101763,1818.725 L 1.9361232,1818.725 L 1.9361232,1818.725 z"
+ id="path11164"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11166"
+ d="M 21.936123,1818.725 C 21.181483,1818.706 20.438033,1819.1779 20.143063,1819.8632 C 19.848073,1820.5485 20.020253,1821.4039 20.558363,1821.9261 L 36.754623,1838.1736 C 37.276973,1838.6968 38.127493,1838.8703 38.817333,1838.5942 C 39.507183,1838.3182 39.994833,1837.6092 39.999993,1836.875 L 39.999993,1820.5974 C 40.001993,1819.6166 39.096113,1818.7233 38.101763,1818.725 L 21.936123,1818.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <g
+ transform="matrix(0.4001674,0,0,0.4001674,131.63303,218.47696)"
+ id="g4513">
+ <g
+ id="g3252"
+ transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)"
+ style="fill:#000000">
+ <path
+ id="path3254"
+ d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
+ style="fill:#000000" />
+ <path
+ id="path3256"
+ d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3258"
+ d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3260"
+ d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
+ style="fill:#000000" />
+ <path
+ id="path3262"
+ d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3264"
+ d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
+ style="fill:#000000" />
+ <path
+ id="path3266"
+ d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
+ style="fill:#000000" />
+ <path
+ id="path3268"
+ d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
+ style="fill:#000000" />
+ <path
+ id="path3270"
+ d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3272"
+ d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3274"
+ d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
+ style="fill:#000000" />
+ <path
+ id="path3276"
+ d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
+ style="fill:#000000" />
+ <path
+ id="path3278"
+ d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3280"
+ d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
+ style="fill:#000000" />
+ <path
+ id="path3282"
+ d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
+ style="fill:#000000" />
+ <path
+ id="path3284"
+ d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
+ style="fill:#000000" />
+ <path
+ id="path3286"
+ d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
+ style="fill:#000000" />
+ <path
+ id="path3288"
+ d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
+ style="fill:#000000" />
+ <path
+ id="path3290"
+ d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
+ style="fill:#000000" />
+ <path
+ id="path3292"
+ d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
+ style="fill:#000000" />
+ <path
+ id="path3294"
+ d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
+ style="fill:#000000" />
+ </g>
+ <g
+ id="g2496"
+ transform="translate(0,-8.52e-3)"
+ style="fill:#000000">
+ <path
+ id="path2451"
+ d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2453"
+ d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2455"
+ d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
+ style="fill:#000000" />
+ <path
+ id="path2457"
+ d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2459"
+ d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2461"
+ d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
+ style="fill:#000000" />
+ <path
+ id="path2463"
+ d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
+ style="fill:#000000" />
+ <path
+ id="path2465"
+ d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
+ style="fill:#000000" />
+ <path
+ id="path2467"
+ d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
+ style="fill:#18a303;fill-opacity:1" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ sodipodi:nodetypes="csccscccc"
+ id="path3908"
+ d="M 156.43842,248.57158 C 155.16781,248.53958 153.91607,249.33412 153.41943,250.48796 C 152.92276,251.64181 153.21267,253.08203 154.11868,253.96126 L 181.38831,281.31717 C 182.26779,282.19808 183.6998,282.49021 184.8613,282.02534 C 186.0228,281.56063 186.84384,280.36689 186.85253,279.13071 L 186.85253,251.72414 C 186.85591,250.07277 185.33067,248.56872 183.65649,248.57158 L 156.43842,248.57158 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ id="path3910"
+ d="M 81.45645,248.57056 C 79.689041,248.59615 78.270622,250.0379 78.273691,251.80545 L 78.273691,376.66337 C 78.27071,378.43092 79.689112,379.87251 81.45645,379.89809 L 183.61756,379.89809 C 184.4759,379.89944 185.29952,379.55917 185.90647,378.95219 C 186.51345,378.34539 186.85385,377.52172 186.85248,376.66337 L 186.85248,296.25966 C 186.85748,295.39997 186.51946,294.5736 185.91332,293.96395 L 141.72003,249.56192 C 141.11895,248.9366 140.2916,248.57931 139.42427,248.57056 L 81.45645,248.57056 L 81.45645,248.57056 z M 84.691391,255.04034 L 138.06768,255.04034 L 180.38263,297.5642 L 180.38263,373.42832 L 84.691391,373.42832 L 84.691391,255.04034 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <g
+ style="fill:#000000"
+ transform="matrix(0.4499626,0,0,0.4499626,470.6147,716.26539)"
+ id="g2538">
+ <path
+ style="fill:#000000"
+ d="M 19.434,22.643 C 19.434,28.666 14.334,31.876 7.167,31.876 C 5.188,31.876 2.595,31.744 1.7763568e-15,31.393 L 1.7763568e-15,2.198 C 2.946,1.802 5.76,1.626 8.046,1.626 C 14.905,1.626 18.642,4.484 18.642,9.232 C 18.642,12.573 16.004,14.992 13.322,15.783 L 13.322,15.871 C 16.927,16.62 19.434,18.862 19.434,22.643 z M 8.09,14.509 C 11.432,14.509 13.278,12.883 13.278,10.025 C 13.278,7.123 11.387,5.54 8.09,5.54 C 6.991,5.54 5.804,5.628 4.837,5.76 L 4.837,14.509 L 8.09,14.509 z M 4.836,18.246 L 4.836,27.831 C 6.023,27.919 7.21,27.963 8.222,27.963 C 11.739,27.963 14.069,26.468 14.069,23.171 C 14.069,20.005 11.915,18.247 7.87,18.247 L 4.836,18.247 L 4.836,18.246 z"
+ id="path2540" />
+
+ <path
+ style="fill:#000000"
+ d="M 33.558137,28.359 C 35.625137,28.359 37.471137,27.919 39.274137,27.128 L 39.758137,30.777 C 37.559137,31.788 35.537137,32.096 32.679137,32.096 C 26.435137,32.096 22.039137,28.535 22.039137,21.456 C 22.039137,14.641 26.611137,9.849 32.723137,9.849 C 38.219137,9.849 41.340137,14.289 41.340137,19.258 C 41.340137,20.357 41.296137,21.368 41.164137,22.292 L 27.007137,22.292 C 27.271137,26.116 29.469137,28.359 33.558137,28.359 z M 36.636137,18.73 C 36.504137,15.872 35.448137,13.586 32.327137,13.586 C 29.425137,13.586 27.710137,15.565 27.227137,18.73 L 36.636137,18.73 z"
+ id="path2542" />
+
+ <path
+ style="fill:#000000"
+ d="M 56.943067,14.025 L 51.667067,14.025 L 51.667067,25.325 C 51.667067,27.743 52.898067,28.359 54.613067,28.359 C 55.536067,28.359 56.108067,28.271 57.031067,27.963 L 57.514067,31.525 C 56.239067,31.921 54.744067,32.096 52.810067,32.096 C 49.336067,32.096 46.831067,30.426 46.831067,26.513 L 46.831067,14.025 L 43.357067,14.025 L 43.357067,10.288 L 46.831067,10.288 L 46.831067,5.452 L 51.667067,5.452 L 51.667067,10.288 L 56.943067,10.288 L 56.943067,14.025 z"
+ id="path2544" />
+
+ <path
+ style="fill:#000000"
+ d="M 77.2581,17.235 L 77.2581,31.656 L 72.5531,31.656 L 72.4211,28.666 L 72.3331,28.666 C 71.1021,30.864 69.0351,32.095 66.2211,32.095 C 62.6601,32.095 59.4941,29.413 59.4941,25.192 C 59.4941,19.96 64.5941,17.894 69.3431,17.894 C 70.5301,17.894 71.5411,18.026 72.4211,18.158 L 72.4211,17.675 C 72.4211,14.949 71.0581,13.586 67.8041,13.586 C 66.2651,13.586 64.2421,13.982 62.3081,14.817 L 61.8251,11.168 C 64.0671,10.245 66.3981,9.849 68.7281,9.849 C 74.3561,9.849 77.2581,12.53 77.2581,17.235 z M 72.4211,21.192 C 71.6291,21.06 70.6621,20.972 69.6511,20.972 C 67.0571,20.972 64.7711,22.159 64.7711,24.929 C 64.7711,27.304 66.0901,28.534 68.1121,28.534 C 70.5301,28.534 72.4211,26.203 72.4211,22.423 L 72.4211,21.192 z"
+ id="path2546" />
+
+ <path
+ style="fill:#000000"
+ d="M 96.25465,19.213 L 96.25465,31.656 L 91.41865,31.656 L 91.41865,2.55 C 94.45265,1.847 97.22265,1.671 100.08065,1.671 C 106.58765,1.671 110.76465,4.309 110.76465,9.409 C 110.76465,13.586 107.59865,15.784 104.65365,16.796 L 104.65365,16.884 C 106.98365,17.851 108.47865,19.786 109.18165,23.215 C 109.70965,25.853 110.50065,28.843 111.42465,31.657 L 106.01665,31.657 C 105.35665,29.327 104.56565,25.809 104.08165,23.479 C 103.50965,20.797 102.14665,19.214 99.33265,19.214 L 96.25465,19.214 L 96.25465,19.213 z M 99.33265,15.476 C 103.02565,15.476 105.39965,13.718 105.39965,10.112 C 105.39965,7.078 103.06965,5.583 99.64065,5.583 C 98.58465,5.583 97.61765,5.539 96.25465,5.847 L 96.25465,15.475 L 99.33265,15.475 L 99.33265,15.476 z"
+ id="path2548" />
+
+ <path
+ style="fill:#000000"
+ d="M 124.32589,28.359 C 126.39289,28.359 128.23889,27.919 130.04189,27.128 L 130.52589,30.777 C 128.32789,31.788 126.30489,32.096 123.44689,32.096 C 117.20289,32.096 112.80689,28.535 112.80689,21.456 C 112.80689,14.641 117.37889,9.849 123.49089,9.849 C 128.98689,9.849 132.10789,14.289 132.10789,19.258 C 132.10789,20.357 132.06389,21.368 131.93189,22.292 L 117.77489,22.292 C 118.03889,26.116 120.23689,28.359 124.32589,28.359 z M 127.40389,18.73 C 127.27189,15.872 126.21589,13.586 123.09489,13.586 C 120.19289,13.586 118.47789,15.565 117.99489,18.73 L 127.40389,18.73 z"
+ id="path2550" />
+
+ <path
+ style="fill:#000000"
+ d="M 136.30461,31.656 L 136.30461,9.1870955e-15 L 141.14061,9.1870955e-15 L 141.14061,31.656 L 136.30461,31.656 z"
+ id="path2552" />
+
+ <path
+ style="fill:#000000"
+ d="M 156.61054,28.359 C 158.67754,28.359 160.52354,27.919 162.32654,27.128 L 162.81054,30.777 C 160.61254,31.788 158.58954,32.096 155.73154,32.096 C 149.48754,32.096 145.09154,28.535 145.09154,21.456 C 145.09154,14.641 149.66354,9.849 155.77554,9.849 C 161.27154,9.849 164.39354,14.289 164.39354,19.258 C 164.39354,20.357 164.34954,21.368 164.21754,22.292 L 150.05954,22.292 C 150.32354,26.116 152.52154,28.359 156.61054,28.359 z M 159.68854,18.73 C 159.55654,15.872 158.50054,13.586 155.37954,13.586 C 152.47754,13.586 150.76254,15.565 150.27954,18.73 L 159.68854,18.73 z"
+ id="path2554" />
+
+ <path
+ style="fill:#000000"
+ d="M 184.49768,17.235 L 184.49768,31.656 L 179.79268,31.656 L 179.66068,28.666 L 179.57268,28.666 C 178.34268,30.864 176.27568,32.095 173.46168,32.095 C 169.89968,32.095 166.73468,29.413 166.73468,25.192 C 166.73468,19.96 171.83468,17.894 176.58368,17.894 C 177.77068,17.894 178.78168,18.026 179.66068,18.158 L 179.66068,17.675 C 179.66068,14.949 178.29868,13.586 175.04468,13.586 C 173.50568,13.586 171.48268,13.982 169.54868,14.817 L 169.06568,11.168 C 171.30768,10.245 173.63768,9.849 175.96768,9.849 C 181.59468,9.849 184.49768,12.53 184.49768,17.235 z M 179.66068,21.192 C 178.86968,21.06 177.90168,20.972 176.89068,20.972 C 174.29668,20.972 172.00968,22.159 172.00968,24.929 C 172.00968,27.304 173.32868,28.534 175.35168,28.534 C 177.76968,28.534 179.66068,26.203 179.66068,22.423 L 179.66068,21.192 z"
+ id="path2556" />
+
+ <path
+ style="fill:#000000"
+ d="M 188.89671,16.355 C 188.89671,12.662 192.01871,9.848 196.67871,9.848 C 198.92071,9.848 200.63571,10.2 201.86671,10.815 L 201.38371,14.464 C 200.06471,13.893 198.83271,13.585 197.16171,13.585 C 195.35971,13.585 193.95271,14.596 193.95271,16.003 C 193.95271,17.586 194.78771,18.289 196.45871,18.817 C 200.50371,20.092 202.74571,21.323 202.74571,25.104 C 202.74571,29.677 198.87671,32.095 194.17271,32.095 C 191.84271,32.095 189.60071,31.699 188.06171,30.952 L 188.54471,27.259 C 190.47971,28.006 192.19371,28.358 193.82071,28.358 C 196.28271,28.358 197.68971,27.479 197.68971,25.896 C 197.68971,24.445 196.80971,23.61 194.78771,22.994 C 191.75471,22.071 188.89671,20.489 188.89671,16.355 z"
+ id="path2558" />
+
+ <path
+ style="fill:#000000"
+ d="M 216.90675,28.359 C 218.97275,28.359 220.81975,27.919 222.62275,27.128 L 223.10575,30.777 C 220.90775,31.788 218.88475,32.096 216.02675,32.096 C 209.78375,32.096 205.38675,28.535 205.38675,21.456 C 205.38675,14.641 209.95875,9.849 216.07075,9.849 C 221.56675,9.849 224.68875,14.289 224.68875,19.258 C 224.68875,20.357 224.64475,21.368 224.51275,22.292 L 210.35475,22.292 C 210.61875,26.116 212.81775,28.359 216.90675,28.359 z M 219.98375,18.73 C 219.85175,15.872 218.79675,13.586 215.67475,13.586 C 212.77375,13.586 211.05875,15.565 210.57375,18.73 L 219.98375,18.73 z"
+ id="path2560" />
+
+</g>
+ </g>
+ </g>
+</svg>
diff --git a/default_images/brand/shell/backing_right-pt_BR.png b/default_images/brand/shell/backing_right-pt_BR.png
index 355f4adf7c6a..e16bf9637f87 100644
--- a/default_images/brand/shell/backing_right-pt_BR.png
+++ b/default_images/brand/shell/backing_right-pt_BR.png
Binary files differ
diff --git a/default_images/brand/shell/backing_right_hc-pt_BR.png b/default_images/brand/shell/backing_right_hc-pt_BR.png
index 56736f2fc385..e16bf9637f87 100644
--- a/default_images/brand/shell/backing_right_hc-pt_BR.png
+++ b/default_images/brand/shell/backing_right_hc-pt_BR.png
Binary files differ
diff --git a/default_images/res/mainapp_16.png b/default_images/res/mainapp_16.png
index a6d0ad4c6da6..5484fe9bf009 100644
--- a/default_images/res/mainapp_16.png
+++ b/default_images/res/mainapp_16.png
Binary files differ
diff --git a/default_images/res/mainapp_16_8.png b/default_images/res/mainapp_16_8.png
index 7123b3e3d852..5484fe9bf009 100644
--- a/default_images/res/mainapp_16_8.png
+++ b/default_images/res/mainapp_16_8.png
Binary files differ
diff --git a/default_images/res/mainapp_16_h.png b/default_images/res/mainapp_16_h.png
index 764c4f21a3b5..5484fe9bf009 100644
--- a/default_images/res/mainapp_16_h.png
+++ b/default_images/res/mainapp_16_h.png
Binary files differ
diff --git a/default_images/res/mainapp_32.png b/default_images/res/mainapp_32.png
index 7cc7a1652f49..7c474eb0d8bc 100644
--- a/default_images/res/mainapp_32.png
+++ b/default_images/res/mainapp_32.png
Binary files differ
diff --git a/default_images/res/mainapp_32_8.png b/default_images/res/mainapp_32_8.png
index 11fbfbba6c6e..7c474eb0d8bc 100644
--- a/default_images/res/mainapp_32_8.png
+++ b/default_images/res/mainapp_32_8.png
Binary files differ
diff --git a/default_images/res/mainapp_32_h.png b/default_images/res/mainapp_32_h.png
index bb493c78bef7..3dc3057f7d0c 100644
--- a/default_images/res/mainapp_32_h.png
+++ b/default_images/res/mainapp_32_h.png
Binary files differ
diff --git a/default_images/res/mainapp_48_8.png b/default_images/res/mainapp_48_8.png
index 9f80c8ca2c5d..8b5042a34654 100644
--- a/default_images/res/mainapp_48_8.png
+++ b/default_images/res/mainapp_48_8.png
Binary files differ
diff --git a/default_images/res/printeradmin_16.png b/default_images/res/printeradmin_16.png
index 413a765efd47..78e272220ada 100644
--- a/default_images/res/printeradmin_16.png
+++ b/default_images/res/printeradmin_16.png
Binary files differ
diff --git a/default_images/res/printeradmin_16_8.png b/default_images/res/printeradmin_16_8.png
index b4562630e4ec..78e272220ada 100644
--- a/default_images/res/printeradmin_16_8.png
+++ b/default_images/res/printeradmin_16_8.png
Binary files differ
diff --git a/default_images/res/printeradmin_16_h.png b/default_images/res/printeradmin_16_h.png
index e284ef38e481..4d56118df34c 100644
--- a/default_images/res/printeradmin_16_h.png
+++ b/default_images/res/printeradmin_16_h.png
Binary files differ
diff --git a/default_images/res/printeradmin_32.png b/default_images/res/printeradmin_32.png
index 25b19eef5409..dc930e0bfa2e 100644
--- a/default_images/res/printeradmin_32.png
+++ b/default_images/res/printeradmin_32.png
Binary files differ
diff --git a/default_images/res/printeradmin_32_8.png b/default_images/res/printeradmin_32_8.png
index 25b19eef5409..dc930e0bfa2e 100644
--- a/default_images/res/printeradmin_32_8.png
+++ b/default_images/res/printeradmin_32_8.png
Binary files differ
diff --git a/default_images/res/printeradmin_32_h.png b/default_images/res/printeradmin_32_h.png
index 1d9267afdcc2..101c035397ee 100644
--- a/default_images/res/printeradmin_32_h.png
+++ b/default_images/res/printeradmin_32_h.png
Binary files differ
diff --git a/default_images/res/printeradmin_48_8.png b/default_images/res/printeradmin_48_8.png
index 71a89955a6cc..05051f6db8fa 100644
--- a/default_images/res/printeradmin_48_8.png
+++ b/default_images/res/printeradmin_48_8.png
Binary files differ
diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh
index ad8e6efd4dd6..006f28d5250d 100644
--- a/desktop/scripts/soffice.sh
+++ b/desktop/scripts/soffice.sh
@@ -84,11 +84,10 @@ done
if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
sd_binary="oosplash.bin"
- export QSTART_CHECK_ONLY=1
- if "$sd_prog/$sd_binary" -qsend-and-report $*; then
+ # try to connect to a running instance early
+ if "$sd_prog/$sd_binary" -qsend-and-report "$@" ; then
exit 0
fi
- unset QSTART_CHECK_ONLY
fi
# pagein
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index e34720d43d39..9dd988ba4d49 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1465,7 +1465,11 @@ USHORT Desktop::Exception(USHORT nError)
OfficeIPCThread::DisableOfficeIPCThread();
if( pSignalHandler )
osl_removeSignalHandler( pSignalHandler );
+
restartOnMac(false);
+ if ( m_rSplashScreen.is() )
+ m_rSplashScreen->reset();
+
_exit( ExitHelper::E_CRASH_WITH_RESTART );
}
else
@@ -1972,6 +1976,9 @@ void Desktop::Main()
if ( bRestartRequested )
{
restartOnMac(true);
+ if ( m_rSplashScreen.is() )
+ m_rSplashScreen->reset();
+
// wouldn't the solution be more clean if SalMain returns the exit code to the system?
_exit( ExitHelper::E_NORMAL_RESTART );
}
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index 7221db791b09..27ab39b60c44 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -68,6 +68,8 @@
#define PLATFORM_MACOSX_X86 "macosx_x86"
#define PLATFORM_MACOSX_PPC "macosx_powerpc"
#define PLATFORM_OS2_X86 "os2_x86"
+#define PLATFORM_OPENBSD_X86 "openbsd_x86"
+#define PLATFORM_OPENBSD_X86_64 "openbsd_x86_64"
#define PLATFORM_AIX_POWERPC "aix_powerpc"
@@ -187,6 +189,10 @@ namespace
ret = checkOSandCPU(OUSTR("OS2"), OUSTR("x86"));
else if (token.equals(OUSTR(PLATFORM_AIX_POWERPC)))
ret = checkOSandCPU(OUSTR("AIX"), OUSTR("PowerPC"));
+ else if (token.equals(OUSTR(PLATFORM_OPENBSD_X86)))
+ ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("x86"));
+ else if (token.equals(OUSTR(PLATFORM_OPENBSD_X86_64)))
+ ret = checkOSandCPU(OUSTR("OpenBSD"), OUSTR("X86_64"));
else
{
OSL_ENSURE(0, "Extension Manager: The extension supports an unknown platform. "
diff --git a/desktop/unx/source/start.c b/desktop/unx/source/start.c
index 022046abcd4f..84f80d457630 100644
--- a/desktop/unx/source/start.c
+++ b/desktop/unx/source/start.c
@@ -60,6 +60,8 @@
#define PIPEDEFAULTPATH "/tmp"
#define PIPEALTERNATEPATH "/var/tmp"
+typedef enum { ProgressContinue, ProgressRestart, ProgressExit } ProgressStatus;
+
/* Easier conversions: rtl_uString to rtl_String */
static rtl_String *
ustr_to_str( rtl_uString *pStr )
@@ -531,7 +533,7 @@ load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash )
#define BUFFER_LEN 255
/* Read the percent to show in splash. */
-static sal_Bool
+static ProgressStatus
read_percent( int status_fd, int *pPercent )
{
static char pBuffer[BUFFER_LEN + 1];
@@ -570,16 +572,19 @@ read_percent( int status_fd, int *pPercent )
fprintf( stderr, "Got status: %s\n", pBegin );
#endif
if ( !strncasecmp( pBegin, "end", 3 ) )
- return sal_False;
+ return ProgressExit;
+ else if ( !strncasecmp( pBegin, "restart", 7 ) )
+ return ProgressRestart;
else if ( sscanf( pBegin, "%d%%", pPercent ) )
- return sal_True;
+ return ProgressContinue;
- return sal_False;
+ /* unexpected - let's exit the splash to be safe */
+ return ProgressExit;
}
/* Periodically update the splash & the percent acconding to what
status_fd says */
-static void
+static ProgressStatus
show_splash( int status_fd )
{
int nRetval;
@@ -587,6 +592,7 @@ show_splash( int status_fd )
int nPercent = 0;
sal_Bool bFinish = sal_False;
+ ProgressStatus eResult;
/* we want to watch status_fd */
aPfd.fd = status_fd;
@@ -605,10 +611,19 @@ show_splash( int status_fd )
if ( aPfd.revents & ( POLLERR | POLLHUP | POLLNVAL ) )
bFinish = sal_True;
else if ( nRetval > 0 )
- bFinish = !read_percent( status_fd, &nPercent );
+ {
+ eResult = read_percent( status_fd, &nPercent );
+ bFinish = ( eResult != ProgressContinue );
+ }
else if ( nRetval < 0 )
bFinish = sal_True;
} while ( !bFinish );
+
+#if OSL_DEBUG_LEVEL > 0
+ fprintf( stderr, "Finishing, result is %s\n",
+ ( eResult == ProgressContinue )? "continue" : ( ( eResult == ProgressRestart )? "restart" : "exit" ) );
+#endif
+ return eResult;
}
/* Simple system check. */
@@ -779,6 +794,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
sal_Bool bSentArgs = sal_False;
rtl_uString *pAppPath = NULL;
rtl_uString *pPipePath = NULL;
+ ProgressStatus eResult = ProgressExit;
/* turn SIGPIPE into an error */
signal( SIGPIPE, SIG_IGN );
@@ -793,7 +809,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
}
ustr_debug( "App path", pAppPath );
- bSendAndReport = argc > 1 && !strcmp (argv[1], "-qsend-and-report");
+ bSendAndReport = argc > 1 && !strcmp (argv[1], QSEND_AND_REPORT);
pPipePath = get_pipe_path( pAppPath );
@@ -809,26 +825,28 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
ustr_debug( "Failed to connect to pipe", pPipePath );
#endif
- if (bSendAndReport)
- return !bSentArgs;
-
- if ( !bSentArgs )
+ if ( !bSendAndReport && !bSentArgs )
{
- if ( !fork_app( pAppPath, &status_fd ) )
- return 1;
+ /* we have to exec the binary */
+ do {
+ if ( !fork_app( pAppPath, &status_fd ) )
+ return 1;
- if ( !bInhibitSplash )
- {
- load_splash_image( pAppPath );
- load_splash_defaults( pAppPath, &bInhibitSplash );
- }
+ if ( !bInhibitSplash )
+ {
+ load_splash_image( pAppPath );
+ load_splash_defaults( pAppPath, &bInhibitSplash );
+ }
- if ( !bInhibitSplash && splash_create_window( argc, argv ) )
- {
- splash_draw_progress( 0 );
- show_splash( status_fd );
- splash_close_window();
- }
+ if ( !bInhibitSplash && splash_create_window( argc, argv ) )
+ {
+ splash_draw_progress( 0 );
+ eResult = show_splash( status_fd );
+ splash_close_window();
+ }
+
+ close( status_fd );
+ } while ( eResult == ProgressRestart );
}
/* cleanup */
@@ -836,9 +854,8 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
rtl_uString_release( pPipePath );
close( fd );
- close( status_fd );
- return 0;
+ return bSendAndReport? !bSentArgs : 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/unx/splash/unxsplash.cxx b/desktop/unx/splash/unxsplash.cxx
index 7db15a898777..6c1501416322 100644
--- a/desktop/unx/splash/unxsplash.cxx
+++ b/desktop/unx/splash/unxsplash.cxx
@@ -84,7 +84,12 @@ void SAL_CALL UnxSplashScreen::end()
void SAL_CALL UnxSplashScreen::reset()
throw ( RuntimeException )
{
- // TODO?
+#if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "UnxSplashScreen::reset()\n" );
+#endif
+
+ fprintf( m_pOutFd, "restart\n" );
+ fflush( m_pOutFd );
}
void SAL_CALL UnxSplashScreen::setText( const OUString& /*aText*/ )
diff --git a/extensions/source/nsplugin/source/makefile.mk b/extensions/source/nsplugin/source/makefile.mk
index 4f9be74348ab..1790851bd3d0 100644
--- a/extensions/source/nsplugin/source/makefile.mk
+++ b/extensions/source/nsplugin/source/makefile.mk
@@ -49,7 +49,7 @@ dummy:
@echo GTK disabled - nothing to build
.ELSE # "$(ENABLE_GTK)"==""
-.IF "$(OS)"=="LINUX" || "$(OS)"=="FREEBSD"
+.IF "$(OS)"=="LINUX" || "$(OS)"=="FREEBSD" || "$(OS)"=="OPENBSD"
INC+= -DNP_LINUX
.ENDIF
PKGCONFIG_MODULES=gtk+-2.0
diff --git a/extensions/source/oooimprovecore/core.cxx b/extensions/source/oooimprovecore/core.cxx
index 4510a8fe21af..472d844337a3 100644
--- a/extensions/source/oooimprovecore/core.cxx
+++ b/extensions/source/oooimprovecore/core.cxx
@@ -131,7 +131,7 @@ namespace oooimprovecore
OUString::createFromAscii("HelpUrl"),
::comphelper::ConfigurationHelper::E_READONLY) >>= help_url;
else
- help_url = OUString::createFromAscii("http://www.openoffice.org");
+ help_url = OUString::createFromAscii("http://www.libreoffice.org");
{
SolarMutexGuard aGuard;
SfxAllItemSet aSet( SFX_APP()->GetPool() );
diff --git a/extensions/source/plugin/unx/makefile.mk b/extensions/source/plugin/unx/makefile.mk
index f3b7b480e6b9..0e9b5d454596 100644
--- a/extensions/source/plugin/unx/makefile.mk
+++ b/extensions/source/plugin/unx/makefile.mk
@@ -77,7 +77,7 @@ APP1STDLIBS+=-lXm -lXt $(X11LINK_DYNAMIC) -ldl
.IF "$(DISABLE_XAW)" != "TRUE"
APP1STDLIBS+=-lXaw
.ENDIF
-.IF "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD"
+.IF "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || "$(OS)"=="OPENBSD"
APP1STDLIBS+= -lXt -lXext -lX11
.ELIF "$(OS)"=="AIX"
APP1STDLIBS+= -lXpm -lXmu -lXt $(X11LINK_DYNAMIC) -ldl
diff --git a/extensions/source/scanner/makefile.mk b/extensions/source/scanner/makefile.mk
index 26ed6e70e6a9..baaefdf66e7d 100644
--- a/extensions/source/scanner/makefile.mk
+++ b/extensions/source/scanner/makefile.mk
@@ -76,13 +76,10 @@ SHL1STDLIBS=\
$(VCLLIB) \
$(SVTOOLLIB)
-.IF "$(GUI)"=="UNX"
-.IF "$(OS)"!="FREEBSD"
-.IF "$(OS)"!="NETBSD"
+.IF "$(GUI)"=="UNX" && "$(OS)"!="FREEBSD" && \
+ "$(OS)"!="NETBSD" && "$(OS)"!="OPENBSD"
SHL1STDLIBS+=$(SVTOOLLIB) -ldl
.ENDIF
-.ENDIF
-.ENDIF
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
SHL1IMPLIB=i$(TARGET)
diff --git a/external/gcc3_specific/makefile.mk b/external/gcc3_specific/makefile.mk
index d285fb34166a..dd84b5327234 100644
--- a/external/gcc3_specific/makefile.mk
+++ b/external/gcc3_specific/makefile.mk
@@ -45,6 +45,7 @@ $(MINGWGXXDLL) :
.IF "$(OS)"!="MACOSX"
.IF "$(OS)"!="FREEBSD"
.IF "$(OS)"!="NETBSD"
+.IF "$(OS)"!="OPENBSD"
.EXPORT : CC
@@ -73,6 +74,7 @@ $(LB)$/libgcc_s.so.$(SHORTSTDC3) :
.ENDIF
.ENDIF
+.ENDIF
.ENDIF
.ENDIF
diff --git a/filter/source/svg/b2dellipse.cxx b/filter/source/svg/b2dellipse.cxx
index 0ef755817c20..802b2f4aac4c 100644
--- a/filter/source/svg/b2dellipse.cxx
+++ b/filter/source/svg/b2dellipse.cxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#include "b2dellipse.hxx"
#include <osl/diagnose.h>
diff --git a/filter/source/svg/b2dellipse.hxx b/filter/source/svg/b2dellipse.hxx
index a8e4e471a884..dda447d30fc8 100644
--- a/filter/source/svg/b2dellipse.hxx
+++ b/filter/source/svg/b2dellipse.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef _BASEGFX_B2DELLIPSE_HXX
#define _BASEGFX_B2DELLIPSE_HXX
diff --git a/filter/source/svg/gentoken.pl b/filter/source/svg/gentoken.pl
index 75bb1e262aab..9229fa7a637c 100644
--- a/filter/source/svg/gentoken.pl
+++ b/filter/source/svg/gentoken.pl
@@ -1,4 +1,29 @@
-# from oox/source/token - should really put this into solenv
+#!/usr/bin/env perl
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Initial Developer of the Original Code is
+# Thorsten Behrens <tbehrens@novell.com>
+# All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
$ARGV0 = shift @ARGV;
$ARGV1 = shift @ARGV;
diff --git a/filter/source/svg/gfxtypes.hxx b/filter/source/svg/gfxtypes.hxx
index 2b7187d2e76c..242888f0d7ca 100644
--- a/filter/source/svg/gfxtypes.hxx
+++ b/filter/source/svg/gfxtypes.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_GFXTYPES_HXX
#define INCLUDED_GFXTYPES_HXX
diff --git a/filter/source/svg/parserfragments.cxx b/filter/source/svg/parserfragments.cxx
index 44e5fbbcbefd..a85de2fbb6c7 100644
--- a/filter/source/svg/parserfragments.cxx
+++ b/filter/source/svg/parserfragments.cxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_filter.hxx"
diff --git a/filter/source/svg/parserfragments.hxx b/filter/source/svg/parserfragments.hxx
index 8770d52a2273..c32af7122b5c 100644
--- a/filter/source/svg/parserfragments.hxx
+++ b/filter/source/svg/parserfragments.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_PARSERFRAGMENTS_HXX
#define INCLUDED_PARSERFRAGMENTS_HXX
diff --git a/filter/source/svg/spirit_supplements.hxx b/filter/source/svg/spirit_supplements.hxx
index afa97bf90d3f..968cdacd7ec3 100644
--- a/filter/source/svg/spirit_supplements.hxx
+++ b/filter/source/svg/spirit_supplements.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_SPIRIT_SUPPLEMENTS_HXX
#define INCLUDED_SPIRIT_SUPPLEMENTS_HXX
diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx
index 48fa362bde6d..10e152e30dce 100644
--- a/filter/source/svg/svgreader.cxx
+++ b/filter/source/svg/svgreader.cxx
@@ -1,20 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
- * Parts copyright 2005 by Sun Microsystems, Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_filter.hxx"
diff --git a/filter/source/svg/svgreader.hxx b/filter/source/svg/svgreader.hxx
index 232fc31f122e..67318f366f0d 100644
--- a/filter/source/svg/svgreader.hxx
+++ b/filter/source/svg/svgreader.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_SVGREADER_HXX
#define INCLUDED_SVGREADER_HXX
diff --git a/filter/source/svg/test/parsertest.cxx b/filter/source/svg/test/parsertest.cxx
index 024900c9605d..89728fec673f 100644
--- a/filter/source/svg/test/parsertest.cxx
+++ b/filter/source/svg/test/parsertest.cxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 31.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_filter.hxx"
diff --git a/filter/source/svg/tokenmap.hxx b/filter/source/svg/tokenmap.hxx
index 15a50abe3485..20a25d96a4be 100644
--- a/filter/source/svg/tokenmap.hxx
+++ b/filter/source/svg/tokenmap.hxx
@@ -1,19 +1,29 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_TOKENMAP_HXX
#define INCLUDED_TOKENMAP_HXX
diff --git a/filter/source/svg/units.cxx b/filter/source/svg/units.cxx
index af62a1ca1520..96a810dccc8c 100644
--- a/filter/source/svg/units.cxx
+++ b/filter/source/svg/units.cxx
@@ -1,20 +1,30 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Jan Holesovsky <kendy@suse.cz>
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Jan Holesovsky <kendy@suse.cz>
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_filter.hxx"
diff --git a/filter/source/svg/units.hxx b/filter/source/svg/units.hxx
index d8c0364584dd..9e6cd81014bb 100644
--- a/filter/source/svg/units.hxx
+++ b/filter/source/svg/units.hxx
@@ -1,20 +1,30 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
*
- * OpenOffice.org - a multi-platform office productivity suite
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
*
- * Author:
- * Jan Holesovsky <kendy@suse.cz>
- * Fridrich Strba <fridrich.strba@bluewin.ch>
- * Thorsten Behrens <tbehrens@novell.com>
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
*
- * Copyright (C) 2008, Novell Inc.
+ * The Initial Developer of the Original Code is
+ * Jan Holesovsky <kendy@suse.cz>
+ * Fridrich Strba <fridrich.strba@bluewin.ch>
+ * Thorsten Behrens <tbehrens@novell.com>
*
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 3.
+ * Contributor(s):
*
- ************************************************************************/
-
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
#ifndef INCLUDED_UNITS_HXX
#define INCLUDED_UNITS_HXX
diff --git a/fpicker/source/aqua/SalAquaConstants.h b/fpicker/source/aqua/SalAquaConstants.h
index 7610e13363e5..7a1ecd353abe 100644
--- a/fpicker/source/aqua/SalAquaConstants.h
+++ b/fpicker/source/aqua/SalAquaConstants.h
@@ -29,7 +29,7 @@
#ifndef _SALAQUACONSTANTS_H_
#define _SALAQUACONSTANTS_H_
-#define kAppFourCharCode 'OOo2'
+#define kAppFourCharCode 'LibO'
#define kControlPropertyTracking 'Trck'
#define kControlPropertyLastPartCode 'LsPc'
#define kControlPropertySubType 'SuTy'
diff --git a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
index 8cbfb7a59b9d..28e081b9f62a 100644
--- a/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
+++ b/fpicker/source/unx/gnome/SalGtkFilePicker.cxx
@@ -909,6 +909,9 @@ uno::Sequence<rtl::OUString> SAL_CALL SalGtkFilePicker::getSelectedFiles() throw
{
static const OUString aStarDot = OUString::createFromAscii( "*." );
+ ::rtl::OUString aNewFilter;
+ ::rtl::OUString aOldFilter = getCurrentFilter();
+ sal_Bool bChangeFilter = sal_True;
for ( FilterList::iterator aListIter = m_pFilterList->begin();
aListIter != m_pFilterList->end();
++aListIter
@@ -916,11 +919,17 @@ uno::Sequence<rtl::OUString> SAL_CALL SalGtkFilePicker::getSelectedFiles() throw
{
if( aListIter->getFilter().indexOf( aStarDot+sExtension ) >= 0 )
{
- setCurrentFilter( aListIter->getTitle() );
+ if( !aNewFilter.getLength() )
+ aNewFilter = aListIter->getTitle();
+
+ if( aOldFilter == aListIter->getTitle() )
+ bChangeFilter = sal_False;
+
bExtensionTypedIn = true;
- break;
}
}
+ if( bChangeFilter && bExtensionTypedIn )
+ setCurrentFilter( aNewFilter );
}
}
diff --git a/framework/uiconfig/startmodule/menubar/menubar.xml b/framework/uiconfig/startmodule/menubar/menubar.xml
index b7bcbd51c225..fac0b3c0815c 100644
--- a/framework/uiconfig/startmodule/menubar/menubar.xml
+++ b/framework/uiconfig/startmodule/menubar/menubar.xml
@@ -76,6 +76,7 @@
<menu:menuseparator/>
<menu:menuitem menu:id=".uno:ShowLicense"/>
<menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Credits"/>
<menu:menuitem menu:id=".uno:About"/>
</menu:menupopup>
</menu:menu>
diff --git a/hyphen/hyphen-2.4.patch b/hyphen/hyphen-2.4.patch
index 33947f550a88..50c859bfec57 100644
--- a/hyphen/hyphen-2.4.patch
+++ b/hyphen/hyphen-2.4.patch
@@ -166,4 +166,11 @@ diff -u misc/hyphen-2.4/makefile.mk misc/build/hyphen-2.4/makefile.mk
+ALL: ALLTAR
+
+.INCLUDE : target.mk
-Common subdirectories: misc/hyphen-2.4/tests and misc/build/hyphen-2.4/tests
+--- misc/hyphen-2.4/tests/test.sh Wed Apr 30 14:12:33 2008
++++ misc/build/hyphen-2.4/tests/test.sh Fri Nov 5 09:05:16 2010
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+
+ function check_valgrind_log () {
+ if [ "$VALGRIND" != "" ]; then
diff --git a/idlc/inc/idlc/idlc.hxx b/idlc/inc/idlc/idlc.hxx
index 9f8a0f25ede9..8262b26fc095 100644
--- a/idlc/inc/idlc/idlc.hxx
+++ b/idlc/inc/idlc/idlc.hxx
@@ -103,6 +103,12 @@ public:
{ m_warningCount++; }
sal_uInt32 getLineNumber()
{ return m_lineNumber; }
+ sal_uInt32 getOffsetStart()
+ { return m_offsetStart; }
+ sal_uInt32 getOffsetEnd()
+ { return m_offsetEnd; }
+ void setOffset( sal_uInt32 start, sal_uInt32 end)
+ { m_offsetStart = start; m_offsetEnd = end; }
void setLineNumber(sal_uInt32 lineNumber)
{ m_lineNumber = lineNumber; }
void incLineNumber()
@@ -137,6 +143,8 @@ private:
sal_uInt32 m_errorCount;
sal_uInt32 m_warningCount;
sal_uInt32 m_lineNumber;
+ sal_uInt32 m_offsetStart;
+ sal_uInt32 m_offsetEnd;
ParseState m_parseState;
StringSet m_includes;
};
diff --git a/idlc/source/errorhandler.cxx b/idlc/source/errorhandler.cxx
index 19d328d0e140..30ecd1ef7ca4 100644
--- a/idlc/source/errorhandler.cxx
+++ b/idlc/source/errorhandler.cxx
@@ -489,7 +489,7 @@ static OString flagToString(sal_uInt32 flag)
return flagStr;
}
-static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber)
+static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber, sal_uInt32 start, sal_uInt32 end)
{
OString file;
if ( idlc()->getFileName() == idlc()->getRealFileName() )
@@ -497,14 +497,23 @@ static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber)
else
file = idlc()->getFileName();
- fprintf(stderr, "%s(%lu) : %s", file.getStr(),
+ fprintf(stderr, "%s:%lu [%lu:%lu] : %s", file.getStr(),
sal::static_int_cast< unsigned long >(lineNumber),
+ sal::static_int_cast< unsigned long >(start),
+ sal::static_int_cast< unsigned long >(end),
errorCodeToMessage(eCode));
}
+static void errorHeader(ErrorCode eCode, sal_uInt32 lineNumber)
+{
+ errorHeader(eCode, lineNumber,
+ idlc()->getOffsetStart(), idlc()->getOffsetEnd());
+}
+
static void errorHeader(ErrorCode eCode)
{
- errorHeader(eCode, idlc()->getLineNumber());
+ errorHeader(eCode, idlc()->getLineNumber(),
+ idlc()->getOffsetStart(), idlc()->getOffsetEnd());
}
static void warningHeader(WarningCode wCode)
diff --git a/idlc/source/idlc.cxx b/idlc/source/idlc.cxx
index 3717405c7775..d1b3b9587d5b 100644
--- a/idlc/source/idlc.cxx
+++ b/idlc/source/idlc.cxx
@@ -220,6 +220,8 @@ Idlc::Idlc(Options* pOptions)
, m_errorCount(0)
, m_warningCount(0)
, m_lineNumber(0)
+ , m_offsetStart(0)
+ , m_offsetEnd(0)
, m_parseState(PS_NoState)
{
m_pScopes = new AstStack();
diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx
index 8527fcab5b01..48c975b280a9 100644
--- a/idlc/source/idlccompile.cxx
+++ b/idlc/source/idlccompile.cxx
@@ -42,7 +42,8 @@
#ifdef SAL_UNX
#include <unistd.h>
-#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || defined(AIX)
+#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || \
+ defined(AIX) || defined(OPENBSD)
#include <sys/wait.h>
#else
#include <wait.h>
diff --git a/idlc/source/parser.y b/idlc/source/parser.y
index 8da9c7ad63b5..6de66aee9b17 100644
--- a/idlc/source/parser.y
+++ b/idlc/source/parser.y
@@ -103,8 +103,8 @@
#include <algorithm>
#include <vector>
-
-using namespace ::rtl;
+
+using namespace rtl;
#define YYDEBUG 1
#define YYERROR_VERBOSE 1
diff --git a/idlc/source/scanner.ll b/idlc/source/scanner.ll
index bbcc08fae37b..2206297a0ffd 100644
--- a/idlc/source/scanner.ll
+++ b/idlc/source/scanner.ll
@@ -48,12 +48,19 @@
#include "attributeexceptions.hxx"
+
class AstExpression;
class AstArray;
class AstMember;
#include <parser.hxx>
+/* handle locations */
+int yycolumn = 1;
+
+#define YY_USER_ACTION idlc()->setOffset(yycolumn, yycolumn+yyleng-1); \
+ yycolumn += yyleng;
+
sal_Int32 beginLine = 0;
::rtl::OString docu;
@@ -227,6 +234,7 @@ static void parseLineAndFile(sal_Char* pBuf)
for (; *r != '\0' && *r != ' ' && *r != '\t'; r++) ;
*r++ = 0;
idlc()->setLineNumber((sal_uInt32)atol(h));
+ yylineno = atol(h);
/* Find file name, if present */
for (; *r != '"'; r++)
@@ -283,8 +291,10 @@ IDENTIFIER ("_"?({ALPHA}|{DIGIT})+)*
%%
[ \t\r]+ ; /* eat up whitespace */
-[\n] {
- idlc()->incLineNumber();
+[\n] {
+ idlc()->incLineNumber();
+ yycolumn = 1;
+ yylineno++;
}
attribute return IDL_ATTRIBUTE;
@@ -349,21 +359,21 @@ published return IDL_PUBLISHED;
"..." return IDL_ELLIPSIS;
("-")?{INT_LITERAL}+(l|L|u|U)? {
- return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+ return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
}
("-")?{OCT_LITERAL}+(l|L|u|U)? {
- return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+ return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
}
("-")?{HEX_LITERAL}+(l|L|u|U)? {
- return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+ return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
}
("-")?{DIGIT}+(e|E){1}(("+"|"-")?{DIGIT}+)+(f|F)? |
("-")?"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)? |
("-")?{DIGIT}*"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)? {
- yylval.dval = asciiToFloat( yytext );
+ yylval.dval = asciiToFloat( yytext );
return IDL_FLOATING_PT_LITERAL;
}
diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index 8daf376500c6..836899ce3969 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -56,7 +56,7 @@ LibreOffice
PRODUCTVERSION 3.3
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
@@ -121,7 +121,7 @@ LibreOffice_wJRE
PRODUCTVERSION 3.3
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
POSTVERSIONEXTENSION
POSTVERSIONEXTENSIONUNIX
BRANDPACKAGEVERSION 3
@@ -186,7 +186,7 @@ LibreOffice_Dev
PRODUCTVERSION 3.3
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
BASISROOTNAME LibO-dev
UNIXBASISROOTNAME lo-dev
POSTVERSIONEXTENSION
@@ -263,7 +263,7 @@ URE
PRODUCTEXTENSION
BRANDPACKAGEVERSION 3
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
LICENSENAME LGPL
SERVICESPROJEKT 1
SETSTATICPATH 1
@@ -303,7 +303,7 @@ LibreOffice_SDK
PRODUCTVERSION 3.3
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
POSTVERSIONEXTENSION SDK
POSTVERSIONEXTENSIONUNIX sdk
BRANDPACKAGEVERSION 3
@@ -348,7 +348,7 @@ LibreOffice_Dev_SDK
PRODUCTVERSION 3.3
PRODUCTEXTENSION
LONG_PRODUCTEXTENSION
- SHORT_PRODUCTEXTENSION
+ SHORT_PRODUCTEXTENSION beta3
BASISROOTNAME LibO-dev
UNIXBASISROOTNAME lo-dev
POSTVERSIONEXTENSION SDK
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
index e1569b1eea31..81355dda210c 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx
@@ -89,6 +89,9 @@ char const* const* SunInfo::getLibraryPaths(int* size)
static char const * ar[] = {
"/lib/" JFW_PLUGIN_ARCH "/client",
+#if defined(OPENBSD)
+ "/lib/" JFW_PLUGIN_ARCH "/server",
+#endif
"/lib/" JFW_PLUGIN_ARCH "/native_threads",
"/lib/" JFW_PLUGIN_ARCH
diff --git a/lpsolve/lp_solve_5.5-openbsd.patch b/lpsolve/lp_solve_5.5-openbsd.patch
new file mode 100644
index 000000000000..d632d918a1de
--- /dev/null
+++ b/lpsolve/lp_solve_5.5-openbsd.patch
@@ -0,0 +1,20 @@
+--- misc/lp_solve_5.5/lpsolve55/ccc Fri Nov 5 13:51:18 2010
++++ misc/build/lp_solve_5.5/lpsolve55/ccc Fri Nov 5 13:51:11 2010
+@@ -6,7 +6,7 @@
+ if [ "$PLATFORM" = "SCO_UNIX" ]
+ then def='-dy -K PIC -DNOLONGLONG'
+ dl=-lc
+-else dl=-ldl
++else
+ so=y
+ fi
+
+@@ -19,7 +19,7 @@
+ if [ "$so" != "" ]
+ then
+ $c -fpic -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+- $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
++ $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm
+ fi
+
+ rm *.o 2>/dev/null
diff --git a/lpsolve/makefile.mk b/lpsolve/makefile.mk
index 5261bc9b835d..70460646803d 100644
--- a/lpsolve/makefile.mk
+++ b/lpsolve/makefile.mk
@@ -48,6 +48,10 @@ PATCH_FILES=\
ADDITIONAL_FILES=lpsolve55$/ccc.solaris lpsolve55$/ccc.os2
.ENDIF
+.IF "$(OS)"=="OPENBSD"
+PATCH_FILES+=lp_solve_5.5-openbsd.patch
+.ENDIF
+
CONFIGURE_DIR=
CONFIGURE_ACTION=
CONFIGURE_FLAGS=
diff --git a/odk/configure.pl b/odk/configure.pl
index 11f5987cb94a..c02755c56772 100755
--- a/odk/configure.pl
+++ b/odk/configure.pl
@@ -636,9 +636,9 @@ sub searchMacOffice
sub searchoffice
{
- my $offset = rindex($main::sdkpath, "/openoffice.org");
+ my $offset = rindex($main::sdkpath, "/libreoffice");
my $tmpOffice = substr($main::sdkpath, 0, $offset);
- my $officepath = "$tmpOffice/openoffice.org$main::OO_MAJORVERSION";
+ my $officepath = "$tmpOffice/libreoffice";
# if ( $main::OO_MINORVERSION > 0) {
# $officepath = "$officepath$main::OO_MINORVERSION";
diff --git a/odk/setsdkenv_unix b/odk/setsdkenv_unix
index 31e0200eb1b7..6b0dd7c18683 100755
--- a/odk/setsdkenv_unix
+++ b/odk/setsdkenv_unix
@@ -10,7 +10,7 @@ if [ "$OSTYPE" = "Darwin" ]
then
OO_SDK_NAME=`basename $OO_SDK_HOME`
else
- OO_SDK_NAME=openoffice.org${OOVERSION}_sdk
+ OO_SDK_NAME=libreoffice${OOVERSION}_sdk
fi
export OO_SDK_HOME
diff --git a/officecfg/registry/data/org/openoffice/Office/Labels.xcu b/officecfg/registry/data/org/openoffice/Office/Labels.xcu
index 9f92541e60dd..c345e5d54765 100644
--- a/officecfg/registry/data/org/openoffice/Office/Labels.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Labels.xcu
@@ -31,6 +31,346 @@
<node oor:name="Manufacturer">
+ <node oor:name="Tower" oor:op="replace">
+
+ <node oor:name="L0" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W100 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;7000;3700;7000;3700;0;0;3;8</value>
+ </prop>
+ </node>
+ <node oor:name="L1" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W101 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10500;3700;10500;3700;0;0;2;8</value>
+ </prop>
+ </node>
+ <node oor:name="L2" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W102 Freight Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10500;4720;10100;4600;200;420;2;6</value>
+ </prop>
+ </node>
+ <node oor:name="L3" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W103 Freight Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10300;7000;10100;7000;300;420;2;4</value>
+ </prop>
+ </node>
+ <node oor:name="L4" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W104 Freight Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10800;14400;9800;13900;200;420;2;2</value>
+ </prop>
+ </node>
+ <node oor:name="L5" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W105 Freight Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;19960;14500;19960;14500;500;400;1;2</value>
+ </prop>
+ </node>
+ <node oor:name="L6" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W106 Freight Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;21000;29600;21000;29600;0;0;1;1</value>
+ </prop>
+ </node>
+ <node oor:name="L7" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W107 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;4060;2120;3810;2120;470;1160;5;13</value>
+ </prop>
+ </node>
+ <node oor:name="L8" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W108 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;6600;3810;6350;3810;720;1590;3;7</value>
+ </prop>
+ </node>
+ <node oor:name="L9" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W110 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;7000;3500;7000;3500;0;420;3;8</value>
+ </prop>
+ </node>
+ <node oor:name="L10" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W111 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10500;3500;10500;3500;0;420;2;8</value>
+ </prop>
+ </node>
+ <node oor:name="L11" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W115 Mailing Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;4050;2990;3850;2990;500;1450;5;9</value>
+ </prop>
+ </node>
+ <node oor:name="L12" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W116 (32mm dia) Round</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;3340;3520;3200;3200;500;1000;6;8</value>
+ </prop>
+ </node>
+ <node oor:name="L13" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W117 (50mm dia) Round</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;6450;5810;5000;5000;1500;800;3;5</value>
+ </prop>
+ </node>
+ <node oor:name="L14" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W118 (80mm dia) Round</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;9500;9500;8000;8000;1750;1450;2;3</value>
+ </prop>
+ </node>
+ <node oor:name="L15" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W221 Wrap-around Disk Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10400;7000;7000;7000;1800;420;2;4</value>
+ </prop>
+ </node>
+ <node oor:name="L16" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W222 Video Spine Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;14500;1693;14500;1693;3260;1380;1;16</value>
+ </prop>
+ </node>
+ <node oor:name="L17" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W223 Video Face Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;7870;4660;7620;4660;2750;950;2;6</value>
+ </prop>
+ </node>
+ <node oor:name="L18" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W224 Audio Cassette</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;9150;4200;8900;4200;1470;2320;2;6</value>
+ </prop>
+ </node>
+ <node oor:name="L19" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W225 Slide Mount</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;5080;1270;4600;1110;560;1670;4;21</value>
+ </prop>
+ </node>
+ <node oor:name="L20" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W227 Diskette Face</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;9310;5200;7000;5200;2330;1920;2;5</value>
+ </prop>
+ </node>
+ <node oor:name="L21" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-P229 ID Photos</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;3800;4800;3500;4500;1100;3050;5;5</value>
+ </prop>
+ </node>
+ <node oor:name="L22" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-B440 Business Cards</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10000;5500;8500;5500;1500;1000;2;5</value>
+ </prop>
+ </node>
+ <node oor:name="L23" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W330 Lever Arch</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;20000;6000;20000;6000;500;2960;1;4</value>
+ </prop>
+ </node>
+ <node oor:name="L24" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-P230 CD Business Card (78 x 59)</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;10275;6956;7800;5900;1465;1500;2;4</value>
+ </prop>
+ </node>
+ <node oor:name="L25" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W228 CD Label for CD Labeller</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;11700;12800;11700;11700;4650;2800;1;2</value>
+ </prop>
+ </node>
+ <node oor:name="L26" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W250 Full Face CD Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;11700;13700;11700;11700;4650;2200;1;2</value>
+ </prop>
+ </node>
+ <node oor:name="L27" oor:op="replace" oor:finalized="true">
+
+ <prop oor:name="Name">
+
+ <value xml:lang="x-no-translate">true</value>
+ <value xml:lang="en-US">CIL-W251 Mini CD Label</value>
+ </prop>
+ <prop oor:name="Measure">
+
+ <value>S;9800;9800;7800;7800;1700;1200;2;3</value>
+ </prop>
+ </node>
+ </node>
+
<node oor:name="Avery A4" oor:op="replace">
<node oor:name="L0" oor:op="replace" oor:finalized="true">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
index 3c2584126a0b..634e026c8f9a 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
@@ -1205,12 +1205,11 @@
<value xml:lang="en-US">~Remove Filter</value>
</prop>
</node>
- <node oor:name=".uno:DataForm" oor:op="replace">
- <prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="de">D~atenForm...</value>
- <value xml:lang="en-US">D~ataForm...</value>
- </prop>
- </node>
+ <node oor:name=".uno:DataForm" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">F~orm...</value>
+ </prop>
+ </node>
<node oor:name=".uno:DataSubTotals" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Sub~totals...</value>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 440da5c2af88..01ce2a378484 100755
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -4145,6 +4145,11 @@
<value xml:lang="en-US">License Information...</value>
</prop>
</node>
+ <node oor:name=".uno:Credits" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">%PRODUCTNAME Credits...</value>
+ </prop>
+ </node>
<node oor:name=".uno:StatusBarVisible" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Status ~Bar</value>
diff --git a/oox/inc/oox/export/drawingml.hxx b/oox/inc/oox/export/drawingml.hxx
index d3cabe63998d..0451f2c9cbb5 100644
--- a/oox/inc/oox/export/drawingml.hxx
+++ b/oox/inc/oox/export/drawingml.hxx
@@ -26,7 +26,7 @@ namespace text {
class XTextRange;
}
namespace io {
- struct XOutputStream;
+ class XOutputStream;
}
}}}
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 1d07ebad64ed..524b728bc106 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -218,7 +218,7 @@ Reference< chart2::data::XLabeledDataSequence > lcl_getCategories( const Referen
catch( uno::Exception & ex )
{
(void)ex; // avoid warning for pro build
- OSL_ENSURE( false, OUStringToOString(
+ OSL_ENSURE( false, rtl::OUStringToOString(
OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) +
OUString::createFromAscii( typeid( ex ).name()) +
OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) +
@@ -354,7 +354,7 @@ bool lcl_isSeriesAttachedToFirstAxis(
catch( uno::Exception & ex )
{
(void)ex; // avoid warning for pro build
- OSL_ENSURE( false, OUStringToOString(
+ OSL_ENSURE( false, rtl::OUStringToOString(
OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) +
OUString::createFromAscii( typeid( ex ).name()) +
OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) +
@@ -374,7 +374,7 @@ OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< char
xDoc->getDataProvider(), uno::UNO_QUERY );
if( xConversion.is())
aResult = xConversion->convertRangeToXML( rRange );
- OSL_TRACE("lcl_ConvertRange, the originla formula is %s, the new formula is %s ", OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr());
+ OSL_TRACE("lcl_ConvertRange, the originla formula is %s, the new formula is %s ", rtl::OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), rtl::OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr());
return aResult;
}
@@ -673,7 +673,7 @@ OUString ChartExport::parseFormula( const OUString& rRange )
aResult = aRange;
}
- OSL_TRACE("ChartExport::parseFormula, the originla formula is %s, the new formula is %s ", OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr());
+ OSL_TRACE("ChartExport::parseFormula, the originla formula is %s, the new formula is %s ", rtl::OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), rtl::OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr());
return aResult;
}
@@ -831,7 +831,7 @@ void ChartExport::InitRangeSegmentationProperties( const Reference< chart2::XCha
catch( uno::Exception & ex )
{
(void)ex; // avoid warning for pro build
- OSL_ENSURE( false, OUStringToOString(
+ OSL_ENSURE( false, rtl::OUStringToOString(
OUString( RTL_CONSTASCII_USTRINGPARAM( "Exception caught. Type: " )) +
OUString::createFromAscii( typeid( ex ).name()) +
OUString( RTL_CONSTASCII_USTRINGPARAM( ", Message: " )) +
@@ -2645,7 +2645,7 @@ void ChartExport::exportDataPoints(
{
(void)rEx; // avoid warning for pro build
DBG_ERROR1( "Exception caught during Export of data point: %s",
- OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
+ rtl::OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
}
}
else
diff --git a/packimages/pack/makefile.mk b/packimages/pack/makefile.mk
index 471f5b585403..59611774b750 100644
--- a/packimages/pack/makefile.mk
+++ b/packimages/pack/makefile.mk
@@ -93,7 +93,7 @@ $(MISC)$/oxygen.flag : $(OXYGEN_TARBALL)
# unpack the classic icon set
$(MISC)$/classic.flag : $(CLASSIC_TARBALL)
- cd $(MISC) && gunzip -d -c $(CLASSIC_TARBALL) | ( tar -xf - ) && $(TOUCH) $(@:f)
+ cd $(MISC) && gzip -d -c $(CLASSIC_TARBALL) | ( tar -xf - ) && $(TOUCH) $(@:f)
.IF "$(GUI)"=="UNX"
chmod -R g+w $(MISC)$/classic
.ENDIF
diff --git a/python/makefile.mk b/python/makefile.mk
index 22cbe082e8cf..6f4b7ee5623c 100644
--- a/python/makefile.mk
+++ b/python/makefile.mk
@@ -137,7 +137,7 @@ BUILD_DIR=PC/VC6
# solver during registration in insetoo_native
.IF "$(CCNUMVER)" >= "001600000000"
BUILD_ACTION=MSBuild.exe pcbuild.sln /t:Build /p:Configuration=Release /ToolsVersion:4.0
-.ELIF
+.ELSE
BUILD_ACTION=$(COMPATH)$/vcpackages$/vcbuild.exe pcbuild.sln "Release|Win32"
.ENDIF
.ENDIF
diff --git a/pyuno/source/module/makefile.mk b/pyuno/source/module/makefile.mk
index c928cc6f8e4c..06f9b4262d15 100644
--- a/pyuno/source/module/makefile.mk
+++ b/pyuno/source/module/makefile.mk
@@ -144,6 +144,8 @@ $(PYUNO_MODULE) : $(SLO)$/pyuno_dlopenwrapper.obj
@echo ld -shared -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd
.ELIF "$(OS)" == "NETBSD"
@echo $(LINK) $(LINKFLAGSSHLCUI) -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd
+.ELIF "$(OS)" == "OPENBSD"
+ @echo ld -shared -o $@ $(SLO)$/pyuno_dlopenwrapper.o > $(MISC)$/$(@:b).cmd
.ELIF "$(OS)" == "MACOSX"
@echo $(CC) -bundle -ldl -o $@ $(SLO)$/pyuno_dlopenwrapper.o $(EXTRA_LINKFLAGS) $(EXTRA_FRAMEWORK_FLAG) > $(MISC)$/$(@:b).cmd
.ELSE
diff --git a/sal/inc/osl/endian.h b/sal/inc/osl/endian.h
index 9314c7fcfe5e..c9004bdab642 100644
--- a/sal/inc/osl/endian.h
+++ b/sal/inc/osl/endian.h
@@ -154,9 +154,9 @@ extern "C" {
/** Check supported platform.
*/
-#if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \
- !defined(LINUX) && !defined(NETBSD) && !defined(SCO) && \
- !defined(AIX) && !defined(HPUX) && \
+#if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \
+ !defined(LINUX) && !defined(NETBSD) && !defined(SCO) && \
+ !defined(AIX) && !defined(HPUX) && !defined(OPENBSD) && \
!defined(SOLARIS) && !defined(MACOSX) && !defined(FREEBSD)
# error "Target platform not specified !"
#endif
diff --git a/sal/inc/rtl/uuid.h b/sal/inc/rtl/uuid.h
index fa3883989231..d17c328fe638 100644
--- a/sal/inc/rtl/uuid.h
+++ b/sal/inc/rtl/uuid.h
@@ -201,6 +201,8 @@ void SAL_CALL rtl_createNamedUuid(
#define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 100000
#elif AIX
#define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10
+#elif OPENBSD
+#define UUID_SYSTEM_TIME_RESOLUTION_100NS_TICKS 10
#else
#error "System time resolution must be calculated!"
#endif
diff --git a/sal/inc/sal/alloca.h b/sal/inc/sal/alloca.h
index 8e1dec305b1f..0580a1faa42f 100644
--- a/sal/inc/sal/alloca.h
+++ b/sal/inc/sal/alloca.h
@@ -36,7 +36,7 @@
#define INCLUDED_ALLOCA_H
#endif
-#elif defined (FREEBSD) || defined(NETBSD)
+#elif defined (FREEBSD) || defined(NETBSD) || defined(OPENBSD)
#ifndef INCLUDED_STDLIB_H
#include <stdlib.h>
diff --git a/sal/inc/sal/config.h b/sal/inc/sal/config.h
index cd4e10b71a56..9cdf2ac3fd18 100644
--- a/sal/inc/sal/config.h
+++ b/sal/inc/sal/config.h
@@ -92,7 +92,8 @@
#define SAL_SYSCONFIGFILE( name ) name ".ini"
#endif
-#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(SCO) || defined(AIX)
+#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || \
+ defined(SCO) || defined(AIX) || defined(OPENBSD)
#define SAL_UNX
#define SAL_DLLEXTENSION ".so"
#define SAL_DLLPREFIX "lib"
diff --git a/sal/inc/sal/types.h b/sal/inc/sal/types.h
index 36b45009667a..9fac15ad319e 100644
--- a/sal/inc/sal/types.h
+++ b/sal/inc/sal/types.h
@@ -345,7 +345,9 @@ typedef struct _sal_Sequence
lack RTTI support, dynamic_cast is not included here).
*/
#ifdef __cplusplus
-#if defined SAL_W32 || defined SOLARIS || defined LINUX || defined MACOSX || defined FREEBSD || defined NETBSD || defined AIX || defined OS2
+#if defined SAL_W32 || defined SOLARIS || defined LINUX || defined MACOSX || \
+ defined FREEBSD || defined NETBSD || defined AIX || defined OS2 || \
+ defined OPENBSD
#define SAL_CONST_CAST(type, expr) (const_cast< type >(expr))
#define SAL_REINTERPRET_CAST(type, expr) (reinterpret_cast< type >(expr))
#define SAL_STATIC_CAST(type, expr) (static_cast< type >(expr))
diff --git a/sal/osl/unx/backtrace.c b/sal/osl/unx/backtrace.c
index 69dafac3b3dc..7787ee997c52 100644
--- a/sal/osl/unx/backtrace.c
+++ b/sal/osl/unx/backtrace.c
@@ -140,7 +140,7 @@ void backtrace_symbols_fd( void **buffer, int size, int fd )
#endif /* defined SOLARIS */
-#if defined FREEBSD || defined NETBSD
+#if defined FREEBSD || defined NETBSD || defined OPENBSD
#include <dlfcn.h>
#include <pthread.h>
#include <setjmp.h>
diff --git a/sal/osl/unx/backtrace.h b/sal/osl/unx/backtrace.h
index 4e35afe5d986..63b5fd33f93b 100644
--- a/sal/osl/unx/backtrace.h
+++ b/sal/osl/unx/backtrace.h
@@ -27,7 +27,8 @@
************************************************************************/
-#if defined (SOLARIS) || defined (FREEBSD) || defined (NETBSD)
+#if defined (SOLARIS) || defined (FREEBSD) || defined (NETBSD) || \
+ defined (OPENBSD)
#ifdef __cplusplus
extern "C" {
@@ -40,7 +41,7 @@ int backtrace( void **buffer, int max_frames );
void backtrace_symbols_fd( void **buffer, int size, int fd );
/* no frame.h on FreeBSD */
-#if defined (FREEBSD) || defined (NETBSD)
+#if defined (FREEBSD) || defined (NETBSD) || defined (OPENBSD)
struct frame {
long arg0[8];
long arg1[6];
@@ -54,7 +55,7 @@ struct frame {
} /* extern "C" */
#endif
-#endif /* defined SOLARIS || FREEBSD */
+#endif /* defined SOLARIS || FREEBSD || OPENBSD */
#if defined (LINUX) && defined (SPARC)
#ifdef __cplusplus
diff --git a/sal/osl/unx/file.cxx b/sal/osl/unx/file.cxx
index 83185749bff9..c18960f4d872 100644
--- a/sal/osl/unx/file.cxx
+++ b/sal/osl/unx/file.cxx
@@ -272,7 +272,8 @@ void FileHandle_Impl::operator delete (void * p, size_t)
size_t FileHandle_Impl::getpagesize()
{
-#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX)
+#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) || \
+ defined(OPENBSD)
return sal::static_int_cast< size_t >(::getpagesize());
#else /* POSIX */
return sal::static_int_cast< size_t >(::sysconf(_SC_PAGESIZE));
diff --git a/sal/osl/unx/file_error_transl.cxx b/sal/osl/unx/file_error_transl.cxx
index 6d81c107f750..f9c858078c1d 100644
--- a/sal/osl/unx/file_error_transl.cxx
+++ b/sal/osl/unx/file_error_transl.cxx
@@ -217,19 +217,19 @@ oslFileError oslTranslateFileError(sal_Bool bIsError, int Errno)
osl_error = osl_File_E_LOOP;
break;
-#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD))
+#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD))
case EILSEQ:
osl_error = osl_File_E_ILSEQ;
break;
#endif /* MACOSX */
-#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD))
+#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD))
case ENOLINK:
osl_error = osl_File_E_NOLINK;
break;
#endif /* MACOSX */
-#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD))
+#if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD))
case EMULTIHOP:
osl_error = osl_File_E_MULTIHOP;
break;
diff --git a/sal/osl/unx/file_volume.cxx b/sal/osl/unx/file_volume.cxx
index 5e916846e712..bc3812839979 100644
--- a/sal/osl/unx/file_volume.cxx
+++ b/sal/osl/unx/file_volume.cxx
@@ -70,7 +70,7 @@ static const sal_Char* MOUNTTAB="/etc/mnttab";
#include <sys/quota.h>
static const sal_Char* MOUNTTAB="/etc/mtab";
-#elif defined(NETBSD) || defined(FREEBSD)
+#elif defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)
#include <sys/param.h>
#include <sys/ucred.h>
@@ -180,19 +180,23 @@ oslFileError osl_getVolumeInformation( rtl_uString* ustrDirectoryURL, oslVolumeI
#ifdef HAVE_STATFS_H
-#if defined(FREEBSD) || defined(MACOSX)
+#if defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD)
# define __OSL_STATFS_STRUCT struct statfs
# define __OSL_STATFS(dir, sfs) statfs((dir), (sfs))
# define __OSL_STATFS_BLKSIZ(a) ((sal_uInt64)((a).f_bsize))
# define __OSL_STATFS_TYPENAME(a) ((a).f_fstypename)
+#if defined(OPENBSD)
+# define __OSL_STATFS_ISREMOTE(a) (rtl_str_compare((a).f_fstypename, "nfs") == 0)
+#else
# define __OSL_STATFS_ISREMOTE(a) (((a).f_type & MNT_LOCAL) == 0)
+#endif
/* always return true if queried for the properties of
the file system. If you think this is wrong under any
of the target platforms fix it!!!! */
# define __OSL_STATFS_IS_CASE_SENSITIVE_FS(a) (1)
# define __OSL_STATFS_IS_CASE_PRESERVING_FS(a) (1)
-#endif /* FREEBSD || MACOSX */
+#endif /* FREEBSD || MACOSX || OPENBSD */
#if defined(NETBSD)
@@ -1118,7 +1122,8 @@ osl_isFloppyMounted (oslVolumeDeviceHandleImpl* pDevice)
*
*****************************************************************************/
-#if (defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX))
+#if (defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \
+ defined(AIX) || defined(OPENBSD))
static oslVolumeDeviceHandle osl_isFloppyDrive(const sal_Char* pszPath)
{
(void)pszPath;
@@ -1126,7 +1131,8 @@ static oslVolumeDeviceHandle osl_isFloppyDrive(const sal_Char* pszPath)
}
#endif /* MACOSX */
-#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX))
+#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \
+ defined(AIX) || defined(OPENBSD))
static oslFileError osl_mountFloppy(oslVolumeDeviceHandle hFloppy)
{
(void)hFloppy;
@@ -1134,7 +1140,8 @@ static oslFileError osl_mountFloppy(oslVolumeDeviceHandle hFloppy)
}
#endif /* MACOSX */
-#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX))
+#if ( defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || \
+ defined(AIX) || defined(OPENBSD))
static oslFileError osl_unmountFloppy(oslVolumeDeviceHandle hFloppy)
{
(void)hFloppy;
@@ -1142,19 +1149,19 @@ static oslFileError osl_unmountFloppy(oslVolumeDeviceHandle hFloppy)
}
#endif /* MACOSX */
-#if ( defined(NETBSD) || defined(FREEBSD) )
+#if ( defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) )
static sal_Bool osl_getFloppyMountEntry(const sal_Char* pszPath, oslVolumeDeviceHandleImpl* pItem)
{
return sal_False;
}
-#endif /* NETBSD || FREEBSD */
+#endif /* NETBSD || FREEBSD || OPENBSD */
-#if ( defined(NETBSD) || defined(FREEBSD) )
+#if ( defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) )
static sal_Bool osl_isFloppyMounted(oslVolumeDeviceHandleImpl* pDevice)
{
return sal_False;
}
-#endif /* NETBSD || FREEBSD */
+#endif /* NETBSD || FREEBSD || OPENBSD */
#ifdef DEBUG_OSL_FILE
diff --git a/sal/osl/unx/makefile.mk b/sal/osl/unx/makefile.mk
index 4344e04aac38..8c27831db580 100644
--- a/sal/osl/unx/makefile.mk
+++ b/sal/osl/unx/makefile.mk
@@ -118,7 +118,9 @@ OBJFILES= $(OBJ)$/conditn.obj \
SLOFILES += $(SLO)$/osxlocale.obj
.ENDIF
-.IF "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || "$(OS)$(CPU)"=="LINUXS" || "$(OS)"=="MACOSX" || "$(OS)"=="AIX"
+.IF "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD" || "$(OS)"=="NETBSD" || \
+ "$(OS)$(CPU)"=="LINUXS" || "$(OS)"=="MACOSX" || \
+ "$(OS)"=="AIX" || "$(OS)"=="OPENBSD"
SLOFILES += $(SLO)$/backtrace.obj
OBJFILES += $(OBJ)$/backtrace.obj
.ENDIF
diff --git a/sal/osl/unx/nlsupport.c b/sal/osl/unx/nlsupport.c
index 6ae8abd18e00..f78aa92c25dd 100644
--- a/sal/osl/unx/nlsupport.c
+++ b/sal/osl/unx/nlsupport.c
@@ -31,7 +31,8 @@
#include <osl/process.h>
#include <rtl/memory.h>
-#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD) || defined(MACOSX)
+#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || \
+ defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD)
#include <pthread.h>
#ifndef MACOSX
#include <locale.h>
@@ -232,7 +233,8 @@ static rtl_Locale * _parse_locale( const char * locale )
return NULL;
}
-#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || defined(FREEBSD)
+#if defined(LINUX) || defined(SOLARIS) || defined(NETBSD) || \
+ defined(FREEBSD) || defined(OPENBSD)
/*
* This implementation of osl_getTextEncodingFromLocale maps
@@ -543,7 +545,31 @@ const _pair _nl_language_list[] = {
{ "UTF-8", RTL_TEXTENCODING_UTF8 } /* ISO-10646/UTF-8 */
};
-#endif /* ifdef SOLARIS LINUX FREEBSD NETBSD */
+#elif defined(OPENBSD)
+
+const _pair _nl_language_list[] = {
+ { "ASCII", RTL_TEXTENCODING_ASCII_US }, /* US-ASCII */
+ { "BIG5", RTL_TEXTENCODING_BIG5 }, /* China - Traditional Chinese */
+ { "CP1251", RTL_TEXTENCODING_MS_1251 }, /* MS-CYRL */
+ { "CP866", RTL_TEXTENCODING_IBM_866 }, /* CP866 866 */
+ { "EUCCN", RTL_TEXTENCODING_EUC_CN }, /* China - Simplified Chinese */
+ { "EUCJP", RTL_TEXTENCODING_EUC_JP }, /* Japan */
+ { "EUCKR", RTL_TEXTENCODING_EUC_KR }, /* Korea */
+ { "ISO8859-1", RTL_TEXTENCODING_ISO_8859_1 }, /* Western */
+ { "ISO8859-15", RTL_TEXTENCODING_ISO_8859_15 }, /* Western Updated (w/Euro sign) */
+ { "ISO8859-2", RTL_TEXTENCODING_ISO_8859_2 }, /* Central European */
+ { "ISO8859-4", RTL_TEXTENCODING_ISO_8859_4 }, /* LATIN4 L4 */
+ { "ISO8859-5", RTL_TEXTENCODING_ISO_8859_5 }, /* Cyrillic */
+ { "ISO8859-7", RTL_TEXTENCODING_ISO_8859_7 }, /* Greek */
+ { "ISO8859-9", RTL_TEXTENCODING_ISO_8859_9 }, /* Turkish */
+ { "KOI8-R", RTL_TEXTENCODING_KOI8_R }, /* KOI8-R */
+ { "KOI8-U", RTL_TEXTENCODING_KOI8_U }, /* KOI8-U */
+ { "SJIS", RTL_TEXTENCODING_SHIFT_JIS }, /* Japan */
+ { "US-ASCII", RTL_TEXTENCODING_ASCII_US }, /* US-ASCII */
+ { "UTF-8", RTL_TEXTENCODING_UTF8 } /* ISO-10646/UTF-8 */
+};
+
+#endif /* ifdef SOLARIS LINUX FREEBSD NETBSD OPENBSD */
static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER;
@@ -925,7 +951,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale )
{
/* only change env vars that exist already */
if( getenv( "LC_ALL" ) ) {
-#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined ( AIX )
+#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \
+ defined( AIX ) || defined( OPENBSD )
setenv( "LC_ALL", locale_buf, 1);
#else
setenv( "LC_ALL", locale_buf );
@@ -933,7 +960,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale )
}
if( getenv( "LC_CTYPE" ) ) {
-#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined ( AIX )
+#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \
+ defined( AIX ) || defined( OPENBSD )
setenv("LC_CTYPE", locale_buf, 1 );
#else
setenv( "LC_CTYPE", locale_buf );
@@ -941,7 +969,8 @@ int _imp_setProcessLocale( rtl_Locale * pLocale )
}
if( getenv( "LANG" ) ) {
-#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || defined (AIX )
+#if defined( FREEBSD ) || defined( NETBSD ) || defined( MACOSX ) || \
+ defined( AIX ) || defined( OPENBSD)
setenv("LC_CTYPE", locale_buf, 1 );
#else
setenv( "LANG", locale_buf );
diff --git a/sal/osl/unx/process.c b/sal/osl/unx/process.c
index 1c4454c96092..5a94380f0020 100644
--- a/sal/osl/unx/process.c
+++ b/sal/osl/unx/process.c
@@ -476,7 +476,7 @@ static void ChildStatusProc(void *pData)
if (! INIT_GROUPS(data.m_name, data.m_gid) || (setuid(data.m_uid) != 0))
OSL_TRACE("Failed to change uid and guid, errno=%d (%s)\n", errno, strerror(errno));
-#if defined(LINUX) || defined (FREEBSD) || defined(NETBSD)
+#if defined(LINUX) || defined (FREEBSD) || defined(NETBSD) || defined(OPENBSD)
unsetenv("HOME");
#else
putenv("HOME=");
diff --git a/sal/osl/unx/socket.c b/sal/osl/unx/socket.c
index bf6e4d633ac0..e736e7c52e85 100644
--- a/sal/osl/unx/socket.c
+++ b/sal/osl/unx/socket.c
@@ -46,7 +46,8 @@
#undef HAVE_POLL_H
#endif
-#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || defined (MACOSX)
+#if defined(LINUX) || defined(NETBSD) || defined ( FREEBSD ) || \
+ defined (MACOSX) || defined (OPENBSD)
#include <sys/poll.h>
#define HAVE_POLL_H
#endif /* HAVE_POLL_H */
diff --git a/sal/osl/unx/system.h b/sal/osl/unx/system.h
index d066878772f6..3a61f67aec40 100644
--- a/sal/osl/unx/system.h
+++ b/sal/osl/unx/system.h
@@ -200,6 +200,32 @@
# define NO_PTHREAD_RTL
#endif
+#ifdef OPENBSD
+# define ETIME ETIMEDOUT
+# define _POSIX_THREAD_SYSCALL_SOFT 1
+# include <pthread.h>
+# include <sys/sem.h>
+# include <semaphore.h>
+# include <dlfcn.h>
+# include <sys/filio.h>
+# include <sys/ioctl.h>
+# include <sys/param.h>
+# include <sys/time.h>
+# include <sys/uio.h>
+# include <sys/exec.h>
+# include <sys/un.h>
+# include <netinet/tcp.h>
+# define IORESOURCE_TRANSFER_BSD
+# include <machine/endian.h>
+# define PTR_SIZE_T(s) ((size_t *)&(s))
+# define IORESOURCE_TRANSFER_BSD
+# define IOCHANNEL_TRANSFER_BSD_RENO
+# define pthread_testcancel()
+# define NO_PTHREAD_PRIORITY
+# define NO_PTHREAD_RTL
+# define PTHREAD_SIGACTION pthread_sigaction
+#endif
+
#ifdef SCO
# define AF_IPX -1
# include <strings.h>
@@ -349,7 +375,8 @@ int macxp_resolveAlias(char *path, int buflen);
#if !defined(_WIN32) && !defined(_WIN16) && !defined(OS2) && \
!defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO) && \
!defined(AIX) && !defined(HPUX) && \
- !defined(SOLARIS) && !defined(MACOSX)
+ !defined(SOLARIS) && !defined(MACOSX) && \
+ !defined(OPENBSD)
# error "Target platform not specified!"
#endif
diff --git a/sal/osl/unx/thread.c b/sal/osl/unx/thread.c
index 1c8fdad8f643..689b78dc748a 100644
--- a/sal/osl/unx/thread.c
+++ b/sal/osl/unx/thread.c
@@ -28,6 +28,9 @@
#include "system.h"
#include <string.h>
+#if defined(OPENBSD)
+#include <sched.h>
+#endif
#include <osl/diagnose.h>
#include <osl/thread.h>
#include <osl/nlsupport.h>
@@ -280,6 +283,9 @@ static oslThread osl_thread_create_Impl (
short nFlags)
{
Thread_Impl* pImpl;
+#if defined(OPENBSD)
+ pthread_attr_t attr;
+#endif
int nRet=0;
pImpl = osl_thread_construct_Impl();
@@ -292,9 +298,23 @@ static oslThread osl_thread_create_Impl (
pthread_mutex_lock (&(pImpl->m_Lock));
+#if defined(OPENBSD)
+ if (pthread_attr_init(&attr) != 0)
+ return (0);
+
+ if (pthread_attr_setstacksize(&attr, 262144) != 0) {
+ pthread_attr_destroy(&attr);
+ return (0);
+ }
+#endif
+
if ((nRet = pthread_create (
&(pImpl->m_hThread),
+#if defined(OPENBSD)
+ &attr,
+#else
PTHREAD_ATTR_DEFAULT,
+#endif
osl_thread_start_Impl,
(void*)(pImpl))) != 0)
{
@@ -307,6 +327,10 @@ static oslThread osl_thread_create_Impl (
return (0);
}
+#if defined(OPENBSD)
+ pthread_attr_destroy(&attr);
+#endif
+
/* wait for change from STARTUP to ACTIVE state */
while (pImpl->m_Flags & THREADIMPL_FLAGS_STARTUP)
{
diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c
index 22440f9660f1..bc0931bd4ce5 100644
--- a/sal/osl/unx/time.c
+++ b/sal/osl/unx/time.c
@@ -33,7 +33,8 @@
#include <osl/time.h>
/* FIXME: detection should be done in configure script */
-#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || defined(LINUX)
+#if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || \
+ defined(LINUX) || defined(OPENBSD)
#define STRUCT_TM_HAS_GMTOFF 1
#elif defined(SOLARIS)
diff --git a/sal/rtl/source/alloc.c b/sal/rtl/source/alloc.c
index 759aacfaf8b2..fb4f8767106f 100644
--- a/sal/rtl/source/alloc.c
+++ b/sal/rtl/source/alloc.c
@@ -70,7 +70,8 @@ typedef pthread_mutex_t mutex_type;
#define RTL_MUTEX_ACQUIRE(a) pthread_mutex_lock((a))
#define RTL_MUTEX_RELEASE(a) pthread_mutex_unlock((a))
-#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX)
+#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX) || \
+ defined(OPENBSD)
static sal_Size __rtl_memory_vmpagesize (void)
{
/* xBSD */
@@ -88,7 +89,7 @@ static sal_Size __rtl_memory_vmpagesize (void)
/* other */
return (sal_Size)(0x2000);
}
-#endif /* FREEBSD || NETBSD || MACOSX || LINUX || SOLARIS || AIX */
+#endif /* FREEBSD || NETBSD || MACOSX || LINUX || SOLARIS || AIX || OPENBSD*/
#ifndef PROT_HEAP
#define PROT_HEAP (PROT_READ | PROT_WRITE | PROT_EXEC)
diff --git a/sal/rtl/source/macro.hxx b/sal/rtl/source/macro.hxx
index 8ae03eab2aec..bb86b7d9ae39 100644
--- a/sal/rtl/source/macro.hxx
+++ b/sal/rtl/source/macro.hxx
@@ -53,6 +53,8 @@
#define THIS_OS "FreeBSD"
#elif defined AIX
#define THIS_OS "AIX"
+#elif defined OPENBSD
+#define THIS_OS "OpenBSD"
#endif
#if ! defined THIS_OS
diff --git a/sal/workben/makefile.mk b/sal/workben/makefile.mk
index c93d756ba132..99795f6fbe16 100644
--- a/sal/workben/makefile.mk
+++ b/sal/workben/makefile.mk
@@ -366,7 +366,8 @@ APP4DEPN= $(SLB)$/sal.lib
# tgetpwnam
#
.IF "$(TESTAPP)" == "tgetpwnam"
-.IF "$(OS)"=="SCO" || "$(OS)"=="NETBSD" || "$(OS)"=="FREEBSD"
+.IF "$(OS)"=="SCO" || "$(OS)"=="NETBSD" || "$(OS)"=="FREEBSD" || \
+ "$(OS)"=="OPENBSD"
CXXFILES= tgetpwnam.cxx
OBJFILES= $(OBJ)$/tgetpwnam.obj
diff --git a/salhelper/inc/salhelper/simplereferenceobject.hxx b/salhelper/inc/salhelper/simplereferenceobject.hxx
index a7ae201fb3fa..c5ef6dbbd070 100644
--- a/salhelper/inc/salhelper/simplereferenceobject.hxx
+++ b/salhelper/inc/salhelper/simplereferenceobject.hxx
@@ -121,6 +121,12 @@ private:
*/
void operator =(SimpleReferenceObject);
+#ifdef _MSC_VER
+/* We can't now have these private with MSVC2008 at least, it leads to
+ compilation errors in xmloff and other places.
+*/
+protected:
+#endif
/** not implemented (see general class documentation)
@internal
*/
diff --git a/salhelper/source/msci.map b/salhelper/source/msci.map
index 737513c93d04..b0359e0c7166 100644
--- a/salhelper/source/msci.map
+++ b/salhelper/source/msci.map
@@ -19,6 +19,7 @@ GetVersionInfo
UDK_3.1 {
global:
+ ??_VSimpleReferenceObject@salhelper@@KAXPAX@Z;
??_7SimpleReferenceObject@salhelper@@6B@;
??0Condition@salhelper@@QAE@AAVMutex@osl@@@Z;
@@ -35,4 +36,15 @@ UDK_3.1 {
??0timedout@ConditionWaiter@salhelper@@QAE@ABU012@@Z;
??1timedout@ConditionWaiter@salhelper@@UAE@XZ;
??4timedout@ConditionWaiter@salhelper@@QAEAAU012@ABU012@@Z;
+
+ ??0Timer@salhelper@@QAE@XZ;
+ ??0Timer@salhelper@@QAE@ABUTTimeValue@1@@Z;
+ ??0Timer@salhelper@@QAE@ABUTTimeValue@1@0@Z;
+ ??1Timer@salhelper@@MAE@XZ;
+
+ ?isExpired@Timer@salhelper@@QBAEXZ;
+ ?isTicking@Timer@salhelper@@QBAEXZ;
+ ?setRemainingTime@Timer@salhelper@@QAAXABUTTimeValue@2@@Z;
+ ?start@Timer@salhelper@@QAAXXZ;
+ ?stop@Timer@salhelper@@QAAXXZ;
} UDK_3_0_0;
diff --git a/salhelper/source/simplereferenceobject.cxx b/salhelper/source/simplereferenceobject.cxx
index 0125e13198be..6df42cc1c930 100644
--- a/salhelper/source/simplereferenceobject.cxx
+++ b/salhelper/source/simplereferenceobject.cxx
@@ -74,4 +74,19 @@ void SimpleReferenceObject::operator delete(void * pPtr, std::nothrow_t const &)
#endif // WNT
}
+#ifdef _MSC_VER
+
+/* This operator is supposed to be unimplemented, but that now leads
+ * to compilation and/or linking errors with MSVC2008. (Don't know
+ * about MSVC2010.) As it can be left unimplemented just fine with
+ * gcc, presumably it is never called. So do implement it then to
+ * avoid the compilation and/or linking errors, but make it crash
+ * intentionally if called.
+ */
+void SimpleReferenceObject::operator delete[](void * /* pPtr */)
+{
+ free(NULL);
+}
+#endif
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 307b9745be2b..7d42a218f854 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -16,6 +16,13 @@
// the need for manually calling regcomp and knowing what
// services we need, and in what .so they are implemented
+#ifdef WNT
+# include <tools/prewin.h>
+# include <windows.h>
+# include <tools/postwin.h>
+# undef ERROR
+#endif
+
#include "sal/config.h"
#include <cppuhelper/bootstrap.hxx>
diff --git a/sc/source/core/tool/docoptio.cxx b/sc/source/core/tool/docoptio.cxx
index e905cbe7f24d..6c89ba675049 100644
--- a/sc/source/core/tool/docoptio.cxx
+++ b/sc/source/core/tool/docoptio.cxx
@@ -452,7 +452,8 @@ ScDocCfg::ScDocCfg() :
{
case SCFORMULAOPT_GRAMMAR:
{
- ::formula::FormulaGrammar::Grammar eGram = ::formula::FormulaGrammar::GRAM_DEFAULT;
+ // Get default value in case this option is not set.
+ ::formula::FormulaGrammar::Grammar eGram = GetFormulaSyntax();
do
{
@@ -471,6 +472,8 @@ ScDocCfg::ScDocCfg() :
case 2: // Excel R1C1
eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1;
break;
+ default:
+ ;
}
}
while (false);
diff --git a/sc/source/filter/excel/frmbase.cxx b/sc/source/filter/excel/frmbase.cxx
index 721ebb72f1b4..89d7c7423b68 100644
--- a/sc/source/filter/excel/frmbase.cxx
+++ b/sc/source/filter/excel/frmbase.cxx
@@ -104,7 +104,7 @@ void _ScRangeListTabs::Append( ScSingleRefData a, SCsTAB nTab, const BOOL b )
if( nTab < 0)
nTab = a.nTab;
- if( nTab >= 0 )
+ if( nTab >= 0 && nTab <= MAXTAB)
{
_ScRangeList* p = ppTabLists[ nTab ];
@@ -169,7 +169,7 @@ void _ScRangeListTabs::Append( ScComplexRefData a, SCsTAB nTab, const BOOL b )
if( nTab < -1)
nTab = a.Ref1.nTab;
- if( nTab >= 0 )
+ if( nTab >= 0 && nTab <= MAXTAB)
{
_ScRangeList* p = ppTabLists[ nTab ];
diff --git a/scp2/source/ooo/ure.scp b/scp2/source/ooo/ure.scp
index f0f294a4edfd..48c1b3fd91b5 100755
--- a/scp2/source/ooo/ure.scp
+++ b/scp2/source/ooo/ure.scp
@@ -1002,7 +1002,7 @@ File gid_File_Dl_Stlport
End
#endif
-#if defined _gcc3 && !(defined FREEBSD || defined NETBSD \
+#if defined _gcc3 && !(defined FREEBSD || defined NETBSD || defined OPENBSD \
|| defined MACOSX || defined SYSTEM_STDLIBS || defined(WNT))
File gid_File_Dl_GccS
TXT_FILE_BODY;
@@ -1017,7 +1017,7 @@ File gid_File_Dl_GccS
End
#endif
-#if defined _gcc3 && !(defined FREEBSD || defined NETBSD \
+#if defined _gcc3 && !(defined FREEBSD || defined NETBSD || defined OPENBSD \
|| defined MACOSX || defined SYSTEM_STDLIBS || defined(WNT))
File gid_File_Dl_Stdcpp
Dir = SCP2_URE_DL_DIR;
@@ -1262,15 +1262,15 @@ Module gid_Module_Root_Ure_Hidden
gid_Unixlink_File_Dl_Salhelper,
gid_File_Dl_Profile_Uno,
gid_File_Dl_Reg,
- gid_Unixlink_File_Dl_Reg
+ gid_Unixlink_File_Dl_Reg,
gid_File_Dl_Rmcxt,
- gid_Unixlink_File_Dl_Rmcxt
+ gid_Unixlink_File_Dl_Rmcxt,
gid_File_Dl_Store,
- gid_Unixlink_File_Dl_Store
+ gid_Unixlink_File_Dl_Store,
gid_File_Dl_Jvmaccess,
- gid_Unixlink_File_Dl_Jvmaccess
+ gid_Unixlink_File_Dl_Jvmaccess,
gid_File_Dl_Jvmfwk,
- gid_Unixlink_File_Dl_Jvmfwk
+ gid_Unixlink_File_Dl_Jvmfwk,
gid_File_Dl_Sunjavaplugin,
gid_File_Dl_JrepropertiesClass,
gid_File_Dl_Profile_Jvmfwk3rc,
@@ -1330,7 +1330,7 @@ Module gid_Module_Root_Ure_Hidden
gid_Unixlink_File_Dl_Salhelper,
gid_Unixlink_File_Dl_Cppu,
gid_Unixlink_File_Dl_Cppuhelper,
- gid_Unixlink_File_Dl_PurpEnvHelper
+ gid_Unixlink_File_Dl_PurpEnvHelper,
gid_Unixlink_File_Dl_Reg,
gid_Unixlink_File_Dl_Rmcxt,
gid_Unixlink_File_Dl_Store,
diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk
index 8e4815577160..818ecd1014c8 100755
--- a/sdext/source/presenter/makefile.mk
+++ b/sdext/source/presenter/makefile.mk
@@ -33,7 +33,7 @@ EXTNAME=PresenterScreen
ENABLE_EXCEPTIONS=TRUE
# survive zip dependencies
-MAXLINELENGTH:=80000
+MAXLINELENGTH:=100000
# --- Settings ----------------------------------
diff --git a/set_soenv.in b/set_soenv.in
index 1ae3d6615480..dbaada48110f 100644
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -393,6 +393,45 @@ elsif ( $platform =~ m/freebsd/ )
}
$INPATH = $OUTPATH.$PROEXT;
}
+elsif ( $platform =~ m/openbsd/ )
+{ $BIG_SVX = "TRUE";
+ $COM = "GCC";
+ $COMPATH = '@COMPATH@';
+ $CVER = "C300";
+ $GUI = "UNX";
+ $GUIBASE = "unx";
+ $GVER = "VCL";
+ $OS = "OPENBSD";
+ $PATH_SEPERATOR = $ps;
+ $OSVERSION = '@OSVERSION@';
+ $OUTPATH = "unxobsd";
+ $outfile = "OpenBSDEnv.Set";
+ if ($platform =~ m/^amd64/)
+ {
+ print "Setting OpenBSD AMD64 specific values... ";
+ $CPU = "X";
+ $CPUNAME = "X86_64";
+ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64";
+ $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."server";
+ $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."amd64".$ds."native_threads";
+ }
+ elsif ($platform =~ m/^i386/)
+ { print "Setting OpenBSD x86 specific values... ";
+ $CPU = "I";
+ $CPUNAME = "INTEL";
+ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386";
+ $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."client";
+ $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."native_threads";
+ }
+ else
+ { print "Unsupported OpenBSD architecture: $platform \n";
+ exit 1;
+ }
+ if( @GCCVER@ >= 30401 ) {
+ $CVER = "C341";
+ }
+ $INPATH = $OUTPATH.$PROEXT;
+}
elsif ( $platform =~ m/linux/ )
{
# General Linux settings:
@@ -1044,7 +1083,7 @@ if ($platform =~ m/solaris/)
$L.$USR_DT.$LIB.
$L.$USR_OPENWIN.$LIB;
}
-elsif ($platform =~ m/linux|netbsd|osf1|freebsd|aix/)
+elsif ($platform =~ m/linux|netbsd|osf1|freebsd|aix|openbsd/)
{
$SOLAREXTRALIB = $L.$par_dir.$LIB64;
}
@@ -1110,7 +1149,7 @@ if ($platform =~ m/cygwin|os2/)
}
# The general environment path.
-if ($platform =~ m/linux|netbsd|odf1|freebsd|aix|solaris/)
+if ($platform =~ m/linux|netbsd|odf1|freebsd|aix|solaris|openbsd/)
{ $PATH = $cur_dir.
# $ps.'$SOLARVER'.$ds.'$INPATH'.$BIN.
$ps.'$SOLARENV'.$ds.'$OUTPATH'.$BIN.
@@ -1336,17 +1375,23 @@ if ($platform =~ m/solaris/)
$L_STLPORT_LIB.
$L.$XLIB;
}
-elsif ($platform =~ m/linux|netbsd|osf1|aix|freebsd/)
+elsif ($platform =~ m/linux|netbsd|osf1|aix|freebsd|openbsd/)
{ $SOLARLIB = $L.$par_dir.$LIB.
$L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB.
$L.'$SOLARVER'.$ds.'$INPATH'.$LIB.
- $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB.
- $L.'$JAVA_HOME'.$LIB64.
+ $L.'$SOLARENV'.$ds.'$OUTPATH'.$LIB;
+ if ($platform =~ m/openbsd/) {
+ $SOLARLIB .= $L.$USR_LOCAL.$LIB;
+ }
+ $SOLARLIB .= $L.'$JAVA_HOME'.$LIB64.
$L.$JRELIBDIR.
$L.$JRETOOLKITDIR.
$L.$JRETHREADDIR.
- $L_STLPORT_LIB.
- $L.$XLIB;
+ $L_STLPORT_LIB;
+
+ if ( $XLIB ne "/usr/lib" && $XLIB ne "/usr/lib64" ) {
+ $SOLARLIB .= $L.$XLIB;
+ }
}
elsif ($platform =~ m/cygwin|os2/)
{ $SOLARLIB = $L.'$SOLARVER'.$ds.'$INPATH'.$LIB.
@@ -1379,10 +1424,10 @@ $SOLARINC = $I.$cur_dir.
$I.'$SOLARENV'.$INC.
$I.'$SRC_ROOT'.$ds."res";
-if ($platform =~ m/solaris|linux|osf1|freebsd|netbsd|aix/)
+if ($platform =~ m/solaris|linux|osf1|freebsd|netbsd|aix|openbsd/)
{
$SOLARINC .= $STLPORT_stlport;
-if ($platform =~ m/linux|freebsd|netbsd/)
+if ($platform =~ m/linux|freebsd|netbsd|openbsd/)
{
# This simply adds an include path, so even cases that break the FHS work
$SOLARINC .= $STLPORT_inc_stlport;
@@ -1403,8 +1448,14 @@ if ($platform =~ m/linux/)
}
- $SOLARINC .= $I.'$SOLARENV'.$INC.$ds."Xp31".
- $I.'$JAVA_HOME'.$INCLUDE;
+ $SOLARINC .= $I.'$SOLARENV'.$INC.$ds."Xp31";
+
+ # pickup system jpeg over java jpeg on OpenBSD
+ if ($platform =~ m/openbsd/)
+ { $SOLARINC .= $I.$USR_LOCAL.$INCLUDE;
+ }
+ { $SOLARINC .= $I.'$JAVA_HOME'.$INCLUDE;
+ }
#include system dependent Java include directory
if (!($JDK eq "gcj"))
@@ -1427,13 +1478,16 @@ if ($platform =~ m/linux/)
elsif ( $platform =~ m/aix/ )
{ $SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."aix";
}
+ elsif ($platform =~ m/openbsd/)
+ { $SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."openbsd";
+ }
#java threads include path
$SOLARINC .=$I.'$JAVA_HOME'.$INCLUDE.$ds."native_threads".$ds."include";
}
#The tail, if needed
- if ($platform =~ m/linux|freebsd|netbsd|aix/)
+ if ($platform =~ m/linux|freebsd|netbsd|aix|openbsd/)
{ $SOLARINC .= $I.$XINC;
}
elsif ($platform =~ m/osf1/)
diff --git a/setup_native/source/mac/Info.plist.langpack b/setup_native/source/mac/Info.plist.langpack
index 3c1eb2c6f369..92933205ff4b 100644
--- a/setup_native/source/mac/Info.plist.langpack
+++ b/setup_native/source/mac/Info.plist.langpack
@@ -18,7 +18,7 @@
<key>CFBundleShortVersionString</key>
<string>9</string>
<key>CFBundleIdentifier</key>
- <string>org.openoffice.script</string>
+ <string>org.libreoffice.script</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
diff --git a/setup_native/source/mac/broffice/osxdndinstall.png b/setup_native/source/mac/broffice/osxdndinstall.png
index 233d4bbc84b9..966f9f7bcffc 100644
--- a/setup_native/source/mac/broffice/osxdndinstall.png
+++ b/setup_native/source/mac/broffice/osxdndinstall.png
Binary files differ
diff --git a/setup_native/source/mac/broffice/osxdndinstall.svg b/setup_native/source/mac/broffice/osxdndinstall.svg
new file mode 100644
index 000000000000..7b7c6c6d72da
--- /dev/null
+++ b/setup_native/source/mac/broffice/osxdndinstall.svg
@@ -0,0 +1,1765 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="550"
+ height="442"
+ id="svg3134"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="Installation (OOo3_refresh_mac_install_image).svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs3136">
+ <linearGradient
+ id="linearGradient7426">
+ <stop
+ id="stop7428"
+ offset="0"
+ style="stop-color:#f2f2f2;stop-opacity:1" />
+ <stop
+ id="stop7430"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3142" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2572"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2694"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2696"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2818"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2820"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2944"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <inkscape:perspective
+ id="perspective2777"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3076"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3079"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4800" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3742" />
+ <inkscape:perspective
+ id="perspective3744"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2870" />
+ <inkscape:perspective
+ id="perspective2802"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2531" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2854" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective4034" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3939" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3852" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ id="perspective3771" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective59" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3532" />
+ <inkscape:perspective
+ id="perspective2543"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2818"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3379"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3385"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3387"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3391"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3393"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3397"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3752"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3754"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3819"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3821"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3886"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3888"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,1863.9451)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,-0.4990909,2265.9451)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3092"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3095"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2521" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4715" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4717" />
+ <inkscape:perspective
+ id="perspective4719"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4721"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4723"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4725"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4727"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4729"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4731"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4733"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4735" />
+ <inkscape:perspective
+ id="perspective4737"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4739" />
+ <inkscape:perspective
+ id="perspective4741"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4743"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4211" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="391.03 : 12.41 : 1"
+ inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
+ id="perspective3301" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="399.49701 : 12.41 : 1"
+ inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
+ id="perspective3226" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3158" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3146" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2902" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2900" />
+ <inkscape:perspective
+ id="perspective2898"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2896"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2894"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2892"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2890"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2888"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2886"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2884"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2753" />
+ <inkscape:perspective
+ id="perspective2881"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2879" />
+ <inkscape:perspective
+ id="perspective2877"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2875"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="401.944 : 18.512501 : 1"
+ inkscape:persp3d-origin="200.972 : 12.341667 : 1"
+ id="perspective2645" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="385.51999 : 18.512501 : 1"
+ inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
+ id="perspective2633" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2474" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2426" />
+ <inkscape:perspective
+ id="perspective2869"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2869"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.71518,979.02157)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.7152,577.0947)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2982"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2985"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3045"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,979.0216)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient3048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9981818,0,0,0.109589,150.2152,577.0216)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.90030045"
+ inkscape:cx="258.99473"
+ inkscape:cy="241.49108"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1264"
+ inkscape:window-height="750"
+ inkscape:window-x="0"
+ inkscape:window-y="14"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="74.144094,396.21835"
+ id="guide2444" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="74.504535,396.63219"
+ id="guide2446" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="71.833579,326.0027"
+ id="guide2448" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="474.05203,326.11834"
+ id="guide2946" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3139">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Camada 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-150.71429,-577.0765)">
+ <g
+ id="g4297"
+ style="fill:#800000"
+ transform="translate(-30.90885,443.41812)" />
+ <text
+ transform="scale(1.0168078,0.98347)"
+ font-size="103.091"
+ id="text43"
+ style="font-size:48.89245605px;font-family:Vegur-Regular"
+ x="2415.6145"
+ y="514.5885" />
+ <text
+ transform="scale(0.9979479,1.0020563)"
+ font-size="103.091"
+ id="text3748"
+ style="font-size:91.03964996px;font-family:Vegur-Regular"
+ x="2310.8984"
+ y="391.8399" />
+ <g
+ id="g3200"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (OOo3_refresh_mac_install_image).png"
+ inkscape:export-xdpi="89.916817"
+ inkscape:export-ydpi="89.916817">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ y="577.07648"
+ x="150.71429"
+ height="442"
+ width="550"
+ id="rect13743"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <image
+ xlink:href="data:image/png;base64,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 "
+ width="550"
+ height="442"
+ id="image13745"
+ x="150.71429"
+ y="577.07648"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2452"
+ width="550"
+ height="442"
+ x="150.71429"
+ y="577.07648"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ y="577.07648"
+ x="150.71429"
+ id="image2454"
+ height="442"
+ width="550"
+ xlink:href="data:image/png;base64,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 " />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient3095);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2456"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="577.07648" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient3092);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2458"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="979.07648" />
+ <g
+ transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ id="g2526">
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2528"
+ d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2530"
+ d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
+ id="path2532"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2534"
+ d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
+ id="path2536"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2538"
+ d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
+ id="path2540"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2542"
+ d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
+ id="path2544"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2546"
+ d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
+ id="path2548"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2550"
+ d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
+ id="path2552"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2554"
+ d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
+ id="path2556"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2558"
+ d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2560"
+ d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
+ id="path2562"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2564"
+ d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
+ id="path2566"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2568"
+ d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2576"
+ width="550"
+ height="442"
+ x="150.71429"
+ y="577.07648"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ y="577.07648"
+ x="150.71429"
+ id="image2578"
+ height="442"
+ width="550"
+ xlink:href="data:image/png;base64,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 " />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient3048);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2580"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="577.07648" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient3045);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2582"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="979.07648" />
+ <g
+ transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ id="g2650">
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2652"
+ d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2654"
+ d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
+ id="path2656"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2658"
+ d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
+ id="path2660"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2662"
+ d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
+ id="path2664"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2666"
+ d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
+ id="path2668"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2670"
+ d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
+ id="path2672"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2674"
+ d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
+ id="path2676"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2678"
+ d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
+ id="path2680"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2682"
+ d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2684"
+ d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
+ id="path2686"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2688"
+ d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
+ id="path2690"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2692"
+ d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2700"
+ width="550"
+ height="442"
+ x="150.71429"
+ y="577.07648"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ y="577.07648"
+ x="150.71429"
+ id="image2702"
+ height="442"
+ width="550"
+ xlink:href="data:image/png;base64,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 " />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient2985);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2704"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="577.07648" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient2982);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2706"
+ width="549"
+ height="40"
+ x="150.71429"
+ y="979.07648" />
+ <g
+ transform="matrix(0.8999997,0,0,0.8999997,204.81441,-875.1749)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ id="g2774">
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2776"
+ d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2778"
+ d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
+ id="path2780"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2782"
+ d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
+ id="path2784"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2786"
+ d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
+ id="path2788"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2790"
+ d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
+ id="path2792"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2794"
+ d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
+ id="path2796"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2798"
+ d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
+ id="path2800"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2802"
+ d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
+ id="path2804"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2806"
+ d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2808"
+ d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
+ id="path2810"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2812"
+ d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
+ id="path2814"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path2816"
+ d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2824"
+ width="550"
+ height="442"
+ x="149.20457"
+ y="577.1496"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ y="577.07648"
+ x="150.71429"
+ id="image2826"
+ height="442"
+ width="550"
+ xlink:href="data:image/png;base64,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 " />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ style="fill:url(#linearGradient2922);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2828"
+ width="549"
+ height="40"
+ x="151.21429"
+ y="577.1496" />
+ <rect
+ y="979.07648"
+ x="151.21429"
+ height="40"
+ width="549"
+ id="rect13863"
+ style="fill:url(#linearGradient2869);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/OOo3_refresh_mac_install_image.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="translate(1.7025045e-5,8.7443773e-5)"
+ id="g3133">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 594.45679,1001.077 C 593.77761,1001.0599 593.10851,1001.4846 592.84303,1002.1014 C 592.57754,1002.7181 592.73251,1003.488 593.2168,1003.958 L 607.79343,1018.5807 C 608.26355,1019.0516 609.02902,1019.2077 609.64987,1018.9592 C 610.27074,1018.7108 610.70962,1018.0727 610.71427,1017.412 L 610.71427,1002.7621 C 610.71607,1001.8794 609.90077,1001.0754 609.00586,1001.077 L 594.45679,1001.077 L 594.45679,1001.077 z"
+ id="path13935"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,911.07691 C 683.77762,911.05981 683.10851,911.48452 682.84304,912.10129 C 682.57755,912.71806 682.73251,913.48792 683.21681,913.9579 L 697.79344,928.58065 C 698.26355,929.05153 699.02902,929.20768 699.64988,928.95919 C 700.27074,928.71079 700.70963,928.07269 700.71427,927.41191 L 700.71427,912.76207 C 700.71607,911.87935 699.90078,911.07538 699.00587,911.07691 L 684.45679,911.07691 L 684.45679,911.07691 z"
+ id="path13937"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13939"
+ d="M 684.45679,1001.0769 C 683.77762,1001.0598 683.10851,1001.4845 682.84304,1002.1013 C 682.57755,1002.718 682.73251,1003.4879 683.21681,1003.9579 L 697.79344,1018.5806 C 698.26355,1019.0515 699.02902,1019.2076 699.64988,1018.9592 C 700.27074,1018.7108 700.70963,1018.0727 700.71427,1017.4119 L 700.71427,1002.762 C 700.71607,1001.8793 699.90078,1001.0754 699.00587,1001.0769 L 684.45679,1001.0769 L 684.45679,1001.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 666.4568,1001.0769 C 665.77762,1001.0598 665.10852,1001.4845 664.84305,1002.1013 C 664.57756,1002.718 664.73252,1003.4879 665.21682,1003.9579 L 679.79345,1018.5806 C 680.26356,1019.0515 681.02903,1019.2076 681.64988,1018.9592 C 682.27075,1018.7108 682.70963,1018.0727 682.71428,1017.4119 L 682.71428,1002.762 C 682.71608,1001.8793 681.90079,1001.0754 681.00587,1001.0769 L 666.4568,1001.0769 L 666.4568,1001.0769 z"
+ id="path13941"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13943"
+ d="M 648.45681,1001.0769 C 647.77763,1001.0598 647.10853,1001.4845 646.84305,1002.1013 C 646.57756,1002.718 646.73252,1003.4879 647.21682,1003.9579 L 661.79345,1018.5806 C 662.26357,1019.0515 663.02903,1019.2076 663.64989,1018.9592 C 664.27075,1018.7108 664.70964,1018.0727 664.71428,1017.4119 L 664.71428,1002.762 C 664.71608,1001.8793 663.90079,1001.0754 663.00588,1001.0769 L 648.45681,1001.0769 L 648.45681,1001.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 630.45681,1001.0769 C 629.77764,1001.0598 629.10853,1001.4845 628.84306,1002.1013 C 628.57757,1002.718 628.73253,1003.4879 629.21683,1003.9579 L 643.79346,1018.5806 C 644.26357,1019.0515 645.02904,1019.2076 645.6499,1018.9592 C 646.27076,1018.7108 646.70965,1018.0727 646.71429,1017.4119 L 646.71429,1002.762 C 646.71609,1001.8793 645.9008,1001.0754 645.00588,1001.0769 L 630.45681,1001.0769 L 630.45681,1001.0769 z"
+ id="path13945"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13947"
+ d="M 612.45682,1001.0769 C 611.77764,1001.0598 611.10854,1001.4845 610.84306,1002.1013 C 610.57757,1002.718 610.73254,1003.4879 611.21683,1003.9579 L 625.79346,1018.5806 C 626.26358,1019.0515 627.02905,1019.2076 627.6499,1018.9592 C 628.27077,1018.7108 628.70965,1018.0727 628.7143,1017.4119 L 628.7143,1002.762 C 628.7161,1001.8793 627.9008,1001.0754 627.00589,1001.0769 L 612.45682,1001.0769 L 612.45682,1001.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,983.07689 C 683.77762,983.05979 683.10851,983.4845 682.84304,984.10127 C 682.57755,984.71804 682.73251,985.4879 683.21681,985.95788 L 697.79344,1000.5806 C 698.26355,1001.0515 699.02902,1001.2077 699.64988,1000.9592 C 700.27074,1000.7108 700.70963,1000.0727 700.71427,999.41189 L 700.71427,984.76205 C 700.71607,983.87933 699.90078,983.07536 699.00587,983.07689 L 684.45679,983.07689 L 684.45679,983.07689 z"
+ id="path13949"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13951"
+ d="M 666.4568,983.07689 C 665.77762,983.05979 665.10852,983.4845 664.84305,984.10127 C 664.57756,984.71804 664.73252,985.4879 665.21682,985.95788 L 679.79345,1000.5806 C 680.26356,1001.0515 681.02903,1001.2077 681.64988,1000.9592 C 682.27075,1000.7108 682.70963,1000.0727 682.71428,999.41189 L 682.71428,984.76205 C 682.71608,983.87933 681.90079,983.07536 681.00587,983.07689 L 666.4568,983.07689 L 666.4568,983.07689 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 648.45681,983.07689 C 647.77763,983.05979 647.10853,983.4845 646.84305,984.10127 C 646.57756,984.71804 646.73252,985.4879 647.21682,985.95788 L 661.79345,1000.5806 C 662.26357,1001.0515 663.02903,1001.2077 663.64989,1000.9592 C 664.27075,1000.7108 664.70964,1000.0727 664.71428,999.41189 L 664.71428,984.76205 C 664.71608,983.87933 663.90079,983.07536 663.00588,983.07689 L 648.45681,983.07689 L 648.45681,983.07689 z"
+ id="path13953"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13955"
+ d="M 630.45681,983.07689 C 629.77764,983.05979 629.10853,983.4845 628.84306,984.10127 C 628.57757,984.71804 628.73253,985.4879 629.21683,985.95788 L 643.79346,1000.5806 C 644.26357,1001.0515 645.02904,1001.2077 645.6499,1000.9592 C 646.27076,1000.7108 646.70965,1000.0727 646.71429,999.41189 L 646.71429,984.76205 C 646.71609,983.87933 645.9008,983.07536 645.00588,983.07689 L 630.45681,983.07689 L 630.45681,983.07689 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 612.45682,983.07689 C 611.77764,983.05979 611.10854,983.4845 610.84306,984.10127 C 610.57757,984.71804 610.73254,985.4879 611.21683,985.95788 L 625.79346,1000.5806 C 626.26358,1001.0515 627.02905,1001.2077 627.6499,1000.9592 C 628.27077,1000.7108 628.70965,1000.0727 628.7143,999.41189 L 628.7143,984.76205 C 628.7161,983.87933 627.9008,983.07536 627.00589,983.07689 L 612.45682,983.07689 L 612.45682,983.07689 z"
+ id="path13957"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13959"
+ d="M 684.45679,965.0769 C 683.77762,965.0598 683.10851,965.48451 682.84304,966.10128 C 682.57755,966.71805 682.73251,967.48791 683.21681,967.95789 L 697.79344,982.58063 C 698.26355,983.05151 699.02902,983.20766 699.64988,982.95917 C 700.27074,982.71077 700.70963,982.07267 700.71427,981.41189 L 700.71427,966.76206 C 700.71607,965.87934 699.90078,965.07537 699.00587,965.0769 L 684.45679,965.0769 L 684.45679,965.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 666.4568,965.0769 C 665.77762,965.0598 665.10852,965.48451 664.84305,966.10128 C 664.57756,966.71805 664.73252,967.48791 665.21682,967.95789 L 679.79345,982.58063 C 680.26356,983.05151 681.02903,983.20766 681.64988,982.95917 C 682.27075,982.71077 682.70963,982.07267 682.71428,981.41189 L 682.71428,966.76206 C 682.71608,965.87934 681.90079,965.07537 681.00587,965.0769 L 666.4568,965.0769 z"
+ id="path13961"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13963"
+ d="M 648.45681,965.0769 C 647.77763,965.0598 647.10853,965.48451 646.84305,966.10128 C 646.57756,966.71805 646.73252,967.48791 647.21682,967.95789 L 661.79345,982.58063 C 662.26357,983.05151 663.02903,983.20766 663.64989,982.95917 C 664.27075,982.71077 664.70964,982.07267 664.71428,981.41189 L 664.71428,966.76206 C 664.71608,965.87934 663.90079,965.07537 663.00588,965.0769 L 648.45681,965.0769 L 648.45681,965.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 630.45681,965.0769 C 629.77764,965.0598 629.10853,965.48451 628.84306,966.10128 C 628.57757,966.71805 628.73253,967.48791 629.21683,967.95789 L 643.79346,982.58063 C 644.26357,983.05151 645.02904,983.20766 645.6499,982.95917 C 646.27076,982.71077 646.70965,982.07267 646.71429,981.41189 L 646.71429,966.76206 C 646.71609,965.87934 645.9008,965.07537 645.00588,965.0769 L 630.45681,965.0769 L 630.45681,965.0769 z"
+ id="path13965"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,947.0769 C 683.77762,947.0598 683.10851,947.48451 682.84304,948.10128 C 682.57755,948.71805 682.73251,949.48791 683.21681,949.95789 L 697.79344,964.58064 C 698.26355,965.05152 699.02902,965.20767 699.64988,964.95918 C 700.27074,964.71078 700.70963,964.07268 700.71427,963.4119 L 700.71427,948.76206 C 700.71607,947.87934 699.90078,947.07537 699.00587,947.0769 L 684.45679,947.0769 L 684.45679,947.0769 z"
+ id="path13967"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13969"
+ d="M 666.4568,947.0769 C 665.77762,947.0598 665.10852,947.48451 664.84305,948.10128 C 664.57756,948.71805 664.73252,949.48791 665.21682,949.95789 L 679.79345,964.58064 C 680.26356,965.05152 681.02903,965.20767 681.64988,964.95918 C 682.27075,964.71078 682.70963,964.07268 682.71428,963.4119 L 682.71428,948.76206 C 682.71608,947.87934 681.90079,947.07537 681.00587,947.0769 L 666.4568,947.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 648.45681,947.0769 C 647.77763,947.0598 647.10853,947.48451 646.84305,948.10128 C 646.57756,948.71805 646.73252,949.48791 647.21682,949.95789 L 661.79345,964.58064 C 662.26357,965.05152 663.02903,965.20767 663.64989,964.95918 C 664.27075,964.71078 664.70964,964.07268 664.71428,963.4119 L 664.71428,948.76206 C 664.71608,947.87934 663.90079,947.07537 663.00588,947.0769 L 648.45681,947.0769 L 648.45681,947.0769 z"
+ id="path13971"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path13973"
+ d="M 684.45679,929.07691 C 683.77762,929.05981 683.10851,929.48452 682.84304,930.10129 C 682.57755,930.71806 682.73251,931.48792 683.21681,931.9579 L 697.79344,946.58064 C 698.26355,947.05152 699.02902,947.20767 699.64988,946.95918 C 700.27074,946.71078 700.70963,946.07268 700.71427,945.4119 L 700.71427,930.76207 C 700.71607,929.87935 699.90078,929.07538 699.00587,929.07691 L 684.45679,929.07691 L 684.45679,929.07691 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 666.4568,929.07691 C 665.77762,929.05981 665.10852,929.48452 664.84305,930.10129 C 664.57756,930.71806 664.73252,931.48792 665.21682,931.9579 L 679.79345,946.58064 C 680.26356,947.05152 681.02903,947.20767 681.64988,946.95918 C 682.27075,946.71078 682.70963,946.07268 682.71428,945.4119 L 682.71428,930.76207 C 682.71608,929.87935 681.90079,929.07538 681.00587,929.07691 L 666.4568,929.07691 z"
+ id="path13975"
+ sodipodi:nodetypes="csccscccc" />
+ </g>
+ <g
+ transform="matrix(0.5346023,0,0,0.5346023,226.78329,489.97176)"
+ id="g4513">
+ <g
+ id="g3252"
+ transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)"
+ style="fill:#000000">
+ <path
+ id="path3254"
+ d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
+ style="fill:#000000" />
+ <path
+ id="path3256"
+ d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3258"
+ d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3260"
+ d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
+ style="fill:#000000" />
+ <path
+ id="path3262"
+ d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3264"
+ d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
+ style="fill:#000000" />
+ <path
+ id="path3266"
+ d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
+ style="fill:#000000" />
+ <path
+ id="path3268"
+ d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
+ style="fill:#000000" />
+ <path
+ id="path3270"
+ d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3272"
+ d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3274"
+ d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
+ style="fill:#000000" />
+ <path
+ id="path3276"
+ d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
+ style="fill:#000000" />
+ <path
+ id="path3278"
+ d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3280"
+ d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
+ style="fill:#000000" />
+ <path
+ id="path3282"
+ d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
+ style="fill:#000000" />
+ <path
+ id="path3284"
+ d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
+ style="fill:#000000" />
+ <path
+ id="path3286"
+ d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
+ style="fill:#000000" />
+ <path
+ id="path3288"
+ d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
+ style="fill:#000000" />
+ <path
+ id="path3290"
+ d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
+ style="fill:#000000" />
+ <path
+ id="path3292"
+ d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
+ style="fill:#000000" />
+ <path
+ id="path3294"
+ d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
+ style="fill:#000000" />
+ </g>
+ <g
+ id="g2496"
+ transform="translate(0,-8.52e-3)"
+ style="fill:#000000">
+ <path
+ id="path2451"
+ d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2453"
+ d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2455"
+ d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
+ style="fill:#000000" />
+ <path
+ id="path2457"
+ d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2459"
+ d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2461"
+ d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
+ style="fill:#000000" />
+ <path
+ id="path2463"
+ d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
+ style="fill:#000000" />
+ <path
+ id="path2465"
+ d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
+ style="fill:#000000" />
+ <path
+ id="path2467"
+ d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
+ style="fill:#18a303;fill-opacity:1" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ sodipodi:nodetypes="csccscccc"
+ id="path3908"
+ d="M 156.43842,248.57158 C 155.16781,248.53958 153.91607,249.33412 153.41943,250.48796 C 152.92276,251.64181 153.21267,253.08203 154.11868,253.96126 L 181.38831,281.31717 C 182.26779,282.19808 183.6998,282.49021 184.8613,282.02534 C 186.0228,281.56063 186.84384,280.36689 186.85253,279.13071 L 186.85253,251.72414 C 186.85591,250.07277 185.33067,248.56872 183.65649,248.57158 L 156.43842,248.57158 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ id="path3910"
+ d="M 81.45645,248.57056 C 79.689041,248.59615 78.270622,250.0379 78.273691,251.80545 L 78.273691,376.66337 C 78.27071,378.43092 79.689112,379.87251 81.45645,379.89809 L 183.61756,379.89809 C 184.4759,379.89944 185.29952,379.55917 185.90647,378.95219 C 186.51345,378.34539 186.85385,377.52172 186.85248,376.66337 L 186.85248,296.25966 C 186.85748,295.39997 186.51946,294.5736 185.91332,293.96395 L 141.72003,249.56192 C 141.11895,248.9366 140.2916,248.57931 139.42427,248.57056 L 81.45645,248.57056 L 81.45645,248.57056 z M 84.691391,255.04034 L 138.06768,255.04034 L 180.38263,297.5642 L 180.38263,373.42832 L 84.691391,373.42832 L 84.691391,255.04034 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.92000002;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ <g
+ id="g3156"
+ transform="matrix(-1,0,0,-1,851.42856,1596.1529)">
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3158"
+ d="M 594.45679,1001.077 C 593.77761,1001.0599 593.10851,1001.4846 592.84303,1002.1014 C 592.57754,1002.7181 592.73251,1003.488 593.2168,1003.958 L 607.79343,1018.5807 C 608.26355,1019.0516 609.02902,1019.2077 609.64987,1018.9592 C 610.27074,1018.7108 610.70962,1018.0727 610.71427,1017.412 L 610.71427,1002.7621 C 610.71607,1001.8794 609.90077,1001.0754 609.00586,1001.077 L 594.45679,1001.077 L 594.45679,1001.077 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3160"
+ d="M 684.45679,911.07691 C 683.77762,911.05981 683.10851,911.48452 682.84304,912.10129 C 682.57755,912.71806 682.73251,913.48792 683.21681,913.9579 L 697.79344,928.58065 C 698.26355,929.05153 699.02902,929.20768 699.64988,928.95919 C 700.27074,928.71079 700.70963,928.07269 700.71427,927.41191 L 700.71427,912.76207 C 700.71607,911.87935 699.90078,911.07538 699.00587,911.07691 L 684.45679,911.07691 L 684.45679,911.07691 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,1001.0769 C 683.77762,1001.0598 683.10851,1001.4845 682.84304,1002.1013 C 682.57755,1002.718 682.73251,1003.4879 683.21681,1003.9579 L 697.79344,1018.5806 C 698.26355,1019.0515 699.02902,1019.2076 699.64988,1018.9592 C 700.27074,1018.7108 700.70963,1018.0727 700.71427,1017.4119 L 700.71427,1002.762 C 700.71607,1001.8793 699.90078,1001.0754 699.00587,1001.0769 L 684.45679,1001.0769 L 684.45679,1001.0769 z"
+ id="path3162"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3164"
+ d="M 666.4568,1001.0769 C 665.77762,1001.0598 665.10852,1001.4845 664.84305,1002.1013 C 664.57756,1002.718 664.73252,1003.4879 665.21682,1003.9579 L 679.79345,1018.5806 C 680.26356,1019.0515 681.02903,1019.2076 681.64988,1018.9592 C 682.27075,1018.7108 682.70963,1018.0727 682.71428,1017.4119 L 682.71428,1002.762 C 682.71608,1001.8793 681.90079,1001.0754 681.00587,1001.0769 L 666.4568,1001.0769 L 666.4568,1001.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 648.45681,1001.0769 C 647.77763,1001.0598 647.10853,1001.4845 646.84305,1002.1013 C 646.57756,1002.718 646.73252,1003.4879 647.21682,1003.9579 L 661.79345,1018.5806 C 662.26357,1019.0515 663.02903,1019.2076 663.64989,1018.9592 C 664.27075,1018.7108 664.70964,1018.0727 664.71428,1017.4119 L 664.71428,1002.762 C 664.71608,1001.8793 663.90079,1001.0754 663.00588,1001.0769 L 648.45681,1001.0769 L 648.45681,1001.0769 z"
+ id="path3166"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3168"
+ d="M 630.45681,1001.0769 C 629.77764,1001.0598 629.10853,1001.4845 628.84306,1002.1013 C 628.57757,1002.718 628.73253,1003.4879 629.21683,1003.9579 L 643.79346,1018.5806 C 644.26357,1019.0515 645.02904,1019.2076 645.6499,1018.9592 C 646.27076,1018.7108 646.70965,1018.0727 646.71429,1017.4119 L 646.71429,1002.762 C 646.71609,1001.8793 645.9008,1001.0754 645.00588,1001.0769 L 630.45681,1001.0769 L 630.45681,1001.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 612.45682,1001.0769 C 611.77764,1001.0598 611.10854,1001.4845 610.84306,1002.1013 C 610.57757,1002.718 610.73254,1003.4879 611.21683,1003.9579 L 625.79346,1018.5806 C 626.26358,1019.0515 627.02905,1019.2076 627.6499,1018.9592 C 628.27077,1018.7108 628.70965,1018.0727 628.7143,1017.4119 L 628.7143,1002.762 C 628.7161,1001.8793 627.9008,1001.0754 627.00589,1001.0769 L 612.45682,1001.0769 L 612.45682,1001.0769 z"
+ id="path3170"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3172"
+ d="M 684.45679,983.07689 C 683.77762,983.05979 683.10851,983.4845 682.84304,984.10127 C 682.57755,984.71804 682.73251,985.4879 683.21681,985.95788 L 697.79344,1000.5806 C 698.26355,1001.0515 699.02902,1001.2077 699.64988,1000.9592 C 700.27074,1000.7108 700.70963,1000.0727 700.71427,999.41189 L 700.71427,984.76205 C 700.71607,983.87933 699.90078,983.07536 699.00587,983.07689 L 684.45679,983.07689 L 684.45679,983.07689 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 666.4568,983.07689 C 665.77762,983.05979 665.10852,983.4845 664.84305,984.10127 C 664.57756,984.71804 664.73252,985.4879 665.21682,985.95788 L 679.79345,1000.5806 C 680.26356,1001.0515 681.02903,1001.2077 681.64988,1000.9592 C 682.27075,1000.7108 682.70963,1000.0727 682.71428,999.41189 L 682.71428,984.76205 C 682.71608,983.87933 681.90079,983.07536 681.00587,983.07689 L 666.4568,983.07689 L 666.4568,983.07689 z"
+ id="path3174"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3176"
+ d="M 648.45681,983.07689 C 647.77763,983.05979 647.10853,983.4845 646.84305,984.10127 C 646.57756,984.71804 646.73252,985.4879 647.21682,985.95788 L 661.79345,1000.5806 C 662.26357,1001.0515 663.02903,1001.2077 663.64989,1000.9592 C 664.27075,1000.7108 664.70964,1000.0727 664.71428,999.41189 L 664.71428,984.76205 C 664.71608,983.87933 663.90079,983.07536 663.00588,983.07689 L 648.45681,983.07689 L 648.45681,983.07689 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 630.45681,983.07689 C 629.77764,983.05979 629.10853,983.4845 628.84306,984.10127 C 628.57757,984.71804 628.73253,985.4879 629.21683,985.95788 L 643.79346,1000.5806 C 644.26357,1001.0515 645.02904,1001.2077 645.6499,1000.9592 C 646.27076,1000.7108 646.70965,1000.0727 646.71429,999.41189 L 646.71429,984.76205 C 646.71609,983.87933 645.9008,983.07536 645.00588,983.07689 L 630.45681,983.07689 L 630.45681,983.07689 z"
+ id="path3178"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3180"
+ d="M 612.45682,983.07689 C 611.77764,983.05979 611.10854,983.4845 610.84306,984.10127 C 610.57757,984.71804 610.73254,985.4879 611.21683,985.95788 L 625.79346,1000.5806 C 626.26358,1001.0515 627.02905,1001.2077 627.6499,1000.9592 C 628.27077,1000.7108 628.70965,1000.0727 628.7143,999.41189 L 628.7143,984.76205 C 628.7161,983.87933 627.9008,983.07536 627.00589,983.07689 L 612.45682,983.07689 L 612.45682,983.07689 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,965.0769 C 683.77762,965.0598 683.10851,965.48451 682.84304,966.10128 C 682.57755,966.71805 682.73251,967.48791 683.21681,967.95789 L 697.79344,982.58063 C 698.26355,983.05151 699.02902,983.20766 699.64988,982.95917 C 700.27074,982.71077 700.70963,982.07267 700.71427,981.41189 L 700.71427,966.76206 C 700.71607,965.87934 699.90078,965.07537 699.00587,965.0769 L 684.45679,965.0769 L 684.45679,965.0769 z"
+ id="path3182"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3184"
+ d="M 666.4568,965.0769 C 665.77762,965.0598 665.10852,965.48451 664.84305,966.10128 C 664.57756,966.71805 664.73252,967.48791 665.21682,967.95789 L 679.79345,982.58063 C 680.26356,983.05151 681.02903,983.20766 681.64988,982.95917 C 682.27075,982.71077 682.70963,982.07267 682.71428,981.41189 L 682.71428,966.76206 C 682.71608,965.87934 681.90079,965.07537 681.00587,965.0769 L 666.4568,965.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 648.45681,965.0769 C 647.77763,965.0598 647.10853,965.48451 646.84305,966.10128 C 646.57756,966.71805 646.73252,967.48791 647.21682,967.95789 L 661.79345,982.58063 C 662.26357,983.05151 663.02903,983.20766 663.64989,982.95917 C 664.27075,982.71077 664.70964,982.07267 664.71428,981.41189 L 664.71428,966.76206 C 664.71608,965.87934 663.90079,965.07537 663.00588,965.0769 L 648.45681,965.0769 L 648.45681,965.0769 z"
+ id="path3186"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3188"
+ d="M 630.45681,965.0769 C 629.77764,965.0598 629.10853,965.48451 628.84306,966.10128 C 628.57757,966.71805 628.73253,967.48791 629.21683,967.95789 L 643.79346,982.58063 C 644.26357,983.05151 645.02904,983.20766 645.6499,982.95917 C 646.27076,982.71077 646.70965,982.07267 646.71429,981.41189 L 646.71429,966.76206 C 646.71609,965.87934 645.9008,965.07537 645.00588,965.0769 L 630.45681,965.0769 L 630.45681,965.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3190"
+ d="M 684.45679,947.0769 C 683.77762,947.0598 683.10851,947.48451 682.84304,948.10128 C 682.57755,948.71805 682.73251,949.48791 683.21681,949.95789 L 697.79344,964.58064 C 698.26355,965.05152 699.02902,965.20767 699.64988,964.95918 C 700.27074,964.71078 700.70963,964.07268 700.71427,963.4119 L 700.71427,948.76206 C 700.71607,947.87934 699.90078,947.07537 699.00587,947.0769 L 684.45679,947.0769 L 684.45679,947.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 666.4568,947.0769 C 665.77762,947.0598 665.10852,947.48451 664.84305,948.10128 C 664.57756,948.71805 664.73252,949.48791 665.21682,949.95789 L 679.79345,964.58064 C 680.26356,965.05152 681.02903,965.20767 681.64988,964.95918 C 682.27075,964.71078 682.70963,964.07268 682.71428,963.4119 L 682.71428,948.76206 C 682.71608,947.87934 681.90079,947.07537 681.00587,947.0769 L 666.4568,947.0769 z"
+ id="path3192"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3194"
+ d="M 648.45681,947.0769 C 647.77763,947.0598 647.10853,947.48451 646.84305,948.10128 C 646.57756,948.71805 646.73252,949.48791 647.21682,949.95789 L 661.79345,964.58064 C 662.26357,965.05152 663.02903,965.20767 663.64989,964.95918 C 664.27075,964.71078 664.70964,964.07268 664.71428,963.4119 L 664.71428,948.76206 C 664.71608,947.87934 663.90079,947.07537 663.00588,947.0769 L 648.45681,947.0769 L 648.45681,947.0769 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 684.45679,929.07691 C 683.77762,929.05981 683.10851,929.48452 682.84304,930.10129 C 682.57755,930.71806 682.73251,931.48792 683.21681,931.9579 L 697.79344,946.58064 C 698.26355,947.05152 699.02902,947.20767 699.64988,946.95918 C 700.27074,946.71078 700.70963,946.07268 700.71427,945.4119 L 700.71427,930.76207 C 700.71607,929.87935 699.90078,929.07538 699.00587,929.07691 L 684.45679,929.07691 L 684.45679,929.07691 z"
+ id="path3196"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path3198"
+ d="M 666.4568,929.07691 C 665.77762,929.05981 665.10852,929.48452 664.84305,930.10129 C 664.57756,930.71806 664.73252,931.48792 665.21682,931.9579 L 679.79345,946.58064 C 680.26356,947.05152 681.02903,947.20767 681.64988,946.95918 C 682.27075,946.71078 682.70963,946.07268 682.71428,945.4119 L 682.71428,930.76207 C 682.71608,929.87935 681.90079,929.07538 681.00587,929.07691 L 666.4568,929.07691 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/setup_native/source/mac/broffice/osxdndinstall_nologo.png b/setup_native/source/mac/broffice/osxdndinstall_nologo.png
index 8c5636ec05ca..966f9f7bcffc 100644
--- a/setup_native/source/mac/broffice/osxdndinstall_nologo.png
+++ b/setup_native/source/mac/broffice/osxdndinstall_nologo.png
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobanner.bmp b/setup_native/source/win32/nsis/brobanner.bmp
index 7ab14d2a6245..0a2961accbda 100644
--- a/setup_native/source/win32/nsis/brobanner.bmp
+++ b/setup_native/source/win32/nsis/brobanner.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobanner.svg b/setup_native/source/win32/nsis/brobanner.svg
new file mode 100644
index 000000000000..041386d7cea9
--- /dev/null
+++ b/setup_native/source/win32/nsis/brobanner.svg
@@ -0,0 +1,667 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="103"
+ height="58"
+ id="svg3229"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="Installation (banner_OOorg_standard).svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs3231">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3237" />
+ <inkscape:perspective
+ id="perspective2777"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4800" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3742" />
+ <inkscape:perspective
+ id="perspective3744"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2870" />
+ <inkscape:perspective
+ id="perspective2500"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2531" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2854" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective4034" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3939" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3852" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ id="perspective3771" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective59" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3532" />
+ <inkscape:perspective
+ id="perspective2543"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2818"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2521" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4715" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4717" />
+ <inkscape:perspective
+ id="perspective4719"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4721"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4723"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4725"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4727"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4729"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4731"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4733"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4735" />
+ <inkscape:perspective
+ id="perspective4737"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4739" />
+ <inkscape:perspective
+ id="perspective4741"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4743"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4211" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="391.03 : 12.41 : 1"
+ inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
+ id="perspective3301" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="399.49701 : 12.41 : 1"
+ inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
+ id="perspective3226" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3158" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3146" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2625" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2623" />
+ <inkscape:perspective
+ id="perspective2621"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2619"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2617"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2615"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2613"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2611"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2609"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2607"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2753" />
+ <inkscape:perspective
+ id="perspective2604"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2602" />
+ <inkscape:perspective
+ id="perspective2600"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2598"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="401.944 : 18.512501 : 1"
+ inkscape:persp3d-origin="200.972 : 12.341667 : 1"
+ id="perspective2645" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="385.51999 : 18.512501 : 1"
+ inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
+ id="perspective2633" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2474" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2426" />
+ <inkscape:perspective
+ id="perspective2592"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7.8135634"
+ inkscape:cx="47.884284"
+ inkscape:cy="27.859947"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1264"
+ inkscape:window-height="750"
+ inkscape:window-x="0"
+ inkscape:window-y="14"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="6.203125,39.566406"
+ id="guide2462" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="6.4960938,39.835938"
+ id="guide2464" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="7.8046875,17.640625"
+ id="guide2466" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="98.285156,17.5"
+ id="guide2468" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3234">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Camada 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-565.64286,-466.2193)">
+ <text
+ transform="scale(1.0168078,0.98347)"
+ font-size="103.091"
+ id="text43"
+ style="font-size:48.89245605px;font-family:Vegur-Regular"
+ x="1429.27"
+ y="552.60571" />
+ <text
+ transform="scale(0.9979479,1.0020563)"
+ font-size="103.091"
+ id="text3748"
+ style="font-size:91.03964996px;font-family:Vegur-Regular"
+ x="1305.9132"
+ y="429.15198" />
+ <g
+ id="g2905"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (banner_OOorg_standard).png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/banner_OOorg_standard.bmp.png"
+ y="466.2193"
+ x="565.64288"
+ height="58"
+ width="103"
+ id="rect12423"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ transform="matrix(0.1694148,0,0,0.1694148,607.63264,451.4171)"
+ id="g2870">
+ <g
+ id="g4513"
+ transform="translate(-397.1353,-52.392239)">
+ <g
+ style="fill:#000000"
+ transform="matrix(1.1041871,0,0,1.1275051,240.59949,350.39632)"
+ id="g3252">
+ <path
+ style="fill:#000000"
+ d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
+ id="path3254" />
+ <path
+ style="fill:#000000"
+ d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
+ id="path3256" />
+ <path
+ style="fill:#000000"
+ d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
+ id="path3258" />
+ <path
+ style="fill:#000000"
+ d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
+ id="path3260" />
+ <path
+ style="fill:#000000"
+ d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
+ id="path3262" />
+ <path
+ style="fill:#000000"
+ d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
+ id="path3264" />
+ <path
+ style="fill:#000000"
+ d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
+ id="path3266" />
+ <path
+ style="fill:#000000"
+ d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
+ id="path3268" />
+ <path
+ style="fill:#000000"
+ d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
+ id="path3270" />
+ <path
+ style="fill:#000000"
+ d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
+ id="path3272" />
+ <path
+ style="fill:#000000"
+ d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
+ id="path3274" />
+ <path
+ style="fill:#000000"
+ d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
+ id="path3276" />
+ <path
+ style="fill:#000000"
+ d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
+ id="path3278" />
+ <path
+ style="fill:#000000"
+ d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
+ id="path3280" />
+ <path
+ style="fill:#000000"
+ d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
+ id="path3282" />
+ <path
+ style="fill:#000000"
+ d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
+ id="path3284" />
+ <path
+ style="fill:#000000"
+ d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
+ id="path3286" />
+ <path
+ style="fill:#000000"
+ d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
+ id="path3288" />
+ <path
+ style="fill:#000000"
+ d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
+ id="path3290" />
+ <path
+ style="fill:#000000"
+ d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
+ id="path3292" />
+ <path
+ style="fill:#000000"
+ d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
+ id="path3294" />
+ </g>
+ <g
+ style="fill:#000000"
+ transform="translate(0,-8.52e-3)"
+ id="g2496">
+ <path
+ style="fill:#18a303;fill-opacity:1"
+ d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
+ id="path2451" />
+ <path
+ style="fill:#18a303;fill-opacity:1"
+ d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
+ id="path2453" />
+ <path
+ style="fill:#000000"
+ d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
+ id="path2455" />
+ <path
+ style="fill:#000000"
+ d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
+ id="path2457" />
+ <path
+ style="fill:#000000"
+ d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
+ id="path2459" />
+ <path
+ style="fill:#000000"
+ d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
+ id="path2461" />
+ <path
+ style="fill:#000000"
+ d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
+ id="path2463" />
+ <path
+ style="fill:#000000"
+ d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
+ id="path2465" />
+ <path
+ style="fill:#18a303;fill-opacity:1"
+ d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
+ id="path2467" />
+ </g>
+ </g>
+ </g>
+ </g>
+ <g
+ id="g4297"
+ style="fill:#800000"
+ transform="translate(-1144.4568,291.80656)" />
+ <text
+ transform="scale(1.0168078,0.98347)"
+ font-size="103.091"
+ id="text2722"
+ style="font-size:48.89245605px;font-family:Vegur-Regular"
+ x="1320.4735"
+ y="360.42868" />
+ <text
+ transform="scale(0.9979479,1.0020563)"
+ font-size="103.091"
+ id="text2724"
+ style="font-size:91.03964996px;font-family:Vegur-Regular"
+ x="1195.0607"
+ y="240.53946" />
+ </g>
+</svg>
diff --git a/setup_native/source/win32/nsis/brobitmap.bmp b/setup_native/source/win32/nsis/brobitmap.bmp
index f9e9e9b2d44b..680c643bff56 100644
--- a/setup_native/source/win32/nsis/brobitmap.bmp
+++ b/setup_native/source/win32/nsis/brobitmap.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobitmap.svg b/setup_native/source/win32/nsis/brobitmap.svg
new file mode 100644
index 000000000000..084b5cea73fe
--- /dev/null
+++ b/setup_native/source/win32/nsis/brobitmap.svg
@@ -0,0 +1,1011 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="163"
+ height="312.00006"
+ id="svg3270"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="Installation (install_OOorg3_standard).svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ version="1.0">
+ <defs
+ id="defs3272">
+ <linearGradient
+ id="linearGradient7426">
+ <stop
+ id="stop7428"
+ offset="0"
+ style="stop-color:#f2f2f2;stop-opacity:1" />
+ <stop
+ id="stop7430"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3278" />
+ <inkscape:perspective
+ id="perspective2777"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2648"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2650"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2687"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2712"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4800" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3742" />
+ <inkscape:perspective
+ id="perspective3744"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2870" />
+ <inkscape:perspective
+ id="perspective2558"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2531" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2854" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective4034" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3939" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective3852" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ id="perspective3771" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ id="perspective59" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3532" />
+ <inkscape:perspective
+ id="perspective2543"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2818"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2557"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,256.3074)"
+ x1="286.08203"
+ y1="-1.6191231"
+ x2="286.08203"
+ y2="357.27634" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7426"
+ id="linearGradient2582"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2963636,0,0,0.109589,464.0661,527.3074)"
+ x1="275.5"
+ y1="369.22446"
+ x2="275.5"
+ y2="-3.224514" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2521" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4715" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4717" />
+ <inkscape:perspective
+ id="perspective4719"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4721"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4723"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4725"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4727"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4729"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4731"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4733"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4735" />
+ <inkscape:perspective
+ id="perspective4737"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4739" />
+ <inkscape:perspective
+ id="perspective4741"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4743"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4211" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="391.03 : 12.41 : 1"
+ inkscape:persp3d-origin="195.515 : 8.2733332 : 1"
+ id="perspective3301" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12.41 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="399.49701 : 12.41 : 1"
+ inkscape:persp3d-origin="199.7485 : 8.2733332 : 1"
+ id="perspective3226" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3158" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="393.207 : 18.512501 : 1"
+ inkscape:persp3d-origin="196.6035 : 12.341667 : 1"
+ id="perspective3146" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2738" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2736" />
+ <inkscape:perspective
+ id="perspective2734"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2732"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2730"
+ inkscape:persp3d-origin="31.18 : 14.173333 : 1"
+ inkscape:vp_z="62.360001 : 21.26 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 21.26 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2728"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2726"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2724"
+ inkscape:persp3d-origin="420.94501 : 198.42668 : 1"
+ inkscape:vp_z="841.89001 : 297.64001 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 297.64001 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2722"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2720"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2753" />
+ <inkscape:perspective
+ id="perspective2717"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2715" />
+ <inkscape:perspective
+ id="perspective2713"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2711"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="401.944 : 18.512501 : 1"
+ inkscape:persp3d-origin="200.972 : 12.341667 : 1"
+ id="perspective2645" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 18.512501 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="385.51999 : 18.512501 : 1"
+ inkscape:persp3d-origin="192.75999 : 12.341667 : 1"
+ id="perspective2633" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2474" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 48.070499 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="212.035 : 48.070499 : 1"
+ inkscape:persp3d-origin="106.0175 : 32.047 : 1"
+ id="perspective2426" />
+ <inkscape:perspective
+ id="perspective2705"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.86454968"
+ inkscape:cx="61.810684"
+ inkscape:cy="115.50357"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1264"
+ inkscape:window-height="750"
+ inkscape:window-x="0"
+ inkscape:window-y="14"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="0,1"
+ position="19.710938,118.07812"
+ id="guide2516" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="20,118.55078"
+ id="guide2518" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="21.710938,88.113281"
+ id="guide2520" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="145.44141,87.875"
+ id="guide2522" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3275">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Camada 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-464.21428,-256.36217)">
+ <g
+ id="g3083"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\Trabalhos\LibreOffice\Finais\Telas\Installation (install_OOorg3_standard).png"
+ inkscape:export-xdpi="89.956017"
+ inkscape:export-ydpi="89.956017">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect11604"
+ width="163"
+ height="312"
+ x="464.29398"
+ y="256.65631"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="matrix(0.2304648,0,0,0.2304648,294.59926,364.26495)"
+ id="g3049">
+ <g
+ id="g3252"
+ transform="matrix(1.1041871,0,0,1.1275051,876.92792,475.41355)"
+ style="fill:#000000">
+ <path
+ id="path3254"
+ d="M 17.816,4.488 L 10.744,4.488 L 10.744,24.48 L 7.004,24.48 L 7.004,4.488 L 0,4.488 L 0,1.428 L 17.816,1.428 L 17.816,4.488 z"
+ style="fill:#000000" />
+ <path
+ id="path3256"
+ d="M 23.604186,10.37 C 24.930186,8.568 26.596186,7.616 28.840186,7.616 C 32.274186,7.616 34.246186,9.792 34.246186,13.532 L 34.246186,24.48 L 30.506186,24.48 L 30.506186,15.368 C 30.506186,12.206 30.098186,10.506 27.514186,10.506 C 25.168186,10.506 23.536186,12.648 23.536186,15.708 L 23.536186,24.48 L 19.796186,24.48 L 19.796186,2.9698466e-14 L 23.536186,2.9698466e-14 L 23.536186,10.37 L 23.604186,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3258"
+ d="M 46.298814,21.931 C 47.896814,21.931 49.324814,21.591 50.718814,20.979 L 51.092814,23.801 C 49.392814,24.583 47.828814,24.821 45.618814,24.821 C 40.790814,24.821 37.389814,22.067 37.389814,16.593 C 37.389814,11.323 40.925814,7.617 45.651814,7.617 C 49.901814,7.617 52.315814,11.051 52.315814,14.893 C 52.315814,15.743 52.281814,16.525 52.179814,17.239 L 41.232814,17.239 C 41.436814,20.196 43.135814,21.931 46.298814,21.931 z M 48.677814,14.484 C 48.575814,12.274 47.759814,10.506 45.345814,10.506 C 43.101814,10.506 41.775814,12.036 41.401814,14.484 L 48.677814,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3260"
+ d="M 70.02901,1.258 C 78.35901,1.258 83.22101,5.134 83.22101,12.546 C 83.22101,20.774 76.18301,24.65 69.58701,24.65 C 67.30901,24.65 64.96301,24.548 62.92301,24.344 L 62.92301,1.632 C 65.23501,1.394 68.05701,1.258 70.02901,1.258 z M 66.66301,21.522 C 67.68301,21.59 68.87301,21.624 69.92701,21.624 C 74.85701,21.624 79.07301,18.904 79.07301,12.954 C 79.07301,7.344 75.60501,4.284 69.96101,4.284 C 68.87301,4.284 67.51301,4.318 66.66301,4.42 L 66.66301,21.522 z"
+ style="fill:#000000" />
+ <path
+ id="path3262"
+ d="M 101.66244,16.218 C 101.66244,21.42 98.194443,24.82 93.468443,24.82 C 88.742443,24.82 85.274443,21.42 85.274443,16.218 C 85.274443,11.016 88.742443,7.616 93.468443,7.616 C 98.194443,7.616 101.66244,11.016 101.66244,16.218 z M 97.651443,16.218 C 97.651443,12.546 96.087443,10.506 93.469443,10.506 C 90.851443,10.506 89.287443,12.546 89.287443,16.218 C 89.287443,19.89 90.851443,21.93 93.469443,21.93 C 96.087443,21.93 97.651443,19.891 97.651443,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3264"
+ d="M 113.02567,21.931 C 114.35167,21.931 115.88167,21.591 117.13967,21.047 L 117.51367,23.869 C 116.32367,24.447 114.48767,24.821 112.20967,24.821 C 107.17767,24.821 103.91367,21.523 103.91367,16.593 C 103.91367,10.915 107.75567,7.617 112.92367,7.617 C 115.06567,7.617 116.83367,8.093 117.68367,8.603 L 117.30967,11.425 C 116.25567,10.915 114.86167,10.507 113.29767,10.507 C 110.10167,10.507 107.92567,12.377 107.92567,16.151 C 107.92567,19.958 109.89767,21.931 113.02567,21.931 z"
+ style="fill:#000000" />
+ <path
+ id="path3266"
+ d="M 131.29089,22.066 C 129.96489,23.868 128.26489,24.82 126.05489,24.82 C 122.62089,24.82 120.64889,22.644 120.64889,18.904 L 120.64889,7.956 L 124.38889,7.956 L 124.38889,17.068 C 124.38889,20.23 124.76289,21.93 127.38089,21.93 C 129.69289,21.93 131.35889,19.822 131.35889,16.728 L 131.35889,7.956 L 135.09889,7.956 L 135.09889,24.48 L 131.46089,24.48 L 131.35889,22.066 L 131.29089,22.066 z"
+ style="fill:#000000" />
+ <path
+ id="path3268"
+ d="M 152.78142,11.05 C 154.09704,8.432 156.01986,7.616 157.97641,7.616 C 161.14737,7.616 162.96899,9.588 162.96899,13.226 L 162.96899,24.48 L 159.25829,24.48 L 159.25829,14.382 C 159.25829,11.628 158.48241,10.506 156.6608,10.506 C 154.46811,10.506 153.08503,12.614 153.08503,16.388 L 153.08503,24.48 L 149.37432,24.48 L 149.37432,14.382 C 149.37432,11.628 148.59845,10.506 146.77683,10.506 C 144.58414,10.506 143.20106,12.75 143.20106,16.388 L 143.20106,24.48 L 139.49036,24.48 L 139.49036,7.956 L 143.09986,7.956 L 143.20106,10.37 L 143.26853,10.37 C 144.34801,8.636 145.86602,7.616 148.09244,7.616 C 150.2514,7.616 152.03928,8.568 152.68022,11.05 L 152.78142,11.05 z"
+ style="fill:#000000" />
+ <path
+ id="path3270"
+ d="M 175.00552,21.931 C 176.60352,21.931 178.03152,21.591 179.42552,20.979 L 179.79952,23.801 C 178.09952,24.583 176.53552,24.821 174.32552,24.821 C 169.49752,24.821 166.09652,22.067 166.09652,16.593 C 166.09652,11.323 169.63252,7.617 174.35852,7.617 C 178.60852,7.617 181.02252,11.051 181.02252,14.893 C 181.02252,15.743 180.98852,16.525 180.88652,17.239 L 169.93852,17.239 C 170.14452,20.196 171.84352,21.931 175.00552,21.931 z M 177.38552,14.484 C 177.28352,12.274 176.46752,10.506 174.05352,10.506 C 171.80952,10.506 170.48352,12.036 170.10952,14.484 L 177.38552,14.484 z"
+ style="fill:#000000" />
+ <path
+ id="path3272"
+ d="M 188.24105,10.37 C 189.56705,8.568 191.23305,7.616 193.47705,7.616 C 196.91105,7.616 198.88305,9.792 198.88305,13.532 L 198.88305,24.48 L 195.14305,24.48 L 195.14305,15.368 C 195.14305,12.206 194.73505,10.506 192.15105,10.506 C 189.80505,10.506 188.17305,12.648 188.17305,15.708 L 188.17305,24.48 L 184.43305,24.48 L 184.43305,7.956 L 188.07105,7.956 L 188.17305,10.37 L 188.24105,10.37 L 188.24105,10.37 z"
+ style="fill:#000000" />
+ <path
+ id="path3274"
+ d="M 212.15806,10.846 L 208.07806,10.846 L 208.07806,19.584 C 208.07806,21.454 209.03006,21.93 210.35606,21.93 C 211.07006,21.93 211.51206,21.862 212.22606,21.624 L 212.60006,24.378 C 211.61406,24.684 210.45806,24.82 208.96206,24.82 C 206.27606,24.82 204.33806,23.528 204.33806,20.502 L 204.33806,10.846 L 201.65206,10.846 L 201.65206,7.956 L 204.33806,7.956 L 204.33806,4.216 L 208.07806,4.216 L 208.07806,7.956 L 212.15806,7.956 L 212.15806,10.846 z"
+ style="fill:#000000" />
+ <path
+ id="path3276"
+ d="M 223.13443,24.48 L 223.13443,1.428 L 235.98743,1.428 L 235.98743,4.488 L 226.87543,4.488 L 226.87543,11.39 L 234.83143,11.39 L 234.83143,14.416 L 226.87543,14.416 L 226.87543,24.48 L 223.13443,24.48 z"
+ style="fill:#000000" />
+ <path
+ id="path3278"
+ d="M 254.15374,16.218 C 254.15374,21.42 250.68474,24.82 245.95974,24.82 C 241.23274,24.82 237.76574,21.42 237.76574,16.218 C 237.76574,11.016 241.23374,7.616 245.95974,7.616 C 250.68574,7.616 254.15374,11.016 254.15374,16.218 z M 250.14174,16.218 C 250.14174,12.546 248.57874,10.506 245.95974,10.506 C 243.34074,10.506 241.77774,12.546 241.77774,16.218 C 241.77774,19.89 243.34074,21.93 245.95974,21.93 C 248.57874,21.93 250.14174,19.891 250.14174,16.218 z"
+ style="fill:#000000" />
+ <path
+ id="path3280"
+ d="M 267.8887,22.063898 C 266.58161,23.867273 264.90584,24.82 262.72735,24.82 C 259.34231,24.82 257.39843,22.642339 257.39843,18.899485 L 257.39843,7.9431301 L 261.08511,7.9431301 L 261.08511,17.062084 C 261.08511,20.226497 261.45378,21.927794 264.03445,21.927794 C 266.31348,21.927794 267.95573,19.818186 267.95573,16.721824 L 267.95573,7.9431301 L 271.6424,7.9431301 L 271.6424,24.479741 L 268.05628,24.479741 L 267.95474,22.063898 L 267.8887,22.063898 z"
+ style="fill:#000000" />
+ <path
+ id="path3282"
+ d="M 279.95412,10.358155 C 281.26762,8.5546424 282.91792,7.6018432 285.13978,7.6018432 C 288.54242,7.6018432 290.49485,9.7796698 290.49485,13.522809 L 290.49485,24.48 L 286.79109,24.48 L 286.79109,15.36035 C 286.79109,12.195697 286.38692,10.494269 283.82727,10.494269 C 281.5024,10.494269 279.88578,12.638067 279.88578,15.700636 L 279.88578,24.48 L 276.18101,24.48 L 276.18101,7.9421286 L 279.78572,7.9421286 L 279.88677,10.358155 L 279.95412,10.358155 L 279.95412,10.358155 z"
+ style="fill:#000000" />
+ <path
+ id="path3284"
+ d="M 300.95303,24.82 C 296.42828,24.82 293.70502,21.383151 293.70502,16.517117 C 293.70502,11.344829 296.73353,7.6017268 301.1572,7.6017268 C 303.47212,7.6017268 305.03642,8.452432 306.36352,10.187871 L 306.43157,10.187871 L 306.43157,-0.02059181 L 310.17368,-0.02059181 L 310.17368,24.479718 L 306.53265,24.479718 L 306.43057,22.233856 L 306.36251,22.233856 C 304.96736,23.936267 303.29998,24.82 300.95303,24.82 z M 302.10999,10.494124 C 299.14953,10.494124 297.72035,12.774014 297.72035,16.244891 C 297.72035,19.681741 299.2166,21.927603 302.17704,21.927603 C 304.79722,21.927603 306.43157,19.919938 306.43157,16.891428 L 306.43157,15.530299 C 306.43157,12.331648 304.59305,10.494124 302.10999,10.494124 z"
+ style="fill:#000000" />
+ <path
+ id="path3286"
+ d="M 327.13912,13.293431 L 327.13912,24.478977 L 323.48917,24.478977 L 323.38686,22.160023 L 323.31866,22.160023 C 322.3638,23.865136 320.76099,24.82 318.57845,24.82 C 315.81617,24.82 313.3608,22.739761 313.3608,19.465942 C 313.3608,15.407772 317.31566,13.804965 320.99971,13.804965 C 321.92047,13.804965 322.70382,13.907272 323.38686,14.009579 L 323.38686,13.634454 C 323.38686,11.520113 322.32869,10.462942 319.80613,10.462942 C 318.61255,10.462942 317.04385,10.769863 315.54335,11.417806 L 315.16822,8.5873172 C 316.90744,7.8711694 318.71486,7.564249 320.52228,7.564249 C 324.88837,7.564249 327.13912,9.6444877 327.13912,13.293431 z M 323.38788,16.362636 C 322.77403,16.260329 322.02378,16.192125 321.23842,16.192125 C 319.22639,16.192125 317.45407,17.112886 317.45407,19.261329 C 317.45407,21.102852 318.47714,22.057716 320.04585,22.057716 C 321.92147,22.057716 323.38788,20.250295 323.38788,17.317499 L 323.38788,16.362636 z"
+ style="fill:#000000" />
+ <path
+ id="path3288"
+ d="M 340.41792,10.810029 L 336.32742,10.810029 L 336.32742,19.570522 C 336.32742,21.445335 337.28187,21.922561 338.61128,21.922561 C 339.32712,21.922561 339.77026,21.854386 340.48609,21.615773 L 340.86106,24.376863 C 339.87253,24.68365 338.71255,24.82 337.2127,24.82 C 334.51978,24.82 332.57679,23.524674 332.57679,20.490884 L 332.57679,10.810029 L 329.88388,10.810029 L 329.88388,7.9125894 L 332.57679,7.9125894 L 332.57679,4.162962 L 336.32642,4.162962 L 336.32642,7.9125894 L 340.41692,7.9125894 L 340.41692,10.810029 L 340.41792,10.810029 z"
+ style="fill:#000000" />
+ <path
+ id="path3290"
+ d="M 343.61816,3.7929297 C 343.61816,2.5660193 344.6065,1.577675 345.83341,1.577675 C 347.06132,1.577675 348.04866,2.5660193 348.04866,3.7929297 C 348.04866,5.0198399 347.06132,6.0081843 345.83341,6.0081843 C 344.6075,6.0081843 343.61816,5.0198399 343.61816,3.7929297 z M 343.95896,7.9167114 L 347.70786,7.9167114 L 347.70786,24.48 L 343.95896,24.48 L 343.95896,7.9167114 z"
+ style="fill:#000000" />
+ <path
+ id="path3292"
+ d="M 367.46488,16.192768 C 367.46488,21.410027 363.9857,24.82 359.24684,24.82 C 354.50597,24.82 351.0288,21.410027 351.0288,16.192768 C 351.0288,10.975509 354.50698,7.565536 359.24684,7.565536 C 363.9857,7.565536 367.46488,10.975509 367.46488,16.192768 z M 363.44011,16.192768 C 363.44011,12.509997 361.87251,10.464013 359.24583,10.464013 C 356.61915,10.464013 355.05157,12.509997 355.05157,16.192768 C 355.05157,19.875539 356.61915,21.921523 359.24583,21.921523 C 361.87251,21.921523 363.44011,19.876542 363.44011,16.192768 z"
+ style="fill:#000000" />
+ <path
+ id="path3294"
+ d="M 374.56395,10.357078 C 375.89116,8.553428 377.55869,7.6005562 379.80374,7.6005562 C 383.24189,7.6005562 385.2147,9.778549 385.2147,13.521974 L 385.2147,24.48 L 381.47228,24.48 L 381.47228,15.359656 C 381.47228,12.19476 381.0639,10.493203 378.47753,10.493203 C 376.12839,10.493203 374.49489,12.637165 374.49489,15.699967 L 374.49489,24.48 L 370.75146,24.48 L 370.75146,7.9408675 L 374.3938,7.9408675 L 374.49589,10.357078 L 374.56395,10.357078 L 374.56395,10.357078 z"
+ style="fill:#000000" />
+ </g>
+ <g
+ id="g2496"
+ transform="translate(636.32843,125.00871)"
+ style="fill:#000000">
+ <path
+ id="path2451"
+ d="M 288.61033,302.30636 C 288.61033,316.95039 276.54431,324.37515 259.73741,324.37515 C 253.96283,324.37515 246.74356,323.75659 240.76141,322.93047 L 240.76141,254.97429 C 248.18617,254.04646 256.22949,253.42582 261.38551,253.42582 C 277.78143,253.42582 286.75466,260.7468 286.75466,270.95714 C 286.75466,278.3819 281.49485,283.84721 274.79243,286.21973 L 274.79243,286.42522 C 283.6598,289.10702 288.61033,294.15926 288.61033,302.30636 z M 261.38551,282.7118 C 268.19172,282.7118 271.69757,279.61902 271.69757,273.63686 C 271.69757,268.06778 268.60478,264.45814 261.59101,264.45814 C 259.83705,264.45814 257.15732,264.56193 254.57931,264.97499 L 254.57931,282.7118 L 261.38551,282.7118 z M 254.57931,293.33313 L 254.57931,312.92562 C 257.36282,313.2349 260.04462,313.33868 262.20957,313.33868 C 269.42883,313.33868 273.75873,310.14211 273.75873,303.74897 C 273.75873,296.73727 270.04531,293.33313 261.69272,293.33313 L 254.57931,293.33313 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2453"
+ d="M 328.80624,285.90837 C 324.26877,286.11594 320.96842,286.93999 318.18491,288.89945 C 314.98834,291.16818 313.13059,294.77782 313.13059,304.88438 L 313.13059,323.8583 L 299.31269,323.8583 L 299.31269,273.53516 L 312.82132,273.53516 L 313.13059,282.50631 L 313.33816,282.50631 C 316.22545,276.93722 322.51481,272.91452 329.11552,272.50354 L 328.80624,285.90837 z"
+ style="fill:#18a303;fill-opacity:1" />
+ <path
+ id="path2455"
+ d="M 402.97074,288.89945 C 402.97074,312.51463 385.64491,324.88785 368.11567,324.88785 C 350.58435,324.88785 333.2606,312.51463 333.2606,288.89945 C 333.2606,265.28427 350.58643,252.91105 368.11567,252.91105 C 385.64699,252.91105 402.97074,265.28427 402.97074,288.89945 z M 390.38995,288.89945 C 390.38995,271.16264 381.00574,262.0877 368.11567,262.0877 C 355.22561,262.0877 345.84139,271.16264 345.84139,288.89945 C 345.84139,306.63626 355.22561,315.7112 368.11567,315.7112 C 381.00574,315.7112 390.38995,306.63626 390.38995,288.89945 z"
+ style="fill:#000000" />
+ <path
+ id="path2457"
+ d="M 436.85305,248.57908 C 440.04962,248.57908 442.73142,249.19763 444.89637,250.02376 L 443.76304,258.37636 C 442.01115,257.7578 440.04962,257.34474 437.57539,257.34474 C 430.35612,257.34474 426.3355,262.50076 426.3355,270.85336 L 426.3355,273.74065 L 438.91629,273.74065 L 438.91629,282.50631 L 426.3355,282.50631 L 426.3355,323.8583 L 414.99183,323.8583 L 414.99183,282.50631 L 406.74094,282.50631 L 406.74094,273.74065 L 414.99183,273.74065 L 414.99183,272.39975 C 414.99183,257.55023 423.54992,248.57908 436.85305,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2459"
+ d="M 466.9653,248.57908 C 470.16187,248.57908 472.84366,249.19763 475.00861,250.02376 L 473.87528,258.37636 C 472.1234,257.7578 470.16187,257.34474 467.68764,257.34474 C 460.46837,257.34474 456.44775,262.50076 456.44775,270.85336 L 456.44775,273.74065 L 469.02854,273.74065 L 469.02854,282.50631 L 456.44775,282.50631 L 456.44775,323.8583 L 445.10408,323.8583 L 445.10408,282.50631 L 436.85319,282.50631 L 436.85319,273.74065 L 445.10408,273.74065 L 445.10408,272.39975 C 445.10408,257.55023 453.66217,248.57908 466.9653,248.57908 z"
+ style="fill:#000000" />
+ <path
+ id="path2461"
+ d="M 476.55998,261.26365 C 476.55998,257.55023 479.55106,254.56123 483.2624,254.56123 C 486.97374,254.56123 489.96482,257.55023 489.96482,261.26365 C 489.96482,264.97707 486.97374,267.96607 483.2624,267.96607 C 479.54898,267.96607 476.55998,264.97499 476.55998,261.26365 z M 477.58953,273.74065 L 488.9332,273.74065 L 488.9332,323.8583 L 477.58953,323.8583 L 477.58953,273.74065 z"
+ style="fill:#000000" />
+ <path
+ id="path2463"
+ d="M 524.07112,316.12426 C 528.09381,316.12426 532.73299,315.09264 536.54812,313.44247 L 537.68145,322.00263 C 534.07182,323.75452 528.5048,324.88992 521.59481,324.88992 C 506.33223,324.88992 496.43324,314.88715 496.43324,299.93592 C 496.43324,282.71388 508.08619,272.7111 523.75976,272.7111 C 530.25669,272.7111 535.61821,274.15371 538.1983,275.70218 L 537.06497,284.26235 C 533.86632,282.71388 529.64021,281.47676 524.89724,281.47676 C 515.20375,281.47676 508.60304,287.14756 508.60304,298.59502 C 508.60096,310.14419 514.58312,316.12426 524.07112,316.12426 z"
+ style="fill:#000000" />
+ <path
+ id="path2465"
+ d="M 570.32982,316.12426 C 575.17657,316.12426 579.50647,315.09264 583.73466,313.23697 L 584.86799,321.79714 C 579.71196,324.16966 574.969,324.88992 568.2645,324.88992 C 553.62047,324.88992 543.3105,316.53733 543.3105,299.93592 C 543.3105,283.95099 554.03561,272.7111 568.36829,272.7111 C 581.25835,272.7111 588.57933,283.12694 588.57933,294.77989 C 588.57933,297.35791 588.47554,299.72835 588.16627,301.89538 L 554.96137,301.89538 C 555.58201,310.86445 560.74011,316.12426 570.32982,316.12426 z M 577.54701,293.5407 C 577.23773,286.83828 574.7635,281.47469 567.44045,281.47469 C 560.63425,281.47469 556.61363,286.11594 555.47822,293.5407 L 577.54701,293.5407 z"
+ style="fill:#000000" />
+ <path
+ id="path2467"
+ d="M 619.87131,321.0748 L 621.00464,312.10364 C 626.77923,314.68166 632.14282,315.71328 637.29885,315.71328 C 646.06451,315.71328 651.52981,311.69058 651.52981,305.09195 C 651.52981,299.42115 646.06451,294.47061 635.33939,293.95584 L 635.33939,285.19018 C 644.10505,284.57163 649.67206,279.72488 649.67206,273.53723 C 649.67206,267.76265 644.82532,264.15301 638.22668,264.15301 C 634.20399,264.15301 629.7703,265.18464 625.33662,267.45337 L 624.20329,258.48222 C 629.66859,256.1097 634.9284,254.97637 641.11397,254.97637 C 653.28377,254.97637 662.25493,261.67879 662.25493,271.37228 C 662.25493,279.82866 655.13944,285.39775 647.30162,287.66649 L 647.30162,287.87406 C 656.89341,289.62594 664.1106,295.7098 664.1106,304.47754 C 664.1106,317.5731 652.45765,324.89407 636.782,324.89407 C 630.80192,324.88992 624.51049,323.65073 619.87131,321.0748 z"
+ style="fill:#18a303;fill-opacity:1" />
+ </g>
+ </g>
+ <rect
+ y="527.36218"
+ x="464.21429"
+ height="40"
+ width="163"
+ id="rect11610"
+ style="fill:url(#linearGradient2582);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="translate(76.21425,-1536.3622)"
+ id="g11680"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 432.93612,2084.725 C 432.18148,2084.706 431.43803,2085.1779 431.14306,2085.8632 C 430.84807,2086.5485 431.02025,2087.4039 431.55836,2087.9261 L 447.75462,2104.1736 C 448.27697,2104.6968 449.12749,2104.8703 449.81733,2104.5942 C 450.50718,2104.3182 450.99483,2103.6092 450.99999,2102.875 L 450.99999,2086.5974 C 451.00199,2085.6166 450.09611,2084.7233 449.10176,2084.725 L 432.93612,2084.725 L 432.93612,2084.725 z"
+ id="path11682"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,1984.7249 C 532.18152,1984.7059 531.43807,1985.1778 531.1431,1985.8631 C 530.84811,1986.5484 531.02029,1987.4038 531.5584,1987.926 L 547.75466,2004.1735 C 548.27701,2004.6967 549.12753,2004.8702 549.81737,2004.5941 C 550.50722,2004.3181 550.99487,2003.6091 551.00003,2002.8749 L 551.00003,1986.5973 C 551.00203,1985.6165 550.09615,1984.7232 549.1018,1984.7249 L 532.93616,1984.7249 L 532.93616,1984.7249 z"
+ id="path11684"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11686"
+ d="M 532.93616,2084.7249 C 532.18152,2084.7059 531.43807,2085.1778 531.1431,2085.8631 C 530.84811,2086.5484 531.02029,2087.4038 531.5584,2087.926 L 547.75466,2104.1735 C 548.27701,2104.6967 549.12753,2104.8702 549.81737,2104.5941 C 550.50722,2104.3181 550.99487,2103.6091 551.00003,2102.8749 L 551.00003,2086.5973 C 551.00203,2085.6165 550.09615,2084.7232 549.1018,2084.7249 L 532.93616,2084.7249 L 532.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2084.7249 C 512.18152,2084.7059 511.43807,2085.1778 511.1431,2085.8631 C 510.84811,2086.5484 511.02029,2087.4038 511.5584,2087.926 L 527.75466,2104.1735 C 528.27701,2104.6967 529.12753,2104.8702 529.81737,2104.5941 C 530.50722,2104.3181 530.99487,2103.6091 531.00003,2102.8749 L 531.00003,2086.5973 C 531.00203,2085.6165 530.09615,2084.7232 529.1018,2084.7249 L 512.93616,2084.7249 L 512.93616,2084.7249 z"
+ id="path11688"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11690"
+ d="M 492.93616,2084.7249 C 492.18152,2084.7059 491.43807,2085.1778 491.1431,2085.8631 C 490.84811,2086.5484 491.02029,2087.4038 491.5584,2087.926 L 507.75466,2104.1735 C 508.27701,2104.6967 509.12753,2104.8702 509.81737,2104.5941 C 510.50722,2104.3181 510.99487,2103.6091 511.00003,2102.8749 L 511.00003,2086.5973 C 511.00203,2085.6165 510.09615,2084.7232 509.1018,2084.7249 L 492.93616,2084.7249 L 492.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2084.7249 C 472.18152,2084.7059 471.43807,2085.1778 471.1431,2085.8631 C 470.84811,2086.5484 471.02029,2087.4038 471.5584,2087.926 L 487.75466,2104.1735 C 488.27701,2104.6967 489.12753,2104.8702 489.81737,2104.5941 C 490.50722,2104.3181 490.99487,2103.6091 491.00003,2102.8749 L 491.00003,2086.5973 C 491.00203,2085.6165 490.09615,2084.7232 489.1018,2084.7249 L 472.93616,2084.7249 L 472.93616,2084.7249 z"
+ id="path11692"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11694"
+ d="M 452.93616,2084.7249 C 452.18152,2084.7059 451.43807,2085.1778 451.1431,2085.8631 C 450.84811,2086.5484 451.02029,2087.4038 451.5584,2087.926 L 467.75466,2104.1735 C 468.27701,2104.6967 469.12753,2104.8702 469.81737,2104.5941 C 470.50722,2104.3181 470.99487,2103.6091 471.00003,2102.8749 L 471.00003,2086.5973 C 471.00203,2085.6165 470.09615,2084.7232 469.1018,2084.7249 L 452.93616,2084.7249 L 452.93616,2084.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2064.7249 C 532.18152,2064.7059 531.43807,2065.1778 531.1431,2065.8631 C 530.84811,2066.5484 531.02029,2067.4038 531.5584,2067.926 L 547.75466,2084.1735 C 548.27701,2084.6967 549.12753,2084.8702 549.81737,2084.5941 C 550.50722,2084.3181 550.99487,2083.6091 551.00003,2082.8749 L 551.00003,2066.5973 C 551.00203,2065.6165 550.09615,2064.7232 549.1018,2064.7249 L 532.93616,2064.7249 L 532.93616,2064.7249 z"
+ id="path11696"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11698"
+ d="M 512.93616,2064.7249 C 512.18152,2064.7059 511.43807,2065.1778 511.1431,2065.8631 C 510.84811,2066.5484 511.02029,2067.4038 511.5584,2067.926 L 527.75466,2084.1735 C 528.27701,2084.6967 529.12753,2084.8702 529.81737,2084.5941 C 530.50722,2084.3181 530.99487,2083.6091 531.00003,2082.8749 L 531.00003,2066.5973 C 531.00203,2065.6165 530.09615,2064.7232 529.1018,2064.7249 L 512.93616,2064.7249 L 512.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2064.7249 C 492.18152,2064.7059 491.43807,2065.1778 491.1431,2065.8631 C 490.84811,2066.5484 491.02029,2067.4038 491.5584,2067.926 L 507.75466,2084.1735 C 508.27701,2084.6967 509.12753,2084.8702 509.81737,2084.5941 C 510.50722,2084.3181 510.99487,2083.6091 511.00003,2082.8749 L 511.00003,2066.5973 C 511.00203,2065.6165 510.09615,2064.7232 509.1018,2064.7249 L 492.93616,2064.7249 L 492.93616,2064.7249 z"
+ id="path11700"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11702"
+ d="M 472.93616,2064.7249 C 472.18152,2064.7059 471.43807,2065.1778 471.1431,2065.8631 C 470.84811,2066.5484 471.02029,2067.4038 471.5584,2067.926 L 487.75466,2084.1735 C 488.27701,2084.6967 489.12753,2084.8702 489.81737,2084.5941 C 490.50722,2084.3181 490.99487,2083.6091 491.00003,2082.8749 L 491.00003,2066.5973 C 491.00203,2065.6165 490.09615,2064.7232 489.1018,2064.7249 L 472.93616,2064.7249 L 472.93616,2064.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 452.93616,2064.7249 C 452.18152,2064.7059 451.43807,2065.1778 451.1431,2065.8631 C 450.84811,2066.5484 451.02029,2067.4038 451.5584,2067.926 L 467.75466,2084.1735 C 468.27701,2084.6967 469.12753,2084.8702 469.81737,2084.5941 C 470.50722,2084.3181 470.99487,2083.6091 471.00003,2082.8749 L 471.00003,2066.5973 C 471.00203,2065.6165 470.09615,2064.7232 469.1018,2064.7249 L 452.93616,2064.7249 L 452.93616,2064.7249 z"
+ id="path11704"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11706"
+ d="M 532.93616,2044.7249 C 532.18152,2044.7059 531.43807,2045.1778 531.1431,2045.8631 C 530.84811,2046.5484 531.02029,2047.4038 531.5584,2047.926 L 547.75466,2064.1735 C 548.27701,2064.6967 549.12753,2064.8702 549.81737,2064.5941 C 550.50722,2064.3181 550.99487,2063.6091 551.00003,2062.8749 L 551.00003,2046.5973 C 551.00203,2045.6165 550.09615,2044.7232 549.1018,2044.7249 L 532.93616,2044.7249 L 532.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2044.7249 C 512.18152,2044.7059 511.43807,2045.1778 511.1431,2045.8631 C 510.84811,2046.5484 511.02029,2047.4038 511.5584,2047.926 L 527.75466,2064.1735 C 528.27701,2064.6967 529.12753,2064.8702 529.81737,2064.5941 C 530.50722,2064.3181 530.99487,2063.6091 531.00003,2062.8749 L 531.00003,2046.5973 C 531.00203,2045.6165 530.09615,2044.7232 529.1018,2044.7249 L 512.93616,2044.7249 z"
+ id="path11708"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11710"
+ d="M 492.93616,2044.7249 C 492.18152,2044.7059 491.43807,2045.1778 491.1431,2045.8631 C 490.84811,2046.5484 491.02029,2047.4038 491.5584,2047.926 L 507.75466,2064.1735 C 508.27701,2064.6967 509.12753,2064.8702 509.81737,2064.5941 C 510.50722,2064.3181 510.99487,2063.6091 511.00003,2062.8749 L 511.00003,2046.5973 C 511.00203,2045.6165 510.09615,2044.7232 509.1018,2044.7249 L 492.93616,2044.7249 L 492.93616,2044.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 472.93616,2044.7249 C 472.18152,2044.7059 471.43807,2045.1778 471.1431,2045.8631 C 470.84811,2046.5484 471.02029,2047.4038 471.5584,2047.926 L 487.75466,2064.1735 C 488.27701,2064.6967 489.12753,2064.8702 489.81737,2064.5941 C 490.50722,2064.3181 490.99487,2063.6091 491.00003,2062.8749 L 491.00003,2046.5973 C 491.00203,2045.6165 490.09615,2044.7232 489.1018,2044.7249 L 472.93616,2044.7249 L 472.93616,2044.7249 z"
+ id="path11712"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 532.93616,2024.7249 C 532.18152,2024.7059 531.43807,2025.1778 531.1431,2025.8631 C 530.84811,2026.5484 531.02029,2027.4038 531.5584,2027.926 L 547.75466,2044.1735 C 548.27701,2044.6967 549.12753,2044.8702 549.81737,2044.5941 C 550.50722,2044.3181 550.99487,2043.6091 551.00003,2042.8749 L 551.00003,2026.5973 C 551.00203,2025.6165 550.09615,2024.7232 549.1018,2024.7249 L 532.93616,2024.7249 L 532.93616,2024.7249 z"
+ id="path11714"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11716"
+ d="M 512.93616,2024.7249 C 512.18152,2024.7059 511.43807,2025.1778 511.1431,2025.8631 C 510.84811,2026.5484 511.02029,2027.4038 511.5584,2027.926 L 527.75466,2044.1735 C 528.27701,2044.6967 529.12753,2044.8702 529.81737,2044.5941 C 530.50722,2044.3181 530.99487,2043.6091 531.00003,2042.8749 L 531.00003,2026.5973 C 531.00203,2025.6165 530.09615,2024.7232 529.1018,2024.7249 L 512.93616,2024.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 492.93616,2024.7249 C 492.18152,2024.7059 491.43807,2025.1778 491.1431,2025.8631 C 490.84811,2026.5484 491.02029,2027.4038 491.5584,2027.926 L 507.75466,2044.1735 C 508.27701,2044.6967 509.12753,2044.8702 509.81737,2044.5941 C 510.50722,2044.3181 510.99487,2043.6091 511.00003,2042.8749 L 511.00003,2026.5973 C 511.00203,2025.6165 510.09615,2024.7232 509.1018,2024.7249 L 492.93616,2024.7249 L 492.93616,2024.7249 z"
+ id="path11718"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11720"
+ d="M 532.93616,2004.7249 C 532.18152,2004.7059 531.43807,2005.1778 531.1431,2005.8631 C 530.84811,2006.5484 531.02029,2007.4038 531.5584,2007.926 L 547.75466,2024.1735 C 548.27701,2024.6967 549.12753,2024.8702 549.81737,2024.5941 C 550.50722,2024.3181 550.99487,2023.6091 551.00003,2022.8749 L 551.00003,2006.5973 C 551.00203,2005.6165 550.09615,2004.7232 549.1018,2004.7249 L 532.93616,2004.7249 L 532.93616,2004.7249 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 512.93616,2004.7249 C 512.18152,2004.7059 511.43807,2005.1778 511.1431,2005.8631 C 510.84811,2006.5484 511.02029,2007.4038 511.5584,2007.926 L 527.75466,2024.1735 C 528.27701,2024.6967 529.12753,2024.8702 529.81737,2024.5941 C 530.50722,2024.3181 530.99487,2023.6091 531.00003,2022.8749 L 531.00003,2006.5973 C 531.00203,2005.6165 530.09615,2004.7232 529.1018,2004.7249 L 512.93616,2004.7249 z"
+ id="path11722"
+ sodipodi:nodetypes="csccscccc" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ style="fill:url(#linearGradient2557);fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect11741"
+ width="163"
+ height="40"
+ x="464.21429"
+ y="256.36215" />
+ <g
+ transform="translate(464.21428,-2776.3622)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ id="g11959">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 101.93612,3032.725 C 101.18148,3032.706 100.43803,3033.1779 100.14306,3033.8632 C 99.848073,3034.5485 100.02025,3035.4039 100.55836,3035.9261 L 116.75462,3052.1736 C 117.27697,3052.6968 118.12749,3052.8703 118.81733,3052.5942 C 119.50718,3052.3182 119.99483,3051.6092 119.99999,3050.875 L 119.99999,3034.5974 C 120.00199,3033.6166 119.09611,3032.7233 118.10176,3032.725 L 101.93612,3032.725 L 101.93612,3032.725 z"
+ id="path11745"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,3132.725 C 1.1814832,3132.706 0.4380332,3133.1779 0.1430632,3133.8632 C -0.1519268,3134.5485 0.0202532,3135.4039 0.5583632,3135.9261 L 16.754623,3152.1736 C 17.276973,3152.6968 18.127493,3152.8703 18.817333,3152.5942 C 19.507183,3152.3182 19.994833,3151.6092 19.999993,3150.875 L 19.999993,3134.5974 C 20.001993,3133.6166 19.096113,3132.7233 18.101763,3132.725 L 1.9361232,3132.725 L 1.9361232,3132.725 z"
+ id="path11747"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11749"
+ d="M 1.9361232,3032.725 C 1.1814832,3032.706 0.4380332,3033.1779 0.1430632,3033.8632 C -0.1519268,3034.5485 0.0202532,3035.4039 0.5583632,3035.9261 L 16.754623,3052.1736 C 17.276973,3052.6968 18.127493,3052.8703 18.817333,3052.5942 C 19.507183,3052.3182 19.994833,3051.6092 19.999993,3050.875 L 19.999993,3034.5974 C 20.001993,3033.6166 19.096113,3032.7233 18.101763,3032.725 L 1.9361232,3032.725 L 1.9361232,3032.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.125;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 21.936123,3032.725 C 21.181483,3032.706 20.438033,3033.1779 20.143063,3033.8632 C 19.848073,3034.5485 20.020253,3035.4039 20.558363,3035.9261 L 36.754623,3052.1736 C 37.276973,3052.6968 38.127493,3052.8703 38.817333,3052.5942 C 39.507183,3052.3182 39.994833,3051.6092 39.999993,3050.875 L 39.999993,3034.5974 C 40.001993,3033.6166 39.096113,3032.7233 38.101763,3032.725 L 21.936123,3032.725 L 21.936123,3032.725 z"
+ id="path11751"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11753"
+ d="M 41.936123,3032.725 C 41.181483,3032.706 40.438033,3033.1779 40.143063,3033.8632 C 39.848073,3034.5485 40.020253,3035.4039 40.558363,3035.9261 L 56.754623,3052.1736 C 57.276973,3052.6968 58.127493,3052.8703 58.817333,3052.5942 C 59.507183,3052.3182 59.994833,3051.6092 59.999993,3050.875 L 59.999993,3034.5974 C 60.001993,3033.6166 59.096113,3032.7233 58.101763,3032.725 L 41.936123,3032.725 L 41.936123,3032.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 61.936123,3032.725 C 61.181483,3032.706 60.438033,3033.1779 60.143063,3033.8632 C 59.848073,3034.5485 60.020253,3035.4039 60.558363,3035.9261 L 76.754623,3052.1736 C 77.276973,3052.6968 78.127493,3052.8703 78.817333,3052.5942 C 79.507183,3052.3182 79.994833,3051.6092 79.999993,3050.875 L 79.999993,3034.5974 C 80.001993,3033.6166 79.096113,3032.7233 78.101763,3032.725 L 61.936123,3032.725 L 61.936123,3032.725 z"
+ id="path11755"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11757"
+ d="M 81.936123,3032.725 C 81.181483,3032.706 80.438033,3033.1779 80.143063,3033.8632 C 79.848073,3034.5485 80.020253,3035.4039 80.558363,3035.9261 L 96.754623,3052.1736 C 97.276973,3052.6968 98.127493,3052.8703 98.817333,3052.5942 C 99.50718,3052.3182 99.99483,3051.6092 99.99999,3050.875 L 99.99999,3034.5974 C 100.00199,3033.6166 99.09611,3032.7233 98.101763,3032.725 L 81.936123,3032.725 L 81.936123,3032.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,3052.725 C 1.1814832,3052.706 0.4380332,3053.1779 0.1430632,3053.8632 C -0.1519268,3054.5485 0.0202532,3055.4039 0.5583632,3055.9261 L 16.754623,3072.1736 C 17.276973,3072.6968 18.127493,3072.8703 18.817333,3072.5942 C 19.507183,3072.3182 19.994833,3071.6092 19.999993,3070.875 L 19.999993,3054.5974 C 20.001993,3053.6166 19.096113,3052.7233 18.101763,3052.725 L 1.9361232,3052.725 L 1.9361232,3052.725 z"
+ id="path11759"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11761"
+ d="M 21.936123,3052.725 C 21.181483,3052.706 20.438033,3053.1779 20.143063,3053.8632 C 19.848073,3054.5485 20.020253,3055.4039 20.558363,3055.9261 L 36.754623,3072.1736 C 37.276973,3072.6968 38.127493,3072.8703 38.817333,3072.5942 C 39.507183,3072.3182 39.994833,3071.6092 39.999993,3070.875 L 39.999993,3054.5974 C 40.001993,3053.6166 39.096113,3052.7233 38.101763,3052.725 L 21.936123,3052.725 L 21.936123,3052.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 41.936123,3052.725 C 41.181483,3052.706 40.438033,3053.1779 40.143063,3053.8632 C 39.848073,3054.5485 40.020253,3055.4039 40.558363,3055.9261 L 56.754623,3072.1736 C 57.276973,3072.6968 58.127493,3072.8703 58.817333,3072.5942 C 59.507183,3072.3182 59.994833,3071.6092 59.999993,3070.875 L 59.999993,3054.5974 C 60.001993,3053.6166 59.096113,3052.7233 58.101763,3052.725 L 41.936123,3052.725 L 41.936123,3052.725 z"
+ id="path11763"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11765"
+ d="M 61.936123,3052.725 C 61.181483,3052.706 60.438033,3053.1779 60.143063,3053.8632 C 59.848073,3054.5485 60.020253,3055.4039 60.558363,3055.9261 L 76.754623,3072.1736 C 77.276973,3072.6968 78.127493,3072.8703 78.817333,3072.5942 C 79.507183,3072.3182 79.994833,3071.6092 79.999993,3070.875 L 79.999993,3054.5974 C 80.001993,3053.6166 79.096113,3052.7233 78.101763,3052.725 L 61.936123,3052.725 L 61.936123,3052.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 81.936123,3052.725 C 81.181483,3052.706 80.438033,3053.1779 80.143063,3053.8632 C 79.848073,3054.5485 80.020253,3055.4039 80.558363,3055.9261 L 96.754623,3072.1736 C 97.276973,3072.6968 98.127493,3072.8703 98.817333,3072.5942 C 99.50718,3072.3182 99.99483,3071.6092 99.99999,3070.875 L 99.99999,3054.5974 C 100.00199,3053.6166 99.09611,3052.7233 98.101763,3052.725 L 81.936123,3052.725 L 81.936123,3052.725 z"
+ id="path11767"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11769"
+ d="M 1.9361232,3072.725 C 1.1814832,3072.706 0.4380332,3073.1779 0.1430632,3073.8632 C -0.1519268,3074.5485 0.0202532,3075.4039 0.5583632,3075.9261 L 16.754623,3092.1736 C 17.276973,3092.6968 18.127493,3092.8703 18.817333,3092.5942 C 19.507183,3092.3182 19.994833,3091.6092 19.999993,3090.875 L 19.999993,3074.5974 C 20.001993,3073.6166 19.096113,3072.7233 18.101763,3072.725 L 1.9361232,3072.725 L 1.9361232,3072.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.075;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 21.936123,3072.725 C 21.181483,3072.706 20.438033,3073.1779 20.143063,3073.8632 C 19.848073,3074.5485 20.020253,3075.4039 20.558363,3075.9261 L 36.754623,3092.1736 C 37.276973,3092.6968 38.127493,3092.8703 38.817333,3092.5942 C 39.507183,3092.3182 39.994833,3091.6092 39.999993,3090.875 L 39.999993,3074.5974 C 40.001993,3073.6166 39.096113,3072.7233 38.101763,3072.725 L 21.936123,3072.725 L 21.936123,3072.725 z"
+ id="path11771"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11773"
+ d="M 41.936123,3072.725 C 41.181483,3072.706 40.438033,3073.1779 40.143063,3073.8632 C 39.848073,3074.5485 40.020253,3075.4039 40.558363,3075.9261 L 56.754623,3092.1736 C 57.276973,3092.6968 58.127493,3092.8703 58.817333,3092.5942 C 59.507183,3092.3182 59.994833,3091.6092 59.999993,3090.875 L 59.999993,3074.5974 C 60.001993,3073.6166 59.096113,3072.7233 58.101763,3072.725 L 41.936123,3072.725 L 41.936123,3072.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 61.936123,3072.725 C 61.181483,3072.706 60.438033,3073.1779 60.143063,3073.8632 C 59.848073,3074.5485 60.020253,3075.4039 60.558363,3075.9261 L 76.754623,3092.1736 C 77.276973,3092.6968 78.127493,3092.8703 78.817333,3092.5942 C 79.507183,3092.3182 79.994833,3091.6092 79.999993,3090.875 L 79.999993,3074.5974 C 80.001993,3073.6166 79.096113,3072.7233 78.101763,3072.725 L 61.936123,3072.725 L 61.936123,3072.725 z"
+ id="path11775"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.05;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 1.9361232,3092.725 C 1.1814832,3092.706 0.4380332,3093.1779 0.1430632,3093.8632 C -0.1519268,3094.5485 0.0202532,3095.4039 0.5583632,3095.9261 L 16.754623,3112.1736 C 17.276973,3112.6968 18.127493,3112.8703 18.817333,3112.5942 C 19.507183,3112.3182 19.994833,3111.6092 19.999993,3110.875 L 19.999993,3094.5974 C 20.001993,3093.6166 19.096113,3092.7233 18.101763,3092.725 L 1.9361232,3092.725 L 1.9361232,3092.725 z"
+ id="path11777"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11779"
+ d="M 21.936123,3092.725 C 21.181483,3092.706 20.438033,3093.1779 20.143063,3093.8632 C 19.848073,3094.5485 20.020253,3095.4039 20.558363,3095.9261 L 36.754623,3112.1736 C 37.276973,3112.6968 38.127493,3112.8703 38.817333,3112.5942 C 39.507183,3112.3182 39.994833,3111.6092 39.999993,3110.875 L 39.999993,3094.5974 C 40.001993,3093.6166 39.096113,3092.7233 38.101763,3092.725 L 21.936123,3092.725 L 21.936123,3092.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 41.936123,3092.725 C 41.181483,3092.706 40.438033,3093.1779 40.143063,3093.8632 C 39.848073,3094.5485 40.020253,3095.4039 40.558363,3095.9261 L 56.754623,3112.1736 C 57.276973,3112.6968 58.127493,3112.8703 58.817333,3112.5942 C 59.507183,3112.3182 59.994833,3111.6092 59.999993,3110.875 L 59.999993,3094.5974 C 60.001993,3093.6166 59.096113,3092.7233 58.101763,3092.725 L 41.936123,3092.725 L 41.936123,3092.725 z"
+ id="path11781"
+ sodipodi:nodetypes="csccscccc" />
+ <path
+ sodipodi:nodetypes="csccscccc"
+ id="path11783"
+ d="M 1.9361232,3112.725 C 1.1814832,3112.706 0.4380332,3113.1779 0.1430632,3113.8632 C -0.1519268,3114.5485 0.0202532,3115.4039 0.5583632,3115.9261 L 16.754623,3132.1736 C 17.276973,3132.6968 18.127493,3132.8703 18.817333,3132.5942 C 19.507183,3132.3182 19.994833,3131.6092 19.999993,3130.875 L 19.999993,3114.5974 C 20.001993,3113.6166 19.096113,3112.7233 18.101763,3112.725 L 1.9361232,3112.725 L 1.9361232,3112.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.025;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.01000001;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 21.936123,3112.725 C 21.181483,3112.706 20.438033,3113.1779 20.143063,3113.8632 C 19.848073,3114.5485 20.020253,3115.4039 20.558363,3115.9261 L 36.754623,3132.1736 C 37.276973,3132.6968 38.127493,3132.8703 38.817333,3132.5942 C 39.507183,3132.3182 39.994833,3131.6092 39.999993,3130.875 L 39.999993,3114.5974 C 40.001993,3113.6166 39.096113,3112.7233 38.101763,3112.725 L 21.936123,3112.725 L 21.936123,3112.725 z"
+ id="path11785"
+ sodipodi:nodetypes="csccscccc" />
+ </g>
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/install_OOorg3_standard.bmp.png"
+ transform="translate(456.21428,-2742.3622)"
+ id="g11984">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 101.93612,3074.7256 C 101.18148,3074.7066 100.43803,3075.1785 100.14306,3075.8638 C 99.84807,3076.5491 100.02025,3077.4045 100.55836,3077.9267 L 116.75462,3094.1742 C 117.27697,3094.6974 118.12749,3094.8709 118.81733,3094.5948 C 119.50718,3094.3188 119.99483,3093.6098 119.99999,3092.8756 L 119.99999,3076.598 C 120.00199,3075.6172 119.09611,3074.7239 118.10176,3074.7256 L 101.93612,3074.7256 L 101.93612,3074.7256 z"
+ id="path11734"
+ sodipodi:nodetypes="csccscccc"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ id="path11895"
+ d="M 57.40206,3074.725 C 56.405981,3074.74 55.509994,3075.6501 55.51173,3076.6463 L 55.51173,3150.8032 C 55.51003,3151.7993 56.406014,3152.7099 57.40206,3152.7244 L 118.07864,3152.7244 C 119.08505,3152.7244 120.00156,3151.8096 119.99996,3150.8032 L 119.99996,3103.049 C 120.00296,3102.545 119.7975,3102.0429 119.44216,3101.6855 L 93.19443,3075.3138 C 92.84215,3074.9473 92.33924,3074.7301 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.86823654;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
+ d="M 57.40206,3074.725 C 56.35235,3074.7402 55.509901,3075.5965 55.51173,3076.6463 L 55.51173,3150.8032 C 55.509956,3151.853 56.352389,3152.7092 57.40206,3152.7244 L 118.07864,3152.7244 C 118.58844,3152.7252 119.07761,3152.5231 119.4381,3152.1626 C 119.7986,3151.8022 120.00077,3151.313 119.99996,3150.8032 L 119.99996,3103.049 C 120.00293,3102.5384 119.80217,3102.0476 119.44216,3101.6855 L 93.19443,3075.3138 C 92.837431,3074.9424 92.346043,3074.7302 91.83091,3074.725 L 57.40206,3074.725 L 57.40206,3074.725 z M 59.32339,3078.5676 L 91.02519,3078.5676 L 116.15732,3103.8238 L 116.15732,3148.8818 L 59.32339,3148.8818 L 59.32339,3078.5676 z"
+ id="path11736"
+ inkscape:export-filename="/home/christoph/Desktop/LibreOffice Artwork/intro.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ </g>
+ <text
+ transform="scale(1.0168078,0.98347)"
+ font-size="103.091"
+ id="text43"
+ style="font-size:48.89245605px;font-family:Vegur-Regular"
+ x="2336.854"
+ y="540.82001" />
+ <text
+ transform="scale(0.9979479,1.0020563)"
+ font-size="103.091"
+ id="text3748"
+ style="font-size:91.03964996px;font-family:Vegur-Regular"
+ x="2230.6494"
+ y="417.58487" />
+ </g>
+</svg>
diff --git a/setup_native/source/win32/nsis/brosdkbanner.bmp b/setup_native/source/win32/nsis/brosdkbanner.bmp
index cbc2704721f8..0a2961accbda 100644
--- a/setup_native/source/win32/nsis/brosdkbanner.bmp
+++ b/setup_native/source/win32/nsis/brosdkbanner.bmp
Binary files differ
diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc
index 9ceb40d0fbdf..a0b8282895a3 100644
--- a/sfx2/inc/sfx2/sfxsids.hrc
+++ b/sfx2/inc/sfx2/sfxsids.hrc
@@ -126,6 +126,7 @@
#define SID_HELP_HELPFILEBOX (SID_SFX_START + 419)
#define SID_HELP_HELPFILEBOX_SELECTED (SID_SFX_START + 420)
#define SID_SHOW_LICENSE (SID_SFX_START + 1683)
+#define SID_SHOW_CREDITS (SID_SFX_START + 1684)
#define SID_HELP_TUTORIALS (SID_SFX_START + 1695)
// default-ids for document
diff --git a/sfx2/sdi/appslots.sdi b/sfx2/sdi/appslots.sdi
index e08b093f6948..3bd2bc8b1e02 100644
--- a/sfx2/sdi/appslots.sdi
+++ b/sfx2/sdi/appslots.sdi
@@ -171,6 +171,10 @@ interface Application
[
ExecMethod = MiscExec_Impl ;
]
+ SID_SHOW_CREDITS
+ [
+ ExecMethod = MiscExec_Impl ;
+ ]
SID_RECENTFILELIST
[
]
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 050be70a5881..e49a178f3823 100755
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -7391,6 +7391,31 @@ SfxVoidItem ShowLicense SID_SHOW_LICENSE
]
//--------------------------------------------------------------------------
+SfxVoidItem ShowCredits SID_SHOW_CREDITS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_APPLICATION;
+]
+
+//--------------------------------------------------------------------------
SfxVoidItem HelpTutorials SID_HELP_TUTORIALS
()
[
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 8c3716b56177..2d78f0ca0c8d 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -356,6 +356,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
break;
}
+ case SID_SHOW_CREDITS:
case SID_SHOW_LICENSE:
{
try {
@@ -367,9 +368,27 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
args[1].Value <<= sal_True;
rtl::OUString aURL;
- if ( checkURL ( "LICENSE.odt", aURL ) ||
- checkURL ( "LICENSE.html", aURL ) ||
- checkURL ( "LICENSE", aURL ) ) {
+ char const** pNames;
+ if( rReq.GetSlot() == SID_SHOW_LICENSE )
+ {
+ static char const* pLicenseStrings[] =
+ {
+ "LICENSE.odt", "LICENSE.html", "LICENSE"
+ };
+ pNames = pLicenseStrings;
+ }
+ else
+ {
+ static char const* pCreditsStrings[] =
+ {
+ "CREDITS.odt", "CREDITS.html", "CREDITS"
+ };
+ pNames = pCreditsStrings;
+ }
+
+ if ( checkURL ( pNames[0], aURL ) ||
+ checkURL ( pNames[1], aURL ) ||
+ checkURL ( pNames[2], aURL ) ) {
xLoader->loadComponentFromURL( aURL, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_blank")), 0, args );
}
} catch (const ::com::sun::star::uno::Exception &) {
diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx
index 2867ebaf2297..1db95aaff87a 100644
--- a/shell/source/backends/gconfbe/gconfaccess.cxx
+++ b/shell/source/backends/gconfbe/gconfaccess.cxx
@@ -765,7 +765,7 @@ ConfigurationValue const ConfigurationValues[] =
{
SETTING_REMOVE_PERSONAL_INFO,
"/apps/openoffice/lockdown/remove_personal_info_on_save",
- "Scripting/RemovePersonalInfoOnSaving",
+ "RemovePersonalInfoOnSaving",
sal_False,
SETTINGS_LAST
},
diff --git a/shell/source/backends/kde4be/kde4access.cxx b/shell/source/backends/kde4be/kde4access.cxx
index 06ae1163e771..03ffb03ed261 100644
--- a/shell/source/backends/kde4be/kde4access.cxx
+++ b/shell/source/backends/kde4be/kde4access.cxx
@@ -127,7 +127,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.openoffice.org") );
+ aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.libreoffice.org") );
break;
default: // No proxy is used
break;
@@ -154,7 +154,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.openoffice.org") );
+ aFTPProxy = KProtocolManager::proxyForUrl( KUrl("ftp://ftp.libreoffice.org") );
break;
default: // No proxy is used
break;
@@ -181,7 +181,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.openoffice.org") );
+ aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.libreoffice.org") );
break;
default: // No proxy is used
break;
@@ -208,7 +208,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.openoffice.org") );
+ aHTTPProxy = KProtocolManager::proxyForUrl( KUrl("http://http.libreoffice.org") );
break;
default: // No proxy is used
break;
@@ -235,7 +235,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.openoffice.org") );
+ aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.libreoffice.org") );
break;
default: // No proxy is used
break;
@@ -262,7 +262,7 @@ css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
// In such cases, the proxy address is not stored in KDE, but determined dynamically.
// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
// The best we can do here is to ask the current value for a given address.
- aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.openoffice.org") );
+ aHTTPSProxy = KProtocolManager::proxyForUrl( KUrl("https://https.libreoffice.org") );
break;
default: // No proxy is used
break;
diff --git a/shell/source/unix/misc/makefile.mk b/shell/source/unix/misc/makefile.mk
index 67fcc708c615..c4f3d9c49551 100644
--- a/shell/source/unix/misc/makefile.mk
+++ b/shell/source/unix/misc/makefile.mk
@@ -68,7 +68,7 @@ APP1TARGET = gnome-open-url.bin
APP1OBJS = \
$(OBJ)$/gnome-open-url.obj
APP1LIBS =
-.IF "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD"
+.IF "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" && "$(OS)"!="OPENBSD"
APP1STDLIBS=-ldl
.ENDIF
diff --git a/solenv/bin/deliver.pl b/solenv/bin/deliver.pl
index ab91ae34c01f..08a7806b3cc7 100755
--- a/solenv/bin/deliver.pl
+++ b/solenv/bin/deliver.pl
@@ -368,13 +368,13 @@ sub do_symlink
}
}
else {
+ return unless -e $fullfrom;
print "REMOVE: $to\n" if $opt_verbose;
unlink $to;
if ( $opt_delete ) {
push_on_ziplist($to) if $opt_zip;
return;
}
- return unless -e $fullfrom;
print "SYMLIB: $from -> $to\n" if $opt_verbose;
if ( !symlink("$from", "$to") ) {
print_error("can't symlink $from -> $to: $!",0);
diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl
index 05fa12f06070..844c36f23c2b 100644
--- a/solenv/bin/macosx-change-install-names.pl
+++ b/solenv/bin/macosx-change-install-names.pl
@@ -47,6 +47,7 @@ sub action($$$)
'shl/BOXT/URELIB' => '@executable_path/urelibs',
'shl/BOXT/OOO' => '@loader_path/../../../basis-link/program',
'shl/NONE/URELIB' => '@__VIA_LIBRARY_PATH__',
+ 'shl/OOO/NONE' => '@__VIA_LIBRARY_PATH__',
'shl/NONE/OOO' => '@__VIA_LIBRARY_PATH__',
'shl/NONE/NONE' => '@__VIA_LIBRARY_PATH__');
my ($type, $loc1, $loc2) = @_;
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 60bfb86c5d46..b555b689aa9a 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -1292,6 +1292,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
# Creating directories
####################################################
+ if ( $allvariableshashref->{'OOODOWNLOADNAME'} ) { installer::download::set_download_filename($languagestringref, $allvariableshashref); }
+ else { installer::download::resolve_variables_in_downloadname($allvariableshashref, "", $languagestringref); }
+
$installdir = installer::worker::create_installation_directory($shipinstalldir, $languagestringref, \$current_install_number);
my $listfiledir = installer::systemactions::create_directories("listfile", $languagestringref);
diff --git a/solenv/bin/mapgen.pl b/solenv/bin/mapgen.pl
index 48c335c2adba..a427da997367 100644
--- a/solenv/bin/mapgen.pl
+++ b/solenv/bin/mapgen.pl
@@ -135,7 +135,8 @@ sub filter_symbols {
$env_section = '1' and next if ((/^# SOLARIS #$/) && ($ENV{OS} eq 'SOLARIS'));
$env_section = '1' and next if ((/^# LINUX #$/) && ($ENV{OS} eq 'LINUX'));
$env_section = '1' and next if ((/^# FREEBSD #$/) && ($ENV{OS} eq 'FREEBSD'));
- last if ($env_section && ((/^# SOLARIS #$/) || (/^# FREEBSD #$/) || (/^# LINUX #$/)));
+ $env_section = '1' and next if ((/^# OPENBSD #$/) && ($ENV{OS} eq 'OPENBSD'));
+ last if ($env_section && ((/^# SOLARIS #$/) || (/^# FREEBSD #$/) || (/^# LINUX #$/) || (/^# OPENBSD #$/)));
next if (!$_ || /^#/);
push(@filters, $_);
};
diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm
index ab56da98cc8d..f300226589d4 100644
--- a/solenv/bin/modules/installer/download.pm
+++ b/solenv/bin/modules/installer/download.pm
@@ -1951,7 +1951,7 @@ sub create_download_sets
my $lastdir = $installationdir;
installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$lastdir);
- if ( $lastdir =~ /\./ ) { $lastdir =~ s/\./_download_inprogress\./ }
+ if ( $installer::globals::iswindowsbuild && $lastdir =~ /\./ ) { $lastdir =~ s/\./_download_inprogress\./ }
else { $lastdir = $lastdir . "_download_inprogress"; }
# removing existing directory "_native_packed_inprogress" and "_native_packed_witherror" and "_native_packed"
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index dd7361c37af8..f43af6a35454 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -299,6 +299,11 @@ sub setglobalvariables
}
}
+ if ( $installer::globals::compiler =~ /unxobsd/ )
+ {
+ $installer::globals::epmoutpath = "openbsd";
+ }
+
if ( $installer::globals::compiler =~ /unxfbsd/ )
{
$installer::globals::isfreebsdbuild = 1;
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index bb00a56c70de..adf1a9afdae6 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -354,7 +354,7 @@ sub replace_variables_in_scriptfile
replace_one_variable_in_shellscript($scriptfile, $allvariables->{'PRODUCTVERSION'}, "PRODUCTVERSION" );
my $scriptname = lc($allvariables->{'PRODUCTNAME'}) . "\.script";
- if ( $allvariables->{'PRODUCTNAME'} eq "OpenOffice.org" ) { $scriptname = "org.openoffice.script"; }
+ if ( $allvariables->{'PRODUCTNAME'} eq "LibreOffice" ) { $scriptname = "org.libreoffice.script"; }
replace_one_variable_in_shellscript($scriptfile, $scriptname, "SEARCHSCRIPTNAME" );
}
diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm
index 24b070574189..c1cca5e47c17 100644
--- a/solenv/bin/modules/installer/systemactions.pm
+++ b/solenv/bin/modules/installer/systemactions.pm
@@ -395,21 +395,31 @@ sub create_directories
if ( $$languagesref ) { $locallanguagesref = $$languagesref; }
- if (!($locallanguagesref eq "" )) # this will be a path like "01_49", for Profiles and ConfigurationFiles, idt-Files
+ if ($newdirectory eq "install" )
{
- my $languagestring = $$languagesref;
-
- if (length($languagestring) > $installer::globals::max_lang_length )
+ # put packages into versioned path (fdo#30837)
+ $path = $path . "$installer::globals::ooodownloadfilename";
+ create_directory($path);
+ }
+ else
+ {
+ if ($locallanguagesref ne "") # this will be a path like "01_49", for Profiles and ConfigurationFiles, idt-Files
{
- my $number_of_languages = get_number_of_langs($languagestring);
- chomp(my $shorter = `echo $languagestring | md5sum | sed -e "s/ .*//g"`);
- # $languagestring = $shorter;
- my $id = substr($shorter, 0, 8); # taking only the first 8 digits
- $languagestring = "lang_" . $number_of_languages . "_id_" . $id;
- }
- $path = $path . $languagestring . $installer::globals::separator;
- create_directory($path);
+ my $languagestring = $$languagesref;
+
+ if (length($languagestring) > $installer::globals::max_lang_length )
+ {
+ my $number_of_languages = get_number_of_langs($languagestring);
+ chomp(my $shorter = `echo $languagestring | md5sum | sed -e "s/ .*//g"`);
+ # $languagestring = $shorter;
+ my $id = substr($shorter, 0, 8); # taking only the first 8 digits
+ $languagestring = "lang_" . $number_of_languages . "_id_" . $id;
+ }
+
+ $path = $path . $languagestring . $installer::globals::separator;
+ create_directory($path);
+ }
}
}
diff --git a/solenv/bin/modules/osarch.pm b/solenv/bin/modules/osarch.pm
index 205e4c933193..3298b27c65f3 100755
--- a/solenv/bin/modules/osarch.pm
+++ b/solenv/bin/modules/osarch.pm
@@ -22,6 +22,7 @@ chop( $m_str, $s_str );
"Linux", "linux",
"FreeBSD", "freebsd",
"NetBSD", "netbsd",
+ "OpenBSD", "openbsd",
"OSF1", "decunix",
"SCO_SV", "scoosr5",
# "SCO_SV", "scouw21",
@@ -36,6 +37,7 @@ chop( $m_str, $s_str );
"Linux", "-DLINUX",
"FreeBSD", "-DFREEBSD",
"NetBSD", "-DNETBSD",
+ "OpenBSD", "-DOPENBSD",
"OSF1", "-DSYSV -DDECUNIX",
"SCO_SV", "-DSYSV -DSCO -DSCO_OSR5",
# "SCO_SV", "-DSYSV -DSCO -DSCO_UW21",
@@ -51,6 +53,7 @@ chop( $m_str, $s_str );
"Linux", "lng",
"FreeBSD", "fbsd",
"NetBSD", "bsd",
+ "OpenBSD", "obsd",
"SCO_SV", "sco",
"Darwin", "macx",
"Mac OS", "macx",
diff --git a/solenv/bin/ooinstall b/solenv/bin/ooinstall
index f848ea8ce2b0..dfca65e2fc39 100755
--- a/solenv/bin/ooinstall
+++ b/solenv/bin/ooinstall
@@ -8,6 +8,7 @@
# 3. When packaging (called from package-ooo), to install to DESTDIR
use File::Find;
+use File::Path qw(mkpath);
use Cwd;
$path = '';
@@ -25,7 +26,7 @@ sub wanted {
&& die "Cannot install $_ extension!";
}
-( $^O =~ /darwin/i ) || ( -f "/proc/meminfo" ) || die "The installer cannot work without javaldx running, which requires /proc to be mounted";
+( $^O =~ /openbsd/i ) || ( $^O =~ /darwin/i ) || ( -f "/proc/meminfo" ) || die "The installer cannot work without javaldx running, which requires /proc to be mounted";
# Workaround for system Mozilla
if ( $ENV{'SYSTEM_MOZILLA'} eq 'YES' ) {
@@ -38,10 +39,11 @@ $ENV{'PYTHONPATH'} = "$ENV{'SRC_ROOT'}/instsetoo_native/$ENV{'INPATH'}/bin:$ENV{
for $arg (@ARGV) {
if ($arg eq '-l') {
$do_link = 1;
-
} elsif ($arg eq '-h' || $arg eq '--help') {
$help = 1;
} else {
+ # Cwd::realpath does not work if the path does not exist
+ mkpath($arg) unless -d $arg;
$path = Cwd::realpath( $arg );
}
}
@@ -73,7 +75,7 @@ $ENV{LOCAL_COMMON_OUT} = $ENV{OUT};
# the installer to use the English localization of the file instead.
$ENV{DEFAULT_TO_ENGLISH_FOR_PACKING} = 1;
-$langs=$setup_vars{OOO_LANGS_LIST};
+$langs=$ENV{WITH_LANG};
$langs='en-US' if $langs eq '';
$langs =~ s/\s+/,/g;
# FIXME: hack... we get a useless , at the end which makes it being e.g. zu#
@@ -81,14 +83,14 @@ $langs =~ s/\s+/,/g;
$langs =~ s/,'/'/;
$destdir='';
-if ( defined $setup_vars{OODESTDIR} &&
- $setup_vars{OODESTDIR} ne "" ) {
- $destdir = "-destdir \"$setup_vars{OODESTDIR}\"";
+if ( defined $ENV{OODESTDIR} &&
+ $ENV{OODESTDIR} ne "" ) {
+ $destdir = "-destdir \"$ENV{OODESTDIR}\"";
}
$strip='';
-if ( defined $setup_vars{OOO_STRIP} &&
- $setup_vars{OOO_STRIP} eq "no" ) {
+if ( defined $ENV{DISABLE_STRIP} &&
+ $ENV{DISABLE_STRIP} eq "TRUE" ) {
$strip = "-dontstrip";
}
diff --git a/solenv/inc/installationtest.mk b/solenv/inc/installationtest.mk
index 15a80b02dcde..80de44682287 100644
--- a/solenv/inc/installationtest.mk
+++ b/solenv/inc/installationtest.mk
@@ -39,7 +39,7 @@ my_instsets = $(shell ls -dt \
installationtest_instset = $(my_instsets:1)
.ELSE
installationtest_instset = \
- $(SOLARSRC)/instsetoo_native/$(INPATH)/LibreOffice/archive/install/$(defaultlangiso)
+ $(SOLARSRC)/instsetoo_native/$(INPATH)/LibreOffice/archive/install
.END
.IF "$(OS)" == "WNT"
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index 06c720c985b6..fc5dee4ecbfe 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -205,7 +205,8 @@ ZLIB3RDLIB=-lz
ZLIB3RDLIB=-lzlib
.ENDIF
.IF "$(SYSTEM_JPEG)"=="YES"
-.IF "$(SOLAR_JAVA)" != "" && "$(JDK)" != "gcj" && "$(OS)" != "MACOSX"
+.IF "$(SOLAR_JAVA)" != "" && "$(JDK)" != "gcj" && "$(OS)" != "MACOSX" && \
+ "$(OS)" != "OPENBSD"
#i34482# Blackdown/Sun jdk is in the libsearch patch and has a libjpeg :-(
.IF "$(OS)" == "FREEBSD"
JPEG3RDLIB=/usr/local/lib/libjpeg.so
diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk
index 6bf065367170..c6055d1bc2b5 100644
--- a/solenv/inc/unitools.mk
+++ b/solenv/inc/unitools.mk
@@ -107,7 +107,7 @@ PERL*=perl
TYPE=cat
CDD=cd
COPY=cp -f
-.IF "$(OS)"=="MACOSX" || "$(OS)"=="NETBSD"
+.IF "$(OS)"=="MACOSX" || "$(OS)"=="NETBSD" || "$(OS)"=="OPENBSD"
COPYRECURSE=-R
.ELSE #"$(OS)"=="MACOSX"
COPYRECURSE=-r
diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
index f7364baea364..7645a73c1908 100644
--- a/solenv/inc/unx.mk
+++ b/solenv/inc/unx.mk
@@ -147,6 +147,10 @@
.INCLUDE : unxfbsd.mk
.ENDIF
+.IF "$(COM)$(OS)" == "GCCOPENBSD"
+.INCLUDE : unxobsd.mk
+.ENDIF
+
.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP"
.INCLUDE : unxmacxp.mk
.ENDIF
diff --git a/solenv/inc/unxlng.mk b/solenv/inc/unxlng.mk
index 3602c0beb0cc..1b7ee75d295c 100644
--- a/solenv/inc/unxlng.mk
+++ b/solenv/inc/unxlng.mk
@@ -112,8 +112,16 @@ CFLAGSDBGUTIL=
# Compiler flags for enabling optimizations
.IF "$(PRODUCT)"!=""
CFLAGSOPT=$(CDEFAULTOPT) # optimizing for products
-.IF "$(USE_SYSTEM_STL)"!="YES"
-CFLAGSOPT+=-fno-strict-aliasing #STLPort headers are full of aliasing warnings
+
+GCCNUMVERSION_CMD=-dumpversion $(PIPEERROR) $(AWK) -v num=true -f $(SOLARENV)/bin/getcompver.awk
+GCCNUMVER:=$(shell @-$(CXX) $(GCCNUMVERSION_CMD))
+
+.IF "$(USE_SYSTEM_STL)"!="YES" || "$(GCCNUMVER)" <= "000400050000"
+#STLPort headers are full of aliasing warnings and
+#At least SLED 10.2 gcc 4.3 overly agressively optimizes
+#uno::Sequence into junk, so only strict-alias on compiler
+#later than 4.5.1
+CFLAGSOPT+=-fno-strict-aliasing
.ENDIF
.ELSE # "$(PRODUCT)"!=""
CFLAGSOPT= # no optimizing for non products
diff --git a/solenv/inc/unxobsd.mk b/solenv/inc/unxobsd.mk
new file mode 100644
index 000000000000..548be65a23a2
--- /dev/null
+++ b/solenv/inc/unxobsd.mk
@@ -0,0 +1,271 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org 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 Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# Makefile for OpenBSD
+ASM*=
+AFLAGS*=
+SOLAR_JAVA*=
+# default optimization level for product code
+CDEFAULTOPT*=-O2
+# architecture dependent flags for the C and C++ compiler that can be changed by
+# exporting the variable ARCH_FLAGS="..." in the shell, which is used to start build
+ARCH_FLAGS*=
+# position independent code switch
+PICSWITCH*:=-fpic
+JAVAFLAGSDEBUG=-g
+
+# arch specific defines
+.IF "$(CPUNAME)" == "INTEL"
+CDEFS+=-DX86
+.ENDIF
+.IF "$(CPUNAME)" == "X86_64"
+CDEFS+=-DX86_64
+ARCH_FLAGS*=
+BUILD64=1
+.ENDIF
+
+# filter for supressing verbose messages from linker
+#not needed at the moment
+#LINKOUTPUT_FILTER=" |& $(SOLARENV)/bin/msg_filter"
+
+# _PTHREADS is needed for the stl
+CDEFS+=$(PTHREAD_CFLAGS) -D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=$(STLPORT_VER)
+
+# enable visibility define in "sal/types.h"
+.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+CDEFS += -DHAVE_GCC_VISIBILITY_FEATURE
+.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+
+# this is a platform with JAVA support
+.IF "$(SOLAR_JAVA)"!=""
+JAVADEF=-DSOLAR_JAVA
+.IF "$(debug)"==""
+JAVA_RUNTIME=-ljava
+.ELSE
+JAVA_RUNTIME=-ljava_g
+.ENDIF
+.ENDIF
+
+# name of C++ Compiler
+CXX*=g++
+# name of C Compiler
+CC*=gcc
+.IF "$(SYSBASE)"!=""
+CFLAGS_SYSBASE:=-isystem $(SYSBASE)$/usr$/include
+CXX+:=$(CFLAGS_SYSBASE)
+CC+:=$(CFLAGS_SYSBASE)
+.ENDIF # "$(SYSBASE)"!=""
+CFLAGS+=-fmessage-length=0 -c
+
+# flags to enable build with symbols; required for crashdump feature
+.IF "$(ENABLE_SYMBOLS)"=="SMALL"
+CFLAGSENABLESYMBOLS=-g1
+.ELSE
+CFLAGSENABLESYMBOLS=-g # was temporarily commented out, reenabled before Beta
+
+.ENDIF
+
+# flags for the C++ Compiler
+CFLAGSCC= -pipe $(ARCH_FLAGS)
+# Flags for enabling exception handling
+CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs
+# Flags for disabling exception handling
+CFLAGS_NO_EXCEPTIONS=-fno-exceptions -DBOOST_NO_EXCEPTIONS
+
+# -fpermissive should be removed as soon as possible
+CFLAGSCXX= -pipe $(ARCH_FLAGS)
+.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+CFLAGSCXX += -fvisibility-inlines-hidden
+.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+
+CFLAGS_CREATE_PCH=-x c++-header -I$(INCPCH) -DPRECOMPILED_HEADERS
+CFLAGS_USE_PCH=-I$(SLO)$/pch -DPRECOMPILED_HEADERS -Winvalid-pch
+CFLAGS_USE_EXCEPTIONS_PCH=-I$(SLO)$/pch_ex -DPRECOMPILED_HEADERS -Winvalid-pch
+
+# Compiler flags for compiling static object in multi threaded environment with graphical user interface
+CFLAGSOBJGUIMT=
+# Compiler flags for compiling static object in multi threaded environment with character user interface
+CFLAGSOBJCUIMT=
+# Compiler flags for compiling shared object in multi threaded environment with graphical user interface
+CFLAGSSLOGUIMT=$(PICSWITCH)
+# Compiler flags for compiling shared object in multi threaded environment with character user interface
+CFLAGSSLOCUIMT=$(PICSWITCH)
+# Compiler flags for profiling
+CFLAGSPROF=
+# Compiler flags for debugging
+CFLAGSDEBUG=-g
+CFLAGSDBGUTIL=
+# Compiler flags for enabling optimizations
+.IF "$(PRODUCT)"!=""
+CFLAGSOPT=$(CDEFAULTOPT) # optimizing for products
+.IF "$(USE_SYSTEM_STL)"!="YES" || "$(CCNUMVER)" <= "000400050000"
+#STLPort headers are full of aliasing warnings and
+#At least SLED 10.2 gcc 4.3 overly agressively optimizes
+#uno::Sequence into junk, so only strict-alias on compiler
+#later than 4.5.1
+CFLAGSOPT+=-fno-strict-aliasing
+.ENDIF
+.ELSE # "$(PRODUCT)"!=""
+CFLAGSOPT= # no optimizing for non products
+.ENDIF # "$(PRODUCT)"!=""
+# Compiler flags for disabling optimizations
+CFLAGSNOOPT=-O0
+# Compiler flags for describing the output path
+CFLAGSOUTOBJ=-o
+
+# -Wshadow does not work for C with nested uses of pthread_cleanup_push:
+CFLAGSWARNCC=-Wall -Wextra -Wendif-labels
+CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wshadow -Wno-ctor-dtor-privacy \
+ -Wno-non-virtual-dtor
+CFLAGSWALLCC=$(CFLAGSWARNCC)
+CFLAGSWALLCXX=$(CFLAGSWARNCXX)
+CFLAGSWERRCC=-Werror
+
+# Once all modules on this platform compile without warnings, set
+# COMPILER_WARN_ERRORS=TRUE here instead of setting MODULES_WITH_WARNINGS (see
+# settings.mk):
+MODULES_WITH_WARNINGS := \
+ lotuswordpro \
+ soldep
+
+# switches for dynamic and static linking
+STATIC = -Wl,-Bstatic
+DYNAMIC = -Wl,-Bdynamic
+
+# name of linker
+LINK*=$(CXX)
+LINKC*=$(CC)
+
+# default linker flags
+LINKFLAGSDEFS*=#-Wl,-z,defs
+LINKFLAGSRUNPATH_URELIB=-Wl,-rpath,\''$$ORIGIN'\'
+LINKFLAGSRUNPATH_UREBIN=-Wl,-rpath,\''$$ORIGIN/../lib:$$ORIGIN'\'
+ #TODO: drop $ORIGIN once no URE executable is also shipped in OOo
+LINKFLAGSRUNPATH_OOO=-Wl,-rpath,\''$$ORIGIN:$$ORIGIN/../ure-link/lib'\'
+LINKFLAGSRUNPATH_SDK=-Wl,-rpath,\''$$ORIGIN/../../ure-link/lib'\'
+LINKFLAGSRUNPATH_BRAND=-Wl,-rpath,\''$$ORIGIN:$$ORIGIN/../basis-link/program:$$ORIGIN/../basis-link/ure-link/lib'\'
+LINKFLAGSRUNPATH_OXT=
+LINKFLAGSRUNPATH_BOXT=-Wl,-rpath,\''$$ORIGIN/../../../basis-link/program'\'
+LINKFLAGSRUNPATH_NONE=
+# flag -Wl,-z,noexecstack sets the NX bit on the stack
+LINKFLAGS=-Wl,-z,noexecstack -Wl,-z,combreloc $(LINKFLAGSDEFS)
+.IF "$(HAVE_LD_BSYMBOLIC_FUNCTIONS)" == "TRUE"
+LINKFLAGS += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo
+.ENDIF
+
+# linker flags for linking applications
+LINKFLAGSAPPGUI= -Wl,-export-dynamic -Wl,--noinhibit-exec \
+ -Wl,-rpath-link,$(LB):$(SOLARLIBDIR)
+LINKFLAGSAPPCUI= -Wl,-export-dynamic -Wl,--noinhibit-exec \
+ -Wl,-rpath-link,$(LB):$(SOLARLIBDIR)
+
+# linker flags for linking shared libraries
+LINKFLAGSSHLGUI= -shared
+LINKFLAGSSHLCUI= -shared
+
+LINKFLAGSTACK=
+LINKFLAGSPROF=
+LINKFLAGSDEBUG=-g
+LINKFLAGSOPT=
+
+# linker flags for optimization (symbol hashtable)
+# for now, applied to symbol scoped libraries, only
+LINKFLAGSOPTIMIZE*=-Wl,-O1
+LINKVERSIONMAPFLAG=$(LINKFLAGSOPTIMIZE) -Wl,--version-script
+
+SONAME_SWITCH=-Wl,-h
+
+# Sequence of libs does matter !
+
+STDLIBCPP=-lstdc++
+
+# default objectfilenames to link
+STDOBJVCL=$(L)$/salmain.o
+STDOBJGUI=
+STDSLOGUI=
+STDOBJCUI=
+STDSLOCUI=
+
+.IF "$(HAVE_LD_HASH_STYLE)" == "TRUE"
+LINKFLAGS += -Wl,--hash-style=both
+.ELSE
+LINKFLAGS += -Wl,-zdynsort
+.ENDIF
+
+# libraries for linking applications
+STDLIBGUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed
+STDLIBCUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed
+# libraries for linking shared libraries
+STDSHLGUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed
+STDSHLCUIMT+=-Wl,--as-needed $(PTHREAD_LIBS) -lm -Wl,--no-as-needed
+
+X11LINK_DYNAMIC = -Wl,--as-needed -lXext -lX11 -Wl,--no-as-needed
+
+LIBSALCPPRT*=-Wl,--whole-archive -lsalcpprt -Wl,--no-whole-archive
+
+.IF "$(USE_STLP_DEBUG)" != ""
+.IF "$(STLPORT_VER)" >= "500"
+LIBSTLPORT=$(DYNAMIC) -lstlportstlg
+LIBSTLPORTST=$(STATIC) -lstlportstlg $(DYNAMIC)
+.ELSE
+LIBSTLPORT=$(DYNAMIC) -lstlport_gcc_stldebug
+LIBSTLPORTST=$(STATIC) -lstlport_gcc_stldebug $(DYNAMIC)
+.ENDIF
+.ELSE # "$(USE_STLP_DEBUG)" != ""
+.IF "$(STLPORT_VER)" >= "500"
+LIBSTLPORT=$(DYNAMIC) -lstlport
+LIBSTLPORTST=$(STATIC) -lstlport $(DYNAMIC)
+.ELSE
+LIBSTLPORT=$(DYNAMIC) -lstlport_gcc
+LIBSTLPORTST=$(STATIC) -lstlport_gcc $(DYNAMIC)
+.ENDIF
+.ENDIF # "$(USE_STLP_DEBUG)" != ""
+
+#FILLUPARC=$(STATIC) -lsupc++ $(DYNAMIC)
+
+# name of library manager
+LIBMGR*=ar
+LIBFLAGS=-r
+
+# tool for generating import libraries
+IMPLIB=
+IMPLIBFLAGS=
+
+MAPSYM=
+MAPSYMFLAGS=
+
+RC=irc
+RCFLAGS=-fo$@ $(RCFILES)
+RCLINK=
+RCLINKFLAGS=
+RCSETVERSION=
+
+# platform specific identifier for shared libs
+DLLPRE=lib
+DLLPOST=.so
+DLLPOSTFIX=ob
+PCHPOST=.gch
diff --git a/soltools/checkdll/makefile.mk b/soltools/checkdll/makefile.mk
index fc09a566005e..b5b386a63cf6 100644
--- a/soltools/checkdll/makefile.mk
+++ b/soltools/checkdll/makefile.mk
@@ -45,7 +45,8 @@ LIBSALCPPRT=$(0)
APP1TARGET = checkdll
APP1OBJS = $(OBJ)$/checkdll.obj
DEPOBJFILES = $(APP1OBJS)
-.IF "$(OS)"!="FREEBSD" && "$(OS)"!="MACOSX" && "$(OS)"!="NETBSD"
+.IF "$(OS)"!="FREEBSD" && "$(OS)"!="MACOSX" && "$(OS)"!="NETBSD" \
+ && "$(OS)"!="OPENBSD"
STDLIB += -ldl
.ENDIF
.IF "$(OS)"=="NETBSD"
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index 109332f8dcc7..a48fe61b2444 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -207,7 +207,10 @@ void SmGraphicWindow::MouseButtonDown(const MouseEvent& rMEvt)
bool SmGraphicWindow::IsInlineEditEnabled() const
{
- return pViewShell->GetEditWindow()->IsInlineEditEnabled();
+ //Avoid crash on startup (happens when starmath is selected from splash screen)
+ if(pViewShell->GetEditWindow())
+ return pViewShell->GetEditWindow()->IsInlineEditEnabled();
+ return false;
}
void SmGraphicWindow::GetFocus()
diff --git a/svx/inc/gallery.hxx b/svx/inc/gallery.hxx
index 77b8fb0bc42f..78b2632e49c6 100644
--- a/svx/inc/gallery.hxx
+++ b/svx/inc/gallery.hxx
@@ -175,7 +175,7 @@
#define GALLERY_THEME_MAPS_MIDDLE_AGES 120
#define GALLERY_THEME_MAPS_MEXICO 121
#define GALLERY_THEME_MAPS_ANCIENT_TIMES 122
-#define GALLERY_THEME_MAPS_SIMBOLS 123
+#define GALLERY_THEME_MAPS_SYMBOLS 123
#define GALLERY_THEME_MAPS_HISTORY_1900 124
#define GALLERY_THEME_MAPS_WORLD 125
#define GALLERY_THEME_CROPS 126
diff --git a/svx/inc/galtheme.hrc b/svx/inc/galtheme.hrc
index cd09120edc1e..90b05abffe2b 100644
--- a/svx/inc/galtheme.hrc
+++ b/svx/inc/galtheme.hrc
@@ -156,7 +156,7 @@
#define RID_GALLERYSTR_THEME_MAPS_MIDDLE_AGES (RID_GALLERYSTR_THEME_START + 120)
#define RID_GALLERYSTR_THEME_MAPS_MEXICO (RID_GALLERYSTR_THEME_START + 121)
#define RID_GALLERYSTR_THEME_MAPS_ANCIENT_TIMES (RID_GALLERYSTR_THEME_START + 122)
-#define RID_GALLERYSTR_THEME_MAPS_SIMBOLS (RID_GALLERYSTR_THEME_START + 123)
+#define RID_GALLERYSTR_THEME_MAPS_SYMBOLS (RID_GALLERYSTR_THEME_START + 123)
#define RID_GALLERYSTR_THEME_MAPS_HISTORY_1900 (RID_GALLERYSTR_THEME_START + 124)
#define RID_GALLERYSTR_THEME_MAPS_WORLD (RID_GALLERYSTR_THEME_START + 125)
#define RID_GALLERYSTR_THEME_CROPS (RID_GALLERYSTR_THEME_START + 126)
diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc
index bdd0c23517b2..5abf5f2876de 100644
--- a/svx/inc/globlmn_tmpl.hrc
+++ b/svx/inc/globlmn_tmpl.hrc
@@ -1055,6 +1055,12 @@
HelpID = SID_SHOW_LICENSE ; \
Text [ en-US ] = "License information..." ; \
+#define ITEM_SHOW_CREDITS \
+ Identifier = SID_SHOW_CREDITS ; \
+ Command = ".uno:ShowCredits" ; \
+ HelpID = SID_SHOW_CREDITS ; \
+ Text [ en-US ] = "%PRODUCTNAME Credits..." ;
+
#define ITEM_HELP_ONLINE_REGISTRATION \
Identifier = SID_ONLINE_REGISTRATION ; \
Command = ".uno:OnlineRegistrationDlg" ; \
@@ -1114,6 +1120,10 @@
};\
MenuItem\
{\
+ ITEM_SHOW_CREDITS\
+ };\
+ MenuItem\
+ {\
ITEM_HELP_ABOUT\
About = TRUE ; \
};\
diff --git a/svx/source/fmcomp/trace.cxx b/svx/source/fmcomp/trace.cxx
index d0692180b3fe..6242a0f73292 100644
--- a/svx/source/fmcomp/trace.cxx
+++ b/svx/source/fmcomp/trace.cxx
@@ -37,7 +37,7 @@
//------------------------------------------------------------------------------
::osl::Mutex Tracer::s_aMapSafety;
-::std::map< ::oslThreadIdentifier, INT32, ::std::less< ::osl::ThreadIdentifier > >
+::std::map< ::oslThreadIdentifier, INT32, ::std::less< oslThreadIdentifier > >
Tracer::s_aThreadIndents;
//------------------------------------------------------------------------------
diff --git a/svx/source/gallery2/galtheme.src b/svx/source/gallery2/galtheme.src
index 7fb9d6318838..2db8a1e39643 100644
--- a/svx/source/gallery2/galtheme.src
+++ b/svx/source/gallery2/galtheme.src
@@ -890,9 +890,9 @@ Text [ en-US ] = "Maps - Ancient times";
// ---------------------------------------------------------------------------
-String RID_GALLERYSTR_THEME_MAPS_SIMBOLS
+String RID_GALLERYSTR_THEME_MAPS_SYMBOLS
{
-Text [ en-US ] = "Maps - simbols";
+Text [ en-US ] = "Maps - symbols";
};
// ---------------------------------------------------------------------------
diff --git a/svx/source/intro/ooo.src b/svx/source/intro/ooo.src
index d80e1239f053..a02ceb7ff055 100644
--- a/svx/source/intro/ooo.src
+++ b/svx/source/intro/ooo.src
@@ -65,7 +65,7 @@ String RID_BUILDVERSION
ModalDialog RID_DEFAULTABOUT
{
OutputSize = TRUE ;
- Size = MAP_APPFONT ( 245 , 260 ) ;
+ Size = MAP_APPFONT ( 245 , 280 ) ;
Moveable = TRUE ;
SVLook = TRUE ;
TEXT_DEFAULTABOUT
@@ -88,7 +88,7 @@ ModalDialog RID_DEFAULTABOUT
{
Border = FALSE ;
Pos = MAP_APPFONT ( 54 , 25 ) ;
- Size = MAP_APPFONT ( 168 , 51 ) ;
+ Size = MAP_APPFONT ( 168 , 71 ) ;
IgnoreTab = TRUE ;
ReadOnly = TRUE ;
AutoVScroll = TRUE ;
@@ -98,7 +98,7 @@ ModalDialog RID_DEFAULTABOUT
NoLabel = TRUE;
TabStop = TRUE;
Text [ en-US ] = "Contributor credits";
- Pos = MAP_APPFONT ( 54 , 80 ) ;
+ Pos = MAP_APPFONT ( 54 , 100 ) ;
Size = MAP_APPFONT ( 168 , 10 ) ;
};
String ABOUT_STR_VERSION
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 705450446a53..307b353979e2 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -112,7 +112,7 @@ struct SwContentAtPos
SW_CONTENT_CHECK = 0x0400, // #i43742#
SW_SMARTTAG = 0x0800,
SW_FORMCTRL = 0x1000
-#if OSL_DEBUG_LEVEL > 1
+#ifdef DBG_UTIL
,SW_CURR_ATTRS = 0x4000 // only for debugging
,SW_TABLEBOXVALUE = 0x8000 // only for debugging
#endif
diff --git a/sw/source/core/layout/virtoutp.cxx b/sw/source/core/layout/virtoutp.cxx
index 1f2e06bf3432..5e53273e34cb 100644
--- a/sw/source/core/layout/virtoutp.cxx
+++ b/sw/source/core/layout/virtoutp.cxx
@@ -184,7 +184,7 @@ void SwLayVout::Enter( ViewShell *pShell, SwRect &rRect, BOOL bOn )
{
Flush();
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
if( pShell->GetViewOptions()->IsTest3() )
{
++nCount;
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index cc520ed7365c..98913595f3a7 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -118,7 +118,7 @@ namespace numfunc
static sal_Bool bDbgLow = sal_False;
#endif
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
sal_Bool SwTxtSizeInfo::IsOptCalm() const { return !GetOpt().IsTest3(); }
diff --git a/sw/source/core/text/inftxt.hxx b/sw/source/core/text/inftxt.hxx
index 8e3649a4ef08..676c1fba2f1a 100644
--- a/sw/source/core/text/inftxt.hxx
+++ b/sw/source/core/text/inftxt.hxx
@@ -75,7 +75,7 @@ class SwWrongList;
#define DIR_RIGHT2LEFT 2
#define DIR_TOP2BOTTOM 3
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
#define OPTCALM( rInf ) (rInf).IsOptCalm()
#define OPTLOW( rInf ) (rInf).IsOptLow()
#define OPTDBG( rInf ) (rInf).IsOptDbg()
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index 126bb7c4cb42..e06a942551e9 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -1804,7 +1804,7 @@ const SwRect SwContourCache::ContourRect( const SwFmt* pFmt,
delete pPolyPolygon;
// UPPER_LOWER_TEST
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
const SwRootFrm* pTmpRootFrm = pFmt->getIDocumentLayoutAccess()->GetRootFrm();
if( pTmpRootFrm->GetCurrShell() )
{
diff --git a/sw/source/core/text/txtio.cxx b/sw/source/core/text/txtio.cxx
index d508199e0234..eaeefba1cb3b 100644
--- a/sw/source/core/text/txtio.cxx
+++ b/sw/source/core/text/txtio.cxx
@@ -287,9 +287,14 @@ SvStream &operator<<( SvStream &rOs, const SwpHints & ) //$ ostream
sal_Bool IsDbg( const SwTxtFrm *pFrm )
{
+// Hmm, so IsTest4 etc are defined only if OSL_DEBUG_LEVEL > 1,
+// but this file is compiled if DBG_UTIL is defined. So should the IsTest4 etc
+// then instead be conditional on DBG_UTIL? Such crack.
+#if OSL_DEBUG_LEVEL > 1
if( pFrm && pFrm->GetShell() )
return pFrm->GetShell()->GetViewOptions()->IsTest4();
else
+#else
return sal_False;
}
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index a5e7b159be56..f8c536859e98 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -622,7 +622,7 @@ void ViewShell::LayoutIdle()
SET_CURR_SHELL( this );
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
if( pOpt->IsTest5() )
return;
#endif
diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx
index 5da8c6058b1e..4ea8dea98e6d 100644
--- a/sw/source/filter/html/htmltabw.cxx
+++ b/sw/source/filter/html/htmltabw.cxx
@@ -1186,7 +1186,7 @@ Writer& OutHTML_SwTblNode( Writer& rWrt, SwTableNode & rNode,
const SwHTMLTableLayout *pLayout = rTbl.GetHTMLTableLayout();
-#ifdef DBG_UTIL
+#if OSL_DEBUG_LEVEL > 1
ViewShell *pSh;
rWrt.pDoc->GetEditShell( &pSh );
if ( pSh && pSh->GetViewOptions()->IsTest1() )
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index d4568642e8c6..9189c56a04fa 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -63,6 +63,7 @@
#include <rtl/ustrbuf.hxx>
#include <vcl/font.hxx>
+using namespace sax_fastparser;
using namespace ::comphelper;
using namespace ::com::sun::star;
@@ -552,9 +553,7 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const char*
pFS = m_pFilter->openFragmentStreamWithSerializer( OUStringBuffer().appendAscii( "word/" ).append( aName ).makeStringAndClear(),
S( "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" ) );
- pFS->startElementNS( XML_w, XML_hdr,
- FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
- FSEND );
+ pFS->startElementNS( XML_w, XML_hdr, MainXmlNamespaces( pFS ));
}
else
{
@@ -567,9 +566,7 @@ void DocxExport::WriteHeaderFooter( const SwFmt& rFmt, bool bHeader, const char*
pFS = m_pFilter->openFragmentStreamWithSerializer( OUStringBuffer().appendAscii( "word/" ).append( aName ).makeStringAndClear(),
S( "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" ) );
- pFS->startElementNS( XML_w, XML_ftr,
- FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
- FSEND );
+ pFS->startElementNS( XML_w, XML_ftr, MainXmlNamespaces( pFS ));
}
// switch the serializer to redirect the output to word/styles.xml
@@ -651,14 +648,7 @@ VMLExport& DocxExport::VMLExporter()
void DocxExport::WriteMainText()
{
// setup the namespaces
- m_pDocumentFS->startElementNS( XML_w, XML_document,
- FSNS( XML_xmlns, XML_o ), "urn:schemas-microsoft-com:office:office",
- FSNS( XML_xmlns, XML_r ), "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
- FSNS( XML_xmlns, XML_v ), "urn:schemas-microsoft-com:vml",
- FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
- FSNS( XML_xmlns, XML_w10 ), "urn:schemas-microsoft-com:office:word",
- FSNS( XML_xmlns, XML_wp ), "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
- FSEND );
+ m_pDocumentFS->startElementNS( XML_w, XML_document, MainXmlNamespaces( m_pDocumentFS ));
// body
m_pDocumentFS->startElementNS( XML_w, XML_body, FSEND );
@@ -678,6 +668,18 @@ void DocxExport::WriteMainText()
m_pDocumentFS->endElementNS( XML_w, XML_document );
}
+XFastAttributeListRef DocxExport::MainXmlNamespaces( FSHelperPtr serializer )
+{
+ FastAttributeList* pAttr = serializer->createAttrList();
+ pAttr->add( FSNS( XML_xmlns, XML_o ), "urn:schemas-microsoft-com:office:office" );
+ pAttr->add( FSNS( XML_xmlns, XML_r ), "http://schemas.openxmlformats.org/officeDocument/2006/relationships" );
+ pAttr->add( FSNS( XML_xmlns, XML_v ), "urn:schemas-microsoft-com:vml" );
+ pAttr->add( FSNS( XML_xmlns, XML_w ), "http://schemas.openxmlformats.org/wordprocessingml/2006/main" );
+ pAttr->add( FSNS( XML_xmlns, XML_w10 ), "urn:schemas-microsoft-com:office:word" );
+ pAttr->add( FSNS( XML_xmlns, XML_wp ), "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" );
+ return XFastAttributeListRef( pAttr );
+}
+
DocxExport::DocxExport( DocxExportFilter *pFilter, SwDoc *pDocument, SwPaM *pCurrentPam, SwPaM *pOriginalPam )
: MSWordExportBase( pDocument, pCurrentPam, pOriginalPam ),
m_pFilter( pFilter ),
diff --git a/sw/source/filter/ww8/docxexport.hxx b/sw/source/filter/ww8/docxexport.hxx
index 81d2a023858d..2a7fcd024af8 100644
--- a/sw/source/filter/ww8/docxexport.hxx
+++ b/sw/source/filter/ww8/docxexport.hxx
@@ -33,6 +33,7 @@
#include "wrtww8.hxx"
#include <sax/fshelper.hxx>
+#include <sax/fastattribs.hxx>
#include <rtl/ustring.hxx>
#include <cstdio>
@@ -157,8 +158,6 @@ protected:
virtual void OutputLinkedOLE( const rtl::OUString& );
-
-
virtual void AppendSection( const SwPageDesc *pPageDesc, const SwSectionFmt* pFmt, ULONG nLnNum );
virtual void SectionBreaksAndFrames( const SwTxtNode& /*rNode*/ ) {}
@@ -188,6 +187,9 @@ private:
/// Write docProps/core.xml
void WriteProperties();
+ /// All xml namespaces to be used at the top of any text .xml file (main doc, headers, footers,...)
+ sax_fastparser::XFastAttributeListRef MainXmlNamespaces( sax_fastparser::FSHelperPtr serializer );
+
public:
/// FIXME this is temporary, remotely reminding the method of the same
/// name in WW8Export.
diff --git a/sw/source/filter/ww8/rtfimportfilter.cxx b/sw/source/filter/ww8/rtfimportfilter.cxx
index 0e8b2a202327..52b4ae845710 100644
--- a/sw/source/filter/ww8/rtfimportfilter.cxx
+++ b/sw/source/filter/ww8/rtfimportfilter.cxx
@@ -97,7 +97,9 @@ sal_Bool RtfImportFilter::filter( const uno::Sequence< beans::PropertyValue >& a
}
RtfReader aReader;
- return aReader.Read(pStream, *pDoc, aURL, *pCurPam) == 0;
+ sal_Bool bRet = aReader.Read(pStream, *pDoc, aURL, *pCurPam) == 0;
+ delete pStream;
+ return bRet;
}
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index 93af579ed5d8..9b4a908887d3 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -2573,7 +2573,10 @@ void WW8TabDesc::CreateSwTable()
else
{
if (nPreferredWidth)
- nLeft = pIo->maSectionManager.GetTextAreaWidth() - nPreferredWidth - nOrgDxaLeft;
+ {
+ nLeft = pIo->maSectionManager.GetTextAreaWidth();
+ nLeft = nLeft - nPreferredWidth - nOrgDxaLeft;
+ }
else
nLeft = -GetMinLeft();
}
diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx
index 0be0c4e21f2c..1dad568b16b0 100644
--- a/sw/source/ui/dbui/dbinsdlg.cxx
+++ b/sw/source/ui/dbui/dbinsdlg.cxx
@@ -1181,7 +1181,7 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
}
}
catch(Exception&
-#if OSL_DEBUG_LEVEL > 1
+#ifdef DBG_UTIL
aExcept
#endif
)
diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx
index ac13484457bc..b3b65e6eb25c 100644
--- a/sw/source/ui/dbui/mmoutputpage.cxx
+++ b/sw/source/ui/dbui/mmoutputpage.cxx
@@ -1219,7 +1219,7 @@ IMPL_LINK(SwMailMergeOutputPage, SendDocumentsHdl_Impl, PushButton*, pButton)
}
xTempDocShell->DoClose();
-#if OSL_DEBUG_LEVEL > 1
+#ifdef DBG_UTIL
sal_Int32 nTarget =
#endif
rConfigItem.MoveResultSet(rInfo.nDBRow);
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index 50b2677601f4..ad74b08ce44b 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -583,7 +583,7 @@ long AbstractMailMergeWizard_Impl::GetResult()
return pDlg->GetResult();
}
-#if OSL_DEBUG_LEVEL > 1
+#ifdef DBG_UTIL
IMPL_LINK( AbstractMailMergeWizard_Impl, EndDialogHdl, SwMailMergeWizard*, pDialog )
#else
IMPL_LINK( AbstractMailMergeWizard_Impl, EndDialogHdl, SwMailMergeWizard*, EMPTYARG )
diff --git a/sw/source/ui/docvw/srcedtw.cxx b/sw/source/ui/docvw/srcedtw.cxx
index d1e097d2d63c..9b414a528464 100644
--- a/sw/source/ui/docvw/srcedtw.cxx
+++ b/sw/source/ui/docvw/srcedtw.cxx
@@ -763,7 +763,7 @@ void SwSrcEditWindow::ImpDoHighlight( const String& rSource, USHORT nLineOff )
// optimiert das die TextEngine.
USHORT nLastEnd = 0;
-#if OSL_DEBUG_LEVEL > 1
+#ifdef DBG_UTIL
USHORT nLine = aPortionList[0].nLine;
#endif
for ( USHORT i = 0; i < nCount; i++ )
diff --git a/sysui/desktop/macosx/Info.plist b/sysui/desktop/macosx/Info.plist
index cf04e8086afe..8100df25d2a1 100644
--- a/sysui/desktop/macosx/Info.plist
+++ b/sysui/desktop/macosx/Info.plist
@@ -1390,7 +1390,7 @@
<key>CFBundleShortVersionString</key>
<string>${ABOUTBOXPRODUCTVERSION}</string>
<key>CFBundleIdentifier</key>
- <string>org.openoffice.script</string>
+ <string>org.libreoffice.script</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -1398,7 +1398,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
- <string>OOo2</string>
+ <string>LibO</string>
<key>LSRequiresCarbon</key>
<string>1</string>
<key>NSPrincipalClass</key>
diff --git a/sysui/desktop/macosx/makefile.mk b/sysui/desktop/macosx/makefile.mk
index 059b3b87bb46..9d551600d7d2 100644
--- a/sysui/desktop/macosx/makefile.mk
+++ b/sysui/desktop/macosx/makefile.mk
@@ -46,13 +46,8 @@ ZIP1TARGET = osxicons
ZIP1DIR = ../icons
ZIP1LIST := $(shell $(PERL) -w list_icons.pl < Info.plist)
-.IF "$(GUIBASE)"!="aqua"
-CREATOR_TYPE=OOo2
-EXECUTABLE=droplet
-.ELSE
-CREATOR_TYPE=OOO2
+CREATOR_TYPE=LIBO
EXECUTABLE=soffice
-.ENDIF
.IF "$(WITH_LANG)"!=""
ULFDIR:=$(COMMONMISC)$/desktopshare
diff --git a/tools/bootstrp/command.cxx b/tools/bootstrp/command.cxx
index e439cc523c26..138b5ffcffaf 100644
--- a/tools/bootstrp/command.cxx
+++ b/tools/bootstrp/command.cxx
@@ -73,7 +73,7 @@
#include <sys/types.h>
#include <unistd.h>
#if ( defined NETBSD ) || defined (FREEBSD) || defined (AIX) \
- || defined (HPUX) || defined (MACOSX)
+ || defined (HPUX) || defined (MACOSX) || defined (OPENBSD)
#include <sys/wait.h>
#else
#include <wait.h>
diff --git a/tools/inc/tools/inetdef.hxx b/tools/inc/tools/inetdef.hxx
index 49cb612d13b6..06bc4e7ab78c 100644
--- a/tools/inc/tools/inetdef.hxx
+++ b/tools/inc/tools/inetdef.hxx
@@ -59,6 +59,10 @@
#define TOOLS_INETDEF_OS "FreeBSD/i386"
#elif defined FREEBSD && defined X86_64
#define TOOLS_INETDEF_OS "FreeBSD/amd64"
+#elif defined OPENBSD && defined X86
+#define TOOLS_INETDEF_OS "OpenBSD/i386"
+#elif defined OPENBSD && defined X86_64
+#define TOOLS_INETDEF_OS "OpenBSD/amd64"
#elif defined SINIX
#define TOOLS_INETDEF_OS "SINIX"
#else // AIX, HPUX, SOLARIS, ...
diff --git a/tools/inc/tools/prex.h b/tools/inc/tools/prex.h
index 49371f8d6a86..6a13f88f53e6 100644
--- a/tools/inc/tools/prex.h
+++ b/tools/inc/tools/prex.h
@@ -48,7 +48,7 @@
extern "C" {
#endif
-#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) || defined(NETBSD) // should really check for xfree86 or for X11R6.1 and higher
+#if defined(LINUX) || defined(FREEBSD) || defined(MACOSX) || defined(NETBSD) || defined(OPENBSD) // should really check for xfree86 or for X11R6.1 and higher
#define __XKeyboardExtension__ 1
#else
#define __XKeyboardExtension__ 0
diff --git a/tools/inc/tools/solar.h b/tools/inc/tools/solar.h
index ea1ee4230447..cde9e178812b 100644
--- a/tools/inc/tools/solar.h
+++ b/tools/inc/tools/solar.h
@@ -311,6 +311,7 @@ template<typename T> inline T Abs(T a) { return (a>=0?a:-a); }
#define SYSTEM_UNXMACXI 33
#define SYSTEM_OS2GCCI 34
#define SYSTEM_UNXBSDX 35
+#define SYSTEM_UNXOBSD 36
#define SYSTEM_WNTGCCI 99
#if defined WNT
@@ -380,6 +381,8 @@ template<typename T> inline T Abs(T a) { return (a>=0?a:-a); }
#define __DLLEXTENSION "mxp.dylib"
#elif defined MACOSX && defined X86
#define __DLLEXTENSION "mxi.dylib"
+#elif defined OPENBSD
+ #define __DLLEXTENSION "ob.so"
#else
#define __DLLEXTENSION ".so"
#endif
diff --git a/tools/qa/makefile.mk b/tools/qa/makefile.mk
index 67d8f621fabd..7e8720efef71 100644
--- a/tools/qa/makefile.mk
+++ b/tools/qa/makefile.mk
@@ -32,6 +32,13 @@ ENABLE_EXCEPTIONS = TRUE
.INCLUDE: settings.mk
+#building with stlport, but cppunit was not built with stlport
+.IF "$(USE_SYSTEM_STL)"!="YES"
+.IF "$(SYSTEM_CPPUNIT)"=="YES"
+CFLAGSCXX+=-DADAPT_EXT_STL
+.ENDIF
+.ENDIF
+
CFLAGSCXX += $(CPPUNIT_CFLAGS)
DLLPRE = # no leading "lib" on .so files
diff --git a/tools/qa/test_pathutils.cxx b/tools/qa/test_pathutils.cxx
index 99046a6211c9..fcd838767425 100644
--- a/tools/qa/test_pathutils.cxx
+++ b/tools/qa/test_pathutils.cxx
@@ -31,9 +31,11 @@
#include <cwchar>
+#include "preextstl.h"
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/plugin/TestPlugIn.h>
+#include "postextstl.h"
#include "tools/pathutils.hxx"
diff --git a/tools/source/fsys/unx.cxx b/tools/source/fsys/unx.cxx
index 7de396d9c386..0ed7dd4d8f8d 100644
--- a/tools/source/fsys/unx.cxx
+++ b/tools/source/fsys/unx.cxx
@@ -45,7 +45,7 @@
extern "C" int mntctl( int cmd, size_t size, char* buf );
#elif defined(NETBSD)
#include <sys/mount.h>
-#elif defined(FREEBSD) || defined(MACOSX)
+#elif defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD)
#elif defined DECUNIX
struct mnttab
{
@@ -95,7 +95,8 @@ struct mymnttab
};
-#if defined(NETBSD) || defined(FREEBSD) || defined(MACOSX)
+#if defined(NETBSD) || defined(FREEBSD) || defined(MACOSX) || \
+ defined(OPENBSD)
BOOL GetMountEntry(dev_t /* dev */, struct mymnttab * /* mytab */ )
{
DBG_WARNING( "Sorry, not implemented: GetMountEntry" );
diff --git a/tools/source/stream/strmunx.cxx b/tools/source/stream/strmunx.cxx
index 5734cad12c35..5e03bcf2b237 100644
--- a/tools/source/stream/strmunx.cxx
+++ b/tools/source/stream/strmunx.cxx
@@ -210,7 +210,8 @@ static sal_uInt32 GetSvError( int nErrno )
{ 0, SVSTREAM_OK },
{ EACCES, SVSTREAM_ACCESS_DENIED },
{ EBADF, SVSTREAM_INVALID_HANDLE },
-#if defined( RS6000 ) || defined( ALPHA ) || defined( HP9000 ) || defined( NETBSD ) || defined(FREEBSD) || defined(MACOSX) || defined(__FreeBSD_kernel__) || defined ( AIX )
+#if defined( RS6000 ) || defined( ALPHA ) || defined( HP9000 ) || defined( NETBSD ) || defined(FREEBSD) || defined(MACOSX) || \
+ defined(OPENBSD) || defined(__FreeBSD_kernel__) || defined ( AIX )
{ EDEADLK, SVSTREAM_LOCKING_VIOLATION },
#else
{ EDEADLOCK, SVSTREAM_LOCKING_VIOLATION },
@@ -224,7 +225,8 @@ static sal_uInt32 GetSvError( int nErrno )
{ EAGAIN, SVSTREAM_LOCKING_VIOLATION },
{ EISDIR, SVSTREAM_PATH_NOT_FOUND },
{ ELOOP, SVSTREAM_PATH_NOT_FOUND },
-#if ! defined( RS6000 ) && ! defined( ALPHA ) && ! defined( NETBSD ) && ! defined (FREEBSD) && ! defined (MACOSX) && ! defined(__FreeBSD_kernel__)
+#if ! defined( RS6000 ) && ! defined( ALPHA ) && ! defined( NETBSD ) && ! defined (FREEBSD) && ! defined (MACOSX) && \
+ !defined(OPENBSD) && ! defined(__FreeBSD_kernel__)
{ EMULTIHOP, SVSTREAM_PATH_NOT_FOUND },
{ ENOLINK, SVSTREAM_PATH_NOT_FOUND },
#endif
diff --git a/vcl/unx/inc/dtint.hxx b/vcl/unx/inc/dtint.hxx
index 064916e7ac12..b6f7aa4b9350 100644
--- a/vcl/unx/inc/dtint.hxx
+++ b/vcl/unx/inc/dtint.hxx
@@ -37,7 +37,7 @@ class SalBitmap;
class SalDisplay;
class AllSettings;
-#ifndef _XLIB_H_
+#if !defined(_XLIB_H_) && !defined(_X11_XLIB_H_)
// forwards from X
struct Display;
struct XEvent;
diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx
index b5d789b8521b..e27a9974c872 100644
--- a/vcl/unx/inc/saldata.hxx
+++ b/vcl/unx/inc/saldata.hxx
@@ -47,7 +47,8 @@ class SalPrinter;
DECLARE_LIST( SalDisplays, SalDisplay* )
-#if defined SCO || defined LINUX || defined NETBSD || defined AIX || defined HPUX || defined FREEBSD
+#if defined SCO || defined LINUX || defined NETBSD || defined AIX || \
+ defined HPUX || defined FREEBSD || defined OPENBSD
#include <pthread.h>
#else
typedef unsigned int pthread_t;
diff --git a/vcl/unx/inc/salunx.h b/vcl/unx/inc/salunx.h
index 89732db6c91d..9956537a8b80 100644
--- a/vcl/unx/inc/salunx.h
+++ b/vcl/unx/inc/salunx.h
@@ -30,7 +30,8 @@
#define _SALUNX_H
// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-#if defined SCO || defined LINUX || defined HPUX || defined FREEBSD || defined NETBSD
+#if defined SCO || defined LINUX || defined HPUX || defined FREEBSD || \
+ defined NETBSD || defined OPENBSD
#include <sys/time.h>
#elif defined AIX
#include <time.h>
diff --git a/vcl/unx/kde/kdedata.cxx b/vcl/unx/kde/kdedata.cxx
index aeac873aea5f..a9be7668e6b9 100644
--- a/vcl/unx/kde/kdedata.cxx
+++ b/vcl/unx/kde/kdedata.cxx
@@ -120,15 +120,15 @@ void KDEXLib::Init()
pInputMethod->SetLocale();
XrmInitialize();
- KAboutData *kAboutData = new KAboutData( "OpenOffice.org",
- I18N_NOOP( "OpenOffice.org" ),
+ KAboutData *kAboutData = new KAboutData( "LibreOffice",
+ I18N_NOOP( "LibreOffice" ),
"1.1.0",
- I18N_NOOP( "OpenOffice.org with KDE Native Widget Support." ),
+ I18N_NOOP( "LibreOffice with KDE Native Widget Support." ),
KAboutData::License_LGPL,
"(c) 2003, 2004 Novell, Inc",
- I18N_NOOP( "OpenOffice.org is an office suite.\n" ),
- "http://kde.openoffice.org/index.html",
- "dev@kde.openoffice.org");
+ I18N_NOOP( "LibreOffice is an office suite.\n" ),
+ "http://libreoffice.org",
+ "libreoffice@lists.freedesktop.org");
kAboutData->addAuthor( "Jan Holesovsky",
I18N_NOOP( "Original author and maintainer of the KDE NWF." ),
"kendy@artax.karlin.mff.cuni.cz",
diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx
index 94fe2378c887..ea7c7fd64cac 100644
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@ -105,16 +105,16 @@ void KDEXLib::Init()
pInputMethod->SetLocale();
XrmInitialize();
- KAboutData *kAboutData = new KAboutData("OpenOffice.org",
+ KAboutData *kAboutData = new KAboutData("LibreOffice",
"kdelibs4",
- ki18n( "OpenOffice.org" ),
- "3.0.0",
- ki18n( "OpenOffice.org with KDE Native Widget Support." ),
+ ki18n( "LibreOffice" ),
+ "3.3.0",
+ ki18n( "LibreOffice with KDE Native Widget Support." ),
KAboutData::License_LGPL,
ki18n( "Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Novell, Inc"),
- ki18n( "OpenOffice.org is an office suite.\n" ),
- "http://kde.openoffice.org/index.html",
- "dev@kde.openoffice.org" );
+ ki18n( "LibreOffice is an office suite.\n" ),
+ "http://libreoffice.org",
+ "libreoffice@lists.freedesktop.org" );
kAboutData->addAuthor( ki18n( "Jan Holesovsky" ),
ki18n( "Original author and maintainer of the KDE NWF." ),
diff --git a/vcl/unx/source/app/i18n_ic.cxx b/vcl/unx/source/app/i18n_ic.cxx
index 59fb02f1919a..48f6c53b5c5c 100644
--- a/vcl/unx/source/app/i18n_ic.cxx
+++ b/vcl/unx/source/app/i18n_ic.cxx
@@ -334,7 +334,7 @@ SalI18N_InputContext::SalI18N_InputContext ( SalFrame *pFrame ) :
if ( mnPreeditStyle != XIMPreeditNone )
{
-#if defined LINUX || defined FREEBSD || defined NETBSD
+#if defined LINUX || defined FREEBSD || defined NETBSD || defined OPENBSD
if ( mpPreeditAttributes != NULL )
#endif
mpAttributes = XVaAddToNestedList( mpAttributes,
@@ -342,7 +342,7 @@ SalI18N_InputContext::SalI18N_InputContext ( SalFrame *pFrame ) :
}
if ( mnStatusStyle != XIMStatusNone )
{
-#if defined LINUX || defined FREEBSD || defined NETBSD
+#if defined LINUX || defined FREEBSD || defined NETBSD || defined OPENBSD
if ( mpStatusAttributes != NULL )
#endif
mpAttributes = XVaAddToNestedList( mpAttributes,
diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx
index 8a209d126a75..f2eecf0d9cbd 100644
--- a/vcl/unx/source/app/saldisp.cxx
+++ b/vcl/unx/source/app/saldisp.cxx
@@ -894,7 +894,7 @@ void SalDisplay::Init()
sscanf( pProperties, "%li", &nProperties_ );
else
{
-#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD
+#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD || defined OPENBSD
nProperties_ |= PROPERTY_FEATURE_Maximize;
#endif
// Server Bugs & Properties
@@ -920,7 +920,7 @@ void SalDisplay::Init()
if( GetServerVendor() == vendor_xfree )
{
nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor;
-#if defined LINUX || defined FREEBSD
+#if defined LINUX || defined FREEBSD || defined OPENBSD
// otherwm and olwm are a kind of default, which are not detected
// carefully. if we are running linux (i.e. not netbsd) on an xfree
// display, fvwm is most probable the wm to choose, confusing with mwm
diff --git a/vcl/unx/source/dtrans/X11_selection.cxx b/vcl/unx/source/dtrans/X11_selection.cxx
index 9d68974eced8..18d120d4961b 100644
--- a/vcl/unx/source/dtrans/X11_selection.cxx
+++ b/vcl/unx/source/dtrans/X11_selection.cxx
@@ -42,7 +42,7 @@
#include <X11/keysym.h>
#include <X11/Xutil.h>
#include "tools/postx.h"
-#if defined(LINUX) || defined(NETBSD) || defined (FREEBSD)
+#if defined(LINUX) || defined(NETBSD) || defined (FREEBSD) || defined(OPENBSD)
#include <sys/poll.h>
#else
#include <poll.h>
diff --git a/vcl/unx/source/printer/printerinfomanager.cxx b/vcl/unx/source/printer/printerinfomanager.cxx
index ecf3f78a49cb..0fff5b590b98 100644
--- a/vcl/unx/source/printer/printerinfomanager.cxx
+++ b/vcl/unx/source/printer/printerinfomanager.cxx
@@ -1207,7 +1207,7 @@ struct SystemCommandParameters
tokenHandler pHandler;
};
-#if ! (defined(LINUX) || defined(NETBSD) || defined(FREEBSD))
+#if ! (defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD))
static void lpgetSysQueueTokenHandler(
const std::list< rtl::OString >& i_rLines,
std::list< PrinterInfoManager::SystemPrintQueue >& o_rQueues,
@@ -1352,7 +1352,7 @@ static void standardSysQueueTokenHandler(
static const struct SystemCommandParameters aParms[] =
{
- #if defined(LINUX) || defined(NETBSD) || defined(FREEBSD)
+ #if defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)
{ "/usr/sbin/lpc status", "lpr -P \"(PRINTER)\"", "", ":", 0, standardSysQueueTokenHandler },
{ "lpc status", "lpr -P \"(PRINTER)\"", "", ":", 0, standardSysQueueTokenHandler },
{ "LANG=C;LC_ALL=C;export LANG LC_ALL;lpstat -s", "lp -d \"(PRINTER)\"", "system for ", ": ", 1, standardSysQueueTokenHandler }
diff --git a/vcl/util/makefile.mk b/vcl/util/makefile.mk
index e8221e41ae3a..983530c58206 100644
--- a/vcl/util/makefile.mk
+++ b/vcl/util/makefile.mk
@@ -332,7 +332,8 @@ SHL2STDLIBS+=`pkg-config --libs xrender`
.IF "$(GUIBASE)"=="unx"
SHL2STDLIBS += -lXext -lSM -lICE -lX11
-.IF "$(OS)"!="MACOSX" && "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD"
+.IF "$(OS)"!="MACOSX" && "$(OS)"!="FREEBSD" && "$(OS)"!="NETBSD" && \
+ && "$(OS)"!="OPENBSD"
# needed by salprnpsp.cxx
SHL2STDLIBS+= -ldl
.ENDIF