From 625461bf690ebc60930664113a8602f2e885a34d Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 3 Sep 2015 19:35:29 +0200 Subject: [PATCH] Fix Windows 7 32b Compilation from scratch. Add scripts to build Libs on branch. --- Start_RetroShare-Gui_Debug.bat | 11 ++ build-all-mingw32make.bat | 137 ++++++++++++-- retroshare-gui/src/retroshare-gui.pro | 1 + retroshare-gui/src/util/printpreview.cpp | 32 ---- retroshare-gui/src/util/printpreview.h | 30 +++ win_build_libs/Makefile | 223 +++++++++++++++++++++++ win_build_libs/build_ext.sh | 201 ++++++++++++++++++++ win_build_libs/libssh-0.5.4-fix.tar.gz | Bin 0 -> 6452 bytes win_build_libs/libxslt-1.1.28-fix.tar.gz | Bin 0 -> 3009 bytes 9 files changed, 583 insertions(+), 52 deletions(-) create mode 100755 Start_RetroShare-Gui_Debug.bat mode change 100644 => 100755 build-all-mingw32make.bat create mode 100755 win_build_libs/Makefile create mode 100755 win_build_libs/build_ext.sh create mode 100755 win_build_libs/libssh-0.5.4-fix.tar.gz create mode 100755 win_build_libs/libxslt-1.1.28-fix.tar.gz diff --git a/Start_RetroShare-Gui_Debug.bat b/Start_RetroShare-Gui_Debug.bat new file mode 100755 index 000000000..3ba38c3f8 --- /dev/null +++ b/Start_RetroShare-Gui_Debug.bat @@ -0,0 +1,11 @@ +set QTDIR=C:\Qt\5.5\mingw492_32 +set LIBS=..\libs +set RSPATH=.\retroshare-gui\src\debug + +set PATH=%QTDIR%\bin;%LIBS%\bin;%PATH% + +If not exist %RSPATH%\RetroShare06.exe ( + build-all-mingw32make.bat +) + +%RSPATH%\RetroShare06.exe diff --git a/build-all-mingw32make.bat b/build-all-mingw32make.bat old mode 100644 new mode 100755 index 819642b46..49eebe687 --- a/build-all-mingw32make.bat +++ b/build-all-mingw32make.bat @@ -1,14 +1,14 @@ -set QTDIR=C:\Qt\4.8.6 -set MINGW=C:\MinGW -set GIT=C:\Program Files\Git - -set PATH=%QTDIR%\bin;%MINGW%\bin;%GIT%\bin;%PATH% +set QTDIR=C:\Qt\5.5\mingw492_32\ +set MINGW=C:\Qt\Tools\mingw492_32 +set PATH=%QTDIR%\bin;%MINGW%\bin;%PATH% +set DEBUG=1 @echo off rem emptying used variables in case the script was aborted and tempfile set pack= set clean= +set errorlevel= if exist tmp.txt del tmp.txt @@ -19,12 +19,12 @@ if %1x == x ( ) if /i %1==clean ( set clean=clean - shift + shift goto :loop1 ) if /i %1==pack ( set pack=pack - shift + shift goto :loop1 ) echo.%1>>tmp.txt @@ -44,77 +44,174 @@ if not exist tmp.txt ( ) for /f %%a in (tmp.txt) do ( -@echo on +if ECHO==1 @echo on + + + +rem TODO: Remove these lines +rem GOTO :retroshare-gui + + + + +:libbitdht +rem ################################### +rem ### libbitdht ##################### +rem ################################### cd libbitdht\src if not %clean%x==x mingw32-make clean qmake libbitdht.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libbitdht done ################ +echo ################################### +cd ..\.. - -cd ..\..\openpgpsdk\src +:openpgpsdk +rem ################################### +rem ### openpgpsdk #################### +rem ################################### +cd openpgpsdk\src if not %clean%x==x mingw32-make clean qmake openpgpsdk.pro +CALL :TEST_ERROR mingw32-make +CALL :TEST_ERROR +echo ################################### +echo ### openpgpsdk done ############### +echo ################################### +cd ..\.. -cd ..\..\libresapi\src +:libresapi +rem ################################### +rem ### libresapi ##################### +rem ################################### +cd libresapi\src if not %clean%x==x mingw32-make clean qmake libresapi.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libresapi done ################ +echo ################################### +cd ..\.. -cd ..\..\libretroshare\src +:libretroshare +rem ################################### +rem ### libretroshare ################# +rem ################################### +cd libretroshare\src if not %clean%x==x mingw32-make clean qmake libretroshare.pro "CONFIG+=version_detail_bash_script" +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libretroshare done ############ +echo ################################### +cd ..\.. - -cd ..\..\supportlibs\pegmarkdown +:pegmarkdown +rem ################################### +rem ### pegmarkdown ################### +rem ################################### +cd supportlibs\pegmarkdown if not %clean%x==x mingw32-make clean qmake pegmarkdown.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### pegmarkdown done ############## +echo ################################### +cd ..\.. - -cd ..\..\retroshare-nogui\src +:retroshare-nogui +rem ################################### +rem ### retroshare-nogui ############## +rem ################################### +cd retroshare-nogui\src if not %clean%x==x mingw32-make clean qmake retroshare-nogui.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### retroshare-nogui done ######### +echo ################################### +cd ..\.. - -cd ..\..\retroshare-gui\src +:retroshare-gui +rem ################################### +rem ### retroshare-gui ################ +rem ################################### +cd retroshare-gui\src if not %clean%x==x mingw32-make clean -qmake retroshare-gui.pro "CONFIG+=version_detail_bash_script" +rem qmake -r -spec ..\mkspecs\win32-g++ "CONFIG+=version_detail_bash_script" retroshare-gui.pro +qmake retroshare-gui.pro "CONFIG+=version_detail_bash_script" +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### retroshare-gui done ########### +echo ################################### cd ..\.. @echo off ) + @echo off if %pack%x==packx call packaging.bat -rem clean up +rem ################################### +rem ### clean up ###################### +rem ################################### set clean= del tmp.txt set pack= pause +rem ################################### +rem ### END ########################### +rem ################################### +GOTO :EOF + + +:TEST_ERROR +@echo off +if errorlevel 1 ( + pause + set clean= + del tmp.txt + set pack= + EXIT +) +if ECHO==1 @echo on +EXIT /B + +:EOF \ No newline at end of file diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index 3a2adcae1..cd4a57ceb 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -177,6 +177,7 @@ win32 { LIBS_DIR = $$PWD/../../../libs LIBS += -L"$$LIBS_DIR/lib" + LIBS += -L"$$LIBS_DIR/bin" LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz -lws2_32 LIBS += -luuid -lole32 -liphlpapi -lcrypt32 -lgdi32 diff --git a/retroshare-gui/src/util/printpreview.cpp b/retroshare-gui/src/util/printpreview.cpp index 73bc09ca4..02e925336 100644 --- a/retroshare-gui/src/util/printpreview.cpp +++ b/retroshare-gui/src/util/printpreview.cpp @@ -38,7 +38,6 @@ #include "printpreview.h" -#include #include #include #include @@ -70,35 +69,6 @@ static inline qreal mmToInches(double mm) return mm*0.039370147; } -class PreviewView : public QAbstractScrollArea -{ - Q_OBJECT -public: - PreviewView(QTextDocument *document, PrintPreview *printPrev); - - inline void updateLayout() { resizeEvent(0); viewport()->update(); } - -public slots: - void zoomIn(); - void zoomOut(); - -protected: - virtual void paintEvent(QPaintEvent *e); - virtual void resizeEvent(QResizeEvent *); - virtual void mousePressEvent(QMouseEvent *e); - virtual void mouseMoveEvent(QMouseEvent *e); - virtual void mouseReleaseEvent(QMouseEvent *e); - -private: - void paintPage(QPainter *painter, int page); - QTextDocument *doc; - qreal scale; - int interPageSpacing; - QPoint mousePressPos; - QPoint scrollBarValuesOnMousePress; - PrintPreview *printPreview; -}; - PreviewView::PreviewView(QTextDocument *document, PrintPreview *printPrev) : printPreview(printPrev) { @@ -330,5 +300,3 @@ void PrintPreview::pageSetup() view->updateLayout(); } } - -#include "printpreview.moc" diff --git a/retroshare-gui/src/util/printpreview.h b/retroshare-gui/src/util/printpreview.h index e8f7a769d..9fce97b5d 100644 --- a/retroshare-gui/src/util/printpreview.h +++ b/retroshare-gui/src/util/printpreview.h @@ -39,6 +39,7 @@ #ifndef PRINTPREVIEW_H #define PRINTPREVIEW_H +#include #include #include #include @@ -69,5 +70,34 @@ private: QPrinter printer; }; +class PreviewView : public QAbstractScrollArea +{ + Q_OBJECT +public: + PreviewView(QTextDocument *document, PrintPreview *printPrev); + + inline void updateLayout() { resizeEvent(0); viewport()->update(); } + +public slots: + void zoomIn(); + void zoomOut(); + +protected: + virtual void paintEvent(QPaintEvent *e); + virtual void resizeEvent(QResizeEvent *); + virtual void mousePressEvent(QMouseEvent *e); + virtual void mouseMoveEvent(QMouseEvent *e); + virtual void mouseReleaseEvent(QMouseEvent *e); + +private: + void paintPage(QPainter *painter, int page); + QTextDocument *doc; + qreal scale; + int interPageSpacing; + QPoint mousePressPos; + QPoint scrollBarValuesOnMousePress; + PrintPreview *printPreview; +}; + #endif // PRINTPREVIEW_H diff --git a/win_build_libs/Makefile b/win_build_libs/Makefile new file mode 100755 index 000000000..4a51dc1ae --- /dev/null +++ b/win_build_libs/Makefile @@ -0,0 +1,223 @@ +ZLIB_VERSION=1.2.3 +BZIP2_VERSION=1.0.6 +MINIUPNPC_VERSION=1.3 +OPENSSL_VERSION=1.0.1h +SPEEX_VERSION=1.2rc1 +OPENCV_VERSION=2.4.9 +LIBXML2_VERSION=2.9.1 +LIBXSLT_VERSION=1.1.28 +CURL_VERSION=7.34.0 +LIBSSH_VERSION=0.5.4 +PROTOBUF_VERSION=2.4.1 +TCL_VERSION=8.6.2 +SQLCIPHER_VERSION=2.2.1 +LIBMICROHTTPD_VERSION=0.9.42 + +all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl libssh protobuf sqlcipher libmicrohttpd copylibs + +dirs: + mkdir -p libs/include + mkdir -p libs/lib + mkdir -p libs/bin + +zlib-$(ZLIB_VERSION).tar.gz: + curl.exe -L http://sourceforge.net/projects/libpng/files/zlib/$(ZLIB_VERSION)/zlib-$(ZLIB_VERSION).tar.gz/download -o zlib-$(ZLIB_VERSION).tar.gz + +zlib: zlib-$(ZLIB_VERSION).tar.gz + tar xvf zlib-$(ZLIB_VERSION).tar.gz + cd zlib-$(ZLIB_VERSION) && ./configure + #cd zlib-$(ZLIB_VERSION) && make install prefix="`pwd`/../libs" + cd zlib-$(ZLIB_VERSION) && make + cp zlib-$(ZLIB_VERSION)/zlib.h libs/include/ + cp zlib-$(ZLIB_VERSION)/zconf.h libs/include/ + cp zlib-$(ZLIB_VERSION)/libz.a libs/lib/ + rm -r -f zlib-$(ZLIB_VERSION) + touch zlib + +bzip2-$(BZIP2_VERSION).tar.gz: + curl.exe http://bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz -o bzip2-$(BZIP2_VERSION).tar.gz + +bzip2: bzip2-$(BZIP2_VERSION).tar.gz + tar xvf bzip2-$(BZIP2_VERSION).tar.gz + #cd bzip2-$(BZIP2_VERSION) && make install PREFIX="`pwd`/../libs" + cd bzip2-$(BZIP2_VERSION) && make + cp bzip2-$(BZIP2_VERSION)/bzlib.h libs/include/ + cp bzip2-$(BZIP2_VERSION)/libbz2.a libs/lib/ + rm -r -f bzip2-$(BZIP2_VERSION) + touch bzip2 + +miniupnpc-$(MINIUPNPC_VERSION).tar.gz: + curl.exe -L http://miniupnp.free.fr/files/download.php?file=miniupnpc-$(MINIUPNPC_VERSION).tar.gz -o miniupnpc-$(MINIUPNPC_VERSION).tar.gz + +miniupnpc: miniupnpc-$(MINIUPNPC_VERSION).tar.gz + tar xvf miniupnpc-$(MINIUPNPC_VERSION).tar.gz + cd miniupnpc-$(MINIUPNPC_VERSION) && make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll + mkdir -p libs/include/miniupnpc && cp miniupnpc-$(MINIUPNPC_VERSION)/*.h libs/include/miniupnpc/ + cp miniupnpc-$(MINIUPNPC_VERSION)/libminiupnpc.a libs/lib/ + cp miniupnpc-$(MINIUPNPC_VERSION)/miniupnpc.dll libs/bin/ + rm -r -f miniupnpc-$(MINIUPNPC_VERSION) + touch miniupnpc + +openssl-$(OPENSSL_VERSION).tar.gz: + curl.exe -k https://www.openssl.org/source/openssl-1.0.1h.tar.gz -o openssl-1.0.1h.tar.gz + +openssl: openssl-$(OPENSSL_VERSION).tar.gz + tar xvf openssl-$(OPENSSL_VERSION).tar.gz + #cd openssl-$(OPENSSL_VERSION) && ./config --prefix="`pwd`/../libs" + #cd openssl-$(OPENSSL_VERSION) && make install + cd openssl-$(OPENSSL_VERSION) && ./config + cd openssl-$(OPENSSL_VERSION) && make + mkdir -p libs/include/openssl && cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h libs/include/openssl/ + cp openssl-$(OPENSSL_VERSION)/libcrypto.a libs/lib/ + cp openssl-$(OPENSSL_VERSION)/libssl.a libs/lib/ + rm -r -f openssl-$(OPENSSL_VERSION) + touch openssl + +speex-$(SPEEX_VERSION).tar.gz: + curl.exe http://downloads.xiph.org/releases/speex/speex-$(SPEEX_VERSION).tar.gz -o speex-$(SPEEX_VERSION).tar.gz + +speex: speex-$(SPEEX_VERSION).tar.gz + tar xvf speex-$(SPEEX_VERSION).tar.gz + cd speex-$(SPEEX_VERSION) && ./configure + #cd speex-$(SPEEX_VERSION) && make install exec_prefix="`pwd`/../libs" + cd speex-$(SPEEX_VERSION) && make + mkdir -p libs/include/speex && cp speex-$(SPEEX_VERSION)/include/speex/*.h libs/include/speex/ + cp speex-$(SPEEX_VERSION)/libspeex/.libs/libspeex.a libs/lib + cp speex-$(SPEEX_VERSION)/libspeex/.libs/libspeexdsp.a libs/lib + rm -r -f speex-$(SPEEX_VERSION) + touch speex + +opencv-$(OPENCV_VERSION).tar.gz: + curl.exe -L -k https://github.com/Itseez/opencv/archive/$(OPENCV_VERSION).tar.gz -o opencv-$(OPENCV_VERSION).tar.gz + +opencv: opencv-$(OPENCV_VERSION).tar.gz + tar xvf opencv-$(OPENCV_VERSION).tar.gz + mkdir -p opencv-$(OPENCV_VERSION)/build + #cd opencv-$(OPENCV_VERSION)/build && cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/../../libs" + cd opencv-$(OPENCV_VERSION)/build && cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/install" + cd opencv-$(OPENCV_VERSION)/build && make install + cp -r opencv-$(OPENCV_VERSION)/build/install/include/* libs/include/ + mkdir -p libs/lib/opencv + if [ -d "opencv-$(OPENCV_VERSION)/build/install/x86" ]; then \ + cp -r opencv-$(OPENCV_VERSION)/build/install/x86/mingw/staticlib/* libs/lib/opencv/ ; \ + fi + if [ -d "opencv-$(OPENCV_VERSION)/build/install/x64" ]; then \ + cp -r opencv-$(OPENCV_VERSION)/build/install/x64/mingw/staticlib/* libs/lib/opencv/ ; \ + fi + rm -r -f opencv-$(OPENCV_VERSION) + touch opencv + +libxml2-$(LIBXML2_VERSION).tar.gz: + curl.exe ftp://xmlsoft.org/libxml2/libxml2-$(LIBXML2_VERSION).tar.gz -o libxml2-$(LIBXML2_VERSION).tar.gz + +libxml2: libxml2-$(LIBXML2_VERSION).tar.gz + tar xvf libxml2-$(LIBXML2_VERSION).tar.gz + cd libxml2-$(LIBXML2_VERSION) && ./configure --without-iconv -enable-shared=no + #cd libxml2-$(LIBXML2_VERSION) && make install exec_prefix="`pwd`/../libs" + cd libxml2-$(LIBXML2_VERSION) && make + mkdir -p libs/include/libxml && cp libxml2-$(LIBXML2_VERSION)/include/libxml/*.h libs/include/libxml/ + cp libxml2-$(LIBXML2_VERSION)/.libs/libxml2.a libs/lib/ + touch libxml2 + +libxslt-$(LIBXSLT_VERSION).tar.gz: + curl.exe ftp://xmlsoft.org/libxml2/libxslt-$(LIBXSLT_VERSION).tar.gz -o libxslt-$(LIBXSLT_VERSION).tar.gz + +libxslt: libxml2-$(LIBXML2_VERSION).tar.gz libxslt-$(LIBXSLT_VERSION).tar.gz + tar xvf libxml2-$(LIBXML2_VERSION).tar.gz + tar xvf libxslt-$(LIBXSLT_VERSION).tar.gz + tar xvf libxslt-$(LIBXSLT_VERSION)-fix.tar.gz + cd libxslt-$(LIBXSLT_VERSION) && ./configure --with-libxml-src=../libxml2-$(LIBXML2_VERSION) -enable-shared=no CFLAGS=-DLIBXML_STATIC + cd libxslt-$(LIBXSLT_VERSION) && make + mkdir -p libs/include/libxslt && cp libxslt-$(LIBXSLT_VERSION)/libxslt/*.h libs/include/libxslt/ + cp libxslt-$(LIBXSLT_VERSION)/libxslt/.libs/libxslt.a libs/lib/ + cp libxslt-$(LIBXSLT_VERSION)/libexslt/.libs/libexslt.a libs/lib/ + rm -r -f libxml2-$(LIBXML2_VERSION) + rm -r -f libxslt-$(LIBXSLT_VERSION) + touch libxslt + +curl-$(CURL_VERSION).tar.gz: + curl.exe http://curl.haxx.se/download/curl-$(CURL_VERSION).tar.gz -o curl-$(CURL_VERSION).tar.gz + +curl: curl-$(CURL_VERSION).tar.gz + tar xvf curl-$(CURL_VERSION).tar.gz + cd curl-$(CURL_VERSION) && LIBS="-L`pwd`/../libs/lib $$LIBS" && export LIBS && ./configure --disable-shared --with-ssl="`pwd`/../libs" + #cd curl-$(CURL_VERSION) && make install exec_prefix="`pwd`/../libs" + cd curl-$(CURL_VERSION) && make + mkdir -p libs/include/curl && cp curl-$(CURL_VERSION)/include/curl/*.h libs/include/curl/ + cp curl-$(CURL_VERSION)/lib/.libs/libcurl.a libs/lib/ + rm -r -f curl-$(CURL_VERSION) + touch curl + +libssh-$(LIBSSH_VERSION).tar.gz: + curl.exe -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz + +libssh: libssh-$(LIBSSH_VERSION).tar.gz + tar xvf libssh-$(LIBSSH_VERSION).tar.gz + tar xvf libssh-$(LIBSSH_VERSION)-fix.tar.gz + mkdir -p libssh-$(LIBSSH_VERSION)/build + cd libssh-$(LIBSSH_VERSION)/build && cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" + cd libssh-$(LIBSSH_VERSION)/build && make + cp libssh-$(LIBSSH_VERSION)/build/src/libssh.a libs/lib/ + cp libssh-$(LIBSSH_VERSION)/build/src/threads/libssh_threads.a libs/lib/ + mkdir -p libs/include/libssh && cp libssh-$(LIBSSH_VERSION)/include/libssh/*.h libs/include/libssh/ + rm -r -f libssh-$(LIBSSH_VERSION) + touch libssh + +protobuf-$(PROTOBUF_VERSION).tar.gz: + curl.exe -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz + +protobuf: protobuf-$(PROTOBUF_VERSION).tar.gz + tar xvf protobuf-$(PROTOBUF_VERSION).tar.gz + cd protobuf-$(PROTOBUF_VERSION) && ./configure --disable-shared + #cd protobuf-$(PROTOBUF_VERSION) && make install exec_prefix="`pwd`/../libs" + cd protobuf-$(PROTOBUF_VERSION) && make + mkdir -p libs/include/protobuf && cp -r protobuf-$(PROTOBUF_VERSION)/src/google/ libs/include/protobuf/ + cp protobuf-$(PROTOBUF_VERSION)/src/.libs/libprotobuf.a libs/lib/ + cp protobuf-$(PROTOBUF_VERSION)/src/protoc.exe libs/bin/ + rm -r -f protobuf-$(PROTOBUF_VERSION) + touch protobuf + +tcl$(TCL_VERSION)-src.tar.gz: + curl.exe -L http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -o tcl$(TCL_VERSION)-src.tar.gz + +sqlcipher-$(SQLCIPHER_VERSION).tar.gz: + curl.exe -L -k https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -o sqlcipher-$(SQLCIPHER_VERSION).tar.gz + +sqlcipher: tcl$(TCL_VERSION)-src.tar.gz sqlcipher-$(SQLCIPHER_VERSION).tar.gz + # tcl + tar xvf tcl$(TCL_VERSION)-src.tar.gz + mkdir -p tcl$(TCL_VERSION)/build + cd tcl$(TCL_VERSION)/build && ../win/configure + cd tcl$(TCL_VERSION)/build && make + #sqlcipher + tar xvf sqlcipher-$(SQLCIPHER_VERSION).tar.gz + cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh + mkdir -p tcl$(TCL_VERSION)/lib + ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6 + cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && LIBS="-L`pwd`/../libs/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install" + cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* libs/include/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a libs/lib/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe libs/bin/ + rm -r -f sqlcipher-$(SQLCIPHER_VERSION) + rm -r -f tcl$(TCL_VERSION) + touch sqlcipher + +libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz: + curl.exe -L -k http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz -o libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + +libmicrohttpd: libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + tar xvf libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && ./configure + #cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make install exec_prefix="`pwd`/../libs" + cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/include/*.h libs/include/ + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/microhttpd/.libs/*.a libs/lib/ + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/microhttpd/.libs/*.dll libs/bin/ + rm -r -f libmicrohttpd-$(LIBMICROHTTPD_VERSION) + touch libmicrohttpd + +copylibs: + read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ + if [ "$$answer" = "yes" ] ; then \ + cp -r libs ../../libs ; \ + fi diff --git a/win_build_libs/build_ext.sh b/win_build_libs/build_ext.sh new file mode 100755 index 000000000..bcb555094 --- /dev/null +++ b/win_build_libs/build_ext.sh @@ -0,0 +1,201 @@ +cd Build + +mkdir -p libs/include +mkdir -p libs/lib +mkdir -p libs/bin + +[ -s zlib-1.2.3.tar.gz ] || curl -L http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.gz/download -o zlib-1.2.3.tar.gz +if [ -s zlib-1.2.3.tar.gz ]; then + tar xvf zlib-1.2.3.tar.gz + cd zlib-1.2.3 + ./configure + #make install prefix="`pwd`/../libs" + make + cp zlib.h ../libs/include/ + cp zconf.h ../libs/include/ + cp libz.a ../libs/lib/ + cd .. + rm -r -f zlib-1.2.3 +fi + +[ -s bzip2-1.0.6.tar.gz ] || curl http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz -o bzip2-1.0.6.tar.gz +if [ -s bzip2-1.0.6.tar.gz ]; then + tar xvf bzip2-1.0.6.tar.gz + cd bzip2-1.0.6 + #make install PREFIX="`pwd`/../libs" + make + cp bzlib.h ../libs/include/ + cp libbz2.a ../libs/lib/ + cd .. + rm -r -f bzip2-1.0.6 +fi + +[ -s miniupnpc-1.3.tar.gz ] || curl -L http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.3.tar.gz -o miniupnpc-1.3.tar.gz +if [ -s miniupnpc-1.3.tar.gz ]; then + tar xvf miniupnpc-1.3.tar.gz + cd miniupnpc-1.3 + make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll + mkdir -p ../libs/include/miniupnpc && cp *.h ../libs/include/miniupnpc/ + cp libminiupnpc.a ../libs/lib/ + cp miniupnpc.dll ../libs/bin/ + cd .. + rm -r -f miniupnpc-1.3 +fi + +[ -s openssl-1.0.1h.tar.gz ] || curl -k https://www.openssl.org/source/openssl-1.0.1h.tar.gz -o openssl-1.0.1h.tar.gz +if [ -s openssl-1.0.1h.tar.gz ]; then + tar xvf openssl-1.0.1h.tar.gz + cd openssl-1.0.1h + #./config --prefix="`pwd`/../libs" + #make install + ./config + make + mkdir -p ../libs/include/openssl && cp include/openssl/*.h ../libs/include/openssl/ + cp libcrypto.a ../libs/lib/ + cp libssl.a ../libs/lib/ + cd .. + rm -r -f openssl-1.0.1h +fi + +[ -s speex-1.2rc1.tar.gz ] || curl http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz -o speex-1.2rc1.tar.gz +if [ -s speex-1.2rc1.tar.gz ]; then + tar xvf speex-1.2rc1.tar.gz + cd speex-1.2rc1 + ./configure + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/speex && cp include/speex/*.h ../libs/include/speex/ + cp libspeex/.libs/libspeex.a ../libs/lib + cp libspeex/.libs/libspeexdsp.a ../libs/lib + cd .. + rm -r -f speex-1.2rc1 +fi + +[ -s opencv-2.4.9.tar.gz ] || curl -L -k https://github.com/Itseez/opencv/archive/2.4.9.tar.gz -o opencv-2.4.9.tar.gz +if [ -s opencv-2.4.9.tar.gz ]; then + tar xvf opencv-2.4.9.tar.gz + cd opencv-2.4.9 + mkdir -p build + cd build + #cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/../../libs" + cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/install" + make install + cp -r install/include/* ../../libs/include/ + mkdir -p ../../libs/lib/opencv && cp -r install/x64/mingw/staticlib/* ../../libs/lib/opencv/ + cd ../.. + rm -r -f opencv-2.4.9 +fi + +[ -s libxml2-2.9.1.tar.gz ] || curl ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz -o libxml2-2.9.1.tar.gz +[ -s libxslt-1.1.28.tar.gz ] || curl ftp://xmlsoft.org/libxml2/libxslt-1.1.28.tar.gz -o libxslt-1.1.28.tar.gz +if [ -s libxml2-2.9.1.tar.gz -a -s libxslt-1.1.28.tar.gz ]; then + tar xvf libxml2-2.9.1.tar.gz + cd libxml2-2.9.1 + ./configure --without-iconv -enable-shared=no + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/libxml && cp include/libxml/*.h ../libs/include/libxml/ + cp .libs/libxml2.a ../libs/lib/ + cd .. + + tar xvf libxslt-1.1.28.tar.gz + tar xvf libxslt-1.1.28-fix.tar.gz + cd libxslt-1.1.28 + ./configure --with-libxml-src=../libxml2-2.9.1 -enable-shared=no CFLAGS=-DLIBXML_STATIC + make + mkdir -p ../libs/include/libxslt && cp libxslt/*.h ../libs/include/libxslt/ + cp libxslt/.libs/libxslt.a ../libs/lib/ + cp libexslt/.libs/libexslt.a ../libs/lib/ + cd .. + rm -r -f libxml2-2.9.1 + rm -r -f libxslt-1.1.28 +fi + +[ -s curl-7.34.0.tar.gz ] || curl http://curl.haxx.se/download/curl-7.34.0.tar.gz -o curl-7.34.0.tar.gz +if [ -s curl-7.34.0.tar.gz ]; then + tar xvf curl-7.34.0.tar.gz + cd curl-7.34.0 + LIBS_OLD=$LIBS + LIBS="-L`pwd`/../libs/lib $LIBS" + export LIBS + ./configure --disable-shared --with-ssl="`pwd`/../libs" + #make install exec_prefix="`pwd`/../libs" + make + LIBS=$LIBS_OLD + LIBS_OLD= + export LIBS + mkdir -p ../libs/include/curl && cp include/curl/*.h ../libs/include/curl/ + cp lib/.libs/libcurl.a ../libs/lib/ + cd .. + rm -r -f curl-7.34.0 +fi + +[ -s libssh-0.5.4.tar.gz ] || curl -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz +if [ -s libssh-0.5.4.tar.gz ]; then + tar xvf libssh-0.5.4.tar.gz + tar xvf libssh-0.5.4-fix.tar.gz + cd libssh-0.5.4 + mkdir -p build + cd build + cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" + make + cp src/libssh.a ../../libs/lib/ + cp src/threads/libssh_threads.a ../../libs/lib/ + cd .. + rm -r -f build + mkdir -p ../libs/include/libssh && cp include/libssh/*.h ../libs/include/libssh/ + cd .. + rm -r -f libssh-0.5.4 +fi + +[ -s protobuf-2.4.1.tar.gz ] || curl -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz +if [ -s protobuf-2.4.1.tar.gz ]; then + tar xvf protobuf-2.4.1.tar.gz + cd protobuf-2.4.1 + ./configure --disable-shared + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/protobuf && cp -r src/google/ ../libs/include/protobuf/ + cp src/.libs/libprotobuf.a ../libs/lib/ + cp src/protoc.exe ../libs/bin/ + cd .. + rm -r -f protobuf-2.4.1 +fi + +[ -s tcl8.6.2-src.tar.gz ] || curl -L http://prdownloads.sourceforge.net/tcl/tcl8.6.2-src.tar.gz -o tcl8.6.2-src.tar.gz +[ -s sqlcipher-2.2.1.tar.gz ] || curl -L -k https://github.com/sqlcipher/sqlcipher/archive/v2.2.1.tar.gz -o sqlcipher-2.2.1.tar.gz +if [ -s tcl8.6.2-src.tar.gz -a -s sqlcipher-2.2.1.tar.gz ]; then + tar xvf tcl8.6.2-src.tar.gz + cd tcl8.6.2 + mkdir -p build + cd build + ../win/configure + make + #make clean + cd ../.. + + tar xvf sqlcipher-2.2.1.tar.gz + cd sqlcipher-2.2.1 + ln -s ../tcl8.6.2/build/tclsh86.exe tclsh + mkdir -p `pwd`/../tcl8.6.2/lib + ln -s `pwd`/../tcl8.6.2/library `pwd`/../tcl8.6.2/lib/tcl8.6 + PATH=$PATH:`pwd`/../tcl8.6.2/build + LIBS_OLD=$LIBS + LIBS="-L`pwd`/../libs/lib -lgdi32 $LIBS" + export LIBS + ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl8.6.2/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl8.6.2/build" + make install prefix="`pwd`/install" + LIBS=$LIBS_OLD + LIBS_OLD= + export LIBS + cp -r install/include/* ../libs/include/ + cp install/lib/libsqlcipher.a ../libs/lib/ + cp install/bin/sqlcipher.exe ../libs/bin/ + rm -r -f `pwd`/../tcl8.6.2/lib + rm tclsh + cd .. + rm -r -f sqlcipher-2.2.1 + rm -r -f tcl8.6.2 +fi + +cd .. diff --git a/win_build_libs/libssh-0.5.4-fix.tar.gz b/win_build_libs/libssh-0.5.4-fix.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..0189c5a064be669f8db3008c75e7247ba5d1c8d1 GIT binary patch literal 6452 zcmV-48O!D$iwFQm(=Jp11MEEgbK5qu{nh>}5ONjxy2Q{?w=pM zg8sc92d9IJUkUM;oeVC9{qdNcjLun)o%PNy21jpBd*|%z&H34A+;1{A=6pS^5tJhL zlo$sj^?2&|L83_TEATo2Bm6*S$=O-pxEwavc!?06K5aGF zk5Q6BSA_Mt$6BBQ+k5S&t?wG_&A5jPf3m&(wI8~{(&OxV9>-zSoV_rbPz1v3Vw(qB zwbbUzp;M1f+2nFCeA+QOto#r+ekVU{m2^^f;V?$Q6HmsYqo4X0li_ICZ{%8zM#EwM=mIvawY`6wZ|;vy3JvGyqw~VhQ&3~a z+jocC+pyo3Zkk7oS^#ailnIc-oA}{jp#{_{HUWX@c_IO*w!lf!3GHyzf&xETMPYgs zK+i*zDQrTbh0%(^$s(zbntq$vf1tA%jYp~qxU^3Uz_JFdvMJ z!2b`N99`Bbbjna!h5~W!k>;rx!k;wQP2_uQSM+GGC5(OA0X7FbtRLPFkT_6)=)%rO z^KiGfwhEBdHvN~eP1(P$VjpxOE-axVNddi0Qa)!jQ0-o{N?5Ysu0QqNI_ZQbXbNc+cmT*TnCR(pQG4C{sed^-KdyBefJcKpmebVPBZ-)h`k1H7IAnY6 zLu$C&mU>xWszip?T$d=?<%0m+VGjus1m-T&mV)v}0e3=BcO}}36P$Qz3c2XM8MWJL zQ5tJC91t&a0cdq(JU13yCH}ZPSkXGka$y4?;~W<971%no!szPX+)ZhLrXXj_guXS) zju-1OhY$l2z-A76K5}abAQw$*RjRgLKU5?`0uA4so|-gDIH}PnoEKvu{zKgXG|HL|neGNKLg*x1rR9|U&lUT9T` zPqYRlGG;5zb$i(2$GwyOa(ir!pqO%Fshe?lsGh6jZs z&Uj*+az?9E2VHfE>{fFj%kaqS7R-*rOerKerC{zLsUgleP(Nf8X++2&vlj1lqu;RYm8-S8Xqb*wLpn=DYh{_=OoXr+!re7Ry$&4?x3}Dx6HAr! zcE9zHXYZhmpvk|W@w%W*wr~_!;1g|a$;10Cb7MQok5xH7kgfToIKR9XrRPaH0 zX+Sh5K;?ETLLMHHVauP^9+`G{LXi?U_z?e`CA)P;y_L*8W@n?*Q*c+YBcgCL;~*a} z>xwgsMfo9x#=;O-MxHhuJvb+V(F(9@b)E_6mQ72NgM5fjufd=MtfNI*12&9Dr?LxN zN;kSj1m3Mb20}F+3)B9e_)wGg56H)|GbXDyBy-WNa3@Zd-FeH|h&d)AkDr~tb*R~-YPAS#$IHm>T zJm0qnG+Zvw&r-&o zFdFLEjpAY^VU2Y>MRqK}`?wW>WzuYDntG^bU`vPJrsTBxDfQmPElw;}npWv#!LhBa z1?x&vb;}T$4&B~KiXdUTT|rqJX*Z*-ChkWL{|vmLKpXv9e@$+@kj#Mjf217%yMc~A zI+S5E<4s5>asEga^GM6q@w^ER$eF%sgT))FGopr|b=3(V;Qc^oy6QJ5JPxgpxY#HO+v*_A;;GMx*G)U;*SD^wJr3=TL$gvemZ)KM#N zz+5?sS$M57iQxMy`Kj2ihKI~vFrlP!QS&eg6{9B8V42LM*>uM!>$M4c(l`pHLA25u zaD*xBm5=Ff?}o>zFMWySV!>k;z~TduX%?$MQp28reJ(A`GLzL5CYw)AN0*b!^T9>` zax}d7@f2Fu@%m08cQHC1J%>FSV)Azd+Y#)i#WH22jg?rF=OXBadnR(hHA@J&JF?i% zl_iHJGvX~{(&VZLk0Yimy8}yhV!6+ywAHfkf{K5k-Z3H#Sy=3!ILGrWa%_z&2)H7C z?}xY;0}t5y;8iAzh$Kh3go69z2dW4y2oo&EM?VDa&>`XP{Y3hlY6^<7I;gntOfv(* z#bin$#%n$*CK4aq{xDf*r?ekh%5tGs0Zv0V}s;fOd?}l z-7Ksn1-`@>5sfrrLpf|L7;eZu0QI-#AK+h(A{rco=XEnEYqXnzH=<~nkI;M%Bh_T< zIhk#|JR|e*J~K#bwn|povK_}f;3C_RiPr10DqPCAnr8yS;@C> z3+74hWb$S>_=TQ_3sA}_u-WK{bAh!evp&LRDWr7jtwmd!as<9s5E!;w zXOAUU8`@CHbGu&0nBzlMm|L5g{^Qrfit+L(MoDCEGZQR*hDv2Z(`34&A|Ff&z^X;8 zfkA8jUCbopQ7KQkIE*&Q43N~Lq84)HhoV49>d#z~=W^V8$Sl>2p|!IIAjDDtOgMO~99mJ4RWW8ZJIiThkgL*HclqNBMkx#bgMqhc9+FzO*FNq zCf)*cN;_s!30BK;0j4-F>aY!~#&c_#k5_T1(Gt=fpgGQK7IJf{d zvF;wVJM(F*>^PFAmtA1QX;rXJ8OuA&2wguGN?=23i$#5AnpcsiXqT_2QUzrU@%%W_ zNF({LLYtz^TS=S>xzRRp6?xF?RrIMoF3MiuS^^2nULk6a(U`{yts^ssWtrj{TUg-} zM&W;W9Ep^cPAI~Trm9|BIhi`G?wcN!pG|GAMauE89*$8o(lo>{6BtRKU(n{$miCEa zEzA$PvJ4_Ch%rhK@+QAwRAhdQs+y3F6oQMndz1OPYJQkj*|GZcmE9fB+TBtY_JFhf zzO%QYK10$0Ff$FfVqr$9nl5(Na++dGNs-sG>suL1Ef-YYA^KTk-=oPp9;=78atA`2t z>W`>dRZEhoTS-e`zdFwf0#9OAECXxE0c;okQx&JV2urnNoH;vU?ehNQcrqA+|CnhY z0{#2%#V15!p4Qi{Ut0xg#Zylt(k0$#7AlhwyUm^Vuu^+y9i+y{_E za~Kv}BE(^_JtISLsu!@2z(dOX4Bafzvplq(nOVL<4K!S^|6vw|gtm-rdf8qvzw}rh zf&dQD7_5;4ohuPZ1+aB+TTutKMR3~DPxJyEUQ))NIw(g2Ym-2Qae(Be#!C`ce2VEt zkSWZN*!IqbCxm!ggPVoS`3h&TY@@iB<4PyW`B7!GH9Xc{WJ(12V#y(A;k~@NH}#LT z=vJek^HOr}YPzZ7cnx4(I!Sa4xO2k`OEJKXemYde}Sp*rMghn6`eH%>*VmO2Ln?7bIGfXAUcA?b`f8T|6PPZ{unnJ!LT z6@}UzpmbiuyNZi zMx+T*pu6n;EassmX4$GJ@vTB~QY z%yrJHQ$gxTq6$>sOsGGVSg#Z8jTu`~k=8;OQ$4ThdMjY=pKKK@1dQgg0zsz!|0!tm z(CzZK-4}u$ST;peKnYKIsEDx1fntl=6gHXd46r#Z?Mi@ozt#?~~LPTY#gFGzc(iFj;=BQXmS;%XA@;&1T5!SG9jFWeVM{QOsd^%V|4TaU?G{ z*~DlU6_C1?@6|373r{G{l#8yESgk!0tPaNQa^CM9PtN+oOCuGDYIWuKDV=%bt(r!y#EWW%tRaZ?^)vNGrg954k5*;92{c&-siQjg zaP`yyr93kWA+mE9yAALiHuH5TT@R_P0sWqc_)r5CtkCB-a&MDRi3@N{znG(62?ByL zMbT!3{NUjxW;T1wB5>RAztDlh7a6o*m|+Iv!x&L`>t_+gsrXN7v&x=Ve&|got8DC>H~1ElY&Zj03s|cdN60YJ$I*}Aff8HlaYCY9Eui{H%UF3CG{dn zB)9~T7bdy4Ty$!_&Op#DdI9bHZHI1!4=D>C#EmLdz-8am2;0^>^(vTL$!;CnWj8;q zweQUwkMJu(Sxp{ZpT*Jp+as~;ZS_gA>;Q3sm2;cObL5X5BT7P!N|N&F6}kW{Y9+Xu zd97NVERX<7s;YIY>>=I;&%|u9@E81T=UuLT4^391ofNb0sY}e)Sz~M6jUt}w)Ne&- zXUfCFO>fmacswoMbOF@v z+3Xz~lAurbj?Jb)8r!GOD0FZ~It>aHb%wn}@ z8CIa6w1`a0JQlqxwT!v^_LIlmz@cmxzBmnd%CG>vE1F}Jrmm`$DOSQNr01Yy-V>Ir zChD1X@hil2m1@H9k1P|Q2l{)AOn#7&)$*W>4>8gJkvPlw@%`cGb^kR51PHnf7aH3T zxitk3dq2v&VLC8GN116B6PmBo$QkKFLU;EN!Q(*h=vLDqOQmIms2Cyo;-nHOeNR^! zrH7zHndCAq5`?XCUG4Y$~MWSZns>* z8U+=y*zDnHa*|fe8;8vcz-jn;{F$pFB=D|_#gg(|6jM?>=yq2Ga$$R9-RiR>EG9HZ+7>k|94rOw41x_H*2K%0((CS|L6X1Y?sM4iQIia`m?!3XVmsJ-*jx^ z7{tG(yl6AQ>nRLH=fc43ws&HADw(cyrc}>H{{rZDXozwpDwGVgLQ*xHnRKo%x!@V7BeG0a~vPF#h_*{D1D)En|eqKZ|ytKC<*TtRX4L@z^r2UDL+kjY5Axp1lBk>8nj)b;K)o!$_aYWj(3(ZihgQ$X

i~45**?dI7&u_Wt1zHGq0LB`F0ie3vaAQ$q`q${mrx<>@I_14%5D7FSG$iN6m-U-0mz1-ltK2%KUd@QO z(2*{BJAB=T^6|lPt{@dERk02j;MGbNb(KJpooN8U;m*X+ASLu)?G4zehGc;$8okw8uhXjTZ*pd@; z7i=#$d_Me=%Nm;BYMhw?2E8%NZ2!u!!GKl3l}(V(RQB0Ct`BMrVs4G+>4)!-r83o*fqZoPiq9G73PRu88vCd3vZR%kn#L0oTtS9HD_? z?+xcv%x*iKz_IZ(N9@>?DqNgrk1V%${k!M+oV=R?DIjS!zb^9SFv@R|rVb3}cYY!| zvaE@t3ygGgIyDVAGsXFQJw6UV(W z^&f72gNd=s{>^3f=UV)Q9ncIN@G_8b^&zjSe#qqqo5pbTu(cTvl)2_#i)g}M(bsGk z6mAVCJhsU0FFiQ_LcL*>crB?BFf9ay=LGJQF|8P|102yICaGVq*Q>0${&IFIui?k% z$L9xN^OK?ly zmh{}*y6MuX@3{9dx!NFC*nt#j`S%TR6(|!jZq16CC+OB{`S-k}{C+c<^hdCD$Vog` z6fSkopUfPcR#nL&sbUg|9|}f`6|yY1f5y4|0)$>Rg_IsCxB?|BaF|Mv$!`8NH7h1! zEMc@^NQ+ot2oMRG=SFr!%sF-`LBe^gE4P*WB9yIjCQK6|f~%xla5fo!s_XC@PEHlS z;go%9gWZg3KY3sW1H0(2_C~Z-qUD4E#uGsr0}U{7Ozy3B_tA;MQ_ zeN*`!VdrYy*cP34n}3%I+3ODVuxQaclR2JUd4Znn42si$AZzen9`$3H^}FRKUum#x zr{;Mzres>nm7E)TH*$egIK#^-g>*RIPTbtaMN7s41Vf2OgM6hrG0NUNU8Sjnx=@Cs zjb=B17~dT>$&^Ym_!-O<3s+Y;&@UfdBXM)bR(>_(tvIn>4o?Lmm-3+l=YcDpc0QF8 zDK9mq5yv#e8G?_s5mAjDfGJF49)7KzX*ZO~#YYpDTIS5O@eTe70!$M(RD^*2H8j7; zNTO*N4kN&n7lUYDJSvK-H01AEy^{Urm*UQA;SY?tYFWq z%V8hMV5diFIC~4rO05FgN^GR4;zm(nX4p{%%hnb$;a}pAi;Tns#R|F0(>4)~#0h+y z3Hb+Uk-@A!b3xU3XXj^36Odu&Et`3dunaN1K-iJ*>cPAcY4{N8Sz#m|7z#ot6#tJu z%B2b??ENRutjhb&@ub@sjfsL@BjM@>4t^U|HU+FYW<^r4I<&bNJ^Z`*+tJZhV+$5T z4=8V2zpWo_{o34$)3lN1V5?eHzAG-TOd;(*8+w#3*1ufRxdFjJY1LTC~d8L!BnaPcGD@klqpVbRleuVVT8gImft5hc4 z2_v7RnqgKtCL4w5iz^L0kBmEFqf*+=CAH&;Zug+%Pl_VlYEr#sNVWVMl60&2mQI7$ z_$ljIg(6lnU!p+piyU@&!L)m+D)A%hvHB_PuT_o*Lcf={_fxC# zkN)H00tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>{xtX>GilDK08jt` DKW^3- literal 0 HcmV?d00001