From 34e33f4aa655953cb91fffce3b3650ade73720e2 Mon Sep 17 00:00:00 2001 From: Governikus Date: Thu, 3 Jan 2019 15:06:22 +0100 Subject: [PATCH] Add revision: v1.16.0 --- .clang-tidy | 18 + CMakeGraphVizOptions.cmake | 12 + CMakeLists.txt | 27 +- LICENSE.officially.txt | 216 +- LICENSE.txt | 216 +- README.rst | 11 +- Releasing.rst | 4 +- appveyor.yml | 26 +- cmake/CTestCustom.cmake.in | 11 + cmake/CompilerFlags.cmake | 28 +- cmake/Helper.cmake | 18 +- cmake/Install.cmake | 148 +- cmake/Libraries.cmake | 27 +- cmake/Messages.cmake | 11 - cmake/Packaging.cmake | 95 +- cmake/Tools.cmake | 103 +- cmake/android.toolchain.cmake | 37 +- cmake/cmd.cmake | 15 + docs/CMakeLists.txt | 2 + docs/installation/README.de.rst | 147 + docs/installation/README.en.rst | 136 + docs/installation/conf.py.in | 170 + docs/installation/index.rst | 13 + docs/releasenotes/1.16.0.rst | 70 + docs/releasenotes/announce.rst | 10 +- docs/releasenotes/appcast.rst | 5 +- docs/releasenotes/issues.rst | 16 + docs/releasenotes/singlehtml.conf.py.in | 2 +- docs/releasenotes/support.rst | 22 +- docs/releasenotes/versions.rst | 8 + docs/sdk/android.rst | 295 +- docs/sdk/commands.rst | 22 +- docs/sdk/desktop.rst | 104 + docs/sdk/index.rst | 5 +- docs/sdk/intro.rst | 4 +- docs/sdk/messages.rst | 14 +- docs/sdk/workflow.rst | 12 +- libs/CMakeLists.txt | 199 +- libs/README.rst | 115 +- patches/openssl-DSA-mod-inverse-fix.patch | 78 + patches/openssl-Ignore-disabled-ciphers.patch | 30 + ...on-ensure-BN_mod_inverse-and-BN_mod_.patch | 31 - ...ly-large-primes-in-DH-key-generation.patch | 42 - ...-use-a-better-method-to-identify-gcc.patch | 75 - ...lity-in-DSA-signature-generation-CVE.patch | 109 + ...lity-in-ECDSA-signature-generation-C.patch | 44 + patches/openssl-android-shlib_variant.patch | 11 + patches/openssl-fix-no-engine-build.patch | 75 - patches/openssl_iOS.patch | 12 - patches/openssl_rsa_psk.patch | 917 ---- ...dd-IsoDep-to-the-techList-on-Android.patch | 4 +- ...qt-Add-work-around-for-freebsd-build.patch | 27 + patches/qt-Android-Fix-crash.patch | 30 + .../qt-Android-fix-compile-with-NDK-r18.patch | 37 + ...id-using-deprecated-APIs-on-iOS-10.0.patch | 73 - ...ge-build-configuration-for-Qt-on-iOS.patch | 32 - patches/qt-Disable-unused-imageformats.patch | 8 +- .../qt-Enable-debug-output-for-OpenSSL.patch | 42 +- ...rror-to-fix-QMetaObject-invokeMethod.patch | 262 ++ ...de-signature-algorithms-configurable.patch | 261 -- ...tFontEngine-Fix-build-with-Xcode-9.3.patch | 35 - ...gnalConnected-when-signals-have-been.patch | 185 + ...-Support-IPv6-addresses-with-zone-id.patch | 108 + .../qt-Register-additional-meta-types.patch | 123 - ...Labs-specific-plugins-from-the-build.patch | 52 + ...oString-when-forming-the-Host-header.patch | 55 + ...r-provided-session-data-if-available.patch | 33 + ...igure-detect-fxc.exe-more-thoroughly.patch | 132 + ...qt-configure-refactor-directx-checks.patch | 442 ++ patches/qt-disable-designer.patch | 36 + patches/qt-fix-macOS-no-printer.patch | 19 + ...x-garbled-text-under-some-conditions.patch | 90 - resources/CMakeLists.txt | 13 +- resources/asan_blacklist | 6 +- resources/ausweisapp.qrc | 18 +- resources/ausweisapp_desktop.qrc | 25 +- resources/ausweisapp_mobile.qrc | 136 +- resources/config.json.in | 90 +- resources/html_templates/alreadyactive.html | 2 +- resources/html_templates/error.html | 2 +- resources/images/AusweisApp_2_Logo.svg | 224 - ...tentApp2_2014.png => Logo_AusweisApp2.png} | Bin ...utentApp2_2014.png => Logo_Governikus.png} | Bin .../images/android/android_arrow_back.svg | 6 - .../android/android_arrow_back_white.svg | 6 - .../android_nav_button_icon_history.svg | 64 - .../android_nav_button_icon_identify.svg | 63 - .../android_nav_button_icon_provider.svg | 64 - .../android_nav_button_icon_settings.svg | 64 - .../images/android/android_toggle_off.png | Bin 2702 -> 0 bytes .../android/android_toggle_off_disabled.png | Bin 2670 -> 0 bytes .../images/android/android_toggle_on.png | Bin 2692 -> 0 bytes .../android/android_toggle_on_disabled.png | Bin 2722 -> 0 bytes resources/images/android/arrowLeft.svg | 10 - resources/images/android/arrowLeftWhite.svg | 10 - resources/images/android/arrowRightWhite.svg | 10 - resources/images/android/checkbox_0.svg | 11 - resources/images/android/checkbox_1.svg | 10 - resources/images/android/hdpi/npa.png | Bin 2214 -> 9602 bytes resources/images/android/hdpi/npa_beta.png | Bin 2829 -> 14831 bytes resources/images/android/hdpi/npa_preview.png | Bin 2833 -> 14806 bytes resources/images/android/ldpi/npa.png | Bin 1533 -> 4420 bytes resources/images/android/ldpi/npa_beta.png | Bin 1682 -> 5689 bytes resources/images/android/ldpi/npa_preview.png | Bin 1683 -> 5677 bytes resources/images/android/mdpi/npa.png | Bin 1762 -> 6234 bytes resources/images/android/mdpi/npa_beta.png | Bin 2023 -> 8467 bytes resources/images/android/mdpi/npa_preview.png | Bin 2052 -> 8509 bytes .../images/android/navigation/teilen.svg | 10 - .../images/android/navigation/tutorial.svg | 9 + .../navigation/versionsinformation.svg | 8 - resources/images/android/tabDivider.svg | 6 - resources/images/android/xhdpi/npa.png | Bin 2680 -> 13106 bytes resources/images/android/xhdpi/npa_beta.png | Bin 3605 -> 22172 bytes .../images/android/xhdpi/npa_preview.png | Bin 3637 -> 21895 bytes resources/images/android/xxhdpi/npa.png | Bin 3523 -> 20405 bytes resources/images/android/xxhdpi/npa_beta.png | Bin 5277 -> 37219 bytes .../images/android/xxhdpi/npa_preview.png | Bin 5216 -> 36960 bytes resources/images/android/xxxhdpi/npa.png | Bin 4580 -> 28198 bytes resources/images/android/xxxhdpi/npa_beta.png | Bin 7039 -> 53277 bytes .../images/android/xxxhdpi/npa_preview.png | Bin 6927 -> 52529 bytes resources/images/{android => }/arrowRight.svg | 0 resources/images/back-chevron.png | Bin 3347 -> 0 bytes resources/images/bspd1.svg | 32 - .../{android/search_cancel.svg => cancel.svg} | 0 resources/images/delete.png | Bin 281 -> 0 bytes .../background.png} | Bin resources/images/desktop/continue_arrow.svg | 8 + resources/images/desktop/help_icon.svg | 6 + resources/images/desktop/main_history.svg | 9 + resources/images/desktop/main_identify.svg | 9 + resources/images/desktop/main_pin.svg | 9 + resources/images/desktop/main_provider.svg | 10 + resources/images/desktop/sandglass.svg | 17 + resources/images/desktop/settings_icon.svg | 80 + resources/images/desktop/titlebar_arrow.svg | 8 + resources/images/green_check_mark.svg | 4 - resources/images/gruener_Haken.svg | 7 - .../AppIcon.appiconset/icon1024.png | Bin 166814 -> 23869 bytes .../AppIcon.appiconset/icon20.png | Bin 1841 -> 926 bytes .../AppIcon.appiconset/icon20@2x.png | Bin 3858 -> 1727 bytes .../AppIcon.appiconset/icon20@3x.png | Bin 6035 -> 2280 bytes .../AppIcon.appiconset/icon60@2x.png | Bin 3087 -> 3597 bytes .../AppIcon.appiconset/icon60@3x.png | Bin 4150 -> 4876 bytes .../AppIcon.appiconset/icon76.png | Bin 2271 -> 2609 bytes .../AppIcon.appiconset/icon76@2x.png | Bin 3738 -> 4348 bytes .../AppIcon.appiconset/icon83.5@2x.png | Bin 4019 -> 4617 bytes .../AppIcon.appiconset/iconSmall.png | Bin 1312 -> 1422 bytes .../AppIcon.appiconset/iconSmall40.png | Bin 1595 -> 1726 bytes .../AppIcon.appiconset/iconSmall40@2x.png | Bin 2367 -> 2686 bytes .../AppIcon.appiconset/iconSmall40@3x.png | Bin 3087 -> 3597 bytes .../AppIcon.appiconset/iconSmall@2x.png | Bin 1972 -> 2224 bytes .../AppIcon.appiconset/iconSmall@3x.png | Bin 2494 -> 2857 bytes .../AppIcon.appiconset/icon1024.png | Bin 374256 -> 42717 bytes .../AppIcon.appiconset/icon20.png | Bin 2283 -> 1153 bytes .../AppIcon.appiconset/icon20@2x.png | Bin 5776 -> 1930 bytes .../AppIcon.appiconset/icon20@3x.png | Bin 10140 -> 2646 bytes .../AppIcon.appiconset/icon60@2x.png | Bin 4370 -> 5080 bytes .../AppIcon.appiconset/icon60@3x.png | Bin 6428 -> 7555 bytes .../AppIcon.appiconset/icon76.png | Bin 2962 -> 3304 bytes .../AppIcon.appiconset/icon76@2x.png | Bin 5592 -> 6429 bytes .../AppIcon.appiconset/icon83.5@2x.png | Bin 6079 -> 6884 bytes .../AppIcon.appiconset/iconSmall.png | Bin 1470 -> 1523 bytes .../AppIcon.appiconset/iconSmall40.png | Bin 1767 -> 1930 bytes .../AppIcon.appiconset/iconSmall40@2x.png | Bin 3052 -> 3420 bytes .../AppIcon.appiconset/iconSmall40@3x.png | Bin 4370 -> 5080 bytes .../AppIcon.appiconset/iconSmall@2x.png | Bin 2375 -> 2577 bytes .../AppIcon.appiconset/iconSmall@3x.png | Bin 3297 -> 3670 bytes resources/images/iOS/arrowLeft.svg | 8 - resources/images/iOS/arrowRight.svg | 8 - .../iOS/launchImages/Default-568h@2x.png | Bin 8608 -> 8608 bytes resources/images/iOS/list_item_arrow.svg | 6 - resources/images/iOS/more/icon_mehr_log.svg | 18 + .../images/iOS/more/icon_mehr_tutorial.svg | 15 + .../images/iOS/radio_button_check_ios.svg | 12 - resources/images/iOS/toggle_disabled.png | Bin 2153 -> 0 bytes resources/images/iOS/toggle_off.png | Bin 3498 -> 0 bytes resources/images/iOS/toggle_on.png | Bin 3312 -> 0 bytes resources/images/icon_pair.svg | 15 + resources/images/icon_settings.svg | 23 + resources/images/padlock.svg | 6 - resources/images/padlock_empty.svg | 2 - .../images/reader/default_more_reader.png | Bin 85970 -> 60479 bytes resources/images/reader/default_reader.png | Bin 85970 -> 60479 bytes .../images/reader/src/img_Personalausweis.png | Bin 1747618 -> 584984 bytes .../images/reader/src/img_Remote_Display.png | Bin 167139 -> 62318 bytes resources/images/rotes_X.svg | 7 - .../{android/search_icon.svg => search.svg} | 0 resources/images/share.svg | 10 + resources/images/status_error.svg | 5 + resources/images/status_info.svg | 5 + resources/images/status_ok.svg | 5 + resources/images/submit.png | Bin 207 -> 0 bytes resources/images/trash_icon.svg | 3 +- resources/images/trash_icon_all.svg | 15 + resources/images/trash_icon_white.svg | 7 + resources/images/tutorial/arrow_blue.svg | 17 + resources/images/tutorial/arrows.svg | 36 + resources/images/tutorial/bluetooth.svg | 23 + resources/images/tutorial/button_de.png | Bin 0 -> 14056 bytes resources/images/tutorial/button_en.png | Bin 0 -> 14308 bytes resources/images/tutorial/bva.svg | 18 + resources/images/tutorial/check.svg | 21 + resources/images/tutorial/circle-1.svg | 7 + resources/images/tutorial/circle-2.svg | 7 + resources/images/tutorial/circle-3.svg | 7 + resources/images/tutorial/circle-4.svg | 7 + resources/images/tutorial/circle-lock-2.svg | 10 + resources/images/tutorial/circle-lock.svg | 10 + resources/images/tutorial/click.svg | 31 + resources/images/tutorial/desktop.svg | 21 + .../images/tutorial/generated/how_desktop.svg | 33 + .../tutorial/generated/how_device_lineup.svg | 9 + .../tutorial/generated/how_form_no_fun.svg | 5 + .../tutorial/generated/how_idcard_cycle.svg | 6 + .../generated/how_method_bluetooth.svg | 11 + .../tutorial/generated/how_method_nfc.svg | 7 + .../generated/how_method_sac_desktop.svg | 10 + .../generated/how_method_sac_mobile.svg | 14 + .../generated/how_questions_everywhere.svg | 13 + .../tutorial/generated/important_lets_go.svg | 8 + .../tutorial/generated/important_pin5.svg | 7 + .../tutorial/generated/important_pin6.svg | 10 + .../important_space_questionmark.svg | 5 + .../reader_bluetooth_card_inserted.svg | 5 + .../generated/reader_bluetooth_connection.svg | 16 + .../generated/reader_nfc_finished.svg | 5 + .../reader_nfc_npa_on_smartphone.svg | 5 + .../tutorial/generated/reader_nfc_pin6.svg | 4 + .../reader_nfc_provider_on_smartphone.svg | 6 + .../reader_nfc_smartphone_nfc_position.svg | 24 + .../reader_nfc_userdata_example_de.svg | 21 + .../reader_nfc_userdata_example_en.svg | 21 + .../tutorial/generated/reader_sac_aa2_ok.svg | 6 + .../tutorial/generated/reader_sac_menu_de.svg | 6 + .../tutorial/generated/reader_sac_menu_en.svg | 6 + .../generated/reader_sac_no_nfc_devices.svg | 9 + .../generated/reader_sac_no_nfc_provider.svg | 9 + .../generated/reader_sac_npa_on_laptop.svg | 5 + .../reader_sac_provider_on_laptop.svg | 6 + .../generated/where_identify_now_de.svg | 6 + .../generated/where_identify_now_en.svg | 6 + .../tutorial/generated/where_lay_down_id.svg | 5 + .../generated/where_overview_question.svg | 9 + .../images/tutorial/generated/where_pin6.svg | 7 + .../where_providerlist_screenshot_de.svg | 12 + .../where_providerlist_screenshot_en.svg | 12 + .../generated/where_userdata_example_de.svg | 22 + .../generated/where_userdata_example_en.svg | 22 + resources/images/tutorial/hand.svg | 16 + resources/images/tutorial/hint.svg | 18 + resources/images/tutorial/idcard.svg | 7 + resources/images/tutorial/identify.svg | 24 + resources/images/tutorial/laptop.svg | 17 + resources/images/tutorial/letters.svg | 23 + .../images/tutorial/main_menu_how_caret.svg | 7 + .../tutorial/main_menu_important_caret.svg | 6 + .../images/tutorial/main_menu_what_caret.svg | 7 + .../images/tutorial/main_menu_where_caret.svg | 7 + resources/images/tutorial/nfc.svg | 6 + resources/images/tutorial/no-nfc.svg | 8 + resources/images/tutorial/phone-screen.svg | 16 + resources/images/tutorial/phone.svg | 9 + resources/images/tutorial/phone_list.svg | 16 + resources/images/tutorial/phone_screen_de.jpg | Bin 0 -> 189796 bytes resources/images/tutorial/phone_screen_en.jpg | Bin 0 -> 65776 bytes resources/images/tutorial/pin-5@2x.png | Bin 0 -> 26366 bytes resources/images/tutorial/pin-6@2x.png | Bin 0 -> 23936 bytes resources/images/tutorial/play_movie.png | Bin 0 -> 16411 bytes resources/images/tutorial/provider_home.svg | 10 + resources/images/tutorial/providericons.png | Bin 0 -> 16314 bytes resources/images/tutorial/questionmark.svg | 23 + resources/images/tutorial/reader.svg | 19 + resources/images/tutorial/rectangles.svg | 11 + resources/images/tutorial/save.svg | 19 + .../images/tutorial/screenshot_cert_de.png | Bin 0 -> 46612 bytes .../images/tutorial/screenshot_cert_en.png | Bin 0 -> 43715 bytes .../tutorial/screenshot_choose_reader_de.png | Bin 0 -> 171715 bytes .../tutorial/screenshot_choose_reader_en.png | Bin 0 -> 155635 bytes .../screenshot_menu_providerlist_de.png | Bin 0 -> 25757 bytes .../screenshot_menu_providerlist_en.png | Bin 0 -> 25720 bytes .../images/tutorial/screenshot_pairing_de.png | Bin 0 -> 26734 bytes .../images/tutorial/screenshot_pairing_en.png | Bin 0 -> 24516 bytes .../screenshot_pin_management_menu_de.png | Bin 0 -> 32303 bytes .../screenshot_pin_management_menu_en.png | Bin 0 -> 29547 bytes .../tutorial/screenshot_providerlist_de.png | Bin 0 -> 33194 bytes .../tutorial/screenshot_providerlist_en.png | Bin 0 -> 32390 bytes .../tutorial/screenshot_sac_menu_de.png | Bin 0 -> 146682 bytes .../tutorial/screenshot_sac_menu_en.png | Bin 0 -> 146400 bytes .../images/tutorial/section_seperator_how.svg | 11 + .../tutorial/section_seperator_important.svg | 11 + .../tutorial/section_seperator_what.svg | 11 + .../tutorial/section_seperator_where.svg | 11 + resources/images/tutorial/src/how_desktop.svg | 33 + .../images/tutorial/src/how_device_lineup.svg | 9 + .../images/tutorial/src/how_form_no_fun.svg | 5 + .../images/tutorial/src/how_idcard_cycle.svg | 6 + .../tutorial/src/how_method_bluetooth.svg | 11 + .../images/tutorial/src/how_method_nfc.svg | 7 + .../tutorial/src/how_method_sac_desktop.svg | 10 + .../tutorial/src/how_method_sac_mobile.svg | 14 + .../tutorial/src/how_questions_everywhere.svg | 13 + .../images/tutorial/src/important_lets_go.svg | 8 + .../images/tutorial/src/important_pin5.svg | 7 + .../images/tutorial/src/important_pin6.svg | 10 + .../src/important_space_questionmark.svg | 5 + .../src/reader_bluetooth_card_inserted.svg | 5 + .../src/reader_bluetooth_connection.svg | 16 + .../tutorial/src/reader_nfc_finished.svg | 5 + .../src/reader_nfc_npa_on_smartphone.svg | 5 + .../images/tutorial/src/reader_nfc_pin6.svg | 4 + .../src/reader_nfc_provider_on_smartphone.svg | 6 + .../reader_nfc_smartphone_nfc_position.svg | 24 + .../src/reader_nfc_userdata_example_de.svg | 21 + .../src/reader_nfc_userdata_example_en.svg | 21 + .../images/tutorial/src/reader_sac_aa2_ok.svg | 6 + .../tutorial/src/reader_sac_menu_de.svg | 6 + .../tutorial/src/reader_sac_menu_en.svg | 6 + .../src/reader_sac_no_nfc_devices.svg | 9 + .../src/reader_sac_no_nfc_provider.svg | 9 + .../tutorial/src/reader_sac_npa_on_laptop.svg | 5 + .../src/reader_sac_provider_on_laptop.svg | 6 + .../tutorial/src/where_identify_now_de.svg | 6 + .../tutorial/src/where_identify_now_en.svg | 6 + .../images/tutorial/src/where_lay_down_id.svg | 5 + .../tutorial/src/where_overview_question.svg | 9 + resources/images/tutorial/src/where_pin6.svg | 7 + .../src/where_providerlist_screenshot_de.svg | 12 + .../src/where_providerlist_screenshot_en.svg | 12 + .../src/where_userdata_example_de.svg | 22 + .../src/where_userdata_example_en.svg | 22 + resources/images/tutorial/tablet-nfc.svg | 8 + resources/images/tutorial/tablet-no-nfc.svg | 10 + resources/images/tutorial/tablet.svg | 8 + resources/images/tutorial/thumb_up.svg | 36 + resources/images/tutorial/up_icon.svg | 19 + resources/images/tutorial/usb.svg | 4 + resources/images/tutorial/user-tine@3x.png | Bin 0 -> 40734 bytes resources/images/tutorial/wifi.svg | 15 + resources/images/tutorial/zoom_triangle.svg | 7 + resources/jenkins/changelog.sh | 29 - resources/jenkins/changelog.xsl | 25 - resources/jenkins/docker/arch/Dockerfile | 3 +- resources/jenkins/docker/generate.sh | 4 +- .../jenkins/dsl/Builds/Build_Android.groovy | 62 +- .../jenkins/dsl/Builds/Build_Docs.groovy | 2 + .../jenkins/dsl/Builds/Build_FreeBSD.groovy | 4 +- .../jenkins/dsl/Builds/Build_Linux.groovy | 4 +- .../jenkins/dsl/Builds/Build_MacOS.groovy | 4 +- .../jenkins/dsl/Builds/Build_MacOS_DMG.groovy | 4 +- .../dsl/Builds/Build_Translation.groovy | 2 +- .../jenkins/dsl/Builds/Build_Win32_GNU.groovy | 6 +- .../dsl/Builds/Build_Win32_GNU_MSI.groovy | 9 +- .../dsl/Builds/Build_Win32_GNU_MSI_dev.groovy | 6 +- .../dsl/Builds/Build_Win32_MSVC.groovy | 4 +- .../dsl/Builds/Build_Win32_MSVC_MSI.groovy | 4 +- .../jenkins/dsl/Builds/Build_iOS_IPA.groovy | 2 +- .../jenkins/dsl/Libraries/Libs_Android.groovy | 2 +- .../dsl/Libraries/Libs_Win32_GNU.groovy | 12 +- .../dsl/Libraries/Libs_Win32_GNU_dev.groovy | 12 +- .../dsl/Releases/Release_Android.groovy | 66 +- .../jenkins/dsl/Releases/Release_Docs.groovy | 2 + .../jenkins/dsl/Releases/Release_MacOS.groovy | 4 +- .../dsl/Releases/Release_Win32_GNU.groovy | 16 +- .../jenkins/dsl/Releases/Release_iOS.groovy | 2 +- .../jenkins/dsl/Reviews/Review_Android.groovy | 65 +- .../jenkins/dsl/Reviews/Review_Docs.groovy | 2 + .../jenkins/dsl/Reviews/Review_FreeBSD.groovy | 6 +- .../dsl/Reviews/Review_Libs_Win32_GNU.groovy | 12 +- .../jenkins/dsl/Reviews/Review_Linux.groovy | 6 +- .../jenkins/dsl/Reviews/Review_MacOS.groovy | 7 +- .../dsl/Reviews/Review_MacOS_DMG.groovy | 4 +- .../jenkins/dsl/Reviews/Review_Trigger.groovy | 8 +- .../dsl/Reviews/Review_Win32_GNU.groovy | 8 +- .../dsl/Reviews/Review_Win32_GNU_MSI.groovy | 9 +- .../dsl/Reviews/Review_Win32_MSVC.groovy | 6 +- .../dsl/Reviews/Review_Win32_MSVC_MSI.groovy | 4 +- .../jenkins/dsl/Reviews/Review_iOS_IPA.groovy | 2 +- resources/jenkins/dsl/common/Build.groovy | 44 +- resources/jenkins/dsl/common/Constants.groovy | 4 +- resources/jenkins/dsl/common/Library.groovy | 3 +- resources/jenkins/dsl/common/Release.groovy | 1 - resources/jenkins/dsl/common/Review.groovy | 2 +- .../android/AndroidManifest.xml.aar.in | 73 + .../android/AndroidManifest.xml.apk.in | 176 + .../packaging/android/AndroidManifest.xml.in | 169 - .../packaging/android/build.gradle.append | 17 + resources/packaging/android/fileprovider.xml | 4 + ...AusweisApp2.so-deployment-settings.json.in | 3 +- resources/packaging/android/pom.xml.in | 16 + .../packaging/linux/AusweisApp2.desktop.in | 3 +- resources/packaging/macos/Info.plist | 11 +- .../macos/autostart_helper/Info.plist | 34 + .../packaging/macos/start-ausweisapp2.sh | 20 - resources/packaging/win/WIX.Texts.de-DE.wxl | 6 + resources/packaging/win/WIX.template.in | 122 +- resources/packaging/win/install_settings.wxs | 88 + resources/packaging/win/runtime_settings.wxs | 76 + resources/qml/+android/ContentArea.qml | 75 - resources/qml/+desktop/main.qml | 139 + resources/qml/+ios/ContentArea.qml | 52 - resources/qml/+mobile/main.qml | 130 + resources/qml/ContentArea.qml | 3 - resources/qml/ContentAreaLoader.qml | 28 - resources/qml/ContentAreaSelector.qml | 8 - .../+android/ChangePinViewContent.qml | 64 + .../+ios/ChangePinViewContent.qml | 64 + .../ChangePinView/ChangePinController.qml | 139 + .../ChangePinView/ChangePinView.qml | 113 + resources/qml/Governikus/ChangePinView/qmldir | 6 + .../DeveloperView/DeveloperView.qml | 186 +- resources/qml/Governikus/DeveloperView/qmldir | 1 + .../Governikus/EnterPinView/EnterPinView.qml | 102 +- .../qml/Governikus/EnterPinView/PinField.qml | 27 +- .../qml/Governikus/EnterPinView/PinPad.qml | 2 +- .../Governikus/EnterPinView/PinPadButton.qml | 4 +- resources/qml/Governikus/EnterPinView/qmldir | 5 + .../FeedbackView/+mobile/Feedback.qml | 113 + .../Governikus/FeedbackView/+mobile/Log.qml | 143 + .../+mobile/LogTitleBarControls.qml | 58 + .../+mobile/StoreFeedbackPopup.qml | 67 + .../qml/Governikus/FeedbackView/Feedback.qml | 119 - resources/qml/Governikus/FeedbackView/qmldir | 5 + .../+android/+tablet/PlatformConstants.qml | 29 - .../Governikus/Global/+android/GButton.qml | 102 - .../Governikus/Global/+android/GCheckBox.qml | 52 - .../Global/+android/LabeledText.qml | 41 - .../qml/Governikus/Global/+android/Pane.qml | 50 - .../Global/+android/PlatformConstants.qml | 29 - .../Global/+desktop/+mac/BrandConstants.qml | 6 + .../Global/+desktop/+win/BrandConstants.qml | 6 + .../Global/+desktop/ContinueButton.qml | 37 + .../Governikus/Global/+desktop/GButton.qml | 53 + .../Governikus/Global/+desktop/GCheckBox.qml | 24 + .../qml/Governikus/Global/+desktop/GText.qml | 5 + .../Governikus/Global/+desktop/GTextField.qml | 41 + .../Global/+desktop/LabeledText.qml | 32 + .../qml/Governikus/Global/+desktop/Pane.qml | 46 + .../Global/+desktop/PlatformConstants.qml | 28 + .../Governikus/Global/+ios/+tablet/Pane.qml | 50 - .../Global/+ios/+tablet/PlatformConstants.qml | 29 - .../qml/Governikus/Global/+ios/GButton.qml | 61 - .../qml/Governikus/Global/+ios/GCheckBox.qml | 38 - .../Governikus/Global/+ios/LabeledText.qml | 41 - resources/qml/Governikus/Global/+ios/Pane.qml | 47 - .../Global/+ios/PlatformConstants.qml | 29 - .../+android/+phone/DeviceConstants.qml | 7 + .../+android/+tablet/DeviceConstants.qml | 7 + .../+mobile/+android/BrandConstants.qml | 22 + .../Global/+mobile/+android/GButton.qml | 100 + .../Global/+mobile/+android/GCheckBox.qml | 30 + .../Global/+mobile/+android/LabeledText.qml | 39 + .../Global/+mobile/+android/Pane.qml | 43 + .../+mobile/+ios/+phone/DeviceConstants.qml | 9 + .../Global/+mobile/+ios/+phone/Pane.qml | 43 + .../+mobile/+ios/+tablet/DeviceConstants.qml | 9 + .../Global/+mobile/+ios/+tablet/Pane.qml | 44 + .../Global/+mobile/+ios/BrandConstants.qml | 24 + .../Global/+mobile/+ios/GButton.qml | 61 + .../Global/+mobile/+ios/GCheckBox.qml | 29 + .../Global/+mobile/+ios/LabeledText.qml | 40 + .../Global/+mobile/ConfirmationPopup.qml | 87 + .../Governikus/Global/+mobile/GComboBox.qml | 88 + .../Global/+mobile/GRadioButton.qml | 36 + .../qml/Governikus/Global/+mobile/GSwitch.qml | 89 + .../Governikus/Global/+mobile/GTextField.qml | 37 + .../Global/+mobile/LocationButton.qml | 48 + .../Global/+mobile/PlatformConstants.qml | 49 + resources/qml/Governikus/Global/Constants.qml | 55 +- resources/qml/Governikus/Global/GButton.qml | 3 - resources/qml/Governikus/Global/GCheckBox.qml | 3 - resources/qml/Governikus/Global/GSwitch.qml | 74 - .../qml/Governikus/Global/GTextField.qml | 40 - .../qml/Governikus/Global/LabeledText.qml | 3 - .../qml/Governikus/Global/LocationButton.qml | 49 - resources/qml/Governikus/Global/Pane.qml | 3 - resources/qml/Governikus/Global/PaneTitle.qml | 11 + .../Governikus/Global/PlatformConstants.qml | 3 - .../qml/Governikus/Global/SectionPage.qml | 58 - .../qml/Governikus/Global/StatusIcon.qml | 51 + resources/qml/Governikus/Global/Utils.js | 13 +- resources/qml/Governikus/Global/qmldir | 25 +- .../+android/+phone/HistoryView.qml | 61 + .../+android/+tablet/HistoryView.qml | 15 +- .../HistoryView/+android/CustomSwipeBar.qml | 55 - .../HistoryView/+android/HistoryItemImage.qml | 2 +- .../+android/HistoryListViewDelegate.qml | 2 +- .../HistoryView/+android/HistoryView.qml | 64 - .../HistoryView/+ios/+phone/HistoryView.qml | 101 + .../HistoryView/+ios/+tablet/HistoryView.qml | 70 +- .../HistoryView/+ios/CustomSwipeBar.qml | 58 - .../HistoryView/+ios/HistoryDetails.qml | 2 +- .../HistoryView/+ios/HistoryItemImage.qml | 2 +- .../+ios/HistoryListViewDelegate.qml | 136 +- .../HistoryView/+ios/HistoryView.qml | 98 - .../HistoryView/ContextMenuEntry.qml | 58 - .../Governikus/HistoryView/CustomSwipeBar.qml | 3 - .../HistoryView/HistoryContextMenu.qml | 103 - .../Governikus/HistoryView/HistoryDetails.qml | 3 - .../HistoryView/HistoryItemImage.qml | 3 - .../HistoryView/HistoryListView.qml | 221 - .../HistoryView/HistoryListViewDelegate.qml | 3 - .../HistoryListViewDelegateContent.qml | 13 +- .../Governikus/HistoryView/HistoryView.qml | 3 - .../HistoryView/HistoryViewBackground.qml | 15 - .../HistoryViewConfirmationPopup.qml | 6 +- .../HistoryView/HistoryViewDetails.qml | 5 +- .../HistoryView/HistoryViewPage.qml | 84 - .../HistoryViewTitleBarControls.qml | 45 + .../HistoryView/IosCheckBoxStyle.qml | 37 - resources/qml/Governikus/HistoryView/qmldir | 8 + .../+android/+tablet/IdentifyViewContent.qml | 159 - .../IdentifyView/+android/DataGroup.qml | 116 - .../+android/IdentifyViewContent.qml | 139 - .../+desktop/CertificateDescriptionPage.qml | 45 + .../IdentifyView/+desktop/DataGroup.qml | 103 + .../IdentifyView/+desktop/EditRights.qml | 181 + .../+desktop/IdentifyController.qml | 151 + .../IdentifyView/+desktop/IdentifyView.qml | 166 + .../+desktop/SelfAuthenticationData.qml | 73 + .../IdentifyView/+ios/+tablet/DataGroup.qml | 116 - .../+ios/+tablet/IdentifyViewContent.qml | 155 - .../IdentifyView/+ios/DataGroup.qml | 64 - .../IdentifyView/+ios/IdentifyViewContent.qml | 126 - .../+mobile/+android/+phone/EditRights.qml | 138 + .../+mobile/+android/+tablet/EditRights.qml | 158 + .../+mobile/+android/DataGroup.qml | 111 + .../+mobile/+ios/+phone/DataGroup.qml | 62 + .../+mobile/+ios/+phone/EditRights.qml | 128 + .../+mobile/+ios/+tablet/DataGroup.qml | 111 + .../+mobile/+ios/+tablet/EditRights.qml | 154 + .../+mobile/CertificateDescriptionPage.qml | 44 + .../+mobile/IdentifyController.qml | 206 + .../IdentifyView/+mobile/IdentifyView.qml | 215 + .../+mobile/SelfAuthenticationData.qml | 83 + .../CertificateDescriptionPage.qml | 54 - .../qml/Governikus/IdentifyView/DataGroup.qml | 3 - .../IdentifyView/IdentifyController.qml | 161 - .../Governikus/IdentifyView/IdentifyView.qml | 114 - .../IdentifyView/IdentifyViewContent.qml | 3 - .../IdentifyView/IdentifyViewInfo.qml | 75 - .../IdentifyView/IdentifyWorkflow.qml | 43 - .../IdentifyView/SelfAuthenticationData.qml | 87 - resources/qml/Governikus/IdentifyView/qmldir | 8 + .../InformationView/Information.qml | 30 +- .../InformationView/VersionInformation.qml | 40 + .../qml/Governikus/InformationView/qmldir | 2 + .../Governikus/MainView/+desktop/MainView.qml | 147 + .../qml/Governikus/MainView/+desktop/Tile.qml | 47 + .../Governikus/MainView/+mobile/MainView.qml | 84 + resources/qml/Governikus/MainView/qmldir | 5 + .../qml/Governikus/MoreView/MoreView.qml | 53 +- .../Governikus/MoreView/MoreViewMenuItem.qml | 5 +- resources/qml/Governikus/MoreView/qmldir | 3 + .../Navigation/+android/Navigation.qml | 54 +- .../Navigation/+android/NavigationItem.qml | 2 +- .../Navigation/+android/NavigationView.qml | 10 +- .../Governikus/Navigation/+ios/Navigation.qml | 2 +- .../Navigation/+ios/NavigationItem.qml | 2 +- .../Navigation/+ios/NavigationView.qml | 2 +- .../qml/Governikus/Navigation/Navigation.qml | 3 - .../Governikus/Navigation/NavigationItem.qml | 3 - .../Governikus/Navigation/NavigationView.qml | 3 - resources/qml/Governikus/Navigation/qmldir | 4 + .../PinView/+android/PinViewContent.qml | 63 - .../PinView/+ios/PinViewContent.qml | 63 - .../PinView/ChangePinController.qml | 108 - resources/qml/Governikus/PinView/PinView.qml | 83 - .../qml/Governikus/PinView/PinViewContent.qml | 3 - .../qml/Governikus/PinView/PinWorkflow.qml | 43 - resources/qml/Governikus/PinView/qmldir | 2 - .../ProgressView/+desktop/ProgressView.qml | 95 + .../ProgressView/+mobile/ProgressView.qml | 95 + .../Governikus/ProgressView/ProgressView.qml | 91 - resources/qml/Governikus/ProgressView/qmldir | 1 + .../Provider/+android/ProviderDetailView.qml | 116 - .../+android/ProviderViewDelegate.qml | 133 - .../Provider/+desktop/ProviderDetailView.qml | 22 + .../Provider/+desktop/ProviderInfoSection.qml | 25 + .../Provider/+ios/ProviderDetailView.qml | 119 - .../Provider/+ios/ProviderViewDelegate.qml | 86 - .../+mobile/+android/ProviderDetailTab.qml | 33 + .../+mobile/+android/ProviderViewDelegate.qml | 126 + .../+mobile/+ios/ProviderDetailTab.qml | 34 + .../+mobile/+ios/ProviderViewDelegate.qml | 86 + .../+mobile/+phone/ProviderDetailView.qml | 86 + .../+mobile/+tablet/ProviderContactInfo.qml | 66 + .../+tablet/ProviderContactInfoItem.qml | 42 + .../+tablet/ProviderDetailButtonBar.qml | 44 + .../+tablet/ProviderDetailDescription.qml | 26 + .../+mobile/+tablet/ProviderDetailHistory.qml | 44 + .../+tablet/ProviderDetailHistoryInfo.qml | 145 + .../+tablet/ProviderDetailHistoryItem.qml | 104 + .../+mobile/+tablet/ProviderDetailView.qml | 175 + .../Provider/+mobile/ProviderContactTab.qml | 63 + .../Provider/+mobile/ProviderHeader.qml | 177 + .../Provider/+mobile/ProviderInfoSection.qml | 40 + .../Provider/+mobile/ProviderModelItem.qml | 106 + .../ProviderContactInfoItem_tablet.qml | 42 - .../Provider/ProviderContactInfo_tablet.qml | 66 - .../Provider/ProviderContactTab.qml | 63 - .../ProviderDetailButtonBar_tablet.qml | 44 - .../ProviderDetailDescription_tablet.qml | 26 - .../ProviderDetailHistoryInfo_tablet.qml | 145 - .../ProviderDetailHistoryItem_tablet.qml | 110 - .../Provider/ProviderDetailHistory_tablet.qml | 44 - .../Provider/ProviderDetailView.qml | 3 - .../Provider/ProviderDetailView_tablet.qml | 175 - .../Governikus/Provider/ProviderHeader.qml | 173 - .../Provider/ProviderInfoSection.qml | 43 - .../Governikus/Provider/ProviderModelItem.qml | 106 - .../Provider/ProviderViewDelegate.qml | 3 - resources/qml/Governikus/Provider/qmldir | 17 +- .../+android/+tablet/ProviderView.qml | 174 - .../ProviderView/+android/ProviderView.qml | 117 - .../ProviderView/+android/SearchBar.qml | 69 - .../ProviderView/+desktop/ProviderView.qml | 51 + .../ProviderView/+desktop/SearchBar.qml | 63 + .../+ios/+tablet/ProviderView.qml | 175 - .../ProviderView/+ios/ProviderView.qml | 111 - .../ProviderView/+ios/SearchBar.qml | 150 - .../+mobile/+android/+phone/ProviderView.qml | 114 + .../+mobile/+android/+tablet/ProviderView.qml | 176 + .../+mobile/+android/SearchBar.qml | 69 + .../+mobile/+ios/+phone/ProviderView.qml | 108 + .../+mobile/+ios/+tablet/ProviderView.qml | 177 + .../ProviderView/+mobile/+ios/SearchBar.qml | 146 + .../+mobile/+phone/AdditionalResultsItem.qml | 60 + .../+mobile/+tablet/AdditionalResultsItem.qml | 71 + .../+mobile/+tablet/ProviderCard.qml | 70 + .../+mobile/+tablet/ProviderCardNameRow.qml | 48 + .../ProviderView/+mobile/CategoryCheckbox.qml | 51 + .../+mobile/DimmableTextButton.qml | 33 + .../+mobile/ProviderDelegateModel.qml | 45 + .../+mobile/ProviderSectionDelegate.qml | 69 + .../ProviderView/AdditionalResultsItem.qml | 58 - .../AdditionalResultsItem_tablet.qml | 70 - .../ProviderView/CategoryCheckbox_tablet.qml | 49 - .../ProviderView/DimmableTextButton.qml | 33 - .../ProviderCardNameRow_tablet.qml | 48 - .../ProviderView/ProviderCard_tablet.qml | 70 - .../ProviderView/ProviderContactInfoItem.qml | 3 - .../ProviderView/ProviderDelegateModel.qml | 46 - .../ProviderView/ProviderSectionDelegate.qml | 67 - .../Governikus/ProviderView/ProviderView.qml | 3 - .../qml/Governikus/ProviderView/SearchBar.qml | 3 - resources/qml/Governikus/ProviderView/qmldir | 11 + .../AvailableDevicesListDelegate.qml | 6 +- .../KnownDevicesListDelegate.qml | 9 +- .../RemoteServiceController.qml | 71 +- .../RemoteServicePairingPopup.qml | 13 +- .../RemoteServiceSettings.qml | 226 +- .../RemoteServiceView/RemoteServiceView.qml | 299 +- .../RemoteServiceViewLocal.qml | 111 + .../RemoteServiceViewRemote.qml | 143 + .../RemoteServiceViewStartStop.qml | 199 + .../RemoteServiceView/SectionSwitch.qml | 43 + .../qml/Governikus/RemoteServiceView/qmldir | 15 +- .../ResultView/+android/ResultView.qml | 59 - .../ResultView/+desktop/ResultView.qml | 52 + .../Governikus/ResultView/+ios/ResultView.qml | 47 - .../ResultView/+mobile/ResultView.qml | 93 + .../qml/Governikus/ResultView/ResultView.qml | 3 - resources/qml/Governikus/ResultView/qmldir | 1 + .../Governikus/SplashScreen/SplashScreen.qml | 5 +- resources/qml/Governikus/SplashScreen/qmldir | 1 + .../Style/+android/ProviderStyle.qml | 33 - .../Style/+desktop/ProviderStyle.qml | 7 + .../Governikus/Style/+ios/ProviderStyle.qml | 33 - .../Style/+mobile/+android/ProviderStyle.qml | 35 + .../Style/+mobile/+ios/ProviderStyle.qml | 35 + .../Style/NpaBusyIndicatorStyle.qml | 185 +- .../qml/Governikus/Style/ProviderStyle.qml | 3 - resources/qml/Governikus/Style/qmldir | 4 +- .../+android/TechnologySwitch.qml | 29 +- .../TechnologyInfo/+ios/TechnologySwitch.qml | 24 +- .../TechnologyInfo/TechnologyInfo.qml | 56 +- .../TechnologyInfo/TechnologySwitch.qml | 3 - .../TechnologyInfo/TechnologySwitchButton.qml | 20 +- .../qml/Governikus/TechnologyInfo/qmldir | 1 + .../Governikus/TitleBar/+android/TitleBar.qml | 130 - .../TitleBar/+desktop/CancelAction.qml | 53 + .../Governikus/TitleBar/+desktop/TitleBar.qml | 123 + .../TitleBar/+desktop/TitleBarAction.qml | 65 + .../TitleBar/+desktop/TitleBarButton.qml | 22 + .../TitleBar/+desktop/TitleBarText.qml | 9 + .../qml/Governikus/TitleBar/+ios/TitleBar.qml | 113 - .../TitleBar/+mobile/+android/Hamburger.qml | 127 + .../TitleBar/+mobile/+android/TitleBar.qml | 131 + .../TitleBar/+mobile/+ios/TitleBar.qml | 113 + .../TitleBar/+mobile/TitleBarAction.qml | 24 + .../TitleBar/+mobile/TitleBarText.qml | 12 + .../qml/Governikus/TitleBar/Hamburger.qml | 170 - .../qml/Governikus/TitleBar/TitleBar.qml | 3 - .../Governikus/TitleBar/TitleBarAction.qml | 24 - .../qml/Governikus/TitleBar/TitleBarText.qml | 12 - resources/qml/Governikus/TitleBar/qmldir | 8 +- .../+mobile/TutorialCollapseAnimation.qml | 23 + .../TutorialView/+mobile/TutorialContent.qml | 24 + .../+mobile/TutorialExpandAnimation.qml | 33 + .../TutorialView/+mobile/TutorialFooter.qml | 101 + .../TutorialView/+mobile/TutorialHeader.qml | 42 + .../TutorialView/+mobile/TutorialHow.qml | 620 +++ .../TutorialView/+mobile/TutorialImage.qml | 14 + .../+mobile/TutorialImportant.qml | 314 ++ .../+mobile/TutorialReaderMethodBluetooth.qml | 507 +++ .../+mobile/TutorialReaderMethodFooter.qml | 13 + .../+mobile/TutorialReaderMethodNfc.qml | 435 ++ .../TutorialReaderMethodSacDesktop.qml | 751 ++++ .../+mobile/TutorialReaderMethodSacMobile.qml | 792 ++++ .../+mobile/TutorialSeperator.qml | 17 + .../TutorialView/+mobile/TutorialSpacer.qml | 19 + .../TutorialView/+mobile/TutorialView.qml | 298 ++ .../TutorialView/+mobile/TutorialWhat.qml | 473 +++ .../TutorialView/+mobile/TutorialWhere.qml | 241 ++ resources/qml/Governikus/TutorialView/qmldir | 20 + .../VersionInformation.qml | 41 - .../Governikus/VersionInformationView/qmldir | 2 - .../Governikus/View/+desktop/FocusFrame.qml | 21 + .../Governikus/View/+desktop/SectionPage.qml | 20 + .../View/+mobile/+android/ContentArea.qml | 86 + .../View/+mobile/+ios/ContentArea.qml | 52 + .../View/+mobile/ContentAreaLoader.qml | 28 + .../Governikus/View/+mobile/SectionPage.qml | 54 + .../Governikus/View/+mobile/TabBarView.qml | 158 + resources/qml/Governikus/View/qmldir | 7 + .../+mobile/WhiteListSurveyView.qml | 154 + .../WhiteListClient/BulletPointDelegate.qml | 31 + .../qml/Governikus/WhiteListClient/qmldir | 5 + .../Workflow/+desktop/ProgressCircle.qml | 92 + .../Workflow/+desktop/TextCircle.qml | 23 + .../Workflow/+mobile/BluetoothWorkflow.qml | 91 + .../Workflow/+mobile/BusyImageIndicator.qml | 27 + .../Workflow/+mobile/CardReader.qml | 213 + .../Workflow/+mobile/GeneralWorkflow.qml | 54 + .../Workflow/+mobile/NfcProgressIndicator.qml | 92 + .../Workflow/+mobile/NfcWorkflow.qml | 70 + .../Workflow/+mobile/ProgressCircle.qml | 99 + .../Workflow/+mobile/ProgressIndicator.qml | 65 + .../Workflow/+mobile/RemoteWorkflow.qml | 121 + .../Workflow/+mobile/TextCircle.qml | 67 + .../Governikus/Workflow/+mobile/Workflow.qml | 10 + .../Governikus/Workflow/BluetoothWorkflow.qml | 91 - .../Workflow/BusyImageIndicator.qml | 28 - .../qml/Governikus/Workflow/CardReader.qml | 213 - .../Workflow/NfcProgressIndicator.qml | 92 - .../qml/Governikus/Workflow/NfcWorkflow.qml | 57 - .../Governikus/Workflow/ProgressCircle.qml | 100 - .../Governikus/Workflow/ProgressIndicator.qml | 65 - .../Governikus/Workflow/RemoteWorkflow.qml | 117 - .../qml/Governikus/Workflow/TextCircle.qml | 68 - resources/qml/Governikus/Workflow/qmldir | 16 +- resources/qml/TabBarView.qml | 77 - resources/qml/main.qml | 124 +- .../AusweisApp2/Global/Category.js | 86 - .../AusweisApp2/Global/CheckBox.qml | 12 - .../AusweisApp2/Global/Constants.qml | 49 - .../AusweisApp2/Global/Pane.qml | 50 - .../AusweisApp2/Global/PlatformConstants.qml | 37 - .../AusweisApp2/Global/ProviderModelItem.qml | 92 - .../AusweisApp2/Global/Utils.js | 57 - .../qml_stationary/AusweisApp2/Global/qmldir | 8 - .../AusweisApp2/Views/History/HistoryView.qml | 181 - .../Views/History/ListViewDelegate.qml | 55 - .../Views/History/ListViewDelegateContent.qml | 54 - .../AusweisApp2/Views/History/qmldir | 2 - .../Views/Provider/AdditionalResultsItem.qml | 46 - .../Views/Provider/CategoryCheckbox.qml | 52 - .../Views/Provider/ProviderCard.qml | 55 - .../Views/Provider/ProviderCardInfoItem.qml | 40 - .../Views/Provider/ProviderView.qml | 166 - .../AusweisApp2/Views/Provider/qmldir | 2 - .../ProviderDetails/ProviderContactInfo.qml | 52 - .../ProviderContactInfoItem.qml | 45 - .../ProviderDetailButtonBar.qml | 47 - .../ProviderDetailDescription.qml | 30 - .../ProviderDetails/ProviderDetailView.qml | 140 - .../ProviderDetails/ProviderDetailsDialog.qml | 31 - .../AusweisApp2/Views/ProviderDetails/qmldir | 7 - .../qml_stationary/HistoryWidgetQmlPlugin.qml | 3 - .../ProviderWidgetQmlPlugin.qml | 4 - resources/sonar-project.properties.in | 17 + resources/statemachine.sh.in | 14 +- resources/translations/ausweisapp2_de.ts | 3765 +++++++++-------- ...png => img_Cherry_ST_1275_mit_ausweis.png} | Bin ...ikey_5421.png => img_HID_Omnikey_542x.png} | Bin ...g => img_HID_Omnikey_542x_mit_ausweis.png} | Bin ...=> img_Signotec_Omega_Pad_mit_ausweis.png} | Bin .../updatable-files/supported-providers.json | 16 +- .../updatable-files/supported-readers.json | 108 +- src/CMakeLists.txt | 98 +- src/CommandLineParser.cpp | 115 +- src/CommandLineParser.h | 8 +- src/activation/CMakeLists.txt | 21 +- src/activation/base/ActivationContext.cpp | 5 - src/activation/base/ActivationContext.h | 9 +- src/activation/base/ActivationHandler.cpp | 10 - src/activation/base/ActivationHandler.h | 19 +- src/activation/base/CMakeLists.txt | 2 +- src/activation/customscheme/CMakeLists.txt | 6 +- .../CustomSchemeActivationContext.cpp | 2 +- .../CustomSchemeActivationContext.h | 4 +- .../CustomSchemeActivationHandler.cpp | 11 +- .../CustomSchemeActivationHandler.h | 6 +- src/activation/intent/AusweisApp2Service.java | 6 - src/activation/intent/CMakeLists.txt | 6 +- .../intent/IntentActivationContext.cpp | 2 +- .../intent/IntentActivationContext.h | 6 +- .../intent/IntentActivationHandler.cpp | 2 +- .../intent/IntentActivationHandler.h | 2 +- src/activation/intent/MainActivity.java | 13 +- src/activation/internal/CMakeLists.txt | 8 + .../internal/InternalActivationContext.cpp | 7 +- .../internal/InternalActivationContext.h | 6 +- .../internal/InternalActivationHandler.h | 2 +- src/activation/webservice/CMakeLists.txt | 4 + src/activation/webservice/Template.h | 2 +- .../WebserviceActivationContext.cpp | 25 +- .../webservice/WebserviceActivationContext.h | 9 +- .../WebserviceActivationHandler.cpp | 13 +- .../webservice/WebserviceActivationHandler.h | 3 +- src/aidl/AidlBinder.java | 163 - src/aidl/CMakeLists.txt | 4 - src/aidl/PskManager.h | 29 - src/aidl/UIPlugInAidl.cpp | 211 - src/aidl/UIPlugInAidl.h | 51 - src/autostart_helper/main.mm | 55 + src/card/CMakeLists.txt | 14 +- src/card/base/Apdu.cpp | 345 -- src/card/base/Apdu.h | 119 +- src/card/base/Card.cpp | 7 +- src/card/base/Card.h | 11 +- src/card/base/CardConnection.cpp | 29 +- src/card/base/CardConnection.h | 50 +- src/card/base/CardConnectionWorker.cpp | 26 +- src/card/base/CardConnectionWorker.h | 15 +- src/card/base/CardInfo.cpp | 7 +- src/card/base/CardInfo.h | 6 +- src/card/base/CardOperationResult.h | 2 +- src/card/base/CommandApdu.cpp | 194 + src/card/base/CommandApdu.h | 44 + src/card/base/Commands.cpp | 34 +- src/card/base/Commands.h | 14 +- src/card/base/DestroyPACEChannel.cpp | 28 - src/card/base/DestroyPACEChannel.h | 33 - src/card/base/DestroyPaceChannel.cpp | 28 + src/card/base/DestroyPaceChannel.h | 32 + src/card/base/EstablishPACEChannel.cpp | 544 --- src/card/base/EstablishPACEChannel.h | 145 - src/card/base/EstablishPACEChannelParser.cpp | 121 - src/card/base/EstablishPACEChannelParser.h | 38 - src/card/base/EstablishPaceChannel.cpp | 158 + src/card/base/EstablishPaceChannel.h | 69 + src/card/base/EstablishPaceChannelOutput.cpp | 429 ++ src/card/base/EstablishPaceChannelOutput.h | 94 + src/card/base/EstablishPaceChannelParser.cpp | 120 + src/card/base/EstablishPaceChannelParser.h | 38 + src/card/base/FileRef.h | 2 +- src/card/base/GeneralAuthenticateResponse.cpp | 38 +- src/card/base/GeneralAuthenticateResponse.h | 15 +- src/card/base/InputAPDUInfo.cpp | 4 +- src/card/base/InputAPDUInfo.h | 12 +- src/card/base/PersoSimWorkaround.h | 38 +- src/card/base/PinModify.h | 4 +- src/card/base/PinModifyOutput.h | 4 +- src/card/base/Reader.cpp | 47 +- src/card/base/Reader.h | 26 +- src/card/base/ReaderFilter.cpp | 4 - src/card/base/ReaderFilter.h | 3 +- src/card/base/ReaderInfo.cpp | 8 +- src/card/base/ReaderInfo.h | 12 +- src/card/base/ReaderManager.cpp | 89 +- src/card/base/ReaderManager.h | 25 +- src/card/base/ReaderManagerPlugIn.cpp | 21 +- src/card/base/ReaderManagerPlugIn.h | 25 +- src/card/base/ReaderManagerPlugInInfo.h | 3 +- src/card/base/ReaderManagerWorker.cpp | 71 +- src/card/base/ReaderManagerWorker.h | 12 +- src/card/base/RemoteClient.h | 54 - src/card/base/RemoteDispatcher.cpp | 32 - src/card/base/RemoteDispatcher.h | 45 - src/card/base/ResponseApdu.cpp | 157 + src/card/base/ResponseApdu.h | 104 + src/card/base/SecureMessagingResponse.cpp | 5 +- src/card/base/SecureMessagingResponse.h | 1 - src/card/base/SmartCardDefinitions.h | 7 +- src/card/base/asn1/ASN1TemplateUtil.cpp | 15 + src/card/base/asn1/ASN1TemplateUtil.h | 26 +- src/card/base/asn1/ASN1Util.cpp | 3 +- src/card/base/asn1/ASN1Util.h | 5 +- src/card/base/asn1/AccessRoleAndRight.cpp | 37 +- src/card/base/asn1/AccessRoleAndRight.h | 10 +- .../base/asn1/AuthenticatedAuxiliaryData.cpp | 6 +- .../base/asn1/AuthenticatedAuxiliaryData.h | 16 +- src/card/base/asn1/CVCertificate.cpp | 10 +- src/card/base/asn1/CVCertificate.h | 3 +- src/card/base/asn1/CVCertificateBody.cpp | 5 +- src/card/base/asn1/CVCertificateBody.h | 4 +- src/card/base/asn1/CVCertificateChain.h | 2 +- .../base/asn1/CVCertificateChainBuilder.cpp | 3 +- .../base/asn1/CVCertificateChainBuilder.h | 9 +- src/card/base/asn1/CertificateDescription.cpp | 5 +- src/card/base/asn1/CertificateDescription.h | 5 +- src/card/base/asn1/ChainBuilder.h | 6 +- src/card/base/asn1/Chat.cpp | 1 - src/card/base/asn1/Chat.h | 2 +- src/card/base/asn1/ChipAuthenticationInfo.cpp | 1 - src/card/base/asn1/ChipAuthenticationInfo.h | 8 +- src/card/base/asn1/EFCardSecurity.cpp | 16 +- src/card/base/asn1/EFCardSecurity.h | 9 +- src/card/base/asn1/EcdsaPublicKey.cpp | 2 - src/card/base/asn1/EcdsaPublicKey.h | 2 +- src/card/base/asn1/KnownOIDs.cpp | 9 +- src/card/base/asn1/PACEInfo.cpp | 198 - src/card/base/asn1/PACEInfo.h | 103 - src/card/base/asn1/PaceInfo.cpp | 197 + src/card/base/asn1/PaceInfo.h | 101 + src/card/base/asn1/SecurityInfo.cpp | 3 +- src/card/base/asn1/SecurityInfo.h | 10 +- src/card/base/asn1/SecurityInfos.cpp | 18 +- src/card/base/asn1/SecurityInfos.h | 14 +- src/card/base/asn1/SignatureChecker.cpp | 24 +- src/card/base/asn1/SignatureChecker.h | 2 +- src/card/base/command/BaseCardCommand.cpp | 42 +- src/card/base/command/BaseCardCommand.h | 15 +- .../command/CreateCardConnectionCommand.cpp | 15 +- .../command/CreateCardConnectionCommand.h | 11 +- .../command/DestroyPaceChannelCommand.cpp | 5 - .../base/command/DestroyPaceChannelCommand.h | 11 +- .../command/DidAuthenticateEAC1Command.cpp | 7 +- .../base/command/DidAuthenticateEAC1Command.h | 12 +- .../command/DidAuthenticateEAC2Command.cpp | 23 +- .../base/command/DidAuthenticateEAC2Command.h | 10 +- .../command/EstablishPaceChannelCommand.cpp | 13 +- .../command/EstablishPaceChannelCommand.h | 18 +- src/card/base/command/SetEidPinCommand.cpp | 7 - src/card/base/command/SetEidPinCommand.h | 10 +- src/card/base/command/TransmitCommand.cpp | 6 - src/card/base/command/TransmitCommand.h | 8 +- src/card/base/command/UnblockPinCommand.cpp | 19 +- src/card/base/command/UnblockPinCommand.h | 9 +- .../command/UpdateRetryCounterCommand.cpp | 8 - .../base/command/UpdateRetryCounterCommand.h | 11 +- src/card/base/pace/CipherMac.cpp | 8 +- src/card/base/pace/CipherMac.h | 6 +- src/card/base/pace/DomainParameterMapping.h | 12 +- src/card/base/pace/EstablishPACEChannelCode.h | 102 - src/card/base/pace/EstablishPaceChannelCode.h | 101 + src/card/base/pace/KeyAgreement.cpp | 50 +- src/card/base/pace/KeyAgreement.h | 14 +- src/card/base/pace/KeyDerivationFunction.cpp | 10 +- src/card/base/pace/KeyDerivationFunction.h | 6 +- src/card/base/pace/PaceHandler.cpp | 88 +- src/card/base/pace/PaceHandler.h | 15 +- src/card/base/pace/SecureMessaging.cpp | 19 +- src/card/base/pace/SecureMessaging.h | 9 +- src/card/base/pace/SymmetricCipher.cpp | 19 +- src/card/base/pace/SymmetricCipher.h | 4 +- src/card/base/pace/ec/EcUtil.h | 3 +- src/card/base/pace/ec/EcdhGenericMapping.cpp | 5 - src/card/base/pace/ec/EcdhGenericMapping.h | 4 +- src/card/base/pace/ec/EcdhKeyAgreement.cpp | 16 +- src/card/base/pace/ec/EcdhKeyAgreement.h | 10 +- .../base/pace/ec/EllipticCurveFactory.cpp | 8 +- src/card/base/pace/ec/EllipticCurveFactory.h | 7 +- src/card/bluetooth/AndroidBluetoothAdapter.h | 2 +- src/card/bluetooth/BluetoothCard.cpp | 18 +- src/card/bluetooth/BluetoothCard.h | 4 +- src/card/bluetooth/BluetoothDebug.cpp | 2 +- src/card/bluetooth/BluetoothReader.cpp | 10 +- src/card/bluetooth/BluetoothReader.h | 4 +- .../BluetoothReaderManagerPlugIn.cpp | 144 +- .../bluetooth/BluetoothReaderManagerPlugIn.h | 17 +- .../BluetoothReaderManagerPlugIn_p.h | 6 +- ...BluetoothReaderManagerPlugIn_p_android.cpp | 9 +- .../BluetoothReaderManagerPlugIn_p_ios.mm | 2 - src/card/bluetooth/CMakeLists.txt | 4 + src/card/bluetooth/CyberJackWaveDevice.cpp | 2 - src/card/bluetooth/CyberJackWaveDevice.h | 2 +- src/card/bluetooth/NotificationEnabler.cpp | 5 - src/card/bluetooth/NotificationEnabler.h | 4 +- src/card/bluetooth/SynchronousBtCall.cpp | 4 +- src/card/bluetooth/SynchronousBtCall.h | 2 +- src/card/bluetooth/messages/BluetoothIDs.h | 2 +- .../bluetooth/messages/BluetoothMessage.cpp | 6 +- .../bluetooth/messages/BluetoothMessage.h | 13 +- .../BluetoothMessageConnectResponse.h | 2 +- .../messages/BluetoothMessageCreator.h | 2 +- .../BluetoothMessageDisconnectResponse.h | 2 +- .../messages/BluetoothMessageParser.cpp | 3 +- .../messages/BluetoothMessageParser.h | 6 +- .../BluetoothMessagePowerSimOffResponse.h | 2 +- .../BluetoothMessagePowerSimOnResponse.h | 2 +- .../BluetoothMessageResetSimResponse.h | 2 +- ...toothMessageSetTransportProtocolResponse.h | 2 +- .../messages/BluetoothMessageStatusInd.h | 2 +- .../BluetoothMessageTransferApduResponse.h | 2 +- ...hMessageTransferCardReaderStatusResponse.h | 3 +- src/card/bluetooth/messages/BluetoothUtils.h | 2 +- .../parameter/BluetoothMessageParameter.h | 4 +- .../BluetoothMessageParameterApduResponse.h | 2 +- ...luetoothMessageParameterCardReaderStatus.h | 5 +- ...luetoothMessageParameterConnectionStatus.h | 2 +- .../BluetoothMessageParameterMaxMsgSize.h | 2 +- .../BluetoothMessageParameterResultCode.h | 2 +- .../BluetoothMessageParameterStatusChange.h | 2 +- src/card/drivers/CMakeLists.txt | 7 + src/card/drivers/ReaderDetector.cpp | 18 +- src/card/drivers/ReaderDetector.h | 15 +- src/card/drivers/ReaderDetector_linux.cpp | 39 +- src/card/drivers/ReaderDetector_osx.cpp | 3 +- src/card/nfc/CMakeLists.txt | 7 + src/card/nfc/NfcCard.cpp | 8 +- src/card/nfc/NfcCard.h | 5 +- src/card/nfc/NfcReader.cpp | 2 +- src/card/nfc/NfcReader.h | 2 +- src/card/nfc/NfcReaderManagerPlugIn.cpp | 2 +- src/card/nfc/NfcReaderManagerPlugIn.h | 2 +- src/card/pcsc/CMakeLists.txt | 7 + src/card/pcsc/PcscCard.cpp | 13 +- src/card/pcsc/PcscCard.h | 4 +- src/card/pcsc/PcscReader.cpp | 16 +- src/card/pcsc/PcscReader.h | 6 +- src/card/pcsc/PcscReaderFeature.h | 2 +- src/card/pcsc/PcscReaderManagerPlugIn.cpp | 58 +- src/card/pcsc/PcscReaderManagerPlugIn.h | 6 +- src/card/pcsc/PcscReaderPaceCapability.h | 2 +- src/card/pcsc/PcscUtils.h | 2 +- src/card/remote/CMakeLists.txt | 4 - src/card/remote/RemoteCard.cpp | 244 -- src/card/remote/RemoteCard.h | 63 - src/card/remote/RemoteReader.cpp | 79 - src/card/remote/RemoteReader.h | 41 - src/card/remote/RemoteReaderManagerPlugIn.cpp | 341 -- src/card/remote/RemoteReaderManagerPlugIn.h | 75 - src/cli/CMakeLists.txt | 4 - src/cli/ConsoleReader.h | 74 - src/cli/UIPlugInCli.cpp | 234 - src/cli/UIPlugInCli.h | 72 - src/config.h.in | 2 + src/configuration/CMakeLists.txt | 8 + src/configuration/CallCost.cpp | 2 +- src/configuration/CallCost.h | 3 +- src/configuration/LanguageString.h | 2 +- src/configuration/ProviderConfiguration.cpp | 1 - src/configuration/ProviderConfiguration.h | 8 +- .../ProviderConfigurationInfo.cpp | 1 - src/configuration/ProviderConfigurationInfo.h | 3 +- .../ProviderConfigurationParser.cpp | 2 +- .../ProviderConfigurationParser.h | 3 +- src/configuration/ReaderConfiguration.cpp | 3 +- src/configuration/ReaderConfiguration.h | 6 +- src/configuration/ReaderConfigurationInfo.cpp | 3 +- src/configuration/ReaderConfigurationInfo.h | 3 +- src/configuration/ReaderConfigurationParser.h | 2 +- src/core/CMakeLists.txt | 8 +- src/core/CertificateChecker.cpp | 9 +- src/core/CertificateChecker.h | 2 +- src/core/DiagnosisAntivirusDetection.cpp | 139 + src/core/DiagnosisAntivirusDetection.h | 73 + src/core/DiagnosisConnectionTest.cpp | 198 + src/core/DiagnosisConnectionTest.h | 114 + src/core/DiagnosisFirewallDetection.cpp | 385 ++ src/core/DiagnosisFirewallDetection.h | 155 + src/core/DiagnosisItem.cpp | 94 + src/core/DiagnosisItem.h | 44 + src/core/DiagnosisModel.cpp | 578 +++ src/core/DiagnosisModel.h | 77 + src/core/SelfAuthenticationData.cpp | 96 +- src/core/SelfAuthenticationData.h | 15 +- src/core/SignalHandler.cpp | 5 +- src/core/SignalHandler.h | 4 +- src/core/SignalHandler_win.cpp | 2 +- src/core/TcToken.cpp | 22 +- src/core/TcToken.h | 8 +- src/core/context/AuthContext.cpp | 23 +- src/core/context/AuthContext.h | 46 +- src/core/context/ChangePinContext.cpp | 16 +- src/core/context/ChangePinContext.h | 9 +- src/core/context/DiagnosisContext.cpp | 14 + src/core/context/DiagnosisContext.h | 13 +- src/core/context/RemoteServiceContext.cpp | 53 +- src/core/context/RemoteServiceContext.h | 16 +- src/core/context/SelfAuthContext.cpp | 5 - src/core/context/SelfAuthContext.h | 4 +- src/core/context/WorkflowContext.cpp | 204 +- src/core/context/WorkflowContext.h | 64 +- src/core/controller/AppController.cpp | 230 +- src/core/controller/AppController.h | 25 +- src/core/controller/AuthController.cpp | 68 +- src/core/controller/AuthController.h | 4 +- src/core/controller/ChangePinController.cpp | 63 +- src/core/controller/ChangePinController.h | 2 +- src/core/controller/DiagnosisController.cpp | 20 +- src/core/controller/DiagnosisController.h | 8 +- .../DiagnosisController_generic.cpp | 1 - .../controller/RemoteServiceController.cpp | 68 +- src/core/controller/RemoteServiceController.h | 2 +- src/core/controller/SelfAuthController.cpp | 70 +- src/core/controller/SelfAuthController.h | 4 +- src/core/controller/WorkflowController.h | 3 +- src/core/paos/ElementDetector.cpp | 2 +- src/core/paos/ElementDetector.h | 2 +- src/core/paos/MessageIdHandler.cpp | 26 - src/core/paos/MessageIdHandler.h | 25 - src/core/paos/PaosHandler.cpp | 21 +- src/core/paos/PaosHandler.h | 2 +- src/core/paos/PaosMessage.h | 2 +- src/core/paos/PaosType.h | 2 +- src/core/paos/RequestType.h | 2 +- src/core/paos/ResponseType.cpp | 6 +- src/core/paos/ResponseType.h | 10 +- src/core/paos/element/ConnectionHandle.h | 2 +- .../paos/element/ConnectionHandleParser.cpp | 1 - .../paos/element/ConnectionHandleParser.h | 2 +- src/core/paos/element/Eac1InputType.h | 5 +- src/core/paos/element/Eac2InputType.h | 2 +- src/core/paos/element/ElementParser.cpp | 1 - src/core/paos/element/ElementParser.h | 2 +- src/core/paos/element/SupportedApi.h | 2 +- src/core/paos/element/UserAgent.h | 2 +- .../invoke/DidAuthenticateResponseEac1.cpp | 47 +- .../paos/invoke/DidAuthenticateResponseEac1.h | 14 +- .../invoke/DidAuthenticateResponseEac2.cpp | 38 +- .../paos/invoke/DidAuthenticateResponseEac2.h | 8 +- src/core/paos/invoke/DidListResponse.cpp | 36 +- src/core/paos/invoke/DidListResponse.h | 7 +- src/core/paos/invoke/DisconnectResponse.cpp | 20 +- src/core/paos/invoke/DisconnectResponse.h | 6 +- .../invoke/InitializeFrameworkResponse.cpp | 37 +- .../paos/invoke/InitializeFrameworkResponse.h | 8 +- src/core/paos/invoke/PaosCreator.cpp | 167 +- src/core/paos/invoke/PaosCreator.h | 25 +- src/core/paos/invoke/StartPaos.cpp | 66 +- src/core/paos/invoke/StartPaos.h | 13 +- src/core/paos/invoke/TransmitResponse.cpp | 20 +- src/core/paos/invoke/TransmitResponse.h | 6 +- src/core/paos/retrieve/DidAuthenticateEac1.h | 9 +- .../paos/retrieve/DidAuthenticateEac1Parser.h | 2 +- src/core/paos/retrieve/DidAuthenticateEac2.h | 3 +- .../paos/retrieve/DidAuthenticateEac2Parser.h | 2 +- .../retrieve/DidAuthenticateEacAdditional.h | 2 +- .../DidAuthenticateEacAdditionalParser.cpp | 1 - .../DidAuthenticateEacAdditionalParser.h | 2 +- src/core/paos/retrieve/DidList.cpp | 20 +- src/core/paos/retrieve/DidList.h | 2 +- src/core/paos/retrieve/Disconnect.cpp | 9 +- src/core/paos/retrieve/Disconnect.h | 2 +- .../paos/retrieve/InitializeFramework.cpp | 8 +- src/core/paos/retrieve/InitializeFramework.h | 2 +- src/core/paos/retrieve/PaosParser.cpp | 2 +- src/core/paos/retrieve/PaosParser.h | 2 +- src/core/paos/retrieve/StartPaosResponse.cpp | 16 +- src/core/paos/retrieve/StartPaosResponse.h | 2 +- src/core/paos/retrieve/Transmit.h | 2 +- src/core/paos/retrieve/TransmitParser.h | 2 +- src/core/states/AbstractGenericState.h | 12 +- src/core/states/AbstractState.cpp | 18 +- src/core/states/AbstractState.h | 7 +- src/core/states/CompositeStatePace.cpp | 92 + src/core/states/CompositeStatePace.h | 33 + .../CompositeStateProcessCvcsAndSetRights.h | 4 +- src/core/states/CompositeStateSelectCard.cpp | 24 +- src/core/states/CompositeStateSelectCard.h | 4 +- src/core/states/FinalState.h | 5 +- src/core/states/StateBuilder.h | 2 +- .../StateCertificateDescriptionCheck.cpp | 22 +- .../states/StateCertificateDescriptionCheck.h | 5 +- src/core/states/StateChangePin.cpp | 4 +- src/core/states/StateChangePin.h | 7 +- src/core/states/StateCheckCertificates.cpp | 7 +- src/core/states/StateCheckCertificates.h | 4 +- src/core/states/StateCheckError.h | 4 +- src/core/states/StateCheckRefreshAddress.cpp | 69 +- src/core/states/StateCheckRefreshAddress.h | 8 +- src/core/states/StateCleanUpReaderManager.cpp | 27 +- src/core/states/StateCleanUpReaderManager.h | 4 +- src/core/states/StateClearPacePasswords.cpp | 22 + src/core/states/StateClearPacePasswords.h | 23 + src/core/states/StateConnectCard.cpp | 21 +- src/core/states/StateConnectCard.h | 7 +- src/core/states/StateDestroyPace.h | 9 +- src/core/states/StateDidAuthenticateEac1.cpp | 5 +- src/core/states/StateDidAuthenticateEac1.h | 7 +- src/core/states/StateDidAuthenticateEac2.h | 4 +- src/core/states/StateDidList.cpp | 2 +- src/core/states/StateDidList.h | 4 +- src/core/states/StateEACAdditionalInputType.h | 4 +- src/core/states/StateEditAccessRights.cpp | 2 +- src/core/states/StateEditAccessRights.h | 4 +- src/core/states/StateEnterNewPacePin.cpp | 20 + src/core/states/StateEnterNewPacePin.h | 23 + src/core/states/StateEnterPacePassword.cpp | 20 + src/core/states/StateEnterPacePassword.h | 23 + src/core/states/StateEstablishPaceCan.cpp | 89 - src/core/states/StateEstablishPaceCan.h | 34 - src/core/states/StateEstablishPaceChannel.cpp | 226 + src/core/states/StateEstablishPaceChannel.h | 45 + src/core/states/StateEstablishPacePin.cpp | 86 - src/core/states/StateEstablishPacePin.h | 33 - src/core/states/StateEstablishPacePuk.cpp | 73 - src/core/states/StateEstablishPacePuk.h | 33 - .../StateExtractCvcsFromEac1InputType.cpp | 2 +- .../StateExtractCvcsFromEac1InputType.h | 5 +- src/core/states/StateGenericSendReceive.cpp | 123 +- src/core/states/StateGenericSendReceive.h | 48 +- .../states/StateGetSelfAuthenticationData.cpp | 21 +- .../states/StateGetSelfAuthenticationData.h | 5 +- src/core/states/StateGetTcToken.cpp | 24 +- src/core/states/StateGetTcToken.h | 7 +- src/core/states/StateHandleRetryCounter.cpp | 41 - src/core/states/StateHandleRetryCounter.h | 29 - src/core/states/StateInitializeFramework.cpp | 2 +- src/core/states/StateInitializeFramework.h | 4 +- src/core/states/StateLoadTcTokenUrl.cpp | 1 - src/core/states/StateLoadTcTokenUrl.h | 4 +- .../states/StateMaintainCardConnection.cpp | 118 + src/core/states/StateMaintainCardConnection.h | 28 + src/core/states/StateParseTcTokenUrl.cpp | 3 - src/core/states/StateParseTcTokenUrl.h | 4 +- src/core/states/StatePreVerification.cpp | 35 +- src/core/states/StatePreVerification.h | 5 +- src/core/states/StatePrepareChangePin.cpp | 29 + src/core/states/StatePrepareChangePin.h | 26 + src/core/states/StatePreparePace.cpp | 117 + src/core/states/StatePreparePace.h | 29 + .../StateProcessCertificatesFromEac2.cpp | 1 - .../states/StateProcessCertificatesFromEac2.h | 5 +- src/core/states/StateProcessing.cpp | 2 +- src/core/states/StateProcessing.h | 4 +- src/core/states/StateRedirectBrowser.cpp | 33 +- src/core/states/StateRedirectBrowser.h | 13 +- src/core/states/StateSelectPasswordId.h | 7 +- src/core/states/StateSelectReader.cpp | 49 +- src/core/states/StateSelectReader.h | 9 +- src/core/states/StateSendWhitelistSurvey.cpp | 65 + src/core/states/StateSendWhitelistSurvey.h | 26 + src/core/states/StateShowSelfInfo.cpp | 19 + src/core/states/StateShowSelfInfo.h | 23 + src/core/states/StateStartPaos.cpp | 2 +- src/core/states/StateStartPaos.h | 4 +- src/core/states/StateStartPaosResponse.cpp | 5 +- src/core/states/StateStartPaosResponse.h | 4 +- src/core/states/StateTransmit.cpp | 1 - src/core/states/StateTransmit.h | 7 +- .../states/StateUnfortunateCardPosition.cpp | 21 + .../states/StateUnfortunateCardPosition.h | 23 + src/core/states/StateUpdateRetryCounter.cpp | 30 +- src/core/states/StateUpdateRetryCounter.h | 7 +- src/core/states/StateVerifyRetryCounter.cpp | 50 + src/core/states/StateVerifyRetryCounter.h | 27 + src/core/states/StateWriteHistory.cpp | 24 +- src/core/states/StateWriteHistory.h | 4 +- .../remote_service/StateChangePinRemote.cpp | 88 +- .../remote_service/StateChangePinRemote.h | 22 +- .../remote_service/StateChangePinResponse.cpp | 41 + .../remote_service/StateChangePinResponse.h | 30 + .../StateEnterNewPacePinRemote.cpp | 43 + .../StateEnterNewPacePinRemote.h | 30 + .../StateEnterPacePasswordRemote.cpp | 46 + .../StateEnterPacePasswordRemote.h | 30 + .../StateEstablishPaceChannel.cpp | 141 - .../StateEstablishPaceChannel.h | 45 - .../StateEstablishPaceChannelRemote.cpp | 145 + .../StateEstablishPaceChannelRemote.h | 36 + .../StateEstablishPaceChannelResponse.cpp | 41 + .../StateEstablishPaceChannelResponse.h | 32 + .../StatePrepareChangePinRemote.cpp | 33 + .../StatePrepareChangePinRemote.h | 29 + .../remote_service/StatePreparePaceRemote.cpp | 65 + .../remote_service/StatePreparePaceRemote.h | 29 + .../StateProcessRemoteMessages.cpp | 24 +- .../StateProcessRemoteMessages.h | 9 +- .../StateStartRemoteService.cpp | 1 - .../remote_service/StateStartRemoteService.h | 7 +- .../remote_service/StateStopRemoteService.cpp | 3 + .../remote_service/StateStopRemoteService.h | 7 +- src/core/view/UILoader.cpp | 110 - src/core/view/UILoader.h | 63 - src/core/view/UIPlugIn.cpp | 50 - src/core/view/UIPlugIn.h | 54 - src/export/CMakeLists.txt | 8 +- src/export/PdfCreator.cpp | 3 - src/export/PdfCreator.h | 2 +- src/export/PdfExporter.cpp | 8 +- src/export/PdfExporter.h | 2 +- src/external/CMakeLists.txt | 42 +- src/external/http_parser/http_parser.cpp | 206 +- src/external/http_parser/http_parser.h | 77 +- src/file_provider/CMakeLists.txt | 6 + src/file_provider/Downloader.cpp | 57 +- src/file_provider/Downloader.h | 7 +- src/file_provider/FileProvider.cpp | 2 +- src/file_provider/FileProvider.h | 5 +- src/file_provider/UpdatableFile.cpp | 15 +- ...reakPropertyBindingDiagnosticLogFilter.cpp | 34 + .../BreakPropertyBindingDiagnosticLogFilter.h | 27 + src/global/BuildHelper.cpp | 63 +- src/global/BuildHelper.h | 15 +- src/global/CMakeLists.txt | 5 + src/global/CardReturnCode.cpp | 52 +- src/global/CardReturnCode.h | 12 +- src/global/DeviceError.cpp | 41 - src/global/DeviceError.h | 28 - src/global/DeviceInfo.cpp | 61 +- src/global/DeviceInfo.h | 8 +- src/global/ECardApiResult.cpp | 641 +++ src/global/ECardApiResult.h | 172 + src/global/EnumHelper.h | 5 +- src/global/Env.cpp | 115 +- src/global/Env.h | 168 +- src/global/FileDestination.h | 7 +- src/global/FuncUtils.h | 2 +- src/global/GlobalStatus.cpp | 134 +- src/global/GlobalStatus.h | 35 +- src/global/Initializer.cpp | 2 +- src/global/Initializer.h | 2 +- src/global/LanguageLoader.cpp | 6 +- src/global/LanguageLoader.h | 3 +- src/global/LogCategories.cpp | 1 - src/global/LogHandler.cpp | 117 +- src/global/LogHandler.h | 25 +- src/global/Randomizer.cpp | 6 - src/global/Randomizer.h | 2 +- src/global/ResourceLoader.h | 2 +- src/global/Result.cpp | 567 --- src/global/Result.h | 108 - src/global/ScopeGuard.h | 2 +- src/global/SingletonHelper.h | 12 + src/global/UsbId.cpp | 1 - src/global/UsbId.h | 3 +- src/global/VersionInfo.cpp | 2 +- src/global/VersionInfo.h | 2 +- src/global/VersionNumber.h | 2 +- src/jsonapi/CMakeLists.txt | 4 - src/jsonapi/MessageDispatcher.cpp | 223 - src/jsonapi/MessageDispatcher.h | 45 - src/jsonapi/UIPlugInJsonApi.cpp | 85 - src/jsonapi/UIPlugInJsonApi.h | 46 - src/jsonapi/messages/MsgContext.h | 51 - src/jsonapi/messages/MsgHandler.cpp | 155 - src/jsonapi/messages/MsgHandler.h | 58 - .../messages/MsgHandlerAccessRights.cpp | 168 - src/jsonapi/messages/MsgHandlerAccessRights.h | 35 - src/jsonapi/messages/MsgHandlerApiLevel.h | 29 - src/jsonapi/messages/MsgHandlerAuth.cpp | 102 - src/jsonapi/messages/MsgHandlerAuth.h | 31 - src/jsonapi/messages/MsgHandlerBadState.h | 22 - src/jsonapi/messages/MsgHandlerCertificate.h | 23 - src/jsonapi/messages/MsgHandlerEnterCan.cpp | 27 - src/jsonapi/messages/MsgHandlerEnterCan.h | 24 - .../messages/MsgHandlerEnterNumber.cpp | 66 - src/jsonapi/messages/MsgHandlerEnterNumber.h | 34 - src/jsonapi/messages/MsgHandlerEnterPin.cpp | 27 - src/jsonapi/messages/MsgHandlerEnterPin.h | 24 - src/jsonapi/messages/MsgHandlerEnterPuk.cpp | 27 - src/jsonapi/messages/MsgHandlerEnterPuk.h | 24 - src/jsonapi/messages/MsgHandlerInfo.h | 22 - src/jsonapi/messages/MsgHandlerInsertCard.cpp | 26 - src/jsonapi/messages/MsgHandlerInsertCard.h | 23 - .../messages/MsgHandlerInternalError.h | 23 - src/jsonapi/messages/MsgHandlerInvalid.h | 26 - src/jsonapi/messages/MsgHandlerReader.cpp | 78 - src/jsonapi/messages/MsgHandlerReader.h | 32 - src/jsonapi/messages/MsgHandlerReaderList.cpp | 24 - src/jsonapi/messages/MsgHandlerReaderList.h | 22 - .../messages/MsgHandlerUnknownCommand.h | 22 - src/jsonapi/messages/MsgTypes.h | 49 - src/main.cpp | 91 +- src/network/CMakeLists.txt | 5 + src/network/DatagramHandler.h | 11 +- src/network/DatagramHandlerImpl.cpp | 120 +- src/network/DatagramHandlerImpl.h | 17 +- src/network/HttpRequest.cpp | 46 +- src/network/HttpRequest.h | 21 +- src/network/HttpResponse.cpp | 34 +- src/network/HttpResponse.h | 19 +- src/network/HttpServer.cpp | 47 +- src/network/HttpServer.h | 12 +- src/network/HttpServerRequestor.cpp | 3 +- src/network/HttpServerRequestor.h | 4 +- src/network/HttpServerStatusParser.cpp | 12 +- src/network/HttpServerStatusParser.h | 4 +- src/network/HttpStatusCode.cpp | 9 - src/network/HttpStatusCode.h | 61 - src/network/NetworkManager.cpp | 82 +- src/network/NetworkManager.h | 19 +- src/network/NetworkReplyError.cpp | 2 +- src/network/NetworkReplyError.h | 2 +- src/network/NetworkReplyTimeout.cpp | 1 - src/network/NetworkReplyTimeout.h | 2 +- src/network/PortFile.cpp | 46 + src/network/PortFile.h | 33 + src/network/TlsChecker.cpp | 89 +- src/network/TlsChecker.h | 10 +- src/network/UrlUtil.cpp | 44 +- src/network/UrlUtil.h | 5 +- src/network/WifiInfo.cpp | 2 +- src/network/WifiInfo.h | 5 +- src/network/WifiInfo_android.cpp | 2 - src/network/WifiInfo_generic.cpp | 18 +- src/network/WifiInfo_ios.mm | 3 +- src/qml/ApplicationModel.cpp | 230 - src/qml/ApplicationModel.h | 88 - src/qml/AuthModel.cpp | 64 - src/qml/AuthModel.h | 47 - src/qml/CMakeLists.txt | 19 - src/qml/CertificateDescriptionModel.cpp | 163 - src/qml/CertificateDescriptionModel.h | 65 - src/qml/ChangePinModel.cpp | 48 - src/qml/ChangePinModel.h | 41 - src/qml/ChatModel.cpp | 224 - src/qml/ChatModel.h | 65 - src/qml/ConnectivityManager.cpp | 107 - src/qml/ConnectivityManager.h | 44 - src/qml/DpiCalculator.h | 23 - src/qml/DpiCalculator_generic.cpp | 53 - src/qml/HistoryModel.cpp | 395 -- src/qml/HistoryModel.h | 125 - src/qml/HistoryModelSearchFilter.h | 31 - src/qml/NumberModel.cpp | 264 -- src/qml/NumberModel.h | 86 - src/qml/ProviderCategoryFilterModel.cpp | 177 - src/qml/ProviderCategoryFilterModel.h | 58 - src/qml/ProviderModel.cpp | 212 - src/qml/ProviderModel.h | 71 - src/qml/QmlExtension.h | 29 - src/qml/QmlExtension_android.cpp | 212 - src/qml/QmlExtension_generic.cpp | 62 - src/qml/QmlExtension_ios.mm | 72 - src/qml/RemoteServiceModel.cpp | 339 -- src/qml/RemoteServiceModel.h | 101 - src/qml/SelfAuthenticationModel.cpp | 126 - src/qml/SelfAuthenticationModel.h | 58 - src/qml/SettingsModel.cpp | 143 - src/qml/SettingsModel.h | 61 - src/qml/ShareUtil.java | 55 - src/qml/StatusBarUtil.h | 27 - src/qml/UIPlugInQml.cpp | 287 -- src/qml/UIPlugInQml.h | 83 - src/qml/VersionInformationModel.cpp | 92 - src/qml/VersionInformationModel.h | 38 - src/qml/WorkflowModel.cpp | 157 - src/qml/WorkflowModel.h | 65 - src/remote_device/CMakeLists.txt | 8 + src/remote_device/DataChannel.cpp | 8 - src/remote_device/DataChannel.h | 4 +- .../base => remote_device}/RemoteClient.cpp | 0 src/remote_device/RemoteClient.h | 55 + src/remote_device/RemoteClientImpl.cpp | 78 +- src/remote_device/RemoteClientImpl.h | 23 +- src/remote_device/RemoteConnector.h | 6 +- src/remote_device/RemoteConnectorImpl.cpp | 30 +- src/remote_device/RemoteConnectorImpl.h | 3 +- src/remote_device/RemoteDeviceDescriptor.cpp | 92 +- src/remote_device/RemoteDeviceDescriptor.h | 18 +- src/remote_device/RemoteDeviceList.cpp | 12 +- src/remote_device/RemoteDeviceList.h | 4 +- src/remote_device/RemoteDeviceModel.cpp | 49 +- src/remote_device/RemoteDeviceModel.h | 8 +- src/remote_device/RemoteDispatcher.cpp | 130 + src/remote_device/RemoteDispatcher.h | 57 + src/remote_device/RemoteDispatcherClient.cpp | 72 + src/remote_device/RemoteDispatcherClient.h | 32 + src/remote_device/RemoteDispatcherImpl.cpp | 180 - src/remote_device/RemoteDispatcherImpl.h | 43 - src/remote_device/RemoteDispatcherServer.cpp | 89 + src/remote_device/RemoteDispatcherServer.h | 30 + src/remote_device/RemoteHelper.cpp | 36 - src/remote_device/RemoteHelper.h | 22 - src/remote_device/RemoteReaderAdvertiser.cpp | 4 +- src/remote_device/RemoteReaderAdvertiser.h | 12 +- src/remote_device/RemoteServer.cpp | 96 - src/remote_device/RemoteServer.h | 37 +- src/remote_device/RemoteServerImpl.cpp | 102 + src/remote_device/RemoteServerImpl.h | 40 + src/remote_device/RemoteTlsServer.cpp | 9 +- src/remote_device/RemoteTlsServer.h | 2 +- src/remote_device/RemoteWebSocketServer.cpp | 9 +- src/remote_device/RemoteWebSocketServer.h | 3 +- src/remote_device/ServerMessageHandler.cpp | 292 +- src/remote_device/ServerMessageHandler.h | 38 +- src/remote_device/WebSocketChannel.cpp | 2 +- src/remote_device/WebSocketChannel.h | 2 +- src/remote_device/messages/Discovery.cpp | 75 +- src/remote_device/messages/Discovery.h | 17 +- src/remote_device/messages/GetIfdStatus.cpp | 52 - src/remote_device/messages/GetIfdStatus.h | 30 - src/remote_device/messages/IfdConnect.cpp | 11 +- src/remote_device/messages/IfdConnect.h | 4 +- .../messages/IfdConnectResponse.cpp | 13 +- .../messages/IfdConnectResponse.h | 6 +- src/remote_device/messages/IfdDisconnect.cpp | 11 +- src/remote_device/messages/IfdDisconnect.h | 4 +- .../messages/IfdDisconnectResponse.cpp | 13 +- .../messages/IfdDisconnectResponse.h | 6 +- src/remote_device/messages/IfdError.cpp | 13 +- src/remote_device/messages/IfdError.h | 6 +- .../messages/IfdEstablishContext.cpp | 12 +- .../messages/IfdEstablishContext.h | 4 +- .../messages/IfdEstablishContextResponse.cpp | 15 +- .../messages/IfdEstablishContextResponse.h | 6 +- .../messages/IfdEstablishPaceChannel.cpp | 14 +- .../messages/IfdEstablishPaceChannel.h | 6 +- .../IfdEstablishPaceChannelResponse.cpp | 13 +- .../IfdEstablishPaceChannelResponse.h | 8 +- src/remote_device/messages/IfdGetStatus.cpp | 57 + src/remote_device/messages/IfdGetStatus.h | 28 + src/remote_device/messages/IfdModifyPin.cpp | 12 +- src/remote_device/messages/IfdModifyPin.h | 5 +- .../messages/IfdModifyPinResponse.cpp | 58 +- .../messages/IfdModifyPinResponse.h | 7 +- src/remote_device/messages/IfdStatus.cpp | 39 +- src/remote_device/messages/IfdStatus.h | 25 +- src/remote_device/messages/IfdTransmit.cpp | 13 +- src/remote_device/messages/IfdTransmit.h | 4 +- .../messages/IfdTransmitResponse.cpp | 17 +- .../messages/IfdTransmitResponse.h | 6 +- src/remote_device/messages/IfdVersion.cpp | 31 +- src/remote_device/messages/IfdVersion.h | 8 +- .../messages/MessageReceiver.cpp | 242 -- src/remote_device/messages/MessageReceiver.h | 61 - src/remote_device/messages/RemoteMessage.cpp | 55 +- src/remote_device/messages/RemoteMessage.h | 13 +- .../messages/RemoteMessageParser.cpp | 235 - .../messages/RemoteMessageParser.h | 31 - .../messages/RemoteMessageResponse.cpp | 36 +- .../messages/RemoteMessageResponse.h | 13 +- src/remote_device/plugin/RemoteCard.cpp | 260 ++ src/remote_device/plugin/RemoteCard.h | 63 + src/remote_device/plugin/RemoteReader.cpp | 79 + src/remote_device/plugin/RemoteReader.h | 41 + .../plugin/RemoteReaderManagerPlugIn.cpp | 296 ++ .../plugin/RemoteReaderManagerPlugIn.h | 63 + .../plugin}/metadata.json | 0 src/secure_storage/CMakeLists.txt | 6 + src/secure_storage/SecureStorage.cpp | 59 +- src/secure_storage/SecureStorage.h | 5 + src/secure_storage/TlsConfiguration.cpp | 67 +- src/secure_storage/TlsConfiguration.h | 7 +- src/services/AppUpdateData.cpp | 1 - src/services/AppUpdateData.h | 2 +- src/services/AppUpdater.cpp | 11 +- src/services/AppUpdater.h | 10 +- src/services/CMakeLists.txt | 12 +- src/services/Service.cpp | 16 +- src/services/Service.h | 9 +- src/settings/AbstractSettings.cpp | 20 +- src/settings/AbstractSettings.h | 4 +- src/settings/AppSettings.cpp | 24 + src/settings/AppSettings.h | 10 +- src/settings/AutoStart.h | 4 +- src/settings/AutoStart_generic.cpp | 6 + src/settings/AutoStart_osx.cpp | 82 +- src/settings/AutoStart_win.cpp | 24 +- src/settings/CMakeLists.txt | 12 +- src/settings/GeneralSettings.cpp | 140 +- src/settings/GeneralSettings.h | 26 +- src/settings/HistoryInfo.cpp | 4 +- src/settings/HistoryInfo.h | 8 +- src/settings/HistorySettings.cpp | 14 +- src/settings/HistorySettings.h | 2 +- src/settings/KeyPair.cpp | 13 +- src/settings/KeyPair.h | 2 +- src/settings/PreVerificationSettings.cpp | 2 +- src/settings/PreVerificationSettings.h | 3 +- src/settings/RemoteServiceSettings.cpp | 29 +- src/settings/RemoteServiceSettings.h | 4 +- src/ui/CMakeLists.txt | 27 + src/ui/aidl/AidlBinder.java | 162 + src/ui/aidl/CMakeLists.txt | 10 + src/{ => ui}/aidl/PskManager.cpp | 0 src/ui/aidl/PskManager.h | 29 + src/ui/aidl/UIPlugInAidl.cpp | 215 + src/ui/aidl/UIPlugInAidl.h | 53 + src/{ => ui}/aidl/metadata.json | 0 src/ui/base/CMakeLists.txt | 3 + src/ui/base/UILoader.cpp | 188 + src/ui/base/UILoader.h | 56 + src/ui/base/UIPlugIn.cpp | 61 + src/ui/base/UIPlugIn.h | 67 + src/ui/cli/CMakeLists.txt | 12 + src/{ => ui}/cli/ConsoleReader.cpp | 0 src/ui/cli/ConsoleReader.h | 74 + src/ui/cli/UIPlugInCli.cpp | 234 + src/ui/cli/UIPlugInCli.h | 72 + src/{ => ui}/cli/metadata.json | 0 src/ui/common/CMakeLists.txt | 15 + src/ui/common/HelpAction.cpp | 125 + src/ui/common/HelpAction.h | 43 + src/ui/common/PlatformTools.h | 18 + src/ui/common/PlatformTools_generic.cpp | 18 + src/ui/common/PlatformTools_osx.cpp | 29 + src/ui/common/TrayIcon.cpp | 105 + src/ui/common/TrayIcon.h | 45 + src/ui/jsonapi/CMakeLists.txt | 12 + src/ui/jsonapi/MessageDispatcher.cpp | 231 + src/ui/jsonapi/MessageDispatcher.h | 50 + src/ui/jsonapi/UIPlugInJsonApi.cpp | 115 + src/ui/jsonapi/UIPlugInJsonApi.h | 50 + src/{ => ui}/jsonapi/messages/MsgContext.cpp | 0 src/ui/jsonapi/messages/MsgContext.h | 51 + src/ui/jsonapi/messages/MsgHandler.cpp | 156 + src/ui/jsonapi/messages/MsgHandler.h | 59 + .../messages/MsgHandlerAccessRights.cpp | 167 + .../jsonapi/messages/MsgHandlerAccessRights.h | 35 + .../jsonapi/messages/MsgHandlerApiLevel.cpp | 0 src/ui/jsonapi/messages/MsgHandlerApiLevel.h | 29 + src/ui/jsonapi/messages/MsgHandlerAuth.cpp | 102 + src/ui/jsonapi/messages/MsgHandlerAuth.h | 31 + .../jsonapi/messages/MsgHandlerBadState.cpp | 0 src/ui/jsonapi/messages/MsgHandlerBadState.h | 22 + .../messages/MsgHandlerCertificate.cpp | 0 .../jsonapi/messages/MsgHandlerCertificate.h | 23 + .../jsonapi/messages/MsgHandlerEnterCan.cpp | 27 + src/ui/jsonapi/messages/MsgHandlerEnterCan.h | 24 + .../messages/MsgHandlerEnterNumber.cpp | 91 + .../jsonapi/messages/MsgHandlerEnterNumber.h | 35 + .../jsonapi/messages/MsgHandlerEnterPin.cpp | 27 + src/ui/jsonapi/messages/MsgHandlerEnterPin.h | 24 + .../jsonapi/messages/MsgHandlerEnterPuk.cpp | 27 + src/ui/jsonapi/messages/MsgHandlerEnterPuk.h | 24 + .../jsonapi/messages/MsgHandlerInfo.cpp | 0 src/ui/jsonapi/messages/MsgHandlerInfo.h | 22 + .../jsonapi/messages/MsgHandlerInsertCard.cpp | 26 + .../jsonapi/messages/MsgHandlerInsertCard.h | 23 + .../messages/MsgHandlerInternalError.cpp | 0 .../messages/MsgHandlerInternalError.h | 23 + .../jsonapi/messages/MsgHandlerInvalid.cpp | 0 src/ui/jsonapi/messages/MsgHandlerInvalid.h | 26 + src/ui/jsonapi/messages/MsgHandlerReader.cpp | 80 + src/ui/jsonapi/messages/MsgHandlerReader.h | 32 + .../jsonapi/messages/MsgHandlerReaderList.cpp | 24 + .../jsonapi/messages/MsgHandlerReaderList.h | 22 + .../messages/MsgHandlerUnknownCommand.cpp | 0 .../messages/MsgHandlerUnknownCommand.h | 22 + src/{ => ui}/jsonapi/messages/MsgTypes.cpp | 0 src/ui/jsonapi/messages/MsgTypes.h | 49 + src/{ => ui}/jsonapi/metadata.json | 0 src/ui/qml/ApplicationModel.cpp | 285 ++ src/ui/qml/ApplicationModel.h | 107 + src/ui/qml/AuthModel.cpp | 68 + src/ui/qml/AuthModel.h | 53 + src/ui/qml/CMakeLists.txt | 30 + src/ui/qml/CertificateDescriptionModel.cpp | 160 + src/ui/qml/CertificateDescriptionModel.h | 63 + src/ui/qml/ChangePinModel.cpp | 44 + src/ui/qml/ChangePinModel.h | 47 + src/ui/qml/ChatModel.cpp | 224 + src/ui/qml/ChatModel.h | 68 + src/ui/qml/ConnectivityManager.cpp | 127 + src/ui/qml/ConnectivityManager.h | 46 + src/ui/qml/DpiCalculator.h | 31 + src/ui/qml/DpiCalculator_android.cpp | 31 + src/ui/qml/DpiCalculator_generic.cpp | 40 + src/{ => ui}/qml/DpiCalculator_ios.mm | 0 src/ui/qml/HistoryModel.cpp | 395 ++ src/ui/qml/HistoryModel.h | 125 + src/{ => ui}/qml/HistoryModelSearchFilter.cpp | 0 src/ui/qml/HistoryModelSearchFilter.h | 31 + src/ui/qml/LogModel.cpp | 257 ++ src/ui/qml/LogModel.h | 72 + src/ui/qml/LogModel_android.cpp | 168 + src/ui/qml/LogModel_generic.cpp | 29 + src/ui/qml/NumberModel.cpp | 281 ++ src/ui/qml/NumberModel.h | 96 + src/ui/qml/ProviderCategoryFilterModel.cpp | 177 + src/ui/qml/ProviderCategoryFilterModel.h | 60 + src/ui/qml/ProviderModel.cpp | 211 + src/ui/qml/ProviderModel.h | 71 + src/ui/qml/QmlExtension.h | 28 + src/ui/qml/QmlExtension_android.cpp | 107 + src/ui/qml/QmlExtension_generic.cpp | 58 + src/ui/qml/QmlExtension_ios.mm | 65 + src/ui/qml/RemoteServiceModel.cpp | 345 ++ src/ui/qml/RemoteServiceModel.h | 107 + src/ui/qml/SelfAuthModel.cpp | 126 + src/ui/qml/SelfAuthModel.h | 61 + src/ui/qml/SettingsModel.cpp | 175 + src/ui/qml/SettingsModel.h | 68 + src/ui/qml/ShareUtil.java | 104 + src/{ => ui}/qml/StatusBarUtil.cpp | 0 src/ui/qml/StatusBarUtil.h | 31 + src/ui/qml/UIPlugInQml.cpp | 376 ++ src/ui/qml/UIPlugInQml.h | 82 + src/ui/qml/VersionInformationModel.cpp | 97 + src/ui/qml/VersionInformationModel.h | 38 + src/ui/qml/WorkflowModel.cpp | 216 + src/ui/qml/WorkflowModel.h | 76 + src/{ => ui}/qml/metadata.json | 0 src/ui/websocket/CMakeLists.txt | 13 + src/ui/websocket/UIPlugInWebSocket.cpp | 196 + src/ui/websocket/UIPlugInWebSocket.h | 56 + src/{ => ui}/websocket/metadata.json | 0 src/ui/widget/AboutDialog.cpp | 94 + src/ui/widget/AboutDialog.h | 40 + src/{ => ui}/widget/AboutDialog.ui | 0 src/ui/widget/AppQtGui.cpp | 585 +++ src/ui/widget/AppQtGui.h | 96 + src/ui/widget/AppQtMainWidget.cpp | 609 +++ src/ui/widget/AppQtMainWidget.h | 128 + src/ui/widget/AppQtMainWidget.ui | 843 ++++ src/ui/widget/AppStartPage.cpp | 51 + src/ui/widget/AppStartPage.h | 44 + src/{ => ui}/widget/AppStartPage.ui | 0 src/ui/widget/CMakeLists.txt | 15 + src/{ => ui}/widget/CredentialDialog.cpp | 0 src/ui/widget/CredentialDialog.h | 43 + src/{ => ui}/widget/CredentialDialog.ui | 0 src/{ => ui}/widget/DeleteHistoryDialog.cpp | 0 src/ui/widget/DeleteHistoryDialog.h | 32 + src/ui/widget/DetailDialog.cpp | 68 + src/ui/widget/DetailDialog.h | 39 + src/{ => ui}/widget/DetailDialog.ui | 0 src/ui/widget/DetailWidget.cpp | 82 + src/ui/widget/DetailWidget.h | 41 + src/{ => ui}/widget/DetailWidget.ui | 0 src/ui/widget/DeveloperModeHistoryWidget.cpp | 83 + src/ui/widget/DeveloperModeHistoryWidget.h | 46 + .../widget/DeveloperModeHistoryWidget.ui | 0 src/ui/widget/DeveloperSettingsWidget.cpp | 62 + src/ui/widget/DeveloperSettingsWidget.h | 47 + .../widget/DeveloperSettingsWidget.ui | 0 src/ui/widget/DiagnosisDialog.cpp | 105 + src/ui/widget/DiagnosisDialog.h | 48 + src/{ => ui}/widget/DiagnosisDialog.ui | 0 src/ui/widget/DiagnosisGui.cpp | 63 + src/ui/widget/DiagnosisGui.h | 36 + src/{ => ui}/widget/DiagnosisWidget.ui | 0 src/ui/widget/GeneralSettingsWidget.cpp | 112 + src/ui/widget/GeneralSettingsWidget.h | 49 + src/{ => ui}/widget/GeneralSettingsWidget.ui | 0 src/ui/widget/HistoryDetailWidget.cpp | 49 + src/ui/widget/HistoryDetailWidget.h | 40 + src/{ => ui}/widget/HistoryDetailWidget.ui | 0 src/ui/widget/HistoryWidget.cpp | 299 ++ src/ui/widget/HistoryWidget.h | 61 + src/ui/widget/HistoryWidget.ui | 197 + src/ui/widget/LogFileSaveDialog.cpp | 84 + src/ui/widget/LogFileSaveDialog.h | 30 + src/ui/widget/LogFilesDialog.cpp | 207 + src/ui/widget/LogFilesDialog.h | 54 + src/{ => ui}/widget/LogFilesDialog.ui | 0 src/{ => ui}/widget/PinSettingsInfoWidget.cpp | 0 src/ui/widget/PinSettingsInfoWidget.h | 41 + src/{ => ui}/widget/PinSettingsInfoWidget.ui | 0 src/ui/widget/PinSettingsWidget.cpp | 801 ++++ src/ui/widget/PinSettingsWidget.h | 126 + src/ui/widget/PinSettingsWidget.ui | 1464 +++++++ src/ui/widget/ProviderWidget.cpp | 152 + src/ui/widget/ProviderWidget.h | 45 + src/{ => ui}/widget/ProviderWidget.ui | 0 src/ui/widget/RandomPinDialog.cpp | 150 + src/ui/widget/RandomPinDialog.h | 48 + src/{ => ui}/widget/RandomPinDialog.ui | 0 src/ui/widget/ReaderDeviceDialog.cpp | 61 + src/ui/widget/ReaderDeviceDialog.h | 42 + src/{ => ui}/widget/ReaderDeviceDialog.ui | 0 src/ui/widget/ReaderDeviceGui.cpp | 81 + src/ui/widget/ReaderDeviceGui.h | 40 + src/ui/widget/ReaderDeviceWidget.cpp | 386 ++ src/ui/widget/ReaderDeviceWidget.h | 72 + src/ui/widget/ReaderDeviceWidget.ui | 394 ++ src/ui/widget/ReaderDriverModel.cpp | 171 + src/ui/widget/ReaderDriverModel.h | 59 + src/ui/widget/RemotePinInputDialog.cpp | 81 + src/ui/widget/RemotePinInputDialog.h | 39 + src/{ => ui}/widget/RemotePinInputDialog.ui | 0 src/ui/widget/SelfInformationWidget.cpp | 75 + src/ui/widget/SelfInformationWidget.h | 45 + src/ui/widget/SelfInformationWidget.ui | 193 + src/ui/widget/SettingsWidget.cpp | 375 ++ src/ui/widget/SettingsWidget.h | 89 + src/{ => ui}/widget/SettingsWidget.ui | 0 src/ui/widget/SetupAssistantGui.cpp | 52 + src/ui/widget/SetupAssistantGui.h | 37 + src/ui/widget/SetupAssistantWizard.cpp | 243 ++ src/ui/widget/SetupAssistantWizard.h | 74 + src/ui/widget/UIPlugInWidgets.cpp | 137 + src/ui/widget/UIPlugInWidgets.h | 43 + src/ui/widget/UpdateWindow.cpp | 76 + src/ui/widget/UpdateWindow.h | 48 + src/ui/widget/UpdateWindow.ui | 179 + src/{ => ui}/widget/generic/BusyOverlay.cpp | 0 src/ui/widget/generic/BusyOverlay.h | 44 + src/{ => ui}/widget/generic/BusyOverlay.ui | 0 .../widget/generic/BusyOverlayContainer.cpp | 45 + src/ui/widget/generic/BusyOverlayContainer.h | 32 + src/ui/widget/generic/ButtonState.h | 27 + .../widget/generic/ExclusiveButtonGroup.cpp | 119 + src/ui/widget/generic/ExclusiveButtonGroup.h | 55 + src/ui/widget/generic/GuiModule.h | 20 + src/ui/widget/generic/GuiUtils.cpp | 109 + src/ui/widget/generic/GuiUtils.h | 26 + src/ui/widget/generic/ListCheckItemWidget.cpp | 133 + src/ui/widget/generic/ListCheckItemWidget.h | 55 + .../widget/generic/ListCheckItemWidget.ui | 0 src/{ => ui}/widget/generic/ListItem.cpp | 0 src/ui/widget/generic/ListItem.h | 25 + .../widget/generic/ListItemIconLeft.cpp | 0 src/ui/widget/generic/ListItemIconLeft.h | 23 + .../widget/generic/ListItemIconRight.cpp | 0 src/ui/widget/generic/ListItemIconRight.h | 23 + .../widget/generic/ListItemSubTitle.cpp | 0 src/ui/widget/generic/ListItemSubTitle.h | 23 + src/{ => ui}/widget/generic/ListItemTitle.cpp | 0 src/ui/widget/generic/ListItemTitle.h | 23 + src/ui/widget/generic/PasswordEdit.cpp | 187 + src/ui/widget/generic/PasswordEdit.h | 55 + src/{ => ui}/widget/generic/PasswordEdit.ui | 0 .../widget/generic/TabButtonGroup.cpp | 0 src/ui/widget/generic/TabButtonGroup.h | 110 + src/{ => ui}/widget/metadata.json | 0 .../widget/step/AuthenticateStepsWidget.cpp | 60 + src/ui/widget/step/AuthenticateStepsWidget.h | 53 + .../widget/step/AuthenticateStepsWidget.ui | 0 src/ui/widget/step/SelfInfoWidget.cpp | 135 + src/ui/widget/step/SelfInfoWidget.h | 49 + src/{ => ui}/widget/step/SelfInfoWidget.ui | 0 .../step/StepAdviseUserToRemoveCardGui.cpp | 113 + .../step/StepAdviseUserToRemoveCardGui.h | 41 + .../widget/step/StepAuthenticationDoneGui.cpp | 0 .../widget/step/StepAuthenticationDoneGui.h | 28 + .../widget/step/StepAuthenticationEac1Gui.cpp | 147 + .../widget/step/StepAuthenticationEac1Gui.h | 56 + .../step/StepAuthenticationEac1Widget.cpp | 654 +++ .../step/StepAuthenticationEac1Widget.h | 114 + .../step/StepAuthenticationEac1Widget.ui | 395 ++ src/ui/widget/step/StepChooseCardGui.cpp | 269 ++ src/ui/widget/step/StepChooseCardGui.h | 56 + src/ui/widget/step/StepErrorGui.cpp | 114 + src/ui/widget/step/StepErrorGui.h | 43 + src/{ => ui}/widget/step/StepGui.cpp | 0 src/ui/widget/step/StepGui.h | 82 + .../widget/step/StepProcessingGui.cpp | 0 src/ui/widget/step/StepProcessingGui.h | 31 + .../StepShowSelfAuthenticationDataGui.cpp | 0 .../step/StepShowSelfAuthenticationDataGui.h | 37 + src/ui/widget/workflow/GenericWorkflowGui.h | 91 + .../workflow/WorkflowAuthenticateQtGui.cpp | 201 + .../workflow/WorkflowAuthenticateQtGui.h | 55 + .../workflow/WorkflowChangePinQtGui.cpp | 142 + .../widget/workflow/WorkflowChangePinQtGui.h | 42 + src/ui/widget/workflow/WorkflowGui.cpp | 29 + src/ui/widget/workflow/WorkflowGui.h | 71 + src/ui/widget/workflow/WorkflowQtWidget.cpp | 117 + src/ui/widget/workflow/WorkflowQtWidget.h | 64 + .../widget/workflow/WorkflowSelfInfoQtGui.cpp | 186 + .../widget/workflow/WorkflowSelfInfoQtGui.h | 53 + src/ui/widget/workflow/WorkflowWidgetParent.h | 21 + src/websocket/CMakeLists.txt | 6 - src/websocket/UIPlugInWebSocket.cpp | 159 - src/websocket/UIPlugInWebSocket.h | 57 - src/whitelist_client/CMakeLists.txt | 9 + src/whitelist_client/Survey.cpp | 102 + src/whitelist_client/Survey.h | 43 + src/whitelist_client/SurveyHandler.cpp | 67 + src/whitelist_client/SurveyHandler.h | 26 + src/widget/AboutDialog.cpp | 95 - src/widget/AboutDialog.h | 40 - src/widget/AppQtGui.cpp | 645 --- src/widget/AppQtGui.h | 106 - src/widget/AppQtMainWidget.cpp | 622 --- src/widget/AppQtMainWidget.h | 124 - src/widget/AppQtMainWidget.ui | 869 ---- src/widget/AppStartPage.cpp | 52 - src/widget/AppStartPage.h | 44 - src/widget/CMakeLists.txt | 8 - src/widget/CredentialDialog.h | 43 - src/widget/DeleteHistoryDialog.h | 32 - src/widget/DetailDialog.cpp | 68 - src/widget/DetailDialog.h | 39 - src/widget/DetailWidget.cpp | 83 - src/widget/DetailWidget.h | 41 - src/widget/DeveloperModeHistoryWidget.cpp | 82 - src/widget/DeveloperModeHistoryWidget.h | 46 - src/widget/DeveloperSettingsWidget.cpp | 63 - src/widget/DeveloperSettingsWidget.h | 47 - src/widget/DiagnosisDialog.cpp | 111 - src/widget/DiagnosisDialog.h | 44 - src/widget/DiagnosisGui.cpp | 64 - src/widget/DiagnosisGui.h | 36 - src/widget/DiagnosisWidget.cpp | 416 -- src/widget/DiagnosisWidget.h | 82 - src/widget/GeneralSettingsWidget.cpp | 95 - src/widget/GeneralSettingsWidget.h | 49 - src/widget/GuiProfile.cpp | 27 - src/widget/GuiProfile.h | 33 - src/widget/HistoryDetailWidget.cpp | 50 - src/widget/HistoryDetailWidget.h | 40 - src/widget/HistoryWidget.cpp | 304 -- src/widget/HistoryWidget.h | 61 - src/widget/HistoryWidget.ui | 200 - src/widget/LogFilesDialog.cpp | 235 - src/widget/LogFilesDialog.h | 48 - src/widget/PinSettingsInfoWidget.h | 41 - src/widget/PinSettingsWidget.cpp | 739 ---- src/widget/PinSettingsWidget.h | 118 - src/widget/PinSettingsWidget.ui | 1464 ------- src/widget/ProviderWidget.cpp | 155 - src/widget/ProviderWidget.h | 45 - src/widget/RandomPinDialog.cpp | 149 - src/widget/RandomPinDialog.h | 48 - src/widget/ReaderDeviceDialog.cpp | 62 - src/widget/ReaderDeviceDialog.h | 43 - src/widget/ReaderDeviceGui.cpp | 83 - src/widget/ReaderDeviceGui.h | 43 - src/widget/ReaderDeviceWidget.cpp | 391 -- src/widget/ReaderDeviceWidget.h | 72 - src/widget/ReaderDeviceWidget.ui | 397 -- src/widget/ReaderDriverModel.cpp | 172 - src/widget/ReaderDriverModel.h | 59 - src/widget/RemotePinInputDialog.cpp | 82 - src/widget/RemotePinInputDialog.h | 39 - src/widget/SelfInformationWidget.cpp | 75 - src/widget/SelfInformationWidget.h | 45 - src/widget/SelfInformationWidget.ui | 196 - src/widget/SettingsWidget.cpp | 381 -- src/widget/SettingsWidget.h | 89 - src/widget/SetupAssistantGui.cpp | 52 - src/widget/SetupAssistantGui.h | 36 - src/widget/SetupAssistantWizard.cpp | 245 -- src/widget/SetupAssistantWizard.h | 75 - src/widget/UIPlugInWidgets.cpp | 108 - src/widget/UIPlugInWidgets.h | 43 - src/widget/UpdateWindow.cpp | 79 - src/widget/UpdateWindow.h | 49 - src/widget/UpdateWindow.ui | 182 - src/widget/generic/BusyOverlay.h | 45 - src/widget/generic/BusyOverlayContainer.cpp | 45 - src/widget/generic/BusyOverlayContainer.h | 32 - src/widget/generic/ButtonState.h | 27 - src/widget/generic/ExclusiveButtonGroup.cpp | 120 - src/widget/generic/ExclusiveButtonGroup.h | 56 - src/widget/generic/GuiModule.h | 21 - src/widget/generic/GuiUtils.cpp | 111 - src/widget/generic/GuiUtils.h | 29 - src/widget/generic/HelpAction.cpp | 145 - src/widget/generic/HelpAction.h | 44 - src/widget/generic/ListCheckItemWidget.cpp | 134 - src/widget/generic/ListCheckItemWidget.h | 55 - src/widget/generic/ListItem.h | 25 - src/widget/generic/ListItemIconLeft.h | 23 - src/widget/generic/ListItemIconRight.h | 23 - src/widget/generic/ListItemSubTitle.h | 23 - src/widget/generic/ListItemTitle.h | 23 - src/widget/generic/PasswordEdit.cpp | 187 - src/widget/generic/PasswordEdit.h | 56 - src/widget/generic/TabButtonGroup.h | 110 - src/widget/step/AuthenticateStepsWidget.cpp | 60 - src/widget/step/AuthenticateStepsWidget.h | 54 - src/widget/step/SelfInfoWidget.cpp | 139 - src/widget/step/SelfInfoWidget.h | 49 - .../step/StepAdviseUserToRemoveCardGui.cpp | 93 - .../step/StepAdviseUserToRemoveCardGui.h | 40 - src/widget/step/StepAuthenticationDoneGui.h | 28 - src/widget/step/StepAuthenticationEac1Gui.cpp | 149 - src/widget/step/StepAuthenticationEac1Gui.h | 57 - .../step/StepAuthenticationEac1Widget.cpp | 645 --- .../step/StepAuthenticationEac1Widget.h | 114 - .../step/StepAuthenticationEac1Widget.ui | 398 -- src/widget/step/StepChooseCardGui.cpp | 239 -- src/widget/step/StepChooseCardGui.h | 57 - src/widget/step/StepErrorGui.cpp | 79 - src/widget/step/StepErrorGui.h | 39 - src/widget/step/StepGui.h | 83 - src/widget/step/StepProcessingGui.h | 31 - .../step/StepShowSelfAuthenticationDataGui.h | 37 - src/widget/workflow/GenericWorkflowGui.h | 91 - .../workflow/WorkflowAuthenticateQtGui.cpp | 184 - .../workflow/WorkflowAuthenticateQtGui.h | 53 - .../workflow/WorkflowChangePinQtGui.cpp | 106 - src/widget/workflow/WorkflowChangePinQtGui.h | 41 - src/widget/workflow/WorkflowGui.cpp | 24 - src/widget/workflow/WorkflowGui.h | 70 - src/widget/workflow/WorkflowQtWidget.cpp | 118 - src/widget/workflow/WorkflowQtWidget.h | 65 - src/widget/workflow/WorkflowSelfInfoQtGui.cpp | 171 - src/widget/workflow/WorkflowSelfInfoQtGui.h | 51 - src/widget/workflow/WorkflowWidgetParent.h | 21 - src/widgetDesignerPlugin/CMakeLists.txt | 3 - .../GovernikusPluginCollection.cpp | 35 - .../GovernikusPluginCollection.h | 27 - src/widgetDesignerPlugin/README.rst | 12 - .../GeneralSettingsWidgetDesignerPlugin.cpp | 92 - .../GeneralSettingsWidgetDesignerPlugin.h | 38 - .../plugins/HistoryWidgetDesignerPlugin.cpp | 92 - .../plugins/HistoryWidgetDesignerPlugin.h | 38 - .../PinSettingsWidgetDesignerPlugin.cpp | 92 - .../plugins/PinSettingsWidgetDesignerPlugin.h | 38 - .../plugins/ProviderWidgetDesignerPlugin.cpp | 92 - .../plugins/ProviderWidgetDesignerPlugin.h | 38 - .../SelfInformationWidgetDesignerPlugin.cpp | 92 - .../SelfInformationWidgetDesignerPlugin.h | 38 - .../plugins/SettingsWidgetDesignerPlugin.cpp | 92 - .../plugins/SettingsWidgetDesignerPlugin.h | 38 - src/windows.rc | 1 + test/CMakeLists.txt | 47 +- ...put.hex => EstablishPaceChannelOutput.hex} | 0 ...t2.hex => EstablishPaceChannelOutput2.hex} | 0 ...> EstablishPaceChannelOutput_fromCcid.hex} | 0 ... EstablishPaceChannelOutput_fromCcid2.hex} | 0 ...> EstablishPaceChannelOutput_wrongPIN.hex} | 0 test/fixture/core/http/DIDAuthenticateEAC1 | 38 - test/fixture/core/http/DIDAuthenticateEAC2 | 33 - test/fixture/core/http/DIDList | 27 - test/fixture/core/http/Disconnect | 20 - test/fixture/core/http/InitializeFramework | 18 - test/fixture/core/http/StartPaosResponse | 22 - test/fixture/core/http/Transmit | 45 - test/fixture/core/http/Transmit2 | 68 - test/fixture/fixture.qrc | 36 +- test/fixture/logfiles/empty.txt | 0 test/fixture/logfiles/size1.txt | 1 + test/fixture/logfiles/size160.txt | 80 + test/fixture/logfiles/size78.txt | 39 + test/fixture/logfiles/size80.txt | 40 + test/fixture/logfiles/size82.txt | 41 + test/fixture/paos/DIDAuthenticateResponse.xml | 30 + .../fixture/paos/DIDAuthenticateResponse2.xml | 33 + test/fixture/paos/StartPAOS.xml | 39 + test/fixture/paos/TransmitResponse.xml | 30 + test/fixture/self/SelfAuthenticationData.json | 51 + test/fixture/self/SelfAuthenticationData.xml | 50 - .../self/SelfAuthenticationDataNoAddress.json | 45 + .../self/SelfAuthenticationDataNoAddress.xml | 44 - .../self/SelfAuthenticationDataNoStreet.json | 50 + .../self/SelfAuthenticationDataNoStreet.xml | 48 - test/helper/CMakeLists.txt | 2 +- test/helper/CliHelper.h | 2 +- test/helper/MockActivationContext.h | 5 +- test/helper/MockCard.cpp | 6 + test/helper/MockCard.h | 5 +- test/helper/MockCardConnectionWorker.cpp | 87 + test/helper/MockCardConnectionWorker.h | 47 + test/helper/MockDataChannel.cpp | 12 +- test/helper/MockDataChannel.h | 4 +- test/helper/MockDownloader.cpp | 1 - test/helper/MockDownloader.h | 2 +- test/helper/MockHttpServer.cpp | 11 +- test/helper/MockHttpServer.h | 2 +- test/helper/MockIfdStatus.cpp | 62 - test/helper/MockIfdStatus.h | 37 - test/helper/MockNetworkManager.cpp | 5 +- test/helper/MockNetworkManager.h | 2 +- test/helper/MockNetworkReply.cpp | 4 +- test/helper/MockNetworkReply.h | 10 +- test/helper/MockReader.h | 8 +- test/helper/MockReaderConfiguration.h | 2 +- test/helper/MockReaderDetector.h | 2 +- test/helper/MockReaderManagerPlugIn.cpp | 16 + test/helper/MockReaderManagerPlugIn.h | 11 +- test/helper/MockRemoteDispatcher.cpp | 38 +- test/helper/MockRemoteDispatcher.h | 13 +- test/helper/MockRemoteServer.cpp | 72 + test/helper/MockRemoteServer.h | 41 + test/helper/MockSocket.h | 5 +- test/helper/MockWorkflowAuthenticateUi.h | 2 +- test/helper/MockWorkflowChangePinUi.h | 2 +- test/helper/MsgHandlerEnterPassword.cpp | 60 + test/helper/MsgHandlerEnterPassword.h | 25 + test/helper/PersoSimController.h | 2 +- test/helper/RemoteMessageChecker.cpp | 145 - test/helper/RemoteMessageChecker.h | 41 - test/helper/TestAuthContext.h | 3 +- test/helper/TestFileHelper.cpp | 2 - test/helper/TestFileHelper.h | 2 +- test/helper/WebSocketHelper.cpp | 2 +- test/helper/WebSocketHelper.h | 2 +- test/qml/CMakeLists.txt | 14 +- test/qml/QmlTestRunner.cpp | 18 + test/qml/desktop/CMakeLists.txt | 2 + test/qml/desktop/test_Global.qml | 14 + test/qml/desktop/test_TitleBar.qml | 14 + test/qml/generic/CMakeLists.txt | 6 + test/qml/generic/test_Global.qml | 74 + test/qml/generic/test_IdentifyView.qml | 14 + test/qml/generic/test_MainView.qml | 14 + test/qml/generic/test_ProgressView.qml | 14 + test/qml/generic/test_Provider.qml | 14 + test/qml/generic/test_ResultView.qml | 14 + test/qml/generic/test_Style.qml | 23 + test/qml/generic/test_TitleBar.qml | 14 + test/qml/generic/test_UiPluginQml.qml | 30 + test/qml/generic/test_Utils.qml | 14 + test/qml/mobile/CMakeLists.txt | 4 + test/qml/mobile/test_ChangePinView.qml | 14 + test/qml/mobile/test_DeveloperView.qml | 14 + test/qml/mobile/test_EnterPinView.qml | 14 + test/qml/mobile/test_FeedbackView.qml | 22 + test/qml/mobile/test_Global.qml | 54 + test/qml/mobile/test_HistoryView.qml | 14 + test/qml/mobile/test_InformationView.qml | 22 + test/qml/mobile/test_MoreView.qml | 14 + test/qml/mobile/test_Navigation.qml | 14 + test/qml/mobile/test_Provider.qml | 46 + test/qml/mobile/test_ProviderView.qml | 14 + test/qml/mobile/test_RemoteServiceView.qml | 14 + test/qml/mobile/test_SplashScreen.qml | 14 + test/qml/mobile/test_TechnologyInfo.qml | 14 + test/qml/mobile/test_TutorialView.qml | 14 + test/qml/mobile/test_View.qml | 22 + test/qml/mobile/test_WhiteListClientView.qml | 14 + test/qml/mobile/test_Workflow.qml | 22 + test/qml/test_Utils.qml | 16 - .../AusweisApp2/Global/test_Utils.qml | 16 - test/qml_stationary/CMakeLists.txt | 1 - test/qt/CMakeLists.txt | 16 +- .../test_WebserviceActivationContext.cpp | 102 + .../test_WebserviceActivationHandler.cpp | 38 +- test/qt/card/asn1/test_AccessRoleAndRight.cpp | 79 +- test/qt/card/asn1/test_CVCertificate.cpp | 9 +- .../asn1/test_CVCertificateChainBuilder.cpp | 10 +- .../card/asn1/test_CertificateDescription.cpp | 30 +- test/qt/card/asn1/test_EcdsaPublicKey.cpp | 6 +- test/qt/card/asn1/test_PACEInfo.cpp | 306 -- test/qt/card/asn1/test_PaceInfo.cpp | 304 ++ test/qt/card/asn1/test_SecurityInfos.cpp | 10 +- test/qt/card/asn1/test_SignatureChecker.cpp | 7 + test/qt/card/asn1/test_efCardAccess.cpp | 4 +- .../base/command/test_BaseCardCommand.cpp | 28 +- .../test_DestroyPaceChannelCommand.cpp | 42 + .../test_DidAuthenticateEAC1Command.cpp | 105 + .../test_EstablishPaceChannelCommand.cpp | 81 + .../base/command/test_SetEidPinCommand.cpp | 65 + .../base/command/test_TransmitCommand.cpp | 163 + .../base/command/test_UnblockPinCommand.cpp | 111 + .../command/test_UpdRetryCounterCommand.cpp | 49 + test/qt/card/base/test_Apdu.cpp | 84 - test/qt/card/base/test_CardConnection.cpp | 104 + test/qt/card/base/test_CardInfo.cpp | 65 + test/qt/card/base/test_CommandApdu.cpp | 218 + test/qt/card/base/test_Commands.cpp | 119 + test/qt/card/base/test_Reader.cpp | 104 + test/qt/card/base/test_ResponseApdu.cpp | 173 + ...etoothMessageParameterCardReaderStatus.cpp | 59 + .../bluetooth/test_BluetoothMessageParser.cpp | 4 +- test/qt/card/pace/test_EcdhKeyAgreement.cpp | 6 +- .../card/pace/test_KeyDerivationFunction.cpp | 6 +- test/qt/card/pace/test_PaceHandler.cpp | 30 +- test/qt/card/pace/test_SymmetricCipher.cpp | 21 +- test/qt/card/pcsc/test_pcscReaderFeature.cpp | 10 +- .../pcsc/test_pcscReaderPaceCapability.cpp | 10 +- .../remote/test_RemoteReaderManagerPlugin.cpp | 536 --- test/qt/card/test_CommandApdu.cpp | 54 - .../card/test_EstablishPACEChannelBuilder.cpp | 77 - .../card/test_EstablishPACEChannelOutput.cpp | 239 -- .../card/test_EstablishPACEChannelParser.cpp | 52 - test/qt/card/test_EstablishPaceChannel.cpp | 76 + .../card/test_EstablishPaceChannelOutput.cpp | 240 ++ .../card/test_EstablishPaceChannelParser.cpp | 51 + .../card/test_GeneralAuthenticateResponse.cpp | 1 - test/qt/card/test_MSEBuilder.cpp | 3 +- test/qt/card/test_ReaderManager.cpp | 55 +- test/qt/card/test_SecureMessaging.cpp | 14 +- .../test_ProviderConfiguration.cpp | 2 - .../test_ProviderConfigurationParser.cpp | 6 +- .../test_ReaderConfiguration.cpp | 86 +- .../test_ReaderConfigurationEntryParser.cpp | 2 - .../test_ReaderConfigurationParser.cpp | 2 +- test/qt/core/context/test_AuthContext.cpp | 160 +- .../qt/core/context/test_ChangePinContext.cpp | 85 + .../qt/core/context/test_DiagnosisContext.cpp | 99 + .../context/test_RemoteServiceContext.cpp | 83 + test/qt/core/context/test_WorkflowContext.cpp | 278 ++ .../controller/test_ChangePinController.cpp | 13 +- .../test_DidAuthenticateResponseEAC1.cpp | 30 +- .../test_DidAuthenticateResponseEAC2.cpp | 20 +- .../paos/invoke/test_DisconnectResponse.cpp | 24 +- test/qt/core/paos/invoke/test_PaosCreator.cpp | 48 +- test/qt/core/paos/invoke/test_StartPaos.cpp | 44 +- .../paos/invoke/test_TransmitResponse.cpp | 22 +- .../paos/retrieve/test_StartPAOSResponse.cpp | 12 +- test/qt/core/paos/retrieve/test_transmit.cpp | 30 +- test/qt/core/paos/test_MessageIdHandler.cpp | 44 - test/qt/core/paos/test_PaosMessage.cpp | 12 +- .../test_StateCertificateDescriptionCheck.cpp | 2 - test/qt/core/states/test_StateChangePin.cpp | 109 + .../core/states/test_StateChangePinRemote.cpp | 61 + .../states/test_StateCheckRefreshAddress.cpp | 153 +- test/qt/core/states/test_StateConnectCard.cpp | 77 + test/qt/core/states/test_StateDestroyPace.cpp | 77 + .../states/test_StateDidAuthenticateEac1.cpp | 111 + .../states/test_StateEstablishPaceChannel.cpp | 232 + .../test_StateEstablishPaceChannelRemote.cpp | 61 + .../states/test_StateGenericSendReceive.cpp | 103 +- test/qt/core/states/test_StateGetTcToken.cpp | 132 + .../states/test_StateInitializeFramework.cpp | 1 - .../core/states/test_StatePreVerification.cpp | 9 +- .../test_StateProcessCertificatesFromEac2.cpp | 4 +- .../test_StateProcessRemoteMessages.cpp | 104 + .../states/test_StateSelectPasswordId.cpp | 42 + .../qt/core/states/test_StateSelectReader.cpp | 83 + .../states/test_StateStartPaosResponse.cpp | 11 +- .../states/test_StateStartRemoteService.cpp | 44 + .../states/test_StateStopRemoteService.cpp | 56 + test/qt/core/states/test_StateTransmit.cpp | 120 + .../core/states/test_StateUpdRetryCounter.cpp | 110 + test/qt/core/test_CertificateChecker.cpp | 2 - test/qt/core/test_DiagnosisConnectionTest.cpp | 124 + test/qt/core/test_DiagnosisModel.cpp | 185 + test/qt/core/test_SelfAuthenticationData.cpp | 115 +- test/qt/core/test_TcToken.cpp | 176 +- test/qt/drivers/test_ReaderDetector.cpp | 3 +- test/qt/export/test_PdfExporter.cpp | 6 +- test/qt/file_provider/test_Downloader.cpp | 31 +- test/qt/file_provider/test_FileProvider.cpp | 14 +- test/qt/global/test_BuildHelper.cpp | 32 - test/qt/global/test_CardReturnCode.cpp | 8 +- test/qt/global/test_ECardApiResult.cpp | 332 ++ test/qt/global/test_EnumHelper.cpp | 12 +- test/qt/global/test_Env.cpp | 226 +- test/qt/global/test_GlobalStatus.cpp | 94 + test/qt/global/test_LanguageLoader.cpp | 10 +- test/qt/global/test_LogHandler.cpp | 150 +- test/qt/global/test_ResourceLoader.cpp | 9 +- test/qt/global/test_ScopeGuard.cpp | 6 +- test/qt/global/test_VersionInfo.cpp | 6 +- test/qt/global/test_VersionNumber.cpp | 1 - test/qt/global/test_result.cpp | 190 - test/qt/jsonapi/test_Message.cpp | 9 +- test/qt/jsonapi/test_MsgHandler.cpp | 2 +- test/qt/jsonapi/test_MsgHandlerAuth.cpp | 1 - .../qt/jsonapi/test_MsgHandlerCertificate.cpp | 1 - test/qt/jsonapi/test_MsgHandlerEnterCan.cpp | 94 +- test/qt/jsonapi/test_MsgHandlerEnterPin.cpp | 104 +- test/qt/jsonapi/test_MsgHandlerEnterPuk.cpp | 92 +- test/qt/jsonapi/test_MsgHandlerInsertCard.cpp | 7 +- test/qt/jsonapi/test_MsgHandlerReader.cpp | 25 +- test/qt/jsonapi/test_MsgHandlerReaderList.cpp | 24 +- test/qt/network/test_DatagramHandlerImpl.cpp | 41 +- test/qt/network/test_HttpResponse.cpp | 34 +- test/qt/network/test_HttpServer.cpp | 77 +- test/qt/network/test_NetworkManager.cpp | 25 +- test/qt/network/test_PortFile.cpp | 63 + test/qt/network/test_TlsChecker.cpp | 10 +- test/qt/network/test_UrlUtil.cpp | 64 +- test/qt/qml/test_AuthModel.cpp | 75 + test/qt/qml/test_ChangePinModel.cpp | 62 + test/qt/qml/test_ChatModel.cpp | 146 + test/qt/qml/test_ConnectivityManager.cpp | 78 + test/qt/qml/test_LogModel.cpp | 265 ++ test/qt/qml/test_NumberModel.cpp | 356 ++ .../qml/test_ProviderCategoryFilterModel.cpp | 78 + test/qt/qml/test_QmlFileStructure.cpp | 106 + test/qt/qml/test_RemoteServiceModel.cpp | 149 + test/qt/qml/test_SelfAuthModel.cpp | 106 + test/qt/qml/test_WorkflowModel.cpp | 138 + .../remote_device/messages/test_Discovery.cpp | 246 ++ .../messages/test_IfdConnect.cpp | 191 + .../messages/test_IfdConnectResponse.cpp | 199 + .../messages/test_IfdDisconnect.cpp | 181 + .../messages/test_IfdDisconnectResponse.cpp | 199 + .../remote_device/messages/test_IfdError.cpp | 199 + .../messages/test_IfdEstablishContext.cpp | 205 + .../test_IfdEstablishContextResponse.cpp | 199 + .../messages/test_IfdEstablishPaceChannel.cpp | 193 + .../test_IfdEstablishPaceChannelResponse.cpp | 209 + .../messages/test_IfdGetStatus.cpp | 181 + .../messages/test_IfdModifyPin.cpp | 46 +- .../messages/test_IfdModifyPinResponse.cpp | 86 +- .../remote_device/messages/test_IfdStatus.cpp | 390 ++ .../messages/test_IfdTransmit.cpp | 301 ++ .../messages/test_IfdTransmitResponse.cpp | 280 ++ .../messages/test_IfdVersion.cpp | 11 +- .../messages/test_RemoteMessage.cpp | 276 ++ .../messages/test_RemoteMessageResponse.cpp | 143 + .../remote_device/test_RemoteClientImpl.cpp | 116 +- .../qt/remote_device/test_RemoteConnector.cpp | 93 +- .../test_RemoteDeviceDescriptor.cpp | 18 +- .../test_RemoteDeviceListImpl.cpp | 37 +- .../remote_device/test_RemoteDeviceModel.cpp | 183 + test/qt/remote_device/test_RemoteDisp.cpp | 342 ++ test/qt/remote_device/test_RemoteDispImpl.cpp | 275 -- test/qt/remote_device/test_RemoteHelper.cpp | 48 - .../test_RemoteMessageParser.cpp | 609 --- test/qt/remote_device/test_RemoteMessages.cpp | 504 --- .../test_RemoteReaderAdvertiser.cpp | 27 +- .../test_RemoteReaderManagerPlugin.cpp | 492 +++ test/qt/remote_device/test_RemoteServer.cpp | 212 - .../remote_device/test_RemoteServerImpl.cpp | 213 + .../qt/remote_device/test_RemoteTlsServer.cpp | 15 +- .../test_RemoteWebSocketServer.cpp | 9 +- .../test_ServerMessageHandler.cpp | 596 ++- test/qt/securestorage/test_SecureStorage.cpp | 63 +- .../securestorage/test_TlsConfiguration.cpp | 27 +- test/qt/services/test_AppUpdatr.cpp | 5 +- test/qt/settings/test_AppSettings.cpp | 41 - test/qt/settings/test_GeneralSettings.cpp | 17 +- test/qt/settings/test_HistorySettings.cpp | 8 +- .../settings/test_RemoteServiceSettings.cpp | 24 +- test/qt/websocket/test_UIPlugInWebSocket.cpp | 26 +- test/qt/whitelist_client/test_Survey.cpp | 68 + test/qt/widget/test_HelpAction.cpp | 2 +- uncrustify.cfg | 8 +- utils/CMakeLists.txt | 12 - .../resources/CVCA/CERT_CV_CVCA_4_2.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_2.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_CVCA_4_3.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_3.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_CVCA_4_4.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_4.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_CVCA_4_5.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_5.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_CVCA_4_6.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_6.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_CVCA_4_7.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_CVCA_4_7.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_1.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_1.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_1.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_1.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_1_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_2.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_2.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_2.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_2.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_2_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_3.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_3.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_3.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_3.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_3_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_4.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_4.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_4.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_4.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_4_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_5.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_5.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_5.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_5.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_5_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_6.bin | Bin 311 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_6.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/CERT_CV_LINK_4_6.cvcert | Bin 447 -> 0 bytes .../CVCA/CERT_CV_LINK_4_6.cvcert.hex | 1 - .../resources/CVCA/CERT_CV_LINK_4_6_KEY.pkcs8 | Bin 591 -> 0 bytes .../resources/CVCA/DECVCAeIDCT00001.bin | Bin 311 -> 0 bytes .../resources/CVCA/DECVCAeIDCT00001.bin.cv | Bin 290 -> 0 bytes .../resources/CVCA/DECVCAeIDCT00001.cvcert | Bin 447 -> 0 bytes .../CVCA/DECVCAeIDCT00001.cvcert.hex | 1 - .../resources/CVCA/DECVCAeIDCT00001.pkcs8 | Bin 591 -> 0 bytes 2342 files changed, 78821 insertions(+), 54761 deletions(-) create mode 100644 .clang-tidy create mode 100644 CMakeGraphVizOptions.cmake create mode 100644 docs/installation/README.de.rst create mode 100644 docs/installation/README.en.rst create mode 100644 docs/installation/conf.py.in create mode 100644 docs/installation/index.rst create mode 100644 docs/releasenotes/1.16.0.rst create mode 100644 docs/sdk/desktop.rst create mode 100644 patches/openssl-DSA-mod-inverse-fix.patch create mode 100644 patches/openssl-Ignore-disabled-ciphers.patch delete mode 100644 patches/openssl-RSA-key-generation-ensure-BN_mod_inverse-and-BN_mod_.patch delete mode 100644 patches/openssl-Reject-excessively-large-primes-in-DH-key-generation.patch delete mode 100644 patches/openssl-Revert-Configure-use-a-better-method-to-identify-gcc.patch create mode 100644 patches/openssl-Timing-vulnerability-in-DSA-signature-generation-CVE.patch create mode 100644 patches/openssl-Timing-vulnerability-in-ECDSA-signature-generation-C.patch create mode 100644 patches/openssl-android-shlib_variant.patch delete mode 100644 patches/openssl-fix-no-engine-build.patch delete mode 100644 patches/openssl_iOS.patch delete mode 100644 patches/openssl_rsa_psk.patch create mode 100644 patches/qt-Add-work-around-for-freebsd-build.patch create mode 100644 patches/qt-Android-Fix-crash.patch create mode 100644 patches/qt-Android-fix-compile-with-NDK-r18.patch delete mode 100644 patches/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch delete mode 100644 patches/qt-Change-build-configuration-for-Qt-on-iOS.patch create mode 100644 patches/qt-Introduce-reportError-to-fix-QMetaObject-invokeMethod.patch delete mode 100644 patches/qt-Make-server-side-signature-algorithms-configurable.patch delete mode 100644 patches/qt-QCoreTextFontEngine-Fix-build-with-Xcode-9.3.patch create mode 100644 patches/qt-QObject-Fix-isSignalConnected-when-signals-have-been.patch create mode 100644 patches/qt-QUrl-Support-IPv6-addresses-with-zone-id.patch delete mode 100644 patches/qt-Register-additional-meta-types.patch create mode 100644 patches/qt-Remove-Qt-Labs-specific-plugins-from-the-build.patch create mode 100644 patches/qt-Use-QUrl-toString-when-forming-the-Host-header.patch create mode 100644 patches/qt-Use-user-provided-session-data-if-available.patch create mode 100644 patches/qt-configure-detect-fxc.exe-more-thoroughly.patch create mode 100644 patches/qt-configure-refactor-directx-checks.patch create mode 100644 patches/qt-disable-designer.patch create mode 100644 patches/qt-fix-macOS-no-printer.patch delete mode 100644 patches/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch delete mode 100644 resources/images/AusweisApp_2_Logo.svg rename resources/images/{AppLogo_AutentApp2_2014.png => Logo_AusweisApp2.png} (100%) rename resources/images/{Logo_AutentApp2_2014.png => Logo_Governikus.png} (100%) delete mode 100644 resources/images/android/android_arrow_back.svg delete mode 100644 resources/images/android/android_arrow_back_white.svg delete mode 100644 resources/images/android/android_nav_button_icon_history.svg delete mode 100644 resources/images/android/android_nav_button_icon_identify.svg delete mode 100644 resources/images/android/android_nav_button_icon_provider.svg delete mode 100644 resources/images/android/android_nav_button_icon_settings.svg delete mode 100644 resources/images/android/android_toggle_off.png delete mode 100644 resources/images/android/android_toggle_off_disabled.png delete mode 100644 resources/images/android/android_toggle_on.png delete mode 100644 resources/images/android/android_toggle_on_disabled.png delete mode 100644 resources/images/android/arrowLeft.svg delete mode 100644 resources/images/android/arrowLeftWhite.svg delete mode 100644 resources/images/android/arrowRightWhite.svg delete mode 100644 resources/images/android/checkbox_0.svg delete mode 100644 resources/images/android/checkbox_1.svg delete mode 100644 resources/images/android/navigation/teilen.svg create mode 100644 resources/images/android/navigation/tutorial.svg delete mode 100644 resources/images/android/navigation/versionsinformation.svg delete mode 100644 resources/images/android/tabDivider.svg rename resources/images/{android => }/arrowRight.svg (100%) delete mode 100644 resources/images/back-chevron.png delete mode 100644 resources/images/bspd1.svg rename resources/images/{android/search_cancel.svg => cancel.svg} (100%) delete mode 100644 resources/images/delete.png rename resources/images/{iOS/Header-Ausweisapp@3x.png => desktop/background.png} (100%) create mode 100644 resources/images/desktop/continue_arrow.svg create mode 100644 resources/images/desktop/help_icon.svg create mode 100644 resources/images/desktop/main_history.svg create mode 100644 resources/images/desktop/main_identify.svg create mode 100644 resources/images/desktop/main_pin.svg create mode 100644 resources/images/desktop/main_provider.svg create mode 100755 resources/images/desktop/sandglass.svg create mode 100644 resources/images/desktop/settings_icon.svg create mode 100644 resources/images/desktop/titlebar_arrow.svg delete mode 100755 resources/images/green_check_mark.svg delete mode 100755 resources/images/gruener_Haken.svg delete mode 100644 resources/images/iOS/arrowLeft.svg delete mode 100644 resources/images/iOS/arrowRight.svg delete mode 100644 resources/images/iOS/list_item_arrow.svg create mode 100644 resources/images/iOS/more/icon_mehr_log.svg create mode 100644 resources/images/iOS/more/icon_mehr_tutorial.svg delete mode 100644 resources/images/iOS/radio_button_check_ios.svg delete mode 100644 resources/images/iOS/toggle_disabled.png delete mode 100644 resources/images/iOS/toggle_off.png delete mode 100644 resources/images/iOS/toggle_on.png create mode 100644 resources/images/icon_pair.svg create mode 100644 resources/images/icon_settings.svg delete mode 100644 resources/images/padlock.svg delete mode 100644 resources/images/padlock_empty.svg mode change 100755 => 100644 resources/images/reader/default_more_reader.png mode change 100755 => 100644 resources/images/reader/default_reader.png mode change 100755 => 100644 resources/images/reader/src/img_Remote_Display.png delete mode 100644 resources/images/rotes_X.svg rename resources/images/{android/search_icon.svg => search.svg} (100%) create mode 100644 resources/images/share.svg create mode 100644 resources/images/status_error.svg create mode 100644 resources/images/status_info.svg create mode 100755 resources/images/status_ok.svg delete mode 100644 resources/images/submit.png create mode 100644 resources/images/trash_icon_all.svg create mode 100644 resources/images/trash_icon_white.svg create mode 100644 resources/images/tutorial/arrow_blue.svg create mode 100644 resources/images/tutorial/arrows.svg create mode 100644 resources/images/tutorial/bluetooth.svg create mode 100644 resources/images/tutorial/button_de.png create mode 100644 resources/images/tutorial/button_en.png create mode 100644 resources/images/tutorial/bva.svg create mode 100644 resources/images/tutorial/check.svg create mode 100644 resources/images/tutorial/circle-1.svg create mode 100644 resources/images/tutorial/circle-2.svg create mode 100644 resources/images/tutorial/circle-3.svg create mode 100644 resources/images/tutorial/circle-4.svg create mode 100644 resources/images/tutorial/circle-lock-2.svg create mode 100644 resources/images/tutorial/circle-lock.svg create mode 100644 resources/images/tutorial/click.svg create mode 100644 resources/images/tutorial/desktop.svg create mode 100644 resources/images/tutorial/generated/how_desktop.svg create mode 100644 resources/images/tutorial/generated/how_device_lineup.svg create mode 100644 resources/images/tutorial/generated/how_form_no_fun.svg create mode 100644 resources/images/tutorial/generated/how_idcard_cycle.svg create mode 100644 resources/images/tutorial/generated/how_method_bluetooth.svg create mode 100644 resources/images/tutorial/generated/how_method_nfc.svg create mode 100644 resources/images/tutorial/generated/how_method_sac_desktop.svg create mode 100644 resources/images/tutorial/generated/how_method_sac_mobile.svg create mode 100644 resources/images/tutorial/generated/how_questions_everywhere.svg create mode 100644 resources/images/tutorial/generated/important_lets_go.svg create mode 100644 resources/images/tutorial/generated/important_pin5.svg create mode 100644 resources/images/tutorial/generated/important_pin6.svg create mode 100644 resources/images/tutorial/generated/important_space_questionmark.svg create mode 100644 resources/images/tutorial/generated/reader_bluetooth_card_inserted.svg create mode 100644 resources/images/tutorial/generated/reader_bluetooth_connection.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_finished.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_npa_on_smartphone.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_pin6.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_provider_on_smartphone.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_smartphone_nfc_position.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_userdata_example_de.svg create mode 100644 resources/images/tutorial/generated/reader_nfc_userdata_example_en.svg create mode 100644 resources/images/tutorial/generated/reader_sac_aa2_ok.svg create mode 100644 resources/images/tutorial/generated/reader_sac_menu_de.svg create mode 100644 resources/images/tutorial/generated/reader_sac_menu_en.svg create mode 100644 resources/images/tutorial/generated/reader_sac_no_nfc_devices.svg create mode 100644 resources/images/tutorial/generated/reader_sac_no_nfc_provider.svg create mode 100644 resources/images/tutorial/generated/reader_sac_npa_on_laptop.svg create mode 100644 resources/images/tutorial/generated/reader_sac_provider_on_laptop.svg create mode 100644 resources/images/tutorial/generated/where_identify_now_de.svg create mode 100644 resources/images/tutorial/generated/where_identify_now_en.svg create mode 100644 resources/images/tutorial/generated/where_lay_down_id.svg create mode 100644 resources/images/tutorial/generated/where_overview_question.svg create mode 100644 resources/images/tutorial/generated/where_pin6.svg create mode 100644 resources/images/tutorial/generated/where_providerlist_screenshot_de.svg create mode 100644 resources/images/tutorial/generated/where_providerlist_screenshot_en.svg create mode 100644 resources/images/tutorial/generated/where_userdata_example_de.svg create mode 100644 resources/images/tutorial/generated/where_userdata_example_en.svg create mode 100644 resources/images/tutorial/hand.svg create mode 100644 resources/images/tutorial/hint.svg create mode 100644 resources/images/tutorial/idcard.svg create mode 100644 resources/images/tutorial/identify.svg create mode 100644 resources/images/tutorial/laptop.svg create mode 100644 resources/images/tutorial/letters.svg create mode 100644 resources/images/tutorial/main_menu_how_caret.svg create mode 100644 resources/images/tutorial/main_menu_important_caret.svg create mode 100644 resources/images/tutorial/main_menu_what_caret.svg create mode 100644 resources/images/tutorial/main_menu_where_caret.svg create mode 100644 resources/images/tutorial/nfc.svg create mode 100644 resources/images/tutorial/no-nfc.svg create mode 100644 resources/images/tutorial/phone-screen.svg create mode 100644 resources/images/tutorial/phone.svg create mode 100755 resources/images/tutorial/phone_list.svg create mode 100644 resources/images/tutorial/phone_screen_de.jpg create mode 100644 resources/images/tutorial/phone_screen_en.jpg create mode 100644 resources/images/tutorial/pin-5@2x.png create mode 100644 resources/images/tutorial/pin-6@2x.png create mode 100644 resources/images/tutorial/play_movie.png create mode 100644 resources/images/tutorial/provider_home.svg create mode 100644 resources/images/tutorial/providericons.png create mode 100644 resources/images/tutorial/questionmark.svg create mode 100644 resources/images/tutorial/reader.svg create mode 100644 resources/images/tutorial/rectangles.svg create mode 100644 resources/images/tutorial/save.svg create mode 100644 resources/images/tutorial/screenshot_cert_de.png create mode 100644 resources/images/tutorial/screenshot_cert_en.png create mode 100644 resources/images/tutorial/screenshot_choose_reader_de.png create mode 100644 resources/images/tutorial/screenshot_choose_reader_en.png create mode 100644 resources/images/tutorial/screenshot_menu_providerlist_de.png create mode 100644 resources/images/tutorial/screenshot_menu_providerlist_en.png create mode 100644 resources/images/tutorial/screenshot_pairing_de.png create mode 100644 resources/images/tutorial/screenshot_pairing_en.png create mode 100644 resources/images/tutorial/screenshot_pin_management_menu_de.png create mode 100644 resources/images/tutorial/screenshot_pin_management_menu_en.png create mode 100644 resources/images/tutorial/screenshot_providerlist_de.png create mode 100644 resources/images/tutorial/screenshot_providerlist_en.png create mode 100644 resources/images/tutorial/screenshot_sac_menu_de.png create mode 100644 resources/images/tutorial/screenshot_sac_menu_en.png create mode 100644 resources/images/tutorial/section_seperator_how.svg create mode 100644 resources/images/tutorial/section_seperator_important.svg create mode 100644 resources/images/tutorial/section_seperator_what.svg create mode 100644 resources/images/tutorial/section_seperator_where.svg create mode 100644 resources/images/tutorial/src/how_desktop.svg create mode 100644 resources/images/tutorial/src/how_device_lineup.svg create mode 100644 resources/images/tutorial/src/how_form_no_fun.svg create mode 100644 resources/images/tutorial/src/how_idcard_cycle.svg create mode 100644 resources/images/tutorial/src/how_method_bluetooth.svg create mode 100644 resources/images/tutorial/src/how_method_nfc.svg create mode 100644 resources/images/tutorial/src/how_method_sac_desktop.svg create mode 100644 resources/images/tutorial/src/how_method_sac_mobile.svg create mode 100644 resources/images/tutorial/src/how_questions_everywhere.svg create mode 100644 resources/images/tutorial/src/important_lets_go.svg create mode 100644 resources/images/tutorial/src/important_pin5.svg create mode 100644 resources/images/tutorial/src/important_pin6.svg create mode 100644 resources/images/tutorial/src/important_space_questionmark.svg create mode 100644 resources/images/tutorial/src/reader_bluetooth_card_inserted.svg create mode 100644 resources/images/tutorial/src/reader_bluetooth_connection.svg create mode 100644 resources/images/tutorial/src/reader_nfc_finished.svg create mode 100644 resources/images/tutorial/src/reader_nfc_npa_on_smartphone.svg create mode 100644 resources/images/tutorial/src/reader_nfc_pin6.svg create mode 100644 resources/images/tutorial/src/reader_nfc_provider_on_smartphone.svg create mode 100644 resources/images/tutorial/src/reader_nfc_smartphone_nfc_position.svg create mode 100644 resources/images/tutorial/src/reader_nfc_userdata_example_de.svg create mode 100644 resources/images/tutorial/src/reader_nfc_userdata_example_en.svg create mode 100644 resources/images/tutorial/src/reader_sac_aa2_ok.svg create mode 100644 resources/images/tutorial/src/reader_sac_menu_de.svg create mode 100644 resources/images/tutorial/src/reader_sac_menu_en.svg create mode 100644 resources/images/tutorial/src/reader_sac_no_nfc_devices.svg create mode 100644 resources/images/tutorial/src/reader_sac_no_nfc_provider.svg create mode 100644 resources/images/tutorial/src/reader_sac_npa_on_laptop.svg create mode 100644 resources/images/tutorial/src/reader_sac_provider_on_laptop.svg create mode 100644 resources/images/tutorial/src/where_identify_now_de.svg create mode 100644 resources/images/tutorial/src/where_identify_now_en.svg create mode 100644 resources/images/tutorial/src/where_lay_down_id.svg create mode 100644 resources/images/tutorial/src/where_overview_question.svg create mode 100644 resources/images/tutorial/src/where_pin6.svg create mode 100644 resources/images/tutorial/src/where_providerlist_screenshot_de.svg create mode 100644 resources/images/tutorial/src/where_providerlist_screenshot_en.svg create mode 100644 resources/images/tutorial/src/where_userdata_example_de.svg create mode 100644 resources/images/tutorial/src/where_userdata_example_en.svg create mode 100644 resources/images/tutorial/tablet-nfc.svg create mode 100644 resources/images/tutorial/tablet-no-nfc.svg create mode 100644 resources/images/tutorial/tablet.svg create mode 100644 resources/images/tutorial/thumb_up.svg create mode 100644 resources/images/tutorial/up_icon.svg create mode 100644 resources/images/tutorial/usb.svg create mode 100644 resources/images/tutorial/user-tine@3x.png create mode 100644 resources/images/tutorial/wifi.svg create mode 100644 resources/images/tutorial/zoom_triangle.svg delete mode 100755 resources/jenkins/changelog.sh delete mode 100644 resources/jenkins/changelog.xsl create mode 100644 resources/packaging/android/AndroidManifest.xml.aar.in create mode 100644 resources/packaging/android/AndroidManifest.xml.apk.in delete mode 100644 resources/packaging/android/AndroidManifest.xml.in create mode 100644 resources/packaging/android/build.gradle.append create mode 100644 resources/packaging/android/fileprovider.xml create mode 100644 resources/packaging/android/pom.xml.in create mode 100644 resources/packaging/macos/autostart_helper/Info.plist delete mode 100755 resources/packaging/macos/start-ausweisapp2.sh create mode 100644 resources/packaging/win/install_settings.wxs create mode 100644 resources/packaging/win/runtime_settings.wxs delete mode 100644 resources/qml/+android/ContentArea.qml create mode 100644 resources/qml/+desktop/main.qml delete mode 100644 resources/qml/+ios/ContentArea.qml create mode 100644 resources/qml/+mobile/main.qml delete mode 100644 resources/qml/ContentArea.qml delete mode 100644 resources/qml/ContentAreaLoader.qml delete mode 100644 resources/qml/ContentAreaSelector.qml create mode 100644 resources/qml/Governikus/ChangePinView/+android/ChangePinViewContent.qml create mode 100644 resources/qml/Governikus/ChangePinView/+ios/ChangePinViewContent.qml create mode 100644 resources/qml/Governikus/ChangePinView/ChangePinController.qml create mode 100644 resources/qml/Governikus/ChangePinView/ChangePinView.qml create mode 100644 resources/qml/Governikus/ChangePinView/qmldir create mode 100644 resources/qml/Governikus/FeedbackView/+mobile/Feedback.qml create mode 100644 resources/qml/Governikus/FeedbackView/+mobile/Log.qml create mode 100644 resources/qml/Governikus/FeedbackView/+mobile/LogTitleBarControls.qml create mode 100644 resources/qml/Governikus/FeedbackView/+mobile/StoreFeedbackPopup.qml delete mode 100644 resources/qml/Governikus/FeedbackView/Feedback.qml delete mode 100644 resources/qml/Governikus/Global/+android/+tablet/PlatformConstants.qml delete mode 100644 resources/qml/Governikus/Global/+android/GButton.qml delete mode 100644 resources/qml/Governikus/Global/+android/GCheckBox.qml delete mode 100644 resources/qml/Governikus/Global/+android/LabeledText.qml delete mode 100644 resources/qml/Governikus/Global/+android/Pane.qml delete mode 100644 resources/qml/Governikus/Global/+android/PlatformConstants.qml create mode 100644 resources/qml/Governikus/Global/+desktop/+mac/BrandConstants.qml create mode 100644 resources/qml/Governikus/Global/+desktop/+win/BrandConstants.qml create mode 100644 resources/qml/Governikus/Global/+desktop/ContinueButton.qml create mode 100644 resources/qml/Governikus/Global/+desktop/GButton.qml create mode 100644 resources/qml/Governikus/Global/+desktop/GCheckBox.qml create mode 100644 resources/qml/Governikus/Global/+desktop/GText.qml create mode 100644 resources/qml/Governikus/Global/+desktop/GTextField.qml create mode 100644 resources/qml/Governikus/Global/+desktop/LabeledText.qml create mode 100644 resources/qml/Governikus/Global/+desktop/Pane.qml create mode 100644 resources/qml/Governikus/Global/+desktop/PlatformConstants.qml delete mode 100644 resources/qml/Governikus/Global/+ios/+tablet/Pane.qml delete mode 100644 resources/qml/Governikus/Global/+ios/+tablet/PlatformConstants.qml delete mode 100644 resources/qml/Governikus/Global/+ios/GButton.qml delete mode 100644 resources/qml/Governikus/Global/+ios/GCheckBox.qml delete mode 100644 resources/qml/Governikus/Global/+ios/LabeledText.qml delete mode 100644 resources/qml/Governikus/Global/+ios/Pane.qml delete mode 100644 resources/qml/Governikus/Global/+ios/PlatformConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/+phone/DeviceConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/+tablet/DeviceConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/BrandConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/GButton.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/GCheckBox.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/LabeledText.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+android/Pane.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/+phone/DeviceConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/+phone/Pane.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/+tablet/DeviceConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/+tablet/Pane.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/BrandConstants.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/GButton.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/GCheckBox.qml create mode 100644 resources/qml/Governikus/Global/+mobile/+ios/LabeledText.qml create mode 100644 resources/qml/Governikus/Global/+mobile/ConfirmationPopup.qml create mode 100644 resources/qml/Governikus/Global/+mobile/GComboBox.qml create mode 100644 resources/qml/Governikus/Global/+mobile/GRadioButton.qml create mode 100644 resources/qml/Governikus/Global/+mobile/GSwitch.qml create mode 100644 resources/qml/Governikus/Global/+mobile/GTextField.qml create mode 100644 resources/qml/Governikus/Global/+mobile/LocationButton.qml create mode 100644 resources/qml/Governikus/Global/+mobile/PlatformConstants.qml delete mode 100644 resources/qml/Governikus/Global/GButton.qml delete mode 100644 resources/qml/Governikus/Global/GCheckBox.qml delete mode 100644 resources/qml/Governikus/Global/GSwitch.qml delete mode 100644 resources/qml/Governikus/Global/GTextField.qml delete mode 100644 resources/qml/Governikus/Global/LabeledText.qml delete mode 100644 resources/qml/Governikus/Global/LocationButton.qml delete mode 100644 resources/qml/Governikus/Global/Pane.qml create mode 100644 resources/qml/Governikus/Global/PaneTitle.qml delete mode 100644 resources/qml/Governikus/Global/PlatformConstants.qml delete mode 100644 resources/qml/Governikus/Global/SectionPage.qml create mode 100644 resources/qml/Governikus/Global/StatusIcon.qml create mode 100644 resources/qml/Governikus/HistoryView/+android/+phone/HistoryView.qml delete mode 100644 resources/qml/Governikus/HistoryView/+android/CustomSwipeBar.qml delete mode 100644 resources/qml/Governikus/HistoryView/+android/HistoryView.qml create mode 100644 resources/qml/Governikus/HistoryView/+ios/+phone/HistoryView.qml delete mode 100644 resources/qml/Governikus/HistoryView/+ios/CustomSwipeBar.qml delete mode 100644 resources/qml/Governikus/HistoryView/+ios/HistoryView.qml delete mode 100644 resources/qml/Governikus/HistoryView/ContextMenuEntry.qml delete mode 100644 resources/qml/Governikus/HistoryView/CustomSwipeBar.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryContextMenu.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryDetails.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryItemImage.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryListView.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryListViewDelegate.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryView.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryViewBackground.qml delete mode 100644 resources/qml/Governikus/HistoryView/HistoryViewPage.qml create mode 100644 resources/qml/Governikus/HistoryView/HistoryViewTitleBarControls.qml delete mode 100644 resources/qml/Governikus/HistoryView/IosCheckBoxStyle.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+android/+tablet/IdentifyViewContent.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+android/DataGroup.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+android/IdentifyViewContent.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/CertificateDescriptionPage.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/DataGroup.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/EditRights.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/IdentifyController.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/IdentifyView.qml create mode 100644 resources/qml/Governikus/IdentifyView/+desktop/SelfAuthenticationData.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+ios/+tablet/DataGroup.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+ios/+tablet/IdentifyViewContent.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+ios/DataGroup.qml delete mode 100644 resources/qml/Governikus/IdentifyView/+ios/IdentifyViewContent.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+android/+phone/EditRights.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+android/+tablet/EditRights.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+android/DataGroup.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+ios/+phone/DataGroup.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+ios/+phone/EditRights.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+ios/+tablet/DataGroup.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/+ios/+tablet/EditRights.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/CertificateDescriptionPage.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/IdentifyController.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/IdentifyView.qml create mode 100644 resources/qml/Governikus/IdentifyView/+mobile/SelfAuthenticationData.qml delete mode 100644 resources/qml/Governikus/IdentifyView/CertificateDescriptionPage.qml delete mode 100644 resources/qml/Governikus/IdentifyView/DataGroup.qml delete mode 100644 resources/qml/Governikus/IdentifyView/IdentifyController.qml delete mode 100644 resources/qml/Governikus/IdentifyView/IdentifyView.qml delete mode 100644 resources/qml/Governikus/IdentifyView/IdentifyViewContent.qml delete mode 100644 resources/qml/Governikus/IdentifyView/IdentifyViewInfo.qml delete mode 100644 resources/qml/Governikus/IdentifyView/IdentifyWorkflow.qml delete mode 100644 resources/qml/Governikus/IdentifyView/SelfAuthenticationData.qml create mode 100644 resources/qml/Governikus/InformationView/VersionInformation.qml create mode 100644 resources/qml/Governikus/MainView/+desktop/MainView.qml create mode 100644 resources/qml/Governikus/MainView/+desktop/Tile.qml create mode 100644 resources/qml/Governikus/MainView/+mobile/MainView.qml create mode 100644 resources/qml/Governikus/MainView/qmldir delete mode 100644 resources/qml/Governikus/Navigation/Navigation.qml delete mode 100644 resources/qml/Governikus/Navigation/NavigationItem.qml delete mode 100644 resources/qml/Governikus/Navigation/NavigationView.qml delete mode 100644 resources/qml/Governikus/PinView/+android/PinViewContent.qml delete mode 100644 resources/qml/Governikus/PinView/+ios/PinViewContent.qml delete mode 100644 resources/qml/Governikus/PinView/ChangePinController.qml delete mode 100644 resources/qml/Governikus/PinView/PinView.qml delete mode 100644 resources/qml/Governikus/PinView/PinViewContent.qml delete mode 100644 resources/qml/Governikus/PinView/PinWorkflow.qml delete mode 100644 resources/qml/Governikus/PinView/qmldir create mode 100644 resources/qml/Governikus/ProgressView/+desktop/ProgressView.qml create mode 100644 resources/qml/Governikus/ProgressView/+mobile/ProgressView.qml delete mode 100644 resources/qml/Governikus/ProgressView/ProgressView.qml delete mode 100644 resources/qml/Governikus/Provider/+android/ProviderDetailView.qml delete mode 100644 resources/qml/Governikus/Provider/+android/ProviderViewDelegate.qml create mode 100644 resources/qml/Governikus/Provider/+desktop/ProviderDetailView.qml create mode 100644 resources/qml/Governikus/Provider/+desktop/ProviderInfoSection.qml delete mode 100644 resources/qml/Governikus/Provider/+ios/ProviderDetailView.qml delete mode 100644 resources/qml/Governikus/Provider/+ios/ProviderViewDelegate.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+android/ProviderDetailTab.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+android/ProviderViewDelegate.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+ios/ProviderDetailTab.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+ios/ProviderViewDelegate.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+phone/ProviderDetailView.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderContactInfo.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderContactInfoItem.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailButtonBar.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailDescription.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailHistory.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailHistoryInfo.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailHistoryItem.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/+tablet/ProviderDetailView.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/ProviderContactTab.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/ProviderHeader.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/ProviderInfoSection.qml create mode 100644 resources/qml/Governikus/Provider/+mobile/ProviderModelItem.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderContactInfoItem_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderContactInfo_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderContactTab.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailButtonBar_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailDescription_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailHistoryInfo_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailHistoryItem_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailHistory_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailView.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderDetailView_tablet.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderHeader.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderInfoSection.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderModelItem.qml delete mode 100644 resources/qml/Governikus/Provider/ProviderViewDelegate.qml delete mode 100644 resources/qml/Governikus/ProviderView/+android/+tablet/ProviderView.qml delete mode 100644 resources/qml/Governikus/ProviderView/+android/ProviderView.qml delete mode 100644 resources/qml/Governikus/ProviderView/+android/SearchBar.qml create mode 100644 resources/qml/Governikus/ProviderView/+desktop/ProviderView.qml create mode 100644 resources/qml/Governikus/ProviderView/+desktop/SearchBar.qml delete mode 100644 resources/qml/Governikus/ProviderView/+ios/+tablet/ProviderView.qml delete mode 100644 resources/qml/Governikus/ProviderView/+ios/ProviderView.qml delete mode 100644 resources/qml/Governikus/ProviderView/+ios/SearchBar.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+android/+phone/ProviderView.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+android/+tablet/ProviderView.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+android/SearchBar.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+ios/+phone/ProviderView.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+ios/+tablet/ProviderView.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+ios/SearchBar.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+phone/AdditionalResultsItem.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+tablet/AdditionalResultsItem.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+tablet/ProviderCard.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/+tablet/ProviderCardNameRow.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/CategoryCheckbox.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/DimmableTextButton.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/ProviderDelegateModel.qml create mode 100644 resources/qml/Governikus/ProviderView/+mobile/ProviderSectionDelegate.qml delete mode 100644 resources/qml/Governikus/ProviderView/AdditionalResultsItem.qml delete mode 100644 resources/qml/Governikus/ProviderView/AdditionalResultsItem_tablet.qml delete mode 100644 resources/qml/Governikus/ProviderView/CategoryCheckbox_tablet.qml delete mode 100644 resources/qml/Governikus/ProviderView/DimmableTextButton.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderCardNameRow_tablet.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderCard_tablet.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderContactInfoItem.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderDelegateModel.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderSectionDelegate.qml delete mode 100644 resources/qml/Governikus/ProviderView/ProviderView.qml delete mode 100644 resources/qml/Governikus/ProviderView/SearchBar.qml create mode 100644 resources/qml/Governikus/RemoteServiceView/RemoteServiceViewLocal.qml create mode 100644 resources/qml/Governikus/RemoteServiceView/RemoteServiceViewRemote.qml create mode 100644 resources/qml/Governikus/RemoteServiceView/RemoteServiceViewStartStop.qml create mode 100644 resources/qml/Governikus/RemoteServiceView/SectionSwitch.qml delete mode 100644 resources/qml/Governikus/ResultView/+android/ResultView.qml create mode 100644 resources/qml/Governikus/ResultView/+desktop/ResultView.qml delete mode 100644 resources/qml/Governikus/ResultView/+ios/ResultView.qml create mode 100644 resources/qml/Governikus/ResultView/+mobile/ResultView.qml delete mode 100644 resources/qml/Governikus/ResultView/ResultView.qml delete mode 100644 resources/qml/Governikus/Style/+android/ProviderStyle.qml create mode 100644 resources/qml/Governikus/Style/+desktop/ProviderStyle.qml delete mode 100644 resources/qml/Governikus/Style/+ios/ProviderStyle.qml create mode 100644 resources/qml/Governikus/Style/+mobile/+android/ProviderStyle.qml create mode 100644 resources/qml/Governikus/Style/+mobile/+ios/ProviderStyle.qml delete mode 100644 resources/qml/Governikus/Style/ProviderStyle.qml delete mode 100644 resources/qml/Governikus/TechnologyInfo/TechnologySwitch.qml delete mode 100644 resources/qml/Governikus/TitleBar/+android/TitleBar.qml create mode 100644 resources/qml/Governikus/TitleBar/+desktop/CancelAction.qml create mode 100644 resources/qml/Governikus/TitleBar/+desktop/TitleBar.qml create mode 100644 resources/qml/Governikus/TitleBar/+desktop/TitleBarAction.qml create mode 100644 resources/qml/Governikus/TitleBar/+desktop/TitleBarButton.qml create mode 100644 resources/qml/Governikus/TitleBar/+desktop/TitleBarText.qml delete mode 100644 resources/qml/Governikus/TitleBar/+ios/TitleBar.qml create mode 100644 resources/qml/Governikus/TitleBar/+mobile/+android/Hamburger.qml create mode 100644 resources/qml/Governikus/TitleBar/+mobile/+android/TitleBar.qml create mode 100644 resources/qml/Governikus/TitleBar/+mobile/+ios/TitleBar.qml create mode 100644 resources/qml/Governikus/TitleBar/+mobile/TitleBarAction.qml create mode 100644 resources/qml/Governikus/TitleBar/+mobile/TitleBarText.qml delete mode 100644 resources/qml/Governikus/TitleBar/Hamburger.qml delete mode 100644 resources/qml/Governikus/TitleBar/TitleBar.qml delete mode 100644 resources/qml/Governikus/TitleBar/TitleBarAction.qml delete mode 100644 resources/qml/Governikus/TitleBar/TitleBarText.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialCollapseAnimation.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialContent.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialExpandAnimation.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialFooter.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialHeader.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialHow.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialImage.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialImportant.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodBluetooth.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodFooter.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodNfc.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodSacDesktop.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialReaderMethodSacMobile.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialSeperator.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialSpacer.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialView.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialWhat.qml create mode 100644 resources/qml/Governikus/TutorialView/+mobile/TutorialWhere.qml create mode 100644 resources/qml/Governikus/TutorialView/qmldir delete mode 100644 resources/qml/Governikus/VersionInformationView/VersionInformation.qml delete mode 100644 resources/qml/Governikus/VersionInformationView/qmldir create mode 100644 resources/qml/Governikus/View/+desktop/FocusFrame.qml create mode 100644 resources/qml/Governikus/View/+desktop/SectionPage.qml create mode 100644 resources/qml/Governikus/View/+mobile/+android/ContentArea.qml create mode 100644 resources/qml/Governikus/View/+mobile/+ios/ContentArea.qml create mode 100644 resources/qml/Governikus/View/+mobile/ContentAreaLoader.qml create mode 100644 resources/qml/Governikus/View/+mobile/SectionPage.qml create mode 100644 resources/qml/Governikus/View/+mobile/TabBarView.qml create mode 100644 resources/qml/Governikus/View/qmldir create mode 100644 resources/qml/Governikus/WhiteListClient/+mobile/WhiteListSurveyView.qml create mode 100644 resources/qml/Governikus/WhiteListClient/BulletPointDelegate.qml create mode 100644 resources/qml/Governikus/WhiteListClient/qmldir create mode 100644 resources/qml/Governikus/Workflow/+desktop/ProgressCircle.qml create mode 100644 resources/qml/Governikus/Workflow/+desktop/TextCircle.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/BluetoothWorkflow.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/BusyImageIndicator.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/CardReader.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/GeneralWorkflow.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/NfcProgressIndicator.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/NfcWorkflow.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/ProgressCircle.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/ProgressIndicator.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/RemoteWorkflow.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/TextCircle.qml create mode 100644 resources/qml/Governikus/Workflow/+mobile/Workflow.qml delete mode 100644 resources/qml/Governikus/Workflow/BluetoothWorkflow.qml delete mode 100644 resources/qml/Governikus/Workflow/BusyImageIndicator.qml delete mode 100644 resources/qml/Governikus/Workflow/CardReader.qml delete mode 100644 resources/qml/Governikus/Workflow/NfcProgressIndicator.qml delete mode 100644 resources/qml/Governikus/Workflow/NfcWorkflow.qml delete mode 100644 resources/qml/Governikus/Workflow/ProgressCircle.qml delete mode 100644 resources/qml/Governikus/Workflow/ProgressIndicator.qml delete mode 100644 resources/qml/Governikus/Workflow/RemoteWorkflow.qml delete mode 100644 resources/qml/Governikus/Workflow/TextCircle.qml delete mode 100644 resources/qml/TabBarView.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/Category.js delete mode 100644 resources/qml_stationary/AusweisApp2/Global/CheckBox.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/Constants.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/Pane.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/PlatformConstants.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/ProviderModelItem.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Global/Utils.js delete mode 100644 resources/qml_stationary/AusweisApp2/Global/qmldir delete mode 100644 resources/qml_stationary/AusweisApp2/Views/History/HistoryView.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/History/ListViewDelegate.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/History/ListViewDelegateContent.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/History/qmldir delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/AdditionalResultsItem.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/CategoryCheckbox.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/ProviderCard.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/ProviderCardInfoItem.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/ProviderView.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/Provider/qmldir delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderContactInfo.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderContactInfoItem.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderDetailButtonBar.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderDetailDescription.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderDetailView.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/ProviderDetailsDialog.qml delete mode 100644 resources/qml_stationary/AusweisApp2/Views/ProviderDetails/qmldir delete mode 100644 resources/qml_stationary/HistoryWidgetQmlPlugin.qml delete mode 100644 resources/qml_stationary/ProviderWidgetQmlPlugin.qml create mode 100644 resources/sonar-project.properties.in rename resources/updatable-files/reader/{img_Cherry_ST_1275_mit_Ausweis.png => img_Cherry_ST_1275_mit_ausweis.png} (100%) rename resources/updatable-files/reader/{img_HID_Omnikey_5421.png => img_HID_Omnikey_542x.png} (100%) rename resources/updatable-files/reader/{img_HID_Omnikey_5421_mit_ausweis.png => img_HID_Omnikey_542x_mit_ausweis.png} (100%) rename resources/updatable-files/reader/{img_Signotec_Omega_Pad_mit_Ausweis.png => img_Signotec_Omega_Pad_mit_ausweis.png} (100%) delete mode 100644 src/aidl/AidlBinder.java delete mode 100644 src/aidl/CMakeLists.txt delete mode 100644 src/aidl/PskManager.h delete mode 100644 src/aidl/UIPlugInAidl.cpp delete mode 100644 src/aidl/UIPlugInAidl.h create mode 100644 src/autostart_helper/main.mm create mode 100644 src/card/base/CommandApdu.cpp create mode 100644 src/card/base/CommandApdu.h delete mode 100644 src/card/base/DestroyPACEChannel.cpp delete mode 100644 src/card/base/DestroyPACEChannel.h create mode 100644 src/card/base/DestroyPaceChannel.cpp create mode 100644 src/card/base/DestroyPaceChannel.h delete mode 100644 src/card/base/EstablishPACEChannel.cpp delete mode 100644 src/card/base/EstablishPACEChannel.h delete mode 100644 src/card/base/EstablishPACEChannelParser.cpp delete mode 100644 src/card/base/EstablishPACEChannelParser.h create mode 100644 src/card/base/EstablishPaceChannel.cpp create mode 100644 src/card/base/EstablishPaceChannel.h create mode 100644 src/card/base/EstablishPaceChannelOutput.cpp create mode 100644 src/card/base/EstablishPaceChannelOutput.h create mode 100644 src/card/base/EstablishPaceChannelParser.cpp create mode 100644 src/card/base/EstablishPaceChannelParser.h delete mode 100644 src/card/base/RemoteClient.h delete mode 100644 src/card/base/RemoteDispatcher.cpp delete mode 100644 src/card/base/RemoteDispatcher.h create mode 100644 src/card/base/ResponseApdu.cpp create mode 100644 src/card/base/ResponseApdu.h create mode 100644 src/card/base/asn1/ASN1TemplateUtil.cpp delete mode 100644 src/card/base/asn1/PACEInfo.cpp delete mode 100644 src/card/base/asn1/PACEInfo.h create mode 100644 src/card/base/asn1/PaceInfo.cpp create mode 100644 src/card/base/asn1/PaceInfo.h delete mode 100644 src/card/base/pace/EstablishPACEChannelCode.h create mode 100644 src/card/base/pace/EstablishPaceChannelCode.h delete mode 100644 src/card/remote/CMakeLists.txt delete mode 100644 src/card/remote/RemoteCard.cpp delete mode 100644 src/card/remote/RemoteCard.h delete mode 100644 src/card/remote/RemoteReader.cpp delete mode 100644 src/card/remote/RemoteReader.h delete mode 100644 src/card/remote/RemoteReaderManagerPlugIn.cpp delete mode 100644 src/card/remote/RemoteReaderManagerPlugIn.h delete mode 100644 src/cli/CMakeLists.txt delete mode 100644 src/cli/ConsoleReader.h delete mode 100644 src/cli/UIPlugInCli.cpp delete mode 100644 src/cli/UIPlugInCli.h create mode 100644 src/core/DiagnosisAntivirusDetection.cpp create mode 100644 src/core/DiagnosisAntivirusDetection.h create mode 100644 src/core/DiagnosisConnectionTest.cpp create mode 100644 src/core/DiagnosisConnectionTest.h create mode 100644 src/core/DiagnosisFirewallDetection.cpp create mode 100644 src/core/DiagnosisFirewallDetection.h create mode 100644 src/core/DiagnosisItem.cpp create mode 100644 src/core/DiagnosisItem.h create mode 100644 src/core/DiagnosisModel.cpp create mode 100644 src/core/DiagnosisModel.h delete mode 100644 src/core/paos/MessageIdHandler.cpp delete mode 100644 src/core/paos/MessageIdHandler.h create mode 100644 src/core/states/CompositeStatePace.cpp create mode 100644 src/core/states/CompositeStatePace.h create mode 100644 src/core/states/StateClearPacePasswords.cpp create mode 100644 src/core/states/StateClearPacePasswords.h create mode 100644 src/core/states/StateEnterNewPacePin.cpp create mode 100644 src/core/states/StateEnterNewPacePin.h create mode 100644 src/core/states/StateEnterPacePassword.cpp create mode 100644 src/core/states/StateEnterPacePassword.h delete mode 100644 src/core/states/StateEstablishPaceCan.cpp delete mode 100644 src/core/states/StateEstablishPaceCan.h create mode 100644 src/core/states/StateEstablishPaceChannel.cpp create mode 100644 src/core/states/StateEstablishPaceChannel.h delete mode 100644 src/core/states/StateEstablishPacePin.cpp delete mode 100644 src/core/states/StateEstablishPacePin.h delete mode 100644 src/core/states/StateEstablishPacePuk.cpp delete mode 100644 src/core/states/StateEstablishPacePuk.h delete mode 100644 src/core/states/StateHandleRetryCounter.cpp delete mode 100644 src/core/states/StateHandleRetryCounter.h create mode 100644 src/core/states/StateMaintainCardConnection.cpp create mode 100644 src/core/states/StateMaintainCardConnection.h create mode 100644 src/core/states/StatePrepareChangePin.cpp create mode 100644 src/core/states/StatePrepareChangePin.h create mode 100644 src/core/states/StatePreparePace.cpp create mode 100644 src/core/states/StatePreparePace.h create mode 100644 src/core/states/StateSendWhitelistSurvey.cpp create mode 100644 src/core/states/StateSendWhitelistSurvey.h create mode 100644 src/core/states/StateShowSelfInfo.cpp create mode 100644 src/core/states/StateShowSelfInfo.h create mode 100644 src/core/states/StateUnfortunateCardPosition.cpp create mode 100644 src/core/states/StateUnfortunateCardPosition.h create mode 100644 src/core/states/StateVerifyRetryCounter.cpp create mode 100644 src/core/states/StateVerifyRetryCounter.h create mode 100644 src/core/states/remote_service/StateChangePinResponse.cpp create mode 100644 src/core/states/remote_service/StateChangePinResponse.h create mode 100644 src/core/states/remote_service/StateEnterNewPacePinRemote.cpp create mode 100644 src/core/states/remote_service/StateEnterNewPacePinRemote.h create mode 100644 src/core/states/remote_service/StateEnterPacePasswordRemote.cpp create mode 100644 src/core/states/remote_service/StateEnterPacePasswordRemote.h delete mode 100644 src/core/states/remote_service/StateEstablishPaceChannel.cpp delete mode 100644 src/core/states/remote_service/StateEstablishPaceChannel.h create mode 100644 src/core/states/remote_service/StateEstablishPaceChannelRemote.cpp create mode 100644 src/core/states/remote_service/StateEstablishPaceChannelRemote.h create mode 100644 src/core/states/remote_service/StateEstablishPaceChannelResponse.cpp create mode 100644 src/core/states/remote_service/StateEstablishPaceChannelResponse.h create mode 100644 src/core/states/remote_service/StatePrepareChangePinRemote.cpp create mode 100644 src/core/states/remote_service/StatePrepareChangePinRemote.h create mode 100644 src/core/states/remote_service/StatePreparePaceRemote.cpp create mode 100644 src/core/states/remote_service/StatePreparePaceRemote.h delete mode 100644 src/core/view/UILoader.cpp delete mode 100644 src/core/view/UILoader.h delete mode 100644 src/core/view/UIPlugIn.cpp delete mode 100644 src/core/view/UIPlugIn.h create mode 100644 src/global/BreakPropertyBindingDiagnosticLogFilter.cpp create mode 100644 src/global/BreakPropertyBindingDiagnosticLogFilter.h delete mode 100644 src/global/DeviceError.cpp delete mode 100644 src/global/DeviceError.h create mode 100644 src/global/ECardApiResult.cpp create mode 100644 src/global/ECardApiResult.h delete mode 100644 src/global/Result.cpp delete mode 100644 src/global/Result.h delete mode 100644 src/jsonapi/CMakeLists.txt delete mode 100644 src/jsonapi/MessageDispatcher.cpp delete mode 100644 src/jsonapi/MessageDispatcher.h delete mode 100644 src/jsonapi/UIPlugInJsonApi.cpp delete mode 100644 src/jsonapi/UIPlugInJsonApi.h delete mode 100644 src/jsonapi/messages/MsgContext.h delete mode 100644 src/jsonapi/messages/MsgHandler.cpp delete mode 100644 src/jsonapi/messages/MsgHandler.h delete mode 100644 src/jsonapi/messages/MsgHandlerAccessRights.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerAccessRights.h delete mode 100644 src/jsonapi/messages/MsgHandlerApiLevel.h delete mode 100644 src/jsonapi/messages/MsgHandlerAuth.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerAuth.h delete mode 100644 src/jsonapi/messages/MsgHandlerBadState.h delete mode 100644 src/jsonapi/messages/MsgHandlerCertificate.h delete mode 100644 src/jsonapi/messages/MsgHandlerEnterCan.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerEnterCan.h delete mode 100644 src/jsonapi/messages/MsgHandlerEnterNumber.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerEnterNumber.h delete mode 100644 src/jsonapi/messages/MsgHandlerEnterPin.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerEnterPin.h delete mode 100644 src/jsonapi/messages/MsgHandlerEnterPuk.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerEnterPuk.h delete mode 100644 src/jsonapi/messages/MsgHandlerInfo.h delete mode 100644 src/jsonapi/messages/MsgHandlerInsertCard.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerInsertCard.h delete mode 100644 src/jsonapi/messages/MsgHandlerInternalError.h delete mode 100644 src/jsonapi/messages/MsgHandlerInvalid.h delete mode 100644 src/jsonapi/messages/MsgHandlerReader.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerReader.h delete mode 100644 src/jsonapi/messages/MsgHandlerReaderList.cpp delete mode 100644 src/jsonapi/messages/MsgHandlerReaderList.h delete mode 100644 src/jsonapi/messages/MsgHandlerUnknownCommand.h delete mode 100644 src/jsonapi/messages/MsgTypes.h delete mode 100644 src/network/HttpStatusCode.cpp delete mode 100644 src/network/HttpStatusCode.h create mode 100644 src/network/PortFile.cpp create mode 100644 src/network/PortFile.h delete mode 100644 src/qml/ApplicationModel.cpp delete mode 100644 src/qml/ApplicationModel.h delete mode 100644 src/qml/AuthModel.cpp delete mode 100644 src/qml/AuthModel.h delete mode 100644 src/qml/CMakeLists.txt delete mode 100644 src/qml/CertificateDescriptionModel.cpp delete mode 100644 src/qml/CertificateDescriptionModel.h delete mode 100644 src/qml/ChangePinModel.cpp delete mode 100644 src/qml/ChangePinModel.h delete mode 100644 src/qml/ChatModel.cpp delete mode 100644 src/qml/ChatModel.h delete mode 100644 src/qml/ConnectivityManager.cpp delete mode 100644 src/qml/ConnectivityManager.h delete mode 100644 src/qml/DpiCalculator.h delete mode 100644 src/qml/DpiCalculator_generic.cpp delete mode 100644 src/qml/HistoryModel.cpp delete mode 100644 src/qml/HistoryModel.h delete mode 100644 src/qml/HistoryModelSearchFilter.h delete mode 100644 src/qml/NumberModel.cpp delete mode 100644 src/qml/NumberModel.h delete mode 100644 src/qml/ProviderCategoryFilterModel.cpp delete mode 100644 src/qml/ProviderCategoryFilterModel.h delete mode 100644 src/qml/ProviderModel.cpp delete mode 100644 src/qml/ProviderModel.h delete mode 100644 src/qml/QmlExtension.h delete mode 100644 src/qml/QmlExtension_android.cpp delete mode 100644 src/qml/QmlExtension_generic.cpp delete mode 100644 src/qml/QmlExtension_ios.mm delete mode 100644 src/qml/RemoteServiceModel.cpp delete mode 100644 src/qml/RemoteServiceModel.h delete mode 100644 src/qml/SelfAuthenticationModel.cpp delete mode 100644 src/qml/SelfAuthenticationModel.h delete mode 100644 src/qml/SettingsModel.cpp delete mode 100644 src/qml/SettingsModel.h delete mode 100644 src/qml/ShareUtil.java delete mode 100644 src/qml/StatusBarUtil.h delete mode 100644 src/qml/UIPlugInQml.cpp delete mode 100644 src/qml/UIPlugInQml.h delete mode 100644 src/qml/VersionInformationModel.cpp delete mode 100644 src/qml/VersionInformationModel.h delete mode 100644 src/qml/WorkflowModel.cpp delete mode 100644 src/qml/WorkflowModel.h rename src/{card/base => remote_device}/RemoteClient.cpp (100%) create mode 100644 src/remote_device/RemoteClient.h create mode 100644 src/remote_device/RemoteDispatcher.cpp create mode 100644 src/remote_device/RemoteDispatcher.h create mode 100644 src/remote_device/RemoteDispatcherClient.cpp create mode 100644 src/remote_device/RemoteDispatcherClient.h delete mode 100644 src/remote_device/RemoteDispatcherImpl.cpp delete mode 100644 src/remote_device/RemoteDispatcherImpl.h create mode 100644 src/remote_device/RemoteDispatcherServer.cpp create mode 100644 src/remote_device/RemoteDispatcherServer.h delete mode 100644 src/remote_device/RemoteHelper.cpp delete mode 100644 src/remote_device/RemoteHelper.h create mode 100644 src/remote_device/RemoteServerImpl.cpp create mode 100644 src/remote_device/RemoteServerImpl.h delete mode 100644 src/remote_device/messages/GetIfdStatus.cpp delete mode 100644 src/remote_device/messages/GetIfdStatus.h create mode 100644 src/remote_device/messages/IfdGetStatus.cpp create mode 100644 src/remote_device/messages/IfdGetStatus.h delete mode 100644 src/remote_device/messages/MessageReceiver.cpp delete mode 100644 src/remote_device/messages/MessageReceiver.h delete mode 100644 src/remote_device/messages/RemoteMessageParser.cpp delete mode 100644 src/remote_device/messages/RemoteMessageParser.h create mode 100644 src/remote_device/plugin/RemoteCard.cpp create mode 100644 src/remote_device/plugin/RemoteCard.h create mode 100644 src/remote_device/plugin/RemoteReader.cpp create mode 100644 src/remote_device/plugin/RemoteReader.h create mode 100644 src/remote_device/plugin/RemoteReaderManagerPlugIn.cpp create mode 100644 src/remote_device/plugin/RemoteReaderManagerPlugIn.h rename src/{card/remote => remote_device/plugin}/metadata.json (100%) create mode 100644 src/ui/CMakeLists.txt create mode 100644 src/ui/aidl/AidlBinder.java create mode 100644 src/ui/aidl/CMakeLists.txt rename src/{ => ui}/aidl/PskManager.cpp (100%) create mode 100644 src/ui/aidl/PskManager.h create mode 100644 src/ui/aidl/UIPlugInAidl.cpp create mode 100644 src/ui/aidl/UIPlugInAidl.h rename src/{ => ui}/aidl/metadata.json (100%) create mode 100644 src/ui/base/CMakeLists.txt create mode 100644 src/ui/base/UILoader.cpp create mode 100644 src/ui/base/UILoader.h create mode 100644 src/ui/base/UIPlugIn.cpp create mode 100644 src/ui/base/UIPlugIn.h create mode 100644 src/ui/cli/CMakeLists.txt rename src/{ => ui}/cli/ConsoleReader.cpp (100%) create mode 100644 src/ui/cli/ConsoleReader.h create mode 100644 src/ui/cli/UIPlugInCli.cpp create mode 100644 src/ui/cli/UIPlugInCli.h rename src/{ => ui}/cli/metadata.json (100%) create mode 100644 src/ui/common/CMakeLists.txt create mode 100644 src/ui/common/HelpAction.cpp create mode 100644 src/ui/common/HelpAction.h create mode 100644 src/ui/common/PlatformTools.h create mode 100644 src/ui/common/PlatformTools_generic.cpp create mode 100644 src/ui/common/PlatformTools_osx.cpp create mode 100644 src/ui/common/TrayIcon.cpp create mode 100644 src/ui/common/TrayIcon.h create mode 100644 src/ui/jsonapi/CMakeLists.txt create mode 100644 src/ui/jsonapi/MessageDispatcher.cpp create mode 100644 src/ui/jsonapi/MessageDispatcher.h create mode 100644 src/ui/jsonapi/UIPlugInJsonApi.cpp create mode 100644 src/ui/jsonapi/UIPlugInJsonApi.h rename src/{ => ui}/jsonapi/messages/MsgContext.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgContext.h create mode 100644 src/ui/jsonapi/messages/MsgHandler.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandler.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerAccessRights.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerAccessRights.h rename src/{ => ui}/jsonapi/messages/MsgHandlerApiLevel.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerApiLevel.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerAuth.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerAuth.h rename src/{ => ui}/jsonapi/messages/MsgHandlerBadState.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerBadState.h rename src/{ => ui}/jsonapi/messages/MsgHandlerCertificate.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerCertificate.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterCan.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterCan.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterNumber.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterNumber.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterPin.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterPin.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterPuk.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerEnterPuk.h rename src/{ => ui}/jsonapi/messages/MsgHandlerInfo.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerInfo.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerInsertCard.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerInsertCard.h rename src/{ => ui}/jsonapi/messages/MsgHandlerInternalError.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerInternalError.h rename src/{ => ui}/jsonapi/messages/MsgHandlerInvalid.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerInvalid.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerReader.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerReader.h create mode 100644 src/ui/jsonapi/messages/MsgHandlerReaderList.cpp create mode 100644 src/ui/jsonapi/messages/MsgHandlerReaderList.h rename src/{ => ui}/jsonapi/messages/MsgHandlerUnknownCommand.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgHandlerUnknownCommand.h rename src/{ => ui}/jsonapi/messages/MsgTypes.cpp (100%) create mode 100644 src/ui/jsonapi/messages/MsgTypes.h rename src/{ => ui}/jsonapi/metadata.json (100%) create mode 100644 src/ui/qml/ApplicationModel.cpp create mode 100644 src/ui/qml/ApplicationModel.h create mode 100644 src/ui/qml/AuthModel.cpp create mode 100644 src/ui/qml/AuthModel.h create mode 100644 src/ui/qml/CMakeLists.txt create mode 100644 src/ui/qml/CertificateDescriptionModel.cpp create mode 100644 src/ui/qml/CertificateDescriptionModel.h create mode 100644 src/ui/qml/ChangePinModel.cpp create mode 100644 src/ui/qml/ChangePinModel.h create mode 100644 src/ui/qml/ChatModel.cpp create mode 100644 src/ui/qml/ChatModel.h create mode 100644 src/ui/qml/ConnectivityManager.cpp create mode 100644 src/ui/qml/ConnectivityManager.h create mode 100644 src/ui/qml/DpiCalculator.h create mode 100644 src/ui/qml/DpiCalculator_android.cpp create mode 100644 src/ui/qml/DpiCalculator_generic.cpp rename src/{ => ui}/qml/DpiCalculator_ios.mm (100%) create mode 100644 src/ui/qml/HistoryModel.cpp create mode 100644 src/ui/qml/HistoryModel.h rename src/{ => ui}/qml/HistoryModelSearchFilter.cpp (100%) create mode 100644 src/ui/qml/HistoryModelSearchFilter.h create mode 100644 src/ui/qml/LogModel.cpp create mode 100644 src/ui/qml/LogModel.h create mode 100644 src/ui/qml/LogModel_android.cpp create mode 100644 src/ui/qml/LogModel_generic.cpp create mode 100644 src/ui/qml/NumberModel.cpp create mode 100644 src/ui/qml/NumberModel.h create mode 100644 src/ui/qml/ProviderCategoryFilterModel.cpp create mode 100644 src/ui/qml/ProviderCategoryFilterModel.h create mode 100644 src/ui/qml/ProviderModel.cpp create mode 100644 src/ui/qml/ProviderModel.h create mode 100644 src/ui/qml/QmlExtension.h create mode 100644 src/ui/qml/QmlExtension_android.cpp create mode 100644 src/ui/qml/QmlExtension_generic.cpp create mode 100644 src/ui/qml/QmlExtension_ios.mm create mode 100644 src/ui/qml/RemoteServiceModel.cpp create mode 100644 src/ui/qml/RemoteServiceModel.h create mode 100644 src/ui/qml/SelfAuthModel.cpp create mode 100644 src/ui/qml/SelfAuthModel.h create mode 100644 src/ui/qml/SettingsModel.cpp create mode 100644 src/ui/qml/SettingsModel.h create mode 100644 src/ui/qml/ShareUtil.java rename src/{ => ui}/qml/StatusBarUtil.cpp (100%) create mode 100644 src/ui/qml/StatusBarUtil.h create mode 100644 src/ui/qml/UIPlugInQml.cpp create mode 100644 src/ui/qml/UIPlugInQml.h create mode 100644 src/ui/qml/VersionInformationModel.cpp create mode 100644 src/ui/qml/VersionInformationModel.h create mode 100644 src/ui/qml/WorkflowModel.cpp create mode 100644 src/ui/qml/WorkflowModel.h rename src/{ => ui}/qml/metadata.json (100%) create mode 100644 src/ui/websocket/CMakeLists.txt create mode 100644 src/ui/websocket/UIPlugInWebSocket.cpp create mode 100644 src/ui/websocket/UIPlugInWebSocket.h rename src/{ => ui}/websocket/metadata.json (100%) create mode 100644 src/ui/widget/AboutDialog.cpp create mode 100644 src/ui/widget/AboutDialog.h rename src/{ => ui}/widget/AboutDialog.ui (100%) create mode 100644 src/ui/widget/AppQtGui.cpp create mode 100644 src/ui/widget/AppQtGui.h create mode 100644 src/ui/widget/AppQtMainWidget.cpp create mode 100644 src/ui/widget/AppQtMainWidget.h create mode 100644 src/ui/widget/AppQtMainWidget.ui create mode 100644 src/ui/widget/AppStartPage.cpp create mode 100644 src/ui/widget/AppStartPage.h rename src/{ => ui}/widget/AppStartPage.ui (100%) create mode 100644 src/ui/widget/CMakeLists.txt rename src/{ => ui}/widget/CredentialDialog.cpp (100%) create mode 100644 src/ui/widget/CredentialDialog.h rename src/{ => ui}/widget/CredentialDialog.ui (100%) rename src/{ => ui}/widget/DeleteHistoryDialog.cpp (100%) create mode 100644 src/ui/widget/DeleteHistoryDialog.h create mode 100644 src/ui/widget/DetailDialog.cpp create mode 100644 src/ui/widget/DetailDialog.h rename src/{ => ui}/widget/DetailDialog.ui (100%) create mode 100644 src/ui/widget/DetailWidget.cpp create mode 100644 src/ui/widget/DetailWidget.h rename src/{ => ui}/widget/DetailWidget.ui (100%) create mode 100644 src/ui/widget/DeveloperModeHistoryWidget.cpp create mode 100644 src/ui/widget/DeveloperModeHistoryWidget.h rename src/{ => ui}/widget/DeveloperModeHistoryWidget.ui (100%) create mode 100644 src/ui/widget/DeveloperSettingsWidget.cpp create mode 100644 src/ui/widget/DeveloperSettingsWidget.h rename src/{ => ui}/widget/DeveloperSettingsWidget.ui (100%) create mode 100644 src/ui/widget/DiagnosisDialog.cpp create mode 100644 src/ui/widget/DiagnosisDialog.h rename src/{ => ui}/widget/DiagnosisDialog.ui (100%) create mode 100644 src/ui/widget/DiagnosisGui.cpp create mode 100644 src/ui/widget/DiagnosisGui.h rename src/{ => ui}/widget/DiagnosisWidget.ui (100%) create mode 100644 src/ui/widget/GeneralSettingsWidget.cpp create mode 100644 src/ui/widget/GeneralSettingsWidget.h rename src/{ => ui}/widget/GeneralSettingsWidget.ui (100%) create mode 100644 src/ui/widget/HistoryDetailWidget.cpp create mode 100644 src/ui/widget/HistoryDetailWidget.h rename src/{ => ui}/widget/HistoryDetailWidget.ui (100%) create mode 100644 src/ui/widget/HistoryWidget.cpp create mode 100644 src/ui/widget/HistoryWidget.h create mode 100644 src/ui/widget/HistoryWidget.ui create mode 100644 src/ui/widget/LogFileSaveDialog.cpp create mode 100644 src/ui/widget/LogFileSaveDialog.h create mode 100644 src/ui/widget/LogFilesDialog.cpp create mode 100644 src/ui/widget/LogFilesDialog.h rename src/{ => ui}/widget/LogFilesDialog.ui (100%) rename src/{ => ui}/widget/PinSettingsInfoWidget.cpp (100%) create mode 100644 src/ui/widget/PinSettingsInfoWidget.h rename src/{ => ui}/widget/PinSettingsInfoWidget.ui (100%) create mode 100644 src/ui/widget/PinSettingsWidget.cpp create mode 100644 src/ui/widget/PinSettingsWidget.h create mode 100644 src/ui/widget/PinSettingsWidget.ui create mode 100644 src/ui/widget/ProviderWidget.cpp create mode 100644 src/ui/widget/ProviderWidget.h rename src/{ => ui}/widget/ProviderWidget.ui (100%) create mode 100644 src/ui/widget/RandomPinDialog.cpp create mode 100644 src/ui/widget/RandomPinDialog.h rename src/{ => ui}/widget/RandomPinDialog.ui (100%) create mode 100644 src/ui/widget/ReaderDeviceDialog.cpp create mode 100644 src/ui/widget/ReaderDeviceDialog.h rename src/{ => ui}/widget/ReaderDeviceDialog.ui (100%) create mode 100644 src/ui/widget/ReaderDeviceGui.cpp create mode 100644 src/ui/widget/ReaderDeviceGui.h create mode 100644 src/ui/widget/ReaderDeviceWidget.cpp create mode 100644 src/ui/widget/ReaderDeviceWidget.h create mode 100644 src/ui/widget/ReaderDeviceWidget.ui create mode 100644 src/ui/widget/ReaderDriverModel.cpp create mode 100644 src/ui/widget/ReaderDriverModel.h create mode 100644 src/ui/widget/RemotePinInputDialog.cpp create mode 100644 src/ui/widget/RemotePinInputDialog.h rename src/{ => ui}/widget/RemotePinInputDialog.ui (100%) create mode 100644 src/ui/widget/SelfInformationWidget.cpp create mode 100644 src/ui/widget/SelfInformationWidget.h create mode 100644 src/ui/widget/SelfInformationWidget.ui create mode 100644 src/ui/widget/SettingsWidget.cpp create mode 100644 src/ui/widget/SettingsWidget.h rename src/{ => ui}/widget/SettingsWidget.ui (100%) create mode 100644 src/ui/widget/SetupAssistantGui.cpp create mode 100644 src/ui/widget/SetupAssistantGui.h create mode 100644 src/ui/widget/SetupAssistantWizard.cpp create mode 100644 src/ui/widget/SetupAssistantWizard.h create mode 100644 src/ui/widget/UIPlugInWidgets.cpp create mode 100644 src/ui/widget/UIPlugInWidgets.h create mode 100644 src/ui/widget/UpdateWindow.cpp create mode 100644 src/ui/widget/UpdateWindow.h create mode 100644 src/ui/widget/UpdateWindow.ui rename src/{ => ui}/widget/generic/BusyOverlay.cpp (100%) create mode 100644 src/ui/widget/generic/BusyOverlay.h rename src/{ => ui}/widget/generic/BusyOverlay.ui (100%) create mode 100644 src/ui/widget/generic/BusyOverlayContainer.cpp create mode 100644 src/ui/widget/generic/BusyOverlayContainer.h create mode 100644 src/ui/widget/generic/ButtonState.h create mode 100644 src/ui/widget/generic/ExclusiveButtonGroup.cpp create mode 100644 src/ui/widget/generic/ExclusiveButtonGroup.h create mode 100644 src/ui/widget/generic/GuiModule.h create mode 100644 src/ui/widget/generic/GuiUtils.cpp create mode 100644 src/ui/widget/generic/GuiUtils.h create mode 100644 src/ui/widget/generic/ListCheckItemWidget.cpp create mode 100644 src/ui/widget/generic/ListCheckItemWidget.h rename src/{ => ui}/widget/generic/ListCheckItemWidget.ui (100%) rename src/{ => ui}/widget/generic/ListItem.cpp (100%) create mode 100644 src/ui/widget/generic/ListItem.h rename src/{ => ui}/widget/generic/ListItemIconLeft.cpp (100%) create mode 100644 src/ui/widget/generic/ListItemIconLeft.h rename src/{ => ui}/widget/generic/ListItemIconRight.cpp (100%) create mode 100644 src/ui/widget/generic/ListItemIconRight.h rename src/{ => ui}/widget/generic/ListItemSubTitle.cpp (100%) create mode 100644 src/ui/widget/generic/ListItemSubTitle.h rename src/{ => ui}/widget/generic/ListItemTitle.cpp (100%) create mode 100644 src/ui/widget/generic/ListItemTitle.h create mode 100644 src/ui/widget/generic/PasswordEdit.cpp create mode 100644 src/ui/widget/generic/PasswordEdit.h rename src/{ => ui}/widget/generic/PasswordEdit.ui (100%) rename src/{ => ui}/widget/generic/TabButtonGroup.cpp (100%) create mode 100644 src/ui/widget/generic/TabButtonGroup.h rename src/{ => ui}/widget/metadata.json (100%) create mode 100644 src/ui/widget/step/AuthenticateStepsWidget.cpp create mode 100644 src/ui/widget/step/AuthenticateStepsWidget.h rename src/{ => ui}/widget/step/AuthenticateStepsWidget.ui (100%) create mode 100644 src/ui/widget/step/SelfInfoWidget.cpp create mode 100644 src/ui/widget/step/SelfInfoWidget.h rename src/{ => ui}/widget/step/SelfInfoWidget.ui (100%) create mode 100644 src/ui/widget/step/StepAdviseUserToRemoveCardGui.cpp create mode 100644 src/ui/widget/step/StepAdviseUserToRemoveCardGui.h rename src/{ => ui}/widget/step/StepAuthenticationDoneGui.cpp (100%) create mode 100644 src/ui/widget/step/StepAuthenticationDoneGui.h create mode 100644 src/ui/widget/step/StepAuthenticationEac1Gui.cpp create mode 100644 src/ui/widget/step/StepAuthenticationEac1Gui.h create mode 100644 src/ui/widget/step/StepAuthenticationEac1Widget.cpp create mode 100644 src/ui/widget/step/StepAuthenticationEac1Widget.h create mode 100644 src/ui/widget/step/StepAuthenticationEac1Widget.ui create mode 100644 src/ui/widget/step/StepChooseCardGui.cpp create mode 100644 src/ui/widget/step/StepChooseCardGui.h create mode 100644 src/ui/widget/step/StepErrorGui.cpp create mode 100644 src/ui/widget/step/StepErrorGui.h rename src/{ => ui}/widget/step/StepGui.cpp (100%) create mode 100644 src/ui/widget/step/StepGui.h rename src/{ => ui}/widget/step/StepProcessingGui.cpp (100%) create mode 100644 src/ui/widget/step/StepProcessingGui.h rename src/{ => ui}/widget/step/StepShowSelfAuthenticationDataGui.cpp (100%) create mode 100644 src/ui/widget/step/StepShowSelfAuthenticationDataGui.h create mode 100644 src/ui/widget/workflow/GenericWorkflowGui.h create mode 100644 src/ui/widget/workflow/WorkflowAuthenticateQtGui.cpp create mode 100644 src/ui/widget/workflow/WorkflowAuthenticateQtGui.h create mode 100644 src/ui/widget/workflow/WorkflowChangePinQtGui.cpp create mode 100644 src/ui/widget/workflow/WorkflowChangePinQtGui.h create mode 100644 src/ui/widget/workflow/WorkflowGui.cpp create mode 100644 src/ui/widget/workflow/WorkflowGui.h create mode 100644 src/ui/widget/workflow/WorkflowQtWidget.cpp create mode 100644 src/ui/widget/workflow/WorkflowQtWidget.h create mode 100644 src/ui/widget/workflow/WorkflowSelfInfoQtGui.cpp create mode 100644 src/ui/widget/workflow/WorkflowSelfInfoQtGui.h create mode 100644 src/ui/widget/workflow/WorkflowWidgetParent.h delete mode 100644 src/websocket/CMakeLists.txt delete mode 100644 src/websocket/UIPlugInWebSocket.cpp delete mode 100644 src/websocket/UIPlugInWebSocket.h create mode 100644 src/whitelist_client/CMakeLists.txt create mode 100644 src/whitelist_client/Survey.cpp create mode 100644 src/whitelist_client/Survey.h create mode 100644 src/whitelist_client/SurveyHandler.cpp create mode 100644 src/whitelist_client/SurveyHandler.h delete mode 100644 src/widget/AboutDialog.cpp delete mode 100644 src/widget/AboutDialog.h delete mode 100644 src/widget/AppQtGui.cpp delete mode 100644 src/widget/AppQtGui.h delete mode 100644 src/widget/AppQtMainWidget.cpp delete mode 100644 src/widget/AppQtMainWidget.h delete mode 100644 src/widget/AppQtMainWidget.ui delete mode 100644 src/widget/AppStartPage.cpp delete mode 100644 src/widget/AppStartPage.h delete mode 100644 src/widget/CMakeLists.txt delete mode 100644 src/widget/CredentialDialog.h delete mode 100644 src/widget/DeleteHistoryDialog.h delete mode 100644 src/widget/DetailDialog.cpp delete mode 100644 src/widget/DetailDialog.h delete mode 100644 src/widget/DetailWidget.cpp delete mode 100644 src/widget/DetailWidget.h delete mode 100644 src/widget/DeveloperModeHistoryWidget.cpp delete mode 100644 src/widget/DeveloperModeHistoryWidget.h delete mode 100644 src/widget/DeveloperSettingsWidget.cpp delete mode 100644 src/widget/DeveloperSettingsWidget.h delete mode 100644 src/widget/DiagnosisDialog.cpp delete mode 100644 src/widget/DiagnosisDialog.h delete mode 100644 src/widget/DiagnosisGui.cpp delete mode 100644 src/widget/DiagnosisGui.h delete mode 100644 src/widget/DiagnosisWidget.cpp delete mode 100644 src/widget/DiagnosisWidget.h delete mode 100644 src/widget/GeneralSettingsWidget.cpp delete mode 100644 src/widget/GeneralSettingsWidget.h delete mode 100644 src/widget/GuiProfile.cpp delete mode 100644 src/widget/GuiProfile.h delete mode 100644 src/widget/HistoryDetailWidget.cpp delete mode 100644 src/widget/HistoryDetailWidget.h delete mode 100644 src/widget/HistoryWidget.cpp delete mode 100644 src/widget/HistoryWidget.h delete mode 100644 src/widget/HistoryWidget.ui delete mode 100644 src/widget/LogFilesDialog.cpp delete mode 100644 src/widget/LogFilesDialog.h delete mode 100644 src/widget/PinSettingsInfoWidget.h delete mode 100644 src/widget/PinSettingsWidget.cpp delete mode 100644 src/widget/PinSettingsWidget.h delete mode 100644 src/widget/PinSettingsWidget.ui delete mode 100644 src/widget/ProviderWidget.cpp delete mode 100644 src/widget/ProviderWidget.h delete mode 100644 src/widget/RandomPinDialog.cpp delete mode 100644 src/widget/RandomPinDialog.h delete mode 100644 src/widget/ReaderDeviceDialog.cpp delete mode 100644 src/widget/ReaderDeviceDialog.h delete mode 100644 src/widget/ReaderDeviceGui.cpp delete mode 100644 src/widget/ReaderDeviceGui.h delete mode 100644 src/widget/ReaderDeviceWidget.cpp delete mode 100644 src/widget/ReaderDeviceWidget.h delete mode 100644 src/widget/ReaderDeviceWidget.ui delete mode 100644 src/widget/ReaderDriverModel.cpp delete mode 100644 src/widget/ReaderDriverModel.h delete mode 100644 src/widget/RemotePinInputDialog.cpp delete mode 100644 src/widget/RemotePinInputDialog.h delete mode 100644 src/widget/SelfInformationWidget.cpp delete mode 100644 src/widget/SelfInformationWidget.h delete mode 100644 src/widget/SelfInformationWidget.ui delete mode 100644 src/widget/SettingsWidget.cpp delete mode 100644 src/widget/SettingsWidget.h delete mode 100644 src/widget/SetupAssistantGui.cpp delete mode 100644 src/widget/SetupAssistantGui.h delete mode 100644 src/widget/SetupAssistantWizard.cpp delete mode 100644 src/widget/SetupAssistantWizard.h delete mode 100644 src/widget/UIPlugInWidgets.cpp delete mode 100644 src/widget/UIPlugInWidgets.h delete mode 100644 src/widget/UpdateWindow.cpp delete mode 100644 src/widget/UpdateWindow.h delete mode 100644 src/widget/UpdateWindow.ui delete mode 100644 src/widget/generic/BusyOverlay.h delete mode 100644 src/widget/generic/BusyOverlayContainer.cpp delete mode 100644 src/widget/generic/BusyOverlayContainer.h delete mode 100644 src/widget/generic/ButtonState.h delete mode 100644 src/widget/generic/ExclusiveButtonGroup.cpp delete mode 100644 src/widget/generic/ExclusiveButtonGroup.h delete mode 100644 src/widget/generic/GuiModule.h delete mode 100644 src/widget/generic/GuiUtils.cpp delete mode 100644 src/widget/generic/GuiUtils.h delete mode 100644 src/widget/generic/HelpAction.cpp delete mode 100644 src/widget/generic/HelpAction.h delete mode 100644 src/widget/generic/ListCheckItemWidget.cpp delete mode 100644 src/widget/generic/ListCheckItemWidget.h delete mode 100644 src/widget/generic/ListItem.h delete mode 100644 src/widget/generic/ListItemIconLeft.h delete mode 100644 src/widget/generic/ListItemIconRight.h delete mode 100644 src/widget/generic/ListItemSubTitle.h delete mode 100644 src/widget/generic/ListItemTitle.h delete mode 100644 src/widget/generic/PasswordEdit.cpp delete mode 100644 src/widget/generic/PasswordEdit.h delete mode 100644 src/widget/generic/TabButtonGroup.h delete mode 100644 src/widget/step/AuthenticateStepsWidget.cpp delete mode 100644 src/widget/step/AuthenticateStepsWidget.h delete mode 100644 src/widget/step/SelfInfoWidget.cpp delete mode 100644 src/widget/step/SelfInfoWidget.h delete mode 100644 src/widget/step/StepAdviseUserToRemoveCardGui.cpp delete mode 100644 src/widget/step/StepAdviseUserToRemoveCardGui.h delete mode 100644 src/widget/step/StepAuthenticationDoneGui.h delete mode 100644 src/widget/step/StepAuthenticationEac1Gui.cpp delete mode 100644 src/widget/step/StepAuthenticationEac1Gui.h delete mode 100644 src/widget/step/StepAuthenticationEac1Widget.cpp delete mode 100644 src/widget/step/StepAuthenticationEac1Widget.h delete mode 100644 src/widget/step/StepAuthenticationEac1Widget.ui delete mode 100644 src/widget/step/StepChooseCardGui.cpp delete mode 100644 src/widget/step/StepChooseCardGui.h delete mode 100644 src/widget/step/StepErrorGui.cpp delete mode 100644 src/widget/step/StepErrorGui.h delete mode 100644 src/widget/step/StepGui.h delete mode 100644 src/widget/step/StepProcessingGui.h delete mode 100644 src/widget/step/StepShowSelfAuthenticationDataGui.h delete mode 100644 src/widget/workflow/GenericWorkflowGui.h delete mode 100644 src/widget/workflow/WorkflowAuthenticateQtGui.cpp delete mode 100644 src/widget/workflow/WorkflowAuthenticateQtGui.h delete mode 100644 src/widget/workflow/WorkflowChangePinQtGui.cpp delete mode 100644 src/widget/workflow/WorkflowChangePinQtGui.h delete mode 100644 src/widget/workflow/WorkflowGui.cpp delete mode 100644 src/widget/workflow/WorkflowGui.h delete mode 100644 src/widget/workflow/WorkflowQtWidget.cpp delete mode 100644 src/widget/workflow/WorkflowQtWidget.h delete mode 100644 src/widget/workflow/WorkflowSelfInfoQtGui.cpp delete mode 100644 src/widget/workflow/WorkflowSelfInfoQtGui.h delete mode 100644 src/widget/workflow/WorkflowWidgetParent.h delete mode 100644 src/widgetDesignerPlugin/CMakeLists.txt delete mode 100644 src/widgetDesignerPlugin/GovernikusPluginCollection.cpp delete mode 100644 src/widgetDesignerPlugin/GovernikusPluginCollection.h delete mode 100644 src/widgetDesignerPlugin/README.rst delete mode 100644 src/widgetDesignerPlugin/plugins/GeneralSettingsWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/GeneralSettingsWidgetDesignerPlugin.h delete mode 100644 src/widgetDesignerPlugin/plugins/HistoryWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/HistoryWidgetDesignerPlugin.h delete mode 100644 src/widgetDesignerPlugin/plugins/PinSettingsWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/PinSettingsWidgetDesignerPlugin.h delete mode 100644 src/widgetDesignerPlugin/plugins/ProviderWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/ProviderWidgetDesignerPlugin.h delete mode 100644 src/widgetDesignerPlugin/plugins/SelfInformationWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/SelfInformationWidgetDesignerPlugin.h delete mode 100644 src/widgetDesignerPlugin/plugins/SettingsWidgetDesignerPlugin.cpp delete mode 100644 src/widgetDesignerPlugin/plugins/SettingsWidgetDesignerPlugin.h rename test/fixture/card/{EstablishPACEChannelOutput.hex => EstablishPaceChannelOutput.hex} (100%) rename test/fixture/card/{EstablishPACEChannelOutput2.hex => EstablishPaceChannelOutput2.hex} (100%) rename test/fixture/card/{EstablishPACEChannelOutput_fromCcid.hex => EstablishPaceChannelOutput_fromCcid.hex} (100%) rename test/fixture/card/{EstablishPACEChannelOutput_fromCcid2.hex => EstablishPaceChannelOutput_fromCcid2.hex} (100%) rename test/fixture/card/{EstablishPACEChannelOutput_wrongPIN.hex => EstablishPaceChannelOutput_wrongPIN.hex} (100%) delete mode 100644 test/fixture/core/http/DIDAuthenticateEAC1 delete mode 100644 test/fixture/core/http/DIDAuthenticateEAC2 delete mode 100644 test/fixture/core/http/DIDList delete mode 100644 test/fixture/core/http/Disconnect delete mode 100644 test/fixture/core/http/InitializeFramework delete mode 100644 test/fixture/core/http/StartPaosResponse delete mode 100644 test/fixture/core/http/Transmit delete mode 100644 test/fixture/core/http/Transmit2 create mode 100644 test/fixture/logfiles/empty.txt create mode 100644 test/fixture/logfiles/size1.txt create mode 100644 test/fixture/logfiles/size160.txt create mode 100644 test/fixture/logfiles/size78.txt create mode 100644 test/fixture/logfiles/size80.txt create mode 100644 test/fixture/logfiles/size82.txt create mode 100644 test/fixture/paos/DIDAuthenticateResponse.xml create mode 100644 test/fixture/paos/DIDAuthenticateResponse2.xml create mode 100644 test/fixture/paos/StartPAOS.xml create mode 100644 test/fixture/paos/TransmitResponse.xml create mode 100644 test/fixture/self/SelfAuthenticationData.json delete mode 100644 test/fixture/self/SelfAuthenticationData.xml create mode 100644 test/fixture/self/SelfAuthenticationDataNoAddress.json delete mode 100644 test/fixture/self/SelfAuthenticationDataNoAddress.xml create mode 100644 test/fixture/self/SelfAuthenticationDataNoStreet.json delete mode 100644 test/fixture/self/SelfAuthenticationDataNoStreet.xml create mode 100644 test/helper/MockCardConnectionWorker.cpp create mode 100644 test/helper/MockCardConnectionWorker.h delete mode 100644 test/helper/MockIfdStatus.cpp delete mode 100644 test/helper/MockIfdStatus.h create mode 100644 test/helper/MockRemoteServer.cpp create mode 100644 test/helper/MockRemoteServer.h create mode 100644 test/helper/MsgHandlerEnterPassword.cpp create mode 100644 test/helper/MsgHandlerEnterPassword.h delete mode 100644 test/helper/RemoteMessageChecker.cpp delete mode 100644 test/helper/RemoteMessageChecker.h create mode 100644 test/qml/desktop/CMakeLists.txt create mode 100644 test/qml/desktop/test_Global.qml create mode 100644 test/qml/desktop/test_TitleBar.qml create mode 100644 test/qml/generic/CMakeLists.txt create mode 100644 test/qml/generic/test_Global.qml create mode 100644 test/qml/generic/test_IdentifyView.qml create mode 100644 test/qml/generic/test_MainView.qml create mode 100644 test/qml/generic/test_ProgressView.qml create mode 100644 test/qml/generic/test_Provider.qml create mode 100644 test/qml/generic/test_ResultView.qml create mode 100644 test/qml/generic/test_Style.qml create mode 100644 test/qml/generic/test_TitleBar.qml create mode 100644 test/qml/generic/test_UiPluginQml.qml create mode 100644 test/qml/generic/test_Utils.qml create mode 100644 test/qml/mobile/CMakeLists.txt create mode 100644 test/qml/mobile/test_ChangePinView.qml create mode 100644 test/qml/mobile/test_DeveloperView.qml create mode 100644 test/qml/mobile/test_EnterPinView.qml create mode 100644 test/qml/mobile/test_FeedbackView.qml create mode 100644 test/qml/mobile/test_Global.qml create mode 100644 test/qml/mobile/test_HistoryView.qml create mode 100644 test/qml/mobile/test_InformationView.qml create mode 100644 test/qml/mobile/test_MoreView.qml create mode 100644 test/qml/mobile/test_Navigation.qml create mode 100644 test/qml/mobile/test_Provider.qml create mode 100644 test/qml/mobile/test_ProviderView.qml create mode 100644 test/qml/mobile/test_RemoteServiceView.qml create mode 100644 test/qml/mobile/test_SplashScreen.qml create mode 100644 test/qml/mobile/test_TechnologyInfo.qml create mode 100644 test/qml/mobile/test_TutorialView.qml create mode 100644 test/qml/mobile/test_View.qml create mode 100644 test/qml/mobile/test_WhiteListClientView.qml create mode 100644 test/qml/mobile/test_Workflow.qml delete mode 100644 test/qml/test_Utils.qml delete mode 100644 test/qml_stationary/AusweisApp2/Global/test_Utils.qml delete mode 100644 test/qml_stationary/CMakeLists.txt create mode 100644 test/qt/activation_webservice/test_WebserviceActivationContext.cpp delete mode 100644 test/qt/card/asn1/test_PACEInfo.cpp create mode 100644 test/qt/card/asn1/test_PaceInfo.cpp create mode 100644 test/qt/card/base/command/test_DestroyPaceChannelCommand.cpp create mode 100644 test/qt/card/base/command/test_DidAuthenticateEAC1Command.cpp create mode 100644 test/qt/card/base/command/test_EstablishPaceChannelCommand.cpp create mode 100644 test/qt/card/base/command/test_SetEidPinCommand.cpp create mode 100644 test/qt/card/base/command/test_UnblockPinCommand.cpp create mode 100644 test/qt/card/base/command/test_UpdRetryCounterCommand.cpp delete mode 100644 test/qt/card/base/test_Apdu.cpp create mode 100644 test/qt/card/base/test_CardConnection.cpp create mode 100644 test/qt/card/base/test_CardInfo.cpp create mode 100644 test/qt/card/base/test_CommandApdu.cpp create mode 100644 test/qt/card/base/test_Commands.cpp create mode 100644 test/qt/card/base/test_Reader.cpp create mode 100644 test/qt/card/base/test_ResponseApdu.cpp create mode 100644 test/qt/card/bluetooth/test_BluetoothMessageParameterCardReaderStatus.cpp delete mode 100644 test/qt/card/remote/test_RemoteReaderManagerPlugin.cpp delete mode 100644 test/qt/card/test_CommandApdu.cpp delete mode 100644 test/qt/card/test_EstablishPACEChannelBuilder.cpp delete mode 100644 test/qt/card/test_EstablishPACEChannelOutput.cpp delete mode 100644 test/qt/card/test_EstablishPACEChannelParser.cpp create mode 100644 test/qt/card/test_EstablishPaceChannel.cpp create mode 100644 test/qt/card/test_EstablishPaceChannelOutput.cpp create mode 100644 test/qt/card/test_EstablishPaceChannelParser.cpp create mode 100644 test/qt/core/context/test_ChangePinContext.cpp create mode 100644 test/qt/core/context/test_DiagnosisContext.cpp create mode 100644 test/qt/core/context/test_RemoteServiceContext.cpp create mode 100644 test/qt/core/context/test_WorkflowContext.cpp delete mode 100644 test/qt/core/paos/test_MessageIdHandler.cpp create mode 100644 test/qt/core/states/test_StateChangePin.cpp create mode 100644 test/qt/core/states/test_StateChangePinRemote.cpp create mode 100644 test/qt/core/states/test_StateConnectCard.cpp create mode 100644 test/qt/core/states/test_StateDestroyPace.cpp create mode 100644 test/qt/core/states/test_StateDidAuthenticateEac1.cpp create mode 100644 test/qt/core/states/test_StateEstablishPaceChannel.cpp create mode 100644 test/qt/core/states/test_StateEstablishPaceChannelRemote.cpp create mode 100644 test/qt/core/states/test_StateGetTcToken.cpp create mode 100644 test/qt/core/states/test_StateProcessRemoteMessages.cpp create mode 100644 test/qt/core/states/test_StateSelectPasswordId.cpp create mode 100644 test/qt/core/states/test_StateSelectReader.cpp create mode 100644 test/qt/core/states/test_StateStartRemoteService.cpp create mode 100644 test/qt/core/states/test_StateStopRemoteService.cpp create mode 100644 test/qt/core/states/test_StateTransmit.cpp create mode 100644 test/qt/core/states/test_StateUpdRetryCounter.cpp create mode 100644 test/qt/core/test_DiagnosisConnectionTest.cpp create mode 100644 test/qt/core/test_DiagnosisModel.cpp delete mode 100644 test/qt/global/test_BuildHelper.cpp create mode 100644 test/qt/global/test_ECardApiResult.cpp create mode 100644 test/qt/global/test_GlobalStatus.cpp delete mode 100644 test/qt/global/test_result.cpp create mode 100644 test/qt/network/test_PortFile.cpp create mode 100644 test/qt/qml/test_AuthModel.cpp create mode 100644 test/qt/qml/test_ChangePinModel.cpp create mode 100644 test/qt/qml/test_ChatModel.cpp create mode 100644 test/qt/qml/test_ConnectivityManager.cpp create mode 100644 test/qt/qml/test_LogModel.cpp create mode 100644 test/qt/qml/test_NumberModel.cpp create mode 100644 test/qt/qml/test_ProviderCategoryFilterModel.cpp create mode 100644 test/qt/qml/test_QmlFileStructure.cpp create mode 100644 test/qt/qml/test_RemoteServiceModel.cpp create mode 100644 test/qt/qml/test_SelfAuthModel.cpp create mode 100644 test/qt/qml/test_WorkflowModel.cpp create mode 100644 test/qt/remote_device/messages/test_Discovery.cpp create mode 100644 test/qt/remote_device/messages/test_IfdConnect.cpp create mode 100644 test/qt/remote_device/messages/test_IfdConnectResponse.cpp create mode 100644 test/qt/remote_device/messages/test_IfdDisconnect.cpp create mode 100644 test/qt/remote_device/messages/test_IfdDisconnectResponse.cpp create mode 100644 test/qt/remote_device/messages/test_IfdError.cpp create mode 100644 test/qt/remote_device/messages/test_IfdEstablishContext.cpp create mode 100644 test/qt/remote_device/messages/test_IfdEstablishContextResponse.cpp create mode 100644 test/qt/remote_device/messages/test_IfdEstablishPaceChannel.cpp create mode 100644 test/qt/remote_device/messages/test_IfdEstablishPaceChannelResponse.cpp create mode 100644 test/qt/remote_device/messages/test_IfdGetStatus.cpp create mode 100644 test/qt/remote_device/messages/test_IfdStatus.cpp create mode 100644 test/qt/remote_device/messages/test_IfdTransmit.cpp create mode 100644 test/qt/remote_device/messages/test_IfdTransmitResponse.cpp create mode 100644 test/qt/remote_device/messages/test_RemoteMessage.cpp create mode 100644 test/qt/remote_device/messages/test_RemoteMessageResponse.cpp create mode 100644 test/qt/remote_device/test_RemoteDeviceModel.cpp create mode 100644 test/qt/remote_device/test_RemoteDisp.cpp delete mode 100644 test/qt/remote_device/test_RemoteDispImpl.cpp delete mode 100644 test/qt/remote_device/test_RemoteHelper.cpp delete mode 100644 test/qt/remote_device/test_RemoteMessageParser.cpp delete mode 100644 test/qt/remote_device/test_RemoteMessages.cpp create mode 100644 test/qt/remote_device/test_RemoteReaderManagerPlugin.cpp delete mode 100644 test/qt/remote_device/test_RemoteServer.cpp create mode 100644 test/qt/remote_device/test_RemoteServerImpl.cpp delete mode 100644 test/qt/settings/test_AppSettings.cpp create mode 100644 test/qt/whitelist_client/test_Survey.cpp delete mode 100644 utils/CMakeLists.txt delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_2.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_2.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_3.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_3.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_4.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_4.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_5.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_5.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_6.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_6.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_7.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_CVCA_4_7.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_1.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_1.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_1.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_1.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_1_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_2.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_2.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_2.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_2.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_2_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_3.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_3.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_3.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_3.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_3_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_4.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_4.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_4.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_4.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_4_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_5.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_5.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_5.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_5.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_5_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_6.bin delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_6.bin.cv delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_6.cvcert delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_6.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/CERT_CV_LINK_4_6_KEY.pkcs8 delete mode 100644 utils/testbed/resources/CVCA/DECVCAeIDCT00001.bin delete mode 100644 utils/testbed/resources/CVCA/DECVCAeIDCT00001.bin.cv delete mode 100644 utils/testbed/resources/CVCA/DECVCAeIDCT00001.cvcert delete mode 100644 utils/testbed/resources/CVCA/DECVCAeIDCT00001.cvcert.hex delete mode 100644 utils/testbed/resources/CVCA/DECVCAeIDCT00001.pkcs8 diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..ae483f8 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,18 @@ +--- +Checks: ' + ,*, + ,-cppcoreguidelines-pro-bounds-array-to-pointer-decay, + ,-cppcoreguidelines-special-member-functions, + ,-cppcoreguidelines-pro-type-union-access, + ,-hicpp-special-member-functions, + ,-hicpp-use-override, + ,-google-build-using-namespace, + ,-modernize-use-default-member-init, + ,-modernize-use-override, + ,-readability-redundant-member-init, + ,-readability-implicit-bool-cast, +' + +WarningsAsErrors: '' +HeaderFilterRegex: '' +AnalyzeTemporaryDtors: false diff --git a/CMakeGraphVizOptions.cmake b/CMakeGraphVizOptions.cmake new file mode 100644 index 0000000..26b3ceb --- /dev/null +++ b/CMakeGraphVizOptions.cmake @@ -0,0 +1,12 @@ +######################################## +# Generate build dependency +# +# cmake --build . --target architecture +######################################## + +SET(GRAPHVIZ_IGNORE_TARGETS AusweisAppGlobal;AusweisAppExternal;AusweisAppUiCli;cvc;fuzz;OpenSsl;tlscheck;Test;Script) +SET(GRAPHVIZ_EXTERNAL_LIBS OFF) +SET(GRAPHVIZ_EXECUTABLES ON) +SET(GRAPHVIZ_GENERATE_PER_TARGET OFF) +SET(GRAPHVIZ_GENERATE_DEPENDERS OFF) +SET(GRAPHVIZ_GRAPH_NAME AusweisApp2) diff --git a/CMakeLists.txt b/CMakeLists.txt index e0ed608..b50ce73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,10 @@ IF(POLICY CMP0071) CMAKE_POLICY(SET CMP0071 NEW) ENDIF() +IF(POLICY CMP0074) + CMAKE_POLICY(SET CMP0074 NEW) +ENDIF() + # "tools.only" can be defined to disable the normal build and enable # cmdline "tools" only. For example: "make format" or "make package_source" IF(tools.only) @@ -33,7 +37,7 @@ ELSE() ENDIF() -PROJECT(AusweisApp2 VERSION 1.14.3 LANGUAGES ${LANGUAGES}) +PROJECT(AusweisApp2 VERSION 1.16.0 LANGUAGES ${LANGUAGES}) # Set TWEAK if not defined in PROJECT_VERSION above to # have a valid tweak version without propagating it @@ -42,7 +46,7 @@ IF(NOT PROJECT_VERSION_TWEAK) ENDIF() -IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR ANDROID OR IOS) +IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/dist" CACHE PATH "default install path" FORCE) ENDIF() SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") @@ -86,7 +90,7 @@ IF(IOS) MESSAGE(STATUS "USE_DISTRIBUTION_PROFILE: ${USE_DISTRIBUTION_PROFILE}") ENDIF() -IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") +IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}" AND NOT FORCE_SOURCE_BUILD) MESSAGE(FATAL_ERROR "in tree building is not supported!") ENDIF() @@ -96,20 +100,18 @@ ELSE() SET(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "build type configuration" FORCE) ENDIF() -IF(NOT ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG" AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") - MESSAGE(FATAL_ERROR "CMAKE_BUILD_TYPE is invalid! Available options: RELEASE, DEBUG") +IF(DESKTOP) + SET(CMAKE_AUTOUIC ON) ENDIF() - SET(CMAKE_AUTOMOC ON) -SET(CMAKE_AUTOUIC ON) SET(CMAKE_INCLUDE_CURRENT_DIR ON) SET(SRC_DIR ${PROJECT_SOURCE_DIR}/src) SET(TEST_DIR ${PROJECT_SOURCE_DIR}/test) SET(RESOURCES_DIR ${PROJECT_SOURCE_DIR}/resources) SET(PACKAGING_DIR ${RESOURCES_DIR}/packaging) -SET(EXECUTABLE_BASE_NAME AusweisApp2) -SET(EXECUTABLE_NAME ${EXECUTABLE_BASE_NAME}${CMAKE_EXECUTABLE_SUFFIX}) +SET(COPYRIGHT_TEXT "Ⓒ\; 2014-2018 ${VENDOR}") +STRING(REPLACE " \& " " \& " COPYRIGHT_TEXT ${COPYRIGHT_TEXT}) INCLUDE(Tools) INCLUDE(DVCS) @@ -131,13 +133,16 @@ ADD_SUBDIRECTORY(src) IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") INCLUDE(CTest) - CONFIGURE_FILE("${CMAKE_MODULE_PATH}/CTestCustom.cmake.in" "${CMAKE_BINARY_DIR}/CTestCustom.cmake" COPYONLY) + CONFIGURE_FILE("${CMAKE_MODULE_PATH}/CTestCustom.cmake.in" "${CMAKE_BINARY_DIR}/CTestCustom.cmake" @ONLY) + CONFIGURE_FILE("${RESOURCES_DIR}/sonar-project.properties.in" "${CMAKE_BINARY_DIR}/sonar-project.properties" @ONLY) ENDIF() IF(BUILD_TESTING) ADD_SUBDIRECTORY(test) ENDIF() -ADD_SUBDIRECTORY(utils) +IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/utils") + ADD_SUBDIRECTORY(utils) +ENDIF() INCLUDE(Packaging) diff --git a/LICENSE.officially.txt b/LICENSE.officially.txt index cdbc575..59b7e5a 100644 --- a/LICENSE.officially.txt +++ b/LICENSE.officially.txt @@ -466,14 +466,19 @@ Die verwendeten OpenSource-Bibliotheken unterliegen den folgenden Nutzungsbeding Qt Lizenz: LGPL v3 - Version: 5.9.3 + Version: 5.11.2 Adresse: https://www.qt.io/ http_parser Lizenz: MIT - Version: 2.7.1 + Version: 2.8.1 Adresse: https://github.com/nodejs/http-parser/ +Android Support Library V4 + Lizenz: Apache 2.0 + Version: 21.0.3 + Adresse: https://developer.android.com/topic/libraries/support-library/ + Die Lizenztexte lauten in ihrer originalen Fassung wie folgt: @@ -680,3 +685,210 @@ AUTHORS OR COPYRIGHT HOLDERS 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. + + + + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE.txt b/LICENSE.txt index e43986d..13f65b5 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -416,14 +416,19 @@ Die verwendeten OpenSource-Bibliotheken unterliegen den folgenden Nutzungsbeding Qt Lizenz: LGPL v3 - Version: 5.9.3 + Version: 5.11.2 Adresse: https://www.qt.io/ http_parser Lizenz: MIT - Version: 2.7.1 + Version: 2.8.1 Adresse: https://github.com/nodejs/http-parser/ +Android Support Library V4 + Lizenz: Apache 2.0 + Version: 21.0.3 + Adresse: https://developer.android.com/topic/libraries/support-library/ + Die Lizenztexte lauten in ihrer originalen Fassung wie folgt: @@ -630,3 +635,210 @@ AUTHORS OR COPYRIGHT HOLDERS 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. + + + + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.rst b/README.rst index 3927a6e..b5fe6d6 100644 --- a/README.rst +++ b/README.rst @@ -4,7 +4,7 @@ AusweisApp2 Kontakt ------- | Governikus GmbH & Co. KG -| Am Fallturm 9 +| Hochschulring 4 | 28359 Bremen | ausweisapp2@governikus.de @@ -27,15 +27,6 @@ Die separate README und das Skript unter "libs" dienen dem Aufzusetzen der notwendigen Build-Umgebung und dem automatisierten Bauen der notwendigen Bibliotheken mit den entsprechenden Patches. -Derzeit ist es leider noch nicht möglich, die AusweisApp2 ohne Patches -an OpenSSL und Qt voll funktionsfähig auszuliefern. -Dies liegt unter anderem an dem notwendigen RSA-PSK-Patch für -OpenSSL 1.0.2, welcher mit OpenSSL 1.1.0 nicht mehr notwendig ist. -Diese OpenSSL-Version wird allerdings erst mit Qt 5.10 unterstützt. -(siehe https://bugreports.qt.io/browse/QTBUG-52905) - -OpenSSL 1.1.0 wird mit der AusweisApp2 1.14.0 unterstützt. -LibreSSL wird auf Grund des fehlenden RSA-PSK nicht unterstützt. Build diff --git a/Releasing.rst b/Releasing.rst index bcf2d8a..ceafb70 100644 --- a/Releasing.rst +++ b/Releasing.rst @@ -23,8 +23,8 @@ Tag bauen --------- Die Release-Jobs müssen nach dem Tag manuell gestartet werden! -Jenkins erstellt das Release anhand des Bookmarks "release" oder des tags/changesets, -welcher als Parameter übergeben wird. +Jenkins erstellt das Release anhand des Parameters 'changeset'. Dort sollte der angebrachte +Tag oder die jeweilige Revision übergeben werden. Nachdem die notwendigen Jobs (Windows/macOS/Docs/...) durchgelaufen sind, muss der Job für den AppCast gestartet werden. diff --git a/appveyor.yml b/appveyor.yml index 420db2c..c3db5f7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,24 +4,28 @@ environment: matrix: - PlatformToolset: mingw-w64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - QTPath: C:\Qt\5.9\mingw53_32 + QTPath: C:\Qt\5.11\mingw53_32 + OPENSSLPath: C:\OpenSSL-v11-Win32 - PlatformToolset: v140 platform: x64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - QTPath: C:\Qt\5.9\msvc2015_64 + QTPath: C:\Qt\5.11\msvc2015_64 + OPENSSLPath: C:\OpenSSL-v11-Win64 ARCHI: amd64 - PlatformToolset: v140 platform: Win32 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - QTPath: C:\Qt\5.9\msvc2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + QTPath: C:\Qt\5.11\msvc2015 + OPENSSLPath: C:\OpenSSL-v11-Win32 ARCHI: x86 - PlatformToolset: v141 platform: x64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - QTPath: C:\Qt\5.9\msvc2017_64 + QTPath: C:\Qt\5.11\msvc2017_64 + OPENSSLPath: C:\OpenSSL-v11-Win64 ARCHI: amd64 configuration: @@ -29,7 +33,7 @@ configuration: #- Debug install: - - if "%PlatformToolset%"=="mingw-w64" set PATH=C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;%PATH:C:\Program Files\Git\usr\bin;=% + - if "%PlatformToolset%"=="mingw-w64" set PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH:C:\Program Files\Git\usr\bin;=% - if "%PlatformToolset%"=="v140" call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %archi% - if "%PlatformToolset%"=="v141" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" %archi% @@ -53,15 +57,15 @@ before_build: build_script: - cd "%APPVEYOR_BUILD_FOLDER%" - - set PATH=%QTPATH%;%QTPATH%/bin;%PATH% + - set OPENSSL_ROOT=%OPENSSLPath% + - set PATH=%QTPATH%;%QTPATH%/bin;%OPENSSLPath%;%PATH% - echo %PATH% + - echo %OPENSSL_ROOT% - mkdir _build - cd _build - ps: | - # Use -DFORCE_LEGACY_OPENSSL=ON to build with the available openssl 1.0.2 of the appveyor build image - # otherwise openssl 1.1.x is required with an additional download and build step - cmake -G "$generator" -DCMAKE_BUILD_TYPE="$env:CONFIGURATION" -DFORCE_LEGACY_OPENSSL=ON .. + cmake -G "$generator" -DCMAKE_BUILD_TYPE="$env:CONFIGURATION" .. if ($LastExitCode -ne 0) { throw "Exec: $ErrorMessage" } @@ -74,7 +78,7 @@ test_script: - cd "%APPVEYOR_BUILD_FOLDER%"/_build - set PATH=%QTPATH%;%QTPATH%/bin;%PATH% - echo %PATH% - - ctest -VV -C "%CONFIGURATION%" + - ctest --output-on-failure -C "%CONFIGURATION%" on_finish: - cd "%APPVEYOR_BUILD_FOLDER%" diff --git a/cmake/CTestCustom.cmake.in b/cmake/CTestCustom.cmake.in index 165bdde..a8fd13c 100644 --- a/cmake/CTestCustom.cmake.in +++ b/cmake/CTestCustom.cmake.in @@ -1,4 +1,15 @@ LIST(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "/test/") LIST(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "/external/") +LIST(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "/utils/") LIST(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE \\.moc moc_ qrc_ ui_ _ui) LIST(APPEND CTEST_EXTRA_COVERAGE_GLOB *.cpp *.h) + +SET(CTEST_SOURCE_DIRECTORY "@PROJECT_SOURCE_DIR@") +SET(CTEST_BINARY_DIRECTORY "@PROJECT_BINARY_DIR@") +SET(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@") +SET(CTEST_COMMAND @CMAKE_CTEST_COMMAND@) + +IF(CMAKE_SCRIPT_MODE_FILE) + INCLUDE(CTestCoverageCollectGCOV) + ctest_coverage_collect_gcov(TARBALL ${CTEST_BINARY_DIRECTORY}/gcov.tar GCOV_COMMAND @COVERAGE_COMMAND@) +ENDIF() diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake index 9896ef5..89a1895 100644 --- a/cmake/CompilerFlags.cmake +++ b/cmake/CompilerFlags.cmake @@ -2,11 +2,17 @@ ADD_DEFINITIONS(-DUNICODE) ADD_DEFINITIONS(-DQT_MESSAGELOGCONTEXT) ADD_DEFINITIONS(-DQT_NO_CAST_FROM_BYTEARRAY) ADD_DEFINITIONS(-DQT_NO_CAST_TO_ASCII) -ADD_DEFINITIONS(-DQT_RESTRICTED_CAST_FROM_ASCII) ADD_DEFINITIONS(-DQT_NO_FOREACH) ADD_DEFINITIONS(-DQT_NO_KEYWORDS) ADD_DEFINITIONS(-DQT_NO_EXCEPTIONS) +IF(CMAKE_VERSION VERSION_LESS "3.12") + ADD_DEFINITIONS(-DQT_RESTRICTED_CAST_FROM_ASCII) +ELSE() + ADD_COMPILE_DEFINITIONS($<$:QT_RESTRICTED_CAST_FROM_ASCII>) + ADD_COMPILE_DEFINITIONS($<$:QT_NO_CAST_FROM_ASCII>) +ENDIF() + IF(QT_VENDOR STREQUAL "Governikus") ADD_DEFINITIONS(-DGOVERNIKUS_QT) ADD_DEFINITIONS(-DQT_DEPRECATED_WARNINGS) @@ -31,13 +37,22 @@ ELSE() ADD_DEFINITIONS(-DQT_STRICT_ITERATORS) STRING(REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + STRING(REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wcast-qual -Wshadow") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -g") + IF(ANDROID AND CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a") + SET(USE_LD bfd) + ELSE() + SET(USE_LD gold) + ENDIF() + + ADD_FLAG(-fuse-ld=${USE_LD} VAR CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS LINK -fuse-ld=${USE_LD}) ADD_FLAG(-flto VAR CMAKE_EXE_LINKER_FLAGS_RELEASE CMAKE_SHARED_LINKER_FLAGS_RELEASE LINK -flto) + ADD_FLAG(-fno-rtti VAR CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_MINSIZEREL) ADD_FLAG(-fno-exceptions) ADD_FLAG(-fstack-protector-strong -fstack-protector) - ADD_FLAG(-fuse-ld=gold VAR CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS LINK -fuse-ld=gold) ADD_FLAG(-Wold-style-cast) ADD_FLAG(-Wmost) ADD_FLAG(-Wpedantic) @@ -58,6 +73,7 @@ ELSE() ADD_FLAG(-Winitializer-overrides) ADD_FLAG(-Wunreachable-code-aggressive) ADD_FLAG(-Wnewline-eof) + ADD_FLAG(-Wdate-time) ADD_FLAG(-Wno-gnu-zero-variadic-macro-arguments) # Qt (qDebug) is not compatible @@ -66,6 +82,8 @@ ELSE() SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections") IF(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-limit=64") + ELSEIF(CMAKE_VERSION VERSION_LESS "3.13" AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.12") + LIST(APPEND CMAKE_CXX_COMPILER_PREDEFINES_COMMAND "--target=${ANDROID_TOOLCHAIN_MACHINE_NAME}") ENDIF() SET(CMAKE_CXX_VISIBILITY_PRESET hidden) ENDIF() @@ -80,7 +98,7 @@ ELSE() ENDIF() IF(APPLE AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 14) - # Allow warning for LSSharedFileListItemResolve since we support OSX 10.9, too! + # Allow warning for SMCopyAllJobDictionaries, Apple will provide an alternative, until then we are stuck with this deprecated method SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-declarations") ENDIF() @@ -96,12 +114,12 @@ ELSE() ENDIF() IF(CMAKE_CXX_COMPILER_ID STREQUAL Intel) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd1875,1682,2259,654,177") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd1875,1682,2259,654,177,1599") ENDIF() ENDIF() IF(APPLE AND NOT IOS) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ObjC++ -mmacosx-version-min=10.9") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ObjC++ -mmacosx-version-min=10.11") ENDIF() diff --git a/cmake/Helper.cmake b/cmake/Helper.cmake index 3a25513..4792414 100644 --- a/cmake/Helper.cmake +++ b/cmake/Helper.cmake @@ -121,7 +121,7 @@ FUNCTION(GET_FILE_EXTENSIONS _result) cmake_parse_arguments(_PARAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) SET(FILE_EXTENSIONS *.cpp) - IF(IOS) + IF(APPLE) LIST(APPEND FILE_EXTENSIONS *.m *.mm) ENDIF() @@ -244,7 +244,7 @@ FUNCTION(GET_ANDROID_TOOLCHAIN_VARS _prefix _machine) GET_FILENAME_COMPONENT(ANDROID_TOOLCHAIN_MACHINE_NAME "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}" NAME) STRING(REGEX REPLACE "-$" "" ANDROID_TOOLCHAIN_MACHINE_NAME "${ANDROID_TOOLCHAIN_MACHINE_NAME}") STRING(REGEX MATCH "/toolchains/(.*)/prebuilt/" _unused "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}") - STRING(REGEX REPLACE "-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}$" "" ANDROID_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}") + STRING(REGEX REPLACE "-${ANDROID_NDK_TOOLCHAIN_VERSION}$" "" ANDROID_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}") SET(${_prefix} ${ANDROID_TOOLCHAIN_PREFIX} PARENT_SCOPE) SET(${_machine} ${ANDROID_TOOLCHAIN_MACHINE_NAME} PARENT_SCOPE) ENDFUNCTION() @@ -299,16 +299,14 @@ FUNCTION(FETCH_TARGET_LOCATION _destination _target) SET(multiValueArgs) cmake_parse_arguments(_PARAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION_${CMAKE_BUILD_TYPE}) - - IF(NOT tmp) - IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION_RELEASE) - ELSEIF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE") - GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION_DEBUG) - ENDIF() + IF(CMAKE_BUILD_TYPE STREQUAL "MINSIZEREL" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO") + SET(BUILD_TYPE RELEASE) + ELSE() + SET(BUILD_TYPE ${CMAKE_BUILD_TYPE}) ENDIF() + GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION_${BUILD_TYPE}) + IF(NOT tmp) GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION) ENDIF() diff --git a/cmake/Install.cmake b/cmake/Install.cmake index b0729e3..cc49d59 100644 --- a/cmake/Install.cmake +++ b/cmake/Install.cmake @@ -19,6 +19,25 @@ SET(SEARCH_ADDITIONAL_DIRS " DIRLIST_OF_FILES(ADDITIONAL_DIRS ${CMAKE_BINARY_DIR}/src/*${CMAKE_SHARED_LIBRARY_SUFFIX}) ") +SET(DEPENDENCY_CHECK " + FUNCTION(gp_resolved_file_type_override file type) + MESSAGE(STATUS \"Collect dependency: \${file}\") + + IF(file MATCHES \"libstdc.+\.dll\" + OR file MATCHES \"libwinpthread-.+\.dll\" + OR file MATCHES \"libgcc_s_.+\.dll\" + OR file MATCHES \"libssp-.+\.dll\") + + get_filename_component(path \"${CMAKE_CXX_COMPILER}\" DIRECTORY) + get_filename_component(pathDest \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\" DIRECTORY) + IF(NOT file MATCHES \"\${path}\" AND NOT file MATCHES \"\${pathDest}\") + MESSAGE(FATAL_ERROR \"Wrong source path detected: \${file} | Should be: \${path} or \${pathDest}\") + ENDIF() + + ENDIF() + ENDFUNCTION() +") + IF(WIN32) IF(MSVC) @@ -29,6 +48,10 @@ IF(WIN32) INCLUDE(InstallRequiredSystemLibraries) ENDIF() + IF(TARGET Qt5::Qml) + FETCH_TARGET_LOCATION(libQuickControls2 "Qt5::QuickControls2") + INSTALL(FILES ${libQuickControls2} DESTINATION . COMPONENT Runtime) + ENDIF() FETCH_TARGET_LOCATION(libSvg "Qt5::Svg") FETCH_TARGET_LOCATION(pluginSvg "Qt5::QSvgPlugin") FETCH_TARGET_LOCATION(pluginGif "Qt5::QGifPlugin") @@ -38,6 +61,7 @@ IF(WIN32) ELSE() FETCH_TARGET_LOCATION(platformWin "Qt5::QWindowsIntegrationPlugin") ENDIF() + FETCH_TARGET_LOCATION(styleVista "Qt5::QWindowsVistaStylePlugin") INSTALL(TARGETS AusweisApp DESTINATION . COMPONENT Application) INSTALL(FILES ${libSvg} DESTINATION . COMPONENT Runtime) @@ -45,20 +69,24 @@ IF(WIN32) INSTALL(FILES ${pluginGif} DESTINATION imageformats COMPONENT Runtime) INSTALL(FILES ${pluginJpeg} DESTINATION imageformats COMPONENT Runtime) INSTALL(FILES ${platformWin} DESTINATION platforms COMPONENT Runtime) + INSTALL(FILES ${styleVista} DESTINATION styles COMPONENT Runtime) INSTALL(CODE " + ${DEPENDENCY_CHECK} ${SEARCH_ADDITIONAL_DIRS} INCLUDE(BundleUtilities) - FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}\" \"\" \"${TOOLCHAIN_BIN_PATH};\${ADDITIONAL_DIRS}\") + FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}\" \"${libQuickControls2}\" \"${TOOLCHAIN_BIN_PATH};\${ADDITIONAL_DIRS}\") " COMPONENT Runtime) ELSEIF(APPLE AND NOT IOS) + SET(MACOS_BUNDLE_MACOS_DIR ../MacOS) SET(MACOS_BUNDLE_PLUGINS_DIR ../PlugIns) SET(MACOS_BUNDLE_FRAMEWORKS_DIR ../Frameworks) SET(MACOS_BUNDLE_RESOURCES_DIR ../Resources) + SET(MACOS_BUNDLE_LOGIN_ITEMS_DIR ../Library/LoginItems) # We need to include the following (i.e. all) image format plug-ins, # since those seem to be loaded upon program start-up. Not including @@ -67,38 +95,71 @@ ELSEIF(APPLE AND NOT IOS) # depend on to be loaded as well, thus resulting in two sets of Qt # libraries being loaded (ours from the bundle and the ones from the # installation) and the program misbehaving (crashing). - FETCH_TARGET_LOCATION(platformMac "Qt5::QCocoaIntegrationPlugin") - FOREACH (qtComponent QtCore Qt5Gui Qt5Network Qt5Svg Qt5Widgets) FOREACH(plugin ${${qtComponent}_PLUGINS}) GET_TARGET_PROPERTY(pluginPath ${plugin} LOCATION) GET_FILENAME_COMPONENT(pluginDir ${pluginPath} DIRECTORY) GET_FILENAME_COMPONENT(pluginName ${pluginPath} NAME) GET_FILENAME_COMPONENT(pluginDirName ${pluginDir} NAME) + + IF(pluginDirName STREQUAL "platforms" AND NOT plugin STREQUAL "Qt5::QCocoaIntegrationPlugin") + CONTINUE() + ENDIF() + INSTALL(FILES ${pluginPath} DESTINATION ${MACOS_BUNDLE_PLUGINS_DIR}/${pluginDirName} COMPONENT Runtime) LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/PlugIns/${pluginDirName}/${pluginName}") ENDFOREACH() ENDFOREACH() - INSTALL(TARGETS AusweisApp DESTINATION . COMPONENT Application) - INSTALL(FILES ${platformMac} DESTINATION ${MACOS_BUNDLE_PLUGINS_DIR}/platforms COMPONENT Runtime) + IF(TARGET Qt5::Qml) + FOREACH(entry QtQuick QtQuick.2 QtQml QtGraphicalEffects Qt) + SET(_dir "${QT_HOST_PREFIX}/qml") + FILE(GLOB_RECURSE DYLIB "${_dir}/${entry}/*.dylib") + FOREACH(_lib ${DYLIB}) + FILE(RELATIVE_PATH _lib_dest "${_dir}" "${_lib}") + IF(NOT _lib_dest MATCHES "XmlListModel|Particles.2|LocalStorage") # blacklist not needed stuff + GET_FILENAME_COMPONENT(_lib_dest_dir ${_lib_dest} DIRECTORY) + INSTALL(FILES ${_lib} DESTINATION ${MACOS_BUNDLE_RESOURCES_DIR}/qml/${_lib_dest_dir} COMPONENT Runtime) + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Resources/qml/${_lib_dest}") + ENDIF() + ENDFOREACH() + ENDFOREACH() + ENDIF() + + INSTALL(TARGETS AusweisApp DESTINATION ${MACOS_BUNDLE_MACOS_DIR} COMPONENT Application) + + INSTALL(TARGETS AusweisApp2AutostartHelper DESTINATION ${MACOS_BUNDLE_LOGIN_ITEMS_DIR} COMPONENT Application) INSTALL(CODE " + ${DEPENDENCY_CHECK} ${SEARCH_ADDITIONAL_DIRS} file(GLOB_RECURSE QTPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MACOS_BUNDLE_PLUGINS_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") + file(GLOB_RECURSE QtQuickPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MACOS_BUNDLE_RESOURCES_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") INCLUDE(BundleUtilities) - FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}\" \"\${QTPLUGINS}\" \"${TOOLCHAIN_LIB_PATH};\${ADDITIONAL_DIRS}\") + FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MACOS_BUNDLE_MACOS_DIR}/${PROJECT_NAME}\" \"\${QTPLUGINS};\${QtQuickPLUGINS}\" \"${TOOLCHAIN_LIB_PATH};\${ADDITIONAL_DIRS}\") " COMPONENT Runtime) + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Library/LoginItems/AusweisApp2AutostartHelper.app/Contents/MacOS/AusweisApp2AutostartHelper") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Library/LoginItems/AusweisApp2AutostartHelper.app") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtCore.framework") LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtGui.framework") - LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtXml.framework") LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtNetwork.framework") LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtSvg.framework") LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtWidgets.framework") LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtPrintSupport.framework") # remove if disabled in Qt LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtWebSockets.framework") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtConcurrent.framework") + IF(TARGET Qt5::Qml) + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQml.framework") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuick.framework") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuickControls2.framework") + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuickTemplates2.framework") + ENDIF() + IF(TARGET Qt5::Bluetooth) + LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtBluetooth.framework") + ENDIF() FETCH_TARGET_LOCATION(opensslCryptoName "OpenSSL::Crypto" NAME) FETCH_TARGET_LOCATION(opensslSslName "OpenSSL::SSL" NAME) @@ -131,13 +192,27 @@ ELSEIF(ANDROID) SET(ANDROID_PACKAGE_NAME "com.governikus.ausweisapp2") ENDIF() - FOREACH(entry ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi) - INSTALL(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/drawable-${entry} COMPONENT Runtime RENAME npa.png) - ENDFOREACH() + IF(ANDROID_BUILD_AAR) + SET(ANDROID_MANIFEST AndroidManifest.xml.aar.in) + FOREACH(entry network/WifiInfo ui/aidl/AidlBinder activation/intent/AusweisApp2Service) + SET(_java_file "${SRC_DIR}/${entry}.java") + IF(NOT EXISTS "${_java_file}") + MESSAGE(FATAL_ERROR "Cannot find file: ${_java_file}") + ENDIF() + LIST(APPEND JAVA_FILES "${_java_file}") + ENDFOREACH() + ELSE() + SET(ANDROID_MANIFEST AndroidManifest.xml.apk.in) - INSTALL(FILES ${PACKAGING_DIR}/android/styles.xml DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/values COMPONENT Runtime) + FOREACH(entry ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi) + INSTALL(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/drawable-${entry} COMPONENT Runtime RENAME npa.png) + ENDFOREACH() + + INSTALL(FILES ${PACKAGING_DIR}/android/styles.xml DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/values COMPONENT Runtime) + + FILE(GLOB_RECURSE JAVA_FILES "${SRC_DIR}/*.java") + ENDIF() - FILE(GLOB_RECURSE JAVA_FILES "${SRC_DIR}/*.java") INSTALL(FILES ${JAVA_FILES} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/src COMPONENT Runtime) INSTALL(FILES ${PACKAGING_DIR}/android/IAusweisApp2Sdk.aidl DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/src/com/governikus/ausweisapp2/ COMPONENT Runtime) INSTALL(FILES ${PACKAGING_DIR}/android/IAusweisApp2SdkCallback.aidl DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/src/com/governikus/ausweisapp2/ COMPONENT Runtime) @@ -147,10 +222,26 @@ ELSEIF(ANDROID) ELSE() SET(ANDROID_VERSION_NAME ${PROJECT_VERSION}) ENDIF() - CONFIGURE_FILE(${PACKAGING_DIR}/android/AndroidManifest.xml.in ${ANDROID_PACKAGE_SRC_DIR}/AndroidManifest.xml @ONLY) + CONFIGURE_FILE(${PACKAGING_DIR}/android/${ANDROID_MANIFEST} ${ANDROID_PACKAGE_SRC_DIR}/AndroidManifest.xml @ONLY) + CONFIGURE_FILE(${PACKAGING_DIR}/android/fileprovider.xml ${ANDROID_PACKAGE_SRC_DIR}/res/xml/fileprovider.xml COPYONLY) + + SET(ANDROID_APP_BINARY "${CMAKE_INSTALL_PREFIX}/${ANDROID_DEST}/libAusweisApp2.so") + SET(SYMBOL_FOLDER "${CMAKE_BINARY_DIR}/debug.symbols/${CMAKE_ANDROID_ARCH_ABI}") + SET(ANDROID_APP_SYMBOLS "${SYMBOL_FOLDER}/libAusweisApp2.so") + + INSTALL(CODE + " + EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" -E make_directory \"${SYMBOL_FOLDER}\") + EXECUTE_PROCESS(COMMAND \"${CMAKE_OBJCOPY}\" \"--only-keep-debug\" \"${ANDROID_APP_BINARY}\" \"${ANDROID_APP_SYMBOLS}\") + " COMPONENT Runtime CONFIGURATIONS RelWithDebInfo) + + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(ANDROID_STL_PATH gnu-libstdc++/${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}) + ELSE() + SET(ANDROID_STL_PATH llvm-libc++) + ENDIF() SET(ANDROID_DEPLOYMENT_SETTINGS ${PROJECT_BINARY_DIR}/libAusweisApp2.so-deployment-settings.json CACHE INTERNAL "apk deployment" FORCE) - SET(ANDROID_APP_BINARY "${CMAKE_INSTALL_PREFIX}/${ANDROID_DEST}/libAusweisApp2.so") CONFIGURE_FILE(${PACKAGING_DIR}/android/libAusweisApp2.so-deployment-settings.json.in ${ANDROID_DEPLOYMENT_SETTINGS} @ONLY) SET(TRANSLATION_DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/assets/translations) @@ -165,9 +256,10 @@ ELSEIF(UNIX) INSTALL(TARGETS AusweisApp DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Application) INSTALL(CODE " + ${DEPENDENCY_CHECK} ${SEARCH_ADDITIONAL_DIRS} INCLUDE(BundleUtilities) - FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DEFAULT_FILE_DESTINATION}/${EXECUTABLE_NAME}\" \"\" \"\${ADDITIONAL_DIRS}\") + FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DEFAULT_FILE_DESTINATION}/${PROJECT_NAME}\" \"\" \"\${ADDITIONAL_DIRS}\") " COMPONENT Runtime) CONFIGURE_FILE(${PACKAGING_DIR}/linux/AusweisApp2.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/AusweisApp2.desktop @ONLY) @@ -191,7 +283,7 @@ IF(LINUX OR WIN32 OR MAC) INSTALL(CODE " EXECUTE_PROCESS(COMMAND - ${SELF_PACKER_FOR_EXECUTABLE} ${SELF_PACKER_FOR_EXECUTABLE_FLAGS} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DEFAULT_FILE_DESTINATION}/${EXECUTABLE_NAME}\") + ${SELF_PACKER_FOR_EXECUTABLE} ${SELF_PACKER_FOR_EXECUTABLE_FLAGS} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DEFAULT_FILE_DESTINATION}/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}\") " COMPONENT Application) ENDIF() ENDIF() @@ -210,16 +302,26 @@ ENDIF() IF(LINUX) INSTALL(FILES ${QM_FILES} DESTINATION ${TRANSLATION_DESTINATION} COMPONENT Translations) -ELSE() +ELSEIF(NOT ANDROID_BUILD_AAR) INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/translations/ DESTINATION ${TRANSLATION_DESTINATION} COMPONENT Translations) ENDIF() -# resources file -INSTALL(FILES ${RCC} DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime) +IF(NOT ANDROID_BUILD_AAR) + # resources file + INSTALL(FILES ${RCC} DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime) +ENDIF() + +IF(NOT ANDROID AND NOT IOS) + # qtlogging.ini + INSTALL(FILES ${RESOURCES_DIR}/qtlogging.ini DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime) +ENDIF() + +# qt qml plugins +IF(DESKTOP AND TARGET Qt5::Qml) + FOREACH(entry QtQuick QtQuick.2 QtQml QtGraphicalEffects Qt) + INSTALL(DIRECTORY ${QT_HOST_PREFIX}/qml/${entry} DESTINATION ${DEFAULT_FILE_DESTINATION}/qml COMPONENT Runtime PATTERN "*.dylib" EXCLUDE) + ENDFOREACH() +ENDIF() # secure storage file INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.json DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime) - -# qtlogging.ini -INSTALL(FILES ${RESOURCES_DIR}/qtlogging.ini DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime) - diff --git a/cmake/Libraries.cmake b/cmake/Libraries.cmake index 7728f19..f0e816e 100644 --- a/cmake/Libraries.cmake +++ b/cmake/Libraries.cmake @@ -5,14 +5,20 @@ IF(MINGW) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib") ENDIF() -SET(MIN_QT_VERSION 5.9) +SET(MIN_QT_VERSION 5.10) FIND_PACKAGE(Qt5Core ${MIN_QT_VERSION} REQUIRED) +FIND_PACKAGE(Qt5Concurrent ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5Network ${MIN_QT_VERSION} REQUIRED) -FIND_PACKAGE(Qt5Xml ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5Svg ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5LinguistTools ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5WebSockets ${MIN_QT_VERSION} REQUIRED) +IF(NOT DESKTOP AND NOT ANDROID_BUILD_AAR OR "${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") + FIND_PACKAGE(Qt5Qml ${MIN_QT_VERSION} REQUIRED) + FIND_PACKAGE(Qt5Quick ${MIN_QT_VERSION} REQUIRED) + FIND_PACKAGE(Qt5QuickControls2 ${MIN_QT_VERSION} REQUIRED) +ENDIF() + IF(DESKTOP) FIND_PACKAGE(Qt5Widgets ${MIN_QT_VERSION} REQUIRED) @@ -24,9 +30,6 @@ ENDIF() IF(ANDROID OR IOS OR WINDOWS_STORE OR "${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") FIND_PACKAGE(Qt5Bluetooth ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5Nfc ${MIN_QT_VERSION} REQUIRED) - FIND_PACKAGE(Qt5Qml ${MIN_QT_VERSION} REQUIRED) - FIND_PACKAGE(Qt5Quick ${MIN_QT_VERSION} REQUIRED) - FIND_PACKAGE(Qt5QuickControls2 ${MIN_QT_VERSION} REQUIRED) ENDIF() IF(ANDROID) @@ -71,13 +74,6 @@ IF(tmp_crosscompile_enabled) SET(CMAKE_CROSSCOMPILING OFF) ENDIF() -IF(ANDROID) - GET_TARGET_PROPERTY(CryptoLib OpenSSL::Crypto IMPORTED_LOCATION) - STRING(REPLACE "libcrypto.so" "libgovcrypto.so" CryptoLib "${CryptoLib}") - MESSAGE(STATUS "Rewrite OpenSSL::Crypto: ${CryptoLib}") - SET_TARGET_PROPERTIES(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION "${CryptoLib}") -ENDIF() - IF(MINGW) SET(PCSC_LIBRARIES -lwinscard) @@ -101,6 +97,7 @@ ELSEIF(IOS) FIND_LIBRARY(IOS_SECURITY Security) FIND_LIBRARY(IOS_SYSTEMCONFIGURATION SystemConfiguration) FIND_LIBRARY(IOS_AUDIOTOOLBOX AudioToolbox) + FIND_LIBRARY(IOS_IMAGEIO ImageIO) ELSEIF(MAC) FIND_PATH(PCSC_INCLUDE_DIRS WinSCard.h) FIND_LIBRARY(PCSC_LIBRARIES NAMES PCSC WinSCard) @@ -108,6 +105,8 @@ ELSEIF(MAC) FIND_LIBRARY(OSX_APPKIT AppKit) FIND_LIBRARY(IOKIT NAMES IOKit) FIND_LIBRARY(OSX_SECURITY Security) + FIND_LIBRARY(OSX_FOUNDATION Foundation) + FIND_LIBRARY(OSX_SERVICEMANAGEMENT ServiceManagement) ELSEIF(UNIX) IF(LINUX) FIND_LIBRARY(LIBUDEV NAMES udev ludev libudev) @@ -122,8 +121,4 @@ ENDIF() IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") FIND_PACKAGE(Qt5Test ${MIN_QT_VERSION} REQUIRED) FIND_PACKAGE(Qt5QuickTest ${MIN_QT_VERSION} REQUIRED) - - IF(DESKTOP AND NOT APPLE) - FIND_PACKAGE(Qt5UiPlugin ${MIN_QT_VERSION}) - ENDIF() ENDIF() diff --git a/cmake/Messages.cmake b/cmake/Messages.cmake index c149e3c..dfc993a 100644 --- a/cmake/Messages.cmake +++ b/cmake/Messages.cmake @@ -12,14 +12,6 @@ MESSAGE(STATUS "CMAKE_SYSROOT_COMPILE: ${CMAKE_SYSROOT_COMPILE}") MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") IF(ANDROID) - FUNCTION(READ_REVISION _var _regex _file) - IF(EXISTS "${_file}") - FILE(READ "${_file}" content) - STRING(REGEX MATCH "${_regex}" _unused "${content}") - SET(${_var} ${CMAKE_MATCH_1} PARENT_SCOPE) - ENDIF() - ENDFUNCTION() - MESSAGE(STATUS "CMAKE_ANDROID_NDK: ${CMAKE_ANDROID_NDK}") MESSAGE(STATUS "CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG: ${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}") MESSAGE(STATUS "CMAKE_ANDROID_ARCH_ABI: ${CMAKE_ANDROID_ARCH_ABI}") @@ -31,10 +23,7 @@ IF(ANDROID) MESSAGE(STATUS "ANDROID_SDK: ${ANDROID_SDK}") MESSAGE(STATUS "ANDROID_BUILD_TOOLS_REVISION: ${ANDROID_BUILD_TOOLS_REVISION}") - READ_REVISION(ANDROID_NDK_REVISION ".*Revision = ([0-9|\\.]+)" "${CMAKE_ANDROID_NDK}/source.properties") MESSAGE(STATUS "ANDROID_NDK_REVISION: ${ANDROID_NDK_REVISION}") - - READ_REVISION(ANDROID_SDK_REVISION ".*Revision=([0-9|\\.]+)" "${ANDROID_SDK}/tools/source.properties") MESSAGE(STATUS "ANDROID_SDK_REVISION: ${ANDROID_SDK_REVISION}") ELSEIF(IOS) diff --git a/cmake/Packaging.cmake b/cmake/Packaging.cmake index 817cde3..c009456 100644 --- a/cmake/Packaging.cmake +++ b/cmake/Packaging.cmake @@ -3,7 +3,10 @@ SET(FILENAME ${PROJECT_NAME}-${PROJECT_VERSION}) -IF(ANDROID) +IF(ANDROID_BUILD_AAR) + STRING(TOLOWER "${FILENAME}" FILENAME) + STRING(REGEX REPLACE "[0-9]*-" "-" FILENAME "${FILENAME}") +ELSEIF(ANDROID) SET(FILENAME ${FILENAME}-${CMAKE_ANDROID_ARCH_ABI}) ENDIF() @@ -52,7 +55,7 @@ IF(APPLE AND NOT IOS) SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_BINARY_DIR}/LICENSE.txt") ENDIF() -IF(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") +IF(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" OR ${CMAKE_BUILD_TYPE} STREQUAL "MINSIZEREL") SET(CPACK_STRIP_FILES TRUE) ENDIF() @@ -69,16 +72,12 @@ LIST(APPEND CPACK_SOURCE_IGNORE_FILES "CMakeLists\\\\.txt\\\\.user") LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.project") LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.cproject") LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.reviewboardrc") -LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/tlscheck") -LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/testbedtool") -LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/fuzzing") +LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils") SET(CPACK_MONOLITHIC_INSTALL true) IF(WIN32) - SET(CPACK_PACKAGE_EXECUTABLES "AusweisApp2;AusweisApp2") - SET(CPACK_GENERATOR WIX) SET(CPACK_WIX_UPGRADE_GUID 4EE0E467-EAB7-483E-AB45-87BD1DB6B037) SET(CPACK_WIX_PRODUCT_ICON ${RESOURCES_DIR}/images/npa.ico) @@ -86,6 +85,7 @@ IF(WIN32) # disable above line, enable beneath line to build MSI for english # SET(CPACK_WIX_CULTURES en-US) SET(CPACK_WIX_TEMPLATE ${PACKAGING_DIR}/win/WIX.template.in) + SET(CPACK_WIX_EXTRA_SOURCES ${PACKAGING_DIR}/win/install_settings.wxs ${PACKAGING_DIR}/win/runtime_settings.wxs) SET(CPACK_WIX_UI_BANNER ${RESOURCES_DIR}/images/wix_banner.jpg) SET(CPACK_WIX_UI_DIALOG ${RESOURCES_DIR}/images/wix_dialog.jpg) SET(CPACK_WIX_EXTENSIONS WixUtilExtension) @@ -126,6 +126,7 @@ ELSEIF(APPLE) SET(CPACK_GENERATOR Bundle) SET(CPACK_INSTALL_CMAKE_PROJECTS ${CMAKE_BINARY_DIR};${PROJECT_NAME};ALL;/) SET(CPACK_BUNDLE_NAME ${PROJECT_NAME}) + SET(CPACK_BUNDLE_COPYRIGHT ${COPYRIGHT_TEXT}) SET(CPACK_BUNDLE_ICON ${RESOURCES_DIR}/images/bundle_icons.icns) SET(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Governikus GmbH & Co. KG (G7EQCJU4BR)") @@ -153,10 +154,6 @@ ELSEIF(APPLE) CONFIGURE_FILE(${MACOS_PACKAGING_DIR}/${INFO_PLIST_FILE_NAME} ${INFO_PLIST_FILE_NAME} @ONLY) SET(CPACK_BUNDLE_PLIST ${INFO_PLIST_FILE_NAME}) - SET(STARTUP_FILE_NAME start-ausweisapp2.sh) - CONFIGURE_FILE(${MACOS_PACKAGING_DIR}/${STARTUP_FILE_NAME} ${STARTUP_FILE_NAME} @ONLY) - SET(CPACK_BUNDLE_STARTUP_COMMAND ${STARTUP_FILE_NAME}) - ELSEIF(ANDROID) FIND_PROGRAM(androiddeployqt androiddeployqt CMAKE_FIND_ROOT_PATH_BOTH) IF(NOT androiddeployqt) @@ -164,16 +161,40 @@ ELSEIF(ANDROID) ENDIF() MESSAGE(STATUS "Using androiddeployqt: ${androiddeployqt}") - OPTION(ANDROID_USE_GRADLE "Use gradle for androiddeployqt" OFF) + OPTION(ANDROID_USE_GRADLE "Use gradle for androiddeployqt" ON) - IF(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") - IF(APK_SIGN_KEYSTORE AND APK_SIGN_KEYSTORE_ALIAS AND APK_SIGN_KEYSTORE_PSW) + IF(ANDROID_USE_GRADLE) + FILE(READ "${QT_HOST_PREFIX}/src/android/templates/build.gradle" BUILD_GRADLE) + + IF(ANDROID_BUILD_AAR) + STRING(REPLACE "apply plugin: 'com.android.application'" "apply plugin: 'com.android.library'" BUILD_GRADLE "${BUILD_GRADLE}") + ENDIF() + + FILE(WRITE "${CMAKE_INSTALL_PREFIX}/build.gradle" "${BUILD_GRADLE}") + + FILE(READ "${PACKAGING_DIR}/android/build.gradle.append" BUILD_GRADLE) + FILE(APPEND "${CMAKE_INSTALL_PREFIX}/build.gradle" "${BUILD_GRADLE}") + ENDIF() + + IF(ANDROID_BUILD_AAR) + SET(ANDROID_FILE_EXT aar) + CONFIGURE_FILE(${PACKAGING_DIR}/android/pom.xml.in ${CMAKE_INSTALL_PREFIX}/${CPACK_PACKAGE_FILE_NAME}.pom @ONLY) + ELSE() + SET(ANDROID_FILE_EXT apk) + ENDIF() + MESSAGE(STATUS "Prepare ${ANDROID_FILE_EXT} file generation") + + IF(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" OR ${CMAKE_BUILD_TYPE} STREQUAL "RELWITHDEBINFO" OR ${CMAKE_BUILD_TYPE} STREQUAL "MINSIZEREL") + IF(ANDROID_BUILD_AAR) + SET(ANDROID_FILE dist-release.aar) + SET(DEPLOY_CMD_SIGN --release) + ELSEIF(APK_SIGN_KEYSTORE AND APK_SIGN_KEYSTORE_ALIAS AND APK_SIGN_KEYSTORE_PSW) MESSAGE(STATUS "Release build will be signed using: ${APK_SIGN_KEYSTORE} | Alias: ${APK_SIGN_KEYSTORE_ALIAS}") SET(DEPLOY_CMD_SIGN --sign ${APK_SIGN_KEYSTORE} ${APK_SIGN_KEYSTORE_ALIAS} --storepass ${APK_SIGN_KEYSTORE_PSW} --digestalg SHA-256 --sigalg SHA256WithRSA) IF(ANDROID_USE_GRADLE) - SET(APK_FILE dist-release-signed.apk) + SET(ANDROID_FILE dist-release-signed.apk) ELSE() - SET(APK_FILE QtApp-release-signed.apk) + SET(ANDROID_FILE QtApp-release-signed.apk) ENDIF() ELSE() MESSAGE(FATAL_ERROR "Cannot sign release build! Set APK_SIGN_KEYSTORE, APK_SIGN_KEYSTORE_ALIAS and APK_SIGN_KEYSTORE_PSW!") @@ -181,9 +202,9 @@ ELSEIF(ANDROID) ELSE() IF(ANDROID_USE_GRADLE) - SET(APK_FILE dist-debug.apk) + SET(ANDROID_FILE dist-debug.${ANDROID_FILE_EXT}) ELSE() - SET(APK_FILE QtApp-debug.apk) + SET(ANDROID_FILE QtApp-debug.apk) ENDIF() ENDIF() @@ -191,21 +212,43 @@ ELSEIF(ANDROID) IF(ANDROID_USE_GRADLE) SET(DEPLOY_CMD ${DEPLOY_CMD} --gradle) - SET(SOURCE_APK_FILE ${CMAKE_INSTALL_PREFIX}/build/outputs/apk/${APK_FILE}) + SET(SOURCE_ANDROID_FILE ${CMAKE_INSTALL_PREFIX}/build/outputs/${ANDROID_FILE_EXT}) + + IF("${Qt5Core_VERSION}" VERSION_GREATER_EQUAL "5.12.0" AND NOT ANDROID_BUILD_AAR) + IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") + SET(SOURCE_ANDROID_FILE ${SOURCE_ANDROID_FILE}/debug) + ELSE() + SET(SOURCE_ANDROID_FILE ${SOURCE_ANDROID_FILE}/release) + ENDIF() + ENDIF() + + SET(SOURCE_ANDROID_FILE ${SOURCE_ANDROID_FILE}/${ANDROID_FILE}) ELSE() - SET(SOURCE_APK_FILE ${CMAKE_INSTALL_PREFIX}/bin/${APK_FILE}) + IF(ANDROID_BUILD_AAR) + MESSAGE(FATAL_ERROR "Use gradle to build an AAR") + ENDIF() + SET(SOURCE_ANDROID_FILE ${CMAKE_INSTALL_PREFIX}/bin/${ANDROID_FILE}) ENDIF() - SET(DESTINATION_APK_FILE ${CMAKE_INSTALL_PREFIX}/${CPACK_PACKAGE_FILE_NAME}.apk) + SET(DESTINATION_ANDROID_FILE ${CMAKE_INSTALL_PREFIX}/${CPACK_PACKAGE_FILE_NAME}.${ANDROID_FILE_EXT}) # Add DEPENDS install someday # http://public.kitware.com/Bug/view.php?id=8438 - ADD_CUSTOM_TARGET(apk + ADD_CUSTOM_TARGET(${ANDROID_FILE_EXT} COMMAND ${DEPLOY_CMD} - COMMAND ${CMAKE_COMMAND} -E copy ${SOURCE_APK_FILE} ${DESTINATION_APK_FILE}) + COMMAND ${CMAKE_COMMAND} -E copy ${SOURCE_ANDROID_FILE} ${DESTINATION_ANDROID_FILE}) - FIND_PROGRAM(apksigner apksigner HINTS ${ANDROID_SDK}/build-tools/${ANDROID_BUILD_TOOLS_REVISION} CMAKE_FIND_ROOT_PATH_BOTH) - IF(apksigner) - ADD_CUSTOM_TARGET(verify.signature COMMAND ${apksigner} verify --verbose --print-certs -Werr ${DESTINATION_APK_FILE}) + IF(ANDROID_USE_GRADLE) + ADD_CUSTOM_COMMAND(TARGET ${ANDROID_FILE_EXT} POST_BUILD + COMMAND ${CMAKE_INSTALL_PREFIX}/gradlew sourcesJar lint + COMMAND ${CMAKE_COMMAND} -E copy build/libs/dist-sources.jar ${CPACK_PACKAGE_FILE_NAME}-sources.jar + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}) + ENDIF() + + IF(NOT ANDROID_BUILD_AAR) + FIND_PROGRAM(apksigner apksigner HINTS ${ANDROID_SDK}/build-tools/${ANDROID_BUILD_TOOLS_REVISION} CMAKE_FIND_ROOT_PATH_BOTH) + IF(apksigner) + ADD_CUSTOM_TARGET(verify.signature COMMAND ${apksigner} verify --verbose --print-certs -Werr ${DESTINATION_ANDROID_FILE}) + ENDIF() ENDIF() ELSEIF(UNIX) diff --git a/cmake/Tools.cmake b/cmake/Tools.cmake index 5c6e512..d6f13b2 100644 --- a/cmake/Tools.cmake +++ b/cmake/Tools.cmake @@ -43,7 +43,7 @@ IF(COVERAGE) FIND_PROGRAM(GCOVR_BIN gcovr CMAKE_FIND_ROOT_PATH_BOTH) IF(GCOVR_BIN) SET(GCOVR_FILE "${PROJECT_BINARY_DIR}/gcovr.xml") - SET(GCOVR_CMD ${GCOVR_BIN} -x -o ${GCOVR_FILE} --exclude="src/external" --exclude="test" -r ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) + SET(GCOVR_CMD ${GCOVR_BIN} -x -o ${GCOVR_FILE} --exclude="utils" --exclude="src/external" --exclude="test" -r ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) ADD_CUSTOM_COMMAND(OUTPUT ${GCOVR_FILE} COMMAND ${GCOVR_CMD} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) ADD_CUSTOM_TARGET(gcovr DEPENDS ${GCOVR_FILE}) @@ -151,14 +151,11 @@ ENDIF() FIND_PROGRAM(QMLLINT_BIN qmllint CMAKE_FIND_ROOT_PATH_BOTH) IF(QMLLINT_BIN) FILE(GLOB_RECURSE TEST_FILES_QML ${TEST_DIR}/qml/*.qml) - FILE(GLOB_RECURSE TEST_FILES_QML_STATIONARY ${TEST_DIR}/qml_stationary/*.qml) FILE(GLOB_RECURSE FILES_QML ${RESOURCES_DIR}/qml/*.qml) - FILE(GLOB_RECURSE FILES_QML_STATIONARY ${RESOURCES_DIR}/qml_stationary/*.qml) FILE(GLOB_RECURSE FILES_JS ${RESOURCES_DIR}/qml/*.js) - FILE(GLOB_RECURSE FILES_JS_STATIONARY ${RESOURCES_DIR}/qml_stationary/*.js) - SET(QMLLINT_CMD ${QMLLINT_BIN} ${FILES_QML} ${FILES_QML_STATIONARY} ${FILES_JS}) + SET(QMLLINT_CMD ${QMLLINT_BIN} ${FILES_QML} ${FILES_JS}) - ADD_CUSTOM_TARGET(qmllint COMMAND ${QMLLINT_CMD} SOURCES ${TEST_FILES_QML} ${TEST_FILES_QML_STATIONARY} ${FILES_QML} ${FILES_QML_STATIONARY} ${FILES_JS} ${FILES_JS_STATIONARY}) + ADD_CUSTOM_TARGET(qmllint COMMAND ${QMLLINT_CMD} SOURCES ${TEST_FILES_QML} ${FILES_QML} ${FILES_JS}) ENDIF() # doc8 (https://pypi.python.org/pypi/doc8) @@ -175,8 +172,13 @@ ENDFUNCTION() FIND_PROGRAM(CONVERT convert CMAKE_FIND_ROOT_PATH_BOTH) IF(CONVERT) - SET(CONVERT_CMD convert) - SET(BACKGROUND_COLOR "transparent") + IF(IOS) + SET(CONVERT_CMD convert -alpha off) + SET(BACKGROUND_COLOR "#5489c2") + ELSE() + SET(CONVERT_CMD convert) + SET(BACKGROUND_COLOR "transparent") + ENDIF() ADD_CUSTOM_TARGET(npaicons.win COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -define icon:auto-resize=256,96,64,48,40,32,24,20,16 npa.svg npa.ico @@ -184,29 +186,29 @@ IF(CONVERT) ADD_CUSTOM_TARGET(npaicons.android.preview COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa_preview.svg android/ldpi/npa_preview.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa_preview.svg android/mdpi/npa_preview.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa_preview.svg android/hdpi/npa_preview.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa_preview.svg android/xhdpi/npa_preview.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa_preview.svg android/xxhdpi/npa_preview.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa_preview.svg android/xxxhdpi/npa_preview.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 160 -resize 48x48 npa_preview.svg android/mdpi/npa_preview.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 240 -resize 72x72 npa_preview.svg android/hdpi/npa_preview.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 320 -resize 96x96 npa_preview.svg android/xhdpi/npa_preview.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 480 -resize 144x144 npa_preview.svg android/xxhdpi/npa_preview.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 640 -resize 192x192 npa_preview.svg android/xxxhdpi/npa_preview.png WORKING_DIRECTORY ${RESOURCES_DIR}/images) ADD_CUSTOM_TARGET(npaicons.android.beta COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa_beta.svg android/ldpi/npa_beta.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa_beta.svg android/mdpi/npa_beta.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa_beta.svg android/hdpi/npa_beta.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa_beta.svg android/xhdpi/npa_beta.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa_beta.svg android/xxhdpi/npa_beta.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa_beta.svg android/xxxhdpi/npa_beta.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 160 -resize 48x48 npa_beta.svg android/mdpi/npa_beta.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 240 -resize 72x72 npa_beta.svg android/hdpi/npa_beta.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 320 -resize 96x96 npa_beta.svg android/xhdpi/npa_beta.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 480 -resize 144x144 npa_beta.svg android/xxhdpi/npa_beta.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 640 -resize 192x192 npa_beta.svg android/xxxhdpi/npa_beta.png WORKING_DIRECTORY ${RESOURCES_DIR}/images) ADD_CUSTOM_TARGET(npaicons.android COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa.svg android/ldpi/npa.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa.svg android/mdpi/npa.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa.svg android/hdpi/npa.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa.svg android/xhdpi/npa.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa.svg android/xxhdpi/npa.png - COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa.svg android/xxxhdpi/npa.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 160 -resize 48x48 npa.svg android/mdpi/npa.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 240 -resize 72x72 npa.svg android/hdpi/npa.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 320 -resize 96x96 npa.svg android/xhdpi/npa.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 480 -resize 144x144 npa.svg android/xxhdpi/npa.png + COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -units PixelsPerInch -resample 640 -resize 192x192 npa.svg android/xxxhdpi/npa.png WORKING_DIRECTORY ${RESOURCES_DIR}/images) ADD_CUSTOM_TARGET(npaicons.ios.beta @@ -291,6 +293,9 @@ SET(PNGQUANT_CMD pngquant -f -o) WORKING_DIRECTORY ${RESOURCES_DIR}/images) ADD_CUSTOM_TARGET(pngquant.ios + COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20.png + COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@2x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@2x.png + COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@3x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@3x.png COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall.png COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@2x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@2x.png COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@3x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@3x.png @@ -302,6 +307,7 @@ SET(PNGQUANT_CMD pngquant -f -o) COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon76.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon76.png COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon76@2x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon76@2x.png COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon83.5@2x.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon83.5@2x.png + COMMAND ${PNGQUANT_CMD} iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon1024.png -- iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon1024.png COMMAND ${PNGQUANT_CMD} iOS/launchImages/Default-568h@2x.png -- iOS/launchImages/Default-568h@2x.png WORKING_DIRECTORY ${RESOURCES_DIR}/images) @@ -368,4 +374,55 @@ IF(JAVA_EXECUTABLE) ENDIF() ENDIF() + +FIND_PROGRAM(DOT dot CMAKE_FIND_ROOT_PATH_BOTH) +IF(DOT) + SET(architecture_file Architecture) + SET(ARCHI_PDF_DEPENDS) + + ADD_CUSTOM_TARGET(architecture.graphviz ${CMAKE_COMMAND} --graphviz=${architecture_file} . WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + LIST(APPEND ARCHI_PDF_DEPENDS architecture.graphviz) + + FIND_PROGRAM(SED sed CMAKE_FIND_ROOT_PATH_BOTH) + IF(SED) + # 1. Strip line of plugins as it is misleading + # 2. Strip "AusweisApp" prefix + ADD_CUSTOM_TARGET(architecture.sed + COMMAND ${SED} -i -E '/AusweisApp -> AusweisApp\(Ui|Card|Activation\).+/d' ${architecture_file} + COMMAND ${SED} -i'' -e 's/"AusweisApp"/"AusweisApp2"/' ${architecture_file} + COMMAND ${SED} -i'' -e 's/"AusweisApp2"/"REPLACE"/' ${architecture_file} + COMMAND ${SED} -i'' -e 's/AusweisApp//' ${architecture_file} + COMMAND ${SED} -i'' -e 's/"REPLACE"/"AusweisApp2"/' ${architecture_file} + COMMAND ${SED} -i'' -e 's/diamond/box/' ${architecture_file} + DEPENDS ${ARCHI_PDF_DEPENDS} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + + LIST(APPEND ARCHI_PDF_DEPENDS architecture.sed) + ENDIF() + + ADD_CUSTOM_TARGET(architecture + ${DOT} -O -Tpdf ${architecture_file} + DEPENDS ${ARCHI_PDF_DEPENDS} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) +ENDIF() + +FIND_PACKAGE(PythonInterp 2.7) +IF(PYTHONINTERP_FOUND) + ADD_CUSTOM_TARGET(checkproviderurls + COMMAND ${PYTHON_EXECUTABLE} "${PROJECT_SOURCE_DIR}/utils/providercheck/check-urls.py" "${PROJECT_SOURCE_DIR}/resources/updatable-files/supported-providers.json") +ENDIF() + +FIND_PROGRAM(SED sed CMAKE_FIND_ROOT_PATH_BOTH) +IF(SED) + FILE(GLOB FILES_TO_GENERATE ${RESOURCES_DIR}/images/tutorial/src/*.svg) + SET(TARGET_DIR ${RESOURCES_DIR}/images/tutorial/generated) + ADD_CUSTOM_TARGET(generate_composite_images.sed) + FOREACH(SRC ${FILES_TO_GENERATE}) + GET_FILENAME_COMPONENT(SRC_NAME ${SRC} NAME) + ADD_CUSTOM_COMMAND(TARGET generate_composite_images.sed PRE_BUILD + COMMAND ${SED} -E 's/xlink:href=\\"[\\.\\/]+/xlink:href=\\":\\//' ${SRC} > ${TARGET_DIR}/${SRC_NAME}) + ENDFOREACH(SRC) + +ENDIF() + INCLUDE(Sphinx) diff --git a/cmake/android.toolchain.cmake b/cmake/android.toolchain.cmake index d820900..4515882 100644 --- a/cmake/android.toolchain.cmake +++ b/cmake/android.toolchain.cmake @@ -1,5 +1,17 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.7.1) +FUNCTION(READ_REVISION _var _regex _file) + IF(EXISTS "${_file}") + FILE(READ "${_file}" content) + STRING(REGEX MATCH "${_regex}" _unused "${content}") + SET(${_var} ${CMAKE_MATCH_1} PARENT_SCOPE) + ENDIF() +ENDFUNCTION() + +IF(NOT CMAKE_ANDROID_NDK) + SET(CMAKE_ANDROID_NDK $ENV{ANDROID_NDK}) +ENDIF() + SET(ANDROID_SDK $ENV{ANDROID_HOME}) SET(ANDROID_BUILD_TOOLS_REVISION $ENV{ANDROID_BUILD_TOOLS_REVISION}) @@ -18,19 +30,30 @@ IF(NOT ANDROID_BUILD_TOOLS_REVISION) GET_FILENAME_COMPONENT(ANDROID_BUILD_TOOLS_REVISION "${build_tools}" NAME) ENDIF() +READ_REVISION(ANDROID_NDK_REVISION ".*Revision = ([0-9|\\.]+)" "${CMAKE_ANDROID_NDK}/source.properties") +READ_REVISION(ANDROID_SDK_REVISION ".*Revision=([0-9|\\.]+)" "${ANDROID_SDK}/tools/source.properties") + +IF(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION AND ANDROID_NDK_REVISION VERSION_GREATER_EQUAL "11") + SET(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang) +ENDIF() +SET(ANDROID_NDK_TOOLCHAIN_VERSION 4.9) + SET(CMAKE_SYSTEM_NAME Android) -SET(CMAKE_ANDROID_STL_TYPE gnustl_shared) +SET(CMAKE_SYSTEM_VERSION 21) + +IF(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "clang") + SET(CMAKE_ANDROID_STL_TYPE c++_shared) +ELSE() + SET(CMAKE_ANDROID_STL_TYPE gnustl_shared) +ENDIF() IF(NOT CMAKE_ANDROID_ARCH_ABI) SET(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) ENDIF() -IF(CMAKE_ANDROID_ARCH_ABI MATCHES "arm64-v8a") - SET(CMAKE_SYSTEM_VERSION 21) -ELSE() - SET(CMAKE_SYSTEM_VERSION 18) -ENDIF() -SET(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} CACHE string "android find search path root") +OPTION(ANDROID_BUILD_AAR "Build AAR file instead of APK" OFF) + +SET(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} CACHE string "android find search path root") SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/cmd.cmake b/cmake/cmd.cmake index 935cf71..0de660a 100644 --- a/cmake/cmd.cmake +++ b/cmake/cmd.cmake @@ -35,6 +35,19 @@ FUNCTION(CREATE_HASH) ENDFOREACH() ENDFUNCTION() +FUNCTION(CHECK_WIX_WARNING) + FILE(STRINGS "${FILE}" WIX_WARNINGS REGEX "warning") + LIST(LENGTH WIX_WARNINGS WARNING_COUNT) + IF(WARNING_COUNT GREATER 0) + FOREACH(m ${WIX_WARNINGS}) + MESSAGE(STATUS "${m}\n") + ENDFOREACH() + MESSAGE(FATAL_ERROR "Found ${WARNING_COUNT} new WIX warnings") + ELSE() + MESSAGE(STATUS "No WIX warnings found") + ENDIF() +ENDFUNCTION() + @@ -47,6 +60,8 @@ ENDIF() IF(CMD STREQUAL "HASH") CREATE_HASH() +ELSEIF(CMD STREQUAL "CHECK_WIX_WARNING") + CHECK_WIX_WARNING() ELSE() MESSAGE(FATAL_ERROR "Unknown CMD: ${CMD}") ENDIF() diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 1f1beee..7c650e8 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -2,6 +2,8 @@ IF(SPHINX_FOUND) SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/releasenotes" "notes" BUILDER singlehtml html latex) SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/sdk" "sdk" BUILDER changes html latex DEFAULT_LANG en) + + SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/installation" "inst" BUILDER changes html latex) ELSE() MESSAGE(STATUS "No documentation will be generated") ENDIF() diff --git a/docs/installation/README.de.rst b/docs/installation/README.de.rst new file mode 100644 index 0000000..b6bc769 --- /dev/null +++ b/docs/installation/README.de.rst @@ -0,0 +1,147 @@ +Deutsch +======= + +Windows +------- + +Der Installer der AusweisApp2 kann über die Kommandozeile gestartet werden, um +den Installationsprozess zu konfigurieren und systemweite Standardeinstellungen +vorzugeben. Neben den üblichen Parametern [1]_ enthält das folgende Kommando +alle unterstützten Parameter, die im Anschluss erläutert werden. + +.. code-block:: winbatch + + msiexec /i AusweisApp2-X.YY.Z.msi /quiet INSTALL_ROOT="C:\AusweisApp2" SYSTEMSETTINGS=false DESKTOPSHORTCUT=false AUTOSTART=false AUTOHIDE=false REMINDTOCLOSE=false ASSISTANT=false TRANSPORTPINREMINDER=false UPDATECHECK=false ONSCREENKEYBOARD=true HISTORY=false + +INSTALL_ROOT + Gibt das Installationsverzeichnis an. Ohne Angabe wird der Ordner + "C:\\Programme (x86)\\AusweisApp2 X.YY.Z" genutzt. + +SYSTEMSETTINGS + Betrifft die Erstellung von Firewall-Regeln der Windows Firewall. Ohne Angabe + des Parameters werden die Firewall-Regeln erstellt (true). Durch Angabe von + SYSTEMSETTINGS=false werden keine Firewall-Regeln erstellt. + +DESKTOPSHORTCUT + Durch Angabe von DESKTOPSHORTCUT=false kann die Erstellung einer + Desktop-Verknüpfung vermieden werden. Ohne Angabe des Parameters wird eine + Desktop-Verknüpfung für alle Benutzer erstellt (true). + +AUTOSTART + Durch Angabe von AUTOSTART=true wird ein Autostart-Eintrag für alle Benutzer + erstellt. Die Deaktivierung des Autostarts ist den Benutzern in der AusweisApp2 + dadurch nicht möglich. Ohne Angabe wird der Autostart-Eintrag nicht erstellt + (false). In diesem Fall ist es jedoch jedem Benutzer möglich, die Autostart- + Funktion innerhalb der AusweisApp2 für sich zu aktivieren. + +AUTOHIDE + Betrifft die automatische Minimierung nach Abschluss einer erfolgreichen + Authentisierung. Ohne Angabe ist diese aktiviert (true). Durch AUTOHIDE=false + wird diese deaktiviert. Der Benutzer kann diese Einstellung anpassen. + +REMINDTOCLOSE + Wenn der Benutzer die AusweisApp2 per Klick auf das X schließt, wird er darauf + hingewiesen, dass nur die Benutzeroberfläche geschlossen wird und die + AusweisApp2 weiterhin im Infobereich zur Verfügung steht. Zu diesem Zeitpunkt + ist es möglich, den Hinweis zukünftig zu unterdrücken. Durch REMINDTOCLOSE=false + kann dieser Hinweis von vornherein deaktiviert werden. Ohne Angabe ist er + aktiviert (true). + +ASSISTANT + Startet der Benutzer die AusweisApp2 zum ersten Mal, wird die Benutzeroberfläche + geöffnet und ein Einrichtungsassistent angezeigt. Bei jedem weiteren Start wird + die AusweisApp2 im Hintergrund gestartet und der Einrichtungsassistent erscheint + nicht. Durch ASSISTANT=false wird die AusweisApp2 auch beim ersten Start im + Hintergrund ohne Einrichtungsassistenten gestartet. Ohne Angabe ist der + Einrichtungsassistent aktiviert (true). + +TRANSPORTPINREMINDER + Zu Beginn einer Selbstauskunft oder Authentisierung wird der Benutzer einmalig + danach gefragt, ob er die Transport-PIN schon geändert hat. Durch + TRANSPORTPINREMINDER=false kann diese Abfrage deaktiviert werden. Ohne Angabe + ist die Abfrage aktiviert (true). + +UPDATECHECK + Wird die Benutzeroberfläche der AusweisApp2 geöffnet, wird eine Überprüfung auf + eine neue Version der AusweisApp2 gestartet, falls seit der letzten Überprüfung + mindestens 24 Stunden vergangen sind. Liegt eine neue Version vor, wird der + Benutzer darüber in einem Dialog informiert. Durch Setzen von UPDATECHECK auf + false oder true kann diese Überprüfung deaktiviert bzw. aktiviert werden. + Die Einstellung kann dann durch den Benutzer in der AusweisApp2 nicht geändert + werden. Ohne Angabe ist die Überprüfung aktiviert, der Benutzer kann die + Einstellung jedoch ändern. + +ONSCREENKEYBOARD + Für die Eingabe von PIN, CAN und PUK kann eine Bildschirmtastatur verwendet + werden. Durch Setzen von ONSCREENKEYBOARD auf false oder true kann diese + deaktiviert bzw. aktiviert werden. Der Benutzer kann diese Einstellung anpassen. + +HISTORY + Jede Selbstauskunft oder Authentisierung wird im Verlauf gespeichert. Dabei + werden jedoch keine persönlichen Daten gespeichert, sondern nur der Zeitpunkt, + der Diensteanbieter und die ausgelesenen Datenfelder (ohne Inhalt). Durch Setzen + von HISTORY auf false oder true kann der Verlauf deaktiviert bzw. aktiviert + werden. Der Benutzer kann diese Einstellung anpassen. + +Alternativ kann mit Orca [2]_ eine MST-Datei erzeugt werden, die die oben +genannten Parameter definiert. Die Parameter sind in den Tabellen "Directory" +und "Property" verfügbar. Übergeben lässt sich die MST-Datei mit dem folgenden +Kommando: + +.. code-block:: winbatch + + msiexec /i AusweisApp2-X.YY.Z.msi /quiet TRANSFORMS=file.mst + +macOS +----- + +Unter macOS ist keine Installation per Kommandozeile vorgesehen. Jedoch können +einige der oben genannten Einstellung durch eine plist-Datei im Verzeichnis +/Library/Preferences systemweit vorgegeben werden. Diese plist-Datei muss dabei +manuell durch den Administrator des Systems hinterlegt werden und wird von allen +(zukünftigen) Installationen der AusweisApp2 verwendet. Alle nicht genannten +Einstellungen werden auf macOS nicht unterstützt. Der Name der Datei muss +"com.governikus.AusweisApp2.plist" lauten. Der Inhalt wird im folgenden +dargestellt: + +.. code-block:: xml + + + + + + autoCloseWindow + + remindToClose + + showSetupAssistant + + transportPinReminder + + common.autoUpdateCheck + + common.keylessPassword + + history.enable + + + + +Für die einzelnen Werte gelten die gleichen Beschreibungen wie für die +Windows-Version wobei die Bennennung der Attribute der folgenden Tabelle zu +entnehmen ist. + +====================== ==================== +macOS Windows +====================== ==================== +autoCloseWindow AUTOHIDE +remindToClose REMINDTOCLOSE +showSetupAssistant ASSISTANT +transportPinReminder TRANSPORTPINREMINDER +common.autoUpdateCheck UPDATECHECK +common.keylessPassword ONSCREENKEYBOARD +history.enable HISTORY +====================== ==================== + +.. [1] https://docs.microsoft.com/de-de/windows/desktop/msi/standard-installer-command-line-options +.. [2] https://docs.microsoft.com/de-de/windows/desktop/Msi/orca-exe diff --git a/docs/installation/README.en.rst b/docs/installation/README.en.rst new file mode 100644 index 0000000..290bb75 --- /dev/null +++ b/docs/installation/README.en.rst @@ -0,0 +1,136 @@ +English +======= + +Windows +------- + +Start the installer of AusweisApp2 using the command line to configure the +installation process and preset system-wide default settings. In addition to the +usual arguments [1]_, the following command contains all supported arguments, +which are explained below. + +.. code-block:: winbatch + + msiexec /i AusweisApp2-X.YY.Z.msi /quiet INSTALL_ROOT="C:\AusweisApp2" SYSTEMSETTINGS=false DESKTOPSHORTCUT=false AUTOSTART=false AUTOHIDE=false REMINDTOCLOSE=false ASSISTANT=false TRANSPORTPINREMINDER=false UPDATECHECK=false ONSCREENKEYBOARD=true HISTORY=false + +INSTALL_ROOT + States the installation directory. If not specified, the folder + "C:\\Program Files (x86)\\AusweisApp2 X.YY.Z" is used. + +SYSTEMSETTINGS + Concerns the settings of firewall rules of the Windows Firewall. When not + specifying the argument, firewall rules are created (true). By indicating + SYSTEMSETTINGS=false, no firewall rules are created. + +DESKTOPSHORTCUT + By specifying DESKTOPSHORTCUT=false, no desktop shortcut is created. Without + specifying the argument, the desktop shortcut is created for all users (true). + +AUTOSTART + Setting AUTOSTART=true creates autostart entry for all users. Users are unable + to deactivate the autostart function in the AusweisApp2. Not specified, no + autostart entry is created (false). In that case, users are able to activate the + autostart function in the AusweisApp2. + +AUTOHIDE + Concerns the automatic minimization after a successful authentication. Not + specified, it is activated (true). Setting AUTOHIDE=false, it is deactivated. + Users can adjust this setting to their preferences. + +REMINDTOCLOSE + Closing the AusweisApp2 by clicking on the X, the user is notified that only the + user interface is closed and that the AusweisApp2 is still available in the info + tray. At this point, it is possible to prevent future notifications. Setting + REMINDTOCLOSE=false deactivates this notification from the outset. Not + specified, it is activated (true). + +ASSISTANT + Starting the AusweisApp2 for the first time, the user interface is displayed and + the installation wizard is shown. With each subsequent start, the AusweisApp2 + is started in the background, without the installation wizard being shown. By + indicating ASSISTANT=false, the AusweisApp2 is started in the background without + the installation wizard from the outset. Not specified, the installation + wizard is activated (true). + +TRANSPORTPINREMINDER + Prior to the first authentication, the user is asked once whether they have + changed their transport PIN. Setting TRANSPORTPINREMINDER=false deactivates this + reminder. Not specified, the reminder is activated (true). + +UPDATECHECK + Upon opening the user interface of the AusweisApp2, an update check is started, + provided that at least 24 hours have elapsed since the last update check. If a + newer version is available, the user is notified accordingly. Setting + UPDATECHECK to false or true deactivates or activates the update check + respectively. Users are unable to change this setting in the AusweisApp2. Not + specified, the update check is activated, but users can adjust the settings. + +ONSCREENKEYBOARD + An on-screen keyboard is available to enter PIN, CAN or PUK. It is deactivated or + activated by setting ONSCREENKEYBOARD to false or true. Users are able to adjust + the settings. + +HISTORY + Each authentication is saved in the history. No personal data is saved, only the + time of authentication, the service provider and the selected fields (without + content). Indicating HISTORY as false or true, the history function is + deactivated or activated. Users are able to adjust the settings. + +Alternatively, Orca [2]_ can be used to create an MST file that defines the +above arguments. The arguments are available in the "Directory" and "Property" +tables. The MST file can be transferred with the following command: + +.. code-block:: winbatch + + msiexec /i AusweisApp2-X.YY.Z.msi /quiet TRANSFORMS=file.mst + +macOS +----- + +MacOS does not provide a command line installation. However, some of the above +settings can be specified system-wide by a plist file in the +/Library/Preferences directory. This plist file must be manually stored by the +administrator of the system and will be used by all (future) installations of +AusweisApp2. All not mentioned settings are not supported on macOS. The name of +the file must be "com.governikus.AusweisApp2.plist". The content is shown below: + +.. code-block:: xml + + + + + + autoCloseWindow + + remindToClose + + showSetupAssistant + + transportPinReminder + + common.autoUpdateCheck + + common.keylessPassword + + history.enable + + + + +The description for each value is applicable for both Windows and macOS, +although the naming of the attributes differs, as shown in the following table: + +====================== ==================== +macOS Windows +====================== ==================== +autoCloseWindow AUTOHIDE +remindToClose REMINDTOCLOSE +showSetupAssistant ASSISTANT +transportPinReminder TRANSPORTPINREMINDER +common.autoUpdateCheck UPDATECHECK +common.keylessPassword ONSCREENKEYBOARD +history.enable HISTORY +====================== ==================== + +.. [1] https://docs.microsoft.com/en-us/windows/desktop/msi/standard-installer-command-line-options +.. [2] https://docs.microsoft.com/en-us/windows/desktop/Msi/orca-exe diff --git a/docs/installation/conf.py.in b/docs/installation/conf.py.in new file mode 100644 index 0000000..271c0e6 --- /dev/null +++ b/docs/installation/conf.py.in @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import sys +import os +import shlex + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +needs_sphinx = '1.4' + +# If true, figures, tables and code-blocks are automatically numbered +# if they has caption. For now, it works only with the HTML builder. +# Default is False. +numfig = True + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [] + +locale_dirs = ['@SPHINX_DOCS_DIR@/locales/'] + +gettext_additional_targets = ['image'] +gettext_location = False +gettext_compact = True + +# Add any paths that contain templates here, relative to this directory. +#templates_path = ['@SPHINX_DOCS_DIR@/_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'AusweisApp2 Installation' +copyright = '2018, Governikus GmbH & Co. KG' +author = 'Governikus GmbH & Co. KG' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '@PROJECT_VERSION@' +# The full version, including alpha/beta/rc tags. +release = '@VERSION_DVCS@' + +today = ' ' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'en' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +#exclude_patterns = [''] + + + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = '@SPHINX_DOCS_DIR@/../../resources/images/npa.ico' + +#html_theme_path = ['@SPHINX_DOCS_DIR@/_themes'] + +#html_theme = 'appcast' +html_theme = 'sphinx_rtd_theme' + +# If false, no module index is generated. +html_domain_indices = True + +# If false, no index is generated. +html_use_index = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +html_show_sphinx = False + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +html_show_copyright = True + +html_scaled_image_link = False + +# Output file base name for HTML help builder. +htmlhelp_basename = 'AusweisApp2Installation' + +html_context = { + 'display_github': False, + 'display_bitbucket': False, + 'show_source': False, + 'html_show_sourcelink': False, +} + +html_add_permalinks = "" + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +'papersize': 'a4paper', + +# The font size ('10pt', '11pt' or '12pt'). +'pointsize': '11pt', + +# Additional stuff for the LaTeX preamble. +'preamble': ''' +\hypersetup{pdfauthor={Governikus GmbH \& Co. KG}, + pdftitle={AusweisApp2}, + pdfsubject={Installation}, + pdfkeywords={installation}, + pdfproducer={LaTeX}, + pdfcreator={Sphinx} +} +''', + +# Override tableofcontents +'tableofcontents': ''' +\\tableofcontents +\\newpage +\\pagestyle{plain} +\\pagenumbering{arabic} +''', + +# Latex figure (float) alignment +'figure_align': 'H', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'AusweisApp2-@VERSION_DVCS@-NetInstallation.tex', 'AusweisApp2 Installation', + 'Governikus GmbH \& Co. KG', 'howto'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +latex_logo = '@SPHINX_DOCS_DIR@/../../resources/images/android/xhdpi/npa.png' + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +latex_show_pagerefs = True + +# If true, show URL addresses after external links. +latex_show_urls = 'footnote' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True diff --git a/docs/installation/index.rst b/docs/installation/index.rst new file mode 100644 index 0000000..15bd5d2 --- /dev/null +++ b/docs/installation/index.rst @@ -0,0 +1,13 @@ +Table of contents +----------------- + +.. raw:: latex + + \clearpage + +.. toctree:: + :maxdepth: 2 + :caption: Installation + + README.de + README.en diff --git a/docs/releasenotes/1.16.0.rst b/docs/releasenotes/1.16.0.rst new file mode 100644 index 0000000..7c0b7aa --- /dev/null +++ b/docs/releasenotes/1.16.0.rst @@ -0,0 +1,70 @@ +AusweisApp2 1.16.0 +^^^^^^^^^^^^^^^^^^ + +**Releasedatum:** 20. Dezember 2018 + + + +Anwender +"""""""" + - Kleinere Fehlerbehebungen. + + - Hinzufügen eines Tutorials um Hilfestellung bei der + Verwendung unter Android zu geben. + + - Unterstützung von Android 4.3 und 4.4 wurde eingestellt. + + - Unterstützung von OS X 10.10 wurde eingestellt. + + - Unterstützung von macOS 10.14. + + - Es ist nun möglich nach einer erfolgreichen Authentisierung + Daten eines verwendeten Android Smartphones anonym zu + übermitteln. + + - Erweiterung der Diagnosefunktion. + + - Bewertungsnachfrage unter Android hinzugefügt. + + - Möglichkeit zur Log-Anzeige unter Android hinzugefügt. + + - Unter Android wird nun eindeutiger zwischen 5 und 6-stelliger + PIN unterschieden. + + - Das Entfernen des Ausweisdokumentes während der Eingabe von + PIN/CAN/PUK löst nicht mehr den Abbruch der Authentisierung + oder der PIN-Änderung aus. + + +Entwickler +"""""""""" + - Unterstützung von firmenweiten Installationen des MSI-Paketes + (separate Dokumentation). + + - Unterstützung eines SDKs mittels WebSockets unter Windows und + macOS (separate Dokumentation). + + - Konkurrierende Zugriffe von verschiedenen Anwendungen auf + Kartenlesegeräte, die über PC/SC angeschlossen sind, sind + nun möglich. + + - Aktualisierung von OpenSSL auf die Version 1.1.1. + + - Aktualisierung von Qt auf die Version 5.11.2. + + - Unterstützung von TLS v1.1 wurde eingestellt. + + - Unterstützung folgender TLS-Cipher wurde eingestellt: + + - DHE-DSS-AES256-GCM-SHA384 + - DHE-DSS-AES256-SHA256 + - DHE-DSS-AES128-GCM-SHA256 + - DHE-DSS-AES128-SHA256 + - DHE-DSS-AES256-SHA + - DHE-DSS-AES128-SHA + - ECDHE-ECDSA-AES256-SHA + - ECDHE-RSA-AES256-SHA + - DHE-RSA-AES256-SHA + - ECDHE-ECDSA-AES128-SHA + - ECDHE-RSA-AES128-SHA + - DHE-RSA-AES128-SHA diff --git a/docs/releasenotes/announce.rst b/docs/releasenotes/announce.rst index 72ef486..9af78d0 100644 --- a/docs/releasenotes/announce.rst +++ b/docs/releasenotes/announce.rst @@ -1,10 +1,18 @@ Abkündigungen ============= +Mit der Version 1.18.0 der AusweisApp2 wird die Unterstützung +folgender Systeme eingestellt. + + - x86-Architektur unter Android + + Mit der Version 1.16.0 der AusweisApp2 wird die Unterstützung folgender Systeme eingestellt. - OS X 10.10 + - Android 4.3 + - Android 4.4 Mit der Version 1.16.0 der AusweisApp2 wird die Unterstützung @@ -13,7 +21,7 @@ folgender TLS-Cipher eingestellt. - DHE-DSS-AES256-GCM-SHA384 - DHE-DSS-AES256-SHA256 - DHE-DSS-AES128-GCM-SHA256 - - DHE-DSS-AES128-SHA256" + - DHE-DSS-AES128-SHA256 - DHE-DSS-AES256-SHA - DHE-DSS-AES128-SHA - ECDHE-ECDSA-AES256-SHA diff --git a/docs/releasenotes/appcast.rst b/docs/releasenotes/appcast.rst index ac580b2..64130f4 100644 --- a/docs/releasenotes/appcast.rst +++ b/docs/releasenotes/appcast.rst @@ -4,9 +4,6 @@ Release Notes .. toctree:: :maxdepth: 1 - 1.14.3 - 1.14.2 - 1.14.1 - 1.14.0 + 1.16.0 announce issues diff --git a/docs/releasenotes/issues.rst b/docs/releasenotes/issues.rst index d477d87..8a3140e 100644 --- a/docs/releasenotes/issues.rst +++ b/docs/releasenotes/issues.rst @@ -24,3 +24,19 @@ Die nachfolgende Liste bezieht sich auf die aktuelle Version der AusweisApp2. - Unter Umständen kommt es zu Stabilitätsproblemen der NFC-Schnittstelle auf Android. + + - Längere Texte können unter Android u.U. bei kleinen Bildschirmgrößen + abgeschnitten sein. + + - Unter macOS wird der Hinweis bei falscher PIN-Bestätigung während der + PIN-Änderung nur sehr kurz angezeigt. + + - Bei der Nutzung eines entfernten Kartenlesegeräts mit aktiviertem + Tastaturmodus kann bei einer Authentisierung nicht in die PIN-Änderung + gewechselt werden, wenn nur eine 5-stellige PIN vorhanden ist. + + - Bei der Nutzung eines entfernten Kartenlesegeräts mit aktiviertem + Tastaturmodus merkt sich das entfernte Kartenlesegerät fälschlicherweise + die zuletzt ausgewählte Länge der PIN (5/6 Stellen). Ein Neustart des + Fernzugriffs auf dem entfernten Kartenlesegerät setzt die Länge auf + 6 Stellen zurück. diff --git a/docs/releasenotes/singlehtml.conf.py.in b/docs/releasenotes/singlehtml.conf.py.in index cda68ef..5f22de9 100644 --- a/docs/releasenotes/singlehtml.conf.py.in +++ b/docs/releasenotes/singlehtml.conf.py.in @@ -42,7 +42,7 @@ master_doc = 'appcast' # General information about the project. project = 'AusweisApp2' -copyright = '2016-2017, Governikus GmbH & Co. KG' +copyright = '2016-2018, Governikus GmbH & Co. KG' author = 'Governikus GmbH & Co. KG' # The version info for the project you're documenting, acts as replacement for diff --git a/docs/releasenotes/support.rst b/docs/releasenotes/support.rst index aaf28d4..0f920d6 100644 --- a/docs/releasenotes/support.rst +++ b/docs/releasenotes/support.rst @@ -8,27 +8,27 @@ der AusweisApp2 unterstützt. Betriebssysteme """"""""""""""" - - OS X 10.10 - - OS X 10.11 - macOS 10.12 - macOS 10.13 + - macOS 10.14 + - Windows 7 SP1 (32bit / 64bit) - Windows 8.1 (64bit) - Windows 10 (64bit) - - Android 4.3 und höher (x86, armeabi-v7a, arm64-v8a) + - Android 5.0 und höher (x86, armeabi-v7a) Karten """""" - - Neuer Personalausweis + - Personalausweis - Elektronischer Aufenthaltstitel @@ -48,13 +48,15 @@ und sollte daher mit allen marktüblichen Browsern verwendet werden können. Im Rahmen der Qualitätssicherung werden die folgenden Browserversionen getestet. - - Firefox 61 + - Firefox 64 - - Chrome 67 + - Chrome 71 - Internet Explorer 11 - - Safari 11.1.1 + - Safari 12 + + - Edge 44 @@ -112,11 +114,11 @@ Im mobilen Umfeld ist die Funktionalität jedoch abhängig von der vom Diensteanbieter umgesetzten Aktivierung. Daher empfehlen wir einen der folgenden Browser zu verwenden. - - Firefox Klar 5.2 + - Firefox Klar 8 - - Chrome 67 + - Chrome 71 - - Android System WebView 67 + - Android System WebView 70 diff --git a/docs/releasenotes/versions.rst b/docs/releasenotes/versions.rst index ee2da8e..62d6c75 100644 --- a/docs/releasenotes/versions.rst +++ b/docs/releasenotes/versions.rst @@ -1,6 +1,14 @@ Versionen ========= +Versionszweig 1.16 +------------------ +.. toctree:: + :maxdepth: 1 + + 1.16.0 + + Versionszweig 1.14 ------------------ .. toctree:: diff --git a/docs/sdk/android.rst b/docs/sdk/android.rst index c93f02f..7592c5d 100644 --- a/docs/sdk/android.rst +++ b/docs/sdk/android.rst @@ -5,15 +5,70 @@ The AusweisApp2 core is encapsulated into an **Android service** which is running in the background without a user interface. This service is interfaced via an Android specific interprocess communication (IPC) mechanism. The basics of this mechanism - the **Android Interface Definition Language** (AIDL) - -are introduced in the following section. The following section deals with the -cryptographic verification of the SDKs authenticity. This step is necessary to -ensure that the SDK has not been modified in a malicious way. Subsequent -sections deal with the SDK interface itself and explain which steps are -necessary in order to talk to the AusweisApp2 SDK. +are introduced in the following section. Subsequent sections deal with the +SDK interface itself and explain which steps are necessary in order to talk +to the AusweisApp2 SDK. + +The AusweisApp2 is available as an integrated and as an external variant. +The integrated version is provided as an AAR package that can automatically +be fetched by Android's default build system **gradle**. The external variant +is available as an APK in Google's PlayStore. It is required that the user +has manually installed the AusweisApp2 like any other app to connect to the +external variant. + +.. important:: + The integrated variant is available in jcenter for free. + If you need enterprise support feel free to contact us. + + + +Integrated +---------- +The integrated SDK is distributed as an AAR package that contains +native **arm64-v8a** libraries only. +The AAR package is available in the default repository of Android. +The following listing shows the required **jcenter** in **build.gradle**. + +.. code-block:: groovy + + buildscript { + repositories { + jcenter() + } + } + + +The integrated AusweisApp2 will be fetched automatically as a dependency by +your **app/build.gradle** file. +It is recommended to always use the latest version by **1.+** of AusweisApp2. +But you are free to add a concrete version like **1.16.0**. + +.. code-block:: groovy + + dependencies { + implementation 'com.governikus:ausweisapp:1.16.+' + } + + + +.. seealso:: + The AAR package provides an **AndroidManifest.xml** to register required + permissions and the background service. If your own AndroidManifest has + conflicts with our provided file you can add some attributes to resolve + those conflicts. + + https://developer.android.com/studio/build/manifest-merge.html + + + +External +-------- +The APK is available in Google's PlayStore and needs to be installed by +the user. The external SDK is distributed as 32-bit and 64-bit. Security --------- +^^^^^^^^ The following listing provides information about the solution to provide a secure connection to AusweisApp2. @@ -39,82 +94,15 @@ secure connection to AusweisApp2. -.. _android_import_aidl: - -Import the AIDL files ---------------------- -Android provides an interprocess communication (IPC) mechanism which is based on -messages consisting of primitive types. -In order to abstract from this very basic mechanism, there is the Android -Interface Definition Language (AIDL). -It allows the definition of Java like interfaces. -The Android SDK generates the necessary interface implementations from supplied -AIDL files in order to perform IPC, as if this function had been called directly -in the current process. - -In order to interact with the AusweisApp2 SDK there are two AIDL interfaces. -The first one is given to the client application by the SDK and allows the -client to establish a session with the SDK, -to send JSON commands to the SDK and to pass discovered NFC tags to the SDK. - -The second AIDL interface is given to the SDK by the client application. It -enables the client to receive the intial session parameters as well as -JSON messages from the SDK. Furthermore it has a function which is called -when an existing connection with the SDK is dropped by the SDK. Both interfaces -are listed below and you need to import them into your build environment. - -.. important:: - It is required that you place the AIDL files under subdirectory - "aidl/com.governikus.ausweisapp2". Also the interface methods - names must be exactly the same. - -.. seealso:: - - https://developer.android.com/guide/components/aidl.html - - - -Interface -^^^^^^^^^ - -.. code-block:: java - - package com.governikus.ausweisapp2; - - import com.governikus.ausweisapp2.IAusweisApp2SdkCallback; - import android.nfc.Tag; - - interface IAusweisApp2Sdk - { - boolean connectSdk(IAusweisApp2SdkCallback pCallback); - boolean send(String pSessionId, String pMessageFromClient); - boolean updateNfcTag(String pSessionId, in Tag pTag); - } - - - -Callback -^^^^^^^^ - -.. code-block:: java - - package com.governikus.ausweisapp2; - - interface IAusweisApp2SdkCallback - { - void sessionIdGenerated(String pSessionId, boolean pIsSecureSessionId); - void receive(String pJson); - void sdkDisconnected(); - } - - - - Verify the authenticity of AusweisApp2 --------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The following section deals with the cryptographic verification of the SDK's +authenticity. This step is necessary to ensure that the SDK has not been +modified in a malicious way. + Fingerprint -^^^^^^^^^^^ +""""""""""" In order to verify that the AusweisApp2 SDK is authentic and has not been modified in a malicious way, it is required to verify its authenticity before establishing a connection with it. @@ -133,7 +121,7 @@ fingerprint of the authentic SDK certificate is the following: Example -^^^^^^^ +""""""" The following example code demonstrates how the certificate hash value of a signed application on Android can be verified. @@ -167,19 +155,101 @@ hash value of a signed application on Android can be verified. } +.. _android_import_aidl: + +Import the AIDL files +^^^^^^^^^^^^^^^^^^^^^ +Android provides an interprocess communication (IPC) mechanism which is based on +messages consisting of primitive types. +In order to abstract from this very basic mechanism, there is the Android +Interface Definition Language (AIDL). +It allows the definition of Java like interfaces. +The Android SDK generates the necessary interface implementations from supplied +AIDL files in order to perform IPC, as if this function had been called directly +in the current process. + +In order to interact with the AusweisApp2 SDK there are two AIDL interfaces. +The first one is given to the client application by the SDK and allows the +client to establish a session with the SDK, +to send JSON commands to the SDK and to pass discovered NFC tags to the SDK. + +The second AIDL interface is given to the SDK by the client application. It +enables the client to receive the intial session parameters as well as +JSON messages from the SDK. Furthermore it has a function which is called +when an existing connection with the SDK is dropped by the SDK. Both interfaces +are listed below and you need to import them into your build environment. + +.. important:: + It is required that you place the AIDL files under subdirectory + "aidl/com.governikus.ausweisapp2". Also the interface methods + names must be exactly the same. + +.. seealso:: + + https://developer.android.com/guide/components/aidl.html + +.. note:: + If you implement the integrated variant beside the external variant you do + **not** need to manually add AIDL files as the AAR package already provides + those interfaces. + + +Interface +""""""""" + +.. code-block:: java + + package com.governikus.ausweisapp2; + + import com.governikus.ausweisapp2.IAusweisApp2SdkCallback; + import android.nfc.Tag; + + interface IAusweisApp2Sdk + { + boolean connectSdk(IAusweisApp2SdkCallback pCallback); + boolean send(String pSessionId, String pMessageFromClient); + boolean updateNfcTag(String pSessionId, in Tag pTag); + } + + + +Callback +"""""""" + +.. code-block:: java + + package com.governikus.ausweisapp2; + + interface IAusweisApp2SdkCallback + { + void sessionIdGenerated(String pSessionId, boolean pIsSecureSessionId); + void receive(String pJson); + void sdkDisconnected(); + } + + + + +Background service +------------------ +The integrated and external variants use the same method to establish +a connection to the AusweisApp2 SDK. The AusweisApp2 SDK is a background +service in the external AusweisApp2 or an embedded background service +in your own application. .. _android_binding_service: Binding to the service ----------------------- +^^^^^^^^^^^^^^^^^^^^^^ In order to start the AusweisApp2 SDK it is necessary to bind to the Android service supplied by the SDK. This binding fulfils two purposes: - First it starts the SDK. - - Second it enables the client to establish an IPC connection as mentioned above. + - Second it enables the client to establish an IPC connection as + mentioned above. Due to the nature of an Android service, there can be only one instance of @@ -194,12 +264,11 @@ section, section :ref:`android_create_session`. Create connection -^^^^^^^^^^^^^^^^^ +""""""""""""""""" First of all, in order to bind to the service, one needs to instantiate an Android ServiceConnection. Subsequently, the object is passed to the Android API and the contained -methods are invoked -by Android on service connection and disconnection. +methods are invoked by Android on service connection and disconnection. .. code-block:: java @@ -225,15 +294,20 @@ by Android on service connection and disconnection. +.. _android_raw_connection: + Bind service to raw connection -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""" In order to perform the actual binding a directed Intent, which identifies the AusweisApp2 SDK, is created. -This Intent is send to -the Android API along with the ServiceConnection created above. -This API call either starts up the SDK if it is the first client, -or connects to the running SDK instance -if there is already another client bound. +This Intent is sent to the Android API along with the ServiceConnection +created above. This API call either starts up the SDK if it is the +first client, or connects to the running SDK instance if there is already +another client bound. + +If you use the external variant of AusweisApp2 you need to pass the package +name of Governikus. Otherwise you need to pass your own package name +as the integrated variant is a background service of your application. .. code-block:: java @@ -244,9 +318,15 @@ if there is already another client bound. // [...] + String pkg = "com.governikus.ausweisapp2"; + + boolean useIntegrated = true; // use external or integrated + if (useIntegrated) + pkg = getApplicationContext().getPackageName(); + String name = "com.governikus.ausweisapp2.START_SERVICE"; Intent serviceIntent = new Intent(name); - serviceIntent.setPackage("com.governikus.ausweisapp2"); + serviceIntent.setPackage(pkg); bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE); .. seealso:: @@ -258,8 +338,8 @@ if there is already another client bound. Redirect to Play Store -^^^^^^^^^^^^^^^^^^^^^^ -It is necessary that AusweisApp2 is installed in order to use the SDK. +"""""""""""""""""""""" +It is necessary that AusweisApp2 is installed in order to use the external SDK. It is recommended to check and display a message in case the user needs to install AusweisApp2 first. Also, the user should be redirected to the Play Store entry to find the app. @@ -286,13 +366,15 @@ the Play Store entry to find the app. } } +.. note:: + This is not necessary if you use the integrated variant. .. _android_init_aidl: Initializing the AIDL connection -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""" Once the Android service of the AusweisApp2 SDK is successfully started and bound to by the client, the Android system calls the onServiceConnected method of the ServiceConnection @@ -348,7 +430,7 @@ The example below stores this instance in the member variable mSdk. .. _android_create_session: Create session to AusweisApp2 ------------------------------ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Once your client is bound to the AusweisApp2 SDK service and you have initialized the AIDL IPC mechanism, you are ready to use the actual SDK API. @@ -437,7 +519,7 @@ and establishing a session. Send command -^^^^^^^^^^^^ +"""""""""""" In order to send a JSON command to the AusweisApp2 SDK, you need to invoke the **send** function of your instance of **IAusweisApp2Sdk**. For this command to be processed by the SDK you need to supply the session ID which you have @@ -464,7 +546,7 @@ previously received. The listing below shows an example. Receive message -^^^^^^^^^^^^^^^ +""""""""""""""" Messages from the AusweisApp2 SDK are passed to you via the same instance of **IAusweisApp2SdkCallback** in which you have received the session ID. The **receive** method is called each time the SDK sends a message. @@ -477,7 +559,7 @@ The **receive** method is called each time the SDK sends a message. .. _android_disconnect_sdk: Disconnect from SDK -------------------- +^^^^^^^^^^^^^^^^^^^ In order to disconnect from the AusweisApp2 SDK you need to invalidate your instance of **IBinder**. There are two possibilities to do this. The first one is to unbind from the SDK Android service to undo your binding, like @@ -500,7 +582,7 @@ shown in the code listing below. The second one is to return false in the .. _android_nfc_tags: Passing NFC tags to the SDK ---------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^ NFC tags can only be detected by applications which have a foreground window on the Android platform. A common workaround for this problem is to equip background services with a transparent window which is shown @@ -521,7 +603,7 @@ Android displaying an App Chooser. Permissions in AndroidManifest.xml -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""""" The client applications needs to register the NFC permission as shown in the listing below in order to access the NFC reader hardware. @@ -534,11 +616,14 @@ listing below in order to access the NFC reader hardware. https://developer.android.com/guide/topics/security/permissions.html +.. note:: + The integrated variant already provides an **AndroidManifest.xml** with + prepared permissions. Intent-Filter in AndroidManifest.xml -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""""""" In order to be informed about attached NFC tags by Android, the client application is required to register an intent filter. The appropriate filter is shown in the listing below. @@ -556,7 +641,7 @@ filter is shown in the listing below. NFC Technology Filter -^^^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""""" Since there are many different kinds of NFC tags, Android requires the application to register a technology filter for the kind of tags the application wants to receive. The proper filter for the German eID card is shown @@ -573,7 +658,7 @@ in the listing below. Implementation -^^^^^^^^^^^^^^ +"""""""""""""" As it is common on the Android platform, information is send to applications encapsulated in instances of the **Intent** class. In order to process newly discovered NFC tags, Intents which are given to the application need to be @@ -614,7 +699,7 @@ The listing below shows an example for the described process. Dispatching NFC tags in foreground ----------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ As already mentioned under :ref:`android_nfc_tags`, an App Chooser is displayed for discovered NFC tags by Android if multiple applications which are able to dispatch NFC tags are installed. An application can suppress this App Chooser diff --git a/docs/sdk/commands.rst b/docs/sdk/commands.rst index 7c719fa..c6b9592 100644 --- a/docs/sdk/commands.rst +++ b/docs/sdk/commands.rst @@ -294,9 +294,14 @@ If the last attempt to enter the PIN failed, AusweisApp2 will send the message :ref:`enter_puk` as the retryCounter is decreased to **0**. +.. versionchanged:: 1.16.0 + The parameter "value" must be omitted if the used :ref:`reader` has a + keypad. + - **value**: The personal identification number (PIN) of the card. - This must be 6 digits. + This must be 6 digits if the :ref:`reader` has no keypad, otherwise + this parameter must be omitted. .. code-block:: json @@ -325,9 +330,14 @@ to send this command to unblock the last retry of :ref:`set_pin`. The AusweisApp2 will send an :ref:`enter_can` message on error. Otherwise the workflow will continue with :ref:`enter_pin`. +.. versionchanged:: 1.16.0 + The parameter "value" must be omitted if the used :ref:`reader` has a + keypad. + - **value**: The card access number (CAN) of the card. - This must be 6 digits. + This must be 6 digits if the :ref:`reader` has no keypad, otherwise + this parameter must be omitted. .. code-block:: json @@ -358,8 +368,14 @@ or if the PUK is operative. Otherwise the workflow will continue with :ref:`enter_pin`. For detailed information see message :ref:`enter_puk`. +.. versionchanged:: 1.16.0 + The parameter "value" must be omitted if the used :ref:`reader` has a + keypad. + + - **value**: The personal unblocking key (PUK) of the card. - This must be 10 digits. + This must be 10 digits if the :ref:`reader` has no keypad, otherwise + this parameter must be omitted. .. code-block:: json diff --git a/docs/sdk/desktop.rst b/docs/sdk/desktop.rst new file mode 100644 index 0000000..77d2fe1 --- /dev/null +++ b/docs/sdk/desktop.rst @@ -0,0 +1,104 @@ +Desktop +======= +This chapter deals with the desktop specific properties of the AusweisApp2 SDK. +The AusweisApp2 core is reachable over a **WebSocket** which is running by +default since AusweisApp2 1.16.0. Subsequent sections deal with the SDK +interface itself and explain which steps are necessary in order to talk to +the AusweisApp2 SDK. + + + +WebSocket +--------- +The AusweisApp2 uses the same default port as defined in TR-03124-1. +Your application can connect to ``ws://localhost:24727/eID-Kernel`` to +establish a bidirectional connection. + +You can check the version of AusweisApp2 by the ``Server`` header of the HTTP +response or by an additional query to get the :ref:`status`. + +If the WebSocket handshake was succesful your application can send :doc:`commands` +and receive :doc:`messages`. +The AusweisApp2 will send an HTTP error 503 "Service Unavailable" if the WebSocket +is disabled. + +.. seealso:: + + https://tools.ietf.org/html/rfc6455 + + + +User installed +^^^^^^^^^^^^^^ +Your application can connect to a user installed AusweisApp2. If the +user already has an active workflow your request will be refused by +an HTTP error 409 "Conflict". Also it is not possible to connect +multiple times to the WebSocket as only one connection is allowed and +will be refused by an HTTP error 429 "Too Many Requests". Once an +application is connected to the WebSocket the graphical user interface +of the AusweisApp2 will be blocked and shows a hint that another +application uses the AusweisApp2. + +.. important:: + + Please provide a ``User-Agent`` in your HTTP upgrade request! The AusweisApp2 + will show the content to the user as a hint which application uses the AusweisApp2. + + + +Integrated +^^^^^^^^^^ +You can deliver separate AusweisApp2 binaries inside your own application or +start an already installed AusweisApp2. +If your application spawns a separate process you should provide the cmdline +parameter ``--port 0`` to avoid conflicts with a user started AusweisApp2 and +other processes that uses a specified port. + +The AusweisApp2 will create a text file in the system temporary directory to provide +the selected port. The port filename contains the PID of the running process to allow +multiple instances at the same time. + +Example: **$TMPDIR/AusweisApp2.12345.port** + +Your application can avoid the graphical interface of AusweisApp2 by providing the +cmdline parameter ``--ui websocket``. + + + +.. _status: + +Status +------ +TR-03124-1 defined a query for status information. This is useful to fetch current +version of installed AusweisApp2 to check if the version supports the WebSocket-API. + +You can get this by a HTTP GET query to ``http://localhost:24727/eID-Client?Status``. +If you prefer the JSON syntax you can add it to the parameter ``?Status=json`` to get +the following information. + +.. code-block:: json + + { + "Implementation-Title": "AusweisApp2", + "Implementation-Vendor": "Governikus GmbH & Co. KG", + "Implementation-Version": "1.16.0", + "Name": "AusweisApp2", + "Specification-Title": "TR-03124", + "Specification-Vendor": "Federal Office for Information Security", + "Specification-Version": "1.3" + } + + +.. seealso:: + + The AusweisApp2 SDK provides a :ref:`get_info` command and an :ref:`info` message + to fetch the same information to check the compatibility of used AusweisApp2. + + + +Reader +------ +The AusweisApp2 SDK uses PC/SC and paired Smartphones as card reader. If the +user wants to use the "smartphone as card reader" feature it is necessary +to pair the devices by the graphical interface of AusweisApp2. The AusweisApp2 SDK +provides no API to pair those devices. diff --git a/docs/sdk/index.rst b/docs/sdk/index.rst index 433d147..2aafb08 100644 --- a/docs/sdk/index.rst +++ b/docs/sdk/index.rst @@ -1,6 +1,6 @@ .. only:: html - .. image:: ../../resources/images/AppLogo_AutentApp2_2014.png + .. image:: ../../resources/images/Logo_AusweisApp2.png :alt: AusweisApp2 :align: center :width: 200pt @@ -27,12 +27,14 @@ Table of contents +.. _connection: .. toctree:: :maxdepth: 3 :caption: Connection android + desktop .. raw:: latex @@ -42,6 +44,7 @@ Table of contents +.. _protocol: .. toctree:: :maxdepth: 2 diff --git a/docs/sdk/intro.rst b/docs/sdk/intro.rst index 94fac2d..e303281 100644 --- a/docs/sdk/intro.rst +++ b/docs/sdk/intro.rst @@ -5,12 +5,12 @@ the AusweisApp2 as an additional service. It distinguishes between a connection to the application and the communication between your application and AusweisApp2. -The section "Connection" will show you what you need to do to +The section :ref:`connection` will show you what you need to do to set up a connection to AusweisApp2. Once you have established a connection you can send and receive JSON documents in a bi-directional manner. There are different commands and messages. These are listed -and described in the section "Protocol". The protocol +and described in the section :ref:`protocol`. The protocol is split up in :doc:`commands` and :doc:`messages`. Commands will be sent by your application to control AusweisApp2. Messages contain additional information to your command diff --git a/docs/sdk/messages.rst b/docs/sdk/messages.rst index b420bb3..da71caa 100644 --- a/docs/sdk/messages.rst +++ b/docs/sdk/messages.rst @@ -364,6 +364,7 @@ again but without an error parameter. { "name": "NFC", "attached": true, + "keypad": false, "card": { "inoperative": false, @@ -424,6 +425,7 @@ AusweisApp2 will send an :ref:`enter_pin` again with a retryCounter of **3**. { "name": "NFC", "attached": true, + "keypad": false, "card": { "inoperative": false, @@ -482,6 +484,7 @@ Please see the note for more information. { "name": "NFC", "attached": true, + "keypad": false, "card": { "inoperative": false, @@ -642,10 +645,16 @@ If a workflow is in progress and a card with disabled eID functionality was inserted, this message will still be sent, but the workflow will be paused until a card with enabled eID functionality is inserted. +.. versionadded:: 1.16.0 + Parameter **keypad** added. + - **name**: Identifier of card reader. - - **attached**: Indicates if a card reader is connected or disconnected. + - **attached**: Indicates whether a card reader is connected or disconnected. + + - **keypad**: Indicates whether a card reader has a keypad. The parameter + is only shown when a reader is attached. - **card**: Provides information about inserted card, otherwise null. @@ -665,6 +674,7 @@ until a card with enabled eID functionality is inserted. "msg": "READER", "name": "NFC", "attached": true, + "keypad": false, "card": { "inoperative": false, @@ -695,12 +705,14 @@ Provides information about all connected card readers. { "name": "Example reader 1 [SmartCard] (1234567) 01 00", "attached": true, + "keypad": true, "card": null }, { "name": "NFC", "attached": true, + "keypad": false, "card": { "inoperative": false, diff --git a/docs/sdk/workflow.rst b/docs/sdk/workflow.rst index 1ef2145..1fc4bb0 100644 --- a/docs/sdk/workflow.rst +++ b/docs/sdk/workflow.rst @@ -32,7 +32,7 @@ into the connected card reader. {"cmd": "ACCEPT"} - {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}} + {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":3},"keypad":false,"name":"NFC"}} {"cmd": "SET_PIN", "value": "123456"} @@ -62,23 +62,23 @@ into the connected card reader. {"msg": "INSERT_CARD"} - {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}} + {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":3},"keypad":false,"name":"NFC"}} {"cmd": "SET_PIN", "value": "000000"} - {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":2},"name":"NFC"}} + {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":2},"keypad":false,"name":"NFC"}} {"cmd": "SET_PIN", "value": "000001"} - {"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}} + {"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":1},"keypad":false,"name":"NFC"}} {"cmd": "SET_CAN", "value": "000000"} - {"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}} + {"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":1},"keypad":false,"name":"NFC"}} {"cmd": "SET_CAN", "value": "654321"} - {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}} + {"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"retryCounter":1},"keypad":false,"name":"NFC"}} {"cmd": "SET_PIN", "value": "123456"} diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index e98ad56..fd9aab6 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -26,8 +26,6 @@ IF(ANDROID) ENDIF() ENDIF() -ADD_FLAG(-fstack-protector-strong -fstack-protector NOQUOTES VAR COMPILER_FLAGS) - IF(MSVC) FIND_PROGRAM(MAKE nmake CMAKE_FIND_ROOT_PATH_BOTH) @@ -61,11 +59,15 @@ ELSE() SET(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "build type configuration" FORCE) ENDIF() -IF(NOT ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG" AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") - MESSAGE(FATAL_ERROR "CMAKE_BUILD_TYPE is invalid! Available options: RELEASE, DEBUG") +IF(NOT ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG" AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELWITHDEBINFO") + MESSAGE(FATAL_ERROR "CMAKE_BUILD_TYPE is invalid! Available options: RELEASE, RELWITHDEBINFO, DEBUG") ENDIF() -FIND_HOST_PACKAGE(Perl REQUIRED) +IF(MSVC) + FIND_HOST_PACKAGE(Perl REQUIRED) +ELSE() + SET(PERL_EXECUTABLE perl) +ENDIF() FIND_HOST_PACKAGE(PythonInterp 2.7 REQUIRED) IF(NOT "${PYTHON_VERSION_MAJOR}" STREQUAL "2") @@ -84,9 +86,6 @@ ENDIF() IF(NOT DESTINATION_DIR) SET(DESTINATION_DIR ${PROJECT_BINARY_DIR}/dist) ENDIF() -IF(MSYS) - STRING(REPLACE "C:/msys/1.0" "" DESTINATION_DIR ${DESTINATION_DIR}) -ENDIF() SET(PATCHES_DIR ${PROJECT_SOURCE_DIR}/../patches) @@ -103,15 +102,15 @@ SET_DIRECTORY_PROPERTIES(PROPERTIES EP_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/b) INCLUDE(Messages) -################################## Versionen -SET(QT 5.9.3) -SET(QT_HASH 57acd8f03f830c2d7dc29fbe28aaa96781b2b9bdddce94196e6761a0f88c6046) +################################## Versions +SET(QT 5.11.2) +SET(QT_HASH c6104b840b6caee596fa9a35bc5f57f67ed5a99d6a36497b6fe66f990a53ca81) -SET(OPENSSL 1.0.2o) -SET(OPENSSL_HASH ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d) +SET(OPENSSL 1.1.1) +SET(OPENSSL_HASH 2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d) ################################## Files -SET(QT_FILE qt-everywhere-opensource-src-${QT}.tar.xz) +SET(QT_FILE qt-everywhere-src-${QT}.tar.xz) SET(OPENSSL_FILE openssl-${OPENSSL}.tar.gz) ################################## Downloads @@ -120,61 +119,64 @@ IF("${QT}" MATCHES "alpha|beta|rc") ELSE() SET(QT_DEST_DIR official_releases) ENDIF() -STRING(SUBSTRING ${QT} 0 3 QT_SUBVERSION) +STRING(SUBSTRING ${QT} 0 4 QT_SUBVERSION) SET(QT_URL https://download.qt.io/${QT_DEST_DIR}/qt/${QT_SUBVERSION}/${QT}/single) SET(OPENSSL_URL https://www.openssl.org/source) -IF(ANDROID OR APPLE) - FIND_PROGRAM(SH_CMD sh CMAKE_FIND_ROOT_PATH_BOTH) - IF(SH_CMD) - MESSAGE(STATUS "Using 'sh' command... ${SH_CMD}") - ELSE() - MESSAGE(FATAL_ERROR "Cannot find 'sh' command") - ENDIF() -ENDIF() - - SET(ENABLED_TARGETS) ################################## OpenSSL ######################################################################### LIST(APPEND ENABLED_TARGETS openssl) -SET(OPENSSL_CONFIGURE_FLAGS no-ssl2 no-ssl3 no-ssl3-method no-dtls no-srp no-idea no-mdc2 no-rc5 no-hw no-engine no-dso -DOPENSSL_NO_HEARTBEATS shared) + +SET(OPENSSL_CONFIGURE_FLAGS no-camellia no-bf no-aria no-seed no-poly1305 no-srp no-gost no-ocsp no-idea no-mdc2 no-rc2 no-rc4 no-rc5 no-srtp no-hw no-sm2 no-sm3 no-sm4) +SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} no-cast no-chacha no-blake2 no-rmd160 no-scrypt no-siphash no-whirlpool no-md4 no-des) +SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} no-tls1 no-tls1-method no-tls1_1 no-tls1_1-method no-tls1_3 no-ssl3 no-ssl3-method no-dtls no-dtls1-method no-dtls1_2-method) +SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} no-deprecated no-engine no-async no-dso no-comp no-ts no-makedepend no-tests shared) + +IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") + SET(OPENSSL_CONFIGURE_FLAGS --debug ${OPENSSL_CONFIGURE_FLAGS}) +ELSE() + ADD_FLAG(-Os NOQUOTES VAR OPENSSL_COMPILER_FLAGS) +ENDIF() + +ADD_FLAG(-fstack-protector-strong -fstack-protector NOQUOTES VAR OPENSSL_COMPILER_FLAGS) IF(IOS) - SET(OPENSSL_PATCH_COMMAND ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl_iOS.patch && ) - SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} iphoneos-cross) + SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} ios64-cross) SET(OPENSSL_ENV export CROSS_TOP=${CMAKE_IOS_DEVELOPER_ROOT} && export CROSS_SDK=iPhoneOS.sdk &&) - SET(OPENSSL_COMPILER_FLAGS "-arch arm64") ELSEIF(APPLE) SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} darwin64-x86_64-cc) - SET(COMPILER_FLAGS "${COMPILER_FLAGS} -mmacosx-version-min=10.9") + SET(OPENSSL_COMPILER_FLAGS ${OPENSSL_COMPILER_FLAGS} -mmacosx-version-min=10.11) ELSEIF(MINGW) SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} mingw) ELSEIF(MSVC) - SET(OPENSSL_PREBUILD ms\\do_ms.bat) SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} no-asm VC-WIN32) - SET(OPENSSL_ADDITIONAL_MAKE -f ms/ntdll.mak) - SET(OPENSSL_INSTALL_TARGET install) ELSEIF(ANDROID) IF(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a") - SET(OPENSSL_ARCH android-armv7) - SET(OPENSSL_COMPILER_FLAGS "-mfloat-abi=softfp") + SET(OPENSSL_ARCH android-arm) + SET(OPENSSL_COMPILER_FLAGS ${OPENSSL_COMPILER_FLAGS} -mfloat-abi=softfp) ELSEIF(CMAKE_ANDROID_ARCH_ABI STREQUAL "x86") SET(OPENSSL_ARCH android-x86) ELSEIF(CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a") - SET(OPENSSL_ARCH android) + SET(OPENSSL_ARCH android-arm64) ELSE() MESSAGE(FATAL_ERROR "CMAKE_ANDROID_ARCH_ABI not supported by openssl") ENDIF() + SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} no-stdio ${OPENSSL_ARCH}) - SET(OPENSSL_ENV export ANDROID_DEV=${CMAKE_SYSROOT}/usr &&) - IF(UNIFIED_INCLUDE) - SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION} -isystem${UNIFIED_INCLUDE} -isystem${UNIFIED_INCLUDE}/${ANDROID_TOOLCHAIN_MACHINE_NAME}) + GET_FILENAME_COMPONENT(toolchain_bin "${CMAKE_C_COMPILER}" DIRECTORY) + SET(OPENSSL_ENV export PATH=${toolchain_bin}/:$ENV{PATH} &&) + IF(NOT CMAKE_COMPILER_IS_GNUCXX) + SET(OPENSSL_ENV ${OPENSSL_ENV} export CC=clang && export CXX=clang++ &&) ENDIF() - SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} --cross-compile-prefix=${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX} ${OPENSSL_ARCH}) + + IF(UNIFIED_INCLUDE) + SET(OPENSSL_COMPILER_FLAGS ${OPENSSL_COMPILER_FLAGS} -isystem${UNIFIED_INCLUDE} -isystem${UNIFIED_INCLUDE}/${ANDROID_TOOLCHAIN_MACHINE_NAME}) + ENDIF() + SET(OPENSSL_COMPILER_FLAGS ${OPENSSL_COMPILER_FLAGS} -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION}) ELSEIF(BSD) SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} BSD-x86_64) ELSEIF(LINUX) @@ -188,56 +190,45 @@ ELSE() MESSAGE(FATAL_ERROR "Unsupported system") ENDIF() -IF(NOT OPENSSL_PREBUILD) - SET(OPENSSL_PREBUILD ${MAKE} depend) -ENDIF() - -IF(NOT OPENSSL_INSTALL_TARGET) - SET(OPENSSL_INSTALL_TARGET install_sw) -ENDIF() - -# OpenSSL does not support multiple make jobs! ExternalProject_Add(openssl URL ${OPENSSL_URL}/${OPENSSL_FILE} URL_HASH SHA256=${OPENSSL_HASH} DOWNLOAD_DIR ${PACKAGES_DIR} - PATCH_COMMAND - ${OPENSSL_PATCH_COMMAND} - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-fix-no-engine-build.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-Revert-Configure-use-a-better-method-to-identify-gcc.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-RSA-key-generation-ensure-BN_mod_inverse-and-BN_mod_.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-Reject-excessively-large-primes-in-DH-key-generation.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl_rsa_psk.patch - - CONFIGURE_COMMAND ${OPENSSL_ENV} ${PERL_EXECUTABLE} Configure --prefix=${DESTINATION_DIR} ${OPENSSL_CONFIGURE_FLAGS} "${COMPILER_FLAGS}" "${OPENSSL_COMPILER_FLAGS}" - BUILD_COMMAND ${OPENSSL_ENV} ${MAKE} ${OPENSSL_ADDITIONAL_MAKE} + PATCH_COMMAND ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-android-shlib_variant.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-Ignore-disabled-ciphers.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-DSA-mod-inverse-fix.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-Timing-vulnerability-in-DSA-signature-generation-CVE.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-Timing-vulnerability-in-ECDSA-signature-generation-C.patch + CONFIGURE_COMMAND ${OPENSSL_ENV} ${PERL_EXECUTABLE} Configure --prefix=${DESTINATION_DIR} ${OPENSSL_CONFIGURE_FLAGS} "${OPENSSL_COMPILER_FLAGS}" + BUILD_COMMAND ${OPENSSL_ENV} ${MAKE} ${MAKE_JOBS} BUILD_IN_SOURCE 1 - INSTALL_COMMAND ${MAKE} ${OPENSSL_ADDITIONAL_MAKE} ${OPENSSL_INSTALL_TARGET} + INSTALL_COMMAND ${OPENSSL_ENV} ${MAKE} ${MAKE_JOBS} install_sw ) -ExternalProject_Add_Step(openssl prebuild - COMMAND ${OPENSSL_ENV} ${OPENSSL_PREBUILD} +ExternalProject_Add_Step(openssl configdata + COMMAND ${PERL_EXECUTABLE} configdata.pm --dump DEPENDEES configure DEPENDERS build WORKING_DIRECTORY ) -IF(UNIX) - ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND chmod 755 ${DESTINATION_DIR}/lib/libssl*${CMAKE_SHARED_LIBRARY_SUFFIX} ${DESTINATION_DIR}/lib/libcrypto*${CMAKE_SHARED_LIBRARY_SUFFIX}) -ENDIF() -IF(ANDROID) - ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD - COMMAND ${CMAKE_C_COMPILER} --sysroot ${CMAKE_SYSROOT} -o ${DESTINATION_DIR}/lib/libgovcrypto${CMAKE_SHARED_LIBRARY_SUFFIX} -shared -Wl,-soname=libgovcrypto${CMAKE_SHARED_LIBRARY_SUFFIX} -Wl,--whole-archive ${DESTINATION_DIR}/lib/libcrypto${CMAKE_STATIC_LIBRARY_SUFFIX} -Wl,--no-whole-archive - COMMAND ${CMAKE_C_COMPILER} --sysroot ${CMAKE_SYSROOT} -o ${DESTINATION_DIR}/lib/libgovssl${CMAKE_SHARED_LIBRARY_SUFFIX} -shared -Wl,-soname=libgovssl${CMAKE_SHARED_LIBRARY_SUFFIX} -Wl,--whole-archive ${DESTINATION_DIR}/lib/libssl${CMAKE_STATIC_LIBRARY_SUFFIX} -Wl,--no-whole-archive ${DESTINATION_DIR}/lib/libgovcrypto${CMAKE_SHARED_LIBRARY_SUFFIX}) -ELSEIF(MAC) - SET(OPENSSL_FILE_VERSION 1.0.0) +IF(MAC) + SET(OPENSSL_FILE_VERSION 1.1) ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND install_name_tool -id libcrypto.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${DESTINATION_DIR}/lib/libcrypto.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} COMMAND install_name_tool -id libssl.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${DESTINATION_DIR}/lib/libssl.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} COMMAND install_name_tool -change ${DESTINATION_DIR}/lib/libcrypto.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} libcrypto.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${DESTINATION_DIR}/lib/libssl.${OPENSSL_FILE_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}) ENDIF() +IF(IOS) + # Remove this work-around! Do not build any .dylib or be able to use .dylib + # Globbing is not supported by cmake command mode! This will work if executed with unix shell only. + ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove ${DESTINATION_DIR}/lib/*.dylib) +ELSEIF(ANDROID) + ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove ${DESTINATION_DIR}/lib/*.a) +ENDIF() + ################################## Qt ######################################################################### LIST(APPEND ENABLED_TARGETS qt) @@ -246,21 +237,29 @@ IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") SET(QT_CONFIGURE_FLAGS -debug -qml-debug) SET(QT_PATCH_COMMAND ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Enable-debug-output-for-OpenSSL.patch &&) ELSE() - SET(QT_CONFIGURE_FLAGS -release -no-qml-debug) + SET(QT_CONFIGURE_FLAGS -release -optimize-size -no-qml-debug) + SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} $<$:-force-debug-info>) ENDIF() +SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -prefix ${DESTINATION_DIR} -opensource -confirm-license -c++std c++11 -qt-zlib -no-mtdev -qt-libpng -qt-libjpeg -no-dbus -no-harfbuzz -qt-pcre -system-proxies -no-compile-examples -nomake examples -nomake tests -no-sql-sqlite -openssl-linked -I ${DESTINATION_DIR}/include -L ${DESTINATION_DIR}/lib) -SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -prefix ${DESTINATION_DIR} -opensource -confirm-license -c++std c++11 -qt-zlib -no-mtdev -qt-libpng -qt-libjpeg -no-harfbuzz -qt-pcre -system-proxies -no-compile-examples -nomake examples -nomake tests -no-sql-sqlite -openssl-linked -I ${DESTINATION_DIR}/include -L ${DESTINATION_DIR}/lib) +IF(NOT ANDROID) + LIST(APPEND NO_FEATURES bearermanagement) +ENDIF() -LIST(APPEND NO_FEATURES bearermanagement ftp paint_debug) +LIST(APPEND NO_FEATURES ftp paint_debug lcdnumber mdiarea) +LIST(APPEND NO_FEATURES calendarwidget colordialog cups dial fontcombobox fontdialog) LIST(APPEND NO_FEATURES imageformat_bmp imageformat_ppm imageformat_xbm) -LIST(APPEND NO_FEATURES sharedmemory textodfwriter) +LIST(APPEND NO_FEATURES sharedmemory textodfwriter filesystemwatcher) +LIST(APPEND NO_FEATURES undocommand undogroup undostack undoview) +LIST(APPEND NO_FEATURES printer printdialog printpreviewdialog printpreviewwidget) +LIST(APPEND NO_FEATURES splashscreen syntaxhighlighter dom sql) FOREACH(feature ${NO_FEATURES}) SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -no-feature-${feature}) ENDFOREACH() -SET(QT_CONFIGURE_FLAGS_OTHER -no-journald -no-dbus -no-directfb -no-linuxfb) -SET(QT_CONFIGURE_FLAGS_SKIP_MODULES -skip qtscxml -skip qtxmlpatterns -skip qtwebchannel -skip qtwebengine -skip qtscript -skip qtactiveqt -skip qtlocation -skip qtserialbus -skip qtserialport -skip qtgamepad -skip qtvirtualkeyboard -skip qtcanvas3d -skip qtcharts -skip qtdatavis3d -skip qt3d -skip qtpurchasing -skip qtwayland -skip qtremoteobjects -skip qtspeech -skip qtwebview) +SET(QT_CONFIGURE_FLAGS_OTHER -no-journald -no-directfb -no-linuxfb) +SET(QT_CONFIGURE_FLAGS_SKIP_MODULES -skip qtwebglplugin -skip qtscxml -skip qtxmlpatterns -skip qtwebchannel -skip qtwebengine -skip qtscript -skip qtactiveqt -skip qtlocation -skip qtserialbus -skip qtserialport -skip qtgamepad -skip qtvirtualkeyboard -skip qtcanvas3d -skip qtcharts -skip qtdatavis3d -skip qt3d -skip qtpurchasing -skip qtwayland -skip qtremoteobjects -skip qtspeech -skip qtwebview -skip multimedia -skip qtquickcontrols) SET(QT_CONFIGURE ./configure) IF(IOS) @@ -280,20 +279,30 @@ ELSEIF(APPLE) ELSEIF(WIN32) IF(MSVC) SET(QT_PLATFORM win32-msvc2015) - SET(QT_OPENSSL OPENSSL_LIBS=-llibeay32\ -lssleay32) + SET(QT_OPENSSL OPENSSL_LIBS=-llibcrypto\ -llibssl) ELSE() SET(QT_PLATFORM win32-g++) SET(QT_OPENSSL OPENSSL_LIBS=-lcrypto\ -lssl) ENDIF() - SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} ${QT_OPENSSL} -opengl desktop -no-icu -no-sql-odbc -platform ${QT_PLATFORM}) + SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} ${QT_OPENSSL} -opengl dynamic -no-icu -no-sql-odbc -platform ${QT_PLATFORM}) SET(QT_CONFIGURE configure.bat) ELSEIF(ANDROID) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(ANDROID_XPLATFORM android-g++) + ELSE() + SET(ANDROID_XPLATFORM android-clang) + ENDIF() SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} ${QT_CONFIGURE_FLAGS_OTHER} -android-sdk ${ANDROID_SDK} -android-ndk ${CMAKE_ANDROID_NDK} -android-ndk-platform android-${CMAKE_SYSTEM_VERSION} -android-ndk-host ${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG} - -android-arch ${CMAKE_ANDROID_ARCH_ABI} -android-toolchain-version ${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION} - -xplatform android-g++) - SET(QT_ENV export OPENSSL_LIBS=-lgovcrypto\ -lgovssl &&) + -android-arch ${CMAKE_ANDROID_ARCH_ABI} -android-toolchain-version ${ANDROID_NDK_TOOLCHAIN_VERSION} + -xplatform ${ANDROID_XPLATFORM}) + + IF(CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a") + SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -no-use-gold-linker) + ENDIF() + + SET(QT_ENV export OPENSSL_LIBS=-lcrypto-gov\ -lssl-gov &&) ELSE() SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} ${QT_CONFIGURE_FLAGS_OTHER} -no-libproxy) ENDIF() @@ -309,21 +318,28 @@ ExternalProject_Add(qt DOWNLOAD_DIR ${PACKAGES_DIR} PATCH_COMMAND ${QT_PATCH_COMMAND} - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Make-server-side-signature-algorithms-configurable.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Register-additional-meta-types.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Change-build-configuration-for-Qt-on-iOS.patch && ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Disable-unused-imageformats.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch && ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Add-IsoDep-to-the-techList-on-Android.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch && - ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-QCoreTextFontEngine-Fix-build-with-Xcode-9.3.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Introduce-reportError-to-fix-QMetaObject-invokeMethod.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Add-work-around-for-freebsd-build.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Remove-Qt-Labs-specific-plugins-from-the-build.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-configure-refactor-directx-checks.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-configure-detect-fxc.exe-more-thoroughly.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-disable-designer.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-fix-macOS-no-printer.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Use-QUrl-toString-when-forming-the-Host-header.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-QUrl-Support-IPv6-addresses-with-zone-id.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Android-fix-compile-with-NDK-r18.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Android-Fix-crash.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-QObject-Fix-isSignalConnected-when-signals-have-been.patch && + ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Use-user-provided-session-data-if-available.patch && ${CMAKE_COMMAND} -E touch qtbase/.gitignore CONFIGURE_COMMAND ${QT_ENV} ${QT_CONFIGURE} ${QT_CONFIGURE_FLAGS} ${QT_CONFIGURE_FLAGS_SKIP_MODULES} BUILD_COMMAND ${MAKE} ${MAKE_JOBS} BUILD_IN_SOURCE 1 ) -ADD_CUSTOM_COMMAND(TARGET qt POST_BUILD COMMAND cmake -E touch ${DESTINATION_DIR}/mkspecs/qt_vendor_governikus) +ADD_CUSTOM_COMMAND(TARGET qt POST_BUILD COMMAND ${CMAKE_COMMAND} -E touch ${DESTINATION_DIR}/mkspecs/qt_vendor_governikus) ######################################################################### @@ -354,9 +370,6 @@ ENDIF() IF(IOS) SET(SYSTEM_NAME iOS) - # Remove this work-around! Do not build any .dylib or be able to use .dylib - # Globbing is not supported by cmake command mode! This will work if executed with unix shell only. - SET(CLEANUP_FILES ${CMAKE_COMMAND} -E remove ${DESTINATION_DIR}/lib/*.dylib) ELSEIF(ANDROID) SET(SYSTEM_NAME ${CMAKE_SYSTEM_NAME}_${CMAKE_CXX_COMPILER_ID}_${CMAKE_ANDROID_ARCH_ABI}) ELSE() @@ -373,9 +386,7 @@ ENDIF() SET(COMPRESSION cfJ) SET(COMPRESSION_FILENDING tar.xz) ADD_CUSTOM_TARGET(compress.pre ${compressed_filename} - COMMAND ${CLEANUP_FILES} COMMAND ${CMAKE_COMMAND} -E remove_directory "${DESTINATION_DIR}/doc" - COMMAND ${CMAKE_COMMAND} -E remove_directory "${DESTINATION_DIR}/lib/engines" COMMAND ${CMAKE_COMMAND} -E remove_directory "${DESTINATION_DIR}/share" COMMAND ${SIGN_COMMAND} DEPENDS ${COMPRESS_TARGETS} diff --git a/libs/README.rst b/libs/README.rst index aa4d77a..ef17004 100644 --- a/libs/README.rst +++ b/libs/README.rst @@ -17,7 +17,7 @@ Unterstützte Compiler: Notwendige Bibliotheken: -- Qt >= 5.9 +- Qt >= 5.10 - http://www.qt.io/download/ @@ -25,11 +25,7 @@ Notwendige Bibliotheken: - https://www.openssl.org/source/ - - Aus dem Ordner "patches" müssen die folgenden Patches angewandt werden. - (Sofern der automatische Build mittels CMake gestartet wird, werden - die Patches automatisch angewandt.) - - - openssl_rsa_psk.patch + - LibreSSL wird auf Grund des fehlenden RSA-PSK nicht unterstützt. - pcsclite >= 1.8 (nur Linux/FreeBSD) @@ -97,8 +93,8 @@ Beispiel: Innerhalb von /Users/governikus/AusweisApp2 befindet sich der Quellcod Windows MinGW ^^^^^^^^^^^^^ -Unter Windows ist es derzeit empfohlen einen Teil der Toolchain mittels MSYS zu bauen. -Perl muss dafür ebenfalls installiert sein. +Unter Windows ist es derzeit empfohlen einen Teil der Toolchain mittels MSYS2 zu bauen. +Perl muss dafür in MSYS2 nachinstalliert werden. Außerdem ist das Windows SDK notwendig. MinGW """"" @@ -109,20 +105,28 @@ MinGW https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/5.3.0/threads-posix/dwarf/i686-5.3.0-release-posix-dwarf-rt_v4-rev0.7z/download -MSYS -"""" +MSYS2 +""""" -- http://www.mingw.org/wiki/msys +- https://sourceforge.net/projects/msys2/files/Base/x86_64/ - - Getestet: 1.0.11 + - Getestet: msys2-base-x86_64-20180531.tar.xz -Perl -"""" +Windows SDK +""""""""""" -- http://www.activestate.com/activeperl/downloads +- https://developer.microsoft.com/de-de/windows/downloads/windows-10-sdk - - Getestet: 5.24.0 + - Getestet: 10.0.14393.795 und 10.0.16299.0 + + +Python 2 +"""""""" + +- https://www.python.org/downloads/ + + - Getestet: python-2.7.15.amd64.msi Vorbereitung @@ -131,46 +135,72 @@ Vorbereitung #. Eintragen des Ordners "bin" von der MinGW-Installation in %PATH%. -#. Installation von MSYS, welche sich auf die MinGW-Installation bezieht. +#. Entpacken von MSYS2. -#. Der Ordner von Perl muss sich in %PATH% befinden. +#. Start von "msys2_shell.cmd -use-full-path". -#. In der Datei "fstab" unter C:\msys\1.0\etc folgende Einträge mit den jeweiligen Pfaden: +#. System aktualisieren mittels "pacman -Syu" (danach MSYS2 neustarten). + +#. Perl nachinstallieren mittels "pacman -S perl". + +#. Installation des Windows SDK und setzen einer Systemvariable: :: - C:/mingw32/i686-5.3.0-release-posix-dwarf-rt_v4-rev0 /mingw - C:/Perl /perl - + Für das Windows SDK 10.0.15063.0 und neuer: + WindowsSdkVerBinPath = C:\Program Files (x86)\Windows Kits\10\bin\%VERSION% + Für alle älteren Versionen: + WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10 Durch einige Probleme mit Unix-Shell-Skripten ist es derzeit leider -notwendig die Toolchain in zwei Schritten aufzubauen. +notwendig die Toolchain in zwei Schritten zu bauen. Hierzu muss OpenSSL und Qt separat gebaut werden. +#. Download und Start der Installation von Python. + +#. Sicherstellen, dass die python.exe während der Installation zum PATH hinzugefügt wird. + + +Eventuell muss für MinGW folgende Option gesetzt werden (QTBUG-16443): + +#. Windows --> gpedit.msc --> Enter (als Administrator) + +#. Richtlinien für Lokaler Computer + +#. Computerkonfiguration + +#. Administrative Vorlagen + +#. System + +#. Dateisystem + +#. Lange Win32-Pfade aktivieren + openssl / Qt """""""""""" Da Qt mittels Batchskript gebaut werden muss, ist es leider nicht möglich dies innerhalb -von MSYS zu bauen [2]. Daher wird OpenSSL und Qt mittels Windows-CLI konfiguriert. -Dabei wird Qt über Windows-CLI und OpenSSL unter MSYS gebaut. +von MSYS2 zu bauen [2]. Daher wird OpenSSL und Qt mittels Windows-CLI konfiguriert. +Dabei wird Qt über Windows-CLI und OpenSSL unter MSYS2 gebaut. #. cmd.exe von Windows starten -#. mkdir c:\msys\1.0\home\user\qt ("user" ist der Benutzer, der unter MSYS verwendet wird) +#. mkdir c:\msys64\home\user\qt ("user" ist der Benutzer, der unter MSYS2 verwendet wird) -#. cd c:\msys\1.0\home\user\qt +#. cd c:\msys64\home\user\qt #. cmake -DCMAKE_BUILD_TYPE=release -DPACKAGES_DIR=C:/packages C:/AusweisApp2/libs -G "MinGW Makefiles" -#. MSYS Shell starten +#. MSYS2 Shell starten ("msys2_shell.cmd -use-full-path") #. cd qt #. mingw32-make openssl -#. MSYS Shell verlassen +#. MSYS2 Shell verlassen -#. In der cmd.exe: c:\msys\1.0\home\user\qt +#. In der cmd.exe: c:\msys64\home\user\qt #. mingw32-make qt @@ -182,7 +212,7 @@ iOS """ Die Toolchain für iOS kann nur auf MacOS gebaut werden. Dabei müssen XCode und die Command Line Tools (siehe "xcode-select -p" bzw. "xcode-select --install") -auf dem Mac vorhanden sein. Die folgende Anleitung wurde unter MacOS 10.9 und 10.11 getestet. +auf dem Mac vorhanden sein. Die folgende Anleitung wurde unter macOS 10.12 getestet. Ebenfalls muss für den Build-Vorgang von Qt ein iOS Developer-Zertifikat mit Wildcard (*) im Keystore von MacOS hinterlegt sein. @@ -207,30 +237,33 @@ Komponenten vorhanden sein: - https://developer.android.com/tools/sdk/ndk/index.html - - Getestet: r10e (https://wiki.qt.io/Qt_for_Android_known_issues) + - Getestet: r18 (https://wiki.qt.io/Qt_for_Android_known_issues) - Android SDK mit gesetztem ANDROID_HOME - https://developer.android.com/studio/releases/sdk-tools.html - - Getestet: 25.2.5 + - Getestet: 26.1.1 - - Qt ist derzeit nicht mit aktuelleren kompatibel: https://bugreports.qt.io/browse/QTBUG-61988 +- SDK build tools - - Unter bestimmten Umständen kann es vorkommen, dass die Build-Tools-Version nicht erkannt - wird. Dies kann mittels der Umgebungsvariable ANDROID_BUILD_TOOLS_REVISION behoben werden. - Die genaue Version ist im Android Manager vom Android SDK (./tools/android) hinterlegt. + - https://developer.android.com/studio/releases/build-tools - - Getestet: 27.0.1 + - Getestet: 28.0.3 -- Um Qt erfolgreich zu bauen, sind verschiedene API Level von Android notwendig. - Diese sollten mindestens Level 18 und 21 sein. Nähere Informationen dazu +- SDK platform tools + + - https://developer.android.com/studio/releases/platform-tools + + - Getestet: 28.0.1 + +- Um Qt erfolgreich zu bauen, ist mindestens ein API-Levelpaket von Android notwendig. + Dieses sollte mindestens Level 21 sein. Nähere Informationen dazu sind im Wiki von Qt enthalten: http://wiki.qt.io/Android Die Plattformen können mittels Android Manager nachinstalliert werden. - JDK mit gesetztem JAVA_HOME -- Apache Ant mit gesetztem ANT_HOME Beispiel: Innerhalb von /home/governikus/AusweisApp2 befindet sich der Quellcode. diff --git a/patches/openssl-DSA-mod-inverse-fix.patch b/patches/openssl-DSA-mod-inverse-fix.patch new file mode 100644 index 0000000..b1e511a --- /dev/null +++ b/patches/openssl-DSA-mod-inverse-fix.patch @@ -0,0 +1,78 @@ +From f1b12b8713a739f27d74e6911580b2e70aea2fa4 Mon Sep 17 00:00:00 2001 +From: Pauli +Date: Mon, 29 Oct 2018 06:50:51 +1000 +Subject: [PATCH 1/3] DSA mod inverse fix + +There is a side channel attack against the division used to calculate one of +the modulo inverses in the DSA algorithm. This change takes advantage of the +primality of the modulo and Fermat's little theorem to calculate the inverse +without leaking information. + +Thanks to Samuel Weiser for finding and reporting this. + +Reviewed-by: Matthias St. Pierre +Reviewed-by: Bernd Edlinger +(Merged from https://github.com/openssl/openssl/pull/7487) + +(cherry picked from commit 415c33563528667868c3c653a612e6fc8736fd79) +--- + crypto/dsa/dsa_ossl.c | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +diff --git x/crypto/dsa/dsa_ossl.c y/crypto/dsa/dsa_ossl.c +index ac1f65a51a..ca20811200 100644 +--- x/crypto/dsa/dsa_ossl.c ++++ y/crypto/dsa/dsa_ossl.c +@@ -23,6 +23,8 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + static int dsa_init(DSA *dsa); + static int dsa_finish(DSA *dsa); ++static BIGNUM *dsa_mod_inverse_fermat(const BIGNUM *k, const BIGNUM *q, ++ BN_CTX *ctx); + + static DSA_METHOD openssl_dsa_meth = { + "OpenSSL DSA method", +@@ -259,7 +261,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + goto err; + + /* Compute part of 's = inv(k) (m + xr) mod q' */ +- if ((kinv = BN_mod_inverse(NULL, k, dsa->q, ctx)) == NULL) ++ if ((kinv = dsa_mod_inverse_fermat(k, dsa->q, ctx)) == NULL) + goto err; + + BN_clear_free(*kinvp); +@@ -393,3 +395,31 @@ static int dsa_finish(DSA *dsa) + BN_MONT_CTX_free(dsa->method_mont_p); + return 1; + } ++ ++/* ++ * Compute the inverse of k modulo q. ++ * Since q is prime, Fermat's Little Theorem applies, which reduces this to ++ * mod-exp operation. Both the exponent and modulus are public information ++ * so a mod-exp that doesn't leak the base is sufficient. A newly allocated ++ * BIGNUM is returned which the caller must free. ++ */ ++static BIGNUM *dsa_mod_inverse_fermat(const BIGNUM *k, const BIGNUM *q, ++ BN_CTX *ctx) ++{ ++ BIGNUM *res = NULL; ++ BIGNUM *r, *e; ++ ++ if ((r = BN_new()) == NULL) ++ return NULL; ++ ++ BN_CTX_start(ctx); ++ if ((e = BN_CTX_get(ctx)) != NULL ++ && BN_set_word(r, 2) ++ && BN_sub(e, q, r) ++ && BN_mod_exp_mont(r, k, e, q, ctx, NULL)) ++ res = r; ++ else ++ BN_free(r); ++ BN_CTX_end(ctx); ++ return res; ++} +-- +2.19.1 + diff --git a/patches/openssl-Ignore-disabled-ciphers.patch b/patches/openssl-Ignore-disabled-ciphers.patch new file mode 100644 index 0000000..aab52cf --- /dev/null +++ b/patches/openssl-Ignore-disabled-ciphers.patch @@ -0,0 +1,30 @@ +From 2bcd8e6e1fe62ef5667c1bb8ad1bfe54a0aeaa99 Mon Sep 17 00:00:00 2001 +From: Matt Caswell +Date: Wed, 24 Oct 2018 10:11:00 +0100 +Subject: [PATCH] Ignore disabled ciphers when deciding if we are using ECC + +use_ecc() was always returning 1 because there are default (TLSv1.3) +ciphersuites that use ECC - even if those ciphersuites are disabled by +other options. + +Fixes #7471 +--- + ssl/statem/extensions_clnt.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git x/ssl/statem/extensions_clnt.c y/ssl/statem/extensions_clnt.c +index 4b5e6fe2b87..dcadc2a3231 100644 +--- x/ssl/statem/extensions_clnt.c ++++ y/ssl/statem/extensions_clnt.c +@@ -128,6 +128,10 @@ static int use_ecc(SSL *s) + for (i = 0; i < end; i++) { + const SSL_CIPHER *c = sk_SSL_CIPHER_value(cipher_stack, i); + ++ /* Skip disabled ciphers */ ++ if (ssl_cipher_disabled(s, c, SSL_SECOP_CIPHER_SUPPORTED, 0)) ++ continue; ++ + alg_k = c->algorithm_mkey; + alg_a = c->algorithm_auth; + if ((alg_k & (SSL_kECDHE | SSL_kECDHEPSK)) + diff --git a/patches/openssl-RSA-key-generation-ensure-BN_mod_inverse-and-BN_mod_.patch b/patches/openssl-RSA-key-generation-ensure-BN_mod_inverse-and-BN_mod_.patch deleted file mode 100644 index a724b2c..0000000 --- a/patches/openssl-RSA-key-generation-ensure-BN_mod_inverse-and-BN_mod_.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 349a41da1ad88ad87825414752a8ff5fdd6a6c3f Mon Sep 17 00:00:00 2001 -From: Billy Brumley -Date: Wed, 11 Apr 2018 10:10:58 +0300 -Subject: [PATCH] RSA key generation: ensure BN_mod_inverse and BN_mod_exp_mont - both get called with BN_FLG_CONSTTIME flag set. - -CVE-2018-0737 - -Reviewed-by: Rich Salz -Reviewed-by: Matt Caswell -(cherry picked from commit 6939eab03a6e23d2bd2c3f5e34fe1d48e542e787) ---- - crypto/rsa/rsa_gen.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git x/crypto/rsa/rsa_gen.c y/crypto/rsa/rsa_gen.c -index 9ca5dfefb7..42b89a8dfa 100644 ---- x/crypto/rsa/rsa_gen.c -+++ y/crypto/rsa/rsa_gen.c -@@ -156,6 +156,8 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, - if (BN_copy(rsa->e, e_value) == NULL) - goto err; - -+ BN_set_flags(rsa->p, BN_FLG_CONSTTIME); -+ BN_set_flags(rsa->q, BN_FLG_CONSTTIME); - BN_set_flags(r2, BN_FLG_CONSTTIME); - /* generate p and q */ - for (;;) { --- -2.17.0 - diff --git a/patches/openssl-Reject-excessively-large-primes-in-DH-key-generation.patch b/patches/openssl-Reject-excessively-large-primes-in-DH-key-generation.patch deleted file mode 100644 index c64bc24..0000000 --- a/patches/openssl-Reject-excessively-large-primes-in-DH-key-generation.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 3984ef0b72831da8b3ece4745cac4f8575b19098 Mon Sep 17 00:00:00 2001 -From: Guido Vranken -Date: Mon, 11 Jun 2018 19:38:54 +0200 -Subject: [PATCH] Reject excessively large primes in DH key generation. - -CVE-2018-0732 - -Signed-off-by: Guido Vranken - -(cherry picked from commit 91f7361f47b082ae61ffe1a7b17bb2adf213c7fe) - -Reviewed-by: Tim Hudson -Reviewed-by: Matt Caswell -(Merged from https://github.com/openssl/openssl/pull/6457) ---- - crypto/dh/dh_key.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git x/crypto/dh/dh_key.c y/crypto/dh/dh_key.c -index 387558f146..f235e0d682 100644 ---- x/crypto/dh/dh_key.c -+++ y/crypto/dh/dh_key.c -@@ -130,10 +130,15 @@ static int generate_key(DH *dh) - int ok = 0; - int generate_new_key = 0; - unsigned l; -- BN_CTX *ctx; -+ BN_CTX *ctx = NULL; - BN_MONT_CTX *mont = NULL; - BIGNUM *pub_key = NULL, *priv_key = NULL; - -+ if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) { -+ DHerr(DH_F_GENERATE_KEY, DH_R_MODULUS_TOO_LARGE); -+ return 0; -+ } -+ - ctx = BN_CTX_new(); - if (ctx == NULL) - goto err; --- -2.18.0 - diff --git a/patches/openssl-Revert-Configure-use-a-better-method-to-identify-gcc.patch b/patches/openssl-Revert-Configure-use-a-better-method-to-identify-gcc.patch deleted file mode 100644 index f8797e1..0000000 --- a/patches/openssl-Revert-Configure-use-a-better-method-to-identify-gcc.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 2a33b07d56c7e30a18dda5760111af267271c236 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= -Date: Tue, 24 Apr 2018 16:13:56 +0200 -Subject: [PATCH] Revert "Configure: use a better method to identify gcc and - derivates" - -This reverts commit 78e9e3f945935c91d8dfe0e832a95d6ea8d05f34. ---- - Configure | 22 ++++++++-------------- - 1 file changed, 8 insertions(+), 14 deletions(-) - -diff --git x/Configure y/Configure -index 744b493b96..fe7565ebd9 100755 ---- x/Configure -+++ y/Configure -@@ -1269,7 +1269,7 @@ my ($prelflags,$postlflags)=split('%',$lflags); - if (defined($postlflags)) { $lflags=$postlflags; } - else { $lflags=$prelflags; undef $prelflags; } - --if ($target =~ /^mingw/ && `$cross_compile_prefix$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m) -+if ($target =~ /^mingw/ && `$cc --target-help 2>&1` !~ m/\-mno\-cygwin/m) - { - $cflags =~ s/\-mno\-cygwin\s*//; - $shared_ldflag =~ s/\-mno\-cygwin\s*//; -@@ -1661,25 +1661,18 @@ if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/) - $shlib_minor=$2; - } - --my %predefined; -- --# collect compiler pre-defines from gcc or gcc-alike... --open(PIPE, "$cross_compile_prefix$cc -dM -E -x c /dev/null 2>&1 |"); --while () { -- m/^#define\s+(\w+(?:\(\w+\))?)(?:\s+(.+))?/ or last; -- $predefined{$1} = defined($2) ? $2 : ""; --} --close(PIPE); -+my $ecc = $cc; -+$ecc = "clang" if `$cc --version 2>&1` =~ /clang/; - - if ($strict_warnings) - { - my $wopt; -- die "ERROR --strict-warnings requires gcc or clang" unless defined($predefined{__GNUC__}); -+ die "ERROR --strict-warnings requires gcc or clang" unless ($ecc =~ /gcc$/ or $ecc =~ /clang$/); - foreach $wopt (split /\s+/, $gcc_devteam_warn) - { - $cflags .= " $wopt" unless ($cflags =~ /(^|\s)$wopt(\s|$)/) - } -- if (defined($predefined{__clang__})) -+ if ($ecc eq "clang") - { - foreach $wopt (split /\s+/, $clang_devteam_warn) - { -@@ -1730,14 +1723,15 @@ while () - s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/; - s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/; - s/^RC=\s*/RC= \$\(CROSS_COMPILE\)/; -- s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $predefined{__GNUC__} >= 3; -+ s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc"; - } - else { - s/^CC=.*$/CC= $cc/; - s/^AR=\s*ar/AR= $ar/; - s/^RANLIB=.*/RANLIB= $ranlib/; - s/^RC=.*/RC= $windres/; -- s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $predefined{__GNUC__} >= 3; -+ s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc"; -+ s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $ecc eq "gcc" || $ecc eq "clang"; - } - s/^CFLAG=.*$/CFLAG= $cflags/; - s/^DEPFLAG=.*$/DEPFLAG=$depflags/; --- -2.17.0 - diff --git a/patches/openssl-Timing-vulnerability-in-DSA-signature-generation-CVE.patch b/patches/openssl-Timing-vulnerability-in-DSA-signature-generation-CVE.patch new file mode 100644 index 0000000..a5d7611 --- /dev/null +++ b/patches/openssl-Timing-vulnerability-in-DSA-signature-generation-CVE.patch @@ -0,0 +1,109 @@ +From 8abfe72e8c1de1b95f50aa0d9134803b4d00070f Mon Sep 17 00:00:00 2001 +From: Pauli +Date: Wed, 24 Oct 2018 07:42:46 +1000 +Subject: [PATCH 2/3] Timing vulnerability in DSA signature generation + (CVE-2018-0734). + +Avoid a timing attack that leaks information via a side channel that +triggers when a BN is resized. Increasing the size of the BNs +prior to doing anything with them suppresses the attack. + +Thanks due to Samuel Weiser for finding and locating this. + +Reviewed-by: Bernd Edlinger +(Merged from https://github.com/openssl/openssl/pull/7486) + +(cherry picked from commit a9cfb8c2aa7254a4aa6a1716909e3f8cb78049b6) +--- + crypto/dsa/dsa_ossl.c | 28 +++++++++++++++------------- + 1 file changed, 15 insertions(+), 13 deletions(-) + +diff --git x/crypto/dsa/dsa_ossl.c y/crypto/dsa/dsa_ossl.c +index ca20811200..2dd2d7489a 100644 +--- x/crypto/dsa/dsa_ossl.c ++++ y/crypto/dsa/dsa_ossl.c +@@ -9,6 +9,7 @@ + + #include + #include "internal/cryptlib.h" ++#include "internal/bn_int.h" + #include + #include + #include "dsa_locl.h" +@@ -180,9 +181,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + { + BN_CTX *ctx = NULL; + BIGNUM *k, *kinv = NULL, *r = *rp; +- BIGNUM *l, *m; ++ BIGNUM *l; + int ret = 0; +- int q_bits; ++ int q_bits, q_words; + + if (!dsa->p || !dsa->q || !dsa->g) { + DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_MISSING_PARAMETERS); +@@ -191,8 +192,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + + k = BN_new(); + l = BN_new(); +- m = BN_new(); +- if (k == NULL || l == NULL || m == NULL) ++ if (k == NULL || l == NULL) + goto err; + + if (ctx_in == NULL) { +@@ -203,9 +203,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + + /* Preallocate space */ + q_bits = BN_num_bits(dsa->q); +- if (!BN_set_bit(k, q_bits) +- || !BN_set_bit(l, q_bits) +- || !BN_set_bit(m, q_bits)) ++ q_words = bn_get_top(dsa->q); ++ if (!bn_wexpand(k, q_words + 2) ++ || !bn_wexpand(l, q_words + 2)) + goto err; + + /* Get random k */ +@@ -240,14 +240,17 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + * small timing information leakage. We then choose the sum that is + * one bit longer than the modulus. + * +- * TODO: revisit the BN_copy aiming for a memory access agnostic +- * conditional copy. ++ * There are some concerns about the efficacy of doing this. More ++ * specificly refer to the discussion starting with: ++ * https://github.com/openssl/openssl/pull/7486#discussion_r228323705 ++ * The fix is to rework BN so these gymnastics aren't required. + */ + if (!BN_add(l, k, dsa->q) +- || !BN_add(m, l, dsa->q) +- || !BN_copy(k, BN_num_bits(l) > q_bits ? l : m)) ++ || !BN_add(k, l, dsa->q)) + goto err; + ++ BN_consttime_swap(BN_is_bit_set(l, q_bits), k, l, q_words + 2); ++ + if ((dsa)->meth->bn_mod_exp != NULL) { + if (!dsa->meth->bn_mod_exp(dsa, r, dsa->g, k, dsa->p, ctx, + dsa->method_mont_p)) +@@ -260,7 +263,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + if (!BN_mod(r, r, dsa->q, ctx)) + goto err; + +- /* Compute part of 's = inv(k) (m + xr) mod q' */ ++ /* Compute part of 's = inv(k) (m + xr) mod q' */ + if ((kinv = dsa_mod_inverse_fermat(k, dsa->q, ctx)) == NULL) + goto err; + +@@ -275,7 +278,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + BN_CTX_free(ctx); + BN_clear_free(k); + BN_clear_free(l); +- BN_clear_free(m); + return ret; + } + +-- +2.19.1 + diff --git a/patches/openssl-Timing-vulnerability-in-ECDSA-signature-generation-C.patch b/patches/openssl-Timing-vulnerability-in-ECDSA-signature-generation-C.patch new file mode 100644 index 0000000..807236d --- /dev/null +++ b/patches/openssl-Timing-vulnerability-in-ECDSA-signature-generation-C.patch @@ -0,0 +1,44 @@ +From b1d6d55ece1c26fa2829e2b819b038d7b6d692b4 Mon Sep 17 00:00:00 2001 +From: Pauli +Date: Fri, 26 Oct 2018 10:54:58 +1000 +Subject: [PATCH 3/3] Timing vulnerability in ECDSA signature generation + (CVE-2018-0735) + +Preallocate an extra limb for some of the big numbers to avoid a reallocation +that can potentially provide a side channel. + +Reviewed-by: Bernd Edlinger +(Merged from https://github.com/openssl/openssl/pull/7486) + +(cherry picked from commit 99540ec79491f59ed8b46b4edf130e17dc907f52) +--- + crypto/ec/ec_mult.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git x/crypto/ec/ec_mult.c y/crypto/ec/ec_mult.c +index 7e1b3650e7..0e0a5e1394 100644 +--- x/crypto/ec/ec_mult.c ++++ y/crypto/ec/ec_mult.c +@@ -206,8 +206,8 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r, + */ + cardinality_bits = BN_num_bits(cardinality); + group_top = bn_get_top(cardinality); +- if ((bn_wexpand(k, group_top + 1) == NULL) +- || (bn_wexpand(lambda, group_top + 1) == NULL)) { ++ if ((bn_wexpand(k, group_top + 2) == NULL) ++ || (bn_wexpand(lambda, group_top + 2) == NULL)) { + ECerr(EC_F_EC_SCALAR_MUL_LADDER, ERR_R_BN_LIB); + goto err; + } +@@ -244,7 +244,7 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r, + * k := scalar + 2*cardinality + */ + kbit = BN_is_bit_set(lambda, cardinality_bits); +- BN_consttime_swap(kbit, k, lambda, group_top + 1); ++ BN_consttime_swap(kbit, k, lambda, group_top + 2); + + group_top = bn_get_top(group->field); + if ((bn_wexpand(s->X, group_top) == NULL) +-- +2.19.1 + diff --git a/patches/openssl-android-shlib_variant.patch b/patches/openssl-android-shlib_variant.patch new file mode 100644 index 0000000..2c8c7db --- /dev/null +++ b/patches/openssl-android-shlib_variant.patch @@ -0,0 +1,11 @@ +--- x/Configurations/15-android.conf ++++ y/Configurations/15-android.conf +@@ -136,6 +136,8 @@ + bn_ops => sub { android_ndk()->{bn_ops} }, + bin_cflags => "-pie", + enable => [ ], ++ shlib_variant => '-gov', ++ shared_extension => '.so', + }, + "android-arm" => { + ################################################################ diff --git a/patches/openssl-fix-no-engine-build.patch b/patches/openssl-fix-no-engine-build.patch deleted file mode 100644 index c7b24ea..0000000 --- a/patches/openssl-fix-no-engine-build.patch +++ /dev/null @@ -1,75 +0,0 @@ -From aeae7469061c1675d651224789fc664d6809b0d9 Mon Sep 17 00:00:00 2001 -From: "Dr. Stephen Henson" -Date: Sat, 16 Jan 2016 16:11:34 +0000 -Subject: [PATCH] fix no-engine build - -Reviewed-by: Rich Salz -Reviewed-by: Richard Levitte ---- - crypto/ts/ts.h | 2 ++ - util/libeay.num | 4 ++-- - util/mk1mf.pl | 3 +-- - 3 files changed, 5 insertions(+), 4 deletions(-) - -diff --git x/crypto/ts/ts.h y/crypto/ts/ts.h -index 2daa1b2fb5..fc8c14b2d0 100644 ---- x/crypto/ts/ts.h -+++ y/crypto/ts/ts.h -@@ -737,9 +737,11 @@ EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); - const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); - int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, - TS_RESP_CTX *ctx); -+#ifndef OPENSSL_NO_ENGINE - int TS_CONF_set_crypto_device(CONF *conf, const char *section, - const char *device); - int TS_CONF_set_default_engine(const char *name); -+#endif - int TS_CONF_set_signer_cert(CONF *conf, const char *section, - const char *cert, TS_RESP_CTX *ctx); - int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, -diff --git x/util/libeay.num y/util/libeay.num -index fddfe1cbb2..a76424ceab 100755 ---- x/util/libeay.num -+++ y/util/libeay.num -@@ -3874,7 +3874,7 @@ b2i_PVK_bio 4250 EXIST::FUNCTION:RC4 - ASN1_UTCTIME_adj 4251 EXIST::FUNCTION: - TS_TST_INFO_new 4252 EXIST::FUNCTION: - EVP_MD_do_all_sorted 4253 EXIST::FUNCTION: --TS_CONF_set_default_engine 4254 EXIST::FUNCTION: -+TS_CONF_set_default_engine 4254 EXIST::FUNCTION:ENGINE - TS_ACCURACY_set_seconds 4255 EXIST::FUNCTION: - TS_TST_INFO_get_time 4256 EXIST::FUNCTION: - PKCS8_pkey_get0 4257 EXIST::FUNCTION: -@@ -4099,7 +4099,7 @@ EVP_PKEY_meth_find 4469 EXIST::FUNCTION: - EVP_PKEY_id 4470 EXIST::FUNCTION: - TS_TST_INFO_set_serial 4471 EXIST::FUNCTION: - a2i_GENERAL_NAME 4472 EXIST::FUNCTION: --TS_CONF_set_crypto_device 4473 EXIST::FUNCTION: -+TS_CONF_set_crypto_device 4473 EXIST::FUNCTION:ENGINE - EVP_PKEY_verify_init 4474 EXIST::FUNCTION: - TS_CONF_set_policies 4475 EXIST::FUNCTION: - ASN1_PCTX_new 4476 EXIST::FUNCTION: -diff --git x/util/mk1mf.pl y/util/mk1mf.pl -index 6b31496ed1..ccfb24ca55 100755 ---- x/util/mk1mf.pl -+++ y/util/mk1mf.pl -@@ -428,7 +428,6 @@ EOF - { - $extra_install .= <<"EOF" - \$(MKDIR) \"\$(INSTALLTOP)${o}lib${o}engines\" -- \$(CP) \$(E_SHLIB) \"\$(INSTALLTOP)${o}lib${o}engines\" - EOF - } - } -@@ -597,7 +596,7 @@ init: \$(TMP_D) \$(LIB_D) \$(INC_D) \$(INCO_D) \$(BIN_D) \$(TEST_D) headers - - headers: \$(HEADER) \$(EXHEADER) - --lib: \$(LIBS_DEP) \$(E_SHLIB) -+lib: \$(LIBS_DEP) - - exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep - --- -2.15.0 - diff --git a/patches/openssl_iOS.patch b/patches/openssl_iOS.patch deleted file mode 100644 index 83ba1cd..0000000 --- a/patches/openssl_iOS.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruN openssl-1.0.1j.orig/crypto/ui/ui_openssl.c openssl-1.0.1j/crypto/ui/ui_openssl.c ---- openssl-1.0.1j.orig/crypto/ui/ui_openssl.c 2014-10-15 14:53:39.000000000 +0200 -+++ openssl-1.0.1j/crypto/ui/ui_openssl.c 2014-11-05 13:10:13.574510723 +0100 -@@ -410,7 +410,7 @@ - return 1; - } - --static volatile sig_atomic_t intr_signal; -+static volatile int intr_signal; - #endif - - static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) diff --git a/patches/openssl_rsa_psk.patch b/patches/openssl_rsa_psk.patch deleted file mode 100644 index 80d3cad..0000000 --- a/patches/openssl_rsa_psk.patch +++ /dev/null @@ -1,917 +0,0 @@ -From e681bc2125a396ff34aab4c3f629683dd0ce28bb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= -Date: Thu, 23 Apr 2015 20:59:30 +0200 -Subject: [PATCH] Introduce TLS-RSA-PSK support - -Build on the existing PSK support and introduce RSA-PSK -(cf. RFC 4279, 5487). -Based on the original patch by Christian J. Dietrich. - -This work has been sponsored by Governikus GmbH & Co. KG. - -PR: 2464 ---- - doc/apps/ciphers.pod | 12 +++ - ssl/s3_clnt.c | 106 ++++++++++++++++++++---- - ssl/s3_lib.c | 206 +++++++++++++++++++++++++++++++++++++++++++++- - ssl/s3_srvr.c | 226 ++++++++++++++++++++++++++++++++++++++++++++++++--- - ssl/ssl.h | 2 + - ssl/ssl_ciph.c | 9 +- - ssl/ssl_lib.c | 6 ++ - ssl/ssl_locl.h | 2 + - ssl/tls1.h | 36 ++++++++ - 9 files changed, 572 insertions(+), 33 deletions(-) - -diff --git x/doc/apps/ciphers.pod y/doc/apps/ciphers.pod -index fa16124d08..45db06c168 100644 ---- x/doc/apps/ciphers.pod -+++ y/doc/apps/ciphers.pod -@@ -585,10 +585,22 @@ Note: these ciphers can also be used in SSL v3. - - =head2 Pre shared keying (PSK) cipheruites - -+ TLS_RSA_PSK_WITH_RC4_128_SHA RSA-PSK-RC4-SHA -+ TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA RSA-PSK-3DES-EDE-CBC-SHA -+ TLS_RSA_PSK_WITH_AES_128_CBC_SHA RSA-PSK-AES128-CBC-SHA -+ TLS_RSA_PSK_WITH_AES_256_CBC_SHA RSA-PSK-AES256-CBC-SHA -+ TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 RSA-PSK-AES128-CBC-SHA256 -+ TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 RSA-PSK-AES256-CBC-SHA384 -+ TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 RSA-PSK-AES128-GCM-SHA256 -+ TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 RSA-PSK-AES256-GCM-SHA384 - TLS_PSK_WITH_RC4_128_SHA PSK-RC4-SHA - TLS_PSK_WITH_3DES_EDE_CBC_SHA PSK-3DES-EDE-CBC-SHA - TLS_PSK_WITH_AES_128_CBC_SHA PSK-AES128-CBC-SHA - TLS_PSK_WITH_AES_256_CBC_SHA PSK-AES256-CBC-SHA -+ TLS_PSK_WITH_AES_128_CBC_SHA256 PSK-AES128-CBC-SHA256 -+ TLS_PSK_WITH_AES_256_CBC_SHA384 PSK-AES256-CBC-SHA384 -+ TLS_PSK_WITH_AES_128_GCM_SHA256 PSK-AES128-GCM-SHA256 -+ TLS_PSK_WITH_AES_256_GCM_SHA384 PSK-AES256-GCM-SHA384 - - =head2 Deprecated SSL v2.0 cipher suites. - -diff --git x/ssl/s3_clnt.c y/ssl/s3_clnt.c -index 5b8b2da59f..ae0d4d840c 100644 ---- x/ssl/s3_clnt.c -+++ y/ssl/s3_clnt.c -@@ -342,7 +342,7 @@ int ssl3_connect(SSL *s) - } - #endif - /* Check if it is anon DH/ECDH, SRP auth */ -- /* or PSK */ -+ /* or plain PSK */ - if (! - (s->s3->tmp. - new_cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP)) -@@ -1424,9 +1424,9 @@ int ssl3_get_key_exchange(SSL *s) - } - #ifndef OPENSSL_NO_PSK - /* -- * In plain PSK ciphersuite, ServerKeyExchange can be omitted if no -- * identity hint is sent. Set session->sess_cert anyway to avoid -- * problems later. -+ * In PSK ciphersuites, ServerKeyExchange can be omitted if no -+ * identity hint is sent. Set session->sess_cert for plain PSK -+ * anyway to avoid problems later. - */ - if (alg_k & SSL_kPSK) { - s->session->sess_cert = ssl_sess_cert_new(); -@@ -1471,7 +1471,12 @@ int ssl3_get_key_exchange(SSL *s) - al = SSL_AD_DECODE_ERROR; - - #ifndef OPENSSL_NO_PSK -- if (alg_k & SSL_kPSK) { -+ /* handle PSK identity hint */ -+ if (alg_k & SSL_kPSK -+#ifndef OPENSSL_NO_RSA -+ || alg_k & SSL_kRSAPSK -+#endif -+ ) { - param_len = 2; - if (param_len > n) { - SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, SSL_R_LENGTH_TOO_SHORT); -@@ -2041,7 +2046,7 @@ int ssl3_get_key_exchange(SSL *s) - } - } else { - /* aNULL, aSRP or kPSK do not need public keys */ -- if (!(alg_a & (SSL_aNULL | SSL_aSRP)) && !(alg_k & SSL_kPSK)) { -+ if (!(alg_a & (SSL_aNULL | SSL_aSRP)) && !(alg_k & SSL_kPSK) && !(alg_k & SSL_kRSAPSK)) { - /* Might be wrong key type, check it */ - if (ssl3_check_cert_and_algorithm(s)) - /* Otherwise this shouldn't happen */ -@@ -3130,7 +3135,11 @@ int ssl3_send_client_key_exchange(SSL *s) - } - #endif - #ifndef OPENSSL_NO_PSK -- else if (alg_k & SSL_kPSK) { -+ else if (alg_k & SSL_kPSK -+#ifndef OPENSSL_NO_RSA -+ || alg_k & SSL_kRSAPSK -+#endif -+ ) { - /* - * The callback needs PSK_MAX_IDENTITY_LEN + 1 bytes to return a - * \0-terminated identity. The last byte is for us for simulating -@@ -3138,8 +3147,8 @@ int ssl3_send_client_key_exchange(SSL *s) - */ - char identity[PSK_MAX_IDENTITY_LEN + 2]; - size_t identity_len; -- unsigned char *t = NULL; - unsigned char psk_or_pre_ms[PSK_MAX_PSK_LEN * 2 + 4]; -+ unsigned char *t = psk_or_pre_ms; - unsigned int pre_ms_len = 0, psk_len = 0; - int psk_err = 1; - -@@ -3171,14 +3180,34 @@ int ssl3_send_client_key_exchange(SSL *s) - ERR_R_INTERNAL_ERROR); - goto psk_err; - } -- /* create PSK pre_master_secret */ -- pre_ms_len = 2 + psk_len + 2 + psk_len; -- t = psk_or_pre_ms; -- memmove(psk_or_pre_ms + psk_len + 4, psk_or_pre_ms, psk_len); -- s2n(psk_len, t); -- memset(t, 0, psk_len); -- t += psk_len; -- s2n(psk_len, t); -+ -+ if (alg_k & SSL_kPSK) { -+ /* create PSK pre_master_secret */ -+ pre_ms_len = 2 + psk_len + 2 + psk_len; -+ memmove(psk_or_pre_ms + psk_len + 4, psk_or_pre_ms, psk_len); -+ s2n(psk_len, t); -+ memset(t, 0, psk_len); -+ t += psk_len; -+ s2n(psk_len, t); -+ } -+#ifndef OPENSSL_NO_RSA -+ else if (alg_k & SSL_kRSAPSK) { -+ const unsigned int pre_ms_prefix = 48; -+ -+ pre_ms_len = 2 + 2 + 46 + 2 + psk_len; -+ memmove(psk_or_pre_ms + 52, psk_or_pre_ms, psk_len); -+ s2n(pre_ms_prefix, t); -+ -+ psk_or_pre_ms[2] = s->client_version >> 8; -+ psk_or_pre_ms[3] = s->client_version & 0xff; -+ t += 2; -+ -+ if (RAND_bytes(psk_or_pre_ms + 4, 46) <= 0) -+ goto psk_err; -+ t += 46; -+ s2n(psk_len, t); -+ } -+#endif - - if (s->session->psk_identity_hint != NULL) - OPENSSL_free(s->session->psk_identity_hint); -@@ -3208,8 +3237,41 @@ int ssl3_send_client_key_exchange(SSL *s) - pre_ms_len); - s2n(identity_len, p); - memcpy(p, identity, identity_len); -+ p += identity_len; - n = 2 + identity_len; -+ -+#ifndef OPENSSL_NO_RSA -+ if (alg_k & SSL_kRSAPSK) { -+ RSA *rsa; -+ int enc_n; -+ -+ if (s->session->sess_cert->peer_rsa_tmp != NULL) { -+ rsa = s->session->sess_cert->peer_rsa_tmp; -+ } else { -+ pkey = X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); -+ if ((pkey == NULL) || (pkey->type != EVP_PKEY_RSA) || (pkey->pkey.rsa == NULL)) { -+ SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR); -+ goto psk_err; -+ } -+ rsa = pkey->pkey.rsa; -+ EVP_PKEY_free(pkey); -+ } -+ -+ enc_n = RSA_public_encrypt(48, psk_or_pre_ms + 2, p + 2, rsa, RSA_PKCS1_PADDING); -+ if (enc_n <= 0) { -+ SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, SSL_R_BAD_RSA_ENCRYPT); -+ goto psk_err; -+ } -+ -+ n += enc_n; -+ -+ s2n(enc_n, p); -+ n += 2; -+ } -+#endif -+ - psk_err = 0; -+ - psk_err: - OPENSSL_cleanse(identity, sizeof(identity)); - OPENSSL_cleanse(psk_or_pre_ms, sizeof(psk_or_pre_ms)); -@@ -3580,7 +3642,11 @@ int ssl3_check_cert_and_algorithm(SSL *s) - } - #endif - #ifndef OPENSSL_NO_RSA -- if (alg_k & SSL_kRSA) { -+ if (alg_k & SSL_kRSA -+#ifndef OPENSSL_NO_PSK -+ || alg_k & SSL_kRSAPSK -+#endif -+ ) { - if (!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && - !has_bits(i, EVP_PK_RSA | EVP_PKT_ENC)) { - SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, -@@ -3647,7 +3713,11 @@ int ssl3_check_cert_and_algorithm(SSL *s) - if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && - pkey_bits > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) { - #ifndef OPENSSL_NO_RSA -- if (alg_k & SSL_kRSA) { -+ if (alg_k & SSL_kRSA -+#ifndef OPENSSL_NO_PSK -+ || alg_k & SSL_kRSAPSK -+#endif -+ ) { - if (rsa == NULL) { - SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, - SSL_R_MISSING_EXPORT_TMP_RSA_KEY); -diff --git x/ssl/s3_lib.c y/ssl/s3_lib.c -index 1014a3fce1..0187d508a1 100644 ---- x/ssl/s3_lib.c -+++ y/ssl/s3_lib.c -@@ -1765,6 +1765,74 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[] = { - 256, - 256, - }, -+ -+ -+#ifndef OPENSSL_NO_RSA -+ /* RSA-PSK ciphersuites from RFC4279 */ -+ /* Cipher 92 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA, -+ TLS1_CK_RSA_PSK_WITH_RC4_128_SHA, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_RC4, -+ SSL_SHA1, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_MEDIUM, -+ SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher 93 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA, -+ TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_3DES, -+ SSL_SHA1, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, -+ 112, -+ 168, -+ }, -+ -+ /* Cipher 94 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA, -+ TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES128, -+ SSL_SHA1, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher 95 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA, -+ TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES256, -+ SSL_SHA1, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF, -+ 256, -+ 256, -+ }, -+#endif /* OPENSSL_NO_RSA */ - #endif /* OPENSSL_NO_PSK */ - - #ifndef OPENSSL_NO_SEED -@@ -2077,6 +2145,142 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[] = { - 0}, - #endif - -+#ifndef OPENSSL_NO_PSK -+ /* PSK ciphersuites from RFC5487 */ -+ -+ /* Cipher A8 */ -+ { -+ 1, -+ TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256, -+ TLS1_CK_PSK_WITH_AES_128_GCM_SHA256, -+ SSL_kPSK, -+ SSL_aPSK, -+ SSL_AES128GCM, -+ SSL_AEAD, -+ SSL_TLSV1_2, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher A9 */ -+ { -+ 1, -+ TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384, -+ TLS1_CK_PSK_WITH_AES_256_GCM_SHA384, -+ SSL_kPSK, -+ SSL_aPSK, -+ SSL_AES256GCM, -+ SSL_AEAD, -+ SSL_TLSV1_2, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, -+ 256, -+ 256, -+ }, -+ -+ #ifndef OPENSSL_NO_RSA -+ /* Cipher AC */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256, -+ TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES128GCM, -+ SSL_AEAD, -+ SSL_TLSV1_2, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher AD */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384, -+ TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES256GCM, -+ SSL_AEAD, -+ SSL_TLSV1_2, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, -+ 256, -+ 256, -+ }, -+#endif /* OPENSSL_NO_RSA */ -+ -+ /* Cipher AE */ -+ { -+ 1, -+ TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256, -+ TLS1_CK_PSK_WITH_AES_128_CBC_SHA256, -+ SSL_kPSK, -+ SSL_aPSK, -+ SSL_AES128, -+ SSL_SHA256, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher AF */ -+ { -+ 1, -+ TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384, -+ TLS1_CK_PSK_WITH_AES_256_CBC_SHA384, -+ SSL_kPSK, -+ SSL_aPSK, -+ SSL_AES256, -+ SSL_SHA384, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, -+ 256, -+ 256, -+ }, -+ -+ #ifndef OPENSSL_NO_RSA -+ /* Cipher B6 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256, -+ TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES128, -+ SSL_SHA256, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256, -+ 128, -+ 128, -+ }, -+ -+ /* Cipher B7 */ -+ { -+ 1, -+ TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384, -+ TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384, -+ SSL_kRSAPSK, -+ SSL_aRSA, -+ SSL_AES256, -+ SSL_SHA384, -+ SSL_TLSV1, -+ SSL_NOT_EXP|SSL_HIGH, -+ SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384, -+ 256, -+ 256, -+ }, -+#endif /* OPENSSL_NO_RSA */ -+#endif /* OPENSSL_NO_PSK */ -+ - #ifndef OPENSSL_NO_ECDH - /* Cipher C001 */ - { -@@ -4169,7 +4373,7 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt, - #endif /* OPENSSL_NO_KRB5 */ - #ifndef OPENSSL_NO_PSK - /* with PSK there must be server callback set */ -- if ((alg_k & SSL_kPSK) && s->psk_server_callback == NULL) -+ if ((alg_k & SSL_kPSK || alg_k & SSL_kRSAPSK) && s->psk_server_callback == NULL) - continue; - #endif /* OPENSSL_NO_PSK */ - -diff --git x/ssl/s3_srvr.c y/ssl/s3_srvr.c -index 0fb4845d44..3498836e7d 100644 ---- x/ssl/s3_srvr.c -+++ y/ssl/s3_srvr.c -@@ -467,19 +467,22 @@ int ssl3_accept(SSL *s) - - /* - * only send if a DH key exchange, fortezza or RSA but we have a -- * sign only certificate PSK: may send PSK identity hints For -- * ECC ciphersuites, we send a serverKeyExchange message only if -+ * sign only certificate -+ * -+ * PSK|RSAPSK: may send PSK identity hints. -+ * Send ServerKeyExchange if PSK identity hint is provided. -+ * -+ * For ECC ciphersuites, we send a serverKeyExchange message only if - * the cipher suite is either ECDH-anon or ECDHE. In other cases, - * the server certificate contains the server's public key for - * key exchange. - */ - if (0 -- /* -- * PSK: send ServerKeyExchange if PSK identity hint if -- * provided -- */ - #ifndef OPENSSL_NO_PSK -- || ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint) -+ || (alg_k & SSL_kPSK && s->ctx->psk_identity_hint) -+#ifndef OPENSSL_NO_RSA -+ || (alg_k & SSL_kRSAPSK && s->ctx->psk_identity_hint) -+#endif - #endif - #ifndef OPENSSL_NO_SRP - /* SRP: send ServerKeyExchange */ -@@ -535,11 +538,14 @@ int ssl3_accept(SSL *s) - (s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5) || - /* don't request certificate for SRP auth */ - (s->s3->tmp.new_cipher->algorithm_auth & SSL_aSRP) -+#ifndef OPENSSL_NO_PSK - /* -- * With normal PSK Certificates and Certificate Requests -+ * With normal PSK, Certificates and Certificate Requests - * are omitted - */ -- || (s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)) { -+ || (s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK) -+#endif -+ ) { - /* no cert request */ - skip = 1; - s->s3->tmp.cert_request = 0; -@@ -1835,7 +1841,11 @@ int ssl3_send_server_key_exchange(SSL *s) - } else - #endif /* !OPENSSL_NO_ECDH */ - #ifndef OPENSSL_NO_PSK -- if (type & SSL_kPSK) { -+ if (type & SSL_kPSK -+#ifndef OPENSSL_NO_RSA -+ || type & SSL_kRSAPSK -+#endif -+ ) { - /* - * reserve size for record length and PSK identity hint - */ -@@ -1884,7 +1894,8 @@ int ssl3_send_server_key_exchange(SSL *s) - } - - if (!(s->s3->tmp.new_cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP)) -- && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)) { -+ && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK) -+ && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kRSAPSK)) { - if ((pkey = ssl_get_sign_pkey(s, s->s3->tmp.new_cipher, &md)) - == NULL) { - al = SSL_AD_DECODE_ERROR; -@@ -1899,6 +1910,12 @@ int ssl3_send_server_key_exchange(SSL *s) - } else { - pkey = NULL; - kn = 0; -+ /* Allow space for signature algorithm */ -+ if (SSL_USE_SIGALGS(s)) { -+ kn += 4; -+ const unsigned char *sig; -+ kn += tls12_get_psigalgs(s, 1, &sig); -+ } - } - - if (!BUF_MEM_grow_clean(buf, n + SSL_HM_HEADER_LENGTH(s) + kn)) { -@@ -1958,7 +1975,11 @@ int ssl3_send_server_key_exchange(SSL *s) - #endif - - #ifndef OPENSSL_NO_PSK -- if (type & SSL_kPSK) { -+ if (type & SSL_kPSK -+#ifndef OPENSSL_NO_RSA -+ || type & SSL_kRSAPSK -+#endif -+ ) { - /* copy PSK identity hint */ - s2n(strlen(s->ctx->psk_identity_hint), p); - strncpy((char *)p, s->ctx->psk_identity_hint, -@@ -1974,7 +1995,11 @@ int ssl3_send_server_key_exchange(SSL *s) - * points to the space at the end. - */ - #ifndef OPENSSL_NO_RSA -- if (pkey->type == EVP_PKEY_RSA && !SSL_USE_SIGALGS(s)) { -+ if (pkey->type == EVP_PKEY_RSA && !SSL_USE_SIGALGS(s) -+#ifndef OPENSSL_NO_PSK -+ && !(type & SSL_kRSAPSK) -+#endif -+ ) { - q = md_buf; - j = 0; - for (num = 2; num > 0; num--) { -@@ -2870,6 +2895,181 @@ int ssl3_get_client_key_exchange(SSL *s) - goto f_err; - } else - #endif -+#ifndef OPENSSL_NO_RSA -+#ifndef OPENSSL_NO_PSK -+ if (alg_k & SSL_kRSAPSK) { -+ unsigned char rand_premaster_secret[SSL_MAX_MASTER_KEY_LENGTH]; -+ int decrypt_len; -+ unsigned char decrypt_good, version_good; -+ unsigned char *orig_p = p; -+ -+ unsigned int psk_len; -+ -+ const unsigned int pre_master_secret_prefix = 48; -+ unsigned char psk_or_pre_ms[PSK_MAX_PSK_LEN * 2 + 4]; -+ unsigned int pre_ms_len; -+ unsigned char *t = psk_or_pre_ms; -+ -+ char identity[PSK_MAX_IDENTITY_LEN + 1]; -+ int identity_len; -+ -+ int epms_len; -+ int psk_err = 1; -+ -+ /* No server callback? Bail out */ -+ if (s->psk_server_callback == NULL) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, SSL_R_PSK_NO_SERVER_CB); -+ goto f_err; -+ } -+ -+ /* FIX THIS UP EAY EAY EAY EAY */ -+ if (s->s3->tmp.use_rsa_tmp) { -+ if ((s->cert != NULL) && (s->cert->rsa_tmp != NULL)) -+ rsa=s->cert->rsa_tmp; -+ /* -+ * Don't do a callback because rsa_tmp should be sent already -+ */ -+ if (rsa == NULL) { -+ al=SSL_AD_HANDSHAKE_FAILURE; -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_MISSING_TMP_RSA_PKEY); -+ goto f_err; -+ } -+ } else { -+ pkey=s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey; -+ if ((pkey == NULL) || -+ (pkey->type != EVP_PKEY_RSA) || (pkey->pkey.rsa == NULL)) { -+ al=SSL_AD_HANDSHAKE_FAILURE; -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_MISSING_RSA_CERTIFICATE); -+ goto f_err; -+ } -+ rsa = pkey->pkey.rsa; -+ } -+ -+ /* Extract the PSK identity */ -+ if (n < (2 + 2)) { /* 2 bytes for the identity len, 2 bytes for the epms len */ -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_LENGTH_MISMATCH); -+ goto f_err; -+ } -+ -+ n2s(p, identity_len); -+ -+ if (identity_len > PSK_MAX_IDENTITY_LEN) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_DATA_LENGTH_TOO_LONG); -+ goto f_err; -+ } -+ -+ if (n < (2 + identity_len + 2)) { /* as above, plus the identity len */ -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_LENGTH_MISMATCH); -+ goto f_err; -+ } -+ -+ memset(identity, 0, sizeof(identity)); -+ memcpy(identity, p, identity_len); -+ p += identity_len; -+ -+ /* fill the pre master secret with random bytes */ -+ if (RAND_pseudo_bytes(psk_or_pre_ms, sizeof(psk_or_pre_ms)) <= 0) -+ goto err; -+ -+ /* read the psk (into the beginning of the psk_or_pre_ms buffer */ -+ psk_len = s->psk_server_callback(s, identity, psk_or_pre_ms, sizeof(psk_or_pre_ms)); -+ -+ if (psk_len > PSK_MAX_PSK_LEN) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ ERR_R_INTERNAL_ERROR); -+ goto rsapsk_err; -+ } else if (psk_len == 0) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_PSK_IDENTITY_NOT_FOUND); -+ al=SSL_AD_UNKNOWN_PSK_IDENTITY; -+ goto rsapsk_err; -+ } -+ -+ /* move on onto decoding the 48 encrypted bytes */ -+ -+ /* how many bytes to decode? */ -+ n2s(p, epms_len); -+ -+ if (n != (2 + identity_len + 2 + epms_len)) { /* as above */ -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, -+ SSL_R_LENGTH_MISMATCH); -+ goto rsapsk_err; -+ } -+ -+ /* decode in place into p */ -+ decrypt_len = RSA_private_decrypt(epms_len, p, p, rsa, RSA_PKCS1_PADDING); -+ decrypt_good = constant_time_eq_int_8(decrypt_len, 48); -+ -+ /* check the version sent by the client */ -+ version_good = constant_time_eq_8(p[0], (unsigned)(s->client_version>>8)); -+ version_good &= constant_time_eq_8(p[1], (unsigned)(s->client_version&0xff)); -+ -+ decrypt_good &= version_good; -+ -+ for (i = 0; i < (int) sizeof(rand_premaster_secret); i++) -+ p[i] = constant_time_select_8(decrypt_good, p[i], rand_premaster_secret[i]); -+ -+ /* -+ * build the pre master secret. it should look like this: -+ * 48 (2b) + version (2b) + random (46b) + psk_len (2b) + psk -+ */ -+ pre_ms_len = 2 + 2 + 46 + 2 + psk_len; -+ -+ /* the PSK is at the beginning of psk_or_pre_ms, move at the end */ -+ memmove(psk_or_pre_ms + 52, psk_or_pre_ms, psk_len); -+ -+ /* fill the "48" in */ -+ s2n(pre_master_secret_prefix, t); -+ -+ /* fill the 2 bytes version + the 46 random bytes (decrypted earlier with RSA) */ -+ memcpy(t, p, 48); -+ t += 48; -+ -+ /* fill the psk_len */ -+ s2n(psk_len, t); -+ -+ /* psk_or_pre_ms now contains the pre master secret */ -+ -+ /* set the identity in the session */ -+ if (s->session->psk_identity != NULL) -+ OPENSSL_free(s->session->psk_identity); -+ -+ s->session->psk_identity = BUF_strdup(identity); -+ OPENSSL_cleanse(identity, sizeof(identity)); -+ -+ if (s->session->psk_identity == NULL) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE); -+ goto rsapsk_err; -+ } -+ -+ /* set the identity hint in the session */ -+ if (s->session->psk_identity_hint != NULL) -+ OPENSSL_free(s->session->psk_identity_hint); -+ s->session->psk_identity_hint = BUF_strdup(s->ctx->psk_identity_hint); -+ if (s->ctx->psk_identity_hint != NULL && s->session->psk_identity_hint == NULL) { -+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE); -+ goto rsapsk_err; -+ } -+ -+ /* set the premaster key */ -+ s->session->master_key_length = -+ s->method->ssl3_enc->generate_master_secret(s, -+ s->session->master_key, -+ psk_or_pre_ms, pre_ms_len); -+ -+ psk_err = 0; -+ rsapsk_err: -+ OPENSSL_cleanse(orig_p, n); /* clear the whole payload area */ -+ if (psk_err != 0) -+ goto f_err; -+ } else -+#endif -+#endif - #ifndef OPENSSL_NO_SRP - if (alg_k & SSL_kSRP) { - int param_len; -diff --git x/ssl/ssl.h y/ssl/ssl.h -index 90aeb0ce4e..78cf2212ed 100644 ---- x/ssl/ssl.h -+++ y/ssl/ssl.h -@@ -254,6 +254,7 @@ extern "C" { - # define SSL_TXT_kEECDH "kEECDH" - # define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ - # define SSL_TXT_kPSK "kPSK" -+# define SSL_TXT_kRSAPSK "kRSAPSK" - # define SSL_TXT_kGOST "kGOST" - # define SSL_TXT_kSRP "kSRP" - -@@ -282,6 +283,7 @@ extern "C" { - # define SSL_TXT_ECDSA "ECDSA" - # define SSL_TXT_KRB5 "KRB5" - # define SSL_TXT_PSK "PSK" -+# define SSL_TXT_RSAPSK "RSAPSK" - # define SSL_TXT_SRP "SRP" - - # define SSL_TXT_DES "DES" -diff --git x/ssl/ssl_ciph.c y/ssl/ssl_ciph.c -index ccdf00fa1b..19c4ac0656 100644 ---- x/ssl/ssl_ciph.c -+++ y/ssl/ssl_ciph.c -@@ -263,6 +263,7 @@ static const SSL_CIPHER cipher_aliases[] = { - 0, 0, 0}, - - {0, SSL_TXT_kPSK, 0, SSL_kPSK, 0, 0, 0, 0, 0, 0, 0, 0}, -+ {0, SSL_TXT_kRSAPSK, 0, SSL_kRSAPSK, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, SSL_TXT_kSRP, 0, SSL_kSRP, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, SSL_TXT_kGOST, 0, SSL_kGOST, 0, 0, 0, 0, 0, 0, 0, 0}, - -@@ -294,6 +295,7 @@ static const SSL_CIPHER cipher_aliases[] = { - {0, SSL_TXT_ADH, 0, SSL_kEDH, SSL_aNULL, 0, 0, 0, 0, 0, 0, 0}, - {0, SSL_TXT_AECDH, 0, SSL_kEECDH, SSL_aNULL, 0, 0, 0, 0, 0, 0, 0}, - {0, SSL_TXT_PSK, 0, SSL_kPSK, SSL_aPSK, 0, 0, 0, 0, 0, 0, 0}, -+ {0, SSL_TXT_RSAPSK, 0, SSL_kRSAPSK, SSL_aRSA, 0, 0, 0, 0, 0, 0, 0}, - {0, SSL_TXT_SRP, 0, SSL_kSRP, 0, 0, 0, 0, 0, 0, 0, 0}, - - /* symmetric encryption aliases */ -@@ -756,7 +758,7 @@ static void ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, - *auth |= SSL_aECDH; - #endif - #ifdef OPENSSL_NO_PSK -- *mkey |= SSL_kPSK; -+ *mkey |= SSL_kPSK | SSL_kRSAPSK; - *auth |= SSL_aPSK; - #endif - #ifdef OPENSSL_NO_SRP -@@ -1555,6 +1557,8 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method, STACK - */ - ssl_cipher_apply_rule(0, SSL_kRSA, 0, 0, 0, 0, 0, CIPHER_ORD, -1, &head, - &tail); -+ ssl_cipher_apply_rule(0, SSL_kRSAPSK, 0, 0, 0, 0, 0, CIPHER_ORD, -1, &head, -+ &tail); - ssl_cipher_apply_rule(0, SSL_kPSK, 0, 0, 0, 0, 0, CIPHER_ORD, -1, &head, - &tail); - ssl_cipher_apply_rule(0, SSL_kKRB5, 0, 0, 0, 0, 0, CIPHER_ORD, -1, &head, -@@ -1731,6 +1735,9 @@ char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) - case SSL_kPSK: - kx = "PSK"; - break; -+ case SSL_kRSAPSK: -+ kx = "RSAPSK"; -+ break; - case SSL_kSRP: - kx = "SRP"; - break; -diff --git x/ssl/ssl_lib.c y/ssl/ssl_lib.c -index 3539f4b8d2..df6a45bdc4 100644 ---- x/ssl/ssl_lib.c -+++ y/ssl/ssl_lib.c -@@ -2442,8 +2442,14 @@ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher) - - #ifndef OPENSSL_NO_PSK - mask_k |= SSL_kPSK; -+#ifndef OPENSSL_NO_RSA -+ mask_k |= SSL_kRSAPSK; -+#endif - mask_a |= SSL_aPSK; - emask_k |= SSL_kPSK; -+#ifndef OPENSSL_NO_RSA -+ emask_k |= SSL_kRSAPSK; -+#endif - emask_a |= SSL_aPSK; - #endif - -diff --git x/ssl/ssl_locl.h y/ssl/ssl_locl.h -index aeffc00634..25b9f1d5b1 100644 ---- x/ssl/ssl_locl.h -+++ y/ssl/ssl_locl.h -@@ -314,6 +314,8 @@ - # define SSL_kGOST 0x00000200L - /* SRP */ - # define SSL_kSRP 0x00000400L -+/* RSA PSK */ -+# define SSL_kRSAPSK 0x00000800L - - /* Bits for algorithm_auth (server authentication) */ - /* RSA auth */ -diff --git x/ssl/tls1.h y/ssl/tls1.h -index dd1d8c109e..e04e7ddabc 100644 ---- x/ssl/tls1.h -+++ y/ssl/tls1.h -@@ -410,6 +410,24 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) - # define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C - # define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D - -+/* PSK ciphersuites from 5487 */ -+# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 -+# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 -+# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE -+# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF -+ -+/* RSA-PSK ciphersuites from 4279 */ -+# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 -+# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 -+# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 -+# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 -+ -+/* RSA-PSK ciphersuites from 5487 */ -+# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC -+# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD -+# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 -+# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 -+ - /* - * Additional TLS ciphersuites from expired Internet Draft - * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if -@@ -629,6 +647,24 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) - # define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" - # define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" - -+/* PSK ciphersuites from RFC 5487 */ -+# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" -+# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" -+# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" -+# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" -+ -+/* RSA-PSK ciphersuites from RFC 4279 */ -+# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" -+# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" -+# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" -+# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" -+ -+/* RSA-PSK ciphersuites from RFC 5487 */ -+# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" -+# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" -+# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" -+# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" -+ - /* SRP ciphersuite from RFC 5054 */ - # define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" - # define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" --- -2.15.0 - diff --git a/patches/qt-Add-IsoDep-to-the-techList-on-Android.patch b/patches/qt-Add-IsoDep-to-the-techList-on-Android.patch index 04b5938..4446aa2 100644 --- a/patches/qt-Add-IsoDep-to-the-techList-on-Android.patch +++ b/patches/qt-Add-IsoDep-to-the-techList-on-Android.patch @@ -1,4 +1,4 @@ -From e06d2d0d163501fdb0926175d7c539c7bb413d70 Mon Sep 17 00:00:00 2001 +From 1d9b03157657e398a99f3f183bb7399b8905eb55 Mon Sep 17 00:00:00 2001 From: Lars Schmertmann Date: Wed, 22 Nov 2017 07:35:56 +0100 Subject: Add IsoDep to the techList on Android @@ -21,5 +21,5 @@ index 345b87d3..a1ae5c37 100644 {"android.nfc.tech.NdefFormatable"} }; -- -2.14.2 +2.18.0 diff --git a/patches/qt-Add-work-around-for-freebsd-build.patch b/patches/qt-Add-work-around-for-freebsd-build.patch new file mode 100644 index 0000000..80c02d2 --- /dev/null +++ b/patches/qt-Add-work-around-for-freebsd-build.patch @@ -0,0 +1,27 @@ +From 9e482ce286ad39677e64392e0ca18afc4cf5396c Mon Sep 17 00:00:00 2001 +From: Lars Schmertmann +Date: Fri, 13 Apr 2018 08:22:18 +0200 +Subject: [PATCH] Add work-around for freebsd build + +Change-Id: I14e66e072f9667479815693e3dbbac71385797e7 +Task-number: QTBUG-65425 +--- + qmake/Makefile.unix | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git x/qtbase/qmake/Makefile.unix y/qtbase/qmake/Makefile.unix +index 426387f0c2..b785127ed2 100644 +--- x/qtbase/qmake/Makefile.unix ++++ y/qtbase/qmake/Makefile.unix +@@ -269,7 +269,7 @@ qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp + $(CXX) -c -o $@ $(CXXFLAGS) -DQT_BUILD_QMAKE_BOOTSTRAP $< + + qlibraryinfo_final.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(BUILD_PATH)/src/corelib/global/qconfig.cpp +- $(CXX) -c -o $@ $(CXXFLAGS) $< ++ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp + + qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp + $(CXX) -c -o $@ $(CXXFLAGS) $< +-- +2.17.0 + diff --git a/patches/qt-Android-Fix-crash.patch b/patches/qt-Android-Fix-crash.patch new file mode 100644 index 0000000..e9b4415 --- /dev/null +++ b/patches/qt-Android-Fix-crash.patch @@ -0,0 +1,30 @@ +From ca8779363fd30a1b8fd80ce4ebacc4741b041c76 Mon Sep 17 00:00:00 2001 +From: BogDan Vatra +Date: Tue, 20 Mar 2018 10:36:43 +0200 +Subject: [PATCH] Android: Fix crash + +Android doesn't like nor use RTLD_NODELETE + +Tasnk-number: QTBUG-64654 +Change-Id: I2d884bbf22a681cca592942eba84ba97327ba974 +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + src/corelib/plugin/qlibrary_unix.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git x/qtbase/src/corelib/plugin/qlibrary_unix.cpp y/qtbase/src/corelib/plugin/qlibrary_unix.cpp +index 23b9ad6434..296af9da7a 100644 +--- x/qtbase/src/corelib/plugin/qlibrary_unix.cpp ++++ y/qtbase/src/corelib/plugin/qlibrary_unix.cpp +@@ -155,7 +155,7 @@ bool QLibraryPrivate::load_sys() + // Do not unload the library during dlclose(). Consequently, the + // library's specific static variables are not reinitialized if the + // library is reloaded with dlopen() at a later time. +-#ifdef RTLD_NODELETE ++#if defined(RTLD_NODELETE) && !defined(Q_OS_ANDROID) + if (loadHints & QLibrary::PreventUnloadHint) { + dlFlags |= RTLD_NODELETE; + } +-- +2.19.1 + diff --git a/patches/qt-Android-fix-compile-with-NDK-r18.patch b/patches/qt-Android-fix-compile-with-NDK-r18.patch new file mode 100644 index 0000000..4fcd09e --- /dev/null +++ b/patches/qt-Android-fix-compile-with-NDK-r18.patch @@ -0,0 +1,37 @@ +From 48789f354ffe99aa28c08f55240e0b0a4deaa377 Mon Sep 17 00:00:00 2001 +From: BogDan Vatra +Date: Mon, 1 Oct 2018 15:46:46 +0300 +Subject: [PATCH] Android: fix compile with NDK r18+ + +In NDK r18, libc++.so was renamed to libc++.so.XX where XX is the Android +API level. + +[ChangeLog][Android] Fixed build issue with NDK r18+. + +Task-number: QTBUG-70631 +Task-number: QTBUG-70779 +Change-Id: Id0d2955648197e3054e3c69263b5a90d57964f6c +--- + mkspecs/android-clang/qmake.conf | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git x/qtbase/mkspecs/android-clang/qmake.conf y/qtbase/mkspecs/android-clang/qmake.conf +index b665000d00..1f5e690329 100644 +--- x/qtbase/mkspecs/android-clang/qmake.conf ++++ y/qtbase/mkspecs/android-clang/qmake.conf +@@ -40,7 +40,11 @@ QMAKE_CFLAGS += -DANDROID_HAS_WSTRING --sysroot=$$NDK_ROOT/sysroot \ + ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH + + ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++_shared.so +-ANDROID_CXX_STL_LIBS = -lc++ ++ ++exists($$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so): \ ++ ANDROID_CXX_STL_LIBS = -lc++ ++else: \ ++ ANDROID_CXX_STL_LIBS = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so.$$replace(ANDROID_PLATFORM, "android-", "") + + QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz + +-- +2.19.0 + diff --git a/patches/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch b/patches/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch deleted file mode 100644 index 5a5d405..0000000 --- a/patches/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 26383dba15ceed74b36dd71e5b1837c63aade927 Mon Sep 17 00:00:00 2001 -From: Lars Schmertmann -Date: Thu, 14 Sep 2017 12:47:11 +0200 -Subject: Avoid using deprecated APIs on iOS 10.0+ - -Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef ---- - src/gui/util/qdesktopservices.cpp | 13 +++++++++++++ - src/plugins/platforms/ios/qiosservices.mm | 14 ++++++++++++-- - 2 files changed, 25 insertions(+), 2 deletions(-) - -diff --git x/qtbase/src/gui/util/qdesktopservices.cpp y/qtbase/src/gui/util/qdesktopservices.cpp -index c9747877f7..77ccc02aa5 100644 ---- x/qtbase/src/gui/util/qdesktopservices.cpp -+++ y/qtbase/src/gui/util/qdesktopservices.cpp -@@ -177,6 +177,19 @@ void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler) - still fail to launch or fail to open the requested URL. This result will not be reported back - to the application. - -+ \warning URLs passed to this function on iOS will not load unless their schemes are -+ listed in the \c LSApplicationQueriesSchemes key of the application's Info.plist file. -+ For more information, see the Apple Developer Documentation for -+ \l{https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl}{canOpenURL(_:)}. -+ For example, the following lines enable URLs with the HTTPS scheme: -+ -+ \code -+ LSApplicationQueriesSchemes -+ -+ https -+ -+ \endcode -+ - \sa setUrlHandler() - */ - bool QDesktopServices::openUrl(const QUrl &url) -diff --git x/qtbase/src/plugins/platforms/ios/qiosservices.mm y/qtbase/src/plugins/platforms/ios/qiosservices.mm -index 0ecc8e123f..a963a5c05d 100644 ---- x/qtbase/src/plugins/platforms/ios/qiosservices.mm -+++ y/qtbase/src/plugins/platforms/ios/qiosservices.mm -@@ -41,6 +41,7 @@ - - #include - #include -+#include - - #import - -@@ -55,11 +56,20 @@ bool QIOSServices::openUrl(const QUrl &url) - return openDocument(url); - - NSURL *nsUrl = url.toNSURL(); -+ UIApplication *application = [UIApplication sharedApplication]; - -- if (![[UIApplication sharedApplication] canOpenURL:nsUrl]) -+ if (![application canOpenURL:nsUrl]) - return false; - -- return [[UIApplication sharedApplication] openURL:nsUrl]; -+#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, 100000, 100000, __WATCHOS_NA) -+ if (QOperatingSystemVersion::current() >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 10)) { -+ [application openURL:nsUrl options:@{} completionHandler:nil]; -+ return true; -+ } else -+#endif -+ { -+ return [application openURL:nsUrl]; -+ } - } - - bool QIOSServices::openDocument(const QUrl &url) --- -2.14.1 - diff --git a/patches/qt-Change-build-configuration-for-Qt-on-iOS.patch b/patches/qt-Change-build-configuration-for-Qt-on-iOS.patch deleted file mode 100644 index 18a0870..0000000 --- a/patches/qt-Change-build-configuration-for-Qt-on-iOS.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1f505127d1dba4b755fc00360a5bffff8163acb7 Mon Sep 17 00:00:00 2001 -From: Lars Schmertmann -Date: Wed, 19 Jul 2017 09:44:01 +0200 -Subject: Change build configuration for Qt on iOS ---- - mkspecs/macx-ios-clang/qmake.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git x/qtbase/mkspecs/macx-ios-clang/qmake.conf y/qtbase/mkspecs/macx-ios-clang/qmake.conf -index 825e03aa85..fe783faee3 100644 ---- x/qtbase/mkspecs/macx-ios-clang/qmake.conf -+++ y/qtbase/mkspecs/macx-ios-clang/qmake.conf -@@ -2,13 +2,13 @@ - # qmake configuration for macx-ios-clang - # - --QMAKE_IOS_DEPLOYMENT_TARGET = 8.0 -+QMAKE_IOS_DEPLOYMENT_TARGET = 10.0 - - # Universal target (iPhone and iPad) - QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2 - --QMAKE_APPLE_DEVICE_ARCHS = armv7 arm64 --QMAKE_APPLE_SIMULATOR_ARCHS = i386 x86_64 -+QMAKE_APPLE_DEVICE_ARCHS = arm64 -+QMAKE_APPLE_SIMULATOR_ARCHS = x86_64 - - include(../common/ios.conf) - include(../common/gcc-base-mac.conf) --- -2.13.2 - diff --git a/patches/qt-Disable-unused-imageformats.patch b/patches/qt-Disable-unused-imageformats.patch index a1f3496..4b88c99 100644 --- a/patches/qt-Disable-unused-imageformats.patch +++ b/patches/qt-Disable-unused-imageformats.patch @@ -1,4 +1,4 @@ -From 978caa044d4e1c52c90a87490defbac387db58d6 Mon Sep 17 00:00:00 2001 +From e1c05843ae1609075807d5a789fc4e6cd8154520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= Date: Mon, 25 Sep 2017 14:10:56 +0200 Subject: [PATCH] Disable unused imageformats @@ -8,10 +8,10 @@ Subject: [PATCH] Disable unused imageformats 1 file changed, 1 insertion(+), 2 deletions(-) diff --git x/qtimageformats/src/plugins/imageformats/imageformats.pro y/qtimageformats/src/plugins/imageformats/imageformats.pro -index 8c79379..2aa80f5 100644 +index d6c59ee..f1fb6d0 100644 --- x/qtimageformats/src/plugins/imageformats/imageformats.pro +++ y/qtimageformats/src/plugins/imageformats/imageformats.pro -@@ -16,8 +16,7 @@ config_jasper { +@@ -18,8 +18,7 @@ config_jasper { SUBDIRS += macjp2 } @@ -22,5 +22,5 @@ index 8c79379..2aa80f5 100644 webp -} -- -2.14.1 +2.16.2 diff --git a/patches/qt-Enable-debug-output-for-OpenSSL.patch b/patches/qt-Enable-debug-output-for-OpenSSL.patch index fcec7bb..ade57b8 100644 --- a/patches/qt-Enable-debug-output-for-OpenSSL.patch +++ b/patches/qt-Enable-debug-output-for-OpenSSL.patch @@ -1,16 +1,17 @@ -From 5cad7717db911f113355b353a6eeb3687f6fbf9a Mon Sep 17 00:00:00 2001 +From fc591411928c982f763c2fee060c0665a5b6b8b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= -Date: Thu, 23 Jul 2015 12:16:01 +0200 +Date: Tue, 10 Oct 2017 13:44:48 +0200 Subject: [PATCH] Enable debug output for OpenSSL --- - src/network/ssl/qsslsocket.cpp | 2 +- - src/network/ssl/qsslsocket_mac.cpp | 1 + - src/network/ssl/qsslsocket_openssl.cpp | 4 ++-- - 3 files changed, 4 insertions(+), 3 deletions(-) + src/network/ssl/qsslsocket.cpp | 2 +- + src/network/ssl/qsslsocket_mac.cpp | 1 + + src/network/ssl/qsslsocket_mac_shared.cpp | 4 ++-- + src/network/ssl/qsslsocket_openssl.cpp | 2 +- + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git x/qtbase/src/network/ssl/qsslsocket.cpp y/qtbase/src/network/ssl/qsslsocket.cpp -index 3e7a30a..61ff7a1 100644 +index 5c9ebac283..b843191e89 100644 --- x/qtbase/src/network/ssl/qsslsocket.cpp +++ y/qtbase/src/network/ssl/qsslsocket.cpp @@ -39,7 +39,7 @@ @@ -23,7 +24,7 @@ index 3e7a30a..61ff7a1 100644 /*! \class QSslSocket diff --git x/qtbase/src/network/ssl/qsslsocket_mac.cpp y/qtbase/src/network/ssl/qsslsocket_mac.cpp -index 99ae792..13339c8 100644 +index 68c8ccff89..15d887c1f9 100644 --- x/qtbase/src/network/ssl/qsslsocket_mac.cpp +++ y/qtbase/src/network/ssl/qsslsocket_mac.cpp @@ -37,6 +37,7 @@ @@ -34,11 +35,11 @@ index 99ae792..13339c8 100644 #include "qsslsocket.h" #include "qssl_p.h" -diff --git x/qtbase/src/network/ssl/qsslsocket_openssl.cpp y/qtbase/src/network/ssl/qsslsocket_openssl.cpp -index 4f62f53..f8d8174 100644 ---- x/qtbase/src/network/ssl/qsslsocket_openssl.cpp -+++ y/qtbase/src/network/ssl/qsslsocket_openssl.cpp -@@ -53,8 +53,8 @@ +diff --git x/qtbase/src/network/ssl/qsslsocket_mac_shared.cpp y/qtbase/src/network/ssl/qsslsocket_mac_shared.cpp +index d239fe23dd..59436ca276 100644 +--- x/qtbase/src/network/ssl/qsslsocket_mac_shared.cpp ++++ y/qtbase/src/network/ssl/qsslsocket_mac_shared.cpp +@@ -38,8 +38,8 @@ ** ****************************************************************************/ @@ -47,8 +48,21 @@ index 4f62f53..f8d8174 100644 +#define QSSLSOCKET_DEBUG +#define QT_DECRYPT_SSL_TRAFFIC + #include "qssl_p.h" + #include "qsslsocket.h" +diff --git x/qtbase/src/network/ssl/qsslsocket_openssl.cpp y/qtbase/src/network/ssl/qsslsocket_openssl.cpp +index 2d771b5637..beb361d744 100644 +--- x/qtbase/src/network/ssl/qsslsocket_openssl.cpp ++++ y/qtbase/src/network/ssl/qsslsocket_openssl.cpp +@@ -53,7 +53,7 @@ + ** + ****************************************************************************/ + +-//#define QSSLSOCKET_DEBUG ++#define QSSLSOCKET_DEBUG + #include "qssl_p.h" #include "qsslsocket_openssl_p.h" -- -2.8.0 +2.14.2 diff --git a/patches/qt-Introduce-reportError-to-fix-QMetaObject-invokeMethod.patch b/patches/qt-Introduce-reportError-to-fix-QMetaObject-invokeMethod.patch new file mode 100644 index 0000000..9967f2d --- /dev/null +++ b/patches/qt-Introduce-reportError-to-fix-QMetaObject-invokeMethod.patch @@ -0,0 +1,262 @@ +From 9f00179a95ef729fa7871b4d408c76bc50e4eb4e Mon Sep 17 00:00:00 2001 +From: Lars Schmertmann +Date: Wed, 20 Jun 2018 11:56:19 +0200 +Subject: Introduce reportError to fix "QMetaObject::invokeMethod: No such method" + +Task-number: QTBUG-67958 +Change-Id: Ia5a21cb19f0318844ac436adcc3f0fff9a3185b5 +Reviewed-by: Alex Blasche +--- + src/nfc/qnearfieldtagtype1.cpp | 8 ++---- + src/nfc/qnearfieldtarget.cpp | 13 ++++++++++ + src/nfc/qnearfieldtarget.h | 2 ++ + src/nfc/qnearfieldtarget_android.cpp | 36 +++++++-------------------- + src/nfc/qnearfieldtarget_emulator.cpp | 20 ++++----------- + src/nfc/qnearfieldtarget_neard_p.h | 8 ++---- + 6 files changed, 33 insertions(+), 54 deletions(-) + +diff --git x/qtconnectivity/src/nfc/qnearfieldtagtype1.cpp y/qtconnectivity/src/nfc/qnearfieldtagtype1.cpp +index 34f2c8b8..7f27fbe9 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtagtype1.cpp ++++ y/qtconnectivity/src/nfc/qnearfieldtagtype1.cpp +@@ -440,9 +440,7 @@ QNearFieldTarget::RequestId QNearFieldTagType1::readNdefMessages() + if (d->m_readNdefMessageState == QNearFieldTagType1Private::NotReadingNdefMessage) { + d->progressToNextNdefReadMessageState(); + } else { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, NdefReadError), +- Q_ARG(QNearFieldTarget::RequestId, d->m_readNdefRequestId)); ++ reportError(QNearFieldTarget::NdefReadError, d->m_readNdefRequestId); + } + + return d->m_readNdefRequestId; +@@ -462,9 +460,7 @@ QNearFieldTarget::RequestId QNearFieldTagType1::writeNdefMessages(const QListm_ndefWriteMessages = messages; + d->progressToNextNdefWriteMessageState(); + } else { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, NdefWriteError), +- Q_ARG(QNearFieldTarget::RequestId, d->m_readNdefRequestId)); ++ reportError(QNearFieldTarget::NdefWriteError, d->m_readNdefRequestId); + } + + return d->m_writeNdefRequestId; +diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.cpp y/qtconnectivity/src/nfc/qnearfieldtarget.cpp +index e642824b..e9a6fa11 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtarget.cpp ++++ y/qtconnectivity/src/nfc/qnearfieldtarget.cpp +@@ -530,4 +530,17 @@ bool QNearFieldTarget::handleResponse(const QNearFieldTarget::RequestId &id, + return true; + } + ++/*! ++ \since 5.12 ++ ++ Reports the \a error for the request \a id by appending the signal emission to the event queue. ++*/ ++void QNearFieldTarget::reportError(QNearFieldTarget::Error error, ++ const QNearFieldTarget::RequestId &id) ++{ ++ QMetaObject::invokeMethod(this, [this, error, id]() { ++ Q_EMIT this->error(error, id); ++ }, Qt::QueuedConnection); ++} ++ + QT_END_NAMESPACE +diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.h y/qtconnectivity/src/nfc/qnearfieldtarget.h +index e51960f7..868b52d5 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtarget.h ++++ y/qtconnectivity/src/nfc/qnearfieldtarget.h +@@ -153,6 +153,8 @@ protected: + Q_INVOKABLE virtual bool handleResponse(const QNearFieldTarget::RequestId &id, + const QByteArray &response); + ++ void reportError(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id); ++ + Q_SIGNALS: + void disconnected(); + +diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp +index e656996e..78da6ac2 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp ++++ y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp +@@ -147,25 +147,19 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages() + // Making sure that target is still in range + QNearFieldTarget::RequestId requestId(new QNearFieldTarget::RequestIdPrivate); + if (!m_intent.isValid()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); + return requestId; + } + + // Getting Ndef technology object + if (!setTagTechnology({NDEFTECHNOLOGY})) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnsupportedError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::UnsupportedError, requestId); + return requestId; + } + + // Connect + if (!connect()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); + return requestId; + } + +@@ -174,9 +168,7 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages() + if (catchJavaExceptions()) + ndefMessage = QAndroidJniObject(); + if (!ndefMessage.isValid()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefReadError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::NdefReadError, requestId); + return requestId; + } + +@@ -249,9 +241,7 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma + // Connecting + QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate()); + if (!connect()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); + return requestId; + } + +@@ -263,9 +253,7 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma + // Writing + QAndroidJniObject myNewVal = m_tagTech.callObjectMethod("transceive", "([B)[B", jba); + if (catchJavaExceptions()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::CommandError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::CommandError, requestId); + return requestId; + } + QByteArray result = jbyteArrayToQByteArray(myNewVal.object()); +@@ -315,9 +303,7 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QListSetByteArrayRegion(jba.object(), 0, ba.size(), reinterpret_cast(ba.data())); + QAndroidJniObject jmessage = QAndroidJniObject("android/nfc/NdefMessage", "([B)V", jba.object()); + if (catchJavaExceptions()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnknownError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::UnknownError, requestId); + return requestId; + } + + // Writing + m_tagTech.callMethod(writeMethod, "(Landroid/nfc/NdefMessage;)V", jmessage.object()); + if (catchJavaExceptions()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefWriteError), +- Q_ARG(QNearFieldTarget::RequestId&, requestId)); ++ reportError(QNearFieldTarget::NdefWriteError, requestId); + return requestId; + } + +diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_emulator.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_emulator.cpp +index 29b1f74d..030718cc 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtarget_emulator.cpp ++++ y/qtconnectivity/src/nfc/qnearfieldtarget_emulator.cpp +@@ -82,9 +82,7 @@ QNearFieldTarget::RequestId TagType1::sendCommand(const QByteArray &command) + + // tag not in proximity + if (!tagMap.value(m_tag)) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, TargetOutOfRangeError), +- Q_ARG(QNearFieldTarget::RequestId, id)); ++ reportError(QNearFieldTarget::TargetOutOfRangeError, id); + return id; + } + +@@ -93,17 +91,13 @@ QNearFieldTarget::RequestId TagType1::sendCommand(const QByteArray &command) + QByteArray response = m_tag->processCommand(command + char(crc & 0xff) + char(crc >> 8)); + + if (response.isEmpty()) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, NoResponseError), +- Q_ARG(QNearFieldTarget::RequestId, id)); ++ reportError(QNearFieldTarget::NoResponseError, id); + return id; + } + + // check crc + if (qChecksum(response.constData(), response.length(), Qt::ChecksumItuV41) != 0) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, ChecksumMismatchError), +- Q_ARG(QNearFieldTarget::RequestId, id)); ++ reportError(QNearFieldTarget::ChecksumMismatchError, id); + return id; + } + +@@ -152,9 +146,7 @@ QNearFieldTarget::RequestId TagType2::sendCommand(const QByteArray &command) + + // tag not in proximity + if (!tagMap.value(m_tag)) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, TargetOutOfRangeError), +- Q_ARG(QNearFieldTarget::RequestId, id)); ++ reportError(QNearFieldTarget::TargetOutOfRangeError, id); + return id; + } + +@@ -168,9 +160,7 @@ QNearFieldTarget::RequestId TagType2::sendCommand(const QByteArray &command) + if (response.length() > 1) { + // check crc + if (qChecksum(response.constData(), response.length(), Qt::ChecksumItuV41) != 0) { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, ChecksumMismatchError), +- Q_ARG(QNearFieldTarget::RequestId, id)); ++ reportError(QNearFieldTarget::ChecksumMismatchError, id); + return id; + } + +diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.h y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.h +index 053df141..625cee67 100644 +--- x/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.h ++++ y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.h +@@ -359,9 +359,7 @@ private: + Q_EMIT this->requestCompleted(this->m_currentReadRequestId); + }, Qt::QueuedConnection); + } else { +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnknownError), +- Q_ARG(QNearFieldTarget::RequestId, m_currentReadRequestId)); ++ this->reportError(QNearFieldTarget::UnknownError, m_currentReadRequestId); + } + + m_readRequested = false; +@@ -389,9 +387,7 @@ private: + reply.waitForFinished(); + if (reply.isError()) { + qCWarning(QT_NFC_NEARD) << "Error writing to NFC tag" << reply.error(); +- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, +- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnknownError), +- Q_ARG(QNearFieldTarget::RequestId, m_currentWriteRequestId)); ++ this->reportError(QNearFieldTarget::UnknownError, m_currentWriteRequestId); + } + + QMetaObject::invokeMethod(this, "ndefMessagesWritten", Qt::QueuedConnection); +-- +2.19.1 + diff --git a/patches/qt-Make-server-side-signature-algorithms-configurable.patch b/patches/qt-Make-server-side-signature-algorithms-configurable.patch deleted file mode 100644 index 7da685e..0000000 --- a/patches/qt-Make-server-side-signature-algorithms-configurable.patch +++ /dev/null @@ -1,261 +0,0 @@ -From b0404383ab573d7550a6564405bb9b1316ff193a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Sebastian=20L=C3=B6sch?= -Date: Thu, 21 Apr 2016 09:19:19 +0200 -Subject: [PATCH] Make server side signature algorithms configurable - -Signature algorithms are used during the TLS handshake phase to protect -transferred security parameters, e.g the message ServerKeyExchange. -This patch enables the configuration of allowed algorithms used by the -server side. - -Change-Id: Ia178efd4778b91863fcc919bf50219115b300d77 ---- - src/network/ssl/qsslconfiguration.cpp | 42 ++++++++++++++++++++++++ - src/network/ssl/qsslconfiguration.h | 8 ++++- - src/network/ssl/qsslconfiguration_p.h | 5 +++ - src/network/ssl/qsslcontext_openssl.cpp | 45 ++++++++++++++++++++++++++ - src/network/ssl/qsslcontext_openssl_p.h | 1 + - src/network/ssl/qsslsocket.cpp | 2 ++ - src/network/ssl/qsslsocket_openssl_symbols_p.h | 5 +++ - 7 files changed, 107 insertions(+), 1 deletion(-) - -diff --git x/qtbase/src/network/ssl/qsslconfiguration.cpp y/qtbase/src/network/ssl/qsslconfiguration.cpp -index 75a880f115..37f99feef1 100644 ---- x/qtbase/src/network/ssl/qsslconfiguration.cpp -+++ y/qtbase/src/network/ssl/qsslconfiguration.cpp -@@ -221,6 +221,7 @@ bool QSslConfiguration::operator==(const QSslConfiguration &other) const - d->peerVerifyMode == other.d->peerVerifyMode && - d->peerVerifyDepth == other.d->peerVerifyDepth && - d->allowRootCertOnDemandLoading == other.d->allowRootCertOnDemandLoading && -+ d->signatureAndHashAlgorithms == other.d->signatureAndHashAlgorithms && - d->sslOptions == other.d->sslOptions && - d->sslSession == other.d->sslSession && - d->sslSessionTicketLifeTimeHint == other.d->sslSessionTicketLifeTimeHint && -@@ -263,6 +264,7 @@ bool QSslConfiguration::isNull() const - d->privateKey.isNull() && - d->peerCertificate.isNull() && - d->peerCertificateChain.count() == 0 && -+ d->signatureAndHashAlgorithms.isEmpty() && - d->sslOptions == QSslConfigurationPrivate::defaultSslOptions && - d->sslSession.isNull() && - d->sslSessionTicketLifeTimeHint == -1 && -@@ -869,6 +871,46 @@ void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParame - d->dhParams = dhparams; - } - -+/*! -+ \since 5.9 -+ -+ Returns the connection's current list of supported signature -+ algorithms if enabled. Enable it by calling -+ setSignatureAndHashAlgorithms(). -+ -+ \sa setSignatureAndHashAlgorithms() -+ */ -+QVector > QSslConfiguration::signatureAndHashAlgorithms() const -+{ -+ return d->signatureAndHashAlgorithms; -+} -+ -+/*! -+ \since 5.9 -+ -+ Sets the list of signature algorithms to be used for the current -+ connection. The algorithms are expected to be ordered by descending -+ preference (i.e., the first algorithm is the most preferred one). -+ Notice that this restricts the list of supported ciphers (e.g. -+ configuring the signature algorithm RSA+SHA1 will restrict the ciphers -+ to RSA ciphers). -+ -+ When configuring the client side this are the algorithms set in the -+ Signature Algorithms TLS extension, see RFC 5246 for details. Although -+ this extension will be ignored for TLS protocol versions prior 1.2 -+ this still restricts the supported ciphers as mentioned above. -+ -+ By default, the handshake phase can choose any of the algorithms -+ supported by this system's SSL libraries, which may vary from -+ system to system. -+ -+ \sa signatureAndHashAlgorithms() -+ */ -+void QSslConfiguration::setSignatureAndHashAlgorithms(const QVector > &algorithms) -+{ -+ d->signatureAndHashAlgorithms = algorithms; -+} -+ - /*! - \since 5.3 - -diff --git x/qtbase/src/network/ssl/qsslconfiguration.h y/qtbase/src/network/ssl/qsslconfiguration.h -index 1c57bebd65..4d3e5129d5 100644 ---- x/qtbase/src/network/ssl/qsslconfiguration.h -+++ y/qtbase/src/network/ssl/qsslconfiguration.h -@@ -56,10 +56,13 @@ - #ifndef QSSLCONFIGURATION_H - #define QSSLCONFIGURATION_H - --#include -+#include -+#include - #include -+#include - #include - #include -+#include - - #ifndef QT_NO_SSL - -@@ -149,6 +152,9 @@ public: - QSslDiffieHellmanParameters diffieHellmanParameters() const; - void setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams); - -+ QVector > signatureAndHashAlgorithms() const; -+ void setSignatureAndHashAlgorithms(const QVector > &algorithms); -+ - static QSslConfiguration defaultConfiguration(); - static void setDefaultConfiguration(const QSslConfiguration &configuration); - -diff --git x/qtbase/src/network/ssl/qsslconfiguration_p.h y/qtbase/src/network/ssl/qsslconfiguration_p.h -index 6adf2c9b54..7be253973b 100644 ---- x/qtbase/src/network/ssl/qsslconfiguration_p.h -+++ y/qtbase/src/network/ssl/qsslconfiguration_p.h -@@ -75,6 +75,9 @@ - #include "qsslkey.h" - #include "qsslellipticcurve.h" - #include "qssldiffiehellmanparameters.h" -+#include -+#include -+#include - - QT_BEGIN_NAMESPACE - -@@ -123,6 +126,8 @@ public: - - QSslDiffieHellmanParameters dhParams; - -+ QVector > signatureAndHashAlgorithms; -+ - QByteArray sslSession; - int sslSessionTicketLifeTimeHint; - -diff --git x/qtbase/src/network/ssl/qsslcontext_openssl.cpp y/qtbase/src/network/ssl/qsslcontext_openssl.cpp -index c92d8fc3f8..29df53abc0 100644 ---- x/qtbase/src/network/ssl/qsslcontext_openssl.cpp -+++ y/qtbase/src/network/ssl/qsslcontext_openssl.cpp -@@ -42,6 +42,7 @@ - - #include - #include -+#include - #include - - #include "private/qssl_p.h" -@@ -78,6 +79,11 @@ QSslContext::~QSslContext() - q_SSL_SESSION_free(session); - } - -+static inline QString msgErrorSettingSignatureAlgorithms(const QString &why) -+{ -+ return QSslSocket::tr("Error when setting the signature algorithms (%1)").arg(why); -+} -+ - static inline QString msgErrorSettingEllipticCurves(const QString &why) - { - return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why); -@@ -371,6 +377,45 @@ init_context: - sslContext->errorCode = QSslError::UnspecifiedError; - } - } -+ -+ const auto& sigAndHashAlgorithms = sslContext->sslConfiguration.signatureAndHashAlgorithms(); -+ if (!sigAndHashAlgorithms.isEmpty()) { -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+ if (q_SSLeay() >= 0x10002000L) { -+ QMetaEnum hashMetaEnum = QMetaEnum::fromType(); -+ QByteArrayList algorithmList; -+ for (int i=0; i < sigAndHashAlgorithms.size(); ++i) { -+ QByteArray sig; -+ switch (sigAndHashAlgorithms[i].first) { -+ case QSsl::KeyAlgorithm::Rsa: -+ sig = QByteArrayLiteral("RSA"); -+ break; -+ case QSsl::KeyAlgorithm::Dsa: -+ sig = QByteArrayLiteral("DSA"); -+ break; -+ case QSsl::KeyAlgorithm::Ec: -+ sig = QByteArrayLiteral("ECDSA"); -+ break; -+ case QSsl::KeyAlgorithm::Opaque: -+ qCWarning(lcSsl, "Invalid value KeyAlgorithm::Opaque will be ignored"); -+ continue; -+ } -+ QByteArray hash = QByteArray(hashMetaEnum.valueToKey(sigAndHashAlgorithms[i].second)).toUpper(); -+ algorithmList += sig + QByteArrayLiteral("+") + hash; -+ } -+ QByteArray algorithms = algorithmList.join(':'); -+ if (!q_SSL_CTX_set1_sigalgs_list(sslContext->ctx, algorithms.data())) { -+ sslContext->errorStr = msgErrorSettingSignatureAlgorithms(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); -+ sslContext->errorCode = QSslError::UnspecifiedError; -+ } -+ } else -+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L -+ { -+ // specific algorithms requested, but not possible to set -> error -+ sslContext->errorStr = msgErrorSettingSignatureAlgorithms(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); -+ sslContext->errorCode = QSslError::UnspecifiedError; -+ } -+ } - } - - QSslContext* QSslContext::fromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) -diff --git x/qtbase/src/network/ssl/qsslcontext_openssl_p.h y/qtbase/src/network/ssl/qsslcontext_openssl_p.h -index 06a31af5e5..c8c8e1941b 100644 ---- x/qtbase/src/network/ssl/qsslcontext_openssl_p.h -+++ y/qtbase/src/network/ssl/qsslcontext_openssl_p.h -@@ -54,6 +54,7 @@ - // - - #include -+#include - #include - #include - #include -diff --git x/qtbase/src/network/ssl/qsslsocket.cpp y/qtbase/src/network/ssl/qsslsocket.cpp -index 8eba5db9fe..c0aa8b9bdf 100644 ---- x/qtbase/src/network/ssl/qsslsocket.cpp -+++ y/qtbase/src/network/ssl/qsslsocket.cpp -@@ -922,6 +922,7 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration) - d->configuration.peerVerifyDepth = configuration.peerVerifyDepth(); - d->configuration.peerVerifyMode = configuration.peerVerifyMode(); - d->configuration.protocol = configuration.protocol(); -+ d->configuration.signatureAndHashAlgorithms = configuration.signatureAndHashAlgorithms(); - d->configuration.sslOptions = configuration.d->sslOptions; - d->configuration.sslSession = configuration.sessionTicket(); - d->configuration.sslSessionTicketLifeTimeHint = configuration.sessionTicketLifeTimeHint(); -@@ -2249,6 +2250,7 @@ void QSslConfigurationPrivate::deepCopyDefaultConfiguration(QSslConfigurationPri - ptr->peerVerifyDepth = global->peerVerifyDepth; - ptr->sslOptions = global->sslOptions; - ptr->ellipticCurves = global->ellipticCurves; -+ ptr->signatureAndHashAlgorithms = global->signatureAndHashAlgorithms; - } - - /*! -diff --git x/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h y/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h -index b35a895d38..d4cd493c45 100644 ---- x/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h -+++ y/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -517,6 +517,11 @@ int q_EC_curve_nist2nid(const char *name); - #define q_SSL_get_server_tmp_key(ssl, key) q_SSL_ctrl((ssl), SSL_CTRL_GET_SERVER_TMP_KEY, 0, (char *)key) - #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L - -+// Signature algorithm extension -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#define q_SSL_CTX_set1_sigalgs_list(ctx, s) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)s) -+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L -+ - // PKCS#12 support - int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); - PKCS12 *q_d2i_PKCS12_bio(BIO *bio, PKCS12 **pkcs12); --- -2.15.0 - diff --git a/patches/qt-QCoreTextFontEngine-Fix-build-with-Xcode-9.3.patch b/patches/qt-QCoreTextFontEngine-Fix-build-with-Xcode-9.3.patch deleted file mode 100644 index 860230c..0000000 --- a/patches/qt-QCoreTextFontEngine-Fix-build-with-Xcode-9.3.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 05eed1cd4505bf9912b84ed39ab1ad22846e7d09 Mon Sep 17 00:00:00 2001 -From: Gabriel de Dietrich -Date: Fri, 30 Mar 2018 11:58:16 -0700 -Subject: QCoreTextFontEngine: Fix build with Xcode 9.3 - -Apple LLVM version 9.1.0 (clang-902.0.39.1) - -Error message: - -.../qfontengine_coretext.mm:827:20: error: qualified reference to - 'QFixed' is a constructor name rather than a type in this context - return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont))); - -Change-Id: Iebe26b3b087a16b10664208fc8851cbddb47f043 -Reviewed-by: Konstantin Ritt ---- - src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git x/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm y/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm -index 66baf162d9..89794ef109 100644 ---- x/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm -+++ y/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm -@@ -830,7 +830,7 @@ void QCoreTextFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, gl - - QFixed QCoreTextFontEngine::emSquareSize() const - { -- return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont))); -+ return QFixed(int(CTFontGetUnitsPerEm(ctfont))); - } - - QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const --- -2.16.2 - diff --git a/patches/qt-QObject-Fix-isSignalConnected-when-signals-have-been.patch b/patches/qt-QObject-Fix-isSignalConnected-when-signals-have-been.patch new file mode 100644 index 0000000..f80031e --- /dev/null +++ b/patches/qt-QObject-Fix-isSignalConnected-when-signals-have-been.patch @@ -0,0 +1,185 @@ +From 78ab3263caae535a3bd31fa35c733ae2a28ca8ba Mon Sep 17 00:00:00 2001 +From: Kari Oikarinen +Date: Wed, 26 Sep 2018 10:29:14 +0300 +Subject: [PATCH] QObject: Fix isSignalConnected() when signals have been + disconnected +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The bitmap cache for the first 64 signals being connected was only set when the +connection is added. It was never unset when the connection was removed. + +Internal use of the connectedSignals bitmap is not hurt by it occasionally +saying a signal is connected even though it is not, since the purpose of those +checks is avoiding expensive operations that are not necessary if nothing is +connected to the signal. + +However, the public API using this cache meant that it also never spotted +signals being disconnected. This was not documented. Fix the behavior by only +using the cache if it is up to date. If it is not, use a slower path that gives +the correct answer. + +To avoid making disconnections and QObject destructions slower, the cache is +only updated to unset disconnected signals when new signal connections are +added. No extra work is done in the common case where signals are only +removed in the end of the QObject's lifetime. + +Fixes: QTBUG-32340 +Change-Id: Ieb6e498060157153cec60d9c8f1c33056993fda1 +Reviewed-by: Ville Voutilainen +Reviewed-by: Thiago Macieira +Reviewed-by: Olivier Goffart (Woboq GmbH) +Reviewed-by: Jędrzej Nowacki +--- + src/corelib/kernel/qobject.cpp | 34 ++++++++---- + .../corelib/kernel/qobject/tst_qobject.cpp | 53 +++++++++++++++++++ + 2 files changed, 76 insertions(+), 11 deletions(-) + +diff --git x/qtbase/src/corelib/kernel/qobject.cpp y/qtbase/src/corelib/kernel/qobject.cpp +index c6fe787e03..4532eacf0c 100644 +--- x/qtbase/src/corelib/kernel/qobject.cpp ++++ y/qtbase/src/corelib/kernel/qobject.cpp +@@ -418,6 +418,7 @@ void QObjectPrivate::cleanConnectionLists() + { + if (connectionLists->dirty && !connectionLists->inUse) { + // remove broken connections ++ bool allConnected = false; + for (int signal = -1; signal < connectionLists->count(); ++signal) { + QObjectPrivate::ConnectionList &connectionList = + (*connectionLists)[signal]; +@@ -429,11 +430,13 @@ void QObjectPrivate::cleanConnectionLists() + + QObjectPrivate::Connection **prev = &connectionList.first; + QObjectPrivate::Connection *c = *prev; ++ bool connected = false; // whether the signal is still connected somewhere + while (c) { + if (c->receiver) { + last = c; + prev = &c->nextConnectionList; + c = *prev; ++ connected = true; + } else { + QObjectPrivate::Connection *next = c->nextConnectionList; + *prev = next; +@@ -445,6 +448,14 @@ void QObjectPrivate::cleanConnectionLists() + // Correct the connection list's last pointer. + // As conectionList.last could equal last, this could be a noop + connectionList.last = last; ++ ++ if (!allConnected && !connected && signal >= 0 ++ && size_t(signal) < sizeof(connectedSignals) * 8) { ++ // This signal is no longer connected ++ connectedSignals[signal >> 5] &= ~(1 << (signal & 0x1f)); ++ } else if (signal == -1) { ++ allConnected = connected; ++ } + } + connectionLists->dirty = false; + } +@@ -2503,19 +2514,20 @@ bool QObject::isSignalConnected(const QMetaMethod &signal) const + + signalIndex += QMetaObjectPrivate::signalOffset(signal.mobj); + +- if (signalIndex < sizeof(d->connectedSignals) * 8) ++ QMutexLocker locker(signalSlotLock(this)); ++ if (!d->connectionLists) ++ return false; ++ ++ if (signalIndex < sizeof(d->connectedSignals) * 8 && !d->connectionLists->dirty) + return d->isSignalConnected(signalIndex); + +- QMutexLocker locker(signalSlotLock(this)); +- if (d->connectionLists) { +- if (signalIndex < uint(d->connectionLists->count())) { +- const QObjectPrivate::Connection *c = +- d->connectionLists->at(signalIndex).first; +- while (c) { +- if (c->receiver) +- return true; +- c = c->nextConnectionList; +- } ++ if (signalIndex < uint(d->connectionLists->count())) { ++ const QObjectPrivate::Connection *c = ++ d->connectionLists->at(signalIndex).first; ++ while (c) { ++ if (c->receiver) ++ return true; ++ c = c->nextConnectionList; + } + } + return false; +diff --git x/qtbase/tests/auto/corelib/kernel/qobject/tst_qobject.cpp y/qtbase/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +index ec57522f48..20ce905265 100644 +--- x/qtbase/tests/auto/corelib/kernel/qobject/tst_qobject.cpp ++++ y/qtbase/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +@@ -104,6 +104,7 @@ private slots: + void deleteQObjectWhenDeletingEvent(); + void overloads(); + void isSignalConnected(); ++ void isSignalConnectedAfterDisconnection(); + void qMetaObjectConnect(); + void qMetaObjectDisconnectOne(); + void sameName(); +@@ -3843,6 +3844,58 @@ void tst_QObject::isSignalConnected() + QVERIFY(!o.isSignalConnected(QMetaMethod())); + } + ++void tst_QObject::isSignalConnectedAfterDisconnection() ++{ ++ ManySignals o; ++ const QMetaObject *meta = o.metaObject(); ++ ++ const QMetaMethod sig00 = meta->method(meta->indexOfSignal("sig00()")); ++ QVERIFY(!o.isSignalConnected(sig00)); ++ QObject::connect(&o, &ManySignals::sig00, qt_noop); ++ QVERIFY(o.isSignalConnected(sig00)); ++ QVERIFY(QObject::disconnect(&o, &ManySignals::sig00, 0, 0)); ++ QVERIFY(!o.isSignalConnected(sig00)); ++ ++ const QMetaMethod sig69 = meta->method(meta->indexOfSignal("sig69()")); ++ QVERIFY(!o.isSignalConnected(sig69)); ++ QObject::connect(&o, &ManySignals::sig69, qt_noop); ++ QVERIFY(o.isSignalConnected(sig69)); ++ QVERIFY(QObject::disconnect(&o, &ManySignals::sig69, 0, 0)); ++ QVERIFY(!o.isSignalConnected(sig69)); ++ ++ { ++ ManySignals o2; ++ QObject::connect(&o, &ManySignals::sig00, &o2, &ManySignals::sig00); ++ QVERIFY(o.isSignalConnected(sig00)); ++ // o2 is destructed ++ } ++ QVERIFY(!o.isSignalConnected(sig00)); ++ ++ const QMetaMethod sig01 = meta->method(meta->indexOfSignal("sig01()")); ++ QObject::connect(&o, &ManySignals::sig00, qt_noop); ++ QObject::connect(&o, &ManySignals::sig01, qt_noop); ++ QObject::connect(&o, &ManySignals::sig69, qt_noop); ++ QVERIFY(o.isSignalConnected(sig00)); ++ QVERIFY(o.isSignalConnected(sig01)); ++ QVERIFY(o.isSignalConnected(sig69)); ++ QVERIFY(QObject::disconnect(&o, &ManySignals::sig69, 0, 0)); ++ QVERIFY(o.isSignalConnected(sig00)); ++ QVERIFY(o.isSignalConnected(sig01)); ++ QVERIFY(!o.isSignalConnected(sig69)); ++ QVERIFY(QObject::disconnect(&o, &ManySignals::sig00, 0, 0)); ++ QVERIFY(!o.isSignalConnected(sig00)); ++ QVERIFY(o.isSignalConnected(sig01)); ++ QVERIFY(!o.isSignalConnected(sig69)); ++ QObject::connect(&o, &ManySignals::sig69, qt_noop); ++ QVERIFY(!o.isSignalConnected(sig00)); ++ QVERIFY(o.isSignalConnected(sig01)); ++ QVERIFY(o.isSignalConnected(sig69)); ++ QVERIFY(QObject::disconnect(&o, &ManySignals::sig01, 0, 0)); ++ QVERIFY(!o.isSignalConnected(sig00)); ++ QVERIFY(!o.isSignalConnected(sig01)); ++ QVERIFY(o.isSignalConnected(sig69)); ++} ++ + void tst_QObject::qMetaObjectConnect() + { + SenderObject *s = new SenderObject; +-- +2.19.1 + diff --git a/patches/qt-QUrl-Support-IPv6-addresses-with-zone-id.patch b/patches/qt-QUrl-Support-IPv6-addresses-with-zone-id.patch new file mode 100644 index 0000000..bd5616f --- /dev/null +++ b/patches/qt-QUrl-Support-IPv6-addresses-with-zone-id.patch @@ -0,0 +1,108 @@ +From 2e492dc6a6cf9e73a04f65e133ea4e97324a68da Mon Sep 17 00:00:00 2001 +From: Robbert Proost +Date: Thu, 18 Jan 2018 09:52:49 +0100 +Subject: [PATCH] QUrl: Support IPv6 addresses with zone id + +Task-number: QTBUG-25550 +Change-Id: I37ec02b655abe2779aa11945e20550ce00e43723 +--- + src/corelib/io/qurl.cpp | 63 ++++++++++++++++--------- + tests/auto/corelib/io/qurl/tst_qurl.cpp | 52 ++++++++++++++++++++ + 2 files changed, 92 insertions(+), 23 deletions(-) + +diff --git x/qtbase/src/corelib/io/qurl.cpp y/qtbase/src/corelib/io/qurl.cpp +index 4587b9fcd6..e2a66c8459 100644 +--- x/qtbase/src/corelib/io/qurl.cpp ++++ y/qtbase/src/corelib/io/qurl.cpp +@@ -1203,16 +1203,18 @@ inline void QUrlPrivate::setQuery(const QString &value, int from, int iend) + + inline void QUrlPrivate::appendHost(QString &appendTo, QUrl::FormattingOptions options) const + { +- // EncodeUnicode is the only flag that matters +- if ((options & QUrl::FullyDecoded) == QUrl::FullyDecoded) +- options = 0; +- else +- options &= QUrl::EncodeUnicode; + if (host.isEmpty()) + return; + if (host.at(0).unicode() == '[') { +- // IPv6Address and IPvFuture address never require any transformation +- appendTo += host; ++ // IPv6 addresses might contain a zone-id which needs to be recoded ++ QString hostInCorrectFormat; ++ if (options != 0) ++ qt_urlRecode(hostInCorrectFormat, host.constBegin(), host.constEnd(), options, 0); ++ ++ if (hostInCorrectFormat.isEmpty()) ++ hostInCorrectFormat = host; ++ ++ appendTo += hostInCorrectFormat; + } else { + // this is either an IPv4Address or a reg-name + // if it is a reg-name, it is already stored in Unicode form +@@ -1278,31 +1280,46 @@ static const QChar *parseIpFuture(QString &host, const QChar *begin, const QChar + // ONLY the IPv6 address is parsed here, WITHOUT the brackets + static const QChar *parseIp6(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode) + { +- QIPAddressUtils::IPv6Address address; +- const QChar *ret = QIPAddressUtils::parseIp6(address, begin, end); +- if (ret) { +- // this struct is kept in automatic storage because it's only 4 bytes ++ QString decoded; ++ if (mode == QUrl::TolerantMode) { + const ushort decodeColon[] = { decode(':'), 0 }; ++ if (qt_urlRecode(decoded, begin, end, QUrl::ComponentFormattingOption::PrettyDecoded, decodeColon) == 0) { ++ decoded = QString(begin, end-begin); ++ } ++ } ++ else { ++ decoded = QString(begin, end-begin); ++ } + +- // IPv6 failed parsing, check if it was a percent-encoded character in +- // the middle and try again +- QString decoded; +- if (mode == QUrl::TolerantMode && qt_urlRecode(decoded, begin, end, 0, decodeColon)) { +- // recurse +- // if the parsing fails again, the qt_urlRecode above will return 0 +- ret = parseIp6(host, decoded.constBegin(), decoded.constEnd(), mode); ++ const QLatin1String zoneIdIdentifier("%25"); ++ QIPAddressUtils::IPv6Address address; ++ QString zoneId; ++ ++ const QChar *endBeforeZoneId = decoded.constEnd(); ++ ++ int zoneIdPosition = decoded.indexOf(zoneIdIdentifier); ++ if ((zoneIdPosition != -1) && (decoded.lastIndexOf(zoneIdIdentifier) == zoneIdPosition)) { ++ zoneId = decoded.mid(zoneIdPosition + zoneIdIdentifier.size()); ++ endBeforeZoneId = decoded.constBegin() + zoneIdPosition; + +- // we can't return ret, otherwise it would be dangling +- return ret ? end : 0; ++ if (zoneId.isEmpty() == true) { ++ return end; + } ++ } + +- // no transformation, nothing to re-parse +- return ret; ++ const QChar *ret = QIPAddressUtils::parseIp6(address, decoded.constBegin(), endBeforeZoneId); ++ if (ret) { ++ return begin + (ret - decoded.constBegin()); + } + +- host.reserve(host.size() + (end - begin)); ++ host.reserve(host.size() + (decoded.constEnd() - decoded.constBegin())); + host += QLatin1Char('['); + QIPAddressUtils::toString(host, address); ++ ++ if (zoneId.isEmpty() == false) { ++ host += zoneIdIdentifier; ++ host += zoneId; ++ } + host += QLatin1Char(']'); + return 0; + } +-- +2.18.0 + diff --git a/patches/qt-Register-additional-meta-types.patch b/patches/qt-Register-additional-meta-types.patch deleted file mode 100644 index 047614f..0000000 --- a/patches/qt-Register-additional-meta-types.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 3885257e655cefd1f8b18247aff76020c75379e1 Mon Sep 17 00:00:00 2001 -From: Lars Schmertmann -Date: Fri, 24 Mar 2017 11:20:14 +0100 -Subject: [PATCH] Register additional meta types - -Register QLowEnergyCharacteristic and QLowEnergyDescriptor -as meta types because they are used in signals. - -[ChangeLog][QtBluetooth] Register QLowEnergyCharacteristic -and QLowEnergyDescriptor as meta types. It is therefore -necessary to declare them as meta types in the header files. -This commit will cause conflicts with existing meta type -declarations in applications using Qt. These declarations -need to be removed. - -Change-Id: I18f33b1b2f159cffd6efbacc37178286b86a06e0 -Reviewed-by: Alex Blasche ---- - src/bluetooth/osx/osxbtcentralmanager.mm | 2 -- - src/bluetooth/qlowenergycharacteristic.h | 2 ++ - src/bluetooth/qlowenergycontroller_p.h | 5 ----- - src/bluetooth/qlowenergydescriptor.h | 2 ++ - src/bluetooth/qlowenergyservice.cpp | 2 ++ - .../test/tst_qlowenergycontroller-gattserver.cpp | 4 ---- - tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp | 3 --- - 7 files changed, 6 insertions(+), 14 deletions(-) - -diff --git x/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm y/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm -index ec046d1b..70473f1f 100644 ---- x/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm -+++ y/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm -@@ -48,8 +48,6 @@ - #include - #include - --Q_DECLARE_METATYPE(QLowEnergyCharacteristic) --Q_DECLARE_METATYPE(QLowEnergyDescriptor) - Q_DECLARE_METATYPE(QLowEnergyHandle) - - QT_BEGIN_NAMESPACE -diff --git x/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h y/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h -index b991e9a2..154c9936 100644 ---- x/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h -+++ y/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h -@@ -107,4 +107,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QLowEnergyCharacteristic::PropertyTypes) - - QT_END_NAMESPACE - -+Q_DECLARE_METATYPE(QLowEnergyCharacteristic) -+ - #endif // QLOWENERGYCHARACTERISTIC_H -diff --git x/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h y/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h -index b92716e9..6e866144 100644 ---- x/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h -+++ y/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h -@@ -497,11 +497,6 @@ Q_DECLARE_TYPEINFO(QLowEnergyControllerPrivate::Attribute, Q_MOVABLE_TYPE); - - QT_END_NAMESPACE - --#ifdef QT_WINRT_BLUETOOTH --Q_DECLARE_METATYPE(QLowEnergyCharacteristic) --Q_DECLARE_METATYPE(QLowEnergyDescriptor) --#endif // QT_WINRT_BLUETOOTH -- - #endif // QT_OSX_BLUETOOTH || QT_IOS_BLUETOOTH - - #endif // QLOWENERGYCONTROLLERPRIVATE_P_H -diff --git x/qtconnectivity/src/bluetooth/qlowenergydescriptor.h y/qtconnectivity/src/bluetooth/qlowenergydescriptor.h -index 1dfe1c35..9e71fc56 100644 ---- x/qtconnectivity/src/bluetooth/qlowenergydescriptor.h -+++ y/qtconnectivity/src/bluetooth/qlowenergydescriptor.h -@@ -89,4 +89,6 @@ protected: - - QT_END_NAMESPACE - -+Q_DECLARE_METATYPE(QLowEnergyDescriptor) -+ - #endif // QLOWENERGYDESCRIPTOR_H -diff --git x/qtconnectivity/src/bluetooth/qlowenergyservice.cpp y/qtconnectivity/src/bluetooth/qlowenergyservice.cpp -index 6e33c565..9d3129fd 100644 ---- x/qtconnectivity/src/bluetooth/qlowenergyservice.cpp -+++ y/qtconnectivity/src/bluetooth/qlowenergyservice.cpp -@@ -380,6 +380,8 @@ QLowEnergyService::QLowEnergyService(QSharedPointer p, - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); -+ qRegisterMetaType(); -+ qRegisterMetaType(); - - connect(p.data(), SIGNAL(error(QLowEnergyService::ServiceError)), - this, SIGNAL(error(QLowEnergyService::ServiceError))); -diff --git x/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp y/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp -index 3df27d92..e01457eb 100644 ---- x/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp -+++ y/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp -@@ -243,10 +243,6 @@ void TestQLowEnergyControllerGattServer::advertisedData() - QVERIFY(m_serverInfo.serviceUuids().contains(QBluetoothUuid(quint16(0x2000)))); - } - --// TODO: Why on earth is this not in the library??? --Q_DECLARE_METATYPE(QLowEnergyCharacteristic) --Q_DECLARE_METATYPE(QLowEnergyDescriptor) -- - void TestQLowEnergyControllerGattServer::serverCommunication() - { - qRegisterMetaType(); -diff --git x/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp y/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp -index 7b02dbcd..c6fd83e6 100644 ---- x/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp -+++ y/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp -@@ -91,9 +91,6 @@ private: - QList foundServices; - }; - --Q_DECLARE_METATYPE(QLowEnergyCharacteristic) --Q_DECLARE_METATYPE(QLowEnergyDescriptor) -- - tst_QLowEnergyController::tst_QLowEnergyController() - { - qRegisterMetaType(); --- -2.14.2 - diff --git a/patches/qt-Remove-Qt-Labs-specific-plugins-from-the-build.patch b/patches/qt-Remove-Qt-Labs-specific-plugins-from-the-build.patch new file mode 100644 index 0000000..0c7dea9 --- /dev/null +++ b/patches/qt-Remove-Qt-Labs-specific-plugins-from-the-build.patch @@ -0,0 +1,52 @@ +From 2e80dec588c21cfeb086912cf6c6a011c6b6b896 Mon Sep 17 00:00:00 2001 +From f3e9a6e63740d922577d331f6cbe57fd43888472 Mon Sep 17 00:00:00 2001 +From: Lars Schmertmann +Date: Mon, 16 Apr 2018 08:34:42 +0200 +Subject: Remove Qt Labs specific plugins from the build +--- + qtquickcontrols2/src/imports/imports.pro | 2 -- + qtdeclarative/src/imports/imports.pro | 4 ---- + 2 file changed, 6 deletions(-) + +diff --git x/qtquickcontrols2/src/imports/imports.pro y/qtquickcontrols2/src/imports/imports.pro +index e32bded7..944c9292 100644 +--- x/qtquickcontrols2/src/imports/imports.pro ++++ y/qtquickcontrols2/src/imports/imports.pro +@@ -1,8 +1,6 @@ + TEMPLATE = subdirs + SUBDIRS += \ + controls \ +- calendar \ +- platform \ + templates + + SUBDIRS += \ +diff --git x/qtdeclarative/src/imports/imports.pro y/qtdeclarative/src/imports/imports.pro +index 5d7e43488..33390bc42 100644 +--- x/qtdeclarative/src/imports/imports.pro ++++ y/qtdeclarative/src/imports/imports.pro +@@ -5,7 +5,6 @@ + SUBDIRS += \ + builtins \ + qtqml \ +- folderlistmodel \ + models + + qtHaveModule(sql): SUBDIRS += localstorage +@@ -14,13 +13,11 @@ + + qtHaveModule(quick) { + SUBDIRS += \ +- handlers \ + layouts \ + qtquick2 \ + window + + qtHaveModule(testlib): SUBDIRS += testlib +- qtConfig(systemsemaphore): SUBDIRS += sharedimage + qtConfig(quick-particles): \ + SUBDIRS += particles + +-- +2.16.2 + diff --git a/patches/qt-Use-QUrl-toString-when-forming-the-Host-header.patch b/patches/qt-Use-QUrl-toString-when-forming-the-Host-header.patch new file mode 100644 index 0000000..f9b4ab3 --- /dev/null +++ b/patches/qt-Use-QUrl-toString-when-forming-the-Host-header.patch @@ -0,0 +1,55 @@ +From 4ab766863d88a491f91fa81731dbde75d0122d89 Mon Sep 17 00:00:00 2001 +From: Timur Pocheptsov +Date: Mon, 14 May 2018 12:41:23 +0200 +Subject: [PATCH] Use QUrl::toString() when forming the 'Host' header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This allows to correctly use IPv6 literals and also +deals (correctly) with a port (if it's set at all). + +Task-number: QTBUG-68245 +Change-Id: I6d29543887c4ab58d70f0970a6f0a1b822c301df +Reviewed-by: Thiago Macieira +Reviewed-by: Mårten Nordheim +--- + src/websockets/qwebsocket_p.cpp | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +diff --git x/qtwebsockets/src/websockets/qwebsocket_p.cpp y/qtwebsockets/src/websockets/qwebsocket_p.cpp +index d233b66..9b27ad2 100644 +--- x/qtwebsockets/src/websockets/qwebsocket_p.cpp ++++ y/qtwebsockets/src/websockets/qwebsocket_p.cpp +@@ -1108,16 +1108,18 @@ void QWebSocketPrivate::processStateChanged(QAbstractSocket::SocketState socketS + headers << qMakePair(QString::fromLatin1(key), + QString::fromLatin1(m_request.rawHeader(key))); + +- const QString handshake = +- createHandShakeRequest(m_resourceName, +- m_request.url().host() +- % QStringLiteral(":") +- % QString::number(m_request.url().port(port)), +- origin(), +- QString(), +- QString(), +- m_key, +- headers); ++ const auto format = QUrl::RemoveScheme | QUrl::RemoveUserInfo ++ | QUrl::RemovePath | QUrl::RemoveQuery ++ | QUrl::RemoveFragment | QUrl::RemovePort; ++ const QString host = m_request.url().toString(format).mid(2); ++ const QString handshake = createHandShakeRequest(m_resourceName, ++ host % QStringLiteral(":") ++ % QString::number(m_request.url().port(port)), ++ origin(), ++ QString(), ++ QString(), ++ m_key, ++ headers); + if (handshake.isEmpty()) { + m_pSocket->abort(); + Q_EMIT q->error(QAbstractSocket::ConnectionRefusedError); +-- +2.19.0 + diff --git a/patches/qt-Use-user-provided-session-data-if-available.patch b/patches/qt-Use-user-provided-session-data-if-available.patch new file mode 100644 index 0000000..30b05fb --- /dev/null +++ b/patches/qt-Use-user-provided-session-data-if-available.patch @@ -0,0 +1,33 @@ +From bbd5c6feea8632c8321d3cd7a16a262d90f856e8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= +Date: Thu, 22 Nov 2018 11:44:39 +0100 +Subject: [PATCH] Use user provided session data if available + +If a user uses persistent sessions and provide the session to +Qt again with setSessionTicket it should be used with a higher +priority. +This is also a work-around for QTBUG-71967. + +Change-Id: I7351b669b6de2863136d6106dc4f73fa5c7b8c51 +--- + src/network/ssl/qsslcontext_openssl.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git x/qtbase/src/network/ssl/qsslcontext_openssl.cpp y/qtbase/src/network/ssl/qsslcontext_openssl.cpp +index 41b759364b..24dbc9ecbc 100644 +--- x/qtbase/src/network/ssl/qsslcontext_openssl.cpp ++++ y/qtbase/src/network/ssl/qsslcontext_openssl.cpp +@@ -134,8 +134,9 @@ SSL* QSslContext::createSsl() + SSL* ssl = q_SSL_new(ctx); + q_SSL_clear(ssl); + +- if (!session && !sessionASN1().isEmpty() ++ if (!m_sessionASN1.isEmpty() + && !sslConfiguration.testSslOption(QSsl::SslOptionDisableSessionPersistence)) { ++ q_SSL_SESSION_free(session); + const unsigned char *data = reinterpret_cast(m_sessionASN1.constData()); + session = q_d2i_SSL_SESSION(0, &data, m_sessionASN1.size()); // refcount is 1 already, set by function above + } +-- +2.19.1 + diff --git a/patches/qt-configure-detect-fxc.exe-more-thoroughly.patch b/patches/qt-configure-detect-fxc.exe-more-thoroughly.patch new file mode 100644 index 0000000..831bd65 --- /dev/null +++ b/patches/qt-configure-detect-fxc.exe-more-thoroughly.patch @@ -0,0 +1,132 @@ +From d64ee0c6be7e9ce672382709d8ea38e30d1d5e0d Mon Sep 17 00:00:00 2001 +From: Oliver Wolff +Date: Tue, 12 Dec 2017 20:02:55 +0100 +Subject: configure: detect fxc.exe more thoroughly + +When building ANGLE, we need the shader compiler (fxc.exe), which is not +shipped with MinGW. Previously, we required an installed DirectX SDK. +For Windows versions >= 8, the DX SDK is also part of the Windows Kit, +so we also allow the user to specify the location of the Windows Kit. +We also detect fxc on 64-bit hosts now, and in newer SDK versions which +version the binary directory. + +The detected binary is now exported by configure, so the ANGLE project +file does not need to duplicate the logic anymore. + +Task-number: QTBUG-52487 +Change-Id: I41a17992909041dd84291b69498195cc8b8fab8a +--- + src/angle/src/common/common.pri | 16 +--------------- + src/gui/configure.json | 11 +++-------- + src/gui/configure.pri | 31 +++++++++++++++++++++++++++---- + 3 files changed, 31 insertions(+), 27 deletions(-) + +diff --git x/qtbase/src/angle/src/common/common.pri y/qtbase/src/angle/src/common/common.pri +index c1fad14951..2c0af02b58 100644 +--- x/qtbase/src/angle/src/common/common.pri ++++ y/qtbase/src/angle/src/common/common.pri +@@ -21,20 +21,6 @@ lib_replace.replace = \$\$\$\$[QT_INSTALL_LIBS] + lib_replace.CONFIG = path + QMAKE_PRL_INSTALL_REPLACE += lib_replace + +-# DirectX is included in the Windows 8 Kit, but everything else requires the DX SDK. +-winrt|msvc { +- FXC = fxc.exe +-} else { +- DX_DIR = $$(DXSDK_DIR) +- isEmpty(DX_DIR) { +- error("Cannot determine DirectX SDK location. Please set DXSDK_DIR environment variable.") +- } +- +- equals(QMAKE_TARGET.arch, x86_64) { +- FXC = \"$${DX_DIR}Utilities\\bin\\x64\\fxc.exe\" +- } else { +- FXC = \"$${DX_DIR}Utilities\\bin\\x86\\fxc.exe\" +- } +-} ++FXC = $$shell_quote($$shell_path($$QMAKE_FXC_LOCATION)) + + static: DEFINES *= LIBGLESV2_EXPORT_H_ ANGLE_EXPORT= +diff --git x/qtbase/src/gui/configure.json y/qtbase/src/gui/configure.json +index 4145ceddf6..2a96bc5a75 100644 +--- x/qtbase/src/gui/configure.json ++++ y/qtbase/src/gui/configure.json +@@ -702,10 +702,6 @@ + } + }, + +- "testTypeAliases": { +- "files": [ "fxc" ] +- }, +- + "tests": { + "angle_d3d11_qdtd": { + "label": "D3D11_QUERY_DATA_TIMESTAMP_DISJOINT", +@@ -721,9 +717,7 @@ + "fxc": { + "label": "Direct3D Shader Compiler", + "type": "fxc", +- "files": [ +- "fxc.exe" +- ] ++ "log": "value" + }, + "egl-x11": { + "label": "EGL on X11", +@@ -976,7 +970,8 @@ + "condition": "features.dxguid && tests.fxc && (features.direct3d9 || (config.winrt && features.direct3d11 && libs.d3dcompiler))", + "output": [ + "publicFeature", +- { "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" } ++ { "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" }, ++ { "type": "varAssign", "name": "QMAKE_FXC_LOCATION", "value": "tests.fxc.value" } + ] + }, + "angle_d3d11_qdtd": { +diff --git x/qtbase/src/gui/configure.pri y/qtbase/src/gui/configure.pri +index f53a93063c..bc27a756a3 100644 +--- x/qtbase/src/gui/configure.pri ++++ y/qtbase/src/gui/configure.pri +@@ -20,12 +20,35 @@ defineTest(qtConfLibrary_freetype) { + # DXSDK_DIR variable. Starting with Windows Kit 8, it is included in + # the Windows SDK. + defineTest(qtConfTest_fxc) { +- dxdir = $$getenv("DXSDK_DIR") +- !isEmpty(dxdir) { +- EXTRA_PATH += $$dxdir/Utilities/bin/x86 ++ !mingw { ++ fxc = $$qtConfFindInPath("fxc.exe") ++ } else { ++ equals(QMAKE_HOST.arch, x86_64): \ ++ fns = x64/fxc.exe ++ else: \ ++ fns = x86/fxc.exe ++ dxdir = $$(DXSDK_DIR) ++ !isEmpty(dxdir) { ++ fxc = $$dxdir/Utilities/bin/$$fns ++ } else { ++ winkitbindir = $$(WindowsSdkVerBinPath) ++ !isEmpty(winkitbindir) { ++ fxc = $$winkitbindir/$$fns ++ } else { ++ winkitdir = $$(WindowsSdkDir) ++ !isEmpty(winkitdir): \ ++ fxc = $$winkitdir/bin/$$fns ++ } ++ } + } + +- qtConfTest_files($${1}): return(true) ++ !isEmpty(fxc):exists($$fxc) { ++ $${1}.value = $$clean_path($$fxc) ++ export($${1}.value) ++ $${1}.cache += value ++ export($${1}.cache) ++ return(true) ++ } + return(false) + } + +-- +2.17.0 + diff --git a/patches/qt-configure-refactor-directx-checks.patch b/patches/qt-configure-refactor-directx-checks.patch new file mode 100644 index 0000000..0de8fb3 --- /dev/null +++ b/patches/qt-configure-refactor-directx-checks.patch @@ -0,0 +1,442 @@ +From 6b73c48ac35de82b95b74f8dd614fe282209cd61 Mon Sep 17 00:00:00 2001 +From: Oswald Buddenhagen +Date: Tue, 12 Dec 2017 12:21:16 +0100 +Subject: configure: refactor directx checks + +properly atomize the libraries and express their dependencies, and +adjust the project files accordingly. + +note that we don't try to use any additional paths, as all SDKs we +currently support have built-in directx 11 support: +- msvc2013 comes with win sdk 8.1; that is also used for win7 targets +- mingw-64 5.3 (though this one is missing fxc, which is why the code + path for using an external sdk for that remains) + +Change-Id: Ib44e389ef46567308293c2bbcad20a96e8ef70c7 +--- + src/angle/src/common/gles_common.pri | 6 +- + src/angle/src/libEGL/libEGL.pro | 5 +- + src/gui/configure.json | 176 ++++++++++++++---- + src/gui/configure.pri | 19 +- + .../fontdatabases/windows/windows.pri | 9 +- + .../fontdatabases/winrt/winrt.pri | 4 +- + src/plugins/platforms/direct2d/direct2d.pro | 3 +- + src/plugins/platforms/platforms.pro | 6 +- + src/plugins/platforms/windows/windows.pri | 2 + + src/plugins/platforms/winrt/winrt.pro | 3 +- + 10 files changed, 168 insertions(+), 65 deletions(-) + +diff --git x/qtbase/src/angle/src/common/gles_common.pri y/qtbase/src/angle/src/common/gles_common.pri +index 82d38a62e6..927949d758 100644 +--- x/qtbase/src/angle/src/common/gles_common.pri ++++ y/qtbase/src/angle/src/common/gles_common.pri +@@ -5,11 +5,11 @@ INCLUDEPATH += $$OUT_PWD/.. $$ANGLE_DIR/src/libANGLE + + # Remember to adapt src/gui/configure.* if the Direct X version changes. + !winrt: \ +- LIBS_PRIVATE += -ld3d9 ++ QMAKE_USE_PRIVATE += d3d9 + winrt: \ +- LIBS_PRIVATE += -ld3dcompiler -ldxgi -ld3d11 ++ QMAKE_USE_PRIVATE += d3dcompiler d3d11 dxgi + +-LIBS_PRIVATE += -ldxguid ++QMAKE_USE_PRIVATE += dxguid + + STATICLIBS = translator preprocessor + for(libname, STATICLIBS) { +diff --git x/qtbase/src/angle/src/libEGL/libEGL.pro y/qtbase/src/angle/src/libEGL/libEGL.pro +index 9e9c639002..ad2117f2fc 100644 +--- x/qtbase/src/angle/src/libEGL/libEGL.pro ++++ y/qtbase/src/angle/src/libEGL/libEGL.pro +@@ -1,9 +1,10 @@ + include(../common/common.pri) + DEF_FILE_TARGET = $${TARGET} + TARGET = $$qtLibraryTarget($${LIBEGL_NAME}) +-winrt: LIBS_PRIVATE += -ld3d11 ++winrt: QMAKE_USE_PRIVATE += d3d11 ++QMAKE_USE_PRIVATE += dxguid + +-LIBS_PRIVATE += -ldxguid -L$$QT_BUILD_TREE/lib -l$$qtLibraryTarget($${LIBGLESV2_NAME}) ++LIBS_PRIVATE += -L$$QT_BUILD_TREE/lib -l$$qtLibraryTarget($${LIBGLESV2_NAME}) + + DEFINES += GL_APICALL= GL_GLEXT_PROTOTYPES= EGLAPI= LIBEGL_IMPLEMENTATION + +diff --git x/qtbase/src/gui/configure.json y/qtbase/src/gui/configure.json +index 219385a108..4145ceddf6 100644 +--- x/qtbase/src/gui/configure.json ++++ y/qtbase/src/gui/configure.json +@@ -65,21 +65,79 @@ + "-lbcm_host" + ] + }, +- "direct2d": { +- "label": "Direct 2D", +- "export": "", ++ "dxguid": { ++ "label": "DirectX GUID", ++ "sources": [ ++ "-ldxguid" ++ ] ++ }, ++ "dxgi": { ++ "label": "DirectX GI", ++ "headers": [ "dxgi.h" ], ++ "sources": [ ++ "-ldxgi" ++ ] ++ }, ++ "dxgi1_2": { ++ "label": "DirectX GI 1.2", + "test": { +- "include": [ "d3d11_1.h", "d2d1_1.h", "d2d1_1helper.h", "dxgi1_2.h", "wrl.h", "dwrite.h" ], +- "tail": "using Microsoft::WRL::ComPtr;", + "main": [ +- "ComPtr d2dFactory;", +- "D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, d2dFactory.ReleaseAndGetAddressOf());", +- "ComPtr surface;", ++ "// fails with mingw-w64 5.4.0 - declaration is missing from header", ++ "IDXGISurface1 *surface;", + "(void) surface;" + ] + }, ++ "headers": [ "dxgi1_2.h" ], ++ "sources": [ ++ "-ldxgi" ++ ] ++ }, ++ "d3d9": { ++ "label": "Direct3D 9", ++ "headers": "d3d9.h", ++ "sources": [ ++ "-ld3d9" ++ ] ++ }, ++ "d3d11": { ++ "label": "Direct3D 11", ++ "headers": "d3d11.h", ++ "sources": [ ++ "-ld3d11" ++ ] ++ }, ++ "d3d11_1": { ++ "label": "Direct3D 11.1", ++ "headers": "d3d11_1.h", ++ "sources": [ ++ "-ld3d11" ++ ] ++ }, ++ "d3dcompiler": { ++ "label": "Direct3D Shader Compiler Library", ++ "headers": "d3dcompiler.h", ++ "sources": [ ++ "-ld3dcompiler" ++ ] ++ }, ++ "d2d1": { ++ "label": "Direct2D 1", ++ "headers": [ "d2d1.h", "d2d1helper.h" ], ++ "sources": [ ++ "-ld2d1" ++ ] ++ }, ++ "d2d1_1": { ++ "label": "Direct2D 1.1", ++ "test": { ++ "main": [ ++ "ID2D1Factory1 *d2dFactory;", ++ "D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &d2dFactory);" ++ ] ++ }, ++ "headers": [ "d2d1_1.h", "d2d1_1helper.h" ], + "sources": [ +- "-ld2d1 -ldwrite -ld3d11" ++ "-ld2d1" + ] + }, + "directfb": { +@@ -96,9 +154,8 @@ + { "type": "pkgConfig", "args": "directfb" } + ] + }, +- "directwrite": { ++ "dwrite": { + "label": "DirectWrite", +- "export": "", + "test": { + "include": [ "dwrite.h", "d2d1.h" ], + "main": [ +@@ -107,6 +164,29 @@ + " (IUnknown **)(&factory));" + ] + }, ++ "headers": "dwrite.h", ++ "sources": [ ++ "-ldwrite" ++ ] ++ }, ++ "dwrite_1": { ++ "label": "DirectWrite 1", ++ "headers": "dwrite_1.h", ++ "sources": [ ++ "-ldwrite" ++ ] ++ }, ++ "dwrite_2": { ++ "label": "DirectWrite 2", ++ "test": { ++ "main": [ ++ "IUnknown *factory = 0;", ++ "(void)(size_t(DWRITE_E_NOCOLOR) + sizeof(IDWriteFontFace2));", ++ "DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory2),", ++ " &factory);" ++ ] ++ }, ++ "headers": "dwrite_2.h", + "sources": [ + "-ldwrite" + ] +@@ -623,7 +703,7 @@ + }, + + "testTypeAliases": { +- "files": [ "directX" ] ++ "files": [ "fxc" ] + }, + + "tests": { +@@ -638,26 +718,10 @@ + ] + } + }, +- "directwrite2": { +- "label": "DirectWrite 2", +- "type": "compile", +- "test": { +- "include": [ "dwrite_2.h", "d2d1.h" ], +- "main": [ +- "IUnknown *factory = 0;", +- "(void)(size_t(DWRITE_E_NOCOLOR) + sizeof(IDWriteFontFace2));", +- "DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory2),", +- " &factory);" +- ] +- }, +- "use": "directwrite" +- }, +- "directx": { +- "label": "DirectX SDK", +- "type": "directX", ++ "fxc": { ++ "label": "Direct3D Shader Compiler", ++ "type": "fxc", + "files": [ +- "d3dcompiler.h", +- "d3d11.lib", + "fxc.exe" + ] + }, +@@ -909,7 +973,7 @@ + "angle": { + "label": "ANGLE", + "autoDetect": "features.opengles2 || features.opengl-dynamic", +- "condition": "config.win32 && tests.directx", ++ "condition": "features.dxguid && tests.fxc && (features.direct3d9 || (config.winrt && features.direct3d11 && libs.d3dcompiler))", + "output": [ + "publicFeature", + { "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" } +@@ -936,19 +1000,59 @@ + "directwrite": { + "label": "DirectWrite", + "emitIf": "config.win32", +- "condition": "libs.directwrite", ++ "condition": "libs.dwrite", ++ "output": [ "privateFeature" ] ++ }, ++ "directwrite1": { ++ "label": "DirectWrite 1", ++ "emitIf": "config.win32", ++ "condition": "libs.dwrite_1", + "output": [ "privateFeature" ] + }, + "directwrite2": { + "label": "DirectWrite 2", + "emitIf": "config.win32", +- "condition": "features.directwrite && tests.directwrite2", ++ "condition": "features.directwrite1 && libs.dwrite_2", ++ "output": [ "privateFeature" ] ++ }, ++ "dxguid": { ++ "label": "DirectX GUID", ++ "condition": "config.win32 && libs.dxguid", ++ "output": [ "privateFeature" ] ++ }, ++ "direct3d9": { ++ "label": "Direct 3D 9", ++ "condition": "config.win32 && !config.winrt && libs.d3d9", ++ "output": [ "privateFeature" ] ++ }, ++ "dxgi": { ++ "label": "DirectX GI", ++ "condition": "config.win32 && libs.dxgi", ++ "output": [ "privateFeature" ] ++ }, ++ "dxgi1_2": { ++ "label": "DirectX GI 1.2", ++ "condition": "features.dxgi && libs.dxgi1_2", ++ "output": [ "privateFeature" ] ++ }, ++ "direct3d11": { ++ "label": "Direct 3D 11", ++ "condition": "features.dxgi && libs.d3d11", ++ "output": [ "privateFeature" ] ++ }, ++ "direct3d11_1": { ++ "label": "Direct 3D 11.1", ++ "condition": "features.direct3d11 && features.dxgi1_2 && libs.d3d11_1", + "output": [ "privateFeature" ] + }, + "direct2d": { + "label": "Direct 2D", +- "section": "Platform plugins", +- "condition": "config.win32 && !config.winrt && libs.direct2d", ++ "condition": "config.win32 && !config.winrt && features.direct3d11 && libs.d2d1", ++ "output": [ "privateFeature" ] ++ }, ++ "direct2d1_1": { ++ "label": "Direct 2D 1.1", ++ "condition": "features.direct2d && libs.d2d1_1", + "output": [ "privateFeature" ] + }, + "evdev": { +diff --git x/qtbase/src/gui/configure.pri y/qtbase/src/gui/configure.pri +index fcd2d1f73e..f53a93063c 100644 +--- x/qtbase/src/gui/configure.pri ++++ y/qtbase/src/gui/configure.pri +@@ -15,29 +15,16 @@ defineTest(qtConfLibrary_freetype) { + return(true) + } + +-# Check for Direct X SDK (include, lib, and direct shader compiler 'fxc'). ++# Check for Direct X shader compiler 'fxc'. + # Up to Direct X SDK June 2010 and for MinGW, this is pointed to by the + # DXSDK_DIR variable. Starting with Windows Kit 8, it is included in +-# the Windows SDK. Checking for the header is not sufficient, since it +-# is also present in MinGW. +-defineTest(qtConfTest_directX) { ++# the Windows SDK. ++defineTest(qtConfTest_fxc) { + dxdir = $$getenv("DXSDK_DIR") + !isEmpty(dxdir) { +- EXTRA_INCLUDEPATH += $$dxdir/include +- equals(QT_ARCH, x86_64): \ +- EXTRA_LIBDIR += $$dxdir/lib/x64 +- else: \ +- EXTRA_LIBDIR += $$dxdir/lib/x86 + EXTRA_PATH += $$dxdir/Utilities/bin/x86 + } + +- $$qtConfEvaluate("features.sse2") { +- ky = $$size($${1}.files._KEYS_) +- $${1}.files._KEYS_ += $$ky +- # Not present on MinGW-32 +- $${1}.files.$${ky} = "intrin.h" +- } +- + qtConfTest_files($${1}): return(true) + return(false) + } +diff --git x/qtbase/src/platformsupport/fontdatabases/windows/windows.pri y/qtbase/src/platformsupport/fontdatabases/windows/windows.pri +index 0e64084cf1..9c529f55ea 100644 +--- x/qtbase/src/platformsupport/fontdatabases/windows/windows.pri ++++ y/qtbase/src/platformsupport/fontdatabases/windows/windows.pri +@@ -15,9 +15,14 @@ qtConfig(freetype) { + HEADERS += $$PWD/qwindowsfontdatabase_ft_p.h + } + +-qtConfig(directwrite) { +- qtConfig(directwrite2): \ ++qtConfig(directwrite):qtConfig(direct2d) { ++ qtConfig(directwrite2) { ++ QMAKE_USE_PRIVATE += dwrite_2 + DEFINES *= QT_USE_DIRECTWRITE2 ++ } else { ++ QMAKE_USE_PRIVATE += dwrite ++ } ++ QMAKE_USE_PRIVATE += d2d1 + + SOURCES += $$PWD/qwindowsfontenginedirectwrite.cpp + HEADERS += $$PWD/qwindowsfontenginedirectwrite_p.h +diff --git x/qtbase/src/platformsupport/fontdatabases/winrt/winrt.pri y/qtbase/src/platformsupport/fontdatabases/winrt/winrt.pri +index 291ada220f..7617df2e7a 100644 +--- x/qtbase/src/platformsupport/fontdatabases/winrt/winrt.pri ++++ y/qtbase/src/platformsupport/fontdatabases/winrt/winrt.pri +@@ -8,4 +8,6 @@ HEADERS += \ + + DEFINES += __WRL_NO_DEFAULT_LIB__ + +-LIBS += -lws2_32 -ldwrite ++LIBS += -lws2_32 ++ ++QMAKE_USE_PRIVATE += dwrite_1 +diff --git x/qtbase/src/plugins/platforms/direct2d/direct2d.pro y/qtbase/src/plugins/platforms/direct2d/direct2d.pro +index 3bfd02bdc8..9764272632 100644 +--- x/qtbase/src/plugins/platforms/direct2d/direct2d.pro ++++ y/qtbase/src/plugins/platforms/direct2d/direct2d.pro +@@ -8,7 +8,8 @@ QT += \ + qtConfig(accessibility): QT += accessibility_support-private + qtConfig(vulkan): QT += vulkan_support-private + +-LIBS += -ldwmapi -ld2d1 -ld3d11 -ldwrite -lversion -lgdi32 ++LIBS += -ldwmapi -lversion -lgdi32 ++QMAKE_USE_PRIVATE += dwrite_1 d2d1_1 d3d11_1 dxgi1_2 + + include(../windows/windows.pri) + +diff --git x/qtbase/src/plugins/platforms/platforms.pro y/qtbase/src/plugins/platforms/platforms.pro +index e61887618f..b70d8d5996 100644 +--- x/qtbase/src/plugins/platforms/platforms.pro ++++ y/qtbase/src/plugins/platforms/platforms.pro +@@ -14,10 +14,10 @@ qtConfig(xcb) { + uikit:!watchos: SUBDIRS += ios + osx: SUBDIRS += cocoa + +-win32:!winrt: SUBDIRS += windows +-winrt: SUBDIRS += winrt ++win32:!winrt:qtConfig(direct3d9): SUBDIRS += windows ++winrt:qtConfig(direct3d11): SUBDIRS += winrt + +-qtConfig(direct2d) { ++qtConfig(direct3d11_1):qtConfig(direct2d1_1):qtConfig(directwrite1) { + SUBDIRS += direct2d + } + +diff --git x/qtbase/src/plugins/platforms/windows/windows.pri y/qtbase/src/plugins/platforms/windows/windows.pri +index f4c396f7c5..2f244d8b71 100644 +--- x/qtbase/src/plugins/platforms/windows/windows.pri ++++ y/qtbase/src/plugins/platforms/windows/windows.pri +@@ -9,6 +9,8 @@ mingw: LIBS *= -luuid + # For the dialog helpers: + LIBS += -lshlwapi -lshell32 -ladvapi32 + ++QMAKE_USE_PRIVATE += d3d9/nolink ++ + DEFINES *= QT_NO_CAST_FROM_ASCII + + SOURCES += \ +diff --git x/qtbase/src/plugins/platforms/winrt/winrt.pro y/qtbase/src/plugins/platforms/winrt/winrt.pro +index 042b270cff..fc70eba979 100644 +--- x/qtbase/src/plugins/platforms/winrt/winrt.pro ++++ y/qtbase/src/plugins/platforms/winrt/winrt.pro +@@ -8,7 +8,8 @@ QT += \ + + DEFINES *= QT_NO_CAST_FROM_ASCII __WRL_NO_DEFAULT_LIB__ + +-LIBS += -lws2_32 -ld3d11 ++LIBS += -lws2_32 ++QMAKE_USE_PRIVATE += d3d11 + + SOURCES = \ + main.cpp \ +-- +2.17.0 + diff --git a/patches/qt-disable-designer.patch b/patches/qt-disable-designer.patch new file mode 100644 index 0000000..4e303ad --- /dev/null +++ b/patches/qt-disable-designer.patch @@ -0,0 +1,36 @@ +diff --git x/qttools/src/linguist/linguist.pro y/qttools/src/linguist/linguist.pro +index 103336da..2fe9656d 100644 +--- x/qttools/src/linguist/linguist.pro ++++ y/qttools/src/linguist/linguist.pro +@@ -3,11 +3,6 @@ SUBDIRS = \ + lrelease \ + lupdate \ + lconvert +-!no-png:qtHaveModule(widgets):qtConfig(process): SUBDIRS += linguist +- +-qtNomakeTools( \ +- linguist \ +-) + + equals(QMAKE_HOST.os, Windows): CMAKE_BIN_SUFFIX = ".exe" + +diff --git x/qttools/src/src.pro y/qttools/src/src.pro +index 41064a5d..fcef4dd8 100644 +--- x/qttools/src/src.pro ++++ y/qttools/src/src.pro +@@ -3,12 +3,6 @@ TEMPLATE = subdirs + qtHaveModule(widgets) { + no-png { + message("Some graphics-related tools are unavailable without PNG support") +- } else { +- SUBDIRS = assistant \ +- pixeltool \ +- designer +- +- linguist.depends = designer + } + } + +-- +2.14.3 + diff --git a/patches/qt-fix-macOS-no-printer.patch b/patches/qt-fix-macOS-no-printer.patch new file mode 100644 index 0000000..f336acb --- /dev/null +++ b/patches/qt-fix-macOS-no-printer.patch @@ -0,0 +1,19 @@ +--- x/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h ++++ y/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h +@@ -52,6 +52,7 @@ + // + + #include ++#include + + #ifndef QT_NO_PRINTER + +--- x/qtbase/src/plugins/plugins.pro ++++ y/qtbase/src/plugins/plugins.pro +@@ -9,6 +9,3 @@ + !android:qtConfig(library): SUBDIRS *= generic + } + qtHaveModule(widgets): SUBDIRS += styles +- +-!winrt:qtHaveModule(printsupport): \ +- SUBDIRS += printsupport diff --git a/patches/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch b/patches/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch deleted file mode 100644 index 34ba698..0000000 --- a/patches/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 13f25c979fe4396e6d5a76bf183341229da2bacd Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt -Date: Thu, 30 Nov 2017 15:00:26 +0100 -Subject: [PATCH] macOS/iOS: Fix garbled text under some conditions - -There seems to be an issue in CoreText which may cause an existing -font descriptor to give unreliable results if it refers to one of -the system theme fonts. Since we do not know all function calls -or events that may trigger this bug, the safe route is to always -create fresh font descriptors when creating fonts for these -descriptors. The impact on performance should be small, as Qt has -its own internal caches. - -[ChangeLog][macOS/iOS][Text] Fixed an issue where text using -one of the system theme fonts would under certain circumstances -display random glyphs. - -Task-number: QTBUG-63476 -Change-Id: I9e9b253018c63976345eec1439a6b78de2cab869 ---- - .../fontdatabases/mac/qcoretextfontdatabase.mm | 24 ++++++++++++++-------- - .../fontdatabases/mac/qcoretextfontdatabase_p.h | 4 +++- - 2 files changed, 19 insertions(+), 9 deletions(-) - -diff --git x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm -index 6347d4d231..237e8a89a5 100644 ---- x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm -+++ y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm -@@ -416,7 +416,19 @@ extern CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef); - template <> - QFontEngine *QCoreTextFontDatabaseEngineFactory::fontEngine(const QFontDef &fontDef, void *usrPtr) - { -- CTFontDescriptorRef descriptor = static_cast(usrPtr); -+ QCFType descriptor = QCFType::constructFromGet( -+ static_cast(usrPtr)); -+ -+ // CoreText will sometimes invalidate information in font descriptors that refer -+ // to system fonts in certain function calls or application states. While the descriptor -+ // looks the same from the outside, some internal plumbing is different, causing the results -+ // of creating CTFonts from those descriptors unreliable. The work-around for this -+ // is to copy the attributes of those descriptors each time we make a new CTFont -+ // from them instead of referring to the original, as that may trigger the CoreText bug. -+ if (m_systemFontDescriptors.contains(descriptor)) { -+ QCFType attributes = CTFontDescriptorCopyAttributes(descriptor); -+ descriptor = CTFontDescriptorCreateWithAttributes(attributes); -+ } - - // Since we do not pass in the destination DPI to CoreText when making - // the font, we need to pass in a point size which is scaled to include -@@ -427,14 +439,10 @@ QFontEngine *QCoreTextFontDatabaseEngineFactory::fontEngine - qreal scaledPointSize = fontDef.pixelSize; - - CGAffineTransform matrix = qt_transform_from_fontdef(fontDef); -- CTFontRef font = CTFontCreateWithFontDescriptor(descriptor, scaledPointSize, &matrix); -- if (font) { -- QFontEngine *engine = new QCoreTextFontEngine(font, fontDef); -- CFRelease(font); -- return engine; -- } -+ if (QCFType font = CTFontCreateWithFontDescriptor(descriptor, scaledPointSize, &matrix)) -+ return new QCoreTextFontEngine(font, fontDef); - -- return NULL; -+ return nullptr; - } - - #ifndef QT_NO_FREETYPE -diff --git x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h -index 9612b909f1..e14d1d6e6e 100644 ---- x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h -+++ y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h -@@ -91,12 +91,14 @@ public: - QFont *themeFont(QPlatformTheme::Font) const; - const QHash &themeFonts() const; - -+protected: -+ mutable QSet m_systemFontDescriptors; -+ - private: - void populateFromDescriptor(CTFontDescriptorRef font, const QString &familyName = QString()); - - mutable QString defaultFontName; - -- mutable QSet m_systemFontDescriptors; - mutable QHash m_themeFonts; - bool m_hasPopulatedAliases; - }; --- -2.15.1 - diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 2590f11..5d40bc5 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -14,17 +14,20 @@ SET(QRC_FILES "ausweisapp.qrc") IF(IOS OR ANDROID OR ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") LIST(APPEND QRC_FILES "ausweisapp_mobile.qrc") - - SET(ausweisapp_qml.qrc "${CMAKE_CURRENT_BINARY_DIR}/ausweisapp_qml.qrc") - WRITE_QRC("${ausweisapp_qml.qrc}" "${CMAKE_CURRENT_SOURCE_DIR}/qml" "qml") - LIST(APPEND QRC_FILES "${ausweisapp_qml.qrc}") ENDIF() IF(DESKTOP) LIST(APPEND QRC_FILES "ausweisapp_desktop.qrc") ENDIF() +IF(TARGET Qt5::Qml) + SET(ausweisapp_qml.qrc "${CMAKE_CURRENT_BINARY_DIR}/ausweisapp_qml.qrc") + WRITE_QRC("${ausweisapp_qml.qrc}" "${CMAKE_CURRENT_SOURCE_DIR}/qml" "qml") + LIST(APPEND QRC_FILES "${ausweisapp_qml.qrc}") + + SET(QML_IMPORT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/qml CACHE string "qml files" FORCE) +ENDIF() + SET(RCC ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.rcc) SET(RCC ${RCC} PARENT_SCOPE) qt5_add_binary_resources(AusweisAppRcc "${QRC_FILES}" DESTINATION ${RCC}) -SET(QML_IMPORT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/qml ${CMAKE_CURRENT_SOURCE_DIR}/qml_stationary CACHE string "qml files" FORCE) diff --git a/resources/asan_blacklist b/resources/asan_blacklist index 60992d5..a04a67a 100644 --- a/resources/asan_blacklist +++ b/resources/asan_blacklist @@ -1,7 +1,9 @@ # Recommended usage: -# LSAN_OPTIONS=suppressions=/home/dev/src/asan_blacklist ./AusweisApp2 +# LSAN_OPTIONS=suppressions=/home/dev/AusweisApp2.src/resources/asan_blacklist ./AusweisApp2 leak:g_malloc* leak:CRYPTO_malloc leak:libxcb* -leak:Q* +leak:QQuick* +leak:QKde* +leak:QQml* diff --git a/resources/ausweisapp.qrc b/resources/ausweisapp.qrc index 922c7be..a845aba 100644 --- a/resources/ausweisapp.qrc +++ b/resources/ausweisapp.qrc @@ -10,17 +10,13 @@ images/bt_3b.svg images/bt_4.svg images/bt_4b.svg - images/bspd1.svg images/canHint.png images/icon_attention.svg images/icon_ok.png images/icon_cancelled.png images/Icon_Checked.svg - images/android/search_icon.svg - images/android/search_cancel.svg - images/iOS/search_icon.svg - images/iOS/search_cancel.svg - images/back-chevron.png + images/search.svg + images/cancel.svg images/iOS/tabBar/Anbieter-off.png images/iOS/tabBar/Anbieter-on.png images/iOS/tabBar/Ausweisen-off.png @@ -32,14 +28,12 @@ images/icon_Pin.svg images/iOS/tabBar/More-off.svg images/iOS/tabBar/More-on.svg - images/rotes_X.svg - images/gruener_Haken.svg + images/status_error.svg + images/status_info.svg + images/status_ok.svg images/iOS/CheckedCheckbox.png - images/iOS/Header-Ausweisapp@3x.png - images/delete.png images/delete.svg images/NFCPhoneCard.png - images/submit.png images/submit.svg images/ausweis.png images/provider/information.svg @@ -86,5 +80,7 @@ images/location_flag_de.svg images/location_flag_en.svg images/siteWithLogo.png + images/icon_pair.svg + images/icon_settings.svg diff --git a/resources/ausweisapp_desktop.qrc b/resources/ausweisapp_desktop.qrc index d8f5c60..8a439b1 100644 --- a/resources/ausweisapp_desktop.qrc +++ b/resources/ausweisapp_desktop.qrc @@ -4,18 +4,25 @@ html_templates/error.html stylesheets/desktop.qss images/beta.svg - images/green_check_mark.svg images/MenuSelected.png images/MenuUnselected.png images/MenuUnselectedDisabled.png images/npa.ico - images/Logo_AutentApp2_2014.png - images/AppLogo_AutentApp2_2014.png + images/Logo_Governikus.png + images/Logo_AusweisApp2.png images/start_nPA_eAT.png images/busy_animation.gif images/html_message_section.jpg - images/padlock.svg - images/padlock_empty.svg + images/desktop/background.png + images/desktop/help_icon.svg + images/desktop/main_history.svg + images/desktop/main_identify.svg + images/desktop/main_pin.svg + images/desktop/main_provider.svg + images/desktop/sandglass.svg + images/desktop/settings_icon.svg + images/desktop/titlebar_arrow.svg + images/desktop/continue_arrow.svg images/randompin/btn_normal_0.png images/randompin/btn_normal_1.png images/randompin/btn_normal_2.png @@ -56,8 +63,8 @@ updatable-files/reader/img_Gemalto_Prox_SU_mit_ausweis.png updatable-files/reader/img_HID_Global_OMNIKEY_5321_V2.png updatable-files/reader/img_HID_Global_OMNIKEY_5321_V2_mit_ausweis.png - updatable-files/reader/img_HID_Omnikey_5421.png - updatable-files/reader/img_HID_Omnikey_5421_mit_ausweis.png + updatable-files/reader/img_HID_Omnikey_542x.png + updatable-files/reader/img_HID_Omnikey_542x_mit_ausweis.png updatable-files/reader/img_HID_Omnikey_Mobile_Reader_502X_CL.png updatable-files/reader/img_HID_Omnikey_Mobile_Reader_502X_CL_mit_ausweis.png updatable-files/reader/img_HID_Omnikey_Mobile_Reader_4121_CL.png @@ -86,5 +93,9 @@ updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_standard_mit_ausweis.png updatable-files/reader/img_RemoteReader.png updatable-files/reader/img_RemoteReader_mit_ausweis.png + updatable-files/reader/img_Cherry_ST_1275.png + updatable-files/reader/img_Cherry_ST_1275_mit_ausweis.png + updatable-files/reader/img_Signotec_Omega_Pad.png + updatable-files/reader/img_Signotec_Omega_Pad_mit_ausweis.png diff --git a/resources/ausweisapp_mobile.qrc b/resources/ausweisapp_mobile.qrc index 7a6761e..94ce12b 100644 --- a/resources/ausweisapp_mobile.qrc +++ b/resources/ausweisapp_mobile.qrc @@ -3,43 +3,133 @@ qtquickcontrols2.conf images/zahnraeder.svg images/check.svg - images/iOS/arrowLeft.svg - images/iOS/arrowRight.svg - images/iOS/list_item_arrow.svg - images/iOS/radio_button_check_ios.svg - images/iOS/toggle_on.png - images/iOS/toggle_off.png - images/iOS/toggle_disabled.png + images/arrowRight.svg + images/share.svg images/android/navigation/ausweisen.svg images/android/navigation/anbieter.svg images/android/navigation/balloon.svg images/android/navigation/remoteleser.svg images/android/navigation/verlauf.svg images/android/navigation/pin.svg - images/android/navigation/versionsinformation.svg images/android/navigation/faq.svg images/android/navigation/support.svg images/android/navigation/bewerten.svg - images/android/navigation/teilen.svg - images/android/checkbox_0.svg - images/android/checkbox_1.svg - images/android/tabDivider.svg - images/android/arrowRight.svg - images/android/arrowLeft.svg - images/android/arrowRightWhite.svg - images/android/arrowLeftWhite.svg - images/android/android_toggle_on.png - images/android/android_toggle_off.png - images/android/android_toggle_on_disabled.png - images/android/android_toggle_off_disabled.png - images/android/android_arrow_back.svg - images/android/android_arrow_back_white.svg + images/android/navigation/tutorial.svg + images/iOS/search_icon.svg + images/iOS/search_cancel.svg images/iOS/more/icon_mehr_favorit.svg images/iOS/more/icon_mehr_fragen.svg images/iOS/more/icon_mehr_info.svg images/iOS/more/icon_mehr_license.svg images/iOS/more/icon_mehr_remotereader.svg images/iOS/more/icon_mehr_upload.svg + images/iOS/more/icon_mehr_log.svg + images/iOS/more/icon_mehr_tutorial.svg + images/tutorial/main_menu_what_caret.svg + images/tutorial/main_menu_where_caret.svg + images/tutorial/main_menu_how_caret.svg + images/tutorial/main_menu_important_caret.svg + images/tutorial/arrow_blue.svg + images/tutorial/arrows.svg + images/tutorial/button_de.png + images/tutorial/button_en.png + images/tutorial/idcard.svg + images/tutorial/identify.svg + images/tutorial/questionmark.svg + images/tutorial/hint.svg + images/tutorial/thumb_up.svg + images/tutorial/hand.svg + images/tutorial/check.svg + images/tutorial/click.svg + images/tutorial/save.svg + images/tutorial/bva.svg + images/tutorial/provider_home.svg + images/tutorial/rectangles.svg + images/tutorial/zoom_triangle.svg + images/tutorial/laptop.svg + images/tutorial/tablet.svg + images/tutorial/tablet-nfc.svg + images/tutorial/tablet-no-nfc.svg + images/tutorial/reader.svg + images/tutorial/desktop.svg + images/tutorial/phone.svg + images/tutorial/phone_list.svg + images/tutorial/phone-screen.svg + images/tutorial/nfc.svg + images/tutorial/no-nfc.svg + images/tutorial/wifi.svg + images/tutorial/bluetooth.svg + images/tutorial/letters.svg + images/tutorial/usb.svg + images/tutorial/circle-1.svg + images/tutorial/circle-2.svg + images/tutorial/circle-3.svg + images/tutorial/circle-4.svg + images/tutorial/circle-lock.svg + images/tutorial/circle-lock-2.svg + images/tutorial/up_icon.svg + images/tutorial/phone_screen_de.jpg + images/tutorial/phone_screen_en.jpg + images/tutorial/pin-5@2x.png + images/tutorial/pin-6@2x.png + images/tutorial/user-tine@3x.png + images/tutorial/providericons.png + images/tutorial/play_movie.png + images/tutorial/screenshot_cert_de.png + images/tutorial/screenshot_cert_en.png + images/tutorial/screenshot_providerlist_de.png + images/tutorial/screenshot_providerlist_en.png + images/tutorial/screenshot_menu_providerlist_de.png + images/tutorial/screenshot_menu_providerlist_en.png + images/tutorial/screenshot_pairing_de.png + images/tutorial/screenshot_pairing_en.png + images/tutorial/screenshot_sac_menu_de.png + images/tutorial/screenshot_sac_menu_en.png + images/tutorial/screenshot_choose_reader_de.png + images/tutorial/screenshot_choose_reader_en.png + images/tutorial/screenshot_pin_management_menu_en.png + images/tutorial/screenshot_pin_management_menu_de.png + images/tutorial/section_seperator_what.svg + images/tutorial/section_seperator_where.svg + images/tutorial/section_seperator_how.svg + images/tutorial/section_seperator_important.svg + images/tutorial/generated/where_overview_question.svg + images/tutorial/generated/where_providerlist_screenshot_de.svg + images/tutorial/generated/where_providerlist_screenshot_en.svg + images/tutorial/generated/where_identify_now_de.svg + images/tutorial/generated/where_identify_now_en.svg + images/tutorial/generated/where_userdata_example_de.svg + images/tutorial/generated/where_userdata_example_en.svg + images/tutorial/generated/where_lay_down_id.svg + images/tutorial/generated/where_pin6.svg + images/tutorial/generated/how_questions_everywhere.svg + images/tutorial/generated/how_device_lineup.svg + images/tutorial/generated/how_method_nfc.svg + images/tutorial/generated/how_method_sac_desktop.svg + images/tutorial/generated/how_method_sac_mobile.svg + images/tutorial/generated/how_method_bluetooth.svg + images/tutorial/generated/how_form_no_fun.svg + images/tutorial/generated/how_desktop.svg + images/tutorial/generated/important_pin5.svg + images/tutorial/generated/important_pin6.svg + images/tutorial/generated/important_lets_go.svg + images/tutorial/generated/important_space_questionmark.svg + images/tutorial/generated/reader_nfc_provider_on_smartphone.svg + images/tutorial/generated/reader_nfc_npa_on_smartphone.svg + images/tutorial/generated/reader_nfc_smartphone_nfc_position.svg + images/tutorial/generated/reader_nfc_finished.svg + images/tutorial/generated/reader_nfc_pin6.svg + images/tutorial/generated/reader_nfc_userdata_example_de.svg + images/tutorial/generated/reader_nfc_userdata_example_en.svg + images/tutorial/generated/reader_sac_provider_on_laptop.svg + images/tutorial/generated/reader_sac_npa_on_laptop.svg + images/tutorial/generated/reader_sac_aa2_ok.svg + images/tutorial/generated/reader_sac_menu_de.svg + images/tutorial/generated/reader_sac_menu_en.svg + images/tutorial/generated/reader_sac_no_nfc_devices.svg + images/tutorial/generated/reader_sac_no_nfc_provider.svg + images/tutorial/generated/reader_bluetooth_card_inserted.svg + images/tutorial/generated/reader_bluetooth_connection.svg images/provider/categoryIcons/general.svg images/provider/categoryIcons/citizen.svg images/provider/categoryIcons/finance.svg @@ -58,5 +148,7 @@ images/phone_to_pc.svg images/android/navigation/remotesettings.svg images/trash_icon.svg + images/trash_icon_all.svg + images/trash_icon_white.svg diff --git a/resources/config.json.in b/resources/config.json.in index a8759fe..3204cd6 100644 --- a/resources/config.json.in +++ b/resources/config.json.in @@ -3,11 +3,13 @@ "_comment_1": "array of CVCs; hex encoded", "_comment_2": [ + "DECVCAeID00104_DECVCAeID00105", "DECVCAeID00103_DECVCAeID00104", "DECVCAeID00102_DECVCAeID00103", "DECVCAeID00102" ], "cvRootCertificates": [ + "7F218201B67F4E82016E5F290100420E44454356434165494430303130347F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A786410459D1A08A2572022E17FED831982A9CB904518003CF83DABED88DBED28963768B88DBA22A153558BD21DDAA99318378B7CD7EBFE849557CD43F8526ABE72734538701015F200E44454356434165494430303130357F4C12060904007F0007030102025305FC0F13FFFF5F25060108000601025F24060201000601025F37402FBEEAE1B1ADE6CFB6CAB9D9B19F6A6EFACB7D9701997F43CF608BF72CF496F485F691E75190DEC25C672B92CF9BA917883659A6DC16793D22BBEC4019C616CC", "7F218201B67F4E82016E5F290100420E44454356434165494430303130337F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104241D8627338B64F20077FFD558909A096C635DDB222852038EAAE642E869A40173D588F817D95DB2A6A0F077EA5EE63596A20F85BC3CB176D2F98D88D90219AA8701015F200E44454356434165494430303130347F4C12060904007F0007030102025305FC0F13FFFF5F25060105000901045F24060108000901045F3740313A81ED8734E7A8C45F16B55FB603E63027B7F44C2DE3A8E782552D35949DB221CA33BD41A01DA6A1288C7885714FC3A03FA45683B75D3884930EC6738AF8A0", "7F218201B67F4E82016E5F290100420E44454356434165494430303130327F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641048925419FC7F194922CFC6B8DD25AE6A19C1B59216E6CF06270E5D75CFD64205F55CF867BBFEFEEFD6E680E1FD197F18AB684484901362568EFC9ADB5C6018D728701015F200E44454356434165494430303130337F4C12060904007F0007030102025305FC0F13FFFF5F25060102010200035F24060105010200035F37404D6F08A86A4F18409F6685387DD3C6A7FF5D68EA4F7714A861BBB3BB721D05D3014ADF1763C9292F715D8E94EE9B3E1B73AB1382414EBF39DFB3B0FB6C09DBEB", "7F218201B67F4E82016E5F290100420E44454356434165494430303130327F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641043347ECF96FFB4BD9B8554EFBCCFC7D0B242F1071E29B4C9C622C79E339D840AF67BEB9B912692265D9C16C62573F4579FFD4DE2DE92BAB409DD5C5D48244A9F78701015F200E44454356434165494430303130327F4C12060904007F0007030102025305FE0F01FFFF5F25060100010001085F24060103010001085F37405067145C68CAE9520F5BB34817F1CA9C43593DB56406C6A3B006CBF3F314E7349ACF0CC6BFEBCBDEFD10B4DCF0F231DA56977D88F9F90182D199076A56506451" @@ -15,19 +17,21 @@ "_comment_3": "array of Test-CVCs; hex encoded", "_comment_4": [ - "DETESTeID00001", - "DETESTeID00001_DETESTeID00002", - "DETESTeID00002_DETESTeID00004", + "DETESTeID00005_DETESTeID00006", "DETESTeID00004_DETESTeID00005", + "DETESTeID00002_DETESTeID00004", + "DETESTeID00001_DETESTeID00002", + "DETESTeID00001", "DECVCAeIDCTL0401_DECVCAeIDCTL0402", "DECVCAeIDCT00001_DECVCAeIDCTL0401", "DECVCAeIDCT00001_DECVCAeIDCT00001" ], "cvRootCertificatesTest": [ - "7F218201B67F4E82016E5F290100420E44455445535465494430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104184BB519FC2A8F52DC0DC73112FACFE914F2A49B678DD5799A2B1DFE95E1A66359014E22FA8D66438413CEBA6CF0E215576B673376BF617AF4DFE9761D2290148701015F200E44455445535465494430303030317F4C12060904007F0007030102025305FE0F01FFFF5F25060100000801035F24060103000801035F37409F25EBFAF4B91E4C60A1683754C5DC076A3179753EF97D9F8CB01FE1DCD3B8C83E7A26602AB1F344BE5706006D79A9FF6A9716404DC83B9F30E1213B393128A2", - "7F218201B67F4E82016E5F290100420E44455445535465494430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104096EB58BFD86252238EC2652185C43C3A56C320681A21E37A8E69DDC387C0C5F5513856EFE2FDC656E604893212E29449B365E304605AC5413E75BE31E641F128701015F200E44455445535465494430303030327F4C12060904007F0007030102025305FE0F01FFFF5F25060100000902015F24060103000902015F3740141120A0FDFC011A52F3F72B387A3DC7ACA88B4868D5AE9741780B6FF8A0B49E5F55169A2D298EF5CF95935DCA0C3DF3E9D42DC45F74F2066317154961E6C746", - "7F218201B67F4E82016E5F290100420E44455445535465494430303030327F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A786410474FF63AB838C73C303AC003DFEE95CF8BF55F91E8FEBCB7395D942036E47CF1845EC786EC95BB453AAC288AD023B6067913CF9B63F908F49304E5CFC8B3050DD8701015F200E44455445535465494430303030347F4C12060904007F0007030102025305FC0F13FFFF5F25060102000501015F24060105000501015F37405C035A0611B6C58F0B5261FDD009DECAB7DC7A79482D5248CCA119059B7D82B2157CF0C4A499BCF441EFDD35E294A58C0AF19A34A0762159533285ACF170A505", + "7F218201B67F4E82016E5F290100420E44455445535465494430303030357F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A786410425AB80F9C7BCA0AB1759D8E469F911CC006D02131552AA5F248B2A38D7C72CFB3317EA6881FD24D8B31A2E75FBEDA87964B60787095F75C753CD8BC5264D3C9A8701015F200E44455445535465494430303030367F4C12060904007F0007030102025305FC0F13FFFF5F25060108000200055F24060201000200055F37402E55923ED687CB104D609DD183402E8292DB03C3EFFE5EF3FAC597D2A8DB27370269EAAD7341D72447C9184CD817AE0E2BD4DF6FCF89DC52F455D490F077E5E9", "7F218201B67F4E82016E5F290100420E44455445535465494430303030347F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641049BFEBA8DC7FAAB6E3BDEB3FF794DBB800848FE4F6940A4CC7EECB5159C87DA5395505892026D420A22596CD014ED1FD872DADA597DB0F8D64441041198F62D448701015F200E44455445535465494430303030357F4C12060904007F0007030102025305FC0F13FFFF5F25060105000500045F24060108000500045F37402D2468416D66BCBE259B9B907A73395BC1EF94ED75F9C17615210246E9EFB06E6753E9055CE76623B7699B9EFB1A7D3A9DD83F6E6E09E55A33EA0A5F62A1C719", + "7F218201B67F4E82016E5F290100420E44455445535465494430303030327F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A786410474FF63AB838C73C303AC003DFEE95CF8BF55F91E8FEBCB7395D942036E47CF1845EC786EC95BB453AAC288AD023B6067913CF9B63F908F49304E5CFC8B3050DD8701015F200E44455445535465494430303030347F4C12060904007F0007030102025305FC0F13FFFF5F25060102000501015F24060105000501015F37405C035A0611B6C58F0B5261FDD009DECAB7DC7A79482D5248CCA119059B7D82B2157CF0C4A499BCF441EFDD35E294A58C0AF19A34A0762159533285ACF170A505", + "7F218201B67F4E82016E5F290100420E44455445535465494430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104096EB58BFD86252238EC2652185C43C3A56C320681A21E37A8E69DDC387C0C5F5513856EFE2FDC656E604893212E29449B365E304605AC5413E75BE31E641F128701015F200E44455445535465494430303030327F4C12060904007F0007030102025305FE0F01FFFF5F25060100000902015F24060103000902015F3740141120A0FDFC011A52F3F72B387A3DC7ACA88B4868D5AE9741780B6FF8A0B49E5F55169A2D298EF5CF95935DCA0C3DF3E9D42DC45F74F2066317154961E6C746", + "7F218201B67F4E82016E5F290100420E44455445535465494430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104184BB519FC2A8F52DC0DC73112FACFE914F2A49B678DD5799A2B1DFE95E1A66359014E22FA8D66438413CEBA6CF0E215576B673376BF617AF4DFE9761D2290148701015F200E44455445535465494430303030317F4C12060904007F0007030102025305FE0F01FFFF5F25060100000801035F24060103000801035F37409F25EBFAF4B91E4C60A1683754C5DC076A3179753EF97D9F8CB01FE1DCD3B8C83E7A26602AB1F344BE5706006D79A9FF6A9716404DC83B9F30E1213B393128A2", "7F218201BA7F4E8201725F290100421044454356434165494443544C303430317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641043EE15015916563E31459045924DE804C1D93A77652AA25D0B753730DBA3233886A9A9B28A06AF84CC5A40F78E9167CA40B8098724A3A0332283D0A52C5453FE08701015F201044454356434165494443544C303430327F4C12060904007F0007030102025305FE1FFFFFFF5F25060106000300015F24060109000300015F374068261CEB4DC915301371C9B273377F33CEB25AFA07E70EDB3498ACF0327DC13B9AF99A9D694A6D048F0DB6FF1774E882CA8F41C8A0B96FDDF6F6DDABFD55CB43", "7F218201BA7F4E8201725F2901004210444543564341654944435430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641042C037C6CF8C0B62E36E220B7D411404AF248A2C83C569A49FAB02FC232D2395B3A5FF80DDB01D0DFAFCEF55E54ACCBA4C56E528F0746BEF1108E7D9B0122EBA78701015F201044454356434165494443544C303430317F4C12060904007F0007030102025305FE1FFFFFFF5F25060106000300015F24060109000300015F37404FB2F9F17D38656EEC2846CBB1711E07D739E6A584D487B3AFBA5C723C73A10236995E6A19499DE941DFE3CC044E2AACB6B5869C0E46C9585AEF892E2236F62E", "7F218201BA7F4E8201725F2901004210444543564341654944435430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104206160B85B82B2BE249DCD7B15FD1AD46CA03F39FE675C07535806E57CE24349392BBB9F73B364672F12243F18083DCC49ACA613767F0873AEB60715FC605A288701015F2010444543564341654944435430303030317F4C12060904007F0007030102025305FE1FFFFFFF5F25060106000300015F24060109000300015F37402B62927D46BF675DB387FC4A425FF3B604B20DD5ED6FFCDAFA9DA1DD920DC996245B358167C66A721DF39C6897864E4D648746339A97D22D08659885F92BDE21" @@ -40,33 +44,21 @@ ], "tlsSettings": { - "protocolVersion": "TlsV1_0OrLater", + "protocolVersion": "TlsV1_2", "_comment_1": "ciphers are ordered by preference", "ciphers": [ "ECDHE-ECDSA-AES256-GCM-SHA384", "ECDHE-RSA-AES256-GCM-SHA384", - "DHE-DSS-AES256-GCM-SHA384", "DHE-RSA-AES256-GCM-SHA384", "ECDHE-ECDSA-AES256-SHA384", "ECDHE-RSA-AES256-SHA384", - "DHE-DSS-AES256-SHA256", "DHE-RSA-AES256-SHA256", "ECDHE-ECDSA-AES128-GCM-SHA256", "ECDHE-RSA-AES128-GCM-SHA256", - "DHE-DSS-AES128-GCM-SHA256", "DHE-RSA-AES128-GCM-SHA256", "ECDHE-ECDSA-AES128-SHA256", "ECDHE-RSA-AES128-SHA256", - "DHE-DSS-AES128-SHA256", - "DHE-RSA-AES128-SHA256", - "ECDHE-ECDSA-AES256-SHA", - "ECDHE-RSA-AES256-SHA", - "DHE-DSS-AES256-SHA", - "DHE-RSA-AES256-SHA", - "ECDHE-ECDSA-AES128-SHA", - "ECDHE-RSA-AES128-SHA", - "DHE-DSS-AES128-SHA", - "DHE-RSA-AES128-SHA" + "DHE-RSA-AES128-SHA256" ], "_comment_2": "prime256v1 := secp256r1", "ellipticCurves": [ @@ -78,23 +70,23 @@ "secp224r1" ], "signatureAlgorithms": [ - "Rsa+Sha512", - "Dsa+Sha512", - "Ec+Sha512", - "Rsa+Sha384", - "Dsa+Sha384", - "Ec+Sha384", - "Rsa+Sha256", - "Dsa+Sha256", - "Ec+Sha256", - "Rsa+Sha224", - "Dsa+Sha224", - "Ec+Sha224" + "RSA+SHA512", + "DSA+SHA512", + "ECDSA+SHA512", + "RSA+SHA384", + "DSA+SHA384", + "ECDSA+SHA384", + "RSA+SHA256", + "DSA+SHA256", + "ECDSA+SHA256", + "RSA+SHA224", + "DSA+SHA224", + "ECDSA+SHA224" ] }, "tlsSettingsPsk": { - "protocolVersion": "TlsV1_1OrLater", + "protocolVersion": "TlsV1_2", "_comment_1": "ciphers are ordered by preference", "ciphers": [ "RSA-PSK-AES256-GCM-SHA384", @@ -105,15 +97,15 @@ ], "_comment_2": "ellipticCurves not needed", "signatureAlgorithms": [ - "Rsa+Sha512", - "Rsa+Sha384", - "Rsa+Sha256", - "Rsa+Sha224" + "RSA+SHA512", + "RSA+SHA384", + "RSA+SHA256", + "RSA+SHA224" ] }, "tlsSettingsRemoteReader": { - "protocolVersion": "TlsV1_2OrLater", + "protocolVersion": "TlsV1_2", "_comment_1": "ciphers are ordered by preference", "ciphers": [ "ECDHE-RSA-AES256-GCM-SHA384", @@ -133,14 +125,14 @@ "secp224r1" ], "signatureAlgorithms": [ - "Rsa+Sha512", - "Rsa+Sha384", - "Rsa+Sha256" + "RSA+SHA512", + "RSA+SHA384", + "RSA+SHA256" ] }, "tlsSettingsRemoteReaderPairing": { - "protocolVersion": "TlsV1_2OrLater", + "protocolVersion": "TlsV1_2", "_comment_1": "ciphers are ordered by preference", "ciphers": [ "RSA-PSK-AES256-GCM-SHA384", @@ -150,9 +142,9 @@ "RSA-PSK-AES256-CBC-SHA" ], "signatureAlgorithms": [ - "Rsa+Sha512", - "Rsa+Sha384", - "Rsa+Sha256" + "RSA+SHA512", + "RSA+SHA384", + "RSA+SHA256" ] }, @@ -171,14 +163,18 @@ "selfAuthentication": { "_comment_1": "TCTokenURL for self authentication (AusweisAuskunft)", - "url": "https://www.autentapp.de/AusweisAuskunft/WebServiceRequesterServlet?mode=xml", - "testUrl": "https://test.governikus-eid.de/AusweisAuskunft/WebServiceRequesterServlet?mode=xml" + "url": "https://www.autentapp.de/AusweisAuskunft/WebServiceRequesterServlet?mode=json", + "testUrl": "https://test.governikus-eid.de/AusweisAuskunft/WebServiceRequesterServlet?mode=json" }, "updateServer": { "baseUrl": "@REMOTE_CONFIG_URL@/updatable-files" }, + "whitelistServer": { + "baseUrl": "https://appl.governikus-asp.de/whitelistserver" + }, + "updates": { "release": "@REMOTE_CONFIG_URL@@REMOTE_CONFIG_PATH_APPCAST@/Appcast.json", "beta": "@REMOTE_CONFIG_URL@@REMOTE_CONFIG_PATH_APPCAST_BETA@/Appcast.json" diff --git a/resources/html_templates/alreadyactive.html b/resources/html_templates/alreadyactive.html index 6754df5..e5e3cb8 100644 --- a/resources/html_templates/alreadyactive.html +++ b/resources/html_templates/alreadyactive.html @@ -81,7 +81,7 @@ diff --git a/resources/html_templates/error.html b/resources/html_templates/error.html index bb74813..54fe062 100644 --- a/resources/html_templates/error.html +++ b/resources/html_templates/error.html @@ -81,7 +81,7 @@ diff --git a/resources/images/AusweisApp_2_Logo.svg b/resources/images/AusweisApp_2_Logo.svg deleted file mode 100644 index fb5a615..0000000 --- a/resources/images/AusweisApp_2_Logo.svg +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/AppLogo_AutentApp2_2014.png b/resources/images/Logo_AusweisApp2.png similarity index 100% rename from resources/images/AppLogo_AutentApp2_2014.png rename to resources/images/Logo_AusweisApp2.png diff --git a/resources/images/Logo_AutentApp2_2014.png b/resources/images/Logo_Governikus.png similarity index 100% rename from resources/images/Logo_AutentApp2_2014.png rename to resources/images/Logo_Governikus.png diff --git a/resources/images/android/android_arrow_back.svg b/resources/images/android/android_arrow_back.svg deleted file mode 100644 index 67c0a0e..0000000 --- a/resources/images/android/android_arrow_back.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/resources/images/android/android_arrow_back_white.svg b/resources/images/android/android_arrow_back_white.svg deleted file mode 100644 index 9b1cf74..0000000 --- a/resources/images/android/android_arrow_back_white.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/resources/images/android/android_nav_button_icon_history.svg b/resources/images/android/android_nav_button_icon_history.svg deleted file mode 100644 index 68c9f08..0000000 --- a/resources/images/android/android_nav_button_icon_history.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/android/android_nav_button_icon_identify.svg b/resources/images/android/android_nav_button_icon_identify.svg deleted file mode 100644 index 73a1890..0000000 --- a/resources/images/android/android_nav_button_icon_identify.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/android/android_nav_button_icon_provider.svg b/resources/images/android/android_nav_button_icon_provider.svg deleted file mode 100644 index 9d0ee0c..0000000 --- a/resources/images/android/android_nav_button_icon_provider.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/android/android_nav_button_icon_settings.svg b/resources/images/android/android_nav_button_icon_settings.svg deleted file mode 100644 index 752d582..0000000 --- a/resources/images/android/android_nav_button_icon_settings.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/android/android_toggle_off.png b/resources/images/android/android_toggle_off.png deleted file mode 100644 index 986210d30934a3723868677ac265950b7ab21a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2702 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 diff --git a/resources/images/android/arrowLeft.svg b/resources/images/android/arrowLeft.svg deleted file mode 100644 index 028c9f2..0000000 --- a/resources/images/android/arrowLeft.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/resources/images/android/arrowLeftWhite.svg b/resources/images/android/arrowLeftWhite.svg deleted file mode 100644 index bbdc59c..0000000 --- a/resources/images/android/arrowLeftWhite.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/resources/images/android/arrowRightWhite.svg b/resources/images/android/arrowRightWhite.svg deleted file mode 100644 index b017764..0000000 --- a/resources/images/android/arrowRightWhite.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/resources/images/android/checkbox_0.svg b/resources/images/android/checkbox_0.svg deleted file mode 100644 index b4edf1b..0000000 --- a/resources/images/android/checkbox_0.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/resources/images/android/checkbox_1.svg b/resources/images/android/checkbox_1.svg deleted file mode 100644 index 11586f5..0000000 --- a/resources/images/android/checkbox_1.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/resources/images/android/hdpi/npa.png b/resources/images/android/hdpi/npa.png index c269b720cbeefd4a216de3cba8ed550c0af693e8..d6b982b09f53c4076febb0b11994dffa6d5fa051 100644 GIT binary patch literal 9602 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 z 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 delta 2199 zcmV;I2x#|$OQsQ!7zqdi0001DGedQeArpTAb5ch_0Itp)=>Px#32;bRa{vGh`v3q9 z`vD7gHJbnc0{~D=R7FQ{OjC-(Q;Ne=io;Wi!&8dGQ;Ne=io;Wi!%~XFQ;Ne=io;Wi z!%~UEQ;Ng?|Nl~o!`#B5QC!;-^lUzW;+x#4=R+I6@_T$0F?#A|`I-eP~S zFoL$*XPwWJ!)kS^*KwxRg}z!= zjm3VuQI5f7U9KqG=<{Zr&SRO(cdUQd#NMumzg~&JVEz97i@;%jyi<|GXkM-=YqUCU zwLg2hPFk%cv&-eJ$K!gV&}5p;Wt+}vpU`We(P*B}Zlu$8tJiX;)&BneguPgd!DElY zW^%Sdc)3b^x=(GiJ~W>kmc?(Kzu=d;-R$(`bE46$)so8K@RY=D`uzUH z+3o4_`T6_(W|zvK%IKiZfwj}@lD^`8tJb^RrBjQ%IEw2 z{<+rehq&K?zgf4>=Z?DHw%41@;_;Kh<+<6Q#Ne>kj?2fb9 zhP&dq+oPJub$Yx|ve=uF$8S}uAJ65!VV25yrqa^k@Sex!eXrSSoXvcu(uS_q-R$h)~3K2V6ltI>>hq0h!nN zToYFS!11s}ZCMwQU8PJx2naI5k}yM2rUD{RsSHyvGD;|<>>+=$hb^dVq{x<~NZkv! zEs9&)YWLo?{ZMl6E~I!PkbM7wB%j~s?ml<#-g^`Z&oW6FS$V}pke8KNzLbJmA|VYy z@v+K_5E~Cc(h^HRM@kNg3l555C@lgbCMY-#l9PguM-Ivgq$w;KEiem`;~kR(l(k<$ zB>S@<2?}MYbXk|F~IDTpixlA*}P$A}(^iI=6w$1(_h z5y7pSf)75AlR)q@MyxzVQCSJ^Yi_~VtDexrp;LW9$i!r=jsVTcOC+H&!SkZGci;N7nfGyL<*8mB zleKd+D~W$Yx2xwm^nnV662Irz3>P&wkPAJ1C3h>D;!XLysuX!LLk8Zvjr^r&bz@gs@Jn(99ojA-~vLLt#5hu`YJezUcR0(I1nA&V}rR zg;aE6-H=bzqG4)#n8Y1sqkRZ0?4uHl5VL>YRt-2>M;v1J*@wa08ktxR?GPGL`<*y+ zD9j#kJBRu7AMv*Zwhs~xBdmK{+<;I9_P{p$_jbUR@M$|_zXjNgUZVL!?E}Ae0Ka_% z_he$9`)0uXB+i&!;4lRblReVQy*@C6aP`|ln#H$<6V$(VOgCFP$R z^E1YMY@%t+pSJquD1DpZj3WNi!ep0!{h6*YO83iW#1pN4L;X2g=8v-b3*mv|YEz4` zy6&76SIMS+$*Tov=@}&RKF+mTvr2zmPsi(7qny^1O?rOm2x`+4K2hLV}&Rr)vgj_<5Tyb^XhzJ0o)b$8w=dYd# zzo@Be{W-uDKtcn~u+-G9T=s&NSx35$2Q&oCY5*a{xLE@OT|X)FAHMMzOO_`5Xbf>)5U{waR^j)Nw9tR ZA5Z<00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 U{_Baf4FCWD07*qoM6N<$f?HAEWdHyG diff --git a/resources/images/android/hdpi/npa_preview.png b/resources/images/android/hdpi/npa_preview.png index e37ee9ca1625909bc1e60623e7b42e185a254c5c..6c1a5a4c3b21af27ea5889b3ba8d7200fcd40075 100644 GIT binary patch literal 14806 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�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 wX=ZrPx#32;bRa{vGi=>Px@ z=>ZNiLL2}90{~D=R7FQ{OjC-(Q;Ne=io;Wi!&8dGQ;Ne=io;Wi!&8dGQ;Ne=io^f^ z|5A#>UXjM#=<>Dz0F=aRwEzIO005H1X;zKJT$9OUu``pzYk;)gV6ZG%kjGz@%6)&c z+_V4yVwucmvo^d73u?4Ee6ibTp3k`g0#S*=fwkUcoX(5EVqTQVRg1)1k;jF);bO2b zg0|nf1_pYt+ibNx{`>pC85xAQ;9RaJ{{H@6t|^bgX8Gvo`26;Iq|k%6-}T(wz7rGu z_V&|cWMP-fWSPwU`T4WV<*mo##4CR*&Qnv~?DnI<;QR0ISgazs*Y5xR|M%nKVwA|x z-|xshJ&D0!h`(Oj=knv4n(e&2!Y3!)>h<^K<;ONQybuuNpr6V@Li+6N^x4^^(TVu` z{qM!az#bm*_xthD(b;->>94Qw&CTkwv+lvc)oE$O->#6q&V&c*mZTV2nB?^Sp4+#*6GK<-Kn?F z=a;(ObfVCo$mh)B@qoWr_4@L9yicCK-mlT?r^@Hj=)-uf+NUTAu?&9^hP&c#q0wTo zF^;p@hqBqp;|J%5Rb6biK))FYfhj!OP)ehjGs!iEHZ|(Q?0pur9T<9 z6bpp5-k)D9Q~G~{0000CbW%=J0C|HOEX(k#5Z;7%{lNNc000MqNkl^ zx@vT7tFC41-QLUXz4v~f=bp)skRS;lyni5*nK$2e$~Wg6H#dqUi@6vxFn(XMRIf?4ao0vYHo_3-w z6Q(WMFTFf_QBI}LgvKh0er}768@pyHI&!j!>FGH|wCOn;f!U3@vk`@!sP*xDL=?Em zjxEtCGmAp6dOAS&TJ-8bdp2E2nMriygo6h4KOND!b*t?OjLw}wbh6ey8qdz=lU>y1 zs>Zw7tL=YXfsL+3IZc!8M~nv#`1X_q##f-BnRdX=GCc$X?mc5Z4yZ_Nz;% z6VNx1z><{W!o0dNnHXe|P^44w;=?mIO079drl-(+P>agzN;@#9mX{eM z8VFlK32_lfv^t{{;%Oolj$`nPHu11Ni%U;h-(OJi!D@kuN92Jbk&v4qH;aEE)PrP} zrR|3RP^CdA77SuadT64n#HBC(H1O$X?LcBHBfcM55+ySvB|~z#2BnmkY*uNAHc(ek zSSo|CI-^X1ZXwe+XjBnsOsM}j@aZpq_3MCx2OE0r>QT_|q#X3SxDlAkMrAlPNMIo_ z@YH4yt`(Y4NAg50YI@*FN{xSbu(Yo14|fhy1Ox=UbK1VJC6r~M0SbqJ0zH5si2{;F zfhnoT)TgveF^t8_mt9nh77M~Hj~!?Tpn2*J-?2hUhET)RfIKQiIF@=5%|kj5oUD#7 z7|cr*%DHy6;9P)JbYV)VRi%;`>=WeCqXP8@j*%kiaLtf0LuGzsMRb4s?WZPq)5Afu zPhd($3J&TI1SBp!`19YA4MMHNNr^lcFyZmDHqnG=S0dRV#ZaIAxW-D@}6bM(&f8CSLZ&`R$$c5I_XUTf_*y8HO77VM`&woQt*J|gnk8Ie27 zEyTTB+iYyzZxIE1*$9i9{ideka7ffvnkZVtn6L!zJk&dX&A-g(Vq zj{7w}Kd0x`TTyZdi|7uU!Dbu{i)^3s#?P`o`9X8-?e+9HioO1J#QD>%x1ugL$Mr3i z3GK*a5=gg*wt$utSywJN9u~?#@`4gQx{N8bdLCXJHQO=6QU$m_9!I YKMZFDf?;vEIRF3v07*qoM6N<$f~H*5O#lD@ diff --git a/resources/images/android/ldpi/npa.png b/resources/images/android/ldpi/npa.png index f9ed66015b1832bb32515ed6250a4ac6323e1871..4deb765f60a93584fad34dc4636c128f864edc3a 100644 GIT binary patch literal 4420 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 X1O9J;+#1;7Rshh^G|;G4vyS*5ozv%< delta 1662 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 Lp|4)8>JalkQ3|ZR delta 1663 zcmV-_27vjkERzk87zqdi0002i-e{_kArpTAb5ch_0Itp)=>Px#32;bRa{vGi=>Px@ z=>ZNiLL2}90{~D=R7FQ{O#lD?WtPd~?Dcu0&{B!RQHjE0l*mtq!B&jKl*DZQ|NpEY`0x8L>o{D8FHxdH=Pk;r1OF8u!c^!f09vfW{p%jKY;r_YALBqW5m;lqC` zERw@&k;7^H{r>j*^Jua*d$HWaEiLJ>vCmUezZe+NT3TI_$-y8XSdYf*xVT@hEAaLD zR*uGHu`|d$JzcIS`uzU0*O_^x(f|JbXPnQ8!C>d__GO#S%t}hT3k$UX0O+o+-;R!D zm&?~~Zr+KB{`>pIHa62`W#XBcJ7o`||Si+uO(A@aX66ui2RC&c@uNsH`Y5kxgcVz+0Tne1^SS zdal}^VRxD{MVnqHhqhJazrwpPG?lK-q(U2esnqxV_MAXc<)x*fHbtc_J*6!=`||0$jGePR3C^K|w+B;5t-A z-X>sknnD!KfL?zLsH_nO0_D~~6h*~y^78UrVTv%v3Ur7oD=Uj%L{=nrpe-~sG)xrX z@6Hb8+fPg%JxH^Y{03EYs4X(m;xODCv+ll0SMNM~_437Ab?Kb14q!#xCdVu+B13@E zf8#F1O2&j6N+)Y2Pn+!|?LKW@)`C2+qNg`++`9kfowI+c>jV{bq2tol(oFL!<0;d%G}P2wCnO5BJ4rg8&h6KFo^5Y8DcM%*ivxqh?=(Yo zX;~qSR7sVXq?xj+@u}%C_Kscg32Lv?6DQit6Z-7H@bi~p#(bTBiSClBuJIS#WG75a za?!BsIq83{k?E*q^U%dG^%E1rk3Y7y^RwODr_M=o%$eirA>$-Royh zUFv2`VPbGt=wYidcc!}9zZ_K$H>V!k1X&g9c6+<7qbJNGB8~_^0y8C7$R%6IcDA)p zmaJiTzhqi(++R>&)km0{TOH&EE6Q7tu5Obxeae6Pk27ZVoi~FAc|b+8m6g>#NVGV7 zx6h5ea^_t0WTn?QDcyC zgT8Ap5NMk&#>@yyOLUENbs>th_4T!vFk{P7imQEfckQ>>yQjRiR)6I(0j&9sk+Eva z_T4Q(#??Ek*Xf~TPSk8}CRWAGt*3{c&50^7h$?!BD#VB>4goZV-(I^!9V7q%002ov JPDHLkV1hkWp11%2 diff --git a/resources/images/android/mdpi/npa.png b/resources/images/android/mdpi/npa.png index d92b9d1629b0cd00daa0e940fc8df32421d92159..f8a973ae9850f471c5b4d9cb1d80a2f87f2a9434 100644 GIT binary patch literal 6234 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

G6AUf8SR+G0evoiMEc3}rDLq8Dm&mMIG+ zc`0^bzCniXXVY_r0F%Gx6#*$N9g{CMeFh3>$Q5@Gz4?9x5Fb};C6IM& zQV>|NBNhBjSq_~0WBXN6D6JX24($>tq=~u#J1ICV{{j`f%kymbFZ|EgH9>~y`i0BU z_Zg|gjoM083+&ms2aW&4{>X&?5^?!6%B`t(R7%L`kRsS4@Y z>-658np-)L^eBsdEH)nPhqhTg zBzN{Yk7ZksH#iN7jKnt%M^Qp!2d8N<$anG zjGumEs!J+PL>a|CHg>mb=5l}1Dm_Y#*hyLn{RGtrgP)9z|d2Ej&L=P9z56I7D z(sQ8_o~=m79m?|p2}#E$);HQOUwzm~AJdv8l(btt9nQa*(Ik#Q96XR%pq{lM6Wi*_ zP>8Bz6s5JS=V|5lYV;xEX{ztVe!BRo?psOvEZtdON#9j5;dk32K07v(TcxFS{wVTq zgMi6$x!~jS5Vii0zn(OCKbhN4p6oQ965qWc9}!d{`Sfk4fev-_t$=VDjQuHllaf8- zX(z0lZ2~`iu0a zG~c?_HLWcEa|Vphwv{qDZTcC44simf#D0E;=H5tw4qXD>2csN1iqOM^nYlD;jWK+| zq?h-1{++oww>2+bU9{)ep=Z~>R#|M!t5|zV=eK-uC|h5D^j<=NA^? z7nal$ek~;|BqbumDBqTyok^O%R?w)qe4uSu_L0*TF<(~ndqNu4*DQ6Y&KSt8} A(EtDd delta 1743 zcmV;=1~B>BFyal67zqdi0001B+zGXjArpTAb5ch_0Itp)=>Px#32;bRa{vGh`v3q9 z`vD7gHJbnc0{~D=R7FQ{Oj3!%REon=iNjEc!cmFBREon^jKolg!cmFB|NsBB%;iyu z!j!~pw9MsTuPj@U$6S)gf3w|vvD}lyYox*7d!*5FwnJ^TKKuOsWU(?}m&TTCDfRgK zfV@+Cx=xS6W^c7XUzN&Ul*wV&x9dAm*K@!kFY{DryUTCF6% z)ak+Cu3wVJx!IrF?9P+MZi2m5k;7==@70~kdUdx&YqUCQvpLb>@N>9DWSPzP`u*GM z_Hm`ubEnm9qSEm7`}O+r=cHNs`~CWw%X#$q@cI1suGW;*>c{!~_o>p1 zjKgK9#^Z~;;{E>r;qCU9#&P-k{cNMtuhHv%vfTat{+qzzaih|<)9ZV$+LE@~e681N zoXv5k)v3$pj=0^`=JRQw(awM8zMai}+UN3Gk;ikO&)Den+3U>l`0mEywB+se?ezMH zyW)?(<5-Z#&ff3O#ic%{!ZWrw$|>T!QrFG=7O!)pT*>s z!sJtm!C_`chxUXjP4%YR^%$-~y_Sga#fkl*y1R%=7z=`Ri^o&Knxww{Pe{#We6DI=?H>!|b{^!g;yailbMax%w zc%IaaD$C7-rlB^pvP({pm$w+GVa*zU|Mp$klK3?I4(XEP1p$x-Z-0M(Z|~*3S-3Ss zW-9XX!ZfT_f`EUkZ<26n2#tcNR|NWDwRx^Q7??krg(vJx14H*K)}a1ZrwgV@iK=(qva4u)ddwrXeT783@!W z?a&j0%WF$(AefwurXj>h4G6+~G1FV;14|&Vx{IozKFSFQR7?FZHFV4{v$C?fF|!0k zgKw)U5U7P>OVYEf%z$8OCyIuGGxqlO;bCX7X-K;>Jtbv&N;!&#CHmpv;rhoKuxaSN zZQ%?lvtDkUr#so`L4TR#A+ zpE+}X<^}xY;`(d*Wx=~LJ&Xzkv&zy~oU=OwSllfAJ}(Vhl|^!;NK&<10<3mPuGoQ1 lhyNv{G#yB8oRHf50RVzHGfx8M5QG2#002ovPDHLkV1o3;(XRji diff --git a/resources/images/android/mdpi/npa_beta.png b/resources/images/android/mdpi/npa_beta.png index e0e3d42f1ea97c73d042ec9ddc48b7b92af9d60d..daae842a93052b9d6cb54902609ea7c8605dfa3e 100644 GIT binary patch literal 8467 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 diff --git a/resources/images/android/mdpi/npa_preview.png b/resources/images/android/mdpi/npa_preview.png index 6babd5c50875664a906238bbabfd8a95c30311d6..3f43bdad011582d406fa3431aa99fb12d75eae99 100644 GIT binary patch literal 8509 zcmZ{qRZtvU)2#;v8(f2XaCf)h5MT%-xCD1+aM$235L^Zb7MuhL?gV$YK?ir&Ki}oK zINjCzsqU_|*Zr>j4Xmz+g-(VJ006L*mE=DCBlrIb7vR7bpzIlz`frHpp{yp4x`hA)VF`{YDX{-DVON%u(e_?G$?@_| z?SH(Jx;l1BR%4=#Kte>oM+*lOfTH;i5T}tuWXkc8et;-KdkR?O%cwp`KnD>?_1P^;m!nULp)^}(OmHY%;>@RW;l?m~>}GT{AgJ?d)O})9g6$DvQoHlS z=MC+RNi*!Q_-$h;rOBC8>}FU~aA@~XQYm7_YGe}~wB1@5t3;e)WUrOZ+FVCX^lhh; z7#$H|l@Xa z@NI33^>$)WHJe7I3RsB!$$W|IkeAXIZN_KQvLah)q<^*8`x!bk)}pV!n7lK>k^J4q zOwii8Z49&VN^2cuO2|@Xo)q;d^H5&o^Zc{i+2wzMt&qcv@_-<_KrR@^og<98#vgBR^7 z>z?P;v%&WAIR*PK(FhfZau!Wg#NJEgFZShXtIvaG95otGXOMj*4V9n2rX>Z?)vsNFlA+1~+J>fWJ~a%|;_9M(%P``#Zs5FS3%$P<@B8w>k4?saTWC z5=TD~haYGB9|hV1vYSWUebv^OpN915eOWzO2qk%DZNRUo zc*bcaoy3gnga{0};QWeQsZueC{%kF*CyA_26dzE&=)oXl`%1!+@m#k36?B?yXJp5D zNAEqw-Uw%gp>&!ov2=vesU~b9gTl-r&dSUrI0N#Gs_IgI-)6Ow*KkS_mFBl0s_z$^=W&*;x6LM3*y&lEU}E7JOkh3DKth) zDrH^b&52aYb2xJ+_FTHu_ryBi@?6YQ2rToG;xq0jtdanluq`mfR;YQK-WjSppr;)+ zvg~!!q{T8GBV8ob^?>#xsU#*NaCzF=#@7=o(xdbk??N6Um-PgZQZyyl6lIk;Mid)M zk{&Ey72J`V^_bc}OsT?jhQ`L7-i6oH@JCr2v1;>xE%&LUTDp88#nKe-m8W#I_ zp`wB+Av3Gi#EDTqOL@K|nA4ZB?Y2$>#0WQ`Ox*RNZ;RZj1 z9b;C}>)nn(~It5)=Ka4_M;da4(@CAf@m8>Aowb-RV^pbmJQ7f=l;*mRfy-?Wyfs z`c(dB0YMwp6VUyi4;@qJWl1RHkpbBpPs83L&)K3Bctkkkqc6Hg&JwP!RHB z?A+XAV)+!imRdm8UR;rdPkV$#D019W!)9HfSmdTrw{T`9;3|Fg5lziiq$tvLg$I@q zwzRVv`gLjPx~AT7zg(dLscO0@izA_LC* z=G~t)&wFDpg&Agy57Md8~fL-z& z6vh~A?QK_*M>PEC&`}u$^8*UurRN0aam)P^{OT(`jAg`rx=2YTFOAu^XGC$gwl>s_ zv-FgQBC4%NxJSn;aT3|`Fg=a)i0Gl12LGK+PeUG?8zb{epUW6+S?BOXsi&WfsFXAW z1Mvy63=W_GDCWH8xqw)(Sp3!gp~arN$@dgP)7LCb*>kZ0`*>?lC;U z279itN>OAER_4=65TKQW-&8nYWUP3*mPoidg0r>B5p5V)G0*hN0hk3_7-$Cr7I5ByFQQZ~~hKb>yXzqkOwym&bUY&n{ZKW66q1m-#qCG>DWFX}qXoIuMj396KSAqUBWPWei; z0(^?u7+qDLUQj$wWe)zJGR7j}B%G3V!m+@N2dGD=VKepu3bP~#^;H5Z`shFYf|m$w zG={H0;Djyuw2KEd8ioz;=hIeb;JDusAO&f>J6FB9zq7Mid280!2M$DxYEESyV;YG&65oaTrYjdua43m*@NUfasI$w z75=*I&HZSc9}s|DrmC8dP7$@GL9n6bPmG?}2Z=txx|HKPTQ=^}|D~Z($g@DTsfd~QEdaI3F!)uwOM^10nd4(<^0jKk zscDU-=_(Us%_u!(vOOzIq_W4b{;>_jD7)PJ+Z8Oz(eCH#RU60uND|Q1*m!Su@!2$3 zR4W&xpYo)BmrIkbTcckS>UYK%mW_!r0x=IV4|1`ewlOa90nEZCs zh%SkOwjM{ZvR0`5*N++{C>sPgS~daX$nXsCX5N=`Ijup{pf%Z5#H9P$wzJA3|`79R#UR(D8|g zTnOjNU&WBhbP6Z*L3@lPsu6=SejG>AU#VS`zDcCqP&PM7iU{zKw~;wZdA6e5E3%7u z+DeFfkcvW<;Vw)bpT?hFx=FlQ9zXHF=Ql|H^PV7(HTQMsT7zb{RiNKKrW@D$V5c|* zoSft#a=_c1;B>FwyCD5k=PnPAfp$3SIq6{&xf!&tA9|umwbFYlayOHbKMCGOfIWBj zzZZ3n%=(zX1E87Pm7epVily_^jjy=Vs*PDqS(~MmW!;)#1+c3OA|5uH?d+2?ry%0h zY=L=!c^Tw|cM|&7!G(3M{}Q}-Ghf;y8KF|_j2U3g%pB|4?$O?LnNXKoM+q}hpLKl5 z^T*+Tp}-cQK%59WiE5-q9JX({Xt|I^Xlh2*rvSaj-63pf{E1wlxOW~0qG4>Ia9hKU zOiOR$^a-(bFw;)Pu~?9*v(PaqNtiO^!nr60--1KA%LZ-BjK4SHEDwv%`(hPD~;D4o_>xvA|$flRwMJ+v3{<9X1-~Oim(d<0VS*+*;Q;D*@ z@oIV8F$nKQo>04GW@2#y?Q|$!N6;9g&S&RUxrP_hc1G3g z2lz-ZZC|>8q9r#xn_3RLH=3M+7MWJr?K|ybr*)v@%AgK_7W9qmk((mpa=6_PEou@Z zNdj;ykK)G_tpBpF2bkYsmEkT7SA8dE4){%NFBQ3JYu!HXE2BB%_j>o-?JE}a-4!`w z(28q351BAk3c+9(=MuHHoB@FW;oS6WecjJ5Y)F7Z@C2J%H3ys!mS&LkFO#gBlL7*X z#B**F7jU9Jj7Jf-8v2r|xTT0PdLpIwO{y12K-d4wkyd1f=oa0xv`atCpC%h&mbr7J zuur+zUzHIQed_j+SyS;u4Pg;4c2yDn;kfQ$JHt?RcY8Qo!4@_XtgmBl6j7M$$8p*K zK=1e4k|>+@l{<+3lqA#m)cE8QG})6AA(GT#<+pHR)O~i|bp))DjX#~4|7ZZj4t#Ze zbxpcChgF9C>VhmhH$2!g$9yxv>qKM?Tz)lv@}miGByGgx_9+(mAtD`tlRaT03H&|9 z*EqI_vWOwHiBd<*h?UKc$-8p0Uh7BM%#T4yvJ7(TDMD2c0vM!jLN{sp;z)DPtC^w` zu*WFhXFQ4<=JCBdhWOoH_*16lK~P!|&&k$&+~7lC_r-A7MYriFi|#=^u|+zcmR4)< zmsz3_J?u743`?XPR_j;S608g@6{l<`;F(MI3Ur)9LdzHB8u_!1juFb+jcb(M@&)i^e?NYnb0&=Q=PE%<cp_f=V=-D1(v=816=3tNSUF*^L@BLtMp^+B}%A=rNSo#eC>7a{d?%P zsiPqc#(P5HwPV*`s3g|L32hXhgaF_##9v*lB`Mh{&Wt7Bfn<D{dZhQ=d)C&7*ncy2F0A&)lj5 z9Zi}-oPgbuGm1w=$b$qSt|24c9d5CmP1Q(nW0vz7q42gmr-}fl(4p2Ip8NywW5iQe zj6k>V1ns!3M49=C`jP>(xUO7e5_9~&&+UeSfd7;P#pz>|lT`K4k?K{Gp;zSH z4BZS#hktJWF4IHB&P1l%=?FW?7U-){2^ss@ znc#A8x!PY>`nwJ2hPP3X;gP|C-gA+k$wSQ*ZZhYrL$}EVQ07U{9*+>x02qt#``gPC zl^)BISdf#4a;w%X*{PaHX8N_DE`~$JEQqFsSM3zQIDEHr7tHGQ*T&^s z`|+DH*fngsG)ti?6^?P#Ag3C1fRj}`ev^9?rm^x$kMbMwt4qBoc~|Z6R!A&r*C$<5 z9aGePdV;<8qX@aNaMV2NF4?uIR>iZ>tWR!*J4n%&4Q{ecLB}n+SokRH!mYLBWg!ow z5m%csJwgJIiln<+f{&?5_X^Ar5D+NsAxcvN*x!{GtNmLM8;1pDeUid4(UJDmGEy zAmW)G*tQ}TQsKzqmYFw{rkZgFCh>^LL`2CpUF&B8ik&3+ZW_9sHOQ9=*tB1&H`5)N zLS%L4uo3WJlPxjkM2arLd&CFCAc*gTQ{I}i`{JJjcS>Bf2AO3j6MKHQM~T$M3p$4_ z===))7B_wAPv_^sj4Q>gYQm4_#I8|o<$%=pHIZso?a*-P_M2N)Jp-v{2L&CMv}x@E zcc~}L%mZyo()x^x0EYKUmlea96mXd_c!94Z@#keLfdKZXu)jXp4#xkEpN@~p-k4k0 zj?}+dOby=%Pwj-*ZhIl2@7-h0A~H;MY#cfV+uHO$V9R#-7l%eU;bb_AI?f!27A_&U zlb=NFwUQ-LFW^u>qS+qFHFRfB;1e!A`5OgqM7tG*iP2o^w$=6q2&iJl+1XQsaisG9 z?e#)uHI4C(f_?n&cP{HzStpV)TRLsoSnzPaP;ie{N#Uxf9bT>a4J0DpgB`0HBV+DF zAt#FfkN>{cKW}vxeX0(bs6FZPR$mQ(C*?MM>3 z!wgL2ldf$WcyC&lqr!wMU>O+~YQRxX$N4c-7RzkRe&Iu6^m2tFKk^BqWq7U-IOaS4 zFyzN|=U~Lfw^HA>xiyF!b}+DnZF}0UcdTQG4|60~$JG+6>}Bp@`i1zTEiN>W!Ee|V z_qkn1%^DTWNrz>@2Mt$0aKrtS^o>0@PMhN=a!vr54#*1?E`cQ!?(A)qNe*a{?aDsC z%n2r4TafN)Uu|-tLKva4Pk2zorB}u$56OK`Co?bmRq*dhPO@`1%R+eP*&$NBByi4R z|B!0dHkxZ6s|5gO(!z37suW-6du{jr4S!;mKi5ortDSZ5qrOEoy7<_Mwb8#u_6o&W z99VQ3vcYxl2Yd*jlyc5N1N8FAx*!0=N!D8h)tgXVz=OboBn z`ROR>EAwKSH*$+MMtzVN;OCKqRk%7TUaThR138k^aLJ^2@5SZWv<{UypijiQgm66+ zm{ODXu?A77f+3%G9p&J?m((crVV>f5Iw1q^ zw-G*W7MVE6h?+*BXlJ)%=E2^)Cf+?FPr56n$Ojrp>p*$fLI=-MO9lO3y%F;C2Wtp7 z=@5a?e9qaYc7j@`-Uj<$iXjC}-;T$j4)1tW)VjiN%9%zJtGX5}vu_^MRIl9CTp*sG zVgoo}(|g)a^c7u>C1JmG==VFtJg)ja*(fpSOKA?_1gW(-FQR2%b_y{$0cEQSzoqe* zzV_H@5#bI-WNy=#HIK=F2g}9sGt)k)w;i*aMuM>i)pVf7^57;DJ z-=vhEJ2|`P#Z}n2HiAJ7-YfbJkqAPE#cC~R1|1!noqsVf(?1SGxk5=IK0oYVymWrx z{}r4c#mOgFGo838WApWFhYM<&@yGX6##GE!i)*!n(8XGoBM+K~w{4DUaU z;%p(%)!o@7=J6EgY*cq+Wj1YWtIVO_gSu;en47|n|Gm-`6zd}E4&R06M~X=jhI#DB zJy<9uZj#;!K!Y(&BPdvPf-5;!Vx*I_hJCO3#JNVcGbe<2QD%KF`SHL$-{1m@1ahmk z0j2sxHj}l>dUtyoseY*(1#KA=e~8mb@0d?^SZI5C{7c#@qhhouN}v98ugBJD=^Sj@ zDGyBUCl+|Lcv=sUfa7{9Gl7^4Ih_~x4EC%+UJi6oP0}bMRrLpa%haqJDF!kU%mEib zp74r#QCRTlQ2KAfG1o0=qC=D=tmCL7{8an%>4dBX303Gs#n?vW7S=0V9Q_*gRd|bf z=C<%cDY{g>?Vi##Qzrlib7S$Zs5N~Yn*FTxxEOBzqPT~%#?S_B z!8)W+GEV13?9djYmSx|N%HcF?tTi{1q9uS^lBl|!jM`_m3aJp!l&W}9eDIw@FW|xR|5gbo;n+3XsDuS2NbQT>0lmIKo^|c@~^}R#@CxEZNfi4T&>n zY}WCr0M+f?X0Zla&@ytFNq^Lrc$!A%+j2G*7f0Cv)TwHh1*W_ zTgMS43HdZf;XKdz(zY=SOznT#D&$cHa5|#E@XSZts7({xjaY{*5R?V+{CwD;$t9uj zqHT^v{jZJH7wg`8`QT+>xZO|ajn*{DUPZ2RKI$jwt1vKdrQSN9>t2n}lrxBQ#RbuD zvgnC&_Z1rUu9G-BEzc=!AJ95sVw2z2Yx7CC$8)-xKh7wHcm1B1kRk21LFC#0<9Df( zjKedAS3JYo-rNn1=aiFYQtz0i!i?z!2mOzACZ!*F8WGjcfd@KaM3&);jHlJF;*tVa z{xaHA>nU^2{>dV6xcSfd|K0Ltf6w4NzrQS$W;xzV+rfS1+dW!%G7PSh@2h-Oz@ujV zp4nubX<5yos!;vpr1LidYT+!Lo@uo->^BDayz9!|Fq*J_QzY@+O4M`z!eFj@y|*1cDBKh+NIN$Z&~PD zzi8L&o1Y?EN8QLM@bxSsR(xD=AU~_buzCz~@MQnnc}{=Rjk117^t2fI;>OYA(z@Tc zOBB79&D*<3wZ+HBMJPvf@@w>$<=?-a@b8gk?})8ezv7cOXEm9`hRTJZ^69cU@5!?r z_2Wh^6vF%RR08^i8!wDDnLqW@EZjEF;0PsbhWi&B-M-m! zr*mcfNFJpT9d@seU$qnO^Gr)|Z7Ai{c6hh)C8+9vgP+cJLgaywZ5OBbX{u1Bd;1O0 z5kG64z-s64?<)a=hrF(b#a9nYQFAxTe*o}u^9XZr^KfwUX>$vU^6-fY@UwCAh;nl) j|7lwKe*})s7PeMC|9^q-4vytN0YF(^U9S3rY3Tm}!|`IN delta 2035 zcmVPx#32;bRa{vGi=>Px@ z=>ZNiLL2}90{~D=R7FQ{Oj3!%REop@|Nl^k!cd69QHjD-io;Qf!d8sLQHjE}%;l8C zY_$LYlf-JY%;mNK0Js4GV3*6f1qOn)-dmB!Vz4iOwBElN8H2dsV6QA*lgRb?{9J#M z$n(?Fd!*51u`*bX#-zdD*6GKQ!)W{b{^s)D!X+iX6BEx=RLe$2$2d6To}PQK+h(#g zg}LEZj>X>Y(q679WSY%dtt9;Z`uY6#_1@l6io}1j-TwdnyblnK!DD5c&TY0n*mHAz zvfS;xy^6qLh`(L==;+tz^kSIIRE&SbkHTiX3z#bmNE-u^b&WXI@?)B)l(CO>9 zx7+LX?DP87YisDLs?uR$&QMU%T3XHC@AdlfYqdJ>$H(fjvbfov_4xZ~q0@i+@9&dj ze&Uvv(`98+jmPiA#OSZD`RnV+K0f^P^!MfE?!v;Ey4=y=@M@gSm&S0V&4hEH&ycp- z(dfc>yiLvKy|2;hkiX-<-KzKd{l3%b^7rnU#O440{{H;@_u}E+iHYpGy5NqE^Viqd zcXzV`0nANJ$UHpn$jID-gYSRJ%E2Ka#xykGlat}^)ydoL+ zm%Q4ebGSve*6xb3*>ku=sKw%Ho6L;7;h)cf$X)b?&a+Rb|C68~6j+jQwZ*_^PPp6%>hlHl1Jr#hIyPvq$+J1h_ zNlEMU{`BzTo8kZf1b0b9K~zY`V_;xlXJlpJ z;35b(SXdd^8GwL^jZ^Uaohg_aO!HOvK!E3@nib4E->qvLz(9A6Du#wQ9u*Ma z^EN{c#_rt?x*%W~jIP0KrHuy&beW>Ylu811Je!5ihM6);VE z-=8W8?V8d&oe;TFUI9TJkduzMR6FV%{&`?JuYjro)D5lF^MDq$n%jG)GnLE33_VFpv{<%6j)&kQG#qbJh2nuV&YJM&L`1Hf4?6ZiE87Zw(Vh3(jiNK1Lb zydkxMK!+W)7LX7Y)`*&6Uy>x}vIm-Ex7&Y)g@xH}S_0FM7*OKJ8>=NKz&riG)5DWI zYt4%$ASb4!J8Xf#c)KrL!=%`%n5eyXZr!|n?|vXg;*)7{GX{c&dU*1V4Dd9sDeB#v zV+R7;&~&I?S?mS`LT6>rGf?~LEjc+kTkN)Fqa^P0i-ka7@j{FoXSPbu2ME^rY&L&{ zXHl!AEmy%nx~?0u5K!Bxpa%j9=PtD-fC_<>thxqSX%LW=UxcO9@Kru7rT_+F>)KkG znX{U&ipqk4DAdOo1zG!QDKQ9;@@8hWy0gEN-qXTe`#-OO=JaQnbQdDUw|6l3cNq+;kwhaYAbI2LM1zZG7e+ RcU%Af002ovPDHLkV1nWgG6nzu diff --git a/resources/images/android/navigation/teilen.svg b/resources/images/android/navigation/teilen.svg deleted file mode 100644 index 5528674..0000000 --- a/resources/images/android/navigation/teilen.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/resources/images/android/navigation/tutorial.svg b/resources/images/android/navigation/tutorial.svg new file mode 100644 index 0000000..82e5b2f --- /dev/null +++ b/resources/images/android/navigation/tutorial.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/resources/images/android/navigation/versionsinformation.svg b/resources/images/android/navigation/versionsinformation.svg deleted file mode 100644 index e0634d7..0000000 --- a/resources/images/android/navigation/versionsinformation.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/resources/images/android/tabDivider.svg b/resources/images/android/tabDivider.svg deleted file mode 100644 index cf26d4a..0000000 --- a/resources/images/android/tabDivider.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/resources/images/android/xhdpi/npa.png b/resources/images/android/xhdpi/npa.png index 54ebfaa0641fe9467048e17c5d9a4e81144c722e..02c2f5c9184c64c3e6da0ccce1688739a29a96bd 100644 GIT binary patch literal 13106 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 K=_*N+;Qs-#)d5`q delta 2668 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

K+rMFlt-Us=E=7e??*q(LubGr(bXS^vP z!L0Rb5_AyEcl^c%_XE@5fcHxu22*Z{A*Hh*6N9H37fH&8~!90he(? z1@O$RLCptukr>6!d+8lTRrp_Wy0i~G?lgi2iC&@?xTb}@5jF!T!35d^X8iC2ItgFl z3%0V^W3$JC<;R3_3FW}}a>Rs)2_So^=hgF|`O-DtH6OG)y<2#<0Q-vEz}!H{N#-ap@zZvu1m*txNDffH1v zDyW}3+#GITO1NdbWqg2eQQ-^27lQJ%#;7rZVQff9NC+5eh1f!DAfHmtspr6Layh?p zeqb>tG*4&_$q5@0HY9+5Q1i>pFN04~qgst>LCNu5CU%(!G5cmtnmGxmT~yFn=S9pF zpNY?aF`VQi*~d;7ej{so*jF3 zKw)s2EzJh@S-BT;FM_(>Qo>RKWOKP#E(S5tY2&a%1d2egZ^|*}n1L|Pa~^m{^b`F+ zoDfsQ6ri8b3q4>iQbiJ3&T`<8)3}$*X+x-z;lpk43Q&+R!7 zabBamKZJ}e`g)!#z?AG>#djH)wNclpgMHz^sj=95Z9E~fE-a)R08#5`(}F>c+A%3$U~rQCyz4dackz*49w5P^@-~PE`=q#m+TI?H!fVca0Lpdr^cqnf}Q{ZfVd8G z{pb2a;@A~pg@D33DHT#GfVD7nYwA{DC(e}-McII+iZSoTynDa;hAm}wme~oK?oM~8 z+nC6YBR>Y6r|%Bm9gzLi@jJ)wz|qb&_B*rn%vLzHru`4? ze*nkZrq@lcgN$=rc3cL`io4NB97h7{nkDI%TP{ z6j&%7(gEZ<1qe6sns^OZ=QPe`eHkNTfbD$12SDi}BRxZm5F

@vt@5NO>!e(?AK z^dWvZemP*sFa2ccC&6`g*uk)a;MTl+hw>f3m=&HEo(IMmp{L4pgw!s&V6O_Wd+_N6 znHL~0j8AodOx3=nO98o1sir9f6cEdD5Y=TH*#;OZh1>uPmru$!fRgHu>TVD^&Z>C; z{6Hq)BVVHy`1Eq?sm}#Xh~h31_`~s20T`&Js43u{UZF~b$`CTT|C{|cL(a9cv1k3k z@ubDw;tqLvmtVg8G87z)F~ykfKW=#@@$81cVxvH=u@AQo2SfEzAC&q4^o;`A2eb#bRpl0yTLd;TKg#?F z(p`54?hXXg!5DLl8E7nyiDSTN87f2Jmht1nj}zhU($%e2w*u>t)Qzbd!PYdZLRJN! zi)bg>{Y+1m5YLKdL0xEDXIlsAaocd)aKOZqJPG)UC=mq+=Lkzb(N?qtvDWET!An+` z)q$bTh^$<~+q?~2D;k*xI!8EVh{mCDfJWoy=H>=EKOduy5nNslycu{C46Dj~QRWLU z9xD4%*_XgrGNM~VH*l>J`ex{xU^o%nBe)0XR|m8WXbZY8ymol)0Hu>_hHD1Umvfx^ zY4a|Yy)i0lG~_PP)VCY~Uc$ympo-ip&x6o83hZw`@IZMs6ww>r1b*Pnd%rskvUrm* zi?pGFNZ|$gLg3S$&%5jeqW*aD|EvJWS?Y9kI_Oga-w1pYDwX@{D$@$+JnpXz%qelAhht!({G*zjwf7r2M z$DklO#x2GTOwlntVtPP)g@qdyZh*o$Ng_#rLl*2V*bR4Ut=_qMCnRrP7qu=5EGH6@ z5|V)DMSsyBC?jTynLtBvLYx5W(zKmvJE5?1TAj2yAU5+RZvs1={%=Z%#-cF~F5Yo6 z)Ff}n8$b$^m;@Y?Psyi14x|~)fOW-t8afXm7kl}P&p>f=akw}@d&1+Q$3@V^`9J0V z6d0BU2LuOzYu(UJp`E~37_m2EFBm6=4+tLsu9nb4p@+cmd{Bv?5}+ICyV-X$Xae0Y zxnBY?L{m%SOtrrKFT0c8&xbj}5unMh6U4Dmy)H8$YD4^%>@MKA;&@4&2+Ck3QuqOq z$lr8s!Ab&UJm`jM4lDjp@;PslVdA49Km6Pbpx}Z5I3ZifR=}Ie63u837MJNR)4_X_ z)9q9;x=YtCU7=v{wf@)ogQLEwnyDJNzv|3=srmZ%x!>o4@l5z9;h%u(sxW()9de#I z)!sGU5;a9l zAWRGqL%6>spq(6YfS#g;r~%@bQ>CFQt!WJmmGk9%kPC~5TpWpRR`lMM%3b9yXwqFL zxK03FiuX+KnV^pjI2&*lT$hIAgyewh$7Pq7T@J?9;e*2mgYj1Q*6^+1x+&z#kS{^M zAz*O8V9opy z3;F@`sZ0lu@v?>dE#(v!7bjogW$=34qqfc;0{40~cc}yx2&>l*E*!M!;3vhM*+sEHN4(6cPCb3OGH{H9ccU92OaO#-3qc0r0 za17$6Ezm5`K=Qt|P1ZI6bHbgJJ1KB?-0Eqor$Ne{jh8lF0{e!Xia8a*G2I+u4gqJ0oaU5QenfM|JF-Ua!IOq7X$QOp%{0Yzwq4yZ*2Ss>;yn_0jm86X2d zwvmJ7VD1^SWEVAlrgP&ZaYlDVcLlVY+|Rh50o@$G`hNAn&?l%}P&+VWl$lUw0vJVj z#qf&Y<{t4{#B1PMBXm&cAaL0f{ATc*pg-cj-G4i1TY6|cv>@8+zR`X2KyTNi7rlUP zMb~1y=}h{1 zU{F3VEOWU9+S;BOo=3p*RE_Uzd=DZ?6Q~IU!<|yMOWg+JoQUcX)xlUgB0eG>Twf~_ zSSAo$PL#Blw1e(d@6WwI2hAwAN^X^aSt3v50fj7P@z3;QMIwm=UVd~R^?yR~o}fiL z$)!}z=~LJkP8GzQ%_;%%9DDHr(U2&)5M+(txMN%{W^5qpaFlqca4YD0_bkvOz5HIjNuvP7)Mnc@odC$&!53~oor+H5Uk9k!$R^15p9eIuN8bRL7i@h%P z0(FO@x}!RX;m!pm_&Ar|34bAl1imf`d8;yAW&^!BNhXN8;%#vj2#{s@5vW25Dgu!b zH52#&LHSpC{V60zyOqp-N^+;%R=yg!`=%(wYgSe=#qyM>MNL${!+8;V)GLO7R_o4o9 z6cJx8Cy<%2KO(9^S}LU8$?0ra31XZ$BVGg9NY?!IGj9Gf$TIQ`wt#0TV>j(isNf#d z(S78jZ}u+>z!YVlvL7sE;-H$cExpBa^o1I?I0A7K2W@ASVE?Dy7xC5$0j51M6JsWV zdd7+s(9iP=^$P{p86lA&kzia~_M7nakiFU8OAdzpuUhBrp9=+_`Ciq03Dykn06kz! zbnC0F462LEWaR~r*EL5(0?2)Q$4n44Im1PuldR57;G}$+H6S+1SLG-WC)JCxB;ytEV+XKOu8_9?gQKY|1mHYZK%V7(mU;2k9|J*VFrTjn9pN-fLhPm3e+?sLk@H_NqF!0Ys;lC2!e8L*V zL(GYk+699_sVLrJ0LaQ1DES9^1XhueluwD+h4rtzaQwy6xj;eH;$}1a5EV8XeYXj!08pS;WQ2(p;zK}N3o7yM11olYrG>J*87~S zk{AVhcV0f8x(U=m*-usjKH)81=l44)rsxbXwY%I#F9<&rP~c{OI-f_}^mz~X6Aa%6 z@$0)n{AYyz@29K>?)P+cY3w@yntoNbMwiQw@WO?WGa7+of?CD?6wrgJ_d4nK_#j=J zYf~K`%7eB6u>Zx|o&lWtA9&7zT6AKJ@|WIJ_aS#? zv2mNxH1Ddl7pxV>a}#dEiT7@Pm$3`v3R#*@fX&QB3)pe|M+bWUdpN)HQucEPbWxfp z@g1~$s_Lx3#^4$6nyj1h+Y0zS@R#|NHS&Y%HuHk>`;%%N%!YIIlg{rS0ZO_^(5&S? z0e>&_M`1O{?Xs3*8JrACoVud|q}DF@B;FI+6PZ77H&j{`(5K!65ItEhjy~}GqdFDx z-{Il;x7eNeEv5MwE-P`9a>~GZ_miI_ZikpvDW&pl!bhS&w!C9VRQ zVdgU_77!i9TCo+d6`dsid!atgu__l|!r@l)tW}rKz#{$GH{Rb3_0E_6s%!k$*Q-dO!2T)3Wm@K9^0bFfri>sCKfym$! zo&niX+W(LP#*2^Uo6K6GK$EXbRN|pswVDM%O`vSgfSzt89=QKcCVnygd;uuNLn=ih zLSJ~!6XLJuCSTXWp;mWhZO8yp#oJ;EP!=C5^SdAPd=FPBi2yw4LJLT>7i7i13|lHi zXDpI%ct)II<1{F@+P6!!F;HnwKuEpYQ1)%_*_GRY-xcEzB`1SnxAqubRO8)C``9Pc_=O#ptx;s7353=J;vu$O80{IE0 zL3}3ePy=w4r_q26L~`&C=%?ZtD28P6L2lzF>!9hE6|ea}4Nab_bR(cj(Y-1B+AiIH z3jR6*P^?l|ohp&8i?T(Z10Akc^m`==($#|0yZhiueCn&mkAV^=%$iYv0WC)U7$JDD zdi5}gEr10(1&|YAxtVqcPR&jX-(4Qg&bqsMUmtMmuHWdn4SaH3V*|XQ#@e9q&5l94 z!V1$~_5`JssHo)rayjZk*^kPw!SB?zgd=cfcg$N^gCKKLzG6KF`Qa9={UA7AQ$wW( zDDR6{rhrHj6~tb^Rn$TQECY`ICoTJpuwcajszzNcJ44msq0f7-gf5-yzg&7O=qhO9 zL<;xLBzyR1rav2h9RVnYzDOl1^2d9PbII_p1U){jW*m7P7Dk_E*DSPXLNh9Ed7Xae_v; zo61H)pQtBe$Bl%=+2=Y<9tg2}v*%tb;S>bTT)-6_Zrq=09~Cl-uCsZDb08+MQv`!3 zpsX?waO0DE>u-Mzo*2-8(ot-tE{HhJ;0~N%FW-Y~C!hX}hY0?!a4IatBYuXQC)+~k zq7q-Yb%*|$EtK%(5FG3q;M$M--l@MR@r&`-6@X$C<&763^c(NcC(1$pvNdK;XbVfn zollt72X2kaQZM%h<(SCOyaYtx%ah!jXVz#9wlAecf!kOTHXwA31u4v%y8@X zz;k~I4gcTcuP*?^?Hi&n5R_p^N(u|e- z{_fL%1DP*fAeE_{@83#*$gPv$ajeAOOLQ#zcc=}0&q_?D)6XS_9zSrs^vMQ zJFH8*nlUE^4sVTHzG)lSn>d;kCW9C#wkhYhe?IWBYYk>v~mmdRG>C86$cRa~2Qh^4^w>bsUT_&;_ zH ztplfy|5rG5^M7vs-yOxqa#1?7ZiaH&r8cyj5l#;ve5}t?RZXz5+4cEf2f~HtlHWOa z3aq(~_X>SMxh&F^K0svxM17nygyXkW2|#8tL0t*5nOq_Bfv=0wt^Zx0TZ?9Z@w_Xi z0@19M9YL;L?@wabKO_?n?})q0+#%@A%6EbIOW zFt+H7#bS5n-<XjC_ zvoC8^Q~@}&a-qF8D0{>mr5VtYa9+T zvME#KD?lL|NCk}Of3^PhqP53k87kia*ogHir6}DkS*_gLf4-58X)M7_f_<2Cg3QLX}5_f1Ut5 z4E+PSMh~n*@EYxM$=?Oq5JB&1&>*0+qir>~l$feLRvJz;O&GmHf#@+A8Rzyuj-&AP z^!A{hmkEw4AZoHenE}E}Oc(t?^r4y<%e^>+%;B2)EzpuIX#|psj9}xxsjnRy667fP z7BL_zNGpXPGo=qE!0hzHvyy|{0huP7vk=rnvb_8ZG&Phd;y8G#(wiV|P6^)!8sV*8{pdlgS z+MR>C8%kYm^9I~?$xFXA4X#d08+o!BL_L`nd$IsxpUQdv`qPlz$oyGqEhscN-Z6g< zYIPZ?eg}>UGREEz93QG%9Cv|KOr!$dxczD!v&h2?>K@ri#(?8PRaJX}+(oRgf^tW+ z6KlYwj_#mlGWe8m8>J71(9!|#x_t_jbINS<>J625hm`j!fKu=J4l|wv?NUuuvFK;Y zdtgxbN8=aTr~OGXnHDV?K>yD$a(=Z#ey&qgrxC2}s63(j3d-O`Bv7V{^V(`b#N?je zL-t%tVp@GjTAX*|P8uXs%AJhn|DN`+`^~JVY)~fvvw< ztpiM>HH19xztQb!P@WKt#C{0$^Lp1HAjs^S?%D=II{3eCoDV^xd^}x)z~?LXNWBEj zQpGCT109N9*a29?FE2L#rxU+;Cet{N?fn->(Bi;>Lv2qf{De{2tnQbiWHQK8@@#-+&gdWG5%{W|H`0+WrA9(R&;y=dU0T1!?N_hORoULFw zTWE2-2;w99QXSA?MI76rpvR25DGGOVX!D+u4H?T0IG%95ZMq$@GYisftsi)!`a5lx z@feTsd*UHpX5T2dVQUP><@GMl6kG5~v*Uuuy2Jly##bz#8} zEXpoX1E(8UhyBQ10`Va4PzePyK4j%JMT-~Aji54Nc$?l-tEjtWPYhc=JDr~Bi+bjA z%=*mz4-{PNQ+PZhJjS1aV%|OE+d2~;vp4f3Y*~4l#86bVy1HNX#y}-X<7w(k0Vd4z zYLY@UL3zCttkggYWK#~~)_F)29Lw|~NE~D!WPei7!!{meVZiPKG24-6PQ-kdx#xir zACkPs!tfY>2p;CuL%cha8gnr7BrGhw`#{WAWcKWWUbgp9L`iXgfq=k@epx;SV)5Jh z12+80cb-_K;DZ4lZs1}I#1(g3rp%!L1Z^21htp_Uh*jRpyKLQW&Dm%5{uB|n!TXnof{BoGnc3bc0bkvj`*_oCf5z2BW zZ?RE`V^=;#tcb}=&=5kVEgX=fVGy0)`S^tcyFr6P73sJWLrpx%C!KIAm2<*g{=Hsc#m4l4D;5-eeZ1733b97FxGkvshjP&qMVfmeGd;qLXJVJaBD(>8Oz@($+;YCuF$pZ)Y?~ZyAT1&1Ez3B#@?!kFoD*<7<$B9> z2izH+I-_6!7PX4HNA|=Zf}NTRCakEt9Jr&!?e!*@upw_AC5sSDxQi4eS1C{aJ-O

Oa^1w=UlI)6sO=3AOVj&j`nL&vdFkqbU3=$32zU8?}JekHH)Hd=Q13>I!Dy_j- z-^D|_0=(Sa2I~5O(d-hZnGTxoM2yG<+%cl#erWzN9s}-2s`D{n14nlmA-%w)D-3qL z4LR8bUt1T0>73J@DVs5#-EhyitwIRirlDw&=$3ioiVitt1|B#lyjw^)u5b_oStQd8 z%i8f{wl`_~GYU($4%2rX+zFUDffjf4*zh2q5;#OZ-3>AblHaxsMvIB8!DrE+qHEL# z6NNZDZp$$&;~Yp&*^}>pH(9`GAeI!F&*PE*F@7Dzj0`1ExC66!h1wwU#45T!;Kz5m zGdtiwVmX?P25_0{PX+R5ymdZtxN*=HKoF8d+~q`sm_q&!#xd_SzW&qVeu8c#r!U-h z0jNi!rW^)5&N5aPA^}*<&6axDedf4Hxui+E>R66f|s!iUTF|2LQC5uON`1 zJfh=|ALDNii2$_{0*NDc9vZ+F+Y}Xv_UH*5D6pk18Uz;)9zc(kr}C;|L{b8f(jkz5QvUpV?gb{{U&3{@4u#rPu%f03~!qSaf7zbY(hYa%Ew3WdJfTF*q$S zF)c7NR4_O?F*7001R)MObuXVRU6WZEs|0W_bWIFflkSFflDK jGgL4*Ix#akH8d+QF*-0XIOGpy00000NkvXXu0mjfU6*GQ delta 3601 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 XtZsNe9FYq(00000NkvXXu0mjfsiz;T diff --git a/resources/images/android/xhdpi/npa_preview.png b/resources/images/android/xhdpi/npa_preview.png index 4e39bffbf47f539770328b1b04c4302ed6808857..c88dc5ff7988d6f44a7492edaa1c262292141800 100644 GIT binary patch literal 21895 zcmV)NK)1h%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 E4+iE!DF6Tf diff --git a/resources/images/android/xxhdpi/npa.png b/resources/images/android/xxhdpi/npa.png index cac9cb00233587ccdf5cda1c3122f4104683eb2c..d4ca03c3ef4fef5f6ce786b3ab61928008caf289 100644 GIT binary patch literal 20405 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 WTji=SEcxHB1Zb)2tJSI6M*bhz{~((H diff --git a/resources/images/android/xxhdpi/npa_beta.png b/resources/images/android/xxhdpi/npa_beta.png index 2a93327fa831287ace96548efa54a9d2ef75d4be..9f19d8cc6bbc226cfd7443451d98e1dc36c8cfd5 100644 GIT binary patch literal 37219 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 z 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 Hu0mjfWMZ`G literal 5277 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 VnFM~^zmEw(T}4N^M#(zr{{V{hVDJC{ diff --git a/resources/images/android/xxhdpi/npa_preview.png b/resources/images/android/xxhdpi/npa_preview.png index 37d7f97b47b363f3b6929abdc23b4a77e5714d6e..28b65aad7f276368685fff0479645d6938923d37 100644 GIT binary patch literal 36960 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

_ckF-7lr(SK}y?uAM@zNysN$y~I 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 Ly=;ZFS@8b=(K;%` diff --git a/resources/images/android/xxxhdpi/npa.png b/resources/images/android/xxxhdpi/npa.png index 9804a73884c4e9ba05999461a7a32e00c7c336b4..fe60df189da47f775fb180fd450d7870be216c06 100644 GIT binary patch literal 28198 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

yF`6v_vjyfoiDVq59#{(hVdCN1kTS9~G?j-NF^ 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 U_C8+v7d!#jGcC1BRcqA$0XN06<+F+LH;w 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 literal 6927 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 diff --git a/resources/images/android/arrowRight.svg b/resources/images/arrowRight.svg similarity index 100% rename from resources/images/android/arrowRight.svg rename to resources/images/arrowRight.svg diff --git a/resources/images/back-chevron.png b/resources/images/back-chevron.png deleted file mode 100644 index 94a20d98115e38d2bede22486fe054a9204416e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3347 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 diff --git a/resources/images/bspd1.svg b/resources/images/bspd1.svg deleted file mode 100644 index a7c03ac..0000000 --- a/resources/images/bspd1.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - diff --git a/resources/images/android/search_cancel.svg b/resources/images/cancel.svg similarity index 100% rename from resources/images/android/search_cancel.svg rename to resources/images/cancel.svg diff --git a/resources/images/delete.png b/resources/images/delete.png deleted file mode 100644 index 0ac63487f977696f0706e0f99b4892e6723fe059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$Q3?!q3zsvhC8ms2o&<_uwAa|z6% zt3=PRcQzk!h)U#YJd|KKA#8@z0;3HQ9@;*N5t7R!^7hUsOW4JF`RtBAZIWy=5?if( p7S7^4E|?bcsH6DI7DsjlhLWkaehLq6GXWjP;OXk;vd$@?2>?M^TQ>jz diff --git a/resources/images/iOS/Header-Ausweisapp@3x.png b/resources/images/desktop/background.png similarity index 100% rename from resources/images/iOS/Header-Ausweisapp@3x.png rename to resources/images/desktop/background.png diff --git a/resources/images/desktop/continue_arrow.svg b/resources/images/desktop/continue_arrow.svg new file mode 100644 index 0000000..90ee763 --- /dev/null +++ b/resources/images/desktop/continue_arrow.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/desktop/help_icon.svg b/resources/images/desktop/help_icon.svg new file mode 100644 index 0000000..9e16901 --- /dev/null +++ b/resources/images/desktop/help_icon.svg @@ -0,0 +1,6 @@ + + + + diff --git a/resources/images/desktop/main_history.svg b/resources/images/desktop/main_history.svg new file mode 100644 index 0000000..64e1b68 --- /dev/null +++ b/resources/images/desktop/main_history.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/resources/images/desktop/main_identify.svg b/resources/images/desktop/main_identify.svg new file mode 100644 index 0000000..71b841c --- /dev/null +++ b/resources/images/desktop/main_identify.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/resources/images/desktop/main_pin.svg b/resources/images/desktop/main_pin.svg new file mode 100644 index 0000000..113cff4 --- /dev/null +++ b/resources/images/desktop/main_pin.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/resources/images/desktop/main_provider.svg b/resources/images/desktop/main_provider.svg new file mode 100644 index 0000000..2252adb --- /dev/null +++ b/resources/images/desktop/main_provider.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/resources/images/desktop/sandglass.svg b/resources/images/desktop/sandglass.svg new file mode 100755 index 0000000..b0a3f3a --- /dev/null +++ b/resources/images/desktop/sandglass.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/resources/images/desktop/settings_icon.svg b/resources/images/desktop/settings_icon.svg new file mode 100644 index 0000000..6de9512 --- /dev/null +++ b/resources/images/desktop/settings_icon.svg @@ -0,0 +1,80 @@ + + + + + + + + diff --git a/resources/images/desktop/titlebar_arrow.svg b/resources/images/desktop/titlebar_arrow.svg new file mode 100644 index 0000000..64838f7 --- /dev/null +++ b/resources/images/desktop/titlebar_arrow.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/green_check_mark.svg b/resources/images/green_check_mark.svg deleted file mode 100755 index 9ebfea5..0000000 --- a/resources/images/green_check_mark.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/resources/images/gruener_Haken.svg b/resources/images/gruener_Haken.svg deleted file mode 100755 index 59e2423..0000000 --- a/resources/images/gruener_Haken.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon1024.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon1024.png index 6c006ddd6b4c78bcbdfba2fa3680378c49e460aa..20e8cba5b7733b87bb169a7352b8e46f25dac040 100644 GIT binary patch literal 23869 zcmZsBc|27A_y4(fX6*aE#Ux4gErc?KQWR~Hbtp?z$XaABTBwvFk;|5E*_r5=W{vN+SX1TBByv{kVbIv`l^L)kH9Nf#xCB+2*y!$N74g(PJzeM05 z;6E0%eJ}re^4xV`7r@Kg+^eo6{22*2ymvR`x5@m$A2|IiP6Yfn_J5x}AAEKK5WvRj zs5y(paxGMgEcrnz`fhi--r-K8`%9f8*J~5&&N$v}yz=I!Q^E(=`_0aYAME2B{9o^i zc=gRT?macB`EnUEy0rh)OYNxF{ihzZhUE61DK@@S>qRY4J^i@D0`DzGNj@_)g!EilWvg3A*NBGOW;Ih5GC6sf|x-P!4y7cnf@muvlW#%ze&ey7(F6Ms? zDccwL{BzVh+qmjeSjCa(cgI8XzC@HCI(nlnpw!f-*zjbbX5{N1u?&~s7d^LX+(X~& zzwpK~ree^W{_$Li$)$3eGfz6h-&&u0+U1_wcKp_RtoX;tms&wDdahPFUaqt|liqng zv)e!OlYhpi$ckeD*`I0UhcD!RIhE3imHe>F+Z3AH>u{&xI)h40YNAyf@p{}&EB+o< z*mtGU{$jz`=rX2DV$*eot4C_vrB~msRytg%bg<3cc&=op{q6c#1~sa*KP0F3@b%h@ zZx39qw2!Pfy3S%9yZL@)jkUP4cJxN=t!j7w*A(~E*5I5T$2*Pp-k)7u{r9eGwEIuP z>iWw3;_Bb!nd|QcT?^E#V`?IbzP10Fv%6J4v#@&Q?azlz7t&j?lPRtD8v`;st~LLd zih6f!WO~s%?c=5LLsdVX7k7>oe!h3}Rd4;bshP!zYGz(e*RB4szhD2%-z)2T{pI1u zk?M}0(?zYrwLRnAL$gzVSEl~`8JPH2-uE=VYVb;K_t){(_dj1&^iGb=E`1n$-8xi$ zzvkD2iXW#_TEa6shiChTrWU?Weth0GIyBRFtL#T`ddKMez@zuSpEQlQ+-;nkTZ(({ z<)7A`_U^~{-=XM&FJFGoT`m6BKlSPCqt=1xo@dp}I}PW;pLa*(_T+r{ef>>;;Il3| za%Bx!hYNe_v=$S#L81_i;-QIAH2%eZ5nu>5YQdw zX}{i!wf|Z}U037?n@bAlj00#d( zlK}+q*8h1pihJ?@(@Y7D`mgu@)AL_QK=J9n%{cC?B`msYrJUI+$UJ0Y|KZnwM!zby z^iEk<_jZQKqS3YPnD3_zliVdTzl{7_S+f%f6>*z1SvXg#%Uk>Ep-025?4K(#@tfds z*3_DxV^G!jM5cSaa`*W^uktc%O&L#%9&~=apK-pVQ$H_rB8lW}Y&^%4e1Q~iBXVajWKneqNolB{7hQAJ`tGnUU!Rx zgrZZ6u8f0!A2QRP4FlIj)rJG?uLp4R-0wVpVTbqD8SEGc|GML_Qu@&3#g+?|tC9Xq z*y_G*9_HT;QhsnzPMN}IeZOLPgS^hIj@EZ(M3qLB5~PQuzGzPX7XoF~(qB91por#% ztYdp)Z!p*>PlQ#@Kh@AIIfU8X3=*p5fjbAJQjDABk~72WLk9*G7^NU^LqAUYyNRaz zpYwwrA4~UP)(E-Ad(J1dfJPnF>-+dSISkE|gMF4+E9@RRoJy(IQ6eDk6S9>RdE(>6 zOMPj(Fn(OT3Q4uuzx*xv9NFfn{w8cl#8L3pNf=CoqQqw1Zpu;E9TfQ4M00KzmLL+q z4;w|I|H&oSlIdrZ9+$&yge)Xj)bbpDA0j5U#`H8tZfqZ`s*8o+Pe-;RyC2JLALlP-}owc3Pcx0_#?K~HDK{;qg5R$--aqN}KrBQzb zVCU*;!wAMitdCW+#-AJ_Zlkj)fCJK#cP!JW>zp>)qFRF>@bg*qUm97U>8jyram~|^ z%{L~;u^%-UwIWdJQjJ%{Ik@t^$^1N#UQ-H<=UH+B6y$U-j#fM9RP4D&l}K zH#2%t$9Yi7+38gp89P8Jzw_`S#9Th)u}0Wsg}u`H7Z;iC9|A$zJb+R4kd##a{td?G zK@Jl2M19pAom`iWNd3IVfdru)AI(El)}GPe+ZKmd7zwv0P!6$ z`|FYCVAh-+5Ex0%kyg{X0*!{Ge}G2b&o}(CmB@IKGAKkA2+i3(_jv&XT(g?eNvGod z_f(1)oG1A;9{@~dcFiG81q7>H`314e^-1|_FtSB4r{6+A zjx9d7VvodZ8AssPq0&9!X476s{DhyhCYe94^TTp4dMeJ+nZ#$YDd@EOrCdmq7?X?N ziY#CE#f{cBauZkMGsCYQ^gGH}Xxae^c2s@EKTR3#*z}Tk8f{Ufr^XVe62T@*E);*LUFM=`M+aD#S#OWWZXSHfS%3)G>d5S+9F*)n$;}vKAQ%4pD{RHm(?ihN z{eG0s8yOu&sA=sF_Ku-TfIaj6Zu{8*lUfV|=gAg3QaxPBiRzrK`V7mPoaZ*qzQ z?=cirN1?M*S^qJLHAEuX?2N*OC|*vuwk3)%yMOFf78LF`<`;;!ec^e58?!_qULU-1 z>ZjuLq!HwF-fLcKQLLIrAU;`773%m^AOTnG8+OfiN1^5!0ZvUKEpn4Y5feTvG~#cz`h|JvjVXHCV`_-HB$g? zH;?}Qy}Z2q`Sa(GAK%JVX*_Bk(p7tOFzc|Rh$09~4^>6X&onPJ_f%D0jHsYZHu$PK zIlVKfP%>8Qo_(V$NC9$;UTMBb_>a(~WoGw{;f98l@^YgvA8zT0)!$iteV(4aCU3N+ z*Qcl5;)(B9w>s2u0@3Yfft*v-%Ir#gZOD3CjdgxTMn;-b1c}jfeWj@4RYk?>nW6Cs zx@_5v$OoweWA!LtgxjuX_6^Iet<)~1MvJc)`S@_tN`42XAum&T_UVneV>{>C^ zXB&-PqFi^_!vQU?yQ|jMh6*%peLqaY*_fJ2s=AH%-G>DeS_DtoqsTrf8Rs%Bh93ru zGr2CbAEB3+!OJVQ+EcnCa%Jhy+7$=RU&Xp%Y#gxY9x(R3-nV_>dj!kq`+6dQ8rbI< zZFx0Xgf2h^W^~@|=t?G-D3 z&_$x>A`Fv?&){>k8ATd?WYEBhD zxv+}xVAVFviSBggPZoHJ^E7B}N-rYJzoNWIb9J}NG=ZuqWG6W;RS|06EQk^z!fvTQ zWUax-GGTtTng=WA3H>)d-sSr9neDK;JPQ5KS9(f!UL0R0NCCfA;rZYo|GS=K3NU?h zX?}eXx1DHo0=4k0U*SGFgM#k^D`Lqdtt#SgIL){EWRKi5*j*?~Uo5nF5#S#WjJ4yq zeD}`{vF5BTcdD;b*%+oAs%hURBs^p((6Qj_lqNU6Vz3UU&js#m{OoeV4f}_1xNNDAZ*Xa^DZVrv%KR z1?$_(-4nTMu}~<(X4N#j^*`Ba-_!J~K02{V5COh(yckt8SK{QHR2%?P<}6|kp2XrDt~uYE}x{K`dbo-x0 zB(&h^z1&}u(X-_XTR141BQ5Av{7ev9vC95#VqskYX zfu|T#=S+nz5kgsrXy z2QqHJNKL>Buj~V`8yuwBYYdfbrOm+fggKukC&1X)`VFbUtu@H>kX?tsf0V9Hzg*BT zhF$KCUISI4Q1)(>R@T@oBrJ%H%N~y(K)#H!BMW7i=TODCwPJ2RNQZ zyL7;V2mFLwI+Ra}ae!kE>%@Vf!u9tg>MqPxA3s3)c`o;8%#^N*%V3Q~+FPIU0dm`|WepG>l(q7}5cN zA3N8|Rc7C=vco}Xf#Ufw3B1kMayj_r>U{}diem2?A3t$R{}Tc>960b4jvf1ur#FzjyX>F#$gj z4shPSUfz-Y$pjV;LG7vx?g32kzqFpu5(Lmi7Dx00f1cwYV8`p;tVpA96!Bw2{vE^X za9En+gON|Ca9U2VYF)W+Pi_biuzLxU#{+mEo{cfJ5ZAmFXLmj2w7$kQfFO{?)lR@Y z{q`8^(EXKW6QE`sVm@|#ycd^X@!YD3+KZd^z~GJsbCcWusq?@ZzxN9sAR>&atlpZ6 ztvrzXYAwX!>B4FVFV?vCA}3b>zCXE|>r;uR*uWWOrjS8yQ-alh%(<_n*-8>XgD@>Y zP9A=Vs~+pW(lH?i)7QsOT={QX?bj+)5txC{@YhZHK=FeodCoiQBtU>4V+`JL|6zt; zjbP^BbifTL79d9C@H3HsRpqWHiaJ16hDc9S6LuItnc>UUDE>RWXtnO14$Suo?B@6U zmIzq)TeyU)P#%qc`1*8Dl>;npB?yEbJ<}JB!04dU&#goh+mIw z3K48kEO^~^-V(?X@WE(wjJ5!ai;)*a9!(BWV7hBru6v}%1njmoTt5&j!~qd+*SB0) z6NidRyp&-4?c_YdLKrWAc&o98_3_%9OL$_3khcraSs|j>hUM)KgdgEsF!K)|Bt2_T zy021M1XfS6(zI}mM6`U9MPV7fi5@$Fn<`W80ELnsssRvwf23Hcaaj&39)o#S4+*fT z(W+ygED0jd4paS1Jl1(J%>YG7~^(B20#bO+XV3mz;aYz7h=F?7bgN_e;|w3 zaDfWeB1Jr~oyw4uIh^23L$?@ra9(JfcM5b>}8)rcu=R4U>Nbn02m$6{`eN(J|ZNKSfTSH>w zi2M^iz}WXh)NKlq0&dI}SSM7hB5tiWb@=GpctbmvR=u(@P`D`dvf3qYXSTv!89^Bn zX)(nBdsMEU$hH1q3+qXdhD2fh0ASY;N?el>WY`>3 z3G!8`n51lz{$0nR+OM#iyaiEjfEvW+&+n1q^^6}QRpXB=edK+l8aAJM73j}Vou}eH zpm<}EBvmAM@fAne*avoldBYo~dO}{W3{P#^Z~Ao0D8(}Si84o0sCj~3?3Md=Hxv}j z{#+^Em@2}d{iutFC*aSYf3~cw@CcWUORRA9sTJFn-N`m8eO-HR-TqCzGO$9qp@`Y_ zsS>alyBrs@eZ#EwzS?6$Q+%mg3txN@;09w>X=WM9oUypFXKkZ*y0zxR<*%GK!*}XP z&@HFZr{4=v3SBa3?7b5g-i#foDonn5-xWLecY}>M=4&=}nBm6Bd~!BQpQ5m|9K|j4K~Rg8sCi-C#RD-n&pLw<_AV$kqVOzD zu>zS7t+Rh8SCpJaRl0Zd(}A~_FyCjzb`YwdjDA5G!h+hzLv9GLeEG^g@CB(HBgxqP zO)%hw$+Q=bH-?Y6w7Kk6<2GA7{E_1}da)bl|WGUjFeIzbpy$eeO}xb9m^F?W*Rf?bjiL0dF1YL&pog%u6=QO-7&39sKnnf!Pi zMuC%10U^Z&#CfYtRo7*;SRzAAR69pQt2z$)EwN6Xr5NO>EoDnEk8hSeg-GZi#&@5KK=9VN zMo${8f>$XhDf<&3YLXs^M2-2?CSr%m?#Db?#Xdv)o?>ohFvXIfh>IaLe@$iAq5_lE!ssHF_?r z>hIwdDDXB*LM$6|C|z81XY$O-)Lre;Z|k@9ITkw|(s38QN79_?zh?GeH^O|yJ>>9X z{r1XU^`QA6E-pL7ne^Z&e0)2;nGCmW%72q@x3{KDZlYqBco+6#`$+LBmPA9iA3t2q z67Ghy)X@k?yZ2)|H#J|F@z#R5(63Ue5xT0Mg4myk!w|ix1b;Dx%p3K=0&qH)(nCuK zc-+m$6fK+@`Bn(O_vXr9VA5FMX9Zo>Q_-0t-B(@E)$>AbNK0JSs|J#F`0mcKTpJJGv?LD`wci&mu_DOjLgfdymCWL+5>6H zheqZ>2!19tOxww3Abpm>MV@xV6?EOsl(DvUJF#F1rX4xH8yitch3Wdys+iqVoaO-!)V&~jXJ>;EjJW2B@C&p2Z`ZWjPI&~4Z={}Ra#5(Z)0h(+9Z=%B3MG6|( zvEhAXFY;?|A?3rWSc(V)xk~G@4!*2mhu`~+bCzARz$T4T`!>jW3)&!OxOv-H4^y$h zOun~V(?)HF@wIKl9qE5*3jMbuI&GDJ7sWtt^m2dBUSDb zSolV#?18_i*ZRaN8m|@2xcfSGEB5_Aw>ax|f%7Q1rOx@@L|!Rp0~?8F z;w_elG^96Kk(|$?Nt$-;<$4L3`-{~KH_lD%U)avtBT3H4JxhLd@pgbjqXOC}`mGN$ z*paejC*t)G*>BpfOovsPDjO!zc3RIK3y`%?t}2d^RYqHo+IPC z+7MS~Htj1g*%b4)>i92Tkgy(^m-XXe_J>xULag%Id~U>4u{uSo5H7~>Z+JkWc!%vfCY%RQ|o#?X!Vd?n+$xs4T!l@KIlL=#Z_Cj^b_v!OP1^OP+bP3^auL(2izwqL%%JPouA)OTn z_B7*6Iw#Y{$Q7}wAXtPk23SohbDkimk9-yTD#6ISYzM*zL6*z6gA1P52vaC+MbX{; zg^LdQqHc(lEgY@eQHWAgrU27JOvg4R!H*YPaLt%0Gzk`(LRdIE1o7E*@5G_u=;4!i zyD=jUGK}RAbaO5b<08hp?Y*=eV-znI{_idTnw$*=cYjnwxusSSu3FAq5Vr(5wk$jp z5$Am-cjT^G?)?T#J!DIC+%biny@?{+R8;o;1|_6o=F_4ngYnETRgTV6=(;#ae?}7U zDKC_QtVTKX%40Nfa?J*{bJAHh&^(P8e|l)M)SuwZc~DZj!IO|H#PAK|r`W?@ZChme zfd-Opji{IVzT6LLA5e+ZaH1vbj+TabMf!FFX}Rc%Ah`)KnFF8KZZ(hk}L<{uU*Z4tu^X z#sBB%58@q-?&DPiPUfTOI$;XeX38Jg7o=(4+b7^;9OPf=U+^1X86L(bao$SXV6mC; za}D1^8KHZPV>@J==hP_5H?S9M-2{m+IV>NRxAETv$8FBYVJ*fN!@F?CbE_Cb!Z^0i z*Kd}!KR@7Aw%?15CE#=Q2RmH_drB(|G0`~dds?OeN1-k6zc<$l(Yccxr5-4!?(|Fj z?i0nXV~MU_6MMRj4(?$SS0_4I>@s~NNPFK(=G>R)6D76TMAutOO7y6ds-5QA^?Ak3 zUs@goRed$+*x7zzv4Ta~uF<~mFd?9&O8WsAHxJ5cx;M4z>!8eirfje(7Y0jOJB8u+ zaS8Fr7YV-Qy?V85Sjv_}>BuJ3?|yRNf%6~EwGGNsuDsp3tdbSPXcB|az(1O)KTZBf zaStA+C=d11SeFH1>Lf5(^#pE#n8{U{12uq}vgi&@~WE zMbD&Zqx6D33(;hA#IE9|HVU4Qs1kp6!XsfJu#X>PyAN+XHB6ucBAfP?#9=L4<-qFw zBQk`_Ky0vd>WpvQNjld#V%@bR=%6f6VxHhtJ10jdT$8HaNFnug|M>fIBXdm)LO%&H z&OS?PX3-pujB?fPd#A3Pr>H(yWxC0MXd{fpMWyh<;2l#{MA^>o_!yPI&=}he(=qvn z4>*2?vrdO{LFvoPp8)lK$o$+yf>5(k*Qej>pU&7I!muq1_PV?YC(M6*C-6)WxDTi+ z4)*IksHoXU-aJa}} z%BKmFtTQn3)ShS~gk4ceoniUPpodGx7KPOZX}<%-;gi$G8u!)m76VeQUy92Qe?jIL zA7q!lCu~ZX@txW?uubzyA8YYj9TB6Qx&-vfaA{8c`#bPFARj$i_U$0yejJ#d{lX5T zsqoGG4N&=iDw6NbP0+S!eW1+mp+`Z>qsx0HRHb~as3`rP2>o*t5q!18@X}pLpr%n9 z0Ya4GOkuycoyNr!pudj>dcNM1`UpiG>=$n(Bu>(@kQ6KA@$mq>q}5xls*{JS~sf5 z`0EZfdyliXC+8yn9x}NpYrfcDJw+(KTOpJy3n7O#al>*$O{s**=)xO=S_1ZZR1C78 z*2df*!Qc+|GHx4+_&pB|Zp5S52`6;=>AN)3g8@=gk(^2rDw3h$MBN5pEI2eRSQi4_ zByh5J`jAP#`JE5iRQC57qfeF2!yNeH7>&Dos&0$#jC z8c%O)CV*v7H|`Z@CN*15vN3C>;Fn16g@%)C(-HarvTSsL0bpdG6?1{Rm58obGj?^r z5Ek2n7?EFg>`Lp48DnfNId=9W0@Wqd>qz09@ds{z&3#dnB?^7=uSlsqL9U(qstuuq z@BCOw1TbvnHXxBt3zCnx`HM9kZ9y>h^6P=x60E0_91)zVK5|&YY3hyFTp;U6sL(CA z**UDIIAcmaG!&|e+7+KQflx1A&F>?p0MmIDn*(N|H+^_AVMEeYI{`4p4`5$v5$xVH z{+_z5hKg)gMMLd}3lN5>B|KLb1LiIP*QMh*VuVYN&%29)afef2ODkX>Me3_`5oI<$ z;92a`C&bF$2PYS0pG0zkX34R zT`kYLTPmU1x$HOySo$V5nDkXQ8TIH8iQrN#=vL*13L^yke8YUsZCP6kxiw&DbAc3G zp$aj>zVggdGNt{+vAU=fA$ExP*9ZF% zKg~bSe3zTqjk%OH`zz}a?56>gEm$W?{in>!8j#Wts%_{+<(+u#)G~JC^3VS5vCWiI zNja5s9Rz9~UZRb-5w?#Fc=R&;Bx734vHc$gHWp+&m_y(a>@<@E%?%$;^4ciEoD>06 zJ;ft{&d+e~-Nlb>x_kgqNN(mTJK%HCS)liS+Z}^|=|`h)Z1UQy&ywtLJq3p<+35l) z9zZ!yD97aIoQ^w4grlp!hO0$T>gj+a1fn^u;MqaMTjnzqFOl)#k< zImu1Zw`;F&1VpXa)-`^TGf+#ga0VOMLcTWe|zw3zLILdYI_?&$< zQkWES9`AT}VAFQE6+5kVHTK)t;pJaSw@@qBqUkHZHCPflNFcb`Z$MlgWyc?{&U$D8Hd(-jl^{=>WaQ z-78TR%d~t*6nn@Dh?N1$z5dcLf(ZEIbYnu0&BJ|oSSVeTgpojlzCZLyccWm$Jmkaa%MBA7bhfXAkUeL#LY!7L$bo`cgBOBQPuW|Cj z2rwnmalUaV!Nj=vmK=n4IpVOK4^Z^LUkq@Z+ZrnI&gntK00l>cQBJ8rlG(uuv1>BA zI)XG3;3wd<3OfXoh16RcN1gY~mhqeE!QQVb%aV+60VpIgPd@`VMJW6a(t7t7g`cE# zB6FL+8c??McS_-CAzPXn`ZQ1$q)nJO6XB^^(IUN#Xv1|I=(d)a<*F;pSmX&MJl zvI%eoS&Vwhs6h-mopCyTIGm>ye+GVA%HV)oWaU|Pli9m6pcBEz0};lsxQ%=q{5Hi0 z!oWOKps;{U8~IzO0_F#=0Gr65Yd9ZXm={(j-Q%OA$YMQZB1h#g=kst8mno@eNWUOE zEY7F;uOSZS3-U*Eq#;M`U|Jj)LfDUe#=MH*Y&I*=2!u*m70h!iNl~VVvh4Sq^1Ywn z*biZp(6Nu7;wgde7PG|^zp@=C4kIO+yDE7*#&F2@3y9>+yTErz+yJl})$){6{LyCT zd!(W_W7^O`qK}zt1XY#vQ{ycr%jPwJA%fLfZ?b-lEPA$YXN&!%-bCBN&anSV!g)0_ z0Kd|hL-P9lVgz8*{m=3n@d!5~1RUyx4vH*dsE*CI|Ge_*@exGAfe}ZJ;`YEJ{C3=t zzMC8UL6WToRSTI(J$P9Ej)LJOi?_5*{iH%sKLLs#%Y7=`S;%Fa$txLW-h3K)wU zMeQ!!+5Q9!3-2dO=)JhPaAEPG)}8yUO^eB+qLdwrarm6&pV%_$=kg0D^(F7kQE|rp z9jQ<888(aW(_h2Qg0wa*#o1R!Xe2Ub7lV%<|CYFnYQ8PS$H%_8cq}WcQkV{gnyjJp zWpui7=kF8L(=(nf2nYS;pDZx+pXH&zo(M^b^ZA_7;i{glvi1OqJSQ_ulupvjT$0C% z>rw$7dA{KgZ1}SB9k2K*@S_&Z!+IE8Y_B{7k4OURk_Ub)Z{CXpp1Smh zzhGGh)9isxp`7eA+Hk5oslyzkVJ{NbZOwB%mnaQr=qKlAVE8Kj@%hkWo=OuZ5C5v` zISRxMud7N}8)|VBAu@ZJsg%0|z6%D&JTqSJM*=}i_(Ttiv|w4!1AYekBMUYVX4sk64EQ*H;z105HRY>(E#hAPu4h> z>!&z(LASLrkLu=h>RA$Sk04Q={yxv>g|XyEM;P5EE64O~p2S@AtY#7gGBHc2x9Z0yW^wCwWS z=2Bh?{NSzRl<(syjEkquh0f@Z{5Ugy1#n}KYw2W6C>2J+tQG9c+u~+abh^AZBMt7hUcHD>HzGfsBqj*}@|(c&6~eeJiFy)D+hub1*!9-J@RMAU4bkpxNVWN|e$}WrU)+Pd9f#KJc#N`_V_G9Z;b%RrOj*>mQDgE$G_~#?L<0?dLmko}^?0?HEae&dN zB_3Hb*#1^i3W_>!9)TX}njeQL*jnCQKrUx}8?GJ!tNnU=5y$8+ZxEwKS#nD|k=t6; zy`EYe!8(py5y3L&d7hC9%eux9vnhC>E`TKacn5+!7j?&(VmA&(;n62ZT^sF<7y6;f zM+GNzlCeiCpy3=WX5Ef+YGrt4I!px1_S>o&ljF^GcSCJvO)@-k;FC4!N&& zO#~HG_qNI=uBMg-D`7qXuaHfkVol(3grn41-*Z#AdOS9|YSB5Ew{>r$9Q*0d8NXbr zq@F;&_0OlG@8Rn-r+(z_f&Tu^>R&YDOxzZ%*K1t$sq{qFU!WR{*lW9*<#HeCcf9vS)~F)G-X zRk#V`o20kgOb8t>bu>V;)0VelsnhSguLxr9QK=LpwtI)7NK45kUXq{i=cnfqH)7R{ zS_*pp)2G^BtaqLE&){6$?tu+f{8UY|P+7YQluSyXCFBe890GkA)Xc+=NVS^PjHeQp z>oH>d;j={Y3kV-OL`J-7T|y-+lvcCu;Sbq?qIOio>vz{C3YvWIys(nUjZ0kdkeGSV zB}L>IJQ#d|c<^|Y+Ae9w+mIL@tv3^BN6sEFMZP6!95UjwUqHkW`8?3JAYso-_95Sr z{}NQ-Wn9d&|;SQ*~~LFj}{Un`twqt7QW=bMFVy|nQ*Rpw`;bX1?b$_{+LZDig9rN zg6uW-&04|{C>=wDj#!vtDR)lA&eV8T?O^LhvO@(e{E(L4n-VOpMe>-EWZ5q_RAnabjSS5l zFeg`&=qGM_PZ-c>tiA1$nt=x$G7l-)ZA3djI(auY zT_CclDp)(bO%ckG-dt7FA(rXpJ;=8QhlO&`kzr+lhmH;(cX2X4iD$vN8@}ruk;l+p zxmjI-Ktf>`q{2;i+%G0R9M7}cjDRGa#iKfJl;@)ckCbwjxz5pblhq^N!(f1$5^(sv6v4Y>QrDN{Ho(12 zbc5KGkGD8H;im3b7R+Jq*!iaSw~Rm_ntbu*J(jzu35R?vc<|>~7gGZm83jDj@-ula z`wNNF^d#Ox5aL!Tvd(VD-(eEiSPR&%C@)@YvfB2WHS+Bx(ZaBUNPWj7q+{dHjHx8X zwU-_g++^+yz6fTsLV|yA*FXK{xkm*8pKrs38Q#ITy5RtPeNG(4yo4FuhK}od`&L94 z-?QMFn3~M0Em>l{i_396XgN0xEz_wC@8){V`RU;7VS%s2!VD}Af|^I=2uZu)LBYPM zUp!I-eD6^C;;TJiEbCLh6_c|;TF&uTb5c9S+H`^q#%<@Dafo8Q{UC-e3Wiq|R*kct ztgk-+ootlb`iN%MEnN}DZR*DD^TY$Nrm>}r6Z-%7P~J&Cfe4PGr5m(rPCDxY zsh2%F zp1PT~T&L4C>l>;Yg}-|C`pZtxVvnP}SzN4>Q{lUX#(E4Q^fq1I%XYbpgHzt~vTe~z zJ$A$It&yjNwTg|LozICse19d<=tjBUy`tH-v0_(b#MNG%+45k2fQpLc4i9B9(OaUe zeY-EYJTB9sGOskpqS-F|g-)SVwruQa>_xc{vYaT7ZKkh-()N=W95ia`U7PVWcEdp=kcGhcAa@gQ`&k@6z zj^pb3T=e`F*-%$5#_FjHqP!gsR?7==43p6qnd?fJp*8Zvn#zUAxzuS<@KSTWO7c?A zv4ZMfE_x{4ZT+Q|PRlNGr4n7#AmcDU_Yn|`-Hm)o?aqc`V(7S0jUs)CmvQazDRA>z3{wQZbVJ0+ivD0ya2(QrH5yIa7N`hNyR8t=;8#WIk*B zMzg61g^+xM*N2(}Co^ZZRVWlc4|Nok@!!C71pASZCXr2Vhxy_lqzInzM0%$ zEbz(3I8~Cd4ekk^HOEW*Zy@tTnnqI+XaTx@}0w!@UD~{$~qW{!7K7_ z+Jai^SCF{Q`37vR>6wX8qV>_Fy}I<7si%lk66?6C*JCFmT!QG>r3<}mO6_z+DuK3@ zXvCtcqj&Pawu?ZY^R1DNl8V+jG@8DPo2opy2hn|;Qgcc86u~b_j<*9_wM>`Y#+!0K zgLnn?GA=2CLLVsN=e1$2?hT|5THh8MydXl+(L-->pHyVBO%KY@+tz3U_ejC(r=1js zD2T2*m%xUrPUxrK5W36a(lBka(e!FgfImM@Za=5rPm((DZb_Umv)M3LCG;vMlA9vE zFIEXtlq7q1Cu2RJs7v`iedemy^wB}`oCdD%y*rtnh&PuK9T~mHx+@jFe!^=38ttLT zXj28}TWG0bszi@gfA%nEH(}vNIxhN!hfBnIqRiDP=eiXn;sL4W9$z>@pKQ%PqJ;g{ zDm7`@C62|OeA~qyYQnJoX&2*i`X^opa_ophy?*zbcN%f@gJRp;a7_QoI&omPF?$s& ztJ~?0G0wkY*UP9ofK2lfJS7I@Jl8UtgbLSl_TLpIb$k<|Zd>g&!w@Uso#74fa?Y%b zGj|l}ctz1UOa>QEcrHMOlS`l?RB5`w&+^W&LS0&>>8>&p^DkV~b2E{##InfAOW{*Y zx$GI^>P`{CnXEL83pUW|*+)zJX+fn5l@hAb)Q-Q;S43BGj&PAWRz=;;4X5AXKr}Pc zmCmt84EyQ_Ik|plta@GcXBSc&C0szciWs~Lx*+Y#vB>u@Yweim#wD8U3AzpBQ7;yx z-jrn?5VVmdxd~3^HCH)YpZCV+ezmpte**TOh?hyXL@v+h-a@N_R!b9Kc3uAE@;&TN zFdgj8TG|DU5T+BF#Y5$p(gH^=-Meu3Gp%Ie9&x2%s}GW^ek<8xD^D!u{o=rMZttBj zW3XCj>&xEWi895E9u>T_lE=(negI<}>pf|F4WI4~OcF{^yQ;mnB=6P}U+#*-e|I zFqN%DM3k~5BHLU=+ANhUWh-l6in3&FMp?2%RMs#;$iA;L^SeFI@1NiE`|m#IIq$je zd+s^+-uL~S^EuAys6Fhm1P@UoJ38O+vs3TUz-^cHIM51q?;~QA+@!gNZ;&>2;epWE z_X`#mva!5tK7rD94w%?V5KW|=CFT^l=1<1NtN1=kzlQ@gwntAi*{ZD2fd|KMhBYbU z%{|v#Mh9<74Q3GmT#q%dyf;O~ndmgR6~t@XqVi5Xr}?g4m6vf$ED%;+vXkj>GLnx3 za}9l1A1r%)t~m2${o3rRi|+>1bQv-3IV^nDyIyu zfiq8AF|CHOXTr}s@5hs4CNjfpzqaEN2a>3dm~{!?Qw$S5$7nEiJFiwCG4xHvxX&w~ zdhgiIZHya|-)@a(MCJ z2vV4IW*ZB*%i|65@$K;F;5^@8>rsgrHtjPn9$$=%s$IMKti0@ndGV|afY{rAya1TJ zJ`U>f7SeQ$rog>7rDuilp1bxwERHAo_Smy=LLzeUl8iF?99I_BNI7LEjLdw0k!)|~ zPA_?xZt@b+wUDcPI@PDz_?PGJK4%wdG12KY%z*2%QcBTE$D_#NTUw4Ditrb&qVPzI ziGS&=9uM&h>d>w;)Tih9P>E``nD$1=s&+5qzk%k%oGehtp*^{OBFewK!p@ zJ7V^uFN*Z0{UX36*6V(Jq=LYTv|0Y*AdZL(bKwkG$PP__*z|i2xRnQ{s3Jt-qJT zuGd!js~ua@C;F-~la!a3uHi{F1LEbbh~srX z?2kV*=A%fPWhQ*vh4yez8xO6` z*KMk+8nGvq`3MQF@4MU|8oX8&1dAHbK}npD7IS5q7WT zw?FF<{)ea9t4rwFOCJ3H)# zx+HmJ40HY|GfISwY=Z!yecjTjbbD}nHzC=^C<-p{4YzA~Q-uaVMJ+iLs zptOZ0?$VCZj(sR#diVEkm2y#BHAhCY>9(neETID5>iJLQiec5l9LsNui0}A!wJYy) z_kMZN^}hi+X% z$@7UNT@e?1^h~pE&-^Bzw2{&Nf`EDu8t~S%)wEdHBKyy9Lu7Mk!xxWymV6OG#z@CT zU(e#Vp1})M3T|?PPpZI05gnwu=zp1H7bbOQXVq<~(odw{~RUET!@94?VCt(~~gKOX0_KuZ`N)Mg-Byu9eExs|% zHR4t3YXx<`%^iRb+*UR*6<3t_u<=+{hn3)t324Phz7k933($E#g2;BnjoW8xzU%d$_Lyy0&(}!Kx$!1F#~prq+9=wAn!6 zp7XMokMNy+2r3c&!ylWO#cUyM0BbA)&J%xvJ2)X1(Bb{n9zKGYXr091DzWoT4gv2Z zL4S#Vl4B;!I{$z_XT7)P|5R>eH;WYG-~mvLOYP5Lf`uIreC+TJNap}gxhZuFONKA9 z%Z7Yf%Y0zSUO4|3;lltm8)*pG_982Xj!FFuFx|SE7l6q=+R{f~f6=selY%W0 zU*W_wQ4Ar3LEO6=j0ByWeC$@zEZu%aDVN>kej{ovCUHsMuP8&hD0p6Lpapzl2Tp`= zs@^27=euz4Ukp-A_E=4`(#H&^#gPwbYrmSUVnSnbP-iy@T?|>g5?*V^3q(FjosgPU z%@HojLl!hC;!F6qCOkL-X0z{X&7$$&&o6*5aEep23K4>l1TD9m$81;+)v9mA_6hw- zpxy{VOB7i#ymCEfw{I;1u0XAiwok!s8a&Q8Tyqd8{LuMM%dL(X^BR0zG=ef8KH|Z3 zAIN`==DOw%-K@Q#iF`1N$L> zBJg&u90-+!GI3O0tb|6&j;|PGFrl9U(XZ=LlHe!+XK$##KN>`1LJKbWf2_mU5~dLR z8M!M#3~4Ac=PT6zo`HiF1g~t-v#J9WeMn%4E`&F2*en9|LGsard~AK^Ysrt#yhbpL zf>X@h*Ke8= zx5HeP@2=bVShwRB4QKhV-3~d~N?3C z$1QmkVi|taEp$5sbE2m^kDdDa^zm^lE6_G}>bPMUTQxypT;1{Oy6qb#@Wp*oY2KY!PG^FyO73nReJuoZ5u%I52UZ?ygEw5ZE%=VWbGW?yP!X0= zSd{!?lVa;Vsk^`ghP5g?cI>+qk5HDa!!!mZ5HJ7*jhic-B%rbyP!=kSOT*?iy7Cap z<_fu2r2m5tHeRTd{hJmRI>_btONUc;y7H+*nWvz)z_=O?6B1oQdEN&-!Yqm)kvA-U z0O|{IZYl%VO7{JZv7lMyuz}nMhE|Kg79SkBhU@%AGv-+Y&8O!W&pyAtQ+M#6!>$gp z2G|t?RqJKXiPTw*(Ax-wCkRLZ4=j---Rlsm^;GO^Nt=cz3zi1P*RKU_{uDR3?<5W{ z)XxNIMlW)KXY%Ktz8S2*|IF0ROyzxa5f>auV)}F@MIZ2rraMQ(Y8zQVhNDnp@L($N zOySa7j#%II_C(OjxE-El;ygTnK3ZY0UGVLHaE1$N)nB4g9Cd+ptQ1Ij(p4nfGKwR)zfsjD^ zl{idBSO2z|V0x_!&A76!#;}8Lj)v9hkthYistB;2O4rR_O7gIQ{bL zN`LI0%SN#tUd$h!;e)tXbo%G75Desxd$m~*eRQtV2#CM6Kg}Tb1qd2Y+F3mk<|Z(P zDFzE;38HHT>AAN`<=3VZNPv&halEk?t5K?JNo_NX%EKhj){c#RUk&1cbcKHM=q;7^ z_X;rSYb(Mp+CrG|X=YLJ%ghw(vr$9RSS`Gu<8q|ESvIRUQh0pw&!C9?r(4*1WgT5^ zeO@N0?gG~%NP5Ta6wR*iSCfZD=?JPh%M?A9E#>Eb!i8V$@(~>MrRD?1%evFUMdZ4# zMiA>+-&r+*4PfWz1I5gr3n~(Mc9a_=AoSW(y6=A&J?0=AcI?hLR;jxC{skIudz*+QA((ms3LEodQtNV}O9Ix*2REd9X`^Jq0 zb4a>E^AMq8(9)8rf@cJolYdy3eE;XI&g&PkH_#>}<)`n9(tFJyfCSj@scoHCB?H=V ziO@}}zsE~$7Bf%T>$t=QOE-}hLso7vAGM#tS+J!$HHXV^*{!Xxfv<$O`fxDTbi^9V zM5!BLoHMyQcR(7@2wTaFurSUyGo>Gp5ts|KFzMVw)f&VqOc3L(${`BG@KTN5Eobq% z=E%2iGNGg*f1^E~JFsHu;WLs6IwP@X@G1`5(^!2ta!WpUFt3QlC+h|+)C4svtKrC~ zmPc;lS;YjZ)YWvpPxZ3lQ9an&m|s`3y=^rV(U%jD7N~u0Kq|QNP|;tdwVKGYldH zT@s6(fkbXPpE}*ZVuk2%*GN8waZI#DtQxCTM6JD;m2p)|1FsZ1CkZSo}~ScFBfp>ZABG@0Q@%xOOdm|=S_zxGDg0X|;Cz*#Hl!nm*gV63@^ zZkqR{+X5Wt4XG}(6B%}0hUMwDkjz8NkuBJC&aj^L?u-FSN3?@}i0|A&@1SbRnVm3F zypr|W>@NKvt*{AWsY2HlDKqqkYiC>RQ=Qi78pTF(M13evw1QVx%u@&E1*)%7SiLj7mHn*(}!+b%+NutUzA=+9SHLEo@_0;+Es9VYb0fHtn?`-7$meC)4bIu^!n#x zI-Q<=HeiO+m;G1Y^wY*vS5iYm7}VCH$utAA-_jl@l?EkUCchsJnZm#elTD)cVto`X zBcmZE&4~QCmTWWb8~DchovmYsJit~qj#?6_|7sr>d+xOzb?oR41ac*zToiHSwIvWP zF=-fMecXWdB89@vg2dVPDB4tE{0R8>@`XagbVUIvVR2a&o%VSqn_gITRdoW2J(qll%|75FhG=QI889b`!A5S2I?i2bGq4KyKNZ^=6OLEL>*RfOV?j0F zC$lie{b&|f_XPIU6Waxd?cap2GZBKNG;K`?N23U}l1TVmk&0aUtNeHZm?WGC0~X=) zNd)M2cou{pqa%45Gfc@EaOhzd0;4Teyw_T{5hfS#{6zD-ystXADtarw0o5D`I?o6e z7x@U?p-CPDLJ3FuR9hzdFlW%#sjjSod|?ImDcqp zyCM8r1Lo?}(WH*C*VDIf1kTx578c76_VAMm5dLM#Ta=$@5}LeC<{cEKI12zVhaNMg z&00l(IoX%!p$E&MPZ0bKhsdKWmhJOCJ})6QnUy(Ine!6q<3?H$6Ll4V2unA*6b1Ve zT&AMByvG9HBly}0-pDZ6Wm%uI*tuMV;8_yx;M@!U=rI=)+3=;m1js_XnFF4U{Q@%c zPyxCH@I`0KQajeitl|7A z5Z&g*42oXx_wi0^0r(z-X!9^X;}}m&9=B5)bq|uD%Pgc1}rH;#xCCy;oS# zN7C@!ANQOaAyoYMbBhgsANXYs2h=>Ab#y<maje=^Uf3v#0zA)0UB3qro%dw;F)x$;#@l_7JK3Pl`@rlr4=qS{ zR)2}-5V_WY%>6xyS}7I^gWQ2F5nUd6(~q_`0`O@mh1CpVZD}9Gqtm*J7{Y86Uu8V! z`N_mK9+N{kL#&VEPAg!c`vwelNSAU2-z4Zq+`J{PT{7yfof?#&n`t zM0vDk+}F>lq5>nPhzTwTJ&A+nPR8~AMOk|j7AD6EVaKtJfwJo@f{5e&c5>D5(v8wM z8A(a>ysIiD`gU5rYeYXdB6X%k?}o3es27pXTd@_o2uz5n+Py9A=7m2JTXxTUI-AFv zc?T86kWhLMx5hA=eV(ZVw7j>=J=af(Iq95L&Dg+EuW3*^OTOJGirU!~i6fuedgCNJ z8Tc~0Z$-C>WQNQQ^2eT|y1rQ`>>tW^?^Y6a;gl*A_WibiKlNDDg z=)HFX2JaWItrQ5NF}(Vj?jmiAMeu8|;bYB;~>-e-J5@O}mF(sIP2B<4N(GQqMF8PPt znY!&i8g+Rt)}EFcLrE?5gGwnC_~lNGKhh$&UCd>cX=gNOuRZC(2d|n!5rLOmKg!c% z7}?wHH_ryL36(yicj@Mz$)`w53kTbEcO@O1L0)li#zBPPcjZEk5hg3--a_ACTo9Rl z7>&luM#;c;>fzd8BKjPcfKu3d_(k4{rr)k}?bHPPhMx>|#=-gD%WKsX{S{V_n|pm~ z3EX_2WA?(utM?%o@0Et3B%0N|b8pe10=$t2`T5D4B~S~$O#Y&7^fme3obc?Z0H<#^ zF$$oBD7bn0B%I=6C-;r-?W#7vQ1($g>@z<&J5S?v_>S4k0I1IaELg4yGy@3@9k#Tuoy=}B5}ZNgWB@bWM4M%1K&UvN_vdUr zMxz-n!;Of+NL4Zb=hb)z55nk#LX1JQ8wAl?)%GDqokGaFwlu)jxsa2~T#c{^(C3L4 zvwSn4%gJ`;ml@#w&{M>J@12vApoUBfxHtFH)FjtT*TyT`TZVT40kr?Q9Ce~ehhC7p zeFsa{ihlA|@B3)3Ywd#((CTzckd7#6JTlk`KskqV^(7TuNaWw3KI#h$#REP?Zy-3i z-31vuvtco3nqnH_b3NO4kcS^(e()c1M3^6xHhfb|)S6|xZGZFAgpN-8eE`)J%9QrM zl|hxZWF>u(1cuXLhitUn)SU!%5Dgh0HP%OZ&z8~;Ga}mj46!YaDq*KuH|#4HkawrR zAuZ2+n*Fx0Nsw{{tSmEc6kS%us-KL**$SsYV#PBnmN7Z?Kq~epy-_2IKpX!VbtNcrawKP+{2_KyiAEi4qOIQR*@*Hcwu7LFHKZj@Qtvv8=p#HLmG<)3B z*ALc&pXNY*P72cH*?VQweLDo&D@Q5XufLiK1@6T`t_-wmDl8%c^1)hpxFv#Xqb)J< zNc>6wdryJzWjQ(=dbVR1PV7m1adfKjSqkrBctTUmd)d8y7SuFBMZYf0;28&-^gf>}x*{*hVyd})4l9@e@OB683VaxVtME<+dtP1#rxn_T-l@QFh z2UwHH@xOg!Fj`I@Il=n2?W?(zCIm+Y@Ot2KlAHavhHwmNz!^0cUEMOun4*4lZfP+^X?6a`O zXIXopidNW|zov@RS&DB^Ej3tU+7$HT?1)uPr33t;`-1MTGgl&)Qr6nvPK4!YxcC7< zZW29#OGBVrQ(#hFkj{k-cvoJuIV1;mAC9{-1@HTjT#z;F4c|O5k(2K>CSvDqvi!)r zKM7!eQWO0ATGciexi|~jSOfM#?!Tg*&Z=+&I3W2dSB8xf<+sr&ucn-Afxo=d%W8fd zw3u&hu~qQ^x>%aaU;5a%4y&-sU8rOhp>JQl{gqd9zGU(ki@!vWJz_Ad5FapC4e1H@ z)-;a)qwA#GvjTk2U5+j`!d1N-MQ0F};&N75bU-g3U}*1!W#;3w31 zBaCV$`}!9i_L&` zak1G^p1-8$jEnuLCANHY_+A&xn=f{;YYtqw&V)6?V`jbwJ2zJ^7&8<;oTYdWhc60H z%kv^eufc~t78~V;3>dFn zO4}#xZc}6r6PNz%c%j9m5C&z_A$M~Eq{`MN310_i9V+K)c)Zt={DlMFyq6>6)&L{) z6-)RZhm9ZP=nCsaxHrH?wFECtwSjfhIefQ+lIYF(eS`>pJd%1ZmfsiFzA;2;4-8NG zs43Slh)6=)AD?&rvdb|i^7tb}i_kg5YZ%o_OvDW_$?20j`Z9^7pE|uf+^@}GC?d{)pMtJCc zJWO%roG=z#ednzqm*;kzKBOroJ@jeCI5JnyX^|W1d@3tx77!&1kYt}iQc6w5@OFc8 z9|1>M9K8+~fWq)H&m|mD3v};0?tj!9CsJ~V-h8%ae{k;CUIUDiJZ*WElfzuogYZw* zeE(Up(R9P?3oQV5j1CZ2xn#O7KbJiozT65VkP^OPvUC!XU6HIw0)OSR{^zco(lv{) zereX_wn;={lE&?Oo8wbnO}MjdZP}AYXH#@oaSWmWW;={iXPwjrY}zYJ#$Gi90)tg@ z+RiP3xyw33doxnm)X2>{{{up(s3ZyhW2^hcaHXZj4zY`+yI^4megu-nx!FB^f-p6O z`Nt%{BYyrH!>wx0p_D!F+O0PCBzgm>3%+3!XSh&<7Cis&wEO1;5}kGZt#l*wm&PQ^ zNi+=kT!T*9l>EBcpvzJs8OtmF5P9dKM7_>k=^E71$zPmJ~hoE?QG}| zh4cdyqi+=c*?U~17k4PIVpqdYVhNO#0UUL4J??G*mWYUCqu+Ul#(LV+9F)jv^^T0q?YWntt`G3nbma3OnEda4v1 zYBY)vC((dk`#(BM_BORTeHYbhc;!>FS(52xKgTI*F;ihH)1cLMC45#(fZx~YH>i<~;&ib4UU zHiE9f&xKk%4(vMxj(XZ179f50K^7JpEvn9Kw{iEMD&0oXi}QD-Xoo-f%Ub4?4Yc-3 zjz`hdb9$mB_T+O%drBqb0V_e^0cPuCaQPpPA1Kb0q}QJTpGu#w7f~-^Ii0;fuP$&n zma$JjN49H<`AK;*`uc0NO~U518ZhzWJ63;B4>s|GBJA@7JQv(6tSg#dQA+R^7enS<5-$>y_m&hW3p zFrYLm-1FhPp%f9xywC1$S(1n)WLB!pxBh?_Rvw1c_0%W&Lj}jETm$di7N}w@i zoz{wU0){^mTqSA9f6jV5?31CmmC>>7#>9yqt8o&epq~WgSyqcrPC5UUiEG^%ca01K zRJ@-i-DSieg#S7HV}D3bduY{7_%+4D{YvEB!`^9d;yyn`T-*0`itq9_AgQo{HM1|1Mb-9*Gmivnbv}Xt*V9P(Em0u(yMclJt4+n0lI4sw!7*fHdPZ8N0`f=vL?}I$qgg+F z_igQ8k&2w!IRLCzgzQa(bbW&&Cwy~BdR9{=leuY8(a5b4qs(g(v89a8!r$J51%`_? zHoWPwx;2kIfa#VN*$ja1t@WHI~HNOjm>SCt%*ayC?^d7N>!40NutihD3SQNFIse7YRQQ#KXdVU#Xcn~gV5;4>#Tv^ z>SJ0(UHvx#zm3$c?iKmZ){ULVBQ`h-V(Kf-jjg$(cSFl3Ti7bt%vHU_nt07#OoLY? zVW$bZ_=iEVPt7OT5!BkjGbQl50_&rlU;YLwRU`>#RerL>nrzyzBr}3!x#!=Bv?IS$ zlotr(OhqZ0^wJ{g91CRoyTB2cwmgQar=+vutuc436_<-x81F( zlz_7_Hdo*W7>&ha$+2yyB#Iw=#D;-(np)E&DDP*F_%_kaX2hj{Fe~!iu8yJGh&d~^ zZ+jsGercgmH{`Rgkox%%U9x^fq0&tj4eu&9yZl?v{AScCJ#Dv$wfXuWbjvg1^gHIv zvVy-^)B=I1(D0{fkCMZC(PA-gPxF7}6Yf*(4^)8Jf2+IOpJh_|Jyla3ZKU*V?kqX8 zk55QY`+W;2`q*Z$e;Irja*?isrLGp zP-v=rN0aS0l?NfsA|Jg-(#d(<^$oCpY8$f9#K)A08azkx&7QwnzA7G19r;D_oIi%l z)N40GBk~bPZ1ww2Qarr-e%~Z@T3W6X%k;loiycPGQdFo+k4|T-N)3Hq&$bQ&8) zpAuAi3LU=oWijuT%48M67E-&%oDoGq{-3;h1p@0;30~|ufLA0;NruDfFkny$0|v=Z zIIKI90B8zwof`c%9tD(^_Wpb&yvI%&<6q&rV!=fCbJ$Nj@2W^#p)&Qv`7B#t2Ycj!d^-Up^C$L6q36 zoR;i;JHaEg!r?c&bo{%K7BROzJeHlX9-r@oRHTzEcNt5=>Mb*z=aO<)o6 z{Zm2yJ=~rWEIG7nzf#8_qCg0m zYDd<&b}0jR5C8`W*!Rn0x`?gdoVm_w107|+gAeJ?tiW|=nskzPqTBoKTpD*V9zTw~ z)`fn44B6;D1y6koqBrYo5i`X)9QNyU&ZAh)*e5aD==T3;|ACjjtuqL_>Mmhm|J9dW zmw0CS%knezc?Xh1%PCgd;H{VxXIE}Yb= zYm)d+0(ZYhMs8YtyJ0e7sqsDWQbkR2*{XC-S&-b~BGLdv_wH1E~1OG#n4Qv;rF_rLKjc(AwQF!W1%=9SicB z4KBktk;qH!zTd>YPkP~}%fto5*(LXvDAVwHY>(Qn#iMu^5}{RCnJYm#X{+R(wk^6{ zCmF$Mz61fL&2g>3NcR}~@^Wd93}Lu(+u-U_Koy`t7;G7i_`4b%&+)No7z$qv9zBWL z#df$ZxD4g8DO#f?GVReTTJJ7P>}uDUDk)2mr7g2)uxuc}cD+cyJDX!L+ZrNVaaiqc zbk0>FTT_$y2nVoM03AwPQp*@X>@4R`yQ>_tIyYX<>pq&^shmvsv1b4^|!SPg} zi86&jJ$4Nfg*xrjiafOXk$SXgp&u_>E2|{T>o*n>xU)l66~Rl=Im|EYj^l`cLpFIN zITEEk;VdtBJSg^-snH2&K}k>pEHYZd4&{ApvDsIW=L0Wqj(Lszs%GzgSu@Pegk3$$ zu}ERSgN3Aq%1qzok4Oa_n4E1;rqR#$dh_-1lZ20MMk?`s4&9Rf;_jE7@Fj`iKQZ6TCt9OXtnwU<8?@|YMg3A3#<8}%VvSB6XlF71cxH8t zm#&lWzU{97o_13b<5dQb?~pb2lsGI7rFCULNdF-A(@1f7z zugmW1j2HhXn&DTo)K5=8ksX~1F_rt00*{O~a%GwC@7iVAm59HTA&>%`hA-CHIk%oOTKtJBiH(Z zi|H-jIiuJB;*8G}=cm7sA7M0;r&d~Qgu z_nB7)GAS*$LfBfK_Fkj)$u?$t|pecIK?) z2RN!*QZ3YYGP*cx2XQXP^DkGEe=lz25Y^bL+_{>6lJsG6^J8#tM5}bryG%uJ0azeG zgTTa-a2PUx?&nnAzH`&@Q~!3Z5Du+FzCzA4 zUO`By6RZ~cH0LOgahkUX4G8PpBBD_sci1nR&zBJwX)AiLDuSyg1Id;|5Bit_XM3W>~WdkmJ|Qve*Ub>l6LHrL}F+;^+qHFmH_lVUFuU|wiX z<}Sq%Vas_|PrqKr)rqFFEvP7j)= zU1Qpt_$tjms~)o9;-wplZa28;ZEPVK+6I&}GCR1$VbSVSMIcIRPH#x84ol1}93SJu z6J&t=vefefcFa^Wcc``BcF24pTr4;LSTQs^&C_tT@nX&Luk>~Au2`BX&r8+1_*{0c zci~y~vLa|1Tc1gvy8&7y;<_f?7kWW?X-8Zl1sRv#lbnaHhxeKo6^hHtGHUfzM(vE#uDq(BHhr6udbSnT~~E$^PrPcDvUXaV{xN#Ae=NV+8fXNVRJd`lo;G3c;@59@FW(Nh8jiYZPk3 zMxfWvms7i~c7C&%QP+@9@%;JBve_Y11yl3a=df)nHb-qc!o%oO_R#L2WM@g@2R=LM zwE_~nfHCWVUWx+u<8Ry=Roa!Fc`I|oh4*GDJPOB%0iu{DiPIFOQ6kT2QegYX(_YJ& zZiqd+o)NWI>AVrKtfjo$KUa^n5^^A3mCL?eo~4Z$nVh@>`u7P$>a8GyoJ<%=hmn(< zKYw-dTpQ{Ab1aC}Uzb<3xw1)1n=dyCX987Y?xCV4Xj0_r)(AXYj28xWDB^w(?0$P) z9eH>@Mj;csYU0A;o(u>kL=W50CF;Du*ZR)|bcU{6VTaL_fsq+=1QALLWK{nQiNJhz+JvB?yj)Yx7V%1e`4tJf;uXl|8D`cL)i)sYx5?Nu>|= zb^6T!S%IE;GYl2MG*8`=&jBH)vU%o}jjbsYYJar=I631Io?%O;BTJ6%+;EgWeW-}!UvxLeb z9xHkfTygx}hy`^XN#I>En&LJc_?y2v_3|s+$II4y*O4qiqSbagh()GYJ@q!p#p8_X2b*tfk_?3tY3qi>)D?K_%ukRWGY>w}k@ z^27pSftfRiOYSJyRh;A?J!be1$~5>8HVtb@;mQs(810`23oDsy!gQp@Fj4ynZ|=yQ zr-hxeaYJ3io2LA)zu;TT2Rto;9U@e@MnSnV)|&W2mqCiYNXJZ zuLztGH4ej6Gvs={nTZ(w<1L3scRoq4(e1kJ7?Z#!q4TM!%TZ<`06 zVHJ~2?W}MS(eKmmVBW&oXTk&!S_R8_T{c2*UM^&O7=F|@N}71IsF9@A22th z@KJI+)`8Snaa96kE6=)c0b36J=c>f-ud&2^88dzm<&bMyPzPc?j%;=TwETeJLZ&OM zHszG>X8bGRItJFzxAquq21C7Tw9u~-O^e$TIX$tXeK zk{Mcd!?F4;nMAFGbzQURqHskg@BT>+zqRAPsPH8t>J@@emD-dP-p$IA8MbNkQ0 zCCd&%C(BkT$U-Ca2*7G@G)Ysgumf4X*uFtkaFMZ%6Z%W$>M+&P#E*hV@5G>xj4(lv z+`DwD7xhb_mt(K*HPGIk;^_SqpOkjq>77^8%?VUA`!hq%Z8t|sH+xfagYJt5F|~*~ zrdhbloEM>`5!uaZ4K2m$ z`cgx!xT&YPd<22@GeN}j{e&=EkaN(d|Cw2rulS`!YV4a9;13S^f>uO&-j-V(7Uxx~ zg_6NN*@XFTytV>-?QUlM*#+f;o;U=1Y_@jPRbfv{Jcmx|x7SAet#37RFXD@7t7)M- z9~5ssw$asR%~?74sNVe@QnH|H8GT~j9%p+^J|d@8`lb!5Z6+Yh$2Io*XM@ezgNPeC zc_{M(Kf~{S8@i#+nUbcBrf^;K3;V3L`V81fzSpw6=qwIdL+^fLdfo5v(|s1vXD}Fz zrbTcitaWp$DWn0s7k$G_P_e^s(Fu)VhJHkPU)(`r+beS1-6JJ3hNafH|!dYb6xwSxWZ3xM-zgADcb?=jJ!HMatQ$z!k0!;&6Cvin8J}V_fJ!L(7 zmPfjDbeKW}bXON_?wVU~|Iot9yzPRgLy07qogvS~2VlxxJ!hH@AaK;%FAbduUSg8k zlx093u^m1v?ZLlt4FgHOfTuN z_K9MD@!0Rn^uV;u$ODy8&8jC0OC^fIg@4=9;FG@W2UjJMGDGZYw}N7Dd3t=m{oiWO zo;KM{MD*EpD#R@axh1jysKjGCwwj5WmclZP6^K30$EN|o_g>Y(^hU+!I>tbK&%0UY zZvAGjr{^w+0kCW!o3A1EU1m3-+mDRgh5`+1L?~}ubKIhU2tf^QCTuWcE!GPA zA;*I>8mQm_gtM#$kk3~uYYTLM$qiVqWSi3!SDAx(j3U3rQb^Enx|2(HOS9z2SfJD5 zM~iMWvu6hK0DGKFWXU(QjBPY*85tAN%sIj{& ztSu5GE|)nFlDw(|{xl~SerxIGZcIT^{ZjZr^?iiWFMk13GFl^p5ehQ^rsHy8LK2zJ z{Djjk){SC;k%HX4F3+WNV@=gCCj@3pWaTjVd&Gr-IY<%vR{ZHMSs1z)i@Lhtcmn-+Jm z9Px-rF@*L4`1tKy1y0MvyC4U<&VLRF^{Y0~tdMNGPa!OKy_ELVS~+)#Y(^;6@aR}n>-)_d#T!K~F3OIp#L$Vop}ldJg%8rnxIHhpy52%6S4#}DLb&=7aayuX*V3D9 zb5r!p4|%bhP`7jhvE9HO?i}Rybq_fbBy`hGacQy!?X2>K1q;kV{wV zjYfp^Mlsb%68bSd=hM_HH)@AWRh+kYe%(^~5^LEKoE1Z;Mx zXPE!`bW8q}bvMwypM5JRr0#;~h_a=7W_XFNg13TtH_VD8HXSEJf69!)ylF&f<^o7S zm*dj1{OK&iio(NEQsWoMR3J;{Kn0vBV=MHqN3!TEI2TeukEA*fpHjXMb@@P8woDFj z7bozSpQ)SXQ@a$hQ*sF1dcU|n7(}5E7d8CelZ*Z5KvUxl8GDfDOZkJTE|TBg`*jod zHJlc9|ITSj2xvo^%(HH(yyQiq7w1RVkHo~X?wmgCTVj;#GQu6PP`h~S#G+v)?*9F? z#`(vPrD zJ%C_oo|wS(kGrD@cuKO`iZWq!n>jAO?VtmlE0TG#s4EQw1$220|1JJO(5Nj2D#;4* zEiJH^(2L1%+1>d)EN!D`BP4PqWvel%LAbs5)l2~IisSDcD3N+=q2Sp3c>UqWkq)Ejk;5t>A;d|bz8bJ={d$c2aHAI|Zu4>}b|9O1 zw}KSi<{k1KGGFC^ncOl~Sy5Q6#QVJWaX{z8ztE1jf%l{dC($D%0zYCcg>&AC4; zowp`J$F>bxsckdNbcJJ)CQ2PQPL_J?&EW{RHqg$Wjsyt%F(?g_yY5R8Hx1mTN-A)U z$JiL&m2ipebivR=u64}ks?l{PY}}Z96+DC?{7k0ptbEdPY&jVR##y)tO{iZ=W$%HU zpadPG`UgMP?%eM6qYOfbcvku}4;y3Oc8a<&WRkgBXm&oZ1J-9{ONs0-5?a#C4^P-~ zpYeWp^Nbym`t+B7@;~ky36EwXA+(Y<#eMm5HNk(R!3|HlZ4OI@OM3e>o@VtEUEY;w z02?FQ3-n4FiIw4EVuERYjPfQZJhc;meSpUgH3cxiKHiDvV77#^c@+!^T8j!YNDd+H zt7h}@3SA(5zyt?xwxX+AdyOyUEBdWBjo455z@cc@+D&d?D5fBt(_(FjMeBq#H9k6Z z7q6@S#jAE9=k}rVkx%p2xp3;L=#KV*FmVW0^jpq`3$Y;HCOAWCL>E>!;^gr34 zd!x*D{8kj9gUes-E4lJy;wKM78inFPP33c%&N$X+lf0}Z>>M%mFz#CM01H31wIDWZ z`Z?ZaazgIkkH6qZ@eb;>Y^;6m%we7#0kvv?m-Wg~%frnm^yLXjNT%X^tota*}hs`Yzqa8E3NeP+oWrl1q zw1>jKi#8>YkVOlpfgGd5L=UzqrLG1^caN79U;!a&WgESLA95ju^WJXf$i^DtE z{N9BM7DW5EZwk#QsU756OoJBO0(Wx-hce~qu$A6_|v59(x)G# zuqcFM{1(iOURD3=Q*s}~M+Bf)D z=0GU+;f6GBd4*`Pl;l86bsQ|eT@#h-R{NyF+oJGNvE(fa9g^V7c7!wF%Zoz_KVpE8D*>rVn(Ox7Ix7i}afj z<<9tGMPc#xi7KIzM5qZ@_D}tXZCL7AR=#K>?L83wnjLRi@f78LcOY5_D^i-W_q(e3 zY`vibohy@&?eLTYxyBsiL50jg?$5TBDcE|RwgW{zP8C)mT}h5w*eGaJ?LQQzFfAxS z)5;^;M;BcRQfb)gOg46L4X+KC>lJ)x|4)QJ{1zzHWP%qA{l{Cq6teNt?v-$DNQ)`$ArFPbQiqIv#N0Y=RW7IP0%YwJ`&h*~Y6>Cu2 zn3GDoIQyr@8LxI+(ha_OfHFK0>tCtPJsaq_-%!eQeKb=Db`TW#8mx~^dR;m3Iemit z@(k*>9BC!KPOO4cKCAZPkFNA3w30V+<=c=-XBW-XrHl~J3HR}mDdoTkEC5A@+SQ0tvYCI)|N8%cL!Zl<8eV?95A<S{rXLAd-%IZS&W~=2 z&B6wGuSXF6?zthTFfh8@a)GuWRLsX=H2=yyhG3W&Ae~5>h0JpGf}Y@g-XsVHbyH{A zh;JIlw@D}2U9-~W(2=8@>h6MJ~c{4YaM2{d{k7W~ePtZ4gyhv&taV)<-+ssqWp zs(8m8d3uR7E_J;3Ss6Iw+H0Dctl_mV3#~QzpDvp*6Vb9gIK^0nD(-5TK%l$#`|DAO z@=G%A8T{a`E3^9svwxz_s+5H-qex)eEf-ZmZ`X-bUi#&Odu`089%@s5Ge7k-l%WLw zFmX8vVr{;E!F}z;Sjm2`yKesU0rNz|)T`6|2sb9v^m`%L`QnRbE%?~klib)Z2MnJ@ z$)4W;2V!WQg=#xtNrqW6XV~B>J&bMLECW{gZrCg~pn5%StJiefGfN;$5&tKXN@{&Z z9(W#z!*v-@3)h2QP`$mOyLhGc1C@u`Q7Ca+3pRgj5$6mqLqzUsm5*k970z_(Q$b4Q zyUSMcF@FcPc;-7jgxxs$I?7fHYkl+|ElHE3$o*}_60Yv%eASfXK7Mov_bphvB*!k9 zC27LOKwxbsn@z!Uk6NFBUQJ;Qa+w}b+<``rWu;tiX^QGzb>w~{K47!Ej8<~4S1I1s zt4kG_vb56{ZkfDLzhJpRmSg!+k^Dcs1WKWytFOEG5<<=DPp*^3_-n_E}9akS>|1}h^8WL+|a45NnWhtDDw4w;>BwD&y z10H0{RF8pdo+Q&8m+$@*-TCFqKWGX#|DY)rJ_`!BcSLg?cxW|oG;J)TxNv{?)2(UC z&gV8iDH{K%F0R~$Un#HcPJP2E62L9j--)}W^?U~}crg@c`+2AUjs(Y+~m_ zD$*(SGxCcdr6>oI^+1YHqn_y`yqnb)Dk`&rC{)$(YncE|PF)4xd*TLAb8tO=?+6TD z*(DvC!;T2xF8AB4A}FSg? z6#AD>$-k}g``$R1<7j4n`lKocVCfhR5k)CFJeKTe4riHFM=6JpqjImiyt+~jC@YSq z)7KHqG#%u?V2Jf`Q>Mn}&<)7hW}kn_TULu1oU#-A2u3`#Ns#osmPnx12X(ZlsMeOj z%!btJofj(i^+#9yDSSg+E2D-FFV9p&VlCL%JT=yvS6f$vhkbYc|C1*SeX(Ting*)L&CDNKGHc)LWxZ~~BPV|``PQtGnmb>4fo)EPinZj8K7f$uRu)HSeST_+zQX zy8Lp?kTF$f<_cn@Bv(Vi-jb{k&Io`M6MgWP*~tUdZtMaH#Kh(h;iCKkOGil(xXP4? z1lTuwl4khJzWdM3X^Jk8la?Rpo(zQBi@gbE`>*MtL+kFtFPsq}Xd9^Q?keP}Zyp*=KxQvM zdgXS7^Go3eub@DjN^dq-OG&Xj4ofw>g6)c2>4wqo)7iNdh2cLa4K$NsWWZ0v7i;@; z=EhKm*i!%IT^kV3ZuER(pi($8fRo620oOskqceSoB2c*`huJ?8W)BfvGDGHKBE~r~a>wEhQ(})qrI>eC*jks-Tpq;cjsQN+q-(1bv6nra zB6A0LU|H#GjS){R32S%xqAEs!Q^mcpIpZBPhQON4>c8xP60ury?7(T+Sk1by zr&9?uUvtYdUPzKQl}>y~*P_%0nG6bG$^Zo-+HTgie`3WT|AWtOo~=6JkCBF01}%G; z<1cBuH1pKp`LtGl+a#ihl2erhSW*gSV)6DjVi` zppaCjo2wEV)i@a%?fek;a(1HmZhTh?_bf%t=r?I&OtlF#%0+q=!^VR1#D!45qj$=% zx_Gv(Rs8wsa4Z(3%jHUx`ZKNwo*V?ahN(H>*6>gXhwxZUH3E+WR!PD* zcxR(m+!g)9W@Se}Z}iUnL+eY}bc`@4mJ}T`rByX|bZ*_XZCBHd+72OICXumh6;u2L zxwKdA@1ffG@ml#TCOx&u1`QbgK}XchTL16qbf)1=KH%lQH)lBK_ zdCt@kT!=1b0fT20>%hA1@z-}8G@sg>dzS;SXJ`Mn<*2bdER0EX71#)mUt|^{#t)D- ze@~62nXeJX=XHlNieCKBbnHu^*HtAhIfbAbI6038(eWZUsAS0vAhGdgt(RN-c4+OR zrikP+!>rY20D3i4{VI!uBuSp++@KLRXkMMNPO7a>ntJ|qv35c;`F#7>7f)m^Wti?D zsrG|EQ_TZ}+&{6KGcHl>Iw11TSo6$o=H>1)hk22U_QB<`B5gYZ2iB z`4}5HbDnSOlB*N?QtccD%5Bwn4bi`Ot5>k{GtrBs5@03kUb{^S9#N5UCtd!yz(PvQ zQ%p^mbxU(*U!`owAre-6%a&&Uw3?%`Q!|K6QSPj5zXjB~o0F!f|G!~WEt?2?By`V0 z+lG}1Qwxwu$QRE39S&zQk3PZMBS;$Lq>xDds2+`|pB27V9xJmqsoRopxYoNVi|6eQ zuC#A+cK+Xa%?q%lC``>B=z(;-rF0N&vX0xj=MbWKlRz~PeLy~{Z^SV>TXM+3%({T3 zB!P$S@6~)wx-cQV=Ze#%L}LvfMnm^Sm#g=GO8A5s{}~+?vh9^pEI(hgn5pyl?fHnc z)E~#EU}|0d^n15|<|g?JtgHBUv7n9y1Ex#yZ^TiflrSwvH`j;rQJohWdp;ZZ!d)0% z{r0);XT{%oYb#gzxc@2WUt;K;n4};2*=iv3mKnTO6dcss?gH>o&3$9)CiHtL^hA;X zV4srMHI5oJBV1M+m95GiYx~eW^dhuqBR0FH#$BPEVVsIX-re6E&j1%Q-6t=QefUpS zP-@udnYWfi->)bJ^en`M?2;=ibSD$PVtwsLA^z-bAf63ltoX53RGBljIWnL@lyb6d zwEIzQf2PO`=vp7lQL?vBc2@iNAao8i-wZz|Us_K3!_}*JJ8f1KH!IAQ7`nGQyYDKa zKJesObyGc*#1BQgCWkxE_OBE>TEe;w0^xBQsJ9;GWbG;qaLr46Mu7@8)X>HD7Rr`sAlX^A2+i~wB znEm3SiQ;CvYg~jID{JVPSG4SW=(kMA+PP=o8XW&K^43LwM?XVvoOZsMw_xlT4{*WK zPDqgFj|jRM)Ls0MD(Gi20_%=4I5UMVl*c_a}GJ z!}9@tCp3GEIOpA<1v22SC<)3)*B%2>x(c4FzhreLrB`S#eIXymjHel<<#sol{13eg zRD%IySVu8UYo9~;s{gD4vO)H@=d7&C6H8S6ow_1JZ>%&Ggo%enwh!lB{^{vHShZ0RTH6yKgo?RuY`z29Ww8NEDPmo zV(^1g|J`C-6=kP?>D80?X5e+`O6Y3G=xJpJo{U{M90NJ3;FA^A@~=2ulGV=y;72jx zE#s_WfEZVi>@5-OCW5JvPzrWqgbpc4w}3F-obEP%6sKm0bNQq>ZzHXn_0zwpsfgD_ zZ;7g&?1C^X6?N`=6<_J}4`P{k8+P zuXW$5?BulnVXaiEaWPU?W}%9nvyZbZarp3zz4oz*l705id?4+q5hyae{Oplh>*L#4 z=&c`ZUAY0XUG% zAFn#K3YJJtiIQyz{oI(Kf)>uUFt0f<2WZB+ntFi#vo^DEQ; z!zWX&8G^&9eaWKW{H2+m2Than05XT`%O!qKu>Fgd()=Bk>uDyN1Ueu zUIuQI>~|^u+Js-2FUbJ?kh&@0U!1}RI1gkJX=<>JkAl>ooe?c{vwS!1n${8n(KCA; zOQ*asi+iryjLl1dVIfUeOia?V(RBZ4RWjy|?z5i_nH=K5Os(=*mSrVLtz=E_%+L)$ z?1`8CzpN-4;F7-QZ%8!kIyRXLPPOUxop2Op-wJS9iZE=Z_f_uv2nd6ACbZk8fQZYx z{)?X96Hf7m44!}YOk?JebaPiv*&OR%4>0`Mb1(;n$hBZ$!sbb`#DUCB9a{44-t}6s zyCFtRgup)h`B?pG+f=6>;XzP^UI9h(Wq}*CoD852C#%zZEg<5EA?I1>Lp#&j{Yq}+ z>bg(Mo$F{LWM$OKysz}(klV>A~W}eKBa)<}fMY1>*IEFJL$M>AqWHqM47cRse zI!k*SF#%e#)O@9gbgKm&eTh&Xr$wdVtTrjQ2hYy%s*c8>-tEe3dK||y(71NVZq~ei z{cdfb6&{)``u~x2mSIutU&E#mMi?ZeL8VJUy1^zDrC|UGkp}4)8dOq1kPZdu?(Pmj z>F%DPYnXZWfaia`=R9+N@QW9-XYbX&wbsTQ#%IX`rx3g>y=<-5X-bx1RRON*Lc5O) zXuV3ZSxTE6Kqz20QJdXllycpN42XABFKj3$Z_!Efj)!ZTadTt1m(IjiHeHWT@PneP zgP-}u;kPs#OHyvj{>O=U)j7L+IZ?=Vq@S-nZj;UXU1-6&3RSK26o5k6g|K4a zliyCO1wt6pz%;*6R5nE1=J4tZ8RJ^TfYv62I=R2ZlIL$np{m`Ay3u0+6u5it{=c6c zek#q8))uky+6{Q}`dM2!Uft0&Si95*-6F{ntwymeJ66ta7Uf6T&MM#W$7xks5JTc! zOJj%eX|Lcc*qNVX`{}ICvEDI$AKvx+Pvnvu^hk=JKsrx0WO{+tK?wA(T>4g|XO5|- zlb|TMtfo_!1kmMAd87MS0(6h$@r|MwxgI~sb+M?*rQV_xr9ei=#n@5h^uQOC9U%Uv z$Jhuk z4~uCBBo6$0EtOW#w%Wgraf0a{X-B+xc#k{$+~(P0#dqB7M?UqwMC5>5y7;s<$4V>W zhzJg{NZtbzVKiVxDY3`U-b$eiZN}I z_bae#JVk+sCfig9FG%w`)IGVd;@Sx-Fw~3iYxw-V-j(PHM}34AV5sWBP7tj`l;12H zhpS~{4xZE+NKfkLekY^_&eMqsV)Ko+L~rCWzFO2GexMPMvZ{xryOIczA&8N=hlHMw z{`;qXC&n!*_Bltl!_a_vr5|~ct)4hxobVJVTJVm?Y6zAlVCi-JAP2^kh77nI6eO2c zE($g_wtDY9yNu>h+k9Fi+rR#NlL;NOiH8e6+z@LQ)i3;thk-JPB7h})U>g%@rr&0p zw$QT7yxqn0(Kc9=r>@YZAgWQk6X-5|_Ae`cD_d!Niy7ut5ahP-GTdL{Msn`-T6K-D zCxeQB;CM!^fZ*17u2S10@v|t0IxQX|jF)7J!1|;OJ?d??9E;;uqc1Va?u5Sk>1=n{ zHslOM4A^Cv%nzCwe*F8l{AS&EMXe>fGaY5SXpHN^r#HhY^|9io#>OGIfcgCd?6etf zWhE09v!PoNyUv0OTxE4Vqj;qFH)@5(!&TQ-OXGD@1(ZGpMVlGT0W*KsqklMI-wEvg z8)OClX074eww$YuC}uK$)FwPH*?;iOf@fTa?LfBZY31M{e`NBO@!Pdig5;!>l<`jE zAV#G?C&FX0-`_BVgo+Z6$bGLzaI;_TnIlt}&a%gyFYRQ2!_fa8Dc*UN(DegpCg~bc z&CS8J=m@{u?Y3p{PBMTr9mr5vm=jgm8REK^Ij-I#>$i+jl2`PC%JS%7{C1x-u6@HQ zuTPBrP737(ltADxwuEp^Mm|brT@z-$`*A9X3aD*X04uHj_383S1N!+Z>TeRAGC1*J z&Q0yU;RWS=Q&*9~SuOgK-^^f{L~D@#Q6RE$@5jL2SPm^li<5-3*od)Q@^g)!2T!bv zQjBdTGR|VSi=@i<^JAIoWS>>95!r^@N}DE?MS*lRgH-=3hs}JX(z8~4`CHVF9B$+i zcJE7oW`8BW)lKoaBz>zzy4^hbZBuZ2MCtU7Vh7Zae|cgP&zpSB|D3f|=vx^y$F4Qb zK>C+{?HDpxbRIcfKF;ZXHO*`yzaBL^u*>(~z~k10Ucs+|AL_T->S*k8`S9f+a3_aw zOyzP$GkbK1JS{H0O>M!SspE*|4kdjLwE;o9(B?u>phO9hU|tX{#i>=bztZ z`U?dW(aMRrH4y#RJ{mi_cGRSlD+hg7df*^8B{ROmtS7nD6jnS~Dh>SS<8rtmt6F$2 zP?PC+WFHx26JHi~^H_B&KFJbd8IA?RIoT`VW8RtepEY!r`MrWno=x$S6#KVkP3X;{ zs`0BD0t1EbCDJ)DKGK81*3O8q8izlvp+jMw$qB4fEroE0WgIf<@VGu*7#)miJ8hI2 z1OjcZ9KWo?x}Ko_XUsb;F4zbLZmRGk`?vjDW}3g4F72kk3Jouu|3wi*($WS8}>7Ck{o{&#^5d~?ZVeJZ4tq=+%^cWDEMtuuyLy zWmH69ajiGf84x@)6eZ!;bpFfno{f!jI*3ZW=;^=DHSVB(x|u@D zSMstjS_X)!+dV1$XExn`dp;mhxyLNS8xW1}KIF(c=6_)tm4?f3zzA&aJ4|}DHRcpi z>TV~z#Psl&@XU^%$Q=i{WNhaEt{yl3@eHzmi9uxj*C$vDB#ye8VZzwyUs~-ws8vbX zRrt<`Zub{PV|2GIfR7DMv=#fYl?@vgez4ws0`y{Ce9|)qSIh+k%QBBhFh@v83C&7V zN$`%LbcO#fv_nIYs_mH=ap zX~`5Lf*|oVi`>Et239G+#If^K^7K7!ERW}E;@7SH4!R4@KQAi9lF7|d>Yx+j!g&2M zfXK!6tq)gQjW4X}y?H+{d^=nf!dD><34mTb*huUt7-9e>BeLM{m-LQp@}p{u8US`o zin^Ef83#@#J^*$Gb^p5x3XjJIItx$&1x>7DJ~XP|Gyw45P`%N6?RX2P0qnte%CNn6 z?BXr~XGFF_eI;G4g(o`(G^R{jzc!iMg?kcJ@O;#*sKAV=-Uo99s4%9c)POC zu-%WP7oE+4-L$MWaW_Y4(ab|f$!pg%1^UN}hZ`1u5zNeYf=zeD`m!=QAwPs!|VScLXyn54M@Ztg4hi9din>at3j z5~~zkZiu;1-_=pIvuZD=81qdsU>heekhTQ4d2EhGRj~HG(;v$liR2<2wxqA0XaLC1 zr!~p@1kDc%@JcQX3#6j_k!0s87;`viDk$_HW7HPTjO~JQm9-s*bE4+E(^QB(?b$8s zJ}mv9Ql*$DZiZy7D|Ce*z$<2#cG2P|y4)WmDxyzP{k7 zW^{}2)-N>f2i}vLGFLtbXMS+gmgNo3ylNqZJJ9%jogvz*=KO#|oZKchOtR#WGiT0g zb3{5qmJ>xL*p?pemgH#}eTgcqs~lVNBgUi(J@wt$clD-gt4=ELyvysyj`gQ#g-mRE zW}}H7k9^9cQ1bJQ!Q}#}%QbM##lU>)I$T2!XlyJn*xl;akJ86{)?Aa0%lPSmfHSFi? z6b(lD#iNstyV%+FYVKLbfo)PBJxMQQjO_vV{cQ;5NE>iBCADF{+`{FCm%n#Ek771- zYT5RmAfcxOz%v8~O5Q$Z(oD)zR%bh|gEv-&%3j|)($~QL(kmMv`UuzS27=@ilT(2U zAZ-!x>40k>Xt+?Jk@u43g*4A)*`XTyUbM>#2~|1`0DRHG6^Ymby1Z)ReijQ}pT}!_ zV$fe__j5P$GE3uI@}8PX@^9T57janX3l(VIG(0MD!}zS#XH*nBsj%~->89y@KP!d! zPErN#qCmks%+>orqD`?L-LaNjW$HFOMG1KsXqrX_0l;xhIIOAELnRI$?|r#38iZzE z;o!&Fus89C)K-S+!BAS^*VCGIZ`(tQ9yq*R?NA)Aa$Q;tP4IcHXhdo&AnYKZnsWYo zZ4lU5SfH+v%Vmr6)D~x4Z72KqH5|ML;3LFVCYshyFjQRj*1Yr8JIRuxuF<>98B72e zU-0e`0o{1F!k= zSFXBTyE#SHn?$@7m9NrT$a~R&Xk^Sa0mdr~C#5F5)_Q=Nye~Gs@Dq@*S7%zAxWc1Plj0JLo4K+~FpM&^3tA$uSVRvM)2klUF2r-6>rf zPCQ^|45ty`Gm=+hKMEA|@RP=z^ru{T%J{4xlMUqYW$2dkos=o*O6feP+vUhsO5mG(^>Xb$gp|_7rytu@n(D?@>xE!~?0vid zfuC%+8uCvm3Fmk`D&cxva-;?ZEtzOCzY3HQmA7QD>fP#N0nQP-%bA?2qs=IzqO z;MjUK`XkS;YGhIQvp7+m`RqfRNqq^3W2=9uz3<-$gXkX-+U6=JN9H!*b)OeBQP5C zkHCtt;2Kje2*}GVEf}bwDe1Zcn!m-c5IM=GvXeY1SuS3-Ig{g@I~(yW4&Vj{k{tSp zaWTG4@S_FRf=Zw?HS(VS2?$0t3x36?P|tnD|4c$)udhvjc{igfd{N4`>k!}rJai9W zV%P7u4A@Nb+PC8GG{OYO|Ly>D?Kp46=d{h%9B{6b|ED5=`|OR`h|K+jRO1ib>tBAU ze$fQDVPY1Y^wJ4$*{N$MVhVF~CBIiE7QeTHhqls^u1_f?K}wiDvm$=-{d=y{r3`7Q z^QF7M@&j&hP*sdhHO2Ph<2&xR?ni!9#A#SoXuz@WVh*y>!P_p-<3W7x^0DBt(5l5B z6U9B+UI%#Bm7F9g?k;3Y*J($mnUp`EZdP%b==w3%g}^Aj^I^C-@l3&nlTxKcsyrHu zcs5}b>*Sl}bKgCqj)~fMLUm{=$y+)CLy2fXX}{3S4<4IclrrCA0l@V*x!66K0Vi9k zRIt(Jy~rKTL2QX!H>Mh|{j>KisBn|zT!B5!-zq@BtlP?KfyxWhYx$`c&V?hIpPcys z0gIqdeC!PvLP>QS%SvpmIUo(as!ch~-(D{-9`6`x|0&Bce{=t0a$; zSJCTMd{E*jXCy3jZz^=o8X-h?dHO4y@lvEL`H!3WmR5x8qt#pAp2}Q?9f^;^ zZoCwJIz#6u;4*j80P|$b%T!m(85|V#w+ey%fJ$}gs9AHST|$QyP36qmfHA9p zk9$>+dxiL{AH(5KzqMCDKhkl`W=euGc8q5(02le3wui-DzN+Gb_Nf#o@tW-b#HMt$ zR4^s~?B>^KUJkuigaqbjNIap3m%mQrPlw=X3-Zl#-2enejlq|9jzRCf{^HKi!h6_Q zc;?v;^E))$XdMoc9makRz9)(Ck}F;PQ9khHzt#WVf{0iD+=A2NA`-RzXWe&M!ex+& z2+=bKgM;FP@EH&8ytx{$t@Hc{2g88?Q7XCSuf9CEI;llghEpvS5hLPR&dN4jFZuxj zOeDV^X^vvARwmE6d0C848e2r=D_{~*HFtL2PfO}>cs?2IM28Mer zivjILE2TUsR%anr6zpbr^_NKi^jCiVzVEG&`9TV7_VnO%Nf!p-D0{cfQ(hjX1E{X3*1pcM4IB>wQ!P@NnF7Tgr*?Mk6nx2ELX0viAuOZMi@1 znxkl8uj|mNpAci&83uphV4c)~+cSn(31HVxo8qT$i#Io{sfgPYRG4|BVSFu~mpgmoXamXd5w84n$LcgZlc{l`W--3lwDamMLyCrvAoZc;#Oq+>&t_3w~k9f^&%{nur(L!+7G`G4|HGa z0}v|^ekJGT@D|jvC>b?wjuY>k76r2V`g!-}6RavmC+Tgk+Y)!tq|OyzhV3|WC%Wu^ zWJ_`3|KO6_szX2P`~7JYgOVG0-Ap~e#OVFe*oH&g;b(V=@^4-@d&*|vVO&MS6DLj% zPrhFU0pJ^>zFaCC^WEQy)oScJ$L*MTxSMGw+Pkm~}w*egoUUVcQJ&u+-!RW}aJRh1W1|$=%UbP4ABMGxp z`d%w%JqI!PtMwwVc2_>R;gIjt&jpxzs8&Aj%bqySj5$K^XQ)0vhCDGJde!f3g+hWN z=H$FUXI4}lSv)vb8Imz0(EWN9Eo{33A;RYx3P-L@yot~fS`%U4b{Myp*`9b2GV4e> zA4Q?q8_WIHy;!PbvX?RO5-jB09PgUR(r6e#43wzG;yjIzZdSv_H6(( zH{YN1h0_vZQ?5=e4uWbqry6Z6;<1Q78Lo?6t;ad|v`W#><;z+LbcS?WMVz`X!ag?2 zM{ToCD3zqWRL)3zB1+=yG(BNw=C@Mn@iiREixAftn(qh|ABSXKT{d0FKaR|?&>M>| z)n0d{s>e=sxb(Z(a~1Y+?V@r6uH}LLqy%v)WYu!G0kz@ebklM>*1VULC#6ph=16)_`G>+0li zy7OtS;B<%Zw&%vW!czz#s6gBHk8iF)ucXfIggrP~O8flXMn(kcCGzPRqpZnPPeqJX z&AYky|v(`<;Z&D`b z(Hlifrm}s$x4SAzcPwdz?pZ&Zj=0gwtK&3L0z|5r`3V))Sk}u=tfzMyV0#QOtCPtf zFr%un=*kqm2D($%x7!aNtoocKhUDkX*La+1sSw#lUoR-HKeqINfVBK5NQ=+79>aoB z`(kJ^$Ut|yYTT|kB03TPQz>4^eDXWT2l^>T%dz62-3F(V@>=khbTm$Hb^k!6a$a6t z`*P8bzuKPt=8y23x!0c93H(APmOb7vYk3l8E22d;wvG!xR3zzf1pm`&_+pM|bv2wuGp1LLjV24Zia! z_3(UnOQA3*07xUIO0?g@e$Qst8-}?9&`uJW3xA&>d3PI)ciF+nfQmRHzmS>b!1zs$ z@GObseGz}t001lJ3@9gJYJA)~Ab?_<@8#7KIL7@eY;+yl0y_X{md_?4N|;s2^#O=+ z1wf{heg2MFdEzEB9QU2irdJ$dTb;knnRvw#sOiV=4@buu$nOU(6Lq5%o$z)GNgxIz z9FuXo1>-#zdLEFjFR=wBZBK(+0_{ceTnOKG9Qm2>WCkZAFqB5<{cZn0;9N#^Mlq%J zhiM}?BGw&t0$~Z5dOA*46Xh)5ot0sUv($gf7q?8%kW5OHxxRC-g)B96c=kJ`WL;}b z7qiOWj+>woB}*eRI4$6K;1Yue5;*#Vb>uDt_EgKfU3wTGK8VX%OYcI^1L=@6!7Q~8 zpwvM913!54+xeeRtgHBR_~mp))l)lg+^C&)r#Zc$?22y>ZVdd>8pR+NLog^DASfB+ z&bwVr5|-dNowsBvo7J3z=S*|6I}*)2vimaXg01MQPH+B-jQHd);w~n?n-!O?JXe(# ze93>FQb-Sb#!WzJA|_Qz%_d5>wIUo{M_06BTl=a7)&>$mYV~M}>TF#X_T|QF?6x}c zX$_B3|M;nceg8bjeXHInQw@|p8!lh9INMP)^uFaUGkN99U zT>gBl<=0X;1N6{k9dT9D!Bi3x-kAO_;4gLS{LwmD?R|YK`YU&7Kcsr?Y`T2bQwR}) zVN|mkE|3M!h#hp+VrafSJpQA&Xf;gGIjs{%PY1&W`v=vEoAzvpx zOAo`_(nW);h8N;tqAgh@b|4MLl^Xdjq#)DkYML6q#N_$+#BxCjJg8s1LX$fG(U*-d z*}K2c%FF7&qUil<&bM6CmS|rNTs6Y^&;1Zfq>%vkfL>y)2vuJ3sHO$?xD6VN@O}31 z-4+pxD=m5k2PTK1zrR+L1wd@hk1`=Pz7W{iQ8EOEY4nkWGX3eJ@L&eaEIRj|;w(Cl z=hjL7T%}amO)Kh2esa===clX-w87R?GrTqQ{xiV--*KY(-eZ%ClIHiuf+aL*e^m(c z(O(s6R=otTutck3aRb8b&3Ed{=l!`V_;c!E-0<5M;XZk3TJoiVErkS)tcZAwyV~LJ zB+~`^-V5gb$x}Cg7z5z22**snwkKOI?1Ox3B!w@wgPeTy45%>79E8klgo(in5;80? zukkJv(05U60Z=R;HKv|9QYom@XLNzbSd3HtGUG2q{yXXk@~Y)Q(N1|k7Q(qvz-T0$tMpi31&!Z zSjb2FHHF{K+|>MVnZ8A(2M+j#2AHx}JI!JyGQW{$DwykRpL|uY3rgn9`3dAKNjx~) z6UUbB#})MW`?PDq12%O#WqBthv%PNM7s=eNCCkrm1H+Qmx^!)o;WmtO48vd0%#RC% zOCF31q|GckeV*b8JTE?ay9HBTfau(~igJDfuVT24(n2?}+>R8_-wP6=-aOTy*K>Sm zsaW2itGxy=ckN(5SE3e52`nTvIxhMD*Dj^5G(V%5X99qXX-JkBJ6ft=q&O z=)qb3yT@Dxm>|ufsFQ1f>sr`KsUSfcp?NvpWjW0*Im!|q0>B*wZ;+30WRh{`>Z(`g zkxnN6KK@?8CfnK)7(fJKHhI(&9DQr(xAlABa^|z-W%n;IOq3wf0x@QJ;wlJ2)lNRU zeoG28?b>-p*1ybv+gw(xp-61;$K)@|q6Q1|uXEKG$?N?E^1_Sb43}_>vVcby#6qUP z`c)C9wsK}_m#A*=qKW(bkLY9j~*;XwsYbDJT}&#_f#T!v-dy%R2@oty^(=0U7cpja-$ z-+k|3j3V~x2P^{%+D)%aSrW&O=vPe9s&dZz4ZsEosVi4+m@fD${$2C3Xw;fwGB$`8 zVteM>YuLU?k*kpx$TMi=YTfIAuDc%ENL8LQj^>(Gp%1d?*pVABHbAX>P)n%OMk}r} z8&iRVN^z^+5FUYwK5wEUq2E)gVAh%Y8-dS-n|^7~dA9%3kb#-GNsnAmuYY)xl`E!) zJFA4I_CD|5^eX*YVnqAiyn4<8O?s)G0f(Fy4nt#*ps$VPi2N0sX2jqsR0t&y=QL85 zkU4`R&2kxis78wTy06n?!(jk50Vt0e%ta<{4(30Ao~xUS>v$MgqHL1X zBi0N^dW4mz&0bym0cC5t4&_YAI_0{PRi#C(9>}V|(!nHwE6r8wpk&pAT98HcfB=JpMk+ensPh_0)(ZyLIk|x|AymAiIl2UxzPRQm|JQ(jt1)nl4 zV#CY!0Md?I8r2EWmm1mXeJ#Pu@MsmOGa2%ik7VB%0x&Nt4<;px)3XYF8#gv0J6$~G z3qvis#7TJVpLQ>$&G-89fg1c<>;jeuJFT1>-K%5WE8Tbg36P}o05Ryo{JA>%l=0vJ zqm6s*e3|bEp|YRN)2npi{zk&{ImL54ZRnr#+)+q#cfN|Xr@h5(kE!`7yg5Ac{*m}B zL426Q>{{I*Ci(>UUX&vL6w-?o9Szyv_?xBD#s3owCDp;mk*KPba2;e7E-P`0h{vLB z++o{yHdaYY&{tl~8Uv2JQ|oqTt_Ht;Y$5QtgaO;hbLIeY19Sy;#_qb6AE|Gp!^jdL zgEik7&Pd4dorIlEOQgj19>U{jPy^*5Xh~OVx7|^E-)r{Nb!knuvdG$SrX_U{dV#1M zgr>=#5YLEzz%QKII<9dxq|>Ip$`Xh%ud5-Ez!umq=Yn7N3$;%9ay8To^BA~crFDb* zQuk2#rzXf_UcaVdcy?WJ?4tW;SOAZqPD_P<^YGhPhT22T+iGH&9~3z}s89LfCK&38Rf}yDY*^uYx5F`= z9fX}x{cCSfenn_swG9DI?n{#BoC!~RNBMLbEhV{W>n#sUe!U*SMHs{Pj!UT)w{aRyyaBL@>f@N3Oby>`96LY z@RApdJ0I_nVp02q$lxu_uxuaIa7!_VB5^KdjoVoS~YS=mr6QvftWQ!ZhpC{Ie(MCkH`(bOFHs?ttu z@K+qL)u>IP_hNq_P|M^du|sN+j$vhswdynGfTq_c z0K%4i<8j3gu)X4tt%r=6@+Tp?)H4F9gI}Z+&bfV#U+!c~J_RO3qZXe}1lYYZxvF4^ zV*Jg}eRIFO;5_Sng#?_pNmMUutWqF_7FUV7aWlf};G!RfKT@j<6RYP!6ds|pQH6qv z^`4tMYBu<_J~K_$7&i@X$XC?b9DOPH1H6BT`)WN*S2Ir#oxPKN9fy)R;g1Js?uWbf zVXxMU!)9DzEiFX>hM-mhyA+_k>BOfX%Sp0)D|_fTy@IN|{zg2Dkb>pc8xI=W5Tpma zPAB}BYvM|@4-j! z+DPt?-nD(YNdM9KUJHD$wG+$;RvXUzuJjzc)^DbH7cQKlaS1NDvN$eUJ+Hp*E?22F zLF`w*2*f55*dR~(Q4MF1Dw8E1TAPU*gUJ1DzCk3`9E(RRTn~%8)^ft6m)EcEiEHRS zjqIO~Z`jn6s%9>MoOrCl$OnC~&*+BHb(0Jt2|B!NJ1^kVg(9ew-;7+IK96 zbW`8&kpv(jb5mS@kcLlg$paLzC-eC&3cZE?#g1MxL4EmXF)-42G-n8u%&=4HCPKJG+4Q%!#gegBcsH?5;**#d-Ok z!e-+W0O1fYJ)@WuIpr!(pH3WpuQ2aimB(Gn$r^K@ZZo9^1)tc0hrIC~VgP4<7PTjD zuB}<4+Ej=~mVr%S<=E6#nt^BYx$lwc{d@!M=7(|iQ_)kI(|EMj7VwDT90jnIpW z%7r-I&JUuQpu@AgK{HP&KPRo7l1USv3)T~*-2^8?I>E|oS3H6JSL5o{9#gzQI6hGe zZGoN%u8c)Pu(=p?_QpST8h9-uy3Qi+*Uua}jZ9riyE`*bIsQRH5rVD6Sa;Hc33qE3 z8=_5kCvr^RYrj`_s~pd?GBr_;-*Nw@WgSy(u`A9QT($D)6DXaj#IK7#PoPoSOR>-S z_hthZ{?R3(vvaLAQD6iTd6WMG zv4efRwF~-`#{9e9s@GkbUpEvPze(|X;slBI8TOzgh33b--(t_7#&$MJAXz@Rm5pR1 zF$Aa=R=Ab_$sKxUolzaS>T7d_Qsc1?bn9fAi=O2w0ouopzJ9?IG+b|fuA~D1PjO8N zfSHRM;O12X6oYF~H|mnV=WAm1wOnfyPnki?b$yw6UO;L|phw|{{zpgI*XZbR`Mp>( zfwJzZmlg)5ntzq18mC$=uhW3bUzXD|fj+ zm~Zf3(__T&zOGT-z!IrnJ&Yf*&=rLjzPLI;*r&QpFL`B!s-LVxsd%0Ja7_fD)1`yj zA=>vyC}{u)$rzI0>;6v{48wyY8IHYSou1OW7j`7VEY>fk$rF$r{9lWsVO91WS{pfN z4Sr>)g}pc0gaG)rhIF<@& zUsdHkW_`$RCuhoyt`?MI(PL(x|IKw0!@$`q)Q%9_tVx(+}>(|M~# zXKaSB^0=maEWbY0UHK$&S9Iw8+uYE6Az!;RfCb3yAW|Ik!@^;?&KVt_M(S}uFPfmm z&H%z~f}s{PW8`6UqV~&Ox5nKMW)n_kZ$>hsA=!JpFQgK_Bw14QA;UwC>*hdp}l}G zKAGI4e5Z;@0wQst?eU_!r!=0S4Hb@hfXI(N(th)s6n#UPH@H#(>(~{#N$3OZeU9cn zZi25;vu!iXcMextL=g77PVK-TX-=%s(W}UK@{74bX7fi^w$-FK{KFr7o<0+OrpJtR zg@S)C@vi8AT^Qs_NHr_p&V)Joy&VZxk`|(0g(WsRAeF0Z&OJw93B;b$7gZ;AK|*Ge ziRKP?Ii~9UdGQ4Lx%KMq`FL5o$}>qd8BOQ{eHW231Q+eitzSF&Ko8u|bkWC(^E%T# zI)4n%{H0$(h;QO1t+UN^y`AuKS+{xA2%f!E&l&sLT?2-LIDGUurNv026~6~_z8cA+&;~j$bk8~`FwqpTx+@(6@A9^5`Anvth!NGw z7NkNP^kzg|Nk@=qv9m4wBO|sJGaA)bx!={F^DxC3`0|YuV_h304by+5(j*IjO}EZ= zucaLnF)3Q^@ZM~^!TzFWhif5$s?l{Xfoh?eFXdvtn$PgbX2@^qY?2ejX#u-I+m$A$ z)Y-DQ+df*%_ibL{qV+s->kS^YF$VH<3F1|I`fM+9@h(XcH2}da$P*9hJr>LNRoM%f zfkjShlSvlNav!VPbdB)PT?u6yW4Khh?0hSXDiV8P$>^jbxXbYla7@hS&`6;44(lxH zfNf1B5Swlu!`7h52NNGp#v|kO$zCXv*CRym>8+uiYU@EqcVaQ2t?|6K0&vgaljn16 zn805H{&WbnfI-{O9V7I$j!9jskM35Ucu*e8qx>E$)G8ht+q9#AQ7Y}$k8W(6Nk8%D zGNB1bE3v#6dNDPe6#QAH%KeFiA*K&AQ1h30KG#jT)ow>qNqTWe3El9vhhX26teD*t3bF~+G&bJ{q35P<%vx@6HK z=yHmEekpIC*5Ii`JBM-%N@TC1ZHm;!5BHMl5HiG=JPH3Dm?hM-nDaT8w}4Q~#;iW+ zNQeYzd=p=8DY9v9z=a<)rQjna@ZN9iVPJS; zJbxtnnnXYMQhR6Yee0@SLZ=l2ex@~=*o}Xz@|`iTMe1zWnfQV8DvW7$Aub45hu}Ot zX9w-1Z&*KgoWghBq}~ev`hN2{^%s7ePhfIJb}54qpKDd8i08cW6|Y}AiCguht*Sb( z8z1*<$4r2{?9aP5*w{1?EsIo?jTjGjjI`Uzyz@>0ToSyL?LMi6C0{qRi$veL`vj;S z^7q*2XlnvAQ87?inu{Z=KD#SE#S&ByQY? zn(GhXAC3T4hMO7%_nMH^S8fDJ@#3l<_pDMc`=RLsR>Fj(P(pu%1MiydfM~Eg*KU4Q z_Yx9khfylhXAjG=XEL1m+S4RPM}`K*qsyPLr_B=&%sLb4 z9lkZ8D8g?3?W~!~8+64>++uk2o@S|0|0h8%rWQT` z@G;{o)CFaDA7zAWNA#MUm+z()^G#gWt@l-mL5QUwMlSCW^N zi2rp{q~~SWMyy4ZV3{{=fA5+pCE+0^e*v)S5_U0_Gohev*h{uXxT=b98$ah9^o?7@kdi5mA;Ft z{$O3Qt0ePr=6HgUjjv<=Xu0+np_J=o)R?p@{VT{bPv#@sd3Ea*bzYugbH=M%f9qB@ zJK!jf6%8}*tKHsyHXT`Y_ZIqqhGmmVq~YXrcFEn)9jkbzxHpZ*L9v78aN@^R2Lu24V9u?^Q)h_|4J*&yD=5)Wu z_zUv^epJNz-rw$;g(ZrTrVl($`YeWTchWvX<;5VkwSR@*drV+x(jOglS3L>ewnkC&zv3fgK(VK4j_5&~^#8VKSWrx7cw ze10&JIpzlWrtBm&@hqq7u*B#o!BvGtoswJATi3oDw{EY4wgel^^?4xHtmpbn(5&YT zBi;_(km?(m5^BjDVD3Uq{o*>Kkrb|iDlFhkX?eZ-dOqhhlZg*%E~T~Sp4GF-h%!t{ zW9}}^2+Xawqn&x-K3S#718!momd@kSg%EBtM^U&z9aEovv9O6|8LO=n9Rby=w@QcW0cuAc?Mt0np2Y0HRRUcKOOJp6v;eI6As11;W0 z4m)AuyDPD5L}>2Y%-8uG;I%jp%!xwRZjNLrr-*rS(kY81+KOO)Vxv^yPJTBME(o{r zR4!%3LEkCetk+lKQvlJJ+=x`5l31|TL-MpIC1Au@I%Rq4ylQiruY8gDX(k|l zt-fBMbDnklgiV{A#%!tYxM(mozDE(G`~9uXt6Q{Uu8q$=pIryF**pfmh^p5VolTf< zXKNy_LrvcX)-P8y_up-%X8UEfG|ghWgSUzPEai4;gyS-G-Gk_6ACl9V?CtU>dxGZ?pD{*Bv3iCmwVwaZk|I&y zE*3hW_-mD`YhJLYwXIH4Xz2O?^$XwWTh({%pEm7Q)K2YMgQzq3pO}RB<{Rp?Rs=Q& z|Gf3`Zh9*Eu-(lXGaM#~w%eJ~7VVf8jT$ZuX!oAIejNvm@or&-&P+t8cRxT=1RX=_ zT{t&S?pRb7&JYVw4r)rgeGsRf007B^Q0dw(0MQHjnFDe4O|)hSerG0XE*k^@r$2of z9>zd~K2cp(=}!3~jmtl13dk@hX~0ozY=iEh#4!9>>s^DoR+pf?u->|GLCk4w0%gD+ ze)m-)&H(V`gF7O|_8^@o+4;Gg zIHOPWlA^%x0X}EF%JyHPVyhvPRgiv1r>-D@dL z1<2ZS*yi957KTClucg4!^1L|O z8Ka`PC;ZGh;wG;TnrM7v{>RnPPY!4^K%8EP{^yn5_)b$%a&g?L-D2lQ#@79TUU5Fy z&AEod9fi3D9JbLUO=qJdCHD&)UoP%-;Cs;@1mkYi5;3`|jI8TQwaVPtVUo(6&vJaX zV3bA6{Sg4NvfA7ky`5bw`Bdg1lHjXU?v>%+T57eA7WU!qBR8CJMzqG^gIOGf z6qkp(hzDxngwYGd+!kk~_<)uDn>K&BG3QX?>cdL&!hh5gAq;qk-)Y2-O{DJ$%Khag zuNuG%?3UU?se}Ww1JpoSlr5Px37ghAp!WPvIuw;98*D&qOeaYV-23WC4mNbRAzc>t zP&i-1soe8t05|AvI~k1o7#6LcJs#w9WBA(17Y<~#Myc6seT~3uJUc@M^bd#*7BSgBz{g=Hq@5}SCHxa&$>niB%rVpDv8|MD?(Nr zRpvJmeHmjdRMPML@#9kED!WAsH}KJQM#r`MPfSDlZWC~MXq*(fpGXK9-%gKWV6kEyecit79RK8>`9l2R6mq)5jQDheVfl7fIpr*sYt1`?v6 zG$JJ}oil*aB?t&Z4APC%5W~!K?%?P9d*-#4f61D;_ny1Yj`!YYip$hlLW(2#8Uq&J zv0V!OzI`f-4EiYtm{DQ-RWk1Hk}-%G2E`1{h$q#6F_%8xT2e>qRZ>~Ljss08K@^esC zlUtsXpZqa(?pdO6C5RLE2rrYFNlCCArS{)C8h0u?o_+f$usM;jLGSN*>dIPbx$l7E zZ*P}{jubv#*XQ%?-La;BOT6^u0*OdYl`JX#^GO(M62Z+FzPMT)CtJgGUqu5jy%?U! z5#<=jZHX0`iD27oWpKiRe_}-B&3u}7V2dERR+h;JRhvhcbfB0uHXzDjeeJc-A!{vb|MJNOiC(JkKt;JqdZV3GI&iDOBa3?EoaXI#ESr^%jr6U%Ve zb1_;@RTJ8Kz~_5!+Uj_pbdsyYfB%s z_yYnd)hbF4a4D@b*Pe2^-S>sI-do0UFX$RlruxJX0d-_lAdXG@j*FjAV^kK5p zo@duf{=M5+jT5f|KSA}t`7?H4{1@OXy??;sk;+tyBnmN#>+$$#aHH(GCDo&8pe25-uk ztpvkA+`As9dnHJ;mDM~lsNTkVa4Wm1P}?cRXXSA&yRLYFEi2(AVm5eA{2}kYMQ2(U z^AGN z!e8wFm}bfNq$!qWsgSTV;xiivmaGin_4{-8B)*1n%SF}N`0jSGi+z!y=NPYF(7lB$ z@Gslz8KYE!3#nee_f(ocF&2gNjxK ztfcK+Cn6Mfg1+y*T45S#k=$qoln0K5RIY zUyurndGPK5c#~VQU_#i>n{S$hO`QfCG%yljRm%-J8-+e4hYdp; zg>VL!&k#a`PBKehWPMzK0do;2ym{?!k%#FfAHF^oM5I6|4DY^XCoy=^Uli>}m<{gB zL7XXk3|oF+V_Mth7QMuU_HbPAFulkzYCX7d?hG}!1n2{DET&B^pN`gSG<~nK8Ql2x z{E|HoA`<7wKk!Z7Q=Fb}?g>lE7}0J>UEV$Wctx+!qymma)%TzjfslwqJnx>yNid0{ zBP`3BR0BIQLsERN)C_G6F+@q1cfz)i)kkBgI%f~wZikyyKgaKwdUtHSo4cF@U;S6f z2N$)wW+CkBP}IdwZogQP(GpG{<1M=VZ2tCD_?P|IKdR`x_b6>g%^;*E35*I$7Aeeb za{1ov00)?5VtX;Il{9^dUtb}Arj zHvZKnr2or%T_AbS&1kB34XqeWDo?)?h}rPN_hL3ecaj0;SxelJ!^BTAdf&J|E!e&= z$3d|=Ob6Y(v7BfRV3t>cb|V!*awh>NWn(?i|0ScuWw2A@x@42zAb@FA6e4ixGlT{y z2c$x8q(0X5Y-Z_I_1x^vO4t2m7g;^3yb83B5)#uGgMtLm-iiq^h*%i5=$4 zKMh(&Y53YH2a1;>fztTA{5`Oi4@|B?>3~_oJwCRhoZ)0cS6jM*rxiX!%Q_+f>)4v@ zh33>=Uzv?1+ALxS#p{MYsX-cmp7_UE?bZJhH!s^wTq4cSlP*7u_A#Bb2hgheM;~(S zhAHO&_}Y`=B>9}^&tkPURhk(3i+t(X(m)oJRt>!_Z-404yJ2<*!FFu96H?9lLgi055uLRnX;L`<5<$ramfmrVGFoBg zZ)BSoR|H)zI7(QmOnwcrnCQx4Q`k54%8;J-8ze4zFUo&+No z;RXiR?JQcehy?7?z-W%PL9&EXVTy z-F8?fybXTts}{KcgCSSB+^NxGD@5wC%&KhF#(1OarX$J|)rewl6!*6~944!2f=F1B zd?WDf#IrlN*c*VLftJCDJ}LeKaMVnNeMf0(8X^A46Ob561Z@9UN&j3qzqQWkP4?oy zi5jq{Uen~Wv8r6At&yWYM(i1O2{M_krv3}Jb$deo;XKSyyojLWp~80Wi(sU z?kXW%ZaKMPuK@lp^f}0v+eBt!Z@52N{_^Xd$WJN2sW*+rJ8Pevc-JP&eFxXcv&B-D zB-SeEfkNPs8R6ynasl|C@6?@=G(Q3qzppSBtJc$N_uiKlo1;D74f_}%!mS1*>H?om zm1od7*t7F*|95~Ijvs8BgkeVAz~i(JpIz!0jLT^$ugjhgUlaN$@4vS*I>Uz1_rxhgwjf0SpRXAU4WJAl|cZrWgg2b``Xcc2+# zem*$KzCYCm-}_%W|ALE#EGT#r10S$=LzN;~-}zb7EAq|Eh3Hh6Pq4{F#2xrsQ>_`L zx0K@HosY9`oVXc~qbw;wxT{j{b_?on{4jsh#vC1{j{$h@|M@G-h5z&7WG%(?tQ5W? z{a2#{rWjTzu<5kXUU0E2syq0eQe5yAa;3sZL$-<==;5KNqDFUdub!R6CGo+ZAwZ*B zQ@R9IcVnq9{ayK9%!CM+#MIX;^vIVS_pW(5A_nKlhmnZh;r}hoAEXR&ox<98vLo-a zQ88_N^6LBUYibu!$XV%8;(dHu$mQoxXufleC?UN*Ys*h~W@*46_T-6gs;qDu;``Yz zG``%w@Q0?le_gqbW=&`?nw*ANRr3zC8-kDHsVnzCb_&0F_8NdjqeDU%=)=<_u;tS^ zbS2&g^K(fFqze0J^Fakrfjloy1%5q8$cgC*hsIYWzo?WCkW=dJ1IS2?w0(%p!(LfC&1ow;}E=g&B3Su~zp=+tAiYgvjqUmty#Vj^CqJrQJCVmbKqzY1J{tV@_0srbA#feDuR#_m4|_wB2S7BO zV&Vy(@c!tO2nd!>!MIHhvYp}yBud)56Uj;}W(nqhpH#rX=1o_3k$Q&vWdIM3SU<7h zrmu|znGXe^8JS3GM_)kYUOTj;o0Ftb_l*ql+YS~^d>_~nbTzJV-VqXP_*suGu@fty6DVaLq#$Z{F~~DF_+C?60hEmKgw;g2$qFaiYZ{~%e!uZsSX(aB>&{==eTP=a-y$yS>r;Ro z$=&LX`p7BD;UYZ$w7cOH)N^ltSjKhI#|K`hM?X^*39A z9YfehDfX8uik}`Wi+@a!kah4Fvmn6(`N1E8O9p-}NXLZ~tXv*`%VhD{@K(i3TVf~9 zfR+6xZPV!VkPv$M;O4Qg3K~0EAL#V65lVu&!G`o!DNG&u*?k;$aH;B;Fty14P^eo; zGDw-taG(2keLs|qfA;#C$4>6Q9pe^G2`J2zsV<*YYfuMFqctdAZ$@n^)g5uV=V|?>cRC@ZlkqiHgC(>PqCXb3@{w{r-a8W*(9 zswM^Hzz%vnVl(+JgI@@JT+W@J<)IAPE6;L%86B;> zE?84FJNaz;@U8uGka9ZdX$9M;qVH(e)1;N<$2l?rFO5#u@SK6_*~6}Wk>3d}r zX@$oEQk-rwi*EfVHdW$exfYkC8tY|0w}ggF{THhK3lB%F%K9wR$kk~eR2dBaS)wl_ z>KEVMyvnH~^VRLFeSTfxdS&hA-wE!ituLx^AO{6`ELlda5Pt<>%ln253#aq$MCW)F0AyRg92K4Tk zG}W%HR2HM?5#@(jL&AkTX6DVUpy`rDIA)naJ)2_rV!SES!;0G@c%FF?S08OV{!Oz^I)v`X;5NXTC>;29Uuan$06+X z?=W_}H8xYEc(~qh+qQ{9qJ+3z#FACaK9e0RWRmBxx8n)V{*fr*j*@kX^{#oWCM6{T znwuIakGNK8V3>oNzCM3bRKJ5t6XW3K_9K-OxZ;ge;D^ak`CH(jaQ8HzYXoE9+ z1k+nq4hqd$`sq|8X~VGT0G@OxAp>PO#$E!qgGB12HgGQ3y{%D4(`SI`vz}^k)Kj`Q z&scs4y$%cWWnMR^ru;9#Q9t=Fukhle5(YidBBkNCY!*R&>hYJm-jSp3*mIORkX3s@ zD1LaTb4Q1byeb(nhZS6CV$zgzK!Lp4IFeAMlB@)|P71%jKUn^y_IUXKl<=Zm*TOWr zrq2p*4h5D;M^($BEx9XfxbN}=K@D^N=XG2d5m}*!*S%%_VfSW)xj3x-X>7v<-w%8w z`_GR6DkyYilS4?8;3Nd7lZD+mddm&ouMttm3beod;nSK-OiBS~z%nV3F~+=40?@eT zbf?_#q!yri!d`ik_Ds~3^BN^|*t+R(j{kWdFR_EG*99tbDKy z(vvUpInTPl22hHS=A3u?NZQH>0csC#u4S`2H<7at(v!0%N#~kU;7fbF1L;-GB6^NT zP*O9fI3hqEyD}Z~KKXsJTMbbF$VABeFMhlr8Q8FD;dEeu3&+wOaG)a=xjzTI3|EWR z^(i07L~FO?glp1SW0htY*aL`Kt~2H)SL*%J^YhfzbG z1&yRnoeq4uMxH3Y4ger}RwiDwO%Plh$f_{b1l9a`ZFi8B6$T*p8(FNoGbJ9}mk)os zyZtpr;;Mtz7>@{pD4_HtmpM*EC>$3#=}D~=o@CQ4ITPKjhj~9jBOPqwcx=1|Hor{& zf4aW^%V<&$&rGD+aJ~vHruii1K^g zvcLNkO< z%0d3Ar9(I=TF`^NZn{6%(VO4k8YsY5cgt89+ob2HKgn{ zfG}-r^NT*<5=j#SkZzMfT&05u9LUO2S5Hvx;Joblew_HSm0IunUpTVQu&LAVCn4Ev&nG)-0RJQg{n6Qdm!X9GMkDe`&IVZ@&rnK3 z`Tpe~U9@-mcFY2AC!#MN7-e)Q(}Rp0Nbcqa-EQ_AX9(*< zt-**y1u|Fup1hkmXJ%n3csJajR!OF*Y7>1sXr3L#TJb{ipd2Ehdhh8T8YgATdjP60 zd=QFix&Y>6{1!H00TJq2oaTExzT)iIQzO1GtT_C}K-jY3)MZjNiubfcEvyhF0u=yq zg=r=QVu`X(J&I7K@30D#^IRPGy%Dp=?=aJ=KgwA8o`!O}!n+SdDUB*??cGPI8Myp5 z(IJ#gthTh`;h&)tuaO?XfR98xe|In2FX;aYnfg1}&kHQ_3@c7g0#Ju2o|TM(h;LjZ zcW%6k4Ft+HV(;151%j9P_%u*yGCYq_YUQpk0`q~8cv3tA78ba-Q4vsl?Au@Ky)s{z zq_Rd@!SG9g=&5#nwwDHR^kpt}x%j{l^QY0?@)QckeuoD;A!@xJlCMjLSY7T@OZ|X! zEm+X+D@FfpXv1(#g*@S|QgHM~I;5i%tAfz)766p3r_4h|N%o^Q_SYF&ZA`A+b-X|P zt|^oCNA4E(1Jq`Py!PM)wZMuXAY;Gf55pT+=!Fe{)7ATefUw{ca#K`w6pV_0_F5$8?@^}w*q-o)rp2llg3D%b#WlnIf;ZFIf`2%=O zjgZxWFZ$O)9J$?&h{lyC06|iJUXm_9N~k?~HSl+!B&CZ(7wFRkJ6n=wB0w1`Zu7xu z)yonrg?qy1{&vkIw5e>3%~o{S5i`hbf+8Xh(Ouw`5$w+_|4|tcV!}V53^6)I+r$WQ znw14WiK7SzK@i(=K%}b}MwHXroURpjvs={7<$NMr=^;?fYD6nUVah|wX1%Q-{P&Eo z@%(XN*3p{!K7J@v{wNSZf+s1VuV44b12wS&l zQn;#Ab8J`r2B{p9bS@z;Eejrh$aWs}!oIDPvwyilx46QG?m>^V_`I5jIDfT{NcE6={)#2XepS8*P@K95YC-iNBh*)| zFn*-1ZW;R{rw0wvyO#Qs-rfsyDQ5Tf-)&x=cE%3P6mtc9Q19c{g(QP09E&H=2k8qTsSLp@N+Tgflua0eDJ%c9uu7J(r`Ep2KKIu|E7~3} z{;oEkiF(UB`?x(XMjO4f3ZQM}i_~OIBO3k|UxDly@9uf;)a24co{%pRK#rY@Hd@0g z6imU&z&y{d6?wzih8($jmKBou4OCT84eqOj<{672pBY{&1inWC6s3NxYt^Z&@!0$S zJ}lWi?Jl+K{L4(r6FdIbwJqa|?Y*IQUrlRA-O83M+l|xe6g=fmX3%1rybACj&4B>r z!kX0gxI!OJfmG_q zX@VE#&f8$;GqO|kpYEed*#BstN?55oPE@m1jtWQ*%&XmU5_UoKFzfT24*Mj!-8-qu zJ8A2pbLSbddhR{=?<2Ft(weq;uB7S8ebgVPHxd15$^q2JRKd&?g0zOG6iEFj_GyWV zUp$?uZw(?8DF(aL|CU9$7q|kw9RJl7jHVsQio^7p|&0Rs+zjc z7MnK|L-^R`exj*5qdz_(tRP+}n2faxsR&Kl6{xy#K(oa%D;)SwxbvS(=9N37RiT{E zgMhMtfm3~MI)uNs0SVY2CPHCOM)m;Os-6aibqCjs-NxY~!;KL1-=>+6HWkHiaa)b6f81BfKUm$9&7Mhj=P$_ky8P-8S^PxMy*VFI{q) zE4=qWI%dnhv+P=5bF7T&^7%Yc6xY<=eq|f4pq!xG8sZ+27D*v^-MR|SIoUpnOEmRH zZB@>#ZN*&g{9bvV{i+fsyDi!oYGJ#M|#*ATZ3Q;)K210j!9%zl- z{b4Cs3R+wihqksfPh`(L9hO>nXg^0kPnPtsg8V zJW2N7gtuMmkO5i5A1EHP6YVzUVs1AG^H^K=_oru|Q~m%*bf&%@>JC+*E6Y&>j_M)9 zyM`ln#th0gQ~*tD5>=>i$FijWh3!vx%9*3GGr1s+z^+90v8IVCkm}^A>7*~Ge)avj z9t6U9asl#q5_RHB6?bi8f00Bv$^%uQuJxa(?}%5h;D}Y8nxkAABF{oGaI` zwbMChw)i81CE{tQ?c+>#f(m7X(BlE_7K{GX^N*!+oll=<^)ww1da>E#J5`VA@hvGm zZr$TRxi0lyf|6ZdF7RJ(!27;}`&tAAw6H@s_dyU9%hs=N){>6jm;f}@Apu0}^#kY+ z6vfB}jdceXC#J=n+d0BA{>1KL%a*@-h|=a1y8PoqGO__z=B|IlxWX`~$QGF*Smv4B z3+MDkF{Ua}ylpY0N;VLu&vF6i8hFviYN+etz=Ev^; zMwvTBH^}pB=XV$1Km;pS0VLZ4F5^F7^>_k&a68x~t>q_xH&9gI;&2VzK-p>6=7mrO zKX6u94R>D{`&03HTQ8*zjRwixNirQDoh6;DgiJ~>8E&iX#0`4y%GaABuz>ur#oVa#K6h8niSv{~=E4?ek)N6F}+q8wM zrs1t3>J^OXiUIL(rp#*8>Za7ni{TjoGEM5#vvO2lcMFEg3^l83R(gz`)~TgU=KVfx zU;a{|VV5+_90d>9Im(<;`MqEA*KEeD?T~ZDvml}@E%kV3HOF+x5kL?6Os#^J?pw)} z#8(vDo&tJ|FVD(!Qw3y$Z`7!|M9*@G6iru$&#(t?TQ2nUCYhNQ2Q^Uak=*|%Ld@lb zo?dK%LM9V}{dzq|eK{=7{2jowRLoMm7HAlZhx&zTKsywDgd}JrP46n6!|5o~(7GK_j zM=6(b_lznQzRFW_Y0GE(+;`u3etS0Ync$Mi-tnmPcK{jx!&hqWxvxF)SKK8YqEs}- z)ULZvWZ=FW#w}|G_j_clDWjT@3zQ15P4Byt@9Hmm(no>T*_|1=RCGWy19o4Qq`x5XWTXLJ1Y3|hH!U&)5dZzo#1QJwxOe+EOTX9cnR9RT z6uTM)k1AK~1{FX>?;2k594IXPvr(pWzft749?g$wA~513&$X$F02TqP#k4R@KoDWv zRyL|!6LcsO?r3az4ws7-a3U-1dHqUmE!6$}JX?6!%Q$&s4Wg$sKHL3`J)0UaL_q&}PS zkbrdT?CBK*RIo>mj{?|w-%3l)kF!dh_m?_!zKPu%cj`OdJO7>bCEIB+A{VX>?@J4e zck@0xx}L?Hd`}_H?+V+1N7kAe>W2vfR(3j+NedJYqHq?kL0>3z3Wr0H)1NDj!Gb!K zk4GPoFDDnfHuiewqB0$$Yvt1i2wj*JHlAT`p%kTF98~)F@~nj6@h_nKMnh8TXveS$ z)QF==9cQKBWThACS;<*LYQajYily#{;I0x?`Hru@sH5cfH(VN2OABt}PIC?v4g~lf37I>xjH(lSbe8PPay%Vn`SrvxNSs#tFZ=0}ww;L!fymrB97_7LKbO zjD7*>gFP0CFCYfO8UvX$OvmH>E77KpruPHUDNV8=p32TX0GaXQ{t1SO0@iSlT0>^_7}pzJjTG`1WDXX;J=XkH262*W{65t^c#+vssMqRgBg;Z@b;QkxRu? zb3yNcL0`El0tynct1uXNKGZ;8u=;Y8*lv8dy6{DaglAPvUC)H`_Ln5S2{|e`u;L)u zN-VV!6a_pgeQ$A}KoZ4uT~2{{KZb|Z=!S{F95!Ut6{6U#SuZ2EJQ(kSL+pV>|5tP~k~22D94 zCg61$1Fj!Z^LNgB?O+x+esUXyKp;08r~O-wpl;xHJn~Rp4m1D;9aTpkb>b^pr{x3o zu%p{nxl>=^`G|^ldQ9wa)Vn4H_-Dr~8He@D+h6-gi+i7@G~jZd2Lv1rPW?oX0kuxh z@xx0ktgRx>T=R0>-mG3TZza(a?RBx9nOoQ(pXuG^l`xeMf4V*K-;@sT#x7Od3s%Yo zTxnm88Rab_{XP;|%x1zwe^a`DR*`AnVZvzz{)CcE_J+sv)%}nc2GR5-y7by%;F1q6 z?xis~SgUYcU3)y1SI%@k&Bd?t@3oTbj>Ic=iOBTQkXCwj8l^OHf99P}8nOgkJAL}e z%>tTj(4nF)5QBaXAcOiYs?xc?PjdJ=tu`ds7%PR}up#Q>oS2l*i zw+A9-Q@8mEm6KBT697kYqN{Chp0x9Y`CHwuScT+e(xLA3@26EFGXreED>J=j1v}~z z*0`5_N&Ad|kJV4vHpipV!z%LuowuRSzgPl%9-S^IeHZ#ZcO4%OGnxZ0hvlrF&ZbV2 zUP+60#5TQ^{z7H1Lkb5Oj1%j&IoQAKl|NG$6_Qa35cLrPp-R3QWPJXxf+|$khPYx? z;bf%`%JyTq^}y$QZ+HYDkn_7x?c=QW{ZfJ_buP-kV=2M=Q$i5KK@39^qBy_=-?;g> zDyLR{hz#&C9!C78<74^99Tgy0<>fiGB3;nP2*p(^N75 zIHTaRm>Hqqb4o51<25`_8TEopK2VoAcSnVN;Ivf7y$56C!ZfTECpD3fb@f`| zrAD$btExW7G&;_AvX?yXhRdXl9MtzNp#LlbYzHR~y)7&zh;8WNHQJNOR|Q__5F7?#>Doe1DqqaaUfvwjem}JOp6YH!B~9xgVZ8|F9=Bv86TmEjb4b z&U6NG=H2aEWSy`8p!EMR6`d=PtEW|*&b2C2vVtrkE%E3ayJnYzOv&&JpJcPumg=sZ z)B##S;C4arIzd@~;Ay}e3FM&v8W1^S07Q0<#;z-gPs~t%9onimDWSG8A~5VP3<^YC zGRv++jZ)5ck>J;J#x-lwf+2Lc%|6iB&gk&hShsWGW`&DmZTE+u3Tf<0O8hr)6Q(SxL=sNAE}?4m%a?&r zXQAXBAA&^aSK!7ukTy<1==9UJcUv)kqlN8-aBZei)x_G*t7|RmW;EX+Sc| ziP{abu|74yU0Gi`_g2se`3`-#Nj=zX1zi|YMITNRCw#wAgl$V~8_+b~0a&_m{G`uI z!n}2L(Igz$IEPPNHxev_LL6GE=%ysjOK^>PJ)dFR?8N{g41rVjKHz~q44U+SQ#!N; z)uw!YUQqz!Y zklj}nTD-@8RSP04QO8cV(BNFMhs>JWn9ZQcW&Vd${*9o5xVU=e{oCV60FrM6z~bWs zwRuo{l=Iu#>}WAF+$&$T8SVEZbT6w^AZ>$&NE{AV?nu@?Om$8N8&vz-jv^QR!^NGS zOPOY!pRQSDCkHvCqU5T)$LetxSZWrbx$)JkQU|Mq4YUz-9ew*&%&Ah=c58}|1-+h@jG(!8| zW^kxTDtGM(qN?l}hTeQ-(Gflj!IW~%7eEv5o^`F){OE55P{?`utnZ9d0Sz_D;|YCt z^P#s|YcsaodPl52yQ@QGdYY$vMOK?iD9u!6!`ta%V{FyLvl4M&wh5KBPcK*t3I=Ji z1eK+N1Ay+D*dxm?-GT1CE6F3$Difb;Z@a%iXLm~KH0FKNIHEB^lW2YFe2g=p0J*tG z57bS8;qR+fMk5wYq3-Guf(Az7zgA&FcWz&H17Why2p`Dnf_`xSsv}3tL_gf|sAg?J z`HijM*NR+<2`l%sA%Es^g}uGfs%UZqJM@MS@kw`dfKEaG%WP00Vb*0e^$FanIrP<( z=Z^0OFMuMYOh54{@rXo~o_;Um8TYp%N^8Y-0mesmQbu#mA6j%wHAm!)F>YaJHvmpR z5tybq+#Ot&JXb)N-Lw@g+hg+pWrP7^h|Ew)sLAoYE1_p06v0_0l@g=W@D=RvK_Mxj zVw(1u42)hqP+hzTEnqeeaQup_pr_$_DAZ3bp4|GJ9(Jfghbm^D!o`ZuBh;I%98OwLf)K}eM->{?S0n~0HEWDr>SjHHKE1ILO08jq zPws73rd0)5e1hm%DK6gzN{J$eVI)3fydy=?cWjU=5=vAsj7zRInqlZdY@8nWx{f7@ zm`_Byiw!q9^j1kv&C@n!Ku8=LR6PZycSfmvQU&($JHt)H$N@P5E5XHZ^gZJIP{K_^k#xqOp&KYz?5enO5O=0=Ow(= z(2lvl3pc=i+qb~`Vn8sHkZE)SJW$_v_pY!(EfVc3pGL%r`2<$J6?A&zAL zdn#4z*e(qXWGLMa`A8vJ;zW_37G(>FjvPiu%0E<0~%3T@6D0d!?1p75=oz-487Jwk;;xaIUR{8Dx(b z-|HyU-7@%-IB1wt@xU&FYd2T*0Fh$pkvM8|y!vruoXogZ7Nl%j(L8oZdlw@ zDt2$SDh44D;D8(J+Svf(JQP9ykMv;zutEW&X7sMr*n#Jw2KSlu4ZoE?x1qY}o!ud( zks6e!BpzZ*5rj%`G^zFP$m%mwgX}Is5%N5@rb;QEcYhQm1u{V1CK!Mlnvh{@eEs)Y zBg(%@_GA`>G~op{DKoMDMuV*rdSU#hmP~F?9+2Uozg9A4=8WGzYMX*_t^4jbMr`=9 zCI(DkSLRJZ)MEjRbFzoUw`7li^)j?ftG3jzzn&gQl6#~-(YCBWaZyDzJc>5V_w~lL z#vE2%O=EfY-N*VjO@9X7CN%{G&W1fqF!m4NS-Vrhln{c`S+>fxE|U)wngaA5-T_eD zs(R_jI6*QDtHu4?jaI(<9B|1^ZR7pqHO@$#w*bOS4%~HulZn>=GYXaRd;zldzILc5 zsL5c>r})`j&8HDN-GKW@-~tg@CBLA68qNt03e19TpAvNVA@m$Y# z`!NfRFw8OAVZmzIw?4H~3QT@i_Gur(ziw%NNFzxY6v{Dva3aH@f2Ltyroi$+lwY zQqVQGIlwKeDh*H)8?h|vF`9l_3~KdtBCh+Lnt=P?577)YvIu2+$OEL;@i8K2W}O&mNg)yx?6e#*mevAo}g_vTUQXmk%e zv@&Fj-d6UM%!5^_(wSS;m|qP!>+W-Y;Vb~p8v_+df1v2J^@vYz{=Y|ai`{la*Y?bmayI3;J({vahvil)ZpqputJ z^wJv(^=aD*2^6?B5)I(2o9gZRp0B#*s6Bo~zuJ2GbJ&~oiB*p>R8P1rr=h#`5OMOJ z)Y^+N^FcIq8gRy4%n7{_SkV>bho6#Nr59X!o3eY7B%H=*8Q~Bywb$IWm#^#~d4VX_ z$fgO16gGwj3bUT5pORv8zJb2ARd~M4*uI^}Koxx-m z_Z6epzVbjn18l?x9x-ak6ya%VQOovkTrinJhYa5z*Rv@D$7;_CC2+j#LC-;86~ zLlD`$9zI)mjU=tjk89hTc3C^^(D~kNsA>BN;SEQ8KbdItXYw@|A0@cI6RXL6u*3Kp z3`m+jj&Ly1kM|Y;Pd3E82_aFDN7wy~xh(MM&S#c#@5~+!hsi*zmQ*@l3EHu971wR` z$iyW^ejAyKJ+^(AcRP#Ov|VhLZA)kn0furRUovK9@`2;dT~bOE^bAOMK|`z|&V1wV zp%|(Srpe8?128hnQtEH(E6E4-#PcTIh>ropi9aJPkq@I>enC3o8sg)7HYN#; zLjJ~w%2RXx2^eE~PD_uEqh?piT^$$3d)db7`{%C^zDS<8yr!a#LH-}VVW1=wlgu6co^GJE=8 ztPjm^y=8Q^>XEgZwBgv-gz^CVI(eXL2RKNX1kpVX0opi;f!zPtt=;4u;!*(BE#sH9 zr`?I;j|4CV>!jJD5E5(9K#`hSsQ91=Dt|BTp%Hgx*x%aS3_t7}4yeSH^^e!oxVl%_%;b8*@r`4XyzdASXySGh$T&_)jCj2A=9-aj^^J^>0F5T6 zWdz*x7e%C2-G8r?u>AV{$Xxxc;AwBoS@~EDaujEEl(xpu29w5h{M8KPr8R4}m>hAm z`U;YO>b+oSgTx5uq9WyQ1^c6twU+cKZO$B-2mL<@l#fdrD^1sBrNb+Yn! zG9enQY>KDMh8q{ZM$yfhf#;iSb7GxVXU7|+*XcZ+0+sA23famjYIl|g^3{bmf1^vA z%t=`*IRN;kqftso!vE#ZLELva^VrgMeX@+=@J9AS{+mvN^%~m}&VDO@3)`xiU;n&* zrtHHKmN4|KNj6{pe7O<^HmzQ7YwwPB(-a1-kGz9lro%)JMY z$;zxRR%c!;z!-1TO|l%$VY)UF7@%%vf-6o`?x_kKa$(ok(m#?(J~iC%wb%kusHa@V|#5L#VM~3%-vN;6FPe*;qHZ3&^ylLg6KTv$6VhBQw(#` zl1+W_YsXcXh|hGlIbKWrEIlWUjOoO1JN6=CPdx}Y?E3y0kINz8InK&FOAxW{%PLhjPiUP}y?s;%5i(_s_zBO< zFfc4Dx3nqgfFOd^V_Ujl^|aYz5CNNTk05>!K1AHipwd8MYakt}^RwTt%=p5ax?g@` z6uW4;(~`-}bu4l-ldZ=dWpKS(KiUQC#vH+rL*jUIPxdZIUj5L1lf$eTX3p4lA?h{~ z8q-*^PyX_VXFa5vq57sGR7Glsb>Zxd>yQXf*am#^IDKWYD6=jqyzQ796EM#005HP_hXKVoqx2o$17Fj3Ba{W>)3(`DwHLf?nW9vow=0D^d`DFZ@lW6!5*q>l6T z@VUb4hLm>81$kxJ^p}$FNyRz0X2Vuov%%;O5-@{g4YJKfs$d3cHg@0_#2H;$Ls9D= zJg1H??7Zn0=Gj-?3`5gs<+)^ae&E-}CEH*;Ayt!;;T98+x&!s{Fp>7B-~9kBeeY*; zuRiecWZ%C3<|DJ#bAcPoOM}WF0X7pU)@!uoIr;+y;P~3`bZytRSOw!c(dQ1M+<@V6 z+Z!+j%uaPqo4h=7V%E_`@>mJKN9bLRg;5c)4ba+z-?Y}vHz>5MF#R_59MJ(65eU%7 zmH6elruPQPP$FmKqcL)mq>!o+$cx-5DqglDzPcGLRS&#yb{wfOUhrsYt$zE0V}^$? z!<|!2@`EG)#PdODZbmG}Yh@Xb-1`c2bRogDA)x5B>QZ>JH+sX`MK7){ah&|YC}7M0 zYX8JvT47YOh~#F6-GragVb(R!x8SXh*;4MLxh7(Pdw-xkuaeMVe8uwb$Z(J-<4PQRYTgj0)whjW~>sz>M z!^n5W!JkW00GyAr_;rG0DW|0Odz&`@Xb4a4{Lv8c+DA`^M5yfU4Waa$0zScYV()^K znwfE08S1BrTlu2(&xbE_*&m93=I=iA8(t_=h)C9v&UeurE!PCy--LQM&H?g)Y9(1%o+XYMpD#|-i2tC+TxaJG2R&S1U=PJyFCf}uRR3ulRN7zenMS_eNn zqjlkD*Vo-Wi|c%w%$*eW=FOd&164@r>7>Zq>xR~Jt56n)WkT58@6h;M>|lZF+0pAq zxapCx;tCVH#fEy!)@0Xo=}y}Kw|a!q!;sGux0NOaYO~xOq9i^8jZF|Zg&j2U@PRMA zn*H&Qx>H&WzWdl}J>oKFyqo?2@#iB|O!PX#ZEhBSqa9JOPyZ^hF>MO|0V&^O0}{8V zHbC1y|4krL7Dm+fA1bfV6q@N^bSCuNBTnY@2Igf$WKv!SUs1ZAUPiIJ=CS-QUAEEZ z6EJ)v=7k$vfcfLJt?Sa)f-7l|$6t=_Vd4TZprMqp`9Ic=BFZ2r-Hd;^KODJzy85QG z4f@f)=^K8ScF$-(%&9NmAp*T~APBednE%tm8=223zFW2dTDD%!F?L-{cZu$l=f?y> zswqWqWD&^&sp;9phahVT(@+lwZ`8{_7k{X}jz<2Q$2A&OC10HfChpI z#urj{=yqtjamMYid!ny%J=XaqgiqQIjwt{qb zv$e1amf_||3NiL>Yoh6#X3em);CfDP*)0#EHZYo;(4vGB{0ipsyEN1&Q#iR<0v!XWsA#Y?~`pv}G_;&h%WTrPJSarng2*Ht4NJ}&=ewR4~l`XP6gM;J%aF^^4Bp1<4lg;oAH!R z-luVKf72rI&yh0|+#5JAPiu+7(Q?Z{A*OwV@*F5OgSuxM?(PLU67x^CarqiW5^UiQ z*kmjg&$6ybkGYof?Kn(T`A_X>t>hb;3>{MIBT1OGxb~fZj!_C4MKO}@nmm)-<375* z+$-z}uh~}DU#l3it6)j4nd=s`ats>a%~DZ|0Dq!KE(3C(!O+lTBVo`IKEDfb`me@! zNyaH;c6buIqwT3r+G1cBI60Vc2J#@xj5XmkGf}dLgnIFMGq09SipP6JtHz@owGOM5 zrKmfsd+jBv;qoN@5j&g%o~NqaJeF1m4j2wAOzuLb|J3Lj@do|8)(N1dpkScoVx`>` z`c8AY|FrQKyD@`s3gpR+cnQ>`rI+?+0 zy4G7EJF-4IfJC_S0@nv83mR>;;0E50=I(vqYr440ork~c&x%>9)@<{q_7tx1?U+zU z&bcRy7(bp+opu%Kou_Cp4bI$=OJdo59~Js{ zv<6i)7)HwpwMB0CFNd+qs$W}Hr!4UjN0N7qlB=a&h(dEzq4)bGRvQw?xfEUphhuN4 zYnNR6eU>&B4&l5Ll*w@3pGfUaLZlFz!(eaX&-}2nAcNNm(o{kX#(3NzW(2|g)EcL} z&63#ivh-qW6f4b1Hd)T==9cyB&&3m9S=ni{Xz6mU_M^EcrH|Ujpu|o9iWaC{9C06 zImy#vydA=TjT>v_j^Ms)K;wYgD|&%Gs!LdS-*~eQO{tzO@afxg>hJV#IGJTvZ>+gx zC%kOuE)zDhYYxrBe)GP&9W&3nso&FPtDwuo<#^zyEUNDd)P#hjh!T>b zfTD!bIS2?S0tOP&A&7Jh-BMDbQW66KqEbV5ODNqvfW**4_rTp}{Qd8}`+Xk2C~{`b z-h1_0ZyW&kDyC-PArmZ6aqaPaEKZ%{5WTi~kOO8E5oi{F8G3pmw@zNlFMBSJrQU;G zh(^n#p1ASt{@I9~y2F%=mgsRwC5O6|@eLG2J-tkGWLo&^vaV0!G<*F6A42Ua>*b=X zj+xN_Q}QTYqZj&(Xl@0Pp!lk-)Gd3*+LkLBSC1p0e31-s`kh5*VP}M z5v-YUOY++kJTC!iC&zgf7{)bokU=onQ-yGWk*m@safztD<93yY&tAYyGjIx0}% zKHfE8n@X&vlpH0-Qn(BX8!a)A3qnJ7Unw9CJ2h4Gx+9KP*XTu?DvPMgyQT_&7@xQV z6f~lI_3;Y01xGPvoBwa@iZQ0k(+=e+n4I8hf(mp0|AttwNV@@H@Lf31l9CxM*4B6! zzC}OB-}}uwY2RkNS^k7|{GeCHP3Ui5sM3v@;iK~IdKZ}rS69piYU&%?$%Q-X5ulWj z=4iSCT-jQazo&0jKZ1X1&sW4kI=hX9WpHI}G;6g`7c@ z4l2CNBq-D*n`)$j%PPi3@G!odDNmR-@d@|8ai(+{eJI~|{B`f)s?E4%U<|k!a5;1% zWYxtKU2~lP_J6}RXq_L6yv-q6b?3tNTx&~YI1@=nb9@Lt zb;z3eSXWWfSdDB?JrI|;JZ?SHyH*hF7W&;)$u7v{IaM~hV+M}r5PpxIn0(Aoy3O$% zUx(fUyVX{I3XlJz&*S=o0^@y#LSwwCu-vY81%~VtwCgr*y)g9pxB1#%bmO z-&*@SMr8Y_hI1=UA)(hwuHa(rOiW>PgtysU1~ST^;HHjUQ|Y2d;1foVW}6`1dz1O( zomwpz-jRQPo_Y2N>z~+Z_ANsR*hapwkj=~^QJq5eZ3p7gmi#Yj8kp?AVLc6}=|}QA zA+kI_GQY~khCeOONx0>^2cJ=Zsqjn$6>{BlNX( zq(6x@DRZwKl3>psf#xqUtEqdWeNcq_X4E6*Ph!MnXH|P6dG&H8=fBRvu>1pR7hi%a z=Hq{#qnNC?sR&@S9F#>LXW%#btx(l8$>7^m?Bkc=p?U>tw1|(&92b*M#1EV{NL;p8 z=7*pm=~8Ypjf4WYhT?acQ+P4f?iMPWJ{>2#m~!iJ^apvWr;%?poOb7-Z8Pr*JxwPpoaG#Kr)2u6-R=U zloRqbK5IG+Lf$pfX(+-AJ>pr+VVJm~l*bh3ocSIkJ!OJ)zZffpzNN2y4>M*phJWO~ z&_NzebWPiy(LJA5_lE6xD@Cg*{PNGWxHQfwQ&~H=A2lJ_3#t`-X?+=L95!1UnP#y% zkZnRYIlepmtz3kN>wZia=rzY=SMy)Xx=M~4t*}>9xzdIEzs6~e|E|&+A`T^_Ud$z4 z>lyS@E0*Y55hC}>In>SGV6B3RtKntb_rx5aFqGmx z5VFA6Iwtg#6MPD?hfrj2By<3i;)B`sM4B&riM7&{Q=3Yz5_hpNFrxGe0||zpMis;x zH!Efxn&*05;eU3}mYuySF@0oSolVV=!`&F?+emp7aC z`+(r?&ze~M+-cNKLx$9!43Tw>i?Rxta!@w{<%h8YEqbyyx~JM?`zw<t;Ufryq{Mt7CDUgkD`tPQ#h? zVkmn6DbAi+gS^<8UyO$@FAcw>R z6xchW2Ly~^VhH+q(m_jY@tCcs0UcV6>!9Z{W#k{o`Dw_UV zMb+T#_D9ufAS02LnsR=jdYIf;Mc1NFDIa2z0Oa*k+Y`L?Qv`j_AfE0%=p%W^Hd-=3 z%n5eX1CVx#dc%9fFNDXQ0xV$J8@}u?GDp?OBdJa3k>4PT9Vji175EHCUw}1xU zJoW1uJwH-kNNo>BBBS@^(mz9% z9mdBFz>Cw;F?j8MwO!_uH`hr-7rC>-4{*q#oZc9+*6qRt(~dU#t@)Nu^y+e>iAX_X z3wB3``M>Qg4OhMiwDe^FF;BL}lOcv(+07X!c`M>! z_~xBhO&K<}v_X7BfU<2|E+BBLHz8phGm>?4lAEx3-}duM6p>8VM1`p8q<7X6?RsRF z)_TX%iyQYOM=*Nz#g^HE1rO(mosK_&RI0NJaU+HXzV6=2lSvh#4*b2JzX`eQE`dA! zu_pqwO3VZ97knt5J3t0OTEJu=TEoZOArt3)m#Om^G}%v8a+ON+1e%4C|5EF)dU0Sp zyHwq3sUm-_Dr(gT=>VYFU~p?|kR+D-XG~Fmo@J@3zQZXxJbgUSYbeWAx}c3Tnmv%M zGyVqPf^0LtiC~n-ZdtmK*TiAjmW{TMPv7CgIpcvt)j83~5GPEECuY)91gn{GZOBjK z`6HLzn-4*T-0%(M4xX4)LwBErqgbR%+c1l+tL%{bOZ3YW63AyU0f+lq0QdI_F1ni$ zOLUfZpRLDBYR5r)rDV|Z2kozKtpI{&3dTuzP&S($Ka`%S@))a2c&;z$x;|Md7!i7n zMwo+a1AB}rz+kUQow)69tvMy0<&sn2f|uL8&o ztZIin@`7Fq#&v0n5Pp=0XqfB(gl}WgC3s{N^6BA9A8>;u%P+-U<-PMt^8#;cIm5Jx z)Zi;!E1SI1&#-A-!~ysWKOw_OndljV0f35oBH7xhh|;?9bqBAmt$#@_;4UOY<_*p0 z56k0@%Qp_oiO)z%83s+Bk_(72CR3>S_9EbPkej6ayov9@xhv?LmDVw#kJ{K4sR*eC z$Tv?IKocq9dEgldmRfE)*qdqJhBVNEBK4jd@!*DDwbOcc{IU`*GCz{WekaS*hl1AXIYXbPQz6g0|T+U87ZHinAdSd2&@R9EwG?EmyBZ6)X@{Z9it`ONG6 zmmay#82aKewD*sTgv|nH_2K@m?EgWA}W!Ke+Zoguizh21KzOq}^yGE=%?`jTa~|zCRv{VP`V*xEuOaYi5Aj-Bg0^tr+T#n?SVg65-I$4O7)xIF(lNL= z47NO@Pw&ofVa?mQC1&S<`dicTtrpj^4(dj$kQsqJ7{CXOG7fc5dC%x7JUgazH&6sU z=dk?^L8+e-=O>3JPkx(mrCcDmDC~FZ;WB%GpYyZZ@D>A_Rg(fM9Z$pRoboj?cwt`t zbA_x7jTkUx(*q-z=m9(IFc)cBG1+|5gx)jD7d%ySLqEzl>pnQ`4jhqon+p6;Bjj$m z-H+V!_=N~9d0HK}@v6$|wwK3gcAKw<)O^$*mRLzLIkq4fGH)|D@F~yA6N2v|cO0i~oa}dRfHdT$IyGqn;?F#rW&O>F{Za+4lt*lK zf!07~_O;kv{tJx69v_2{eQ(19!bX{403Ac85%B=>|KvwHF_#M zcmDdcKH{9@#j)D5WEOvN(bnh4Z0mO-6BE{U#ojQ(p7&RC#-=}qwquYOns2a<9EiY{ z#Bf1+3%Mv*8)9y{#~tcXDt=Q4@|%6fo?O>D&+dG=$m7&_y0Y>7tP0EfsOf(xX0V2Fp! zz9?=Yr6XP>$;+Mg8`RcX6ZvKOl+t`_4#v^s#)^{>6^sr7)_;*<&0GOHJ>4+Lb7nZI zZrWFvl%1pNWrkA1aIN8i&(z80vz+Kx-h*Ui2FSgDJoYrxIKHMm55xW6;rV+Et;Lfk+4{5!iL zOj>Qt!G!t^)?;-V=27jKh>tqxwT0{o-NFm&1c4YVduCxq=H`9$4nu=CGSIE2w_1bF?YX%So?=cPA zX~PnRJTzBz@~&6%Kv>tprJ%zd6PMW+8mOI>sq1Wny>q3 zAP|cO-lV~HHI{z#zCiBQWTAPbspGth*OFdO<5@UzSp=tK|G!70isku9THR23RMu5) zQ%5ONcQRKEt7CerIhgxhho%e_LX8;f1GCc8`MsB!;CjFlW#77Iq37GWXWycv<>lO> z)N8CAV$2fkFWmLTT$M23!bJiR>(S0LF6d}0d}+srm%QI=^)Rg!aQ`!Z`%`wqntw4# zH!G=wZ{&&9q+v5%l*yG0+&`z1n@f4J@;!qpu3KNiby@FF0=v3fFwlt2fWli1rc$k@ z=1SqAB~sTwyv~v*5@Qqz93-Q{o+E4e#m1_rFEzsMNT-=@5F`vZ_dY*4JMahXEJY;^ z6z17?fxPnD1LLkoPsRaFTNzPoE~mFDHp9pf6`L2u&Zg$3rO)(>O(An$fkVD^ow3|v zk_yc)D^8UqTh_rjJP464SI$A<+{b+dN}RtF+VA?ShW_;L>h@ z+USSE>!$L=gKRp!X4n{GwENayVelB4M+11^^}MijCb3H6dP@7s>NayZ; zaTPQk_0}coppCyKtC7WPfwfco!UA2%o54Mq$ z3RHviWV7_ikq6z~V;kJSW-6`q^YOES^>Z>&Lyw&-QA4u1gNSKCA8LhIML;m`WVz`K zKAi3nO_&(T=(6+3a<$sDi$v!+`qa1koLl3`&jgKox2+$5&Vh+6{2cwK%Qv*Zd7`_< z03f|u2(j7qXl4y(?N8yIHUePcsVC^)=5V~UFP&7<$KG&Hopopao_f>JL_P|> zC&EzUwYlBcaebr5!8hup7}`=`(U?qQ24KZK<$#b4J7?dF6DIo@EXT=1c*3~L+mRpo zjR|H??l(b=krR5r&&bL@Wg(}5yROk*c}~4Pme(!%fE6Rns?3#W zmIkIy_^N*ZTC&;njiQ?bEB)JhyEmqpw8h zvsO#N#Un@|WS5Jxdg5frgN`6RxI7pp(xI2NR|9loBEeG;3VU35J4NEcHt3DVR=eA$ z!d81hDVsUP(fRQxo-7cSgjCF8ol*2OmOi_nS#Av1-^xL!AL!?!BCZpYHcqn>`O|Q0 z*`3d7JSiFy%Ll&RU`#|ZEq8Zt^HO(TN`_=J@~833=ATB#P0Qrj{O?Q`nFY}a;zC}2 zmC<~-LEWLuqu^6BSy|Wsf_^BeNjt8@2>7%fGR|4ZuBiOr&#Egy6l6%6KFmzqI$b*I z+qseZ-SAocSJvTZLzoZN?Urx)Y0x%3G)|F1GQIBxI7jpKxWh{O+e3PFFLz{iKugAZ zVL&VGIBbRcCxTShs4Z%0?J*cv=+7j&5!^hCE|n?Ra~JR&TYFs`-#BxJ*zn%rd*mL; zAs$GZ2g@gr{Xqa_hz(bH;-vZg(`78I_B{K*c#|a%!{DVf>H)%bOHB!(LTo3jVaLV2 zPU&d5o<`Rf^-0H58rsLR{nYV3q+tH`KvVZX+9zPHC_t(RNzTW|JWN!g_4P;CE=+T_ zx6JyECEIt0p^CS9#;e|kn~5yE9NUIM9+|&oY9;no26Jd9?_r~sU7v*bPmtKMRj~Y< zz-0r+&Gb_y?^_~>7k)$eDzNvpSNxWKYjf^ro!iCFjb4RVvV3!yp(iBVO{ez8UDs#f ztk+#l+py}hln%!dsGuXa&-7z6-lThRI>6Uy8H4?rz zK4hiUd`vrns5nz#_#naVBFiIYKZCdVw}l*ZxBd*B8|C?aD)1WWUuNXx5q1y&j2`WM zT;Uwr)L(J^F`Y$l;J|hel#)$;&T;w2K34DKsHxr|8^C=t=%d`D>lOB^LAv~tWFU|5 zbI+}i3Y0_boCo0@o!@_u1sULnprxAKM>lq&{g$^h?iGX2{N{}iwu{9*N#3ZnowT-Q zY1WM`0c|y8vXQvIp~2zE@EFHs%l)Z0L+#yFDK3($Ms-#Iavra%b?-M>Ub@VJvQ5!G zAcoq{Z(X_ip6uZR_v&rj{GLsU9_T*bW)eCMl>FDXobPm| ziJI>ePc2`j@_7F3QU!9ZDT>^Gq9Sslse7bY5hps&?86Ff)_puAqev359!FZ*AMwUd zJ09`&=KR!pS@07Xbi#MKdH|=f>dEQ(it8`Z#9&7cNQV#$ z)A7EBXWmFZqPuwesH%hE+VTyw6s1^L=vq9a_4%k~--f^R_-2g4nRJ>}WuIflg5uJlSsS;c%*BBz2m#~uccrw$0Xg9Sa%8Y@ zE#PNSyW&2GzJ^su)zL`3Go2K^*|g(0}Bn}fTcyBhmu_ZF>+E=0v< zF*&SyQ?TOJ@zz;vjD-2t<-yFRCfT|h8ibh_K-Xx(fa0c&NO3t?gw6|=Q(5LyM?DUr$E6VL0x zZxsmMWKrF{3)1_69bn$J;CiI*!*JZ&8xkyYq1?;247G(X1Oy{7~D zv+XBqj)$M*JXNKO@e>7(M{_C4n#h2wAKae(eHcdHIG@c06F$0KQE}2T#lJzNl=vJyG^y@aap;>2z{JpX%BEPG0Pz1xz+!T`Sb+QNWX|1O{jcJ=It zhM?Z91oXZeLoM2%g1a^Vw*NKbXz;8#aKmgFuU>;4KUJ6)$i@e%1L1Gbd+>Xzp>(~6 z%zPUfAV22*8XcQLlKu?BT3)gUBf^>8%28w*c<6RTMPRB{6_rJx=<8QsIXrvmdK*I^X+J&z%ZbAZ(o z4c%J%W917|GW7QN^bH>$sc`WoUQl@)|C#SL5o%r)MWLH*VHO^$^EHgCYPOfvBD%P( z@tGmp-rh6A<{#-VPHZ*a z2rXIZ*#W4%qn4Z$5I1Jl+PZz#*4m6heF1DHI}m3bBeXR4#`ZhP4ePLuK%1dP9Bndw zud6>kTRCZ_18PkU*usDIPwIgvCZBEaCmaO^LZC$jK%D+N$53#X#na1+h`PcJ@=iwi4&Wmzc9cREO z%jVwCw|IDdc#jkwXp{{;SIHZT<#5!NXh;!tc=7k!FIE5a^J~Wi>E{7Ee|qk~3Ye=R z*6tT|v}3(km_#D|abGpFc~yUGK4nOLxITR~U$7uba;{bo6&QArmX?c4_LU-lxV~nS z4P>#J`_gi7JYCIq8L7H%;njVZyfu?L2QY<$!1#PGWVhbf5OVz@NvWBY`&cKI;0QK< z{^2}u41}kJq#QGW$+wvkY$$xnQ&GQvHhyB2j(xF?czgbN3>P=!xZHOp-gZvBVJ-7t+lcCW8?DGaMzasVJ9nKUBvuht{&PDAFuU%Fssl3JXd-;VU~>O& z0Rp7zR`f1{IiSGuxkja8c-uQ`_p0`YlYWnjbUIfCfN<%Nx(5Mlixvjy=pnIQ+rLSy zQiXfIkgU^}8V>r2T}RzdHhTLsL39wTqMkZQOKN1Z zcF!G8gRz~*V!mxhlHJqztNkNc1u7v!V>!iI7V_S0$5DGMUBDqTj~oo*bH<;(0x{ZY zE!RvWD%a%8|8edvC_M)quN!4&Zf7m@1nG83K`rYN8GxAUy)`9ca>X6euUp#R}MJJ+EGEr z%MES(oO)T^m4BJWA1*z<_hy7p?R4c=f!Zlq)S81?^bJp0XGcKMm<#U3^>b(=-}%0> z&O>Ty-$`qpp$e3w2)<|2R>CqscPurI?vsfo7;)qs`2y{XQqRhG&)FoZY3IXlgkBTt z6SmXvz}^?>*>dWMEZiI>tVv_|K=r*1W(|<$kplvO9$M>y$wTIu=(d!RT`NOvC@V=o zH5rhZSMuh>XG5rJr+!sfzhK#eGWqOi8G$$xzX|(rD!WZ6D?Fq@xHtHM8fZWQCrMC7 z6wo$orl)Vf&b>`Mr}yjDy%|=o0RmWXy`LKXRYo$y4WNSk_Uj?c(4}eFx9{y!^f~Kp z5L9ATCSA9_WfLv$(zX&c#Bv>1=z4`Be)hf|6yN@Vg4r^xlTM-p1(Vrhl`h zg<`$whxdN~$s_i2<9k)ciqYn7;{b_z$o%T30`)r9h`d%!(>u8TI9X9tZSBQS{ZHSQ zzN7cd+Y(qz8|YWV_gcOH6>hr?asx2er7q~C29+ia+rFy4IBcU|?lPrGisjuc@15?9 zqK#=DKc73_I-j}HaXaqCU4h!U-KYV{0KtjG^-f~j8Dd)jpaejRirnEB4LsvlgB7uX z;O4c8P6)ruPoLD(B*xa1X=p|#Z0)LR*NuKxtDy9^`3BF5_YtM%Le-B!!+^WTB_}Ytz_Uzs)8|@kXvoHwb)etb87rdYL z**7Dd`hu=q@Ay4@`%c19Pg67iWl%C#^#wp;hpj}}zRiD^pO{~NQ!EoH&>l$1~NO+m}CWW$JMV5ogT-*lQ zi<}NCf>RGH+}1GTlZzASFLN~WUX>EWfyNxhXyI$@ zz$xsgzx-Hh^X?YF-)5@ZWqO$9ed=A0qNPWqdDH+=@E+!)Gom9N&Ldy=+F~pB&`oh) zc^~S&PxEp;+Sr~t(OGJXo?e3&BP9WV-`h9zHN{H*88$eP5M;sPS8|UEj6y(er!O zjK!}z_(@7JJ)fRcaJ~+l2YAIw^LNcBi{&PgLAkTn2JcN(6%I%g} z0W|ocX^n?Q{H}JP33g#Z`W&@`kv^xQ&#QlfeYlzq&7ywmsx=zG^Yc6OVWD;5JMan_ z5ep{Zce6kUEacs`Q*|fj^0~Ja9%hIKIy5rE4M6%z0&p*f1djhGePNZ|1fqiO;X6iJ zxDC^ zNilVTl9~$hy^z<3Sp<$KJ;|N2XpHwg*|sx0qkMa&v6KA;mZ;Ck5fbF>dUoDf(GR$+ z=9oM$_8Xu3b?RsL=Ufbr6hFpXfg5~ae^5M!6YB~-)hN4NpNs=0dj~}LiQXj1Wj19m z_AP%T(YS}M!r3ioSbWo;0nOC1Z6R%O??uasnam6bxbF=@2-zfR@%0^^lptujlgT@LOJ6` zk+gTUcPGB!&VUeim=Y&ztlO3UwX?czNA2#}KJj7Gx~cf$F|(q=nX=tBmtE7h834Pr zcBSz`aO}(~8ejnj`TFS@(Vrh?E{sDtyj{s(#D$&MPh!@TirD;{;6dwT6Av~QXSy1b z{6Y1L2>3={Wkxw?nl`8B{CfEpq`#r07P?-b-k~aMojlROdC|apa7OZmlAce-JHZ5yAAPl6CD7f zKV>9vA_R0rU8S+~fX+nRDpTDo)2L=~p1CfiHKwL^XTQ6Fbsx!Xtq;njAi>4^9Hdbuez*+3xaqB1Oz&PnRSH4?KX9w+Q`>d zqx3Psh|9i@PjAzd=~u4*vC$%6+quUE-RZo~LCg!gz0Q|ZWxY~#@mnfv@AL;+-oyrC zlz`u$28zo;OUPf*byxR98_@7wRH;^cMU|n>^$<1d>7P^iC8xO?Y6k{I&v$4U$_wz~N9M%VwlZ^D)ILVJ+R>t3fN8QP*)maEhy6BQ#AC=N$^B)E#vI zr%Qf3zeL}%+GwdLy(5?}FariV-pPQ4e4qOo6)r*54xB0Am1RDB4Dv@w*C_!(a<1vs zy_93R#pUL9L_J~<#Wx-*e2D_ify^VTU2Cp`t&O>Z0z?b}a9+pEYA25Gh7pgmfCT}SL zoq@%IzT(86xJ-xHjBr@hVMh3MC!fXB&LiLjQVw5i4k?)JEt&$b9P_W%=bqnRLZD!^ zz7kL)TEGA7QjW#tP1O)P2`|Eos)&{QKgoY}ho{g>@>@6dND_yJGV=`Cz;W}LYi{Lw3Ho3*m1Go<~wpW>ou4ip2 ztgarD%k~?vZfslSx!-khdB@;+KU|DO_HN-XNX3ViNr1Pc*jWShDP9We>aKQn+f0BG zzuRtrQo5DmNJKv4iFiRDG-0Y<3#+;(Iy8Mjm)MT6=C#25)kQ!s@Au4)kAWamph|__ zQ_FW2P03t1!y3=j%c`6!e>Uz`7q4|Ai9n&g9dMVH+=|>dRoDAa!R~;c9P6SvtfOOZ zb{ey#w1SSpZSQt|)>#JM=ckXhxEm8OsYe@$n5Jj(tS-yX;)C9u7@}pKenJJ-G3;fBHW1Cym2WdRa6v>kI z8x58A&D~6J6q5G2$G6=l%Zz2RzPE7RmC#d!qA#0{L0OHpJ7YJi=l*DMTT^0m>d{hS zbU@$G(pzUrNq*%IX=7U){a+^=Stjuf3l2S6M(!AGO@vPyoQk|t#F00Up$t6_5YIw} zoS&Z(qzgkl-PCJzBI;?}V6FCC+rU4|z$%?YivR`oRpy3swxpO-N@cg+64njV<_V)} z{usZua?ep|g`E4YdW0CH>KAr0aDGtkDvQJj}1G4j_ZfEzK=` zbH|oO{0d}aKdmZtwp!L~Pen+>JY_WEH345!fN4I~AI(Q&`OiQ*vE0b6M9A$^kHO5& z@eImG)?GsK!a@2maIR(QsIdFLL(Z|R8Ie#_`nF@`H$wUfGfb7*!!Ox0XUI z_2H76z}_grM4drHW>(E1#E#c8dSs5R6Br=yMkMoH^)T;J;z3vzQo@SM>@I37rgb6MqJh z>(E!p>4+PidY$42>vQSMYf(D(odKqFvd^nC;g8n+K==g89D-Kn(R+idwLBhInH{=l zMwlHaDSS;2nVP5l-t*t7%RRjOp6iP0tuIE|mA#~>3xNHTp@ZX_r_aJzEBsRJ$7*hi#9&rG=&3t>!tp!yLr@f_sT`VOUR zIHRX^&#DbvYd1Vtx|JnwtVakf2_kzMWC)qgSV*Xtg`T`yrI!CElcv8#Nvz<}^XYxq ze)Y%dc0r@gZHuhrSb_<%va8m2{J;hxgY`tQNX|5e^gw~CFIk9!O%eo^42#z_GGclP zJ_ZWTsmE2Z&Vg#TQ=Us?rLllRGuC?p+;(F>d@Igok3)=Chx2sHZG(#1I#~HVy>CX_Fu9+NSXyeW;?_3GbgU?;vust+PpANV}96bZKF{F-}VxQOQ`p-ll8mYEO5 z8iuh`GOPPK@Nw>zuCR(D}SZ3@0p_M(~Y4O)jL3}?ofXBVXb@czx1 zR&EyjE72FGWOi~OwVX5{O46#%2J=33RyK^O>j?}%X}WKp$F%792}I-A8}rl zQ-MhPS_5GI)58PHIlW7&f2~T$`8G7-6!I!ECqNQ&%>KLuOMhUPwiNW0{=I=;@5}TY zIjtbx(Pq|tC=lNDTuGw;-rC_a)`e#b(vG|BeK(BPqD_67Pi|;yy#fU14X|+iyCyr(Kp*{u5xHY-Vc4K~{!=MGq;$dK#V#!oCzNn(_v=9M9}ONS@(LsPJPMp9qb67f~} zJHeV1LED@QDu3efKrz{C=sxquZKKGalrNcniZrDDm2UBT--zCF_hQApz;>=AYk{{B z*D{Eot0{|LU%0@KASU2o#Nk}9YA{ku^*ufK3vy>S;?ch&C_jfMnU|Fu?`ZJH-9C3u zd$mw=2{fqg>=tb7ZvhaE{?RP^f_t5BYyiAh?%vhbMqb*cU*zvJB+WHtS?vUZSX=3^9HzQ$hBk7hw32|;+BHtY+(<(i(g$21SFo2OOqu8Wy478Ms&)p9SE=nu{>kc4 zW|Id27nrE#B-&h}Rw?ET8P1yy>C@yDLn5eva-}X=9@gIIfjDqy^YK{CF8A>uFS|Qg zWZxlYB$zbDTxL6c1Jr_ZyaQY1rlat2bN>A4#~qdK5MBq}zh%E3V1xGPhYjBVZ;p`F z#8@|6+2`(2;e6Z7JASppzwh|dJUtF}H#_6I}Dh-Vk^0x8MiTwHV`N5ca_+E^Cleln9ZrKLTn3W zYmn(?lRI;4*N=k|*noltt(iN1+q8ewZ^7_urrqkdd;)D5XktRMfGZ?S52W>wq%x>S za1+1fE2yklbes`SovTE;922T3_+&#qythMS9#{5mtvtIBHNc!Lt|ka>NZj%n(r&#^ zC&4N#Xn!9d^P*AEq z6Zgw?N1Nzwp)_iKxY2%|j{^|k6I^H-UZxhKIWly~V47n0(Ah0odfmI9S7ul0O@6uj zrtPCi0>!LnmKxASj$8FVDQ(^m?yIjO#$iE&+|Lop-UQEAAsV);7F;@3A%jEZsbme@ zZQZ_oXVHD9X2x&<@EUTG@(~#$&MggKk-Gx{xsT1)DY|DUmc%pBA5!Jh zTt`s)o~}d_cmO}7i-%?=?tLhmjl0T+vPkX+mrr19>dUbP4BLwzL_=yWc1J>hy9_+T znaNT30>7NOHQ=sW^gipl^f*vvV+^4L35EQJcTH%_SYll?hM#>HlP>l&cby@xn;|cr zQ^?ejMC^#O1t$y7=U%sH{BR?f`QAKfTB^rN^Y9qb7;+)~dnL1Y(eKuTst4B8ij5~F z=TM9XRKF;~7%vOXkMz*e90|8%K_DFlT2+}u{m~bDXj8d6L1g5J(>s%wgXYfe+ohr2 z9OO}Jm#A$WjmQCN($mRqh6S_=16e=$a5o;j1?g2JzF?X&-WYo__A5a>UzUE>b)OTn?7qYuOX(T{_qH!`$eIsqv zQeS=5;|p-r_1~>@n6nk5n53)VwP*UA{LE4DH{*8Nf%G zC0>HhB^jLX{>z77y`I(G8Wl9}Nsu;8E2;yapuJ8EU4fxN8hGbQy(jPkW;0uV?24d!saP*Nal@IgxF z%vn1&2B-+M5Pkv40A}D$$<%?IjDE%00B&aYUolF|?iX(6sl7@mk+9a!K*;~Qclw{K zpPXzMY%CarJ_-Z)=R=F{jquN*@0uBDoi7$|@8E%K!N(vSDO22GdaIKX z%J28lryXu|^E2j_XXb5Tp=r?mzbsTWvuHa9AY5hB27_}*(hev8I)(QLLp!KAqFQjH zyMl=eCUlhkoBDyZGhnp%I;2KJD>LZL>A@7Kq5whE9jW}y3OO;pD z_u{d_7uoT&k_VQ7Mx#T``K)kZv21YwpRLb-AOrUW_=8$t0dS2{S>X2PGtWosoTc%yXEmqpM>`F^AJ1=|KQbnVG-{x4(%4M*gr)9g za{sEK-!bU)?A@x3!nk-*UsmLbc*1b8wHX3ZU!m20eI%}|glH9(dyYIK9M38Rts;om zbxZAr>aJ>^=mH3VFgF7Vr9ufFJ^^LOzd^N+v*XqHQ>ZvoR3ze^iOY~dyx>1KTGdVR&N2)(70Z1=^TDueo{{v$E*^?*#>SK z+&XH8!rNr1d%Xa>e+@`(Rzx|mpe4FNkkc|s?v6a*x`k$UZnDk?$vdu^8+VO3@90>9 zdzQHycUff2cYYL9>3*k5F2Xxnf+vM>NA1*D0C6g$0;9&;MNIj^&&PT(!#?G}4ys69 ztwjCrx8G9C9Ab7g#}Gd2h-hP^qTVLK%h zL6vUhN4hqGt_8KF%e)PdOs=C<-e7`~Ny}R(1BMFv4i?7_a&4JJte>Xp0?4Zu*T0lo zv0i8+0YKjBt|lnezX#&_ZB78uI59-S&;)?#dv>bF|90-LyWkvZjpq9e8od<|CjH@> ziHh+cneXmSNs(ldQ-7CADs2q(J|S|D01cCEDS2;sb%5Q@2-Q&IKXd-)JoY@t*LN)s zBqVQ#3;>J!m(*2_r}*GvVJ1o)kuLBw2=9ClW#!yMo8%%tqIq!Cw^OY(Y~Ii z6TRZ~PCjTaNCrdeX8*6`t4^AoIs#`=TdooHgd#;Tk+Q(=jeF>iCpQk1HlouqD*z07 zh81=8-ZW*jAg7c~K@t?4xepho?mgW!Yy3o{E;m~Y<cijasPf`2QY&2&A=IcZ|jr@)DN0j1ODta?hB` zESf?OARZHjcw)?ryLO8}SdMiD6~DFKyk1QZkj#Q>$HrMnvmK}y0PL{J3jZazRoKte>ik?wA| zyYI(2=kD)$?jP5O^M3EUv$Hd^Gqd4h-|0nj$IAUD3CGG+nykdFscd=5?7x6Gbyp&_ zuBNNO`1AaUptB;`z8H=Iu!@GJ&jdOk}}= zg@b24^C{__Gas>=$qxbfWDL{HqVC5RN@Y7NPep!rYBYHAe3R>n|r<#)ZxKzAuJ( z5&DUi5TKX^i9pNxg`mdyw}1<)58Sz>z`=9qk8vfSjn{*T_=o|4Ef{fF+<3k=uK>Tj z&*9>eL(yS*K|)umSIeMr9)PcNyDHY13+JGJyJ*SuU)4lm1MbbnH_ywcN!}JOuF4)Z zUg8Ug;`mG8*3k1YO6~>t0+i99M~Ud-?nB+Fho9d*7Aksn37g8FpdK5{&tKaQ;1ldM z?n!w^j$-X)Lhiy=cWv~@s$HFIA}jvLYgJ#^4WL#Z$S77bCtG7`@}WPudOqo8`%Tk- zbP?Ock>^bAn%ZQ_cNu0ko%PDUPEpZ93vDQQ8Z|vyt4m zto2G)1n;3wT41$?BBtZX=L5xI8Gm!8I|up$c;q62)@DO@5lLK2o|0X-J^LyPJT$WGj%#S{8-CZ|oe#Nea?2Rq#+70ZTE>@!@UcGXo;kC40 z0_YkmJM;$8rR{XS*FZbi&i2ry$;ai;Wwm0#p?8K4X2_x!vQOFZ@V<*dng@XHri3CO zHLVN)i(19#&G0}D&?YFd6sC6{*{WV}qp3Y<+Bw-hX1W{o1n>-mAQXzh0X3;asX-$y z!;DMfsGYQ9%VKOl7uET8+n|31qU|A%27qQ0e+%H(X0tJPXh1aZE5g}C;@83`T`ynRmHlM%j3?v`t;1Ux!kV83@E?D;VU&%6i@ar?n ztgBs9n1rq+kW^#{dN9icULe)UtJHO>Aw-L75b3al<4Wf+u$4m1UNSznpf?0y#VKPa=qb=Fb@0acQqnTM5#S_{Hx1HB6k#02Vw;|gO zx@i*Lpx%MN3LoIxp!2+n(B=AgdqdK52|p4`{Q#(fW9Bq~_um+MHXhK>L#t(KnS?Pi zQ`6y*B7*!3ke47#e@Xk5txAJXl(XT$OLGx_!$b&l5#i|S((HW#kQ-DR@b22CQc8}K zJ^Qig-4PN9+l5apioYqeM5?F%d)$u zb7L(za>tXt@}c9G*+&?63<&Ropl5W*HbKfNfu)bzLF=GikQKkRhuvTpyv=VE*q!Fh z&|dR--9SfVbGe$L=cs(S$w|h)Y0Az`8^$ypI@hWqMx72xRbRU`{G>9G`^kH??CTI^ zsjQ1OS`3u#<3qd0?9R1Iw6FAK^Dt^~H~le)a4(7ow2zTfFkfAM^ZS92Tx4qkam{JbtgF}V4a+7t+krSK|{>eAh(lRil znCAEHb_DxQibhN}^oZF_2!doU7Jsn(^l7U4aJEL=ZE9$4A3t2ri}CSuNr%9=K+Ig4 zJ;?R}UA4%odp+`Ybjh6P7KD4OunhyRHk_v@%}um#fu3VX{)%dt*@sYTSBZWl;TV!x zps$MVU+S}1D%pPW&(4wlZ9!RYUv7Rl(3_gxsMUbYWg88S!A zdsTl|V(J1&btD{@I?rkgC$t%39e=CaP54(vC)i_@o;Di1tGB`}qa{v?ob$XhV~BcW z!c!FY1{&qpmp%=sl)Srm;&+I*&UB{k_sXWl3^|1uHWZQIcJ4<7g!XF9QtUg_KP1>! zVyo|8EEWgAP)(?rz?1L;yW!J1+nS?fiu*u?g@A1A=PZyf*fy>#q{Qb4N@hRqouf$0u~66)=k5 zAN4NPS)T}ni`sm3V{OMmQq&CK_KPRv^=!X;)33T4@L)A>3xIw!%v0|2KMQVB?3R9V zV78QYx9XF#%F>1RA~kbXK!O#hv9PefGQf8HB#@NaxKFwuksVC>n4wVI2&2i4z6s7C zGJ?OPX9F(J>UPzndk`ql-n$t~QTl#uvznc$`w#)>|=3Q|06T8C6k;goZvfl{m3YQ$xK;m0A^94pT{#P4N;nX z*C~?9uPIaLZFIzG=?7|ueqgv>as!-JQC<`k2J`@<**p}PZ&gyUzp`;3ThxusU5)uY z`YqslvNRf(6VrT6VsLRD>K{8q?fGp4+-3@*)Wnm!H=Ect?NpO~1VmT3nS{@aWljztm{OWPNZ2-IKK* zZbL@Pc96T3MUJL(s;e^x8%KM{S&xx`1ju5_hj-3B*vy^P`BgO@7rFO35-MaRBRz8f z0R!XGs#&liv-j=8*j+BvOW?8n6U_}dWICXP%=TzMW7Q8G41QllixI>1?tC*c(EemC{r*Z8yJzDAn zi0oJe%E502ITjc5O6LRXmjNVljJ=xz;7GO>NfMRYO$tlEuPgNXt$ABu_ddYg_FLss zodWQE&`&$$7!-z>Rb?zCmwH?@QT!S4ngM=3g+gGYftq`~(caoTFFko%4?q?8>0OkM zf0BYUKb~Ff)rv6(^2&>j*Jm+{EP$((KWtRh>`YZG_NDEyRXb)c3*?`9R5*TRRSFO; zmM+)|%~8Xip=sw&)Psf_#oP?h$w|+PN5%e~%Bcx*{IGfetr4RLM#!s~U9keUA+L2< zf$=TWe!=u*z~80j!B=Gg8xLo`v}?fn24w81^_;f|7s8FHQ#+R4^RSg(@f_KMHgXqz zpe|VrqdNnp02ZJv7j!I9iUj-8r?Tjmme?nb5PTIffQSSL{9!FfLX@g6uK9l@LfI8g z8U-i&ogSl7d|&?rd)-F$@fK)36|oI>0pJ~fAKiTiW}osG-;6z9u&n1rX>zjcr)R(X zjG&B;ht9gvZ;5zAv2&gQkc;`!fRRN`pcXH)@&cH>O%L05lg32b?A}fa{@;f)E(eHy zwFwy|ufw3v5LLBHe2QqaRAh`TECH;XUxGXexYb^wc|q_k@G0uuyvo)mxz*S)uIon_ zY%Fzt#$f=WuiEDw41PY>U$KGwWA6R%DLgdVYhI`Nsv4QZD8aB;13{Z7e+et(_*TDr zOxCQCzaaYdd;#zUg`fUAk-Mw%G_`HN5pZk0-9U#CV55TWkTjXiF*ADan zGNMn6Dthd5rk;cxbM0r$rl8JQg_Yhwj!dtcDFX1iH6Xq|&mr)?7t@DG9fzO{fJqYg zdXvE@P{@dhgtpuK#sw3Ds6Oz8R9>8i!iXNE`n0W@xS&+INi+h(B2lP4OTzWWUlDw7 z^23X}7_K)x0P_0U0Q$a-rM+!Wc+SJ#2@LkGzj8jLM`D|%w*1Zj+);Z7m=ZRY3fpl) ziR2E?>3}8W!GuzNpifR^ZzY=!g2KOWowYm#2NyR8gqA69$?XI#6AWWHon#-F4$IW< zdKB5*f~_OZ2OeTL8E%v8XdRbqmo~4)K+>lJu}pSpcpCsY`v^itmBH8>$xlU$R9d9FM+*kZ6VZ~)hbm7Vzi)LsZ1NYuXhd`4!9+&i^F&w=UtV`dT4W?-V& zC~++Oh3YSSesfPC%>;Kh=l}p^h&L3bO*G?Z-~!~fzRrjKp-T0>cl5y>c}ofjcIVrR z)JiTHRlkSzB|4mwmn8pPYu=zp4MurckYZ38{sq#vLumV+_*(=<_QSz77Wvn|VAQY#q?WEq$g{ zk^}ce^g7V9!&bD#X47B?2vv6lFmA#rX1TZeaZI^B;eDa9aY75<7{derF8E?L^zu$T z3&275yBXW-+W0u53`H{rh$iL$bupLO{WGOaR*{2@(7!D2Ydpq}S}x~1mjV9&Y3ZyC%*A5+HMhM+2cK>quJ(W>HeWbNfi?9^ZrwA5_0f8|h$|INE zs3fJ}K#Szo)9$c){BnntyH0BhD0Rckf^N7+A!D5fX6`%{|LPbrcc#G0@ZkHlm1_!8 zU!o3b(e)Jpc(K)*>rb1*#&j0}(3>u18vxy4-)id{0GMO5c^_*Po|}KvlasAwj)=(T z{(D7fCi0fX0Cvq5UQmwve*y`d&_Y3ic=!OC4 zPYJh~S44;8yUeRtv7Wl?Zp||!S{Fh?=tHcs0NkQ^F1jn#jKsm?SLpv+YA>)UmCiIh zfY^pR18}$VgQd`GdxWZ*!<8(SQOn(Ou3$`h#H;$i75u(*_Fssi^k>4AA@;^U{svgh z38NS7#F3)tC$nIJ*mjFQV<^!tzB+K;3Ldp1WA7|DJw~~91E^0`Hnij6yoEe%il`ay z1ktr^4SA%I4=4d8XO@F01P-4Nb(vZv=kk0RbJ88KpYMYlCM+m?eSnMmoqx3SXE6Z# zU~79}srR2^D9|rLsB-+<1;dvG-(}5|AbpjbA40ByBdG>VtHR?o%v z34IE3rFiCpzo&*Gg#-5qxEiiK^ zGUapjjkIyuXj?K7UBSLHu@z}VMAq3OJNU7+HCTo-NL9*VIlz2hVY>;m?%o}Q$a3;g)4Z?%I`Z@} zcUI%Zc=CsV2rpPG;T!t8cyJ?1YvO2hM;29RpB^-G`Fw_(^3 zDaAA(HMBhLOcua901Oc%wx-To((S)vxzayUR6p1QIQQWh#QP+HCb}_Ux$SK9rOA~U z0N!%huuauy&{#D9ZX|3hNb=5HZhBSBvi~EO(#oPgN$>|FLr^hy91nwaF9g5}2bO!E1s`1C#@Vq3EC*?{aHjo45^0c4?Yl?%j?zl>-Ql`QA15FD zcwFUxk8o2{fYm0pybv>2c2ErXf5LfhBW+r-Ex4R+5|rChTow*%`{3nz!^j65pJLBn zc8V8QZshq!ecuwE_aVpVm+s5tdFviYe!iUv@Ehx`&kN9l_6Y?SxW$Rt-Dz`v_RpB+ zB;faIE&B5*IT(5T+meqJ z;0tiW`aTEy@IkF^pB?O_ zYZV4i?mIxT^|I0L^kc;^uT*33i(i>*SXskyz5k7rmN5J?F!xSKqg(r)!;Qv;T5!}& z8t?rF_%4%kvjBW!qLy>9yuK(nWRZ6PHLHXY(ys)>s4na90vbok4CFg*p2j6i+Sdc8 z2wJK1FAJW#K-75549gpUFGhicRTwkf)90gudc6?60h2^utsS;)h;)p;Uo0u?ZP5*o zeQ=SR945snP%3|5{}qGJmG`Oo?K*e4Nd@3JuUYkd&|&B2sYOoM8D#jec04F z_!B=Yfb>{6br7@7PQGJ2lwhX^4{eaqRlG>n&r~Rby%cHYqj11_(b{8ZyL<@|*M5)!EITzA zXQNR|a@IzpT4zo8#M|*x$d7uMQzuAUHoD|;km~3-H{10K8U*rVc<^_|^ywAW8Tk+l zqzoPpZO_PA-T*)^3q4d?w>1X!tbCr6QiD?>cN+~> z7vKV`_endsdGgX=VX?0Oo+m}4N+D;|lQP>MaC{wNa`5?i1U?;lCIxvH5_{GtM$D?^FK1?m2I<4dx}@2}k@NX>=7TuNjv#auzE<^@uDEl9m9gc*c+ z^^6q$t{O}IanIU%V0NUr(DXzGw>>P8Mhq#sLMtru{!ftW3sqX9!~52@$&->zZpe#L zTo~5evEkpi#xI}m04Rb{>O{D8lj=?qeA~fX!5NXKIlS@LH~UY|GYg^O3ti8YzA%$Z z3AsPpd;sPZJ>JHnqiK&6OT@GO+#~mTx*7V51Bz4h<;^FvC7l-JtJsnlk-(5S{jVp} z@Q(yF`ts@%^?C2rhWwC@f5$7LWgQfVK>*6%ebXB5jemxf0jDqU*t&Sgtb&3vLP?Zm z9N(5&>;?S|M2?9_$pCmhG?1~!pf3UVQR!k(6zL^Fwg^dZd>aJXBt|LdJ`sK#ZLg+p zVfj3-YtVzc8ZwlA6G}0-i*E{+3k=aN6R&CSGnHJ$FMTXJJhLDkIv zJpyU`(NhAEMLL8+=O&6=37<`NE~ty-BOPkv&5S^Y>3{Q|BddOqD+=4Vs?|AR3AY0i zf-I27BL&rlZg|-aIRHP+r=idxf6EF()b$qCSSZE#$jeL^Ks}x>Z3jsbz>Z|OuCD`N zh*jlF(iW#33L3Osm9Yy!_-K1n;5Z3uxj*)%-0 zvtPZe+2HfyJY%Dw>*=Y+b6Bqr9^!X$`y}p|Cv`Qrfr-$^7wMzt{C}zfQv)ZLP#fol z#0zKYCEv;+fHr)g4_-f;Jc)0Tr3L?LTs(iea#SwC3p+j&kc+Te-yWjAk{I;c7Lk*$ zHoGKs7&!NdKApSseBgNrkp(bG|5ZnakLv!|JU`r6?`V}Fdsdfu^l6(8c}DRkp`3ap zA@!FJY#HXnyPVi;K^!a>h71uYejDyk0uV~SbLY+LYZTc@5NM7lP588c#8|E$ZkJ}> zB$~e8kC>OpTKPYT+XFq7zO3X$9hfY?tFV#V!umt@Kt>;Gl~_>c%=$GiQje*Qk+SDf zwu&ZE`YYAS|9fUp0)QsHSlK+Gi!?he2Y~o_6Yu5#1Y!;j)6+kn&zA#4!CU;ZhEA@X z7$3J@oT*5hu}=W@*Dw} zZLW{_SL2K^ECQhOs1Qr)_#TU`I(qeH10DIv%|p618{c2QX3ZQ0fg|u%0NKkzBO(F8 zj~ukxtb}N?-}KzE_ylz)1-&SK)$jVU1_0(Ebho7%dvHK%29PCW{M{kALju4V{aCB) zl@N3kK*dpMa8u#T!0+U3@*S(8GP_Z^!?Lx}?>>XTMmgPA-pn?AU<&glj$yp*&N;`N z@2S6sTK7X9h_t5Y>@!%r;w(G%8FkMujkNmIUr85RmpD?bqXNftqI`=?L*;hwbU0Wj zm_Z1f+1h4kq`ZbafeL^HnkBsbzZqcv@}yTC{I*Rns9-kRx6(esfGye;e==MqVrdvQQ%DC_Up(()ERcHYA$uqCHRDyOe=;sk7sQ=d-j;L50p)3v5fKs> zF4M*nD+j@^7!8ujsfXB?DP0K4!-l^tKYbs5tp#|;Xzy7}v{ubCWmnp7Ak2b4x8}TD z5(Kg9yWjQ{XaPFXqTrbuNAWD=<0?_?ulNyrs z%Wso^MM4Sz#uX6wZlQ7&sY7@99%MWOTz9$yAkGJUSKvVqS|rC@bJw&dD{#4UKbL=) zAjIb*0U!aI+SYS+w{y*)k%xdS zO8-AI$8ckyT9{w-Wa=qRbKW##O%)zO){4xbcc(kDVW80i-n0QCjXE6g1SXMh186``?OFk({E z=1!+jM|pI6lSkjv7=paklBKCcEGZAeBXQ!}H6KURZT_?H@8y*AJh6C=yqEfF#@_Ek zbL6#Nu*YkLWQ79)KW9N;qA6)SXss1}$q@M)=K1!|5^2lWtnHx95h7W|V2Xk!Cc`56 zrEACIQg%aA{!bo-1}#c^ErW-`?D<=2@WHv6%(f4ryVyWcrM_Az$KWeE-B8%&4kqLw zL6xMc^02Cl^ZuWSKJc9}%qaNXXYL#eX6dD+5i4~Y-&-9)I>M6&yBQ5K*Ubz8X+R;M z2VRD|%GTR?p{Q4}0PNaK2=ZR`6JH5RuS4`}n%!S*T>_5j2YA{yeFq-&Tr#Dz0+4)f z`rZ_DDG|7Cr3Ejo?moH)!1(CHcjPda;y1GSNu(2$kHU65=o$05?_kjOT!=1)qVGLXP>O>l9eu^mGh{3ju%OV0p=-@PCvy&*~pSFc?01>MZd zTnCR{9?-k2r2qACLUS0!s;6HsDb*39>HsQ`#|*XkTNFAbvP&J{-ajLwCj zTYR#yfDZk5t-SGCm&*><{}Yshy%mP@UoYZ5KWeNc@?o*xC8S^}PAQ8dV4xDmJrpg$TL6SZ z3FZ8DdYJVZ0eQH3P${4%Ndpw?pLG>+2l(&YS$Q)e;P)&m6Mg(?mkZ!yyQB0v>Iw$E z4g`wyY0x=4jqLZ?h@;S5CS z_|o3Hzcwgyhk-<4C{8hMbvxcGM~qo{pKCwt6XJU^?Mko0?s4c*_W^W8f4@CF@Xo@< z+V$h>r!SynD;Y6Bu(=lQ_he+_nT88|r-gkHi`gpKIKanzrb+SzqgjnzChm}0^i|@m zb~fZuf9iBjoR0?Y8az0E78jeJ2-Kz#LlK6Ve8`B#0=W0{qkIVyu-a zF+MCn5Q}g6IP8FbxlVTO&qs{}T@pY2i|6tGH8IzD3Y#y{ai`>Y)~>sKcCVe^%bM}4 zSv1Z=f8BREfYd)rIo38#5(*w^HNSNK|LeZ%5y`QU>oUKU!JdR0LB}8>ZjJ16kB7fG z(e&yNe=~-R`TT;dEx{k6hxa!==K><`=|?|vUK7FU^7sxbcsBM%#Ad0zY=qd33iP$cyX(s2>)5k^JR{RLHdGq|uo|oBl1UL>v)8~FZmmLM@ zT};rnZ#(T5K_TV~dlAG=#R0BAwgT{831lX|3Rg(<)T7p%cr9jT2>>1an}|D#(4GTn z1t3$z+&(@OLO#k@tK%tQt36ZRZkL2S^w~gfah^Gu+e65h)*JwyFd*Yc9;i1gm4%ls ze^X91GH>pR`3R$uf+k5u0Bm%92}YA8}+{7+kv%QJX}X54R!63_dz~yan#} zs2@r4a9JKEIDU1=v8M*t4SIdl5m}J}fE?!mFXQk^mgJDD#We-S5 z(YO8yOZ~iJje(MY+z>%##F{Ol)_TGFjr`qN0M7Q8MUDPEWI;Y|n-j|DO(fmZn9)n} z5!&t91N>Wyv(Do^hUe`YQw@;h-`*W?TOWQqVwge7{d1R(S^JNz+i5#=KLHf5D_Cx{orRBbSM8JE=_ zCu7cxCi%D=Ggv0{^A+hJW+odJR@(R#K^6ceX20K}Z0Wyy-iZ#1ZWXthyqeqf;av&+ z7e8$D-3Hc+r_60@X52fr82d~H0B`~EhPEw&r?`cOK~Q_X8yGWK`W`*o*-OwHXJY}L zB%y?)u%qRy<|^q10IFp4oSpF=X>J#30^s={L4HPn+(cCQR{-`0wHMM{`)v73g#b7m zPbguwtxEfOec~&)zTj5wsfgBk=jbJtK_nXBK)%nmd25zx^?^s0)F1NwYn#Ti@Q@Nc zj_=Q=r1}IM6F?uAcr|5GrpX5eLAvNQai0L>Hl2R;-q6cnaJ-Q|hd#Y95U>m)`Ecom z%8R$y@ktOkO%CLV^Z;Tfk=|i#7lGaVz5P8$yys|mP7Lmr-U_l}U&)?!G#=!A*40lkfPiHrh*zJeuX+U! zyif8oGS|s!uqgiTjjr&&ruiB0%%h}cfV7rc?*;!i5J@sW2lLnTnalwApb<_MkRfz- z(A$we+HHUI!^*x5PSh8+L6B4se;1q;!V#RaWg0`eb`sq*e*pgpd5ZrI_6orWRvejz zwD#T=beaTGLFBiV3*hThx5^ZTZ6M@jVJP7T`Z)25>QzY9O;F4sy8y7@1X)_GhhvZD z0RQO-AHrf1!1HSwZ@&D*SuTN~zt@l%0RK_hA1kMK;CPBR8j-V#%XARb=c}O9AISm2 z_dLIQWtBO0k+)x~kOqc9=umGGo8SCjTGff-apWP>b-Stw=Wk1>BmV=O9U}OUBHMGO zcIPy&@xF<_qkq2fya})f(PyWmw39rLD~tjFq60jhN7?W^fo)xF72qqE*2yXOetTrV z!(!z>qd*4d66CspCqS}W>cP(4VR`i1Y+l_z?}g&LdOMsF{%Uq4MkUTl+pH8)$9r75 zJBX4V1u!XbBsszqOv*i%1AzRjWpJWY>WFWBUanhWy)VggffBbt-ZAOMf zD4|FDi9;r$lEX7z0+=&3)brAH^?3{8HHBcdr7t4}%(?8K*?*<0>Mk~CtTYf`%xg|Z zZ45bsbVLRD@|2_BYQwx}cJW{7Id^>-68*_sQS7E}xGlw}0%h&Adufd%wRp zU-YE|Ilp>ikqO``cKgsqWtDtpVW(#$XB0_}KoU)(u8Pwpg{ww&@~7&_$tcZ6ce1A9 zQOBJFyakS3^pBJ96WSAjs13LF8L<@kEtfx|4}D;b8+t48S(lpfXxX9u8~%efS^zVv zNh30kk*pd;RIQI_cT>M2)Z;VFJM5zgo=kla#SG>Wl$>ed*O2s@U*NRoZ|9sWp1ADc z*WJ)HDrRr>!}Q%-$Yyj-n+ZTRRn%&l(1F{bC+V|x$POF04N%CURmYukD@_ylL>j(aTzsj%pRcfiTrN4B{!wBzN6YZ*4E$;jC$V z(>v?)5V}eyCdh%aPu9tUlgztFW1(~Zfp++4mZ-Df!?rO~#QQhRIA676tSqS}5 zlm=inm+J~lC(z#;S+BVP{S5TNn=MXbSh`qx3Git=uC(}L4zynGdG6xBa}~}N0R%VT z5iwo%B!7|2?VdHuh29%a&rIlZpPBw?&q~7a=x^0UX-x2}#Rc*rC*2^uhf<85G`JCi zAc0*w-j-H#rF6uqW)SL{)5J~=@m~a#itG`$>2V0ssBUtETf@^?SvjU4X<{#YEmP~H z3a3k!71pgzTDe%jt9bs;+Waw|rGL9V)}L$DYxQ7k=lUwTwh__GqQk0Xze%_@)TclG z#9H{(la`~17AHgx)CU3EC2IMO%O?qDuLt{|H}B~a3k6+}-{Q2P*yB$gBS`i=8=38D z^o`Yab4hX3dvnS5kfdo8{ExoA{_9~*^fC%g(iwymDh#!|3p74Q6M1*Jbd~Qo*jC6U76fIRS$}CNBcIwfE1WhMj_dv_Ocy2I zQvmBbK@ShjuPl8!)m5%8SB=`66JLqpA$JT*V@7Z=sEH@Ta&=@psfIPW+U2&_>y!PZ za6HB`f_>a~GlJ_6s(0M-psPH3ae1mdVNy3}y9e+nf7rTe*cqMAJ4XRD?`$!+QJ%T< zzGX(ADtRwou8y_@(ggXr-fkpl5(DxJ*g&skeGGVhC>JIVNOjd-E1$5tTb^sHGcJy= zeW6^?HWT(KgQIK0IOf)+2YL^^9&SC1^0|MkvL|x=kHEu@2U1wfK0lb&u?oIYTEIHm zK(7=Vp$SfV5SV}eC;5@blO+rbzY^3FeejRP3NRIgGzmCmhAmG4D7V}V?U{-(-30&< zyd)eJkA#r3DXk{hBxv8Yzut_KZ-@GhL5C;X5*y3Kbsx1Q(mSf{BXHUWRN+ZB`(*mB&88Nmb6v0~JI+SR*Abz7*{8z3{9v?TiBU1?ka&ojq6B=J03eRgUk8_`g^` zC@MsrX`i-iM>#Q5yBjbH;4y#5vAx`ZRf z%igwY0bxvm1JWg4&kp|0&fy&iko*y_dKA85>M4U&Teo?jTvtc!8cpN&3rS(8dX2)K z^?W)*C6R)!qc^)R*Gq#sZ%r%$Dvv~wRN#udg(1~G4L?{3r&%X_* z=5o8g{t5LW_AD2V`uk7!RWjbHg53nsh)T*dt2mw*OqQPBlN)p?!AwLxmk$fb!GWi1 zEAXj8&F;T$pcb9TVI2{l;GJD_i|p|5B>jHbF#c*QQltSdpW16o&sKY!Qpo6D*LzSi zvf?-C-EUT z0Kf~^$7Y48IPrI&`OI{wK5p!`?e&CtzCSuy_1-~8#0Sv5S5jyNx77s6`@E3(mV!CB zGVHyw?U90}z?s2IHt(vfu07bynbrE`g6@7riaKvbEQl*NkYKL& z$*X_01@y1_0gvdLVb;T;f%ZzJQ(@ z`)nM`MeY!#1j-k6VEjnu43QSFMJcfD9 zG&*zN>)cd44fzV)xW41Rj59o*u_R-4VlI(5>g+wZXLVDNo#oH%`)|9bF)w4ppHZHw z6HFyg2`5!mcy{d}&=_?uxdy1MUf|}5RFAB>V`=`7J2&8n&l-LuEsZ)l>+(u)HPgDc zuTxsj%O@g)?etO(n?LWpBRzLnGd$u{D`iz3*6w+295ht=JK-!4j@{{e^IqUOeD1?1 z7yYmw3G=?Y3_uOH0Z0<#MS1O>V0NdHI)#%y`sYU^J6&%NB%mr!v6q?hCY=A+t(=*F zIdjy0khBv}_!nT57H~G2n=AINTxzv}TjP3=ZID1BM$8O*hjKDrJd1MlNBlb#pS17u z?K7VqUic`%`x)s@&7c+-noeCm9)s?V_#bYedwTP7N&spJoA-*Ks}+c+Y>#%Xl-$HlZX%IE-i3*XlYShhpvTx2WU`n3}e?({nCr^_Au4{kj*b8wQdc9> z-In`KM`UpJvqHM?J#cCC;ga@1MX`f9UR$NmLQgi`?#b_yl;aaYac+vtN4nF-xuR2^=uWJn+5~wh>?>G;> z@dFM%1|9KA$H33;K3Kn~BskPt_h~+1N8bEv^DIck*|tkwmK=5y?*@I-G>&w~yxI>E z%ea9u$QutAXh%INEj-&*`pHUVkdT8>YHc=DG1XRcJiozU47Nu;c+97Ue_Flh*TTvJ zFI!!0AmSIT+dAyo&>A;8NLz|5Et_MK!)Hd}@Y&YSj@?M-cG&+h$C?rO-dpJ?YM*(m z=9@>@&N=jCoCW5h&5Y(4;0%U5RuC>RPT55W{O4!m+!FglUJ&M~lGt8#-GIVffGZGU zwE4!p0&1IaAL|rVnm9cV&%0LJvP*b}R|R0TZw`W;x!(ym2A4`BHW+3k+JjNQ{L-)# z16pMh{P?h5lBz2_qe7PMsL>?>+M$JtUWYuqcBv!}@txwmDj}=`?vH&63X300)vQtm z7`M+Z^9*U=JK=RR+;u_m(}|*O358rs&_RNLqfpf->4!hn8;)ygM*dSCtvm56exC$C zX8yYVLMiUiO3R--7&M@RG3V^eG_$}bL_G=+V9Aj8b}E=3_7sa*sl?9p}=~f zzT+1tr=%y5$v95jci>)STv<#0RsRAAr$bf8l60B;U`Q#26)P$&SdlD}QJ7(Ix(Qt2 z&V3uIu}Cb^lbOu>k?!3A@g2pUpQZ#l?Qgcy@|vD0vn47+ix|ys{!e;$f`^ZscLs;a z>@%iRTa!$F*W=J=|EtW1XMixpwRP<%kMeslMWi#{l8Pa0N|xTr<6^279DV+SS6F-gm zRUfKUqFxZdYUuubGkh+}S!F=TyjRw+?7Q{LVN}5n$m~UQ$ME#5E2D8&_Ld2XM0M1e!|oOo8lLJJ>Ohe3}uUyO)>w z3WEFq{f5BI!pDnG0ECLtQtNZkYRppC0A2q*n~PCLveH$Me%Q-#=htwQZX&?a@d1l^ z(q6qWM_QaF_Qe0 zwI^a!Wa4g8Mt>>LuUGHC>{>ZC=byp+>BgO~*XN?nCjqR07DdL>a{CspJj-+0oSOIY zF`q7nR&Y!+DiNyzM8uUSGTSBVRu3CCi17DV{)R>IqvoQ1GiS)d4W}eJzFXm|sMBY8 z2HWMOp}`6fSH4Z{*$VR4&38-&HU$j7TRP^05(es@+^-*AAu9c56E=E|>=sqbB{r4( zxw}BxZz`VlF!Pa6q_@kqoQ_sxB$v4CthsnaRA%q+@5U>*{;~uTw6v}5DsZaxw!Qlg zjISgKLZCK$84LD`?{VMP96OMLhm6i&VmMnwAH)v-B+8gH*RO=k~**QU%{Ey{f z$Si`ZLQ=AG+u#p*c(dkUVOVd)d-m9Phrh~) zU^#7Au_{s+{?c=c5rhSsMSuW@-|Z?AA|&k$(k{D02HtOG(d#mLfQ#oEfKpXhvVYY` zo>T0B{pYWx3S~MU!QEnCDql%dPz@NBHe0?Tu(~}MTgrv=`}d~|6*W4B#E@w>Q-D;+4@4VdC}DYdhGIfc);of;rQA|8GD8 zBbo{nm>%9*=V(qrl`dNK4;H45nbrUDPZMTn;mR1A<-C#p1gQaeFaukSF=xp?2>wh8 zj)JeCX2-zhbsubA4`?y;a6M^P*#)(_EN>ODkBOt4e81FkhW=Oq{f>Y7m#0j4zc?V+ z9;%sHmU0O&E`zAZP+hun6YsR7(TBF`>&jQEP!38p)TiTj`!@4rI5yPP_f~_To^&#r zw*rumJc0LG3kjP2ey>-DJi5JiMIHROp?;BlHExUT-1ke$!ZOB^~~zu_~%>j@#s9N z%ntN5#Aw2d@G~risNluTpNrOOU3QE1uvxCD*pch{njU(KD%H}mzpt?1Cf+}bq9TC) z??r8K_qo}RX|`*_VJo_xG?z!t*@S`b1=foo*zGgB7H2YeZXX>iuJ=zB5qUO1d~pTe z`$5%d^$Gh7MW(&vBaiHDO_JrvDw*Zu@?XC~lvHdBj=$~GEXWV}mSfmqyGd2vf34lHm0WfmS`$TKkx5$a$K6-0KyMP2U!6i1C|5(a03~|?WYW9m z8IsU~NHN)egtFgo0zCgA7VW??VhBrj3jo+DskMk+k)uvKf zWQ>1br;l+_CF za2FLxcDQ@SC<6j)LNWogz3{dk18?y0N=(yjMjkifi3Z3;X*K{hXsyAIM9f^%Q7qmN-NeL|D8AoG(^=meegy;6DTj2Ude2l&D>LU6Kqs&u6}Y*8d!I$0prNg6=Z3>V2tnOaPUfyG8Lanx!^bfiJJBnv~)gGIo%>;!(Ro%K&a-V+R|OQrx8D$XxYrH+(x108WRgWXhW7G$BJ= zDlbdjy%E1^EH^xTujT!rtqNP=Da)4rSRTi2>?pJky`>KN-o~~07vLBYeQ(&0SdhqF z!8aY1I#}*^LAC;R4Q;y|OL0;=`Uz2NxgmK#{qMHlZTHVw-bg2e#`6QQPuK3h$t3o? za3HvCPP|+*xK?(4lBYF}O~pQK zC^-Ke7%ANE#Ev2PvDI0q>~Z2HR}~#cY>5~wQc>BFeCS`@M#C$7F~|%+TTcbhr?lM*@0MQF>d^Gk$iE zvF-RlEo&P%4L_z30Sq3F@J3>1_e16x|43y?C@j4kpevz)`kM|Ki#*`2aLsxVIdcceXOqo9vvTGWDEE>Q*P2jw(Cz0^<0C;1ywpu2DySMNQAtX!DaA?R5! z9!8=Uh|4eRT2LPrmj^F%U|OSKs!uNQ=vjVDRMiHt4Vc1hB{^qXK059ld{B{Xf13CG z;A#&;*;yhR)0@e(ZYFGB!$W8(1TfcSex6)8k%zX%+lv>a01R(QK#_C*UE4Kh0Nnqh zTe)a%fgb^)z`WQe=MN26Bgqf%ud3C{_+{om5F6th(CSgOSG)}N<&>VqcVEt=rB37) zeP~NKtLC#$$AE6N8gi%x8ZbZXzoViG2ogBz*p&Ir)bch#h~L5*Dp)F4nZHL-JM!e- zin|QsF1{NkGi~kfpvm~x9-0YRUzkbE@uf37RreAxQ)s+&H{B>MyTwZ?C#%S~4B3gm zZRK3H;!BV~dvB_hHWw1r&5^05&cx|eySdjjWA*)UzW!D5)4Pf)Ku#GupB+Kh;co!* zltN2rEY;n0&*lyG(z*pfA5eDO^YHdw)!7Qb^-lTgWH?gT5%(Z)%eNPUYU9sT7=LY? z%1Y=6RSk##jBCeQ@}!@LYk&y6_8i&i&gB+HrCi}R&~1?1wXSy|s?|E zuPP9Ixd_EoCD5R$uQ)A)g|KwjYHe@=PfOf-uKXkGDs9Tz8x@&0rqCaG#!^qdlF1x$ z>utBM0WfwFhV`6%Xf>O}duYMR_%W3jPAaSLH*2wdWV>o)#l3DJ^R>N5hZ9j|hAd8DT z^+R|LOo7Ha@lKC>aD;pMHBAi}P|zO&p_#0b7c+NkSH?!_YnUzN`-1XG##Wy<(va$% z2j<<6KbcUo(WU;D%XqFD&@SVAT(A*2R@>$E@!&S%1Gn-0;w;m%t{d{sKl-^XFxY{5 z9za8?D++g9WIWC5)HdT2Y>dcr_AHs?QF6aJ_br{qO1w{l5L~C2b5r2$ug>+Stzo?U za;@Rk2_7J9`W)nd4PWFTO3ZAl2rsdf=QH-pY;3$&5Zg`pf_HsKz9t zGY>#US|ZuKeph*SO;6@{p~>fZ&qVgO$6R|tm zml6N{s+pYRGWQX})CKw8;9R_>UIslE&*4u20_~!73?D&;YLn>qtM9g9(b?+8j}*mY zNlNd5quL09!1>Xic8 zvM`;+Yhcl3#wXe~WEPt5wXDZY@!(sY?c>fri!F6w)2uV?urM05Ld{Y~#D$bhTyl2x z;;z^}!2frzs-A?G)$i0;_1iCj=6)8);TFST;I*<<)4LNCN5RAT=%%c7>ri|JZ+&4e z}o3?pdXD&@Gt-h-?&MG_!8uoPlho|5X+$_zU%XzX#|4HgYgY?_Kd692>+P74`+Ewpv}K zeU7$G3@&K_=&JxSF|vs)I7I6SIQe)1&tK-!>4;P|^t{ixt`*>0Rq?LM>ia`Bd$9kQ z^sp*&yY9IG>hpyg2Z$}OD0UQwnC$9+w-a*cj;QR8Wun(wp#TEM*TV+R!Tsc(Y`aRU z6v(Et*wvIEUAuYJawOlaahk+-Hb`ECz7k_S339wTh2F`(hSNG27dfiUC3i{L+SfPZ zaL}N7W^;aNrHy~>rn;|o2M68&eG`ut%)&6P;EoxjeENrwVy+lweXD;04!;1H=4d@N zXx}V}Iy)`S_nke>RghK%loHummyeq`#nsT z<4o#riqk=ujMJ_s>N9@$9K=yiKhAs_kZ7KF?NW&zqC38fTOQpj_n1DI-s}iZCb(n7 zLIox78Ftl->h+rd+^^x0v`hlEg_N?li~wv=N-Ux9t>IAjdSi2S^l2?l%qKRLTW>KJ z(s~qgBK^~m!9$!sSOG5G^!Nk%;8ksnK2P0~-w2)#I8i_Oc&uzCPJRDQ!LNH@%5312 z%{N+e@WGa>QqG%wzYOs<`vwhdB5PzpE%)H2LjytF?73(emXM47sG)BF96rJ7&Q&@2 zkU8q#T%V{G+lP`WB&f_}u`cw5gJTxYf91-5@%FJ6yXx)4SW$wW#3v5V+PFe|1do61 zDyCX$_U9KG$V$!M>wpo}CsntnqCzMrSXpkOwx0LW=<4C?eyM)smQy%4_JSw(CLTX% z7l?QZc^Jg{XB58Q1jxO*u7WE>iyhG`uDjrxqf&RRg%d{8Gkf^#LY0M=q&HK^vXL8` z&pq-kUvG?Kl3Qc_7D+9GnK&akg8`~M1yAjQXzm|R*6TpZBDda1na}94*MUKOCyqP~ z@$+gDH@bDs5zu+PCOb}kQ8?mpWTMsN!1t1uJmuRCOEUu<&;s?AfVRQbSztDg zRsMF$SWx{um~CBD*@lwo1DuD6KlH`mrnqB5iT-9)C6zmXzyJ(9EK*!l!P%xq^ja9~ zVan$cE(-(Eg(LczJ{DcynHj^5rsT-yM>#uXBcm5og~j`4jaWI4iZ_3EsUb1n^eYYc zSTGUP{+M8XL~CcHaz}2g6lLW%h%(4-)C@-4^z}jH^D$WjeHxBFqtY%SHu_hR*vo15 zi#)h`u_W0-suwxZ;Ot@G23k#XZ#_4;%6)mBfGNRSd*6=B=!EA$um7ZwHbI_L49*84 zgE)Oman4e`4pNsLo=g}2B#4jY=h9OrWhaZ5)LegmYNLT|;NB&0>sqIkZCU*=uKdo} za{X{XJy$p6lOE`22cP`oe@vZaTvY4V_vua%P$@wH1qGCD5fqeCQ0Y_&>F!RYMM6dx zloCNe=^R2r>24ULbLgRFc&6*R|re)+)|}{BQpv=ZD%^sxbnh zHAErvB<<9(guTqNCi}kqxgn38qB=O-l7#sLy-oHTR;bq>7PHjbi+rMzxa@cr?@vTB z?QITf)TNFSpKs>=Z89wYLV;{!mHK!JgA`k%pKj!=Yi?ghKN|;93RI0n zSE~MEqCf7Qa%}0&m3{k2Ew~5wBHvF5H@f0(O$KJ=)`G*&PKkj&A9uowK5YDsUr91W zahs0i1g zyW+=-X9e-+*4VsbcypU93)*&yFwb7jZ7&~Ycarkt{@Z?qD3us3CHedQtwwVyl` zUX6AXB^Z646Q+h+A5rzCH0(nql!RHFiF=u9s3yR}OlEs=>_!Q_NVL_Zej$RX+*)-H zm^~=+Xk8nBe*O1;FCfBtXYg-cYfF!vbmiuh#o+8#MDD+U*3RwDf_Xey*-eyL@3 zJkJuI(Y9udhwqAmy6tQdm2 zESvjw42>};8TM+*$nTsHkvLqbv)<;3RC^2fv5E|3(D?d3EAp8E&e-*CQSrpZva`ub z-9LYi<;JL9ostKfQ_OEX?gfV0-V&rAVTY=9zf?yG3XR3ra(XBVq)vVWjPJYr zqF4T(jXS2)<r@%^zJ_aCU=B%gAa~Rp||D%Dh0kQLN%1FHCNH{}Gu0g#bmx z?dr|9ycvNY)s&URm~ds)# zin`hPDG$)`enuV!Pg2@PuuZz#PX3^75Ikx?o)UDR5@&f4akytKSzT;ANu47quC<*& zT~kE1f1l_`V9#i&whMBturkn3m&O}Hb+@rJ$&$bKMPIg2BB)U))a$I(YoQo3Y5n?W zRq2oUb%k3tdFnJs(y62_6BSq#rB%P-S+M^-{l0dQ;=f4^-=t4x#j`GVTaAra8o=%R zOeZJoY%0GKcV2~n`MWc+gTK*MPV-o1aqnW8XHDzi?Tqk1OM(n?&o(G;g!RRJnwFyM zPc8Cn*wt;#m9??q9|hN3oi_fCwbFYA^LjQz!TQ6RKN?sDj`X9IU&C%mKb)!0X4GX8r<-SgFj*Tq37 z^#+6oT8W}p#;i=Uf`qCTk;x$j!DySAVlRZn;AhbH1mzhP;-KX65bL3(wKOu2u*|1= zx^vSw++BKN)2foND%qxbBo~fLLe@nNsdQUwxZKdyF3B~e-sqlz)r+&3qhjl&5A9V{ z)dBU*5^P|rDRd31gMR-PVo@_Uyt7uQ#}-RE%~A;e+ga+EzpXWwbKjI@axB~(8`S|X zHa8wKu9rMm8iEnl7jOF6p=_Gw{o>HFGnKd(0(YdgLubO9A}}v9+!PMrurjp=ki^kJ z_}^4e24nZ29O94)hz)-Hu~4uE+`MI9Q?>dx*D-rI;f1pP_`V>h*|}c-mw0$4zg0DF zJl=Jr+$Mh)i$9y~mw2dt<+_NbRYu<##XRl+w6*9;t+t)lDd8TwU>o!hCFWh(UyGdT zug-D-FBT*H@gDAT2?*A0f3pprz3gv!lunn<2B5YdtumT-kAZB7ofe%DfZ6~)dvZ3i zYz9Zk&H6RO3rkzN_t+wDC`-Np-W~2jm_Sn_-tu1ejo(&iCZ!v^oBLW#RRw$fIB`KU z8U#phl31#OSTe002a&l=eSD?QEeg~eS+>Nc>?DMee}E(w@FnHp7eKLj=_miekVL(c z_q^++GRwXU1)oNj)McSwGbo)_9xRVNA`Af?Egh(gSy_a1;Y~yBs$4qrFA#z5Wm)On zRff*LMgQk^@Rw|rlrzZ7`TL%E9`PL)EEK<=^G(?^>hbuoN~b2&1l^?a=6RW(`93d| zWzO`7dnp3~IYy70=1N-3B3i^SMY}TKNGgJY&hm$224)Un^~6SrwLBi`B%@RiFq#v5 zKCXZyFx#)px)Nx-%zSzdKW$2ucUr)ZKxAOgi_JXzTOtu*go)D<^= zmGFQm6?F#`8%b%VypTPF9?fsy!*T_FnVBXEh+u!Qc>(8yDCkp)zIP)Ge-2iA(d#dk z{jp9W{GO=KTdqM6Ovcrb3!i>?mp)-lBTj@qUvvt0w31T8?T&0)EIE;jfhmN>6|0#X znOwUbX3hu@L_6?RAhn0rUB`#e(cck0z^`Ct?ez0eE!p~rYds)9xfUO{6n}n=L zJXUG9jiDdfB`>FA-K0kp{$k#ud1q)BssFHi5EqiNqR(e6WD&9e>!*-<8vv?<`Zb?n zG{HFomiJ5(&(2Db1^3Xc-+*2QwpsrMjPI#}18QcbzMk`z#4QOm>GKD_?m0C<2w^5x zM>P;k1Jc7_*(W9q=j(VEO3e@kh@5wOv=XQ>PmO9LGQ?74)#CYPxI?N{@3R> zPc_E_kV8}2E}Gq87>BI@mvdPBr;mW&uip}Uv*qCmVD2T!pq622%;X@!2(6G>EsS@R zCgiD;o-QXws!(S^PTBFs-LC1hYEc&(lKvK`$Q~ipJK|N*Q>t@mIr3U8?g2X zE3>v9G))-f%6p*UxN-QhlA{&_&Q(?Wf5Y?7hH-KC$HCiq1{&f=e-`;uiVcy-CNQ6e zy=>J4BoI4ijl*FU$FHO@0!zujvj&6b=lK%Mg-<@h#X5(=4 zy?CEFRDjF~uc;aWidhI1i0Fwx$5VBGKkzs#(&-A~eKfaZtI>^hFQARa#M0*OzcwQA zUGl4k3@H{8HRaOo;ks255OClPJ`-b@zW^{jL|C5t93nVBE8mX`W!JfsM`S^NT%fn? z#!n;#aj!o7;L3;%nLxK;TD1r+;6%hhMq(RYAvpC>PUO%->Pd0i*%DbQd%3D(A&|4#5c9G{HJ*+cte1cFZ-@n$1-PpxrmMRh!zYBO_G65Mi$YraZ}5XbfIlb z5Q^59LxyA9w{Z_2M)OUDi>o{o`fUzN1V2tg`aquaG}ku+A-AZ`&-Y1=Tf;8J89t2WMi9uOrFmGKL-@daPP=N{WOS+K)ql#J<9cXdPOj0@ z9~CrEf${Q%HJjd55BPz=}>I1o4(iPfjiCx``GBI@T+O*)!>2SYlVP1Whk z?irKh$@LKbvlgNWuY&;uuPS@(;nVCRuZn&fCX(M_hiC+=SzMq3N%;ii6!%FNdg!8r zR^|uVbK)o^Vx3s$CE7quT`3x}6$up7;Ubp?Ov$LoF4Nt;N+gr)a|^9&59vb+M8D9- z1Ws1POkQ2x%kE8-izrtfVb}8^x?sRtp<(M6<^=o#=<7q*wN7h~Y7z$3yg&e+uKSzu z{MUJ=0Tb9VjJ0Y0O9P5A@b zIeA6TZazgwD=nZPEr!_UyW_a<9_n-!DaCo~m^{%85-`4 zsc0iyzExwrGVnEg8dn?6!yvVD@%3b5*l^BIMmq>M5bv==WQ8#O zOK;3UTDMlqs9q*`m?%flv150{_Q01Erus56t%w{NRW^%3lecYL=0fmEKYMgFo4tYm zQ?s|p6!C9j=%dJC;KA^vAs%%Py{^|Qh-E0 zWBW6Fk^aZL^UPvhrurTb_^^U6Q=yydG~5F-3vh#7v%6R$ew$zfn?f>tARfstcWa z;MgR|K_xZloUm^kqcZ|f$Kt-52j!!q#wD2j!@)^SLSxT4;su~wiU*6B9?phF4n2lG zHr&T|Ye!PVXu$Q+AUAS(319&gW1dF<8D-?y9nrf00=NXm>y zh3k2A*Vv30l`J31R-&q>a}m&Zh`Xdm~Lw#bDUP4R(j}eMx#P}>1*!@1hld(QK#Y*aF(}s25(c_|c*7pDc z;2o0&N)3IE?HA_+=KHzWtsw(l2ebOHzP*Z!%7Z#;8Qj-2A8hjX*HOw&hKeyA!-g%Q zhJ>8A74^f*LP@-+cdsl2DHj562_?K$BLXFj?YM@IKx`imat2WT>{)}a6S{Sp*`tLo z;yFzLtEpL6b86Tf$GPS(u-Ser8r?+tx(k<(c;*0tXbMkc5NXMWoLgbdtzl7=%q^vOEdGD`L<_j9mN&QL1RY&suKRLBk|I|Z5kk|5T zq?OnZbj^tRjBXf}NLsrLEL|5kp9x4C{3Le5qoiaDHqFU?Ha4&S<^7g!=kYIo`r^QL zk~nI1mcZ(+*F`v!APbrN4#HgqGYEqKU>+0^k>%KzgA;%nD5roAYo|wk< zCt|g>?&G%5^b0!@t2s5LZ|^`pyVTm_3qyKlj-_gEaz>xG@w(UdWqizvvOLWH@hjlq z%0nUVE`PQB8usgH7Tpg%^XI?#tVXK!mMzko+~U^RM`aryX*lCPbkSAdR@qG)RV(!&i;$hn4-UDjz_K6b1nbNU z)#ZC>&z(-sqOktrz8*`p!n5f?`}wQdgL%Q#jfSQILLdo|aNZ2GF?=v%mU=O7yHK;1 zaB3DYsx;a+a$k?H!m!}9cn#IVpQj9RAVNVfXz9U|ftEx0&77M4a=TW<;>2d_<=Z)L zz#fssx_BcA^X$H+(zhrVx87k{9p)El5SeeQ0hjHg>+c-4>5>5zA{4@bD}R&K>DP~+ z9|Jhg?_-I_gj`$ts1?nuaUK69=%RX$&H5-4z5vYqJw`6A=Sfc=>b)Mctmw6cj|<(k zeKpo0WaaFV2!l;g{Y(G8P|9A@CI0qtHJv*9XnpAOLS5VbxqXOHz&suCBTeSL%;w_|qR8vBZ%UU?tau zK~DwrV#ICTr#7m_>30qH06~Xkc^JkbUht!jJs0`$jw}ig!t!uR=x;bZUDb8RN5~5> znu$p8`V~Na^}?t#5X!^cFFd-guwS*})IXo;POc1`Fuv-&y2rMfs=VdMVT{Z zXfV-WQL5Ec$(xpM)CHy^yLz3LwtoepP?U0>kPY&;8StAws6nHk}j@ z62t4yinZ%ao!VR3m_0%@+x?`r2A!Vtea=)=AcgImjO13huEJa?YMoPNC=`;%WXmBAO0v(b9 z7JWRs96+nhqG2ad&Z!pg@`Pn@7EiT`d+LJy;H>|AaHPs}@gQ=wz@7uC(RD-Gll`s1 zT1|)T*+oQW0CVcD`f)BOpi70j#aoxa-Ez|`Lx_&Kh9N|lH-F|7^ zRqrlLf>$&d^D#4hMTz%DZPrHYPifQhZNQuz$b&PJRWCU0Hd==|ozp_^Z|pR`+i0+|Nq@%}LIzt?~&wYeBB z!CkKXcPPeLe)f~(gWKx{B(dpi($ek~t9f1|z<-5$k+=}U&wG%RsVqX`rUI@tS%Ylp zTY)2;27(UttW)exKEF2U1q6TG=F%G8G-s~mgFTRra%b8Mb%387<~zWHhvSO;T@SJx z=ej8!j6DY}K8Y&uC92(xX&}c14Sav}2`2f#55g&b6@X`M&|2}%j@YCDz35}oKx%0( z?{fNave+>lXf4DbU&%jg50rZ)L_OYY4Y6J+wyUey(O=ou&l{DhC!tR!Qw=5V;DOn~ zoZMM{fD!-#O5JzB3%AZ{_SSnM5)2;NU#=$RVtyd-&d@b1R_D=m5UqXtbFPQ&-3@34 z8%3IygUzfD2R3rXOV)lokNfUTMKJ{t=)a%EfsB*K{wv%3^Ch?nXXDtMe)TUchAjc; z#IM_{OwpyHd+I!v>Is!&*(BW;E?pGlH-1sq1*t~-NpT8X?~nCe#uk^hB&M9Iu9ZO& z;qSH#pL};((c%c;Ry}*t^8t8cuWx@e`jLq$Z?p*-CAfqg+Rh7?C%zM5PSeU7+;TuW zDsKoc$bf$L*OH(rk;IU+X{9VZ=I?nrw;9pI-w&W)1Cw?(PaG7B_v(AlQnc)zNHegV z3c3W&{e20=9SK>D13WQv2iw!XQ5yap7hWV4^65P%@WQG1S{U2-`++yX5)|N)K^rHRI-Sf^f!9BA_5!`Iau7OiE)ow29 z!Q8Fy%^%^fJ&BOA0#V1e?~RzCQ$n;Ns&OW$p78T{qXi+1ny9jJYR1_I((Eg}p@9P7 zGd&R2Xa8J13)&;?;kbve!&DqhlGI=D=H7pd$5awXEH)2izH#@E_*D3@^gu#vys)69 zagWSc$*Y$4)T*XEJCg0otP$7FC3fSkomVxx6~5I@tAdWkgo$4uMBs<53P6;s3_mCq z@McWL`m7>Suq^Kdt{bV;mD?aD~80m2^Bm{+7}1g|l57OhS* z{QoAKrgpr0>yHKY-5KLCzo|vsM_G%*KyC*CFPGo2_twWzbr^|R&J^Qj%U^i}Nmk>xzRz8UX!B19iG&kLaPqNH8K1!@?Om9~_Juo}!)&l5{GwaWS&6D~#o zEsU2DzYJMvc%uORpTBRM%Bz~&6Xi1Ycdn=Ij77Iw$dH7^L82_OZLoe0s;)zR>6toM zkC^wf`i}X_Uu|Tb4dZ*=84e`OF9q5RqkpWT!ddJgvCS@TYKIcf{n4(Xk4D0uQM`Wg ztEc2g>}c67A67NskBVVzaZhzzVn2RlG#dYMxs6i;|AR`!3i_h>Xp4)a;3$m zt5-FkPV+#}MR(INnBkKU?#>a`UVBm~U{vKgH$Z%3wo0oSpi7~y2n!dZ4x3z>6+5pu zMuOrmUYQAi2B2z*2DUR{_A~pzS5ip%6140YyPUcFF~ib3BS@~n&-e5wII94#sc{Y@G=!fV z2fhJqHb))>Fy;Yb>*FKtX9)E9%(>6XSkB9oSfk8?qLEsC6hY-Jh_Y=#E--K-BVecH zZ$v9?NZ2X!mPr+d`x2^a_9JbW8H8cO_P^W;^x1*39rV|xn=oNJ=l=kZN)Zff8m@t@ z>rBN4bu?n~rN?)W@Lgd<9dU zKkVPrR9fiGQT`U$FWQn6 z4$IMOIV_#oy%`L$=k-q~W09XZ+G&g9+$=5Y9gv&foyCl>m4KRU3{Y1RLP4)FrtZY+ zAS7Wn?#zDy-N*O&`TYVSq?_@wn}2>Zuvr1rpm!3~7shW#dd2OrFU!(|V=Tu4!ZD;= zwGZ5*Hb5>6?2Xpa9%Bo8KPZrAq#>=lJM$i$Tu0hDom_j{Bjm_?=iu);J~UK+GI|s= z4TI~MqP6URclJSG>H^@EZl9S#1Th;@Y5Ogbp-GJGpw>j`%{!=l8D%_EU+2?w@OG5f z7*3Wj`_P}|_&XG>4zc5+Rq(M)B`qKn{NN{Y2Y#8#^XxG`BH=gU0JKQ^ttERXuXoG< zjhcgMm!{*d07T>SrR|n+5rWKq)hnG3wih!5(Z1EB0_9ahf3+w}qRSzwHSV-tWbqTm zc~OiTOf`k?6d_DIt8UL%M2D=t%!^BxW73%M-Car)4_U;AIt>D$R$?fvvAax(+aklT z-@OJK7N<;W=-Us=6$}J}E3=A}A^mIiAuhO`ZM6?>tj>4QUe4_+E;F%4Xsrwv>mZCV zfzbNn?kZfK1aeaGnX5YAlLoyqEWbsStgu9{KRj&{WJyuOk@;Yh$;iMpOs?PW%c)XGJ0-iI zXPv3A200dd0!rwdyp;3hdWE)Np0P%K=H`bA?Fo$_Gc;{&z!(O}xCMZk0Js7;#itw# zY;!X-WYfK`7{m4^K8-Fljx-sNICE{A?5-1Td(TLO_}7>_e#eren4{ zn3xg?%9lxk%EK|=Se`RK#5rKPj&aTa5O9G!2jZX`)FMj2I)iVv$^X{Z96C%Q?9Rn> zSxY4>oT$#uc6$ZS&+Z~)rMJZ9OMmmg{=9t-8My@cmh&V3kN-AHG^NZVSkD(dBf+jR zS$C;d)SXw7MK>r23-^GD9X9e?)1LjOJIjziILlww?6Wk1`}rLPDb_)NEKVyPFq;Or zcnjs8)D?i(^q<63D7rcVgvw+G57j1xk=PHX+FP3VK*@P-Fsr7NeWm0Dfo>DUi+hiB z0hesaCh00TshEoNsx0QNj7>T?AnGxhw<-Wk+pWwd0)pSak-xwhXj#yC^`R4C@}flG zEMWO4ecmH>`(WJ!fjwA{U-}5J9_(k(lnK~`ffV<(Wr=o4NAJm1yS&QJkLGz|U?Slf zaQBn4!Mr|4QZ8>W7+eJ zQr|)|BZn@!C*c+LR=PN3`0P!=wx_F5ZGPf37Pr!VShaDDNqeBC>Rmn~dxE7Yx9XY? z3VW5g2_S>l;Q%%LgFfxU9I)@KWjr7QvpgQq98AmXTZL3iHL`S1A9pi7k2*D(I_LTz z_w3}!s-oEFZ%DQ3@K9+%^A*~6ADe*(J608qg=zb>YmL4W>wIO5pKqwfb7AYLPjk-D1WKFnlFyQbA!R_cfv18qy*R;bCckX$n40B?nd+mg0t;;Y3y09k6uMC$MhOt8*_oq=i1>8jUit=4^epxHBSBlHP@DDR9s; zZ%1R^uE-`mb(rQh^mb2h1OF=!a!EnrgC06#Ro3wh*e7?#lG{yZro3F1yThK77hHJ3 zji;*Hd;zu&b}#cL30u5$6ght_HZJhydR`%z)YIU#2^($jqK+kDrm4@zwh!4HW_J$R{v8KIjrbA#JsJAU*au2)_|}^PTHCHgXwamy zN-0D|GhM!YHxs=!Q{Yofg67;(oU-%4+Case$It<+^89&()DV6Czp`U!Uk*8rO-7nd^*&An7xq9zWqT75Pv85*Q(0x+4W7Y0x(I8(OCxL1EtB78}Dx zxzqyjpAtTx7L-NuZ8K`lhcJ0t5t6;VUj99MLa!%3*lAZZ&6N9$ZW-AK_e5V7PGOq{ zX)PNyi@S-R+gW61R(44CIfeqBoGT#b7Xie%00tyH}4dS}Mj$l}{ey}CXP}Y9TqxnA z>j^|MO$;*lvd-QM`yD|u?DewVK7lRQBOcKt+P3NOljz3LfJ&$0>eE{w6=V3i>9;rp zdC_IZ?m!!od$m*U)tk<9d4J*W0{Fu3j{=f_U7J|BWhtq;_>>RwY4e{#Y`5^s*X_3O z$DiC=Bh070XCE;|Q_W^N#?mr#>5xQ8EjE?)&iIn|$g(3o@kKl+sj#mOebtWFh0^=q zb51syu%(I+W*`iUjG^Bit|=bzEB{|0aBsrW8lK~4;ZpzZ*8m6_z;g!!E^D5f#`>ob zh55@dmLeJW>H4m3`tylJBu0^jAui9@!@%2?0Y&uL@A|=fGp=E^K6M3g;%OrBX^%la z@o7@^J=l_X{lIw0L^U5*xq53eqP|&&!sMnevH#Yd3mkshxEBKFI6E^^$%c zU+-OOUBkL6Pp2Q<%?J$2!p1xw6boOfe=SC0649D7@=Y;0;>k0*6yM(&Fjn$afR+;Q zS|;#84Z2*<(~a^Kif=(&!inNeuQqc7T0yClK#`l`L3Tx{^yAjunnkzH_4rf$Et~4% zCLhaL>C+iK&zwpAY2#Ir9d?K(TKZc0<}j7abSmh$c^);5ma#{Y*at=}3uM%K(k#si zpJyDS8$;uGd`0H2NsJ%9noP6{f(kO1^Jcq2#uRRJzuuz`AVU>%<%*~X#TEIfqq#O( zT&K*LK2FWBw&8wVLc{&jhQ#IOpDlpT=*AgBAKFl+ZhaA(ek#v+Qm;P9|NMrx-XnBM z{`cMTo2~ikxMevSepsRH&!6OVa;O8Z;@*&M0hp0k?LA|3-ImvMv7?bqzMlFeD0V-q zFSOLs5fT&ugodos7Rgt!=T1v(wpoie^Hv5ppYm3=99#CtyI?Qh_}BMkTa-nlNuR*~ zP5S#*SJb_*;Izc9$wRnZcsix!9>*rOiKAiX~Sdx;E_PypvQA3P5HVP@I1Ii1cLGJ}8;wm)2AJ$WC z;EuIi4rtbyL`-0Z-8&@HTtt>{=vEj2AVH`KBQ#MTi~=BnX#V>-Dnfvr; zzV+(hKwcAdw}X|xqRUt5!mW~;md5@KD|Zp-D1toUsPg9b7<2(xVi-InRqf`yes81u zhj{x8)!xiUDEVpn{P(x_&$;7$IMMgF!uSnGYrrW9o;9~Qg!z1Yi$sJI&3tBS8PlM? zT1dvUk2`9dZEC%0)T#KTum%WH+mqtaK&8E|{$0GBUG1{u>xB;qj_%{*uPsx8ayqnL^(*~^ zEET+ci%jNU6{2H3eN?(wylecfW#^~c+m9Fc6N;6Zzwy41{jo;gVUsc{P@LZF1}eDV zkpRakiSb`<<6vV&Z|YT1A`;)b$V7a2pa&_6W`?a%qyqxd*Dq8;m3I|4mn1fNFmPpa zs!W*50}>!pPmR=kcQddNE|ToFwueHy=kW)TjJ3;e9--dPaM#Z*tR)s`7KP_Xs=6dE zHOg0>xpc}`HiqZ3gi6WOunf4j++=v%vr;O^nLr?ZzG>6;7YrPo^8VH z-oC^01?(mYC_(Rl{!>av&*?e0h*7%}Ox$ugIL2;6!;Z3ReoWGvEv_R0cx*kc5`%M8 zW#Z+4CQZS!{bo(Udri259}AmRhqQt4KCSoBH`y?P`Czre%1@nOqF=`H~y_+=4tKk5RQ9gu)Jv*YW)~1(J#YfFzg8QZssTB+#EN{%0N{0AD5(M zzDv8m;(5bm@MH4CGA2B~sRw`>X5^XN$a3B^(O#^d^x@_hsbF%0?uq$L-|3_EHWTr1 zm*30pd$}j0b#CfIj^t*c^a1~Z>__ygnZy!o;|bw9ZR7e*aXW&YmeStXaW5Fwbitmy zGITQ9qm@wys@P>;`KEhRxhwbA@7F0A)r`33EYh#1!4C3r%YZ&F$ z5A=$Ay_>pNEN3M49*$M}FQ25ZSD%EIPb)!#l~l@gK+vmmz6X{1;p?<}#u@0{x)igM zpR1j@f+64SDk{b&NGPN(y53kZ6>h9?c}|`LYF)8L%}LMe6%S~JrHQgA9x_Jr1%Aza zs-Be=?D7QyN;P-DA3)yw&_&?#lK|(8K_bIL2Ia|462l?l-{+}P$Gem9%Lf@bN?&}< z_(|1gN5wf3q!atH6E15XPU9ROa*rXckErX;(j^zQ#ZF1hC7F+V*I%{01}MDH160dbzTThO%}~wr<#$6JFw!`J)j1PmusQqYoN4N?#||}h zNORN<0U9Ia95w^;-hrPFcaPG(n9rRv18;~XM&9u6~p#>nf zn}njav=Jn9bRL62kTCbwX3Y4sr3ZYPn(~UERbA#CRz1&Ga|vNW#|sOIiJJFEos8Pu z*hu{qG2tiF#Dgjj0`hM_T}T`{I=`{5H=k=I|GY>cLkXCBg-FC`9EMo$<#ofwIFift zMlAGLRN!fHqJDf&;3q?s)v=JoOv#@Gl-F{9UQlgq4p3@|45z35JQ`$7>dh9Y!I^$v zDlG72Bt*9-^bQP>r9B2k*?gR8VZ8eFa&o#s^RFKa?Ha6<3gZxB7$~^gZP#Vq+61BH zQ7#e|>|mPGD*!i=+un|$ojux)*IG#pMDo@D~*qeBq)=Z8D&EIU-j?J@e8|Ux>qdpC$jK6PM{Gf&@~3(&7yVsX5x~V{Cc)dr z`c%cS{%-pPS!U?1=~@p|c<=(?l@N0(WfyTuT;+?O!1+yt_i53S=2R ztZpnvoA{iUqZK_J0YbR!$GjU6klV$4$zh`hxfXAdmtj(v_5I>OjJ_v{uuR;%72z&l zcFK9FxLbkO2qX+or0+xvH8(nU0LV1hWZm|Mo*q?fPc}PH&XxX# zt7C2N{!)wj$Rtet$07yzuGC5l>idjE1t?LFnTSmMEg&J+pIFW+zoq(YFPjYK^7&^{ip&6JS;m$tcMMlxa94&Z>7IZFt>TWDx zmAneP|J?|q&C>@Da;gT%$J7zXlvKj3clx+N{!v=7DRvuV%0Wz*d7G$$qUyRvWHmnSywIs~lQ z_e|Vp|6-okCdlW07*RxKL|;QtB3Gv-&jExqys0i&EK1%6(V36m z45dYSx|{omp2Uh*-(Du~2hCe>UAg`x??ZBvZwpX_c?dc)HYkcu=ORpA3%}O=Q}V&A zq^}M@#c})8YFxR~^k8*3PX`_zr7fUQEkP{Nh);tDjcG)J87X#7xLm3q?URJ$#$t?8g$3XCNmIvd$Agthn@jf|3sK9(} zH0mz<$<{_~DN2J(lEIm0p{p1X3mzX09sX9`r$4xlpY7%^Xm1xUpC6ndG9r4#0xFJ6 zyGwAb=2jiP5_@x95uc}u0jS*_=&K<>td{pD_g~+{f=LG=J^){XRnFv{Imp5VN> zBuCI1WuphLbeBHre!X_RoMKKfiSYp%Z;K?rvOgVITlcx7=(v{5cCUtdIG=30YW*n&3y{y9#T~Lt*)p zc14L`=hnm7=tz~@=9MAx+g8Z_#w;N@Yu|yR>s36cv^pDGc;`gbHPH4UiP=$w{3{C` z=ZSywG3bW5zCCzGS@nA4cB%bGV!dhzI@~rnJK-6QfU_W=q!fYFJ8$St!@QXd9dU!_ zooBoK#L-4$AFG6&EV&HR+^k1(^tN$LW@FSOp-{&O0ii63H`RV16Y*^d{fmZkeqE_| zT#ozk!Tr+0=*o|N=f-}Y2z)LueM6{>wF z&s?MR-b3gj5rQ9gk*4*9@&M8N^-F%G;D)5SHT2leYhCpeNh|d`md2;C&KD)T_gDI}l;?&f^Je4@#6Cqz z&^vJvNFj!fb9w|7+S{e%Mt1H*>N5WjFlVcpnsbimWYh6PfL%YNGCRKpS70F3o525* zhf3eWTc6=%g9)3+%LAIs$o^~W+DNT|TBl0BuU8aJ*4&R)29SP0Xk#^wrFA?x))Vld zZ1J&=E;F`;oR`(`f)U{JdWsQZ9!{Y0>jsn= zN;vQJw^V6W(o&g>ui&)%tn;e4!#H7k&qZDyy$70n0{pNiXMYYpoAg{L<$uHj4$TDZ zPk)CPjf-{hBs{Umpt*j8jZiw;c`erhcbSS>po3j&n1U>h_{vF5>}zu-bi$ga9WF>Kh0lExn}TQg^PTGq>|d6g$fh5 zFF$ZjR(8u;Z{R19+6<3Fq8&jXl&d6qwxF$~RMc$Gl|S9@t~|*W<|N&=d8v|+z?)>B zYQ-8?)#qyaDOdSj8ebksDEIZurL8L3>GHhk$R9m^%kQCgV%kO62QTr+%B;>kqHUQ` zM$6TppWg5--yUw(u`BWc^UiU{vJ%l(!=qjh>6`K!j8iNLLpbs*tMz>Rr6G)P2DMbr`py{({tGA?9@3AtBmJ1=reUZIUekVSI9D)JhWeUc=g?l zFM*&gQ+ZtLei9XV=^B{*6a@Z<_`M!7vpc?|VBYx6wcHz*M4bCN6s~c0Tzo}w_vvw6 z1&_TR!!O|FLPd?pGr^H`3?ny|aF+mJs&(#1Tn;Uy4#np!Gn_;4$}41PkpiuA8v*PanPJOA|o7~ zyMK%Fjy6{8P4+lQI|$EUH|~NzcLmy73A$9svzs4=#Za&`d4x2u>`z}EGc2pNa-nzK z951&V%@C^S9us>xc`qVP%6Dk)8kzBxIuXyCo?Qp2>vx!0ec1s0kf5a_X-sfvOmIx5 zt3`(Dfy2f6r~4$Y&aTaKTs{vB)h5ropwXoB+k`tHiK;*r8YCO|i}5Z01)ad0J}s*s z-!GYdziOIuZ4yLUOsChT_=e<-&pk2oLRF@YO-O_PriHSLa)!nT3r*cS9CQJ835jO(nD$9V9LFT1zkS2D z)@!nR(mwn^vnaqBlUP!}ci1y2t$2Sgbcwv1)5~JFYvE%fDCmJCXK6#+fnV|AF>nCe zzCl?_AckoZ>|OWw$DExUH>EDUOpCLoi6LMi7Na0imWP1tFv2;&kA5BlIamvoKQyk7 zC%M~K*DdZQcg__dYlBe~;fmG~12j2J4XdZQC>TvnToRavn+l29JBp#9DPnf(E(k9C zTc{xq)TBX6&a*U}>i=e-12+!WP6@c~bns#Qv#0Dg02r~~;d z0aSXf@{Rb?Qv&YB+AX;6E;N{`?yUDCAvE(QFpD=XL&p08G`7XAU2Lqv9U7Km28J0> z8BRD`cjnw~1UuVWmk64O7^n;vxR~vXD+|VeZGQf&wHcB1yMMtdxTbWyr%0ORp*p*$ z*U+m=&xF33KEan5aVuQc9kuvWZVrpphpHY5KDN+rQ2i%3`jmgGxC%jFS6Mba;7&

S;R7n{Or+j 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 RB`FsG46YmLmFwC(|9=m;nVJ9q diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20.png index fd50e251346534b70c7b91a209740e968acccece..2509bd64083d3b7207d595273dfc480da4ac79aa 100644 GIT binary patch delta 900 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 b>VkE!^Zow?6&de(!2&=>!%)3M)jIS)({wB1 diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@3x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon20@3x.png index eeaaec499cb2c923c218bc1016b1fa0fcb7e60d9..9145e708295c665638a82e2059be3eb9900b3db9 100644 GIT binary patch delta 2265 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 diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon60@2x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon60@2x.png index 6f82d20fae3adcee152d7e51019c448b661eba01..863ded6c5506b3e187471b21e63d77d425f0faf3 100644 GIT binary patch delta 3559 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 delta 3045 zcmbW(`9IT-1HkbWMKLNla#N8cK1vB8<)&O+Zl&DhoLcrqF-Pt*S#z_GVrIkKjJf6> z7Bib$Zi->}e*T8<%i%*TuLvggQdaF;>Q(pPQHc6d6 zg=C9pLJGkHUN`N8RtN>KlVLd8$BKzJ6}RnDx|}O+xmVtMkwCOBzwVUYb2&*#>sWS_#(Q`rcdlw8p{~_gH^^kRVRZ3?( zh7z1NP&=Nxutfvf=xE0JXc;+qXMdZyf5=$f392>DuA`Q9%#18`Fb{T8i9U;)dkvE% zRlg7wgUfIbiR7N&Q;XSOz>np)T&xwf-dJGi*IwbwMVoY*vzQZaEj8&x{3sWI3b3Q9$2~3+9x2kd@gLwo2tuIGYtgLo$KM+=gcDqb->o<4-vXa zxjuvL!7b)k<})^&d)i&$s!(?4(`S?cXD;Ql!u*MH*GlL#Xl}?v8S@!88ltp zpe22@=*uB!t_hb@=ky}5l85%j2B{wh2x>%);2J8JTieP)JI7Z1h@r|WCJlKL6_eaG zC-raw@<;ZX;&qVu%M<1re}=0N_w``OaLMa89`VE{0S;gtysVAYnd;AegAejAA>*{) zcSRW)&*xqyD(mIdOMZ2CdU+1u73&g;@_SwXlndJNZZPbNd5IoY8;6#(W)o`{3UwFN zx1#!j13+xLDn#=Gl}#c`IjM7(poLkdDX20O3aTP}g|8W%7Z6RVFQJI06F)Ro%mkkT zLJsua&G&>)Q4TpJVZh)7ojZlr)u^Mw% z*a=B^W$5|c3x1YhZHGx8jWa=^pEw2CdJ4r7oTppOs&9EvLO2%M7Ai8$CO68JeiTAx zcB3@I_ueo>c`W6A6q~)P$Wf%n%`JF+HJL-lo%FQar_}AfgPnwT6`WrFMbRi(Qdl{r zrvJM9ao%4fTT{!D3dm<7lHtobO0ep6%o5?Fxe(ltU9laWk$#k6D)=_GPu}+dv$T*I zQdn#y6K?BpByPozqpfv!RNi!B8i%Lpm? zPcuVb7^4vq4-5o1OP9E7nhLKlwoHZY-r&hi#PVPMMw8}P$R5Y?bk{_W{~SbIDl)4x zzHHEvM*NmTinTzsMDI3Iz$*D!+@$`@H#~E*PyXHku)#7nY|_w%&G+6bX_V@i@C#_7 z_fL}k9f@FHY4R3G{b%k(51b{CZW?RYJXa?P8GGvR``yk`^fN~e2|mKK^w>``Q_i?G z?XrwwtR8hQCp| zGy={6q<^!{!75IL+gZBy4T`f){N|AoRR_2-_jEs?19qhb?8pY3&q)YgVsybh-2>M_ zsT?++C`Xtodp}rR&%Y7#w^=&p)Gj+an)#cC*M>gX8~RjvTulcJgxgA;x2@s*yla;O z_F-dq6^lgCxkjO3KcFWRLDDA#t=HKwMGZh{d9WATmYTv94Ll5c+BhHT_vQhbgV7an zMH@ZnQ7chgExsJ~cI-SX{#KB1Sa1HpsjXtT;DG0}Vj>fv75*}Iu?1%@?pRsQ*D9xX zu3k1>oXQ;bR4NDQFsE7f)x+)#sQ;`iCxy`;T1<0=jfw1lyfOv#Im-67WzmNTwm_6( z$jwZz(3oO2hbb)%((3KaLf#7=J6xGBpI#3f+m4xlDOKxTc>Xm_y*KB}brfM_*@=>$ z#V+c$#@P}dk*c^T;s*q=O&pOEND3x3+d#7@iWfibp-#>y@1(X$O5f7Iw(#$3s|55x zznM3#U`^n1FX9+H_u?_wn|5?H6;OZsM84slawg%D`@ZcN{^vn`Vv*pf#O(8lLZ)z= z6g`GdszZ9NdMaaI%vsjqtSQ=0YKgG&)g#I+@aC^B!Gf&}mCPeab@{{>#q>VB2`qdy zJnT%-l5PQU<)urF@Gt}qo-Mw3n6jdTMi@#(&#YwBjl*#FMf>uy#AVF+0PYo~OG0G6 z$KX!PC=BkkDsnxgq!ag(j~i{OWVG%Jf!;-u_XO`CiWSH*-MW3M7(45jq4m|s->y&u zjuNmoW|5sMC}`U3hTleAqz+G1?$00ctErBhL1}W|v-OGAw<$wCX^O%N8>QZH!F$Z$ z$6wwgOB@^YS>Nn1_QwM+Lv)7Q<2$r;mJSksz~!;e>4hQQ90(43Y5iWGca>x^mYTKA zfZKj|Pmm~&o6@1OnM|K|sE;lxOcp@ir=CDs65SPV*FWC=C9O5-T_FRLtUuSZxzigU z;okiwrJWr;g-@H=tn?8W0N(W`AT{6rW1mt-PhoC!AB;ga=|Jr&x3RU#CB^)kFOHEh zKgqm5SDo?;1Y`~DXS${!gj#w2p)ml|x5+~PfyinFq@}a7`xWUD4!{OS#U`Fxr#=O`Nmz&!SfmsK>t7NU=fDPZ3&l2vU z;IpK&D6d>}P0DF%WB=vDZ_3JQH=8s>M5cOJ!X;k0V)oA_!p(3BVNWOW9B>N$;-zH~ zlkPU%WmWA5zoB*yycAta*3&NH8b0S^#^Rm3ayLBme?te2Ldw%|;C%`A_g^2Yl=H@) dvX@|K*_0Rk4bl~m{BK%7hPsa*mFYN!{|_yJY83zg diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon60@3x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/icon60@3x.png index 415d9417e5a27b563373a52666500dd2d424b326..bc99dc23c340593f07c9d7f4e41382f247ff0fbf 100644 GIT binary patch delta 4848 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 delta 1256 zcmVwB76S`IN+KeX-nNm&=>T zcK-hUUzN&dvNc_l$>;C)gty;%%5%6y$KLSN z;_$rPr_12+-R$dDmS#P9a|^7!uX_w04I zMUT4Qq|4}rx8AMNkBY!yy4|H*lE{t0V`Z1hd8X3n^MB#{{rc|n`N-Yxh`ZsCzT(l~ z@7wD2uhWv1#BKZh{)xh3WU(@VzgUUDU!lu?gSg;Uj>gX7@|MMK@AUe<)auyj^_ItS z*67A}tJs~yl(v9r$_`%?=zS-}B zx8RY(X@A}9(3QL1wbkwS`u%pR*V^mNg}z#GpU;QCU52#Vhr?pd-|y}9=xCnLfV@+m z!s3~~;HlD$e7a9yuq~a)=XknIz}xRri^R#=?7-FPz1yW#jm3n$SdqqU$>H&~*qwB# z*TdnlX`j*d`u(TRhoQpZ)aCM8tt4xr(t*5H%75j%sm0=5t|*qb+fs_de!Eeq#Nn;h zlvk`Gnaq21pw7?by`9T@_4xa0pwW1{PP5D8hq2kK)sm{q=kxaa^ZDX;} zj=A3J^yGlA+3fQ9?DP5P@c4MbmU#dG019+cPE!E?|Nr0r|M|s6>b$sv0005cNkl4;%xncl{;aqFQBTo=dW5V% zp@xBnzc17=!d|L|s*{$%WmjmFrbk%8eIlHvqhojyCd+eZbz4yyQZQ6cTz>cgH&oW{ z=KhuaIY_cSYn+{*IY4FYpPbn^!vslo+GdxhFJ3`qpSxY!I#&Wo)@IXb7x&jtS$``x zTidCXNU}{!j^1{E3A6WrscEx4l5Caw2D5vPFgI_Rteu;RB%5NUXM6(YX2vPnDk|Y& za7h{UWMjQ`@X)YRlvhhstbj=>iHS)nIUvG0BT7n2s&)Q)6Gr}dz2(x9(ta^Wu@Dj~ zuiK()wBrclo>kK|OEe<`xshWqv|(6nrlsZiD~#v%na}DhOW;R|Uq+reYqy=cdY|#~ z#a-sJ>$qWQ1D>v&&R)ConDOrQ3%hS2(iL)=eB{J<>!A&Dn#7-;@#h7+`3L}~*nHsE SF3k@B0000|NT^p#M|cb{r>;_ z{r>;||Nj2}+voE9{rvv_{{8;^mBnpMhQW`r*v;MUM}ogegTP*t$^QTU`~Cip!e(Z& zHG8ky{{H=x#B7eiWKxR5{r>%dwcdKJ+F_T>W0=f^xZsw?Z-0iqTZq42YqUB1{`=$b z+5i9kywT`dkjL=$`+Tw7ki%zYo6caC%XzKYcCXx4kH?e5Yhakoc)3c9!D4N-J#Mr; zb+|=ovp9yi;mF~%bGAZsw?lQR*L}NBbEwy4vNL0x&vK^Kh`Zunt}1Z1KwFW>Vz4d! z{{DNi-G8&)>woe1guPdi!)e#$@`ASCr_Y9RsMlYW%JKN^!QAk}*z9hn)|tn1sL_hr z?apVN&uymFgSX&h&DEo5^>0vE5vf z$dSWmRF21Fp3%(U@R!DMe6`<>!DC#lC(`G_Ual#&*qmdrGK#R*SF9nBwcE?(yZrwD zyWOQ?u`p4n7`xh|$lLC+)9kFv=1+;kU$88i%z9L+9sK_Na;n*aw%)wg?cVG5o5JIL zvfTat`+x8B`hK$AmB8cQ@6@2j=B~=+U6#w%>Br&g^?tG2d#BTq#B0>(#Co#bWSPxU zjmCGP(38e(s>R~O;ICJb$%(*T-Rt)9`24TS=3GR>g-l?tD zlyS8`=JMUB!{Ld#;9#20g1F%7^ZI6>(o>Db)Z_4OoXy1D@2b_2kjHG{>-4J5>7>nq z&E&h|?)HklUe@c$xzFd_?a+n1SGCugXqwEd(d>V=;Iz-^JbS!Ps1ke{86l>-61xnwyw`cZ^f+1U97 z8H5DbSrJ;95KLBNrU1|zoa`J($~3FmUw^Z+SLWVER?5N73G@>SOd&Trdy?%_sW)%g z+27Z?C5P`~XBUAfWI<90G|sl!yq;HjGCTX!4{ohXgOS=CVSF4F+DvoF%5PmXpnPou+Nv5mynQOql09kB>OghF=;WC z_3VofCbF?Ng~%I9M4n`4MOdv_qkm#d}~oCbv^M4>GEB^6cG9SO@& z6|%Bd#_e}-aH<9x4pGR(-tMTXlCVV`J#~p5igR)(Z$eUd*{rNAD;gBrsCHi{cXhh+ zom~{Ju(PzFp!6It8rf0pE@^aiZJdT=Vy1m@v3(*Ig)S8pF4K@qoN(3A(SPndrqyR% z3JY(3L{ivinPrxeis_l7+4=dVQ{W0`vtP5bvNE%b0R|L`&4H%J^YXHv!``1nYvPbOI->AQRH&PU8vKM)%Sy-rL z04;~w&I+_xK|xVbL4Ps32!A53dDt`CEUeYUt zb_JOGr_i-UvhKe8C4ASJqJCc3aEw)y}7DcspF UkxxAZ00000NkvXXt^-0~g51xtT>t<8 delta 1541 zcmV+g2KxEF4Z94GNPiCL000i@0S+@l8~^|V08mU+MMrQ<|NsBisyb;T9L?UpU{A`-eQ={U6RRHkH%h< z%5|#OWU(@Wx8Gv0Ft^U%gx!_-~ zDrcR~YoXDu(~*$FXNSLCXR7#A~C?g7EeFlfmSEwBGgk{CvGqQ;fu7ur5`N#+SL=`~CUe z>GRX*!<@-@;D7JdhOgLaq0-Uj!0GbgcdOWnz+r5o(}KNLbfeLJyHI(q+Ha)OZKBe7 zt=WmcUwOMvx7we4vfTRo{%)nzcdgls!D90G@A>@wj>TxS*O_s)Kz+MV*XZ>5{P)7# z@80dvu8$g}UKht|?os zC9~7)yxOC?+M-;pD4WfFZ=%uV?)LHa`sDB0>GAlw)$HT!_1Ejmu*>Fxs??UnZ{P3L zs>R}{$mE*7;EJ}~fxJ}6;j_Nf>b2ONoyFzm@c6vkrFpE_mAT!S$#${Um!ZvpwAq}` z-|wEn;(xr??PHnEhPK|t;ILq?ETPHgbD+tksjo-tVc z&*#D5?Dn_P>d)o9+U?J;(d*ge@wCtA$=&a}(dfn6?c3}2)#$}_qtMIS?NN!t-tE%8 z-hZjH)a_QQAe6P*%;vq9%Xqrnq?*ioTC61XZa;+p000VfQchC<|NsBAUbE*z@J(s4 zw*UYFu1Q2eR5;6HU|`^2;}l@V0|Yo(I2eF{m7R~DhY1hh;pby#1)9e$!^=nj@XD}r zFtG3uR0mYa$Hu_P&qxH|=VTDzK@quK{D0{iBjd-1g*Q-yc?1}knUMHbiXK#OH!?E* zsCjZL_Y{%@6Em_xrJ}2Ls&JpLv5t;$MILh4WiO4C zmyg`gfue9(ioU+SP9SP@Y>`iniAnB6R=90`Y)D9~wil|xv>g(`!4kV%kQC+{>+0&J ztVfUGjk6^rB;=nXDGW3>H$OSI41Zl=`D9ZA1A})+3fD{t3$xs;hLO4!C7GHgy+BeJ zA7N=3k%5`IPJ~89g;paeoUWLar8o~$;Y6+I=m2DevuqR_%63OiNQ!v*jt0LZ#!GR#uq@a?k>Nj(@C)iL8GC zaumiJSy)(DZADeM(`1RPtVj<^To-S*HZrn~^Fda(aFd~kh+%juYBF0O2LzQiXW_P| zP1`SSXlN+D2Q598rc3JS>7BN|`K%NeO1zHOFN=tZi;Ii;JECU=zjM-(Kp}d@yq)+ r<>-YJ(ZwFo1u4-*Gtq@TvDF6vHZ!}LHmyCy00000NkvXXu0mjfVK;yi diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall40@2x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall40@2x.png index 93e1942fff545ea3d5af8fa50819ee9e7dffc9ca..bad568f6b07314f97f80ef194f38af5d5169cd16 100644 GIT binary patch delta 2641 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 delta 2320 zcmV+r3Gep)6u%OXNPiCL000i@0S+@l8~^|V08mU+MMrQ+I5kiuwsuG){nW_!9$cDP6W|Nmx|$!np}UzN)G{P%XM*N(wtgS}UT zzFKIqHiErYZGW{sfV@r zsMdL{*;b9ka;DXYzg}{-LUp%AyV2-Uio^T;`f;Vye7aADzFUjHVRo$8b*a{OxJj(W z;%%eTZlu#}qSE^O{(ierhreB1t|!OY?2WM3UXjP4zJK0OiNb53(f$7X+3EH6`tpCf zQ*pLIRE)&-`TT&i-uU|c@b>!Q?e^jC*3Ra>%iQjj%5==;z2oflg00rv>Gap=^yBc^ zj&nXC@T}5}l)2o|=)&vt<-_2x@Am1(;Xg9a)#dY{%zp6q?CkUTr_YD^{Qb4qoUPQ6s?Dq2a`_Sa`oX6+y^!mEj?xD_tvCZeE#^Zgj z+UoP;p3Hpr`TVKUjFQN3Z?-^JtRjrM;NI%=z<<^1iLu$H%jl50-`niYhPK|$ZMSQhlk^aiGt?+3s?o(1o+xY@E$|rO{fgB!|FV z&))BMyG+aFx>c(n$lC4X?DeF=;FrAL`1<^Dq|?CPt%Jc`r^@Hx>-2S`(vQ92oV(q# z)PL=m!Q!^j>VLmikj8AW)s~6FV}8F@g|*$?pq9n}000qmQchC3yWLp-hX@6*6!BMr%CR;OHOYQ@AD7vB+vJGj@-TX z-Y+bcjJBGVrml{G%5-!!wbZm(s1fR;AfYf$^OMgud zO7UeT=$iuRsj;*m{!2DPa`=!IOH-J{Wh%%`5^Az^h4F00#0zy;It_UlXvuS=?5jH)yh2(+&pEnl5xC4V!A=mUL!0JoIDO| zdpEtHsL2LDIBo*gq_>K=LCM}XdN$xZ+?+mobowME>FL|W)WLP7*qoEwu79fX-LhBu z@16fm+Qc}-r3|)JV{%uk3U;qUSCjs}^B0|!dd?FrQ3VH-&lelFsw@Hapc3--jh^m| zntr;DJSb?IVS}1+yu|PAbFH!PbkB5D&(Dpd!2+WhD368~{3|x|bc7Oa6upAcXRz@AH zf8ZVoi$3a$8}!>15C{tz6i^4b718dn=nG=pV7psT04(@Aoqflj5z(-v5BhO~TSJ0_ zfD$^v!lgjOu{zvf%adRr;2S!@o$e99l}y~=mcZK^tb`U{=8A zKu{~qAmEN4YzbTjY=5A4$Ul4rMB*Rvz!Pu8MmoW5A0n>ce<-^0w*PIgJid#{RJ z%mA08g!hyJpOat0PKK9~2hUDLdS+I=ghA1Xuux!5FzMx&_p7N3V0tc%_(oqI8a4-T z=o}#K)#Xk!MYz>T!VI)ot{{w6HeotvnTdw^`S^gPr7HTU271jm~@Q_*utB;9@a zb=l2D&G!Bg=YO+)Wq9BAW0Y;Nn0&*zWtrV_TQz^f4mixhObcya^Rq`t3uSnvqN~imEELIa4H=UV?Zzpsihhx zof+zgKvMpfcxx4a4;2u;*9V9{xnVHxsB}Z-`14ahH5I={}fh4md(@|>74|Q4kBN-e!>oYeP&p`*{(&9*FM)xC! qAzudQzsJaz3;K$$D;WIx<9|y1slOv9CJF!m00{s|MNUMnLSTZ8Y!Qh7 diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall40@3x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall40@3x.png index 6f82d20fae3adcee152d7e51019c448b661eba01..863ded6c5506b3e187471b21e63d77d425f0faf3 100644 GIT binary patch delta 3559 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 delta 3045 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 diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@2x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@2x.png index 79e675428f8a73f0c2233e27064ed419c93fca2d..a72a7e8951e3095ad47e79a0177c3f3139130e38 100644 GIT binary patch delta 2175 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 Hu0mjf=dmMp diff --git a/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@3x.png b/resources/images/iOS/appIcons/Images.xcassets/AppIcon.appiconset/iconSmall@3x.png index 8e66b90951b27ffc74334c8fdffd84f555146219..72ea975498936bafe309c9dcefae3263f26fa5a7 100644 GIT binary patch delta 2813 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 P00000NkvXXu0mjf_hu+c delta 2448 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 O00{s|MNUMnLSTZ35LlQ1 diff --git a/resources/images/iOS/appIcons/beta/Images.xcassets/AppIcon.appiconset/icon1024.png b/resources/images/iOS/appIcons/beta/Images.xcassets/AppIcon.appiconset/icon1024.png index 86a7efdeb4a68a6756ce7fb8d06edb40bb4c8738..683b4c237a7f85f539f53bbcbfc47b3a6efa82e3 100644 GIT binary patch literal 42717 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 Kqc4W|C;tbO=$d-~ literal 374256 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