From ca01f5a38fe1ff29fa167d962b28359b755a95af Mon Sep 17 00:00:00 2001 From: CaCO3 Date: Sun, 29 Sep 2024 23:22:33 +0200 Subject: [PATCH] Prepare next release (#3267) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create dig-cont_0640_s3_q.tflite * Update edit_reference.html (#2924) Zoom-Einstellungen ausblenden, wenn zoom deaktiviert ist * Update edit_config_template.html (#2925) Zoom-Einstellungen ausblenden, wenn zoom deaktiviert ist + Kameraeinstellungen nicht nur in der config.ini speichern, sondern auch setzen * The parameter "negative" is processed on the MCU * Renamed menu entry Alignment -> References * renamed model file to make naming consistent * Fix test (#2933) * always reset change absolute (#2956) * Create dig-class11_1701_s2.tflite * Update tflite * Update tflite * Camera settings (#3029) * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Fix minor typo and harmonize spaces (#3030) * Update edit_digits.html * Update edit_analog.html * Update overview.html * Update edit_reference.html --------- Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> * Source code formatting, ClassFlowPostProcessing.cpp * fix edit_config_template.html Unfortunately, I didn't take out some entries from other experiments because I overlooked/forgot them^^ * fix readconfigparam.js Unfortunately, I didn't take out some entries from other experiments because I overlooked/forgot them^^ * fix edit_config_template.html TakeImage_CamZoomMode_value1 was replaced by TakeImage_CamZoomSize_value1, but not deleted. This caused problems when saving the camera settings. * Update info.html function loadWLANSSID() was present three times * Update overview.html CamFrameSize is no longer needed/used for zoom * Update reply-bot.yaml * homeassistant service discovery: derive node_id when using nested topics (#3088) * derive correct node_id for homeassistant service discovery in nested topics (fixes #1792) * explicit use of std::string * move nodeId creation to separate function add unit-tests * add documentation about node_id generation for Home Assistant MQTT Service Discovery * add Prometheus/OpenMetrics exporter (#3081) * add prometheus endpoint * refine metrics implementation * move metrics generator to ClassFlowControll * add more metrics align prefix * add more metrics clean up * refine documentation * revert dependencies change * sanitize labels * create separate module for openmetrics * move openmetrics to separate folder * clean up * add basic unit-tests * work with const numbers add replaceAll for string replacement avoid opening std namespace adapt unit-tests * Update code/main/server_main.cpp --------- Co-authored-by: CaCO3 * Typo * update platformIO to 6.7.0 (ESP IDF 5.2.1) (#3098) * update to platformio/espressif32 @ 6.7.0 * remove unused getReadout() as it throws errors (error: 'virtual std::string ClassFlow::getReadout()' was hidden). --------- Co-authored-by: CaCO3 * Update reply-bot.yaml (#3107) * Fix actions-label-commenter * Update Helper.cpp * Update Helper.h * Update Helper.cpp * Update readconfigparam.js fix for: In the selected field the value '1' in the section 'TakeImage' in the field 'CamGainceiling' is invalid. PLEASE CHECK BEFORE SAVING! * proposal for renaming and documentation (#3115) * Update server_camera.cpp Fix building with -D DEBUG_DETAIL_ON better alternative to: https://github.com/jomjol/AI-on-the-edge-device/pull/3160 * Update ClassFlowPostProcessing.cpp * Update ClassFlowAlignment.cpp * Fix building with `-D DEBUG_DETAIL_ON` (#3160) Building with `-D DEBUG_DETAIL_ON` has been broken since #3029. Co-authored-by: CaCO3 * Handle empty prevalue.ini gracefully (#3162) Fixes #2149. * Bugfix for boot loop (#3175) * Add files via upload * Add files via upload * Add files via upload * Delete param-docs/parameter-pages/TakeImage/Aec2.md has been replaced by CamAec2.md * Delete param-docs/parameter-pages/TakeImage/AutoExposureLevel.md has been replaced by CamAeLevel.md * Delete param-docs/parameter-pages/TakeImage/Brightness.md has been replaced by CamBrightness.md * Delete param-docs/parameter-pages/TakeImage/Contrast.md has been replaced by CamContrast.md * Delete param-docs/parameter-pages/TakeImage/Grayscale.md has been replaced by CamSpecialEffect.md * Delete param-docs/parameter-pages/TakeImage/Negative.md has been replaced by CamSpecialEffect.md * Delete param-docs/parameter-pages/TakeImage/Saturation.md has been replaced by CamSaturation.md * Delete param-docs/parameter-pages/TakeImage/Sharpness.md has been replaced by CamSharpness.md * Delete param-docs/parameter-pages/TakeImage/ImageQuality.md has been replaced by CamQuality.md * Delete param-docs/parameter-pages/TakeImage/Zoom.md has been replaced by CamZoom.md * Delete param-docs/parameter-pages/TakeImage/ZoomMode.md has been replaced by CamZoomSize.md * Delete param-docs/parameter-pages/TakeImage/ZoomOffsetX.md has been replaced by CamZoomOffsetX.md * Delete param-docs/parameter-pages/TakeImage/ZoomOffsetY.md has been replaced by CamZoomOffsetY.md * Delete param-docs/parameter-pages/TakeImage/ImageSize.md has been replaced by CamZoomSize.md * Delete param-docs/parameter-pages/TakeImage/FixedExposure.md has been replaced by CamAec.md * Delete param-docs/parameter-pages/Alignment/FlipImageSize.md has been replaced by CamVflip.md * Delete param-docs/parameter-pages/Alignment/InitialMirror.md has been replaced by CamHmirror.md * CamParameter documentation update https://github.com/jomjol/AI-on-the-edge-device/issues/3185 * typo * add Webhook #3148 (#3163) * WIP add Webhook * fix config html for webhook add tooltips for webhook * webhook: fix not enabling webhook * send webhook as json * Update ApiKey.md * webhook: fix only sending last "Number" * webhook JSON is now closer to the data log in CSV format * webhook: drop timeStampTimeUTC and switch from timeStamp to lastvalue like lokal csv to fix no timestamp on error --------- Co-authored-by: CaCO3 * Bugfix for time stamp (#3180) * Update ClassFlowPostProcessing.cpp * Update ClassFlowDefineTypes.h * Update ClassFlowPostProcessing.cpp * Update ClassFlowPostProcessing.cpp * Update ClassFlowPostProcessing.cpp * Update ClassFlowPostProcessing.cpp * Update interface_webhook.cpp * Update readconfigcommon.js fix for: The same message("Image Contrast got enhanced") came up with "Update Marker" and "Enhance Image Contrast". * fix svg favicon The svg one got added in https://github.com/jomjol/AI-on-the-edge-device/commit/33893eb566382ee228dfb791781b3a497c7c5e07 but does not work on Firefox * Update platformIO to 6.8.1 (Contains ESP IDF 5.3) (#3196) * Update platformIO to 6.8.1 (ESP IDF 5.3) * removed now redundant typedef * updated IDF manifest hash * Add files via upload so it should work now * Update server_main.cpp --------- Co-authored-by: CaCO3 Co-authored-by: michael * Update MainFlowControl.cpp * Add support for OV5640 camera (#3063) * Add support for OV5640 camera * clean up sharpness handling * limit sharpness range to -2 and +2 * refactor * Fix OV3660 sharpness handling * refactor sharpness handling * fix OV3660 zoom mode * reinstate aspect ratio via imageSize * Changed OV5640 full frame size to match datasheet * various fixes * add denoise config and general clean up * fix line endings to LF * Support enabling red blue swap via web interface * update jpeg quality limits * remove color swap config; color swap workaround dependent on vflip * fix missing commit * fix gain ceiling * Update cam vflip param page * fix typo: camdenoise, not camsdenoise * fix compile errors * Update MainFlowControl.cpp * Add rate threshold parameter (#3195) * still needs to be tested https://github.com/jomjol/AI-on-the-edge-device/issues/3143 * Update ClassFlowPostProcessing.cpp code formatting * Update ClassFlowDefineTypes.h code formatting * Update ClassFlowPostProcessing.h code formatting * Update edit_config_template.html * fix * Update config.ini * Update edit_config_template.html * Updated param doc * Rename parameters * Update edit_config_template.html * Update NUMBER.ChangeRateThreshold.md * Update NUMBER.ChangeRateThreshold.md --------- Co-authored-by: CaCO3 * Update main.cpp * Update config.ini Adjusted camera settings to make the image brighter. * Update readconfigparam.js Adjusted camera settings to make the image brighter. * add optional ImageUpload for Webhook (#3174) * WIP add Webhook * fix config html for webhook add tooltips for webhook * webhook: fix not enabling webhook * send webhook as json * Update ApiKey.md * webhook: fix only sending last "Number" * webhook JSON is now closer to the data log in CSV format * webhook: add img upload * webhoop added config for imgupload * webhook html fixes * webhook: drop timeStampTimeUTC and switch from timeStamp to lastvalue like lokal csv to fix no timestamp on error * add checkbox for Webhook_UploadImg * Update sd-card/html/edit_config_template.html * Update edit_config_template.html * Update edit_config_template.html * Update edit_config_template.html * added a long timestamp to both webhook requests --------- Co-authored-by: CaCO3 * Add files via upload (#3207) * Update ClassFlowPostProcessing.cpp deleted some unnecessary double entries RateType renamed to MaxRateType * Update ClassFlowDefineTypes.h RateType renamed to MaxRateType * Update text on recognition page * Update digital CNN * add a Delay between the WiFi reconnections (#3068) * add a Delay between the WiFi reconnections * log the delay between the WiFi reconnections move the delay after the log * cleanup * cleanup * cleanup * Update edit_alignment.html * cleanup * cleanup * Update platformIO to 6.9.0 (Contains ESP IDF 5.3.1) * Handle crash on corrupted model (#3220) * Upgrade esp-tflite-micro to 1.3.1 * Added log message to hint in case it crashes on loading a corrupted model --------- Co-authored-by: CaCO3 * new dig-class100-173-s2-q on 23.800 images (#3257) * new dig-class100-173-s2-q on 23.800 images * platformio/espressif32 @ 6.8.1 for esp32cam-dev * Revert "platformio/espressif32 @ 6.8.1 for esp32cam-dev" This reverts commit cc9297d483a0cdc5048e1738735693bb80a23a04. * not using platformio 6.1.16 * Revert "not using platformio 6.1.16" This reverts commit ef18e4fae7f6a73013080110fa1c21f4cc2b06ec. * moved number edit box styles into new file edit_style.css (#3262) changed input[type=number] from 60px to 3em, to show 3 digits with current font size. * added note about only TLS 1.2 is supported (#3213) * Renamed digital to digit (#3219) * renamed Digital to Digit * added param migration * Update .github/label-commenter-config.yaml * renamed AnalogDigitTransition* to AnalogToDigitTransition* --------- Co-authored-by: CaCO3 * Update Changelog.md * Update Changelog.md --------- Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> Co-authored-by: michael Co-authored-by: Frank Haverland Co-authored-by: kub3let <95883234+kub3let@users.noreply.github.com> Co-authored-by: Marco H Co-authored-by: Henry Thasler Co-authored-by: CaCO3 Co-authored-by: Sebastian Lövdahl Co-authored-by: Raphael Hehl Co-authored-by: jasaw Co-authored-by: Francesco Carnielli Co-authored-by: kalwados --- .github/label-commenter-config.yaml | 4 +- .github/workflows/build.yaml | 27 +- .../workflows/manual-update-webinstaller.yaml | 7 +- .github/workflows/reply-bot.yaml | 9 +- Changelog.md | 79 +- code/components/esp-tflite-micro | 2 +- .../ClassControllCamera.cpp | 1305 +++++----- .../ClassControllCamera.h | 151 +- .../jomjol_controlcamera/ov2640_sharpness.cpp | 88 +- .../jomjol_controlcamera/server_camera.cpp | 291 +-- .../jomjol_controlcamera/server_camera.h | 1 - .../jomjol_fileserver_ota/miniz/readme2.md | 4 +- .../jomjol_flowcontroll/CMakeLists.txt | 2 +- .../jomjol_flowcontroll/ClassFlow.cpp | 5 - .../jomjol_flowcontroll/ClassFlow.h | 1 - .../ClassFlowAlignment.cpp | 767 +++--- .../jomjol_flowcontroll/ClassFlowAlignment.h | 105 +- .../ClassFlowCNNGeneral.cpp | 118 +- .../jomjol_flowcontroll/ClassFlowCNNGeneral.h | 21 +- .../jomjol_flowcontroll/ClassFlowControll.cpp | 385 +-- .../jomjol_flowcontroll/ClassFlowControll.h | 10 +- .../ClassFlowDefineTypes.h | 84 +- .../jomjol_flowcontroll/ClassFlowMQTT.cpp | 2 +- .../ClassFlowPostProcessing.cpp | 956 +++---- .../ClassFlowPostProcessing.h | 9 +- .../ClassFlowTakeImage.cpp | 600 +++-- .../jomjol_flowcontroll/ClassFlowTakeImage.h | 40 +- .../jomjol_flowcontroll/ClassFlowWebhook.cpp | 171 ++ .../jomjol_flowcontroll/ClassFlowWebhook.h | 43 + .../jomjol_flowcontroll/MainFlowControl.cpp | 1868 +++++++++----- .../jomjol_flowcontroll/MainFlowControl.h | 73 +- code/components/jomjol_helper/Helper.cpp | 1101 ++++---- code/components/jomjol_helper/Helper.h | 13 +- code/components/jomjol_helper/psram.cpp | 10 +- code/components/jomjol_helper/psram.h | 2 +- code/components/jomjol_helper/sdcard_init.c | 21 +- .../jomjol_image_proc/CRotateImage.cpp | 662 +++-- .../jomjol_image_proc/CRotateImage.h | 55 +- .../jomjol_logfile/ClassLogFile.cpp | 4 +- code/components/jomjol_logfile/ClassLogFile.h | 4 +- code/components/jomjol_mqtt/server_mqtt.cpp | 24 +- code/components/jomjol_mqtt/server_mqtt.h | 1 + .../jomjol_tfliteclass/CTfLiteClass.cpp | 1 + code/components/jomjol_webhook/CMakeLists.txt | 7 + .../jomjol_webhook/interface_webhook.cpp | 170 ++ .../jomjol_webhook/interface_webhook.h | 17 + code/components/jomjol_wlan/connect_wlan.cpp | 3 +- code/components/openmetrics/CMakeLists.txt | 7 + code/components/openmetrics/openmetrics.cpp | 43 + code/components/openmetrics/openmetrics.h | 15 + code/dependencies.lock | 17 +- code/include/defines.h | 245 +- code/main/main.cpp | 75 +- code/main/server_main.cpp | 6 +- code/platformio.ini | 21 +- code/sdkconfig.defaults | 3 +- .../test_PointerEvalAnalogToDigitNew.cpp | 4 +- .../test_cnnflowcontroll.cpp | 24 +- .../test_flow_postrocess_helper.cpp | 8 +- .../test_flow_postrocess_helper.h | 8 +- .../test_flow_pp_negative.cpp | 16 +- .../test_flowpostprocessing.cpp | 94 +- .../test_getReadoutRawString.cpp | 2 +- .../jomjol_mqtt/test_server_mqtt.cpp | 22 + .../openmetrics/test_openmetrics.cpp | 65 + code/test/test_suite_flowcontroll.cpp | 11 +- param-docs/expert-params.txt | 30 +- .../Alignment/FlipImageSize.md | 11 - .../Alignment/InitialMirror.md | 10 - param-docs/parameter-pages/MQTT/CACert.md | 3 + param-docs/parameter-pages/MQTT/ClientCert.md | 3 + param-docs/parameter-pages/MQTT/ClientKey.md | 3 + param-docs/parameter-pages/MQTT/MainTopic.md | 4 +- ...d => NUMBER.AnalogDigitTransitionStart.md} | 4 +- .../NUMBER.ChangeRateThreshold.md | 25 + param-docs/parameter-pages/TakeImage/Aec2.md | 13 - .../parameter-pages/TakeImage/Brightness.md | 10 - .../parameter-pages/TakeImage/CamAeLevel.md | 22 + .../parameter-pages/TakeImage/CamAec.md | 19 + .../parameter-pages/TakeImage/CamAec2.md | 22 + .../parameter-pages/TakeImage/CamAecValue.md | 21 + .../parameter-pages/TakeImage/CamAgc.md | 16 + .../parameter-pages/TakeImage/CamAgcGain.md | 21 + .../TakeImage/CamAutoSharpness.md | 22 + .../parameter-pages/TakeImage/CamAwb.md | 16 + .../parameter-pages/TakeImage/CamAwbGain.md | 15 + .../parameter-pages/TakeImage/CamBpc.md | 15 + .../TakeImage/CamBrightness.md | 16 + .../parameter-pages/TakeImage/CamColorbar.md | 13 + .../{AutoExposureLevel.md => CamContrast.md} | 19 +- .../parameter-pages/TakeImage/CamDcw.md | 21 + .../parameter-pages/TakeImage/CamDenoise.md | 15 + .../TakeImage/CamGainceiling.md | 33 + .../parameter-pages/TakeImage/CamHmirror.md | 16 + .../parameter-pages/TakeImage/CamLenc.md | 18 + .../parameter-pages/TakeImage/CamQuality.md | 22 + .../parameter-pages/TakeImage/CamRawGma.md | 21 + .../TakeImage/CamSaturation.md | 19 + .../parameter-pages/TakeImage/CamSharpness.md | 26 + .../TakeImage/CamSpecialEffect.md | 26 + .../parameter-pages/TakeImage/CamVflip.md | 19 + .../parameter-pages/TakeImage/CamWbMode.md | 25 + .../parameter-pages/TakeImage/CamWpc.md | 16 + .../parameter-pages/TakeImage/CamZoom.md | 21 + .../TakeImage/CamZoomOffsetX.md | 25 + .../TakeImage/CamZoomOffsetY.md | 25 + .../parameter-pages/TakeImage/CamZoomSize.md | 23 + .../parameter-pages/TakeImage/Contrast.md | 11 - param-docs/parameter-pages/TakeImage/Demo.md | 11 +- .../TakeImage/FixedExposure.md | 13 - .../parameter-pages/TakeImage/Grayscale.md | 13 - .../parameter-pages/TakeImage/ImageQuality.md | 10 - .../parameter-pages/TakeImage/ImageSize.md | 12 - .../parameter-pages/TakeImage/LEDIntensity.md | 9 +- .../parameter-pages/TakeImage/Negative.md | 13 - .../TakeImage/RawImagesLocation.md | 3 +- .../TakeImage/RawImagesRetention.md | 5 +- .../parameter-pages/TakeImage/Saturation.md | 11 - .../parameter-pages/TakeImage/Sharpness.md | 15 - .../TakeImage/WaitBeforeTakingPicture.md | 7 +- param-docs/parameter-pages/TakeImage/Zoom.md | 13 - .../parameter-pages/TakeImage/ZoomMode.md | 15 - .../parameter-pages/TakeImage/ZoomOffsetX.md | 14 - .../parameter-pages/TakeImage/ZoomOffsetY.md | 14 - param-docs/parameter-pages/Webhook/ApiKey.md | 4 + .../parameter-pages/Webhook/UploadImg.md | 8 + param-docs/parameter-pages/Webhook/Uri.md | 4 + .../img/ChangeRateThreshold.png | Bin 0 -> 39338 bytes sd-card/config/ana-cont_1300_s2.tflite | Bin 0 -> 183756 bytes sd-card/config/config.ini | 266 +- sd-card/config/dig-class100-0168_s2_q.tflite | Bin 226968 -> 0 bytes sd-card/config/dig-class100-0173-s2-q.tflite | Bin 0 -> 226968 bytes sd-card/config/dig-class11_1701_s2.tflite | Bin 0 -> 356488 bytes sd-card/config/dig-cont_0640_s3_q.tflite | Bin 0 -> 315504 bytes sd-card/config/dig-cont_0700_s3_q.tflite | Bin 0 -> 315504 bytes sd-card/config/dig-cont_0710_s3_q.tflite | Bin 0 -> 323392 bytes sd-card/html/edit_alignment.html | 955 +++---- sd-card/html/edit_analog.html | 127 +- sd-card/html/edit_config_raw.html | 17 +- sd-card/html/edit_config_template.html | 2250 +++++++++++------ sd-card/html/edit_digits.html | 172 +- sd-card/html/edit_reference.html | 1511 +++++++---- sd-card/html/edit_style.css | 70 + sd-card/html/file_server.html | 12 +- sd-card/html/img/ChangeRateThreshold.png | Bin 0 -> 39338 bytes sd-card/html/index.html | 65 +- sd-card/html/info.html | 26 - sd-card/html/overview.html | 411 +-- sd-card/html/readconfigcommon.js | 345 +-- sd-card/html/readconfigparam.js | 1780 +++++++------ sd-card/html/setup.html | 2 +- 151 files changed, 11377 insertions(+), 7570 deletions(-) create mode 100644 code/components/jomjol_flowcontroll/ClassFlowWebhook.cpp create mode 100644 code/components/jomjol_flowcontroll/ClassFlowWebhook.h create mode 100644 code/components/jomjol_webhook/CMakeLists.txt create mode 100644 code/components/jomjol_webhook/interface_webhook.cpp create mode 100644 code/components/jomjol_webhook/interface_webhook.h create mode 100644 code/components/openmetrics/CMakeLists.txt create mode 100644 code/components/openmetrics/openmetrics.cpp create mode 100644 code/components/openmetrics/openmetrics.h create mode 100644 code/test/components/jomjol_mqtt/test_server_mqtt.cpp create mode 100644 code/test/components/openmetrics/test_openmetrics.cpp delete mode 100644 param-docs/parameter-pages/Alignment/FlipImageSize.md delete mode 100644 param-docs/parameter-pages/Alignment/InitialMirror.md rename param-docs/parameter-pages/PostProcessing/{NUMBER.AnalogDigitalTransitionStart.md => NUMBER.AnalogDigitTransitionStart.md} (70%) create mode 100644 param-docs/parameter-pages/PostProcessing/NUMBER.ChangeRateThreshold.md delete mode 100644 param-docs/parameter-pages/TakeImage/Aec2.md delete mode 100644 param-docs/parameter-pages/TakeImage/Brightness.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAeLevel.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAec.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAec2.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAecValue.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAgc.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAgcGain.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAutoSharpness.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAwb.md create mode 100644 param-docs/parameter-pages/TakeImage/CamAwbGain.md create mode 100644 param-docs/parameter-pages/TakeImage/CamBpc.md create mode 100644 param-docs/parameter-pages/TakeImage/CamBrightness.md create mode 100644 param-docs/parameter-pages/TakeImage/CamColorbar.md rename param-docs/parameter-pages/TakeImage/{AutoExposureLevel.md => CamContrast.md} (52%) create mode 100644 param-docs/parameter-pages/TakeImage/CamDcw.md create mode 100644 param-docs/parameter-pages/TakeImage/CamDenoise.md create mode 100644 param-docs/parameter-pages/TakeImage/CamGainceiling.md create mode 100644 param-docs/parameter-pages/TakeImage/CamHmirror.md create mode 100644 param-docs/parameter-pages/TakeImage/CamLenc.md create mode 100644 param-docs/parameter-pages/TakeImage/CamQuality.md create mode 100644 param-docs/parameter-pages/TakeImage/CamRawGma.md create mode 100644 param-docs/parameter-pages/TakeImage/CamSaturation.md create mode 100644 param-docs/parameter-pages/TakeImage/CamSharpness.md create mode 100644 param-docs/parameter-pages/TakeImage/CamSpecialEffect.md create mode 100644 param-docs/parameter-pages/TakeImage/CamVflip.md create mode 100644 param-docs/parameter-pages/TakeImage/CamWbMode.md create mode 100644 param-docs/parameter-pages/TakeImage/CamWpc.md create mode 100644 param-docs/parameter-pages/TakeImage/CamZoom.md create mode 100644 param-docs/parameter-pages/TakeImage/CamZoomOffsetX.md create mode 100644 param-docs/parameter-pages/TakeImage/CamZoomOffsetY.md create mode 100644 param-docs/parameter-pages/TakeImage/CamZoomSize.md delete mode 100644 param-docs/parameter-pages/TakeImage/Contrast.md delete mode 100644 param-docs/parameter-pages/TakeImage/FixedExposure.md delete mode 100644 param-docs/parameter-pages/TakeImage/Grayscale.md delete mode 100644 param-docs/parameter-pages/TakeImage/ImageQuality.md delete mode 100644 param-docs/parameter-pages/TakeImage/ImageSize.md delete mode 100644 param-docs/parameter-pages/TakeImage/Negative.md delete mode 100644 param-docs/parameter-pages/TakeImage/Saturation.md delete mode 100644 param-docs/parameter-pages/TakeImage/Sharpness.md delete mode 100644 param-docs/parameter-pages/TakeImage/Zoom.md delete mode 100644 param-docs/parameter-pages/TakeImage/ZoomMode.md delete mode 100644 param-docs/parameter-pages/TakeImage/ZoomOffsetX.md delete mode 100644 param-docs/parameter-pages/TakeImage/ZoomOffsetY.md create mode 100644 param-docs/parameter-pages/Webhook/ApiKey.md create mode 100644 param-docs/parameter-pages/Webhook/UploadImg.md create mode 100644 param-docs/parameter-pages/Webhook/Uri.md create mode 100644 param-docs/parameter-pages/img/ChangeRateThreshold.png create mode 100644 sd-card/config/ana-cont_1300_s2.tflite delete mode 100644 sd-card/config/dig-class100-0168_s2_q.tflite create mode 100644 sd-card/config/dig-class100-0173-s2-q.tflite create mode 100644 sd-card/config/dig-class11_1701_s2.tflite create mode 100644 sd-card/config/dig-cont_0640_s3_q.tflite create mode 100644 sd-card/config/dig-cont_0700_s3_q.tflite create mode 100644 sd-card/config/dig-cont_0710_s3_q.tflite create mode 100644 sd-card/html/edit_style.css create mode 100644 sd-card/html/img/ChangeRateThreshold.png diff --git a/.github/label-commenter-config.yaml b/.github/label-commenter-config.yaml index e2d08f5ad..e8bb86d69 100644 --- a/.github/label-commenter-config.yaml +++ b/.github/label-commenter-config.yaml @@ -115,9 +115,9 @@ labeled: issue: body: | - See [Digital Digits](https://jomjol.github.io/neural-network-digital-counter-readout) resp. [Analogue Pointers](https://jomjol.github.io/neural-network-analog-needle-readout) for an overview of all trained data. + See [Digits](https://jomjol.github.io/neural-network-digital-counter-readout) resp. [Analogue Pointers](https://jomjol.github.io/neural-network-analog-needle-readout) for an overview of all trained data. If your type is not contained it can be added to our training material, see [here](https://jomjol.github.io/AI-on-the-edge-device-docs/collect-new-images/). discussion: body: | - See [Digital Digits](https://jomjol.github.io/neural-network-digital-counter-readout) resp. [Analogue Pointers](https://jomjol.github.io/neural-network-analog-needle-readout) for an overview of all trained data. + See [Digits](https://jomjol.github.io/neural-network-digital-counter-readout) resp. [Analogue Pointers](https://jomjol.github.io/neural-network-analog-needle-readout) for an overview of all trained data. If your type is not contained it can be added to our training material, see [here](https://jomjol.github.io/AI-on-the-edge-device-docs/collect-new-images/). diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 00f39750f..5192cdef2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,7 +14,7 @@ jobs: uses: fkirc/skip-duplicate-actions@v5 with: concurrent_skipping: same_content_newer - + - uses: actions/checkout@v4 with: submodules: recursive @@ -37,14 +37,14 @@ jobs: path: ~/.platformio key: platformio-${{ github.run_id }} restore-keys: platformio # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Update Build cache on every commit uses: actions/cache@v4 with: path: ./code/.pio/ key: build-${{ github.run_id }} restore-keys: build # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Update generated-files cache on every commit uses: actions/cache@v4 with: @@ -86,7 +86,7 @@ jobs: echo "Replacing variables..." cd html; find . -type f -exec sed -i 's/$COMMIT_HASH/${{ steps.vars.outputs.sha_short }}/g' {} \; - + ######################################################################################### ## Pack for Update @@ -120,7 +120,7 @@ jobs: path: update key: update-${{ github.run_id }} restore-keys: update # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Set Variables id: vars run: | @@ -150,7 +150,6 @@ jobs: path: ./update/* - ######################################################################################### ## Pack for Remote Setup ######################################################################################### @@ -176,7 +175,7 @@ jobs: ./html/* key: generated-files-${{ github.run_id }} restore-keys: generated-files # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Update remote_setup cache on every commit uses: actions/cache@v4 with: @@ -261,7 +260,7 @@ jobs: cp -r ./html ./sd-card/ # Overwrite the Web UI with the preprocessed files cd sd-card; zip -r ../manual_setup/sd-card.zip *; cd .. cd ./manual_setup - + - name: Upload manual_setup.zip artifact (Firmware + Bootloader + Partitions + Web UI) uses: actions/upload-artifact@v4 with: @@ -285,21 +284,21 @@ jobs: steps: - uses: actions/checkout@v4 - + - name: Update update cache on every commit uses: actions/cache@v4 with: path: update key: update-${{ github.run_id }} restore-keys: update # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Update remote_setup cache on every commit uses: actions/cache@v4 with: path: remote_setup key: remote_setup-${{ github.run_id }} restore-keys: remote_setup # This matches above key as it is only used as a prefix. it the restores the nearest cache, see https://github.com/restore-keys:/blob/main/tips-and-workarounds.md#update-a-cache - + - name: Update manual_setup cache on every commit uses: actions/cache@v4 with: @@ -342,7 +341,7 @@ jobs: # with: # changelogPath: Changelog.md # version: ${{ steps.get_version.outputs.version-without-v }} - + # # the release notes will be extracted from changelog # - name: Extract release notes # id: extract-release-notes @@ -397,7 +396,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - + - name: Get version of last release id: last_release uses: mindojo/get-latest-release@0b8ef1434d7468d6bffcc8263baff5c777f72321 @@ -405,7 +404,7 @@ jobs: myToken: ${{ github.token }} exclude_types: "draft|prerelease" view_top: 1 - + - name: Add binary to Web Installer and update manifest run: | echo "Updating Web installer to use firmware from ${{ steps.last_release.outputs.tag_name }}..." diff --git a/.github/workflows/manual-update-webinstaller.yaml b/.github/workflows/manual-update-webinstaller.yaml index c421c9513..2dde67515 100644 --- a/.github/workflows/manual-update-webinstaller.yaml +++ b/.github/workflows/manual-update-webinstaller.yaml @@ -12,7 +12,7 @@ on: # - rolling # paths: # - docs # The path filter somehow does not work, so lets run it on every change to rolling - + jobs: manually-update-web-installer: environment: @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - + - name: Get version of last release id: last_release uses: mindojo/get-latest-release@0b8ef1434d7468d6bffcc8263baff5c777f72321 @@ -37,7 +37,7 @@ jobs: myToken: ${{ github.token }} exclude_types: "draft|prerelease" view_top: 1 - + - name: Add binary to Web Installer and update manifest run: | echo "Updating Web installer to use firmware from ${{ steps.last_release.outputs.tag_name }}..." @@ -60,4 +60,3 @@ jobs: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v1 - diff --git a/.github/workflows/reply-bot.yaml b/.github/workflows/reply-bot.yaml index 7c7bb9c5d..692191ef6 100644 --- a/.github/workflows/reply-bot.yaml +++ b/.github/workflows/reply-bot.yaml @@ -20,9 +20,8 @@ jobs: comment: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 - - + - uses: actions/checkout@v4 + #################################################################### ## Remove labels again (issues only) ## Make sure to also add the reply message to .github/label-commenter-config.yaml! @@ -69,12 +68,12 @@ jobs: # with: # actions: 'remove-labels' # labels: 'bot-reply Show Trained Digits/Pointers' - + #################################################################### ## Write the response #################################################################### - name: Write Response - uses: peaceiris/actions-label-commenter@v1 + uses: peaceiris/actions-label-commenter@c2d00660c86f2b9ed0fb35b372c451558eba85b3 with: github_token: "${{ secrets.GITHUB_TOKEN }}" config_file: .github/label-commenter-config.yaml diff --git a/Changelog.md b/Changelog.md index a42dabb04..3fbb4c640 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,32 @@ +## [16.0.0-RC1] - 2024-09-24 + +For a full list of changes see [Full list of changes](https://github.com/jomjol/AI-on-the-edge-device/compare/v15.7.0...v16.0.0-RC1) + +#### Known issues +Please check the [issues](https://github.com/jomjol/AI-on-the-edge-device/issues) and +[discussions](https://github.com/jomjol/AI-on-the-edge-device/discussions) before reporting a new issue. + +#### Core Changes +Those are just the major changes: +- Add support for OV5640 camera (#3063) +- New tflite-Models +- Homeassistant service discovery: derive node_id when using nested topics (#3088) +- Added Prometheus/OpenMetrics exporter (#3081) +- Added Webhook (#3148, #3163, #3174) +- Add rate threshold parameter (#3195) +- Added a Delay between the WiFi reconnections (#3068) +- Web UI improvements +- Various minor changes +- Update platformIO to 6.9.0 (Contains ESP IDF 5.3.1) + +#### Bug Fixes +Those are just the major changes: +- Handle crash on corrupted model (#3220) +- Bugfix for boot loop (#3175) +- Bugfix for time stamp (#3180) +- Handle empty prevalue.ini gracefully (#3162) +- Added note about only TLS 1.2 is supported (#3213) + ## [15.7.0] - 2024-02-17 For a full list of changes see [Full list of changes](https://github.com/jomjol/AI-on-the-edge-device/compare/v15.6.0...v15.7.0) @@ -10,7 +39,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/ - Add Firmware Version to MQTT #### Bug Fixes -- Reverted "Implemented late analog / digital transition [#2778](https://github.com/jomjol/AI-on-the-edge-device/pull/2778) (introduced in `v15.5`) as is seems to cause issues for many users. +- Reverted "Implemented late analog / digit transition [#2778](https://github.com/jomjol/AI-on-the-edge-device/pull/2778) (introduced in `v15.5`) as is seems to cause issues for many users. ## [15.6.0] - 2024-02-09 @@ -29,7 +58,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/ - Update PlattformIO to v6.5.0, which means esp-idf to v5.1 - Enhance busy notification - - Implemented late analog / digital transition + - Implemented late analog / digit transition #### Fixed @@ -189,7 +218,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/ :bangbang: **Attention:** Update your configuration! - Hybrid CNN network to `dig-cont_0611_s3` - Analog CNN network to `ana-cont-11.0.5` and `ana-clas100-1.5.7` - - Digital CNN network to `dig-class100-1.6.0` + - Digit CNN network to `dig-class100-1.6.0` - Various Web interface Improvements/Enhancements: - Restructured Menu (Needs cache clearing to be applied) - Enhanced `Previous Value` page @@ -325,7 +354,7 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/ - Improved OTA Update mechanism (only working after installation for next update) - Added data logging in `/log/data` - One day per file and each measurement is on one line - Format: csv - comma separated - - Content: `time`, `name-of-number`, `raw-value`, `return-value`, `pre-value`, `change-rate`, `change-absolute`, `error-text`, `cnn-digital`, `cnn-analog` + - Content: `time`, `name-of-number`, `raw-value`, `return-value`, `pre-value`, `change-rate`, `change-absolute`, `error-text`, `cnn-digit`, `cnn-analog` - Show graph of values direct in the user interface (thanks to [@rdmueller](https://github.com/rdmueller)) - Using new data logging (see above) @@ -343,10 +372,10 @@ For a full list of changes see [Full list of changes](https://github.com/jomjol/ - Updated OTA functionality (more robust, but not fully bullet prove yet) - Updated Espressif library to `espressif32@v5.2.0` - [#1176](https://github.com/jomjol/AI-on-the-edge-device/discussions/1176) accept minor negative values (-0.2) if extended resolution is enabled -- [#1143](https://github.com/jomjol/AI-on-the-edge-device/issues/1143) added config parameter `AnalogDigitalTransitionStart`. It can setup very early and very late digit transition starts. +- [#1143](https://github.com/jomjol/AI-on-the-edge-device/issues/1143) added config parameter `AnalogDigTransitionStart`. It can setup very early and very late digit transition starts. - New version of `dig-class100` (v1.4.0): added images of heliowatt powermeter - NEW v13.0.2: Update Tool "Logfile downloader and combiner" to handle the new csv file format. -- NEW v13.0.2: MQTT: Added MQTT topic `status` (Digitalization Status), Timezone to MQTT topic `timestamp`.# +- NEW v13.0.2: MQTT: Added MQTT topic `status` (Digitization Status), Timezone to MQTT topic `timestamp`.# - NEW v13.0.2: Logging: Disable heap logs by default, cleanup - NEW v13.0.7: - log NTP server name @@ -471,7 +500,7 @@ Intermediate Digits - Updated analog neural network file (`ana-cont_11.3.0_s2.tflite` - default, `ana-class100_0120_s1_q.tflite`) -- Updated digital neural network file (`dig-cont_0570_s3.tflite` - default, `dig-class100_0120_s2_q.tflite`) +- Updated digit neural network file (`dig-cont_0570_s3.tflite` - default, `dig-class100_0120_s2_q.tflite`) - Added automated filtering of tflite-file in the graphical configuration (thanks to @**[caco3](https://github.com/caco3)**) @@ -483,8 +512,8 @@ Intermediate Digits Intermediate Digits -- New and improved consistency check (especially with analog and digital counters mixed) -- Bug Fix: digital counter algorithm +- New and improved consistency check (especially with analog and digit counters mixed) +- Bug Fix: digit counter algorithm ## [11.0.1](https://github.com/jomjol/AI-on-the-edge-device/releases/tag/v11.0.1), 2022-08-18 @@ -524,7 +553,7 @@ Stability Increase - `config.ini`: removal of modelsize (readout from tflite) -- Updated analog neural network file (`ana1000s2.tflite`) & digital neural network file (`dig1400s2q.tflite`) +- Updated analog neural network file (`ana1000s2.tflite`) & digit neural network file (`dig1400s2q.tflite`) - TFMicro/Lite: Update (espressif Version 20220716) @@ -560,7 +589,7 @@ Stability Increase - In the future the new files will also be copied to the `firmware` directory of the repository - Added Wifi RSSI to MQTT information - Updated analog neural network file (`ana-s3-q-20220105.tflite`) -- Updated digital neural network file (`dig-s1-q-20220102.tflite`) +- Updated digit neural network file (`dig-s1-q-20220102.tflite`) - Updated build environment to `Espressif 3.5.0` ## [10.3.0] - (2022-01-29) @@ -626,7 +655,7 @@ Stability Increase - Update analog neural network (ana-s3-q-20220105.tflite) -- Update digital neural network (dig-s1-q-20220102.tflite) +- Update digit neural network (dig-s1-q-20220102.tflite) - Increased web-server buffers @@ -663,7 +692,7 @@ External Illumination - Direct JSON access: `http://IP-ADRESS/json` - Error message in log file in case camera error during startup - Upgrade analog CNN to v9.1.0 -- Upgrade digital CNN to v13.3.0 (added new images) +- Upgrade digit CNN to v13.3.0 (added new images) - html: support of different ports ## [9.1.1] - External Illumination (2021-11-16) @@ -688,7 +717,7 @@ External Illumination ### Changed -- Upgrade digital CNN to v13.1.0 (added new images) +- Upgrade digit CNN to v13.1.0 (added new images) - bug fix: wlan password with space, double digit output ## [8.4.0] - Multi Meter Support (2021-09-25) @@ -718,7 +747,7 @@ External Illumination ### Changed -- Upgrade digital CNN to v12.1.0 (added new images) +- Upgrade digit CNN to v12.1.0 (added new images) - Dedicated NaN handling, internal refactoring (CNN-Handling) - HTML: confirmation after config.ini update - Bug fixing @@ -740,7 +769,7 @@ External Illumination - GPIO: using the general mqtt main topic for GPIO -- Upgrade digital CNN to v12.0.0 (added new images) +- Upgrade digit CNN to v12.0.0 (added new images) - Update tfmicro to new master (2021-08-07) - Bug fix: remove text in mqtt value, remove connect limit in wlan reconnet @@ -776,7 +805,7 @@ External Illumination - Update wlan handling to esp-idf 4.1 -- Upgrade digital CNN to v8.7.0 (added new images) +- Upgrade digit CNN to v8.7.0 (added new images) - Bug fix: MQTT, WLAN, LED-Controll, GPIO usage, fixed IP, calculation flow rate @@ -787,7 +816,7 @@ External Illumination - NEW: 7.0.1: bug fix wlan password with "=" -- Upgrade digital CNN to v8.5.0 (added new images) +- Upgrade digit CNN to v8.5.0 (added new images) - New MQTT topics: flow rate (units/minute), time stamp (last correct read readout) @@ -804,7 +833,7 @@ External Illumination - NEW 6.7.1: Improved stability of camera (back to v6.6.1) - remove black strips and areas -- Upgrade digital CNN to v8.3.0 (added new type of digits) +- Upgrade digit CNN to v8.3.0 (added new type of digits) - Internal update: TFlite (v2.5), esp32cam, startup sequence @@ -825,7 +854,7 @@ External Illumination ### Changed -- Upgrade digital CNN to v8.2.0 (added new type of digits) +- Upgrade digit CNN to v8.2.0 (added new type of digits) - Supporting alignment structures in ROI definition @@ -861,7 +890,7 @@ External Illumination - Determination of fixed illumination settings during startup - speed up of 5s in each run -- Update digital CNN to v8.1.1 (additional digital images trained) +- Update digit CNN to v8.1.1 (additional digit images trained) - Extended error message in MQTT error message @@ -873,7 +902,7 @@ External Illumination ### Changed -- Disabling of analog / digital counters in configuration +- Disabling of analog / digit counters in configuration - Improved Alignment Algorithm (`AlignmentAlgo` = `Default`, `Accurate` , `Fast`) @@ -893,7 +922,7 @@ External Illumination - MQTT: Last Will Testament (LWT) implemented: "connection lost" in case of connection lost to `TopicError` - Disabled `CheckDigitIncreaseConsistency` in default configuration - must now be explicit enabled if needed -- Update digital CNN to v7.2.1 (additional digital images trained) +- Update digit CNN to v7.2.1 (additional digit images trained) - Setting of arbitrary time server in `config.ini` - Option for fixed IP-, DNS-Settings in `wlan.ini` - Increased stability (internal image and camera handling) @@ -927,7 +956,7 @@ External Illumination - standardized access to current logfile via `http://IP-ADRESS/logfileact` -- Update digital CNN to v7.2.0, analog CNN to 6.3.0 +- Update digit CNN to v7.2.0, analog CNN to 6.3.0 - Bug fixing: truncation error, CheckDigitConsistency & PreValue implementation @@ -946,7 +975,7 @@ External Illumination ### Changed -- Update digital CNN to v6.5.0 and HTML (Info to hostname, IP, ssid) +- Update digit CNN to v6.5.0 and HTML (Info to hostname, IP, ssid) - New implementation of "checkDigitConsistency" also for digits diff --git a/code/components/esp-tflite-micro b/code/components/esp-tflite-micro index 13f26b829..0032f1734 160000 --- a/code/components/esp-tflite-micro +++ b/code/components/esp-tflite-micro @@ -1 +1 @@ -Subproject commit 13f26b829405e9323e4212ffa954c261b1e21eeb +Subproject commit 0032f1734e1e7b5fcf1b588cf1abb9ef53fed4c3 diff --git a/code/components/jomjol_controlcamera/ClassControllCamera.cpp b/code/components/jomjol_controlcamera/ClassControllCamera.cpp index 33b00bc8b..bd830ed92 100644 --- a/code/components/jomjol_controlcamera/ClassControllCamera.cpp +++ b/code/components/jomjol_controlcamera/ClassControllCamera.cpp @@ -41,24 +41,34 @@ #include "soc/io_mux_reg.h" #include "esp_rom_gpio.h" #define gpio_pad_select_gpio esp_rom_gpio_pad_select_gpio -#define gpio_matrix_in(a,b,c) esp_rom_gpio_connect_in_signal(a,b,c) -#define gpio_matrix_out(a,b,c,d) esp_rom_gpio_connect_out_signal(a,b,c,d) +#define gpio_matrix_in(a, b, c) esp_rom_gpio_connect_in_signal(a, b, c) +#define gpio_matrix_out(a, b, c, d) esp_rom_gpio_connect_out_signal(a, b, c, d) #define ets_delay_us(a) esp_rom_delay_us(a) #endif -static const char *TAG = "CAM"; +CCamera Camera; +camera_controll_config_temp_t CCstatus; +static const char *TAG = "CAM"; /* Camera live stream */ #define PART_BOUNDARY "123456789000000000000987654321" -static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY; -static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; -static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n"; +static const char *_STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY; +static const char *_STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; +static const char *_STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n"; -// OV2640 Camera SDE Indirect Register Access -#define OV2640_IRA_BPADDR 0x7C -#define OV2640_IRA_BPDATA 0x7D +uint8_t *demoImage = NULL; // Buffer holding the demo image in bytes +#define DEMO_IMAGE_SIZE 30000 // Max size of demo image in bytes +// Camera module bus communications frequency. +// Originally: config.xclk_freq_mhz = 20000000, but this lead to visual artifacts on many modules. +// See https://github.com/espressif/esp32-camera/issues/150#issuecomment-726473652 et al. +#if !defined(XCLK_FREQ_MHZ) +// int xclk = 8; +int xclk = 20; // Orginal value +#else +int xclk = XCLK_FREQ_MHZ; +#endif static camera_config_t camera_config = { .pin_pwdn = CAM_PIN_PWDN, @@ -79,387 +89,540 @@ static camera_config_t camera_config = { .pin_href = CAM_PIN_HREF, .pin_pclk = CAM_PIN_PCLK, - //XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental) - .xclk_freq_hz = 20000000, // Orginal value -// .xclk_freq_hz = 5000000, // Test to get rid of the image errors !!!! Hangs in version 9.2 !!!! - .ledc_timer = LEDC_TIMER_0, - .ledc_channel = LEDC_CHANNEL_0, - - .pixel_format = PIXFORMAT_JPEG, //YUV422,GRAYSCALE,RGB565,JPEG - .frame_size = FRAMESIZE_VGA, //QQVGA-UXGA Do not use sizes above QVGA when not JPEG -// .frame_size = FRAMESIZE_UXGA, //QQVGA-UXGA Do not use sizes above QVGA when not JPEG - .jpeg_quality = 12, //0-63 lower number means higher quality - .fb_count = 1, //if more than one, i2s runs in continuous mode. Use only with JPEG + .xclk_freq_hz = (xclk * 1000000), + .ledc_timer = LEDC_TIMER_0, // LEDC timer to be used for generating XCLK + .ledc_channel = LEDC_CHANNEL_0, // LEDC channel to be used for generating XCLK + + .pixel_format = PIXFORMAT_JPEG, // YUV422,GRAYSCALE,RGB565,JPEG + .frame_size = FRAMESIZE_VGA, // QQVGA-UXGA Do not use sizes above QVGA when not JPEG + // .frame_size = FRAMESIZE_UXGA, //QQVGA-UXGA Do not use sizes above QVGA when not JPEG + .jpeg_quality = 6, // 0-63 lower number means higher quality + .fb_count = 1, // if more than one, i2s runs in continuous mode. Use only with JPEG .fb_location = CAMERA_FB_IN_PSRAM, /*!< The location where the frame buffer will be allocated */ - .grab_mode = CAMERA_GRAB_LATEST, // only from new esp32cam version + .grab_mode = CAMERA_GRAB_LATEST, // only from new esp32cam version }; +typedef struct +{ + httpd_req_t *req; + size_t len; +} jpg_chunking_t; -CCamera Camera; +CCamera::CCamera(void) +{ +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "CreateClassCamera"); +#endif + CCstatus.WaitBeforePicture = 2; -uint8_t *demoImage = NULL; // Buffer holding the demo image in bytes + ledc_init(); +} -#define DEMO_IMAGE_SIZE 30000 // Max size of demo image in bytes +esp_err_t CCamera::InitCam(void) +{ + ESP_LOGD(TAG, "Init Camera"); -typedef struct { - httpd_req_t *req; - size_t len; -} jpg_chunking_t; + CCstatus.ImageQuality = camera_config.jpeg_quality; + CCstatus.ImageFrameSize = camera_config.frame_size; + + // initialize the camera + esp_camera_deinit(); // De-init in case it was already initialized + esp_err_t err = esp_camera_init(&camera_config); + + if (err != ESP_OK) + { + ESP_LOGE(TAG, "Camera Init Failed"); + return err; + } + CCstatus.CameraInitSuccessful = true; -bool CCamera::testCamera(void) { + // Get a reference to the sensor + sensor_t *s = esp_camera_sensor_get(); + + if (s != NULL) + { + CCstatus.CamSensor_id = s->id.PID; + + // Dump camera module, warn for unsupported modules. + switch (CCstatus.CamSensor_id) + { + case OV2640_PID: + ESP_LOGI(TAG, "OV2640 camera module detected"); + break; + case OV3660_PID: + ESP_LOGI(TAG, "OV3660 camera module detected"); + break; + case OV5640_PID: + ESP_LOGI(TAG, "OV5640 camera module detected"); + break; + default: + ESP_LOGE(TAG, "Camera module is unknown and not properly supported!"); + CCstatus.CameraInitSuccessful = false; + } + } + + if (CCstatus.CameraInitSuccessful) + { + return ESP_OK; + } + else + { + return ESP_FAIL; + } +} + +bool CCamera::testCamera(void) +{ bool success; camera_fb_t *fb = esp_camera_fb_get(); - if (fb) { + + if (fb) + { success = true; } - else { + else + { success = false; } - + esp_camera_fb_return(fb); + return success; } - void CCamera::ledc_init(void) { #ifdef USE_PWM_LEDFLASH - // Prepare and then apply the LEDC PWM timer configuration - ledc_timer_config_t ledc_timer = { }; + ledc_timer_config_t ledc_timer = {}; - ledc_timer.speed_mode = LEDC_MODE; - ledc_timer.timer_num = LEDC_TIMER; - ledc_timer.duty_resolution = LEDC_DUTY_RES; - ledc_timer.freq_hz = LEDC_FREQUENCY; // Set output frequency at 5 kHz - ledc_timer.clk_cfg = LEDC_AUTO_CLK; + ledc_timer.speed_mode = LEDC_MODE; + ledc_timer.timer_num = LEDC_TIMER; + ledc_timer.duty_resolution = LEDC_DUTY_RES; + ledc_timer.freq_hz = LEDC_FREQUENCY; // Set output frequency at 5 kHz + ledc_timer.clk_cfg = LEDC_AUTO_CLK; ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer)); // Prepare and then apply the LEDC PWM channel configuration - ledc_channel_config_t ledc_channel = { }; + ledc_channel_config_t ledc_channel = {}; - ledc_channel.speed_mode = LEDC_MODE; - ledc_channel.channel = LEDC_CHANNEL; - ledc_channel.timer_sel = LEDC_TIMER; - ledc_channel.intr_type = LEDC_INTR_DISABLE; - ledc_channel.gpio_num = LEDC_OUTPUT_IO; - ledc_channel.duty = 0; // Set duty to 0% - ledc_channel.hpoint = 0; + ledc_channel.speed_mode = LEDC_MODE; + ledc_channel.channel = LEDC_CHANNEL; + ledc_channel.timer_sel = LEDC_TIMER; + ledc_channel.intr_type = LEDC_INTR_DISABLE; + ledc_channel.gpio_num = LEDC_OUTPUT_IO; + ledc_channel.duty = 0; // Set duty to 0% + ledc_channel.hpoint = 0; + // ledc_channel.flags.output_invert = LEDC_OUTPUT_INVERT; ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel)); - #endif } +void CCamera::SetLEDIntensity(float _intrel) +{ + _intrel = min(_intrel, (float)100); + _intrel = max(_intrel, (float)0); + _intrel = _intrel / 100; + CCstatus.ImageLedIntensity = (int)(_intrel * 8191); + ESP_LOGD(TAG, "Set led_intensity to %d of 8191", CCstatus.ImageLedIntensity); +} -static size_t jpg_encode_stream(void * arg, size_t index, const void* data, size_t len) +bool CCamera::getCameraInitSuccessful(void) { - jpg_chunking_t *j = (jpg_chunking_t *)arg; + return CCstatus.CameraInitSuccessful; +} - if(!index) { - j->len = 0; - } +esp_err_t CCamera::setSensorDatenFromCCstatus(void) +{ + sensor_t *s = esp_camera_sensor_get(); - if(httpd_resp_send_chunk(j->req, (const char *)data, len) != ESP_OK) { - return 0; - } + if (s != NULL) + { + s->set_framesize(s, CCstatus.ImageFrameSize); + s->set_quality(s, CCstatus.ImageQuality); // 0 - 63 - j->len += len; + s->set_brightness(s, CCstatus.ImageBrightness); // -2 to 2 + s->set_contrast(s, CCstatus.ImageContrast); // -2 to 2 + s->set_saturation(s, CCstatus.ImageSaturation); // -2 to 2 + // s->set_sharpness(s, CCstatus.ImageSharpness); // auto-sharpness is not officially supported, default to 0 + SetCamSharpness(CCstatus.ImageAutoSharpness, CCstatus.ImageSharpness); - return len; -} + s->set_denoise(s, CCstatus.ImageDenoiseLevel); // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + s->set_special_effect(s, CCstatus.ImageSpecialEffect); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint, 4 - Green Tint, 5 - Blue Tint, 6 - Sepia) + s->set_wb_mode(s, CCstatus.ImageWbMode); // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) -bool CCamera::SetBrightnessContrastSaturation(int _brightness, int _contrast, int _saturation, int _autoExposureLevel, bool _grayscale, bool _negative, bool _aec2, int _sharpnessLevel) -{ - _brightness = min(2, max(-2, _brightness)); - _contrast = min(2, max(-2, _contrast)); - _saturation = min(2, max(-2, _saturation)); - _autoExposureLevel = min(2, max(-2, _autoExposureLevel)); - bool _autoSharpness = false; - if (_sharpnessLevel <= -4) - _autoSharpness = true; - _sharpnessLevel = min(3, max(-3, _sharpnessLevel)); - - sensor_t * s = esp_camera_sensor_get(); - if (s) { - // camera gives precedence to negative over grayscale, so it's easier to do negative ourselves. - // if (_negative) { - // s->set_special_effect(s, 1); // 0 - no effect, 1 - negative, 2 - grayscale, 3 - reddish, 4 - greenish, 5 - blue, 6 - retro - // } - if (_grayscale) { - s->set_special_effect(s, 2); // 0 - no effect, 1 - negative, 2 - grayscale, 3 - reddish, 4 - greenish, 5 - blue, 6 - retro - } + s->set_ae_level(s, CCstatus.ImageAeLevel); // -2 to 2 + s->set_aec_value(s, CCstatus.ImageAecValue); // 0 to 1200 + s->set_agc_gain(s, CCstatus.ImageAgcGain); // 0 to 30 - // auto exposure controls - s->set_aec2(s, _aec2 ? 1 : 0); - s->set_ae_level(s, _autoExposureLevel); // -2 to 2 - s->set_gainceiling(s, GAINCEILING_2X); // GAINCEILING_2X 4X 8X 16X 32X 64X 128X + // s->set_gainceiling(s, CCstatus.ImageGainceiling); // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) + ov5640_set_gainceiling(s, CCstatus.ImageGainceiling); - // post processing - if (_autoSharpness) { - s->set_sharpness(s, 0); // auto-sharpness is not officially supported, default to 0 - } - s->set_saturation(s, _saturation); - s->set_contrast(s, _contrast); - s->set_brightness(s, _brightness); - - camera_sensor_info_t *sensor_info = esp_camera_sensor_get_info(&(s->id)); - if (sensor_info != NULL) { - if (sensor_info->model == CAMERA_OV2640) { - if (_autoSharpness) { - ov2640_enable_auto_sharpness(s); - } else { - ov2640_set_sharpness(s, _sharpnessLevel); - } + s->set_lenc(s, CCstatus.ImageLenc); // 0 = disable , 1 = enable + s->set_gain_ctrl(s, CCstatus.ImageAgc); // 0 = disable , 1 = enable + s->set_exposure_ctrl(s, CCstatus.ImageAec); // 0 = disable , 1 = enable - /* Workaround - bug in cam library - enable bits are set without using bitwise OR logic -> only latest enable setting is used */ - /* Library version: https://github.com/espressif/esp32-camera/commit/5c8349f4cf169c8a61283e0da9b8cff10994d3f3 */ - /* Reference: https://esp32.com/viewtopic.php?f=19&t=14376#p93178 */ - /* The memory structure is as follows for - byte_0 = enable_bits - byte_0->bit0 = enable saturation and hue --> OK - byte_0->bit1 = enable saturation --> OK - byte_0->bit2 = enable brightness and contrast --> OK - byte_0->bit3 = enable green -> blue spitial effect (Antique and blunish and greenish and readdish and b&w) enable - byte_0->bit4 = anable gray -> read spitial effect (Antique and blunish and greenish and readdish and b&w) enable - byte_0->bit5 = remove (UV) in YUV color system - byte_0->bit6 = enable negative - byte_0->bit7 = remove (Y) in YUV color system - byte_1 = saturation1 0-255 --> ? - byte_2 = hue 0-255 --> OK - byte_3 = saturation2 0-255 --> OK - byte_4 = reenter saturation2 in documents --> ? - byte_5 = spital effect green -> blue 0-255 --> ? - byte_6 = spital effect gray -> read 0-255 --> ? - byte_7 = contrast lower byte 0-255 --> OK - byte_8 = contrast higher byte 0-255 --> OK - byte_9 = brightness 0-255 --> OK - byte_10= if byte_10==4 contrast effective --> ? - */ - - //s->set_reg(s, 0x7C, 0xFF, 2); // Optional feature - hue setting: Select byte 2 in register 0x7C to set hue value - //s->set_reg(s, 0x7D, 0xFF, 0); // Optional feature - hue setting: Hue value 0 - 255 - int indirectReg0 = 0x07; // Set bit 0, 1, 2 to enable saturation, contrast, brightness and hue control - if (_grayscale) { - indirectReg0 |= 0x18; - } - // camera gives precedence to negative over grayscale, so it's easier to do negative ourselves. - // if (_negative) { - // indirectReg0 |= 0x40; - // } - // Indirect register access - s->set_reg(s, 0xFF, 0x01, 0); // Select DSP bank - s->set_reg(s, OV2640_IRA_BPADDR, 0xFF, 0x00); // Address 0x00 - s->set_reg(s, OV2640_IRA_BPDATA, 0xFF, indirectReg0); - s->set_reg(s, OV2640_IRA_BPADDR, 0xFF, 0x05); // Address 0x05 - s->set_reg(s, OV2640_IRA_BPDATA, 0xFF, 0x80); - s->set_reg(s, OV2640_IRA_BPDATA, 0xFF, 0x80); - } - } - } - else { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "SetBrightnessContrastSaturation: Failed to get control structure"); - } + s->set_hmirror(s, CCstatus.ImageHmirror); // 0 = disable , 1 = enable + s->set_vflip(s, CCstatus.ImageVflip); // 0 = disable , 1 = enable + s->set_aec2(s, CCstatus.ImageAec2); // 0 = disable , 1 = enable - if (((_brightness != brightness) || (_contrast != contrast) || (_saturation != saturation)) && isFixedExposure) - EnableAutoExposure(waitbeforepicture_org); + s->set_bpc(s, CCstatus.ImageBpc); // 0 = disable , 1 = enable + s->set_wpc(s, CCstatus.ImageWpc); // 0 = disable , 1 = enable - brightness = _brightness; - contrast = _contrast; - saturation = _saturation; - autoExposureLevel = _autoExposureLevel; - imageGrayscale = _grayscale; - imageNegative = _negative; - imageAec2 = _aec2; - imageAutoSharpness = _autoSharpness; - imageSharpnessLevel = _sharpnessLevel; + s->set_raw_gma(s, CCstatus.ImageRawGma); // 0 = disable , 1 = enable - ESP_LOGD(TAG, "brightness %d, contrast: %d, saturation %d, autoExposureLevel %d, grayscale %d", brightness, contrast, saturation, autoExposureLevel, (int)imageGrayscale); + s->set_awb_gain(s, CCstatus.ImageAwbGain); // 0 = disable , 1 = enable + s->set_whitebal(s, CCstatus.ImageAwb); // 0 = disable , 1 = enable - return true; -} + s->set_dcw(s, CCstatus.ImageDcw); // 0 = disable , 1 = enable + TickType_t xDelay2 = 100 / portTICK_PERIOD_MS; + vTaskDelay(xDelay2); -/* -* resolution = 0 \\ 1600 x 1200 -* resolution = 1 \\ 800 x 600 -* resolution = 2 \\ 400 x 296 -*/ -void CCamera::SetCamWindow(sensor_t *s, int resolution, int xOffset, int yOffset, int xLength, int yLength) -{ - s->set_res_raw(s, resolution, 0, 0, 0, xOffset, yOffset, xLength, yLength, xLength, yLength, false, false); + return ESP_OK; + } + else + { + return ESP_FAIL; + } } - -void CCamera::SetImageWidthHeightFromResolution(framesize_t resol) +esp_err_t CCamera::getSensorDatenToCCstatus(void) { - if (resol == FRAMESIZE_QVGA) + sensor_t *s = esp_camera_sensor_get(); + + if (s != NULL) { - image_height = 240; - image_width = 320; + CCstatus.CamSensor_id = s->id.PID; + + CCstatus.ImageFrameSize = (framesize_t)s->status.framesize; + CCstatus.ImageGainceiling = (gainceiling_t)s->status.gainceiling; + + CCstatus.ImageQuality = s->status.quality; + CCstatus.ImageBrightness = s->status.brightness; + CCstatus.ImageContrast = s->status.contrast; + CCstatus.ImageSaturation = s->status.saturation; + // CCstatus.ImageSharpness = s->status.sharpness; // gibt -1 zurück, da es nicht unterstützt wird + CCstatus.ImageWbMode = s->status.wb_mode; + CCstatus.ImageAwb = s->status.awb; + CCstatus.ImageAwbGain = s->status.awb_gain; + CCstatus.ImageAec = s->status.aec; + CCstatus.ImageAec2 = s->status.aec2; + CCstatus.ImageAeLevel = s->status.ae_level; + CCstatus.ImageAecValue = s->status.aec_value; + CCstatus.ImageAgc = s->status.agc; + CCstatus.ImageAgcGain = s->status.agc_gain; + CCstatus.ImageBpc = s->status.bpc; + CCstatus.ImageWpc = s->status.wpc; + CCstatus.ImageRawGma = s->status.raw_gma; + CCstatus.ImageLenc = s->status.lenc; + CCstatus.ImageSpecialEffect = s->status.special_effect; + CCstatus.ImageHmirror = s->status.hmirror; + CCstatus.ImageVflip = s->status.vflip; + CCstatus.ImageDcw = s->status.dcw; + CCstatus.ImageDenoiseLevel = s->status.denoise; + + return ESP_OK; } - else if (resol == FRAMESIZE_VGA) + else { - image_height = 480; - image_width = 640; + return ESP_FAIL; } - else if (resol == FRAMESIZE_SVGA) +} + +// on the OV5640, gainceiling must be set with the real value (x2>>>level = 2, .... x128>>>level = 128) +int CCamera::ov5640_set_gainceiling(sensor_t *s, gainceiling_t level) +{ + int ret = 0; + + if (CCstatus.CamSensor_id == OV2640_PID) { - image_height = 600; - image_width = 800; + ret = s->set_gainceiling(s, CCstatus.ImageGainceiling); // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) } - else if (resol == FRAMESIZE_XGA) + else { - image_height = 768; - image_width = 1024; + int _level = (1 << ((int)level + 1)); + + ret = s->set_reg(s, 0x3A18, 0xFF, (_level >> 8) & 3) || s->set_reg(s, 0x3A19, 0xFF, _level & 0xFF); + + if (ret == 0) + { + // ESP_LOGD(TAG, "Set gainceiling to: %d", level); + s->status.gainceiling = level; + } } - else if (resol == FRAMESIZE_HD) + + return ret; +} + +// - It always zooms to the image center when offsets are zero +// - if imageSize = 0 then the image is not zoomed +// - if imageSize = max value, then the image is fully zoomed in +// - a zoom step is >>> Width + 32 px / Height + 24 px +void CCamera::SanitizeZoomParams(int imageSize, int frameSizeX, int frameSizeY, int &imageWidth, int &imageHeight, int &zoomOffsetX, int &zoomOffsetY) +{ + // for OV2640, This works only if the aspect ratio of 4:3 is preserved in the window size. + // use only values divisible by 8 without remainder + imageWidth = CCstatus.ImageWidth + (imageSize * 4 * 8); + imageHeight = CCstatus.ImageHeight + (imageSize * 3 * 8); + + int _maxX = frameSizeX - imageWidth; + int _maxY = frameSizeY - imageHeight; + + if ((abs(zoomOffsetX) * 2) > _maxX) { - image_height = 720; - image_width = 1280; + if (zoomOffsetX > 0) + { + zoomOffsetX = _maxX; + } + else + { + zoomOffsetX = 0; + } } - else if (resol == FRAMESIZE_SXGA) + else { - image_height = 1024; - image_width = 1280; + if (zoomOffsetX > 0) + { + zoomOffsetX = ((_maxX / 2) + zoomOffsetX); + } + else + { + zoomOffsetX = ((_maxX / 2) + zoomOffsetX); + } } - else if (resol == FRAMESIZE_UXGA) + + if ((abs(zoomOffsetY) * 2) > _maxY) { - image_height = 1200; - image_width = 1600; + if (zoomOffsetY > 0) + { + zoomOffsetY = _maxY; + } + else + { + zoomOffsetY = 0; + } + } + else + { + if (zoomOffsetY > 0) + { + zoomOffsetY = ((_maxY / 2) + zoomOffsetY); + } + else + { + zoomOffsetY = ((_maxY / 2) + zoomOffsetY); + } } } - -void CCamera::SetZoom(bool zoomEnabled, int zoomMode, int zoomOffsetX, int zoomOffsetY) +void CCamera::SetZoomSize(bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip) { - imageZoomEnabled = zoomEnabled; - imageZoomMode = zoomMode; - imageZoomOffsetX = zoomOffsetX; - imageZoomOffsetY = zoomOffsetY; - sensor_t *s = esp_camera_sensor_get(); - if (s) { - if (imageZoomEnabled) { - int z = imageZoomMode; - int x = imageZoomOffsetX; - int y = imageZoomOffsetY; - if (z > 1) - z = 1; - if (image_width >= 800 || image_height >= 600) { - z = 0; - } - int maxX = 1600 - image_width; - int maxY = 1200 - image_height; - if (z == 1) { - maxX = 800 - image_width; - maxY = 600 - image_height; + + if (s != NULL) + { + if (zoomEnabled) + { + int _imageSize_temp = 0; + int _imageWidth = CCstatus.ImageWidth; + int _imageHeight = CCstatus.ImageHeight; + int _offsetx = zoomOffsetX; + int _offsety = zoomOffsetY; + int frameSizeX; + int frameSizeY; + + switch (CCstatus.CamSensor_id) + { + case OV5640_PID: + frameSizeX = 2592; + frameSizeY = 1944; + // max imageSize = ((frameSizeX - CCstatus.ImageWidth) / 8 / 4) - 1 + // 59 = ((2560 - 640) / 8 / 4) - 1 + if (imageSize < 59) + { + _imageSize_temp = (59 - imageSize); + } + SanitizeZoomParams(_imageSize_temp, frameSizeX, frameSizeY, _imageWidth, _imageHeight, _offsetx, _offsety); + SetCamWindow(s, frameSizeX, frameSizeY, _offsetx, _offsety, _imageWidth, _imageHeight, CCstatus.ImageWidth, CCstatus.ImageHeight, imageVflip); + break; + + case OV3660_PID: + frameSizeX = 2048; + frameSizeY = 1536; + // max imageSize = ((frameSizeX - CCstatus.ImageWidth) / 8 / 4) -1 + // 43 = ((2048 - 640) / 8 / 4) - 1 + if (imageSize < 43) + { + _imageSize_temp = (43 - imageSize); + } + SanitizeZoomParams(_imageSize_temp, frameSizeX, frameSizeY, _imageWidth, _imageHeight, _offsetx, _offsety); + SetCamWindow(s, frameSizeX, frameSizeY, _offsetx, _offsety, _imageWidth, _imageHeight, CCstatus.ImageWidth, CCstatus.ImageHeight, imageVflip); + break; + + case OV2640_PID: + frameSizeX = 1600; + frameSizeY = 1200; + // max imageSize = ((frameSizeX - CCstatus.ImageWidth) / 8 / 4) -1 + // 29 = ((1600 - 640) / 8 / 4) - 1 + if (imageSize < 29) + { + _imageSize_temp = (29 - imageSize); + } + SanitizeZoomParams(_imageSize_temp, frameSizeX, frameSizeY, _imageWidth, _imageHeight, _offsetx, _offsety); + SetCamWindow(s, frameSizeX, frameSizeY, _offsetx, _offsety, _imageWidth, _imageHeight, CCstatus.ImageWidth, CCstatus.ImageHeight, imageVflip); + break; + + default: + // do nothing + break; } - if (x > maxX) - x = maxX; - if (y > maxY) - y = maxY; - SetCamWindow(s, z, x, y, image_width, image_height); - } else { - s->set_framesize(s, ActualResolution); + } + else + { + s->set_framesize(s, CCstatus.ImageFrameSize); } } } - -void CCamera::SetQualitySize(int qual, framesize_t resol, bool zoomEnabled, int zoomMode, int zoomOffsetX, int zoomOffsetY) +void CCamera::SetQualityZoomSize(int qual, framesize_t resol, bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip) { - qual = min(63, max(8, qual)); // Limit quality from 8..63 (values lower than 8 tent to be unstable) - - ActualResolution = resol; - ActualQuality = qual; + sensor_t *s = esp_camera_sensor_get(); - imageZoomEnabled = zoomEnabled; - imageZoomMode = zoomMode; - imageZoomOffsetX = zoomOffsetX; - imageZoomOffsetY = zoomOffsetY; + // OV2640 has no lower limit on jpeg quality + if (CCstatus.CamSensor_id == OV5640_PID) + { + qual = min(63, max(8, qual)); + } SetImageWidthHeightFromResolution(resol); - sensor_t * s = esp_camera_sensor_get(); - if (s) { + if (s != NULL) + { s->set_quality(s, qual); - SetZoom(zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); + SetZoomSize(zoomEnabled, zoomOffsetX, zoomOffsetY, imageSize, imageVflip); } - else { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "SetQualitySize: Failed to get control structure"); + else + { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "SetQualityZoomSize, Failed to get Cam control structure"); } } +void CCamera::SetCamSharpness(bool _autoSharpnessEnabled, int _sharpnessLevel) +{ + sensor_t *s = esp_camera_sensor_get(); + + if (s != NULL) + { + if (CCstatus.CamSensor_id == OV2640_PID) + { + _sharpnessLevel = min(2, max(-2, _sharpnessLevel)); + // The OV2640 does not officially support sharpness, so the detour is made with the ov2640_sharpness.cpp. + if (_autoSharpnessEnabled) + { + ov2640_enable_auto_sharpness(s); + } + else + { + ov2640_set_sharpness(s, _sharpnessLevel); + } + } + else + { + _sharpnessLevel = min(3, max(-3, _sharpnessLevel)); + // for CAMERA_OV5640 and CAMERA_OV3660 + if (_autoSharpnessEnabled) + { + // autoSharpness is not supported, default to zero + s->set_sharpness(s, 0); + } + else + { + s->set_sharpness(s, _sharpnessLevel); + } + } + } + else + { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "SetCamSharpness, Failed to get Cam control structure"); + } +} -void CCamera::EnableAutoExposure(int flash_duration) +void CCamera::SetCamWindow(sensor_t *s, int frameSizeX, int frameSizeY, int xOffset, int yOffset, int xTotal, int yTotal, int xOutput, int yOutput, int imageVflip) { - ESP_LOGD(TAG, "EnableAutoExposure"); - - LEDOnOff(true); - if (flash_duration > 0) { - LightOnOff(true); - const TickType_t xDelay = flash_duration / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); + if (CCstatus.CamSensor_id == OV2640_PID) + { + s->set_res_raw(s, 0, 0, 0, 0, xOffset, yOffset, xTotal, yTotal, xOutput, yOutput, false, false); } + else + { + // for CAMERA_OV5640 and CAMERA_OV3660 + bool scale = !(xOutput == xTotal && yOutput == yTotal); + bool binning = (xTotal >= (frameSizeX >> 1)); - camera_fb_t * fb = esp_camera_fb_get(); - esp_camera_fb_return(fb); - fb = esp_camera_fb_get(); - if (!fb) { - LEDOnOff(false); - LightOnOff(false); - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "EnableAutoExposure: Capture Failed. " - "Check camera module and/or proper electrical connection"); - //doReboot(); + if (imageVflip == true) + { + s->set_res_raw(s, xOffset, yOffset, xOffset + xTotal - 1, yOffset + yTotal - 1, 0, 0, frameSizeX, frameSizeY, xOutput, yOutput, scale, binning); + } + else + { + s->set_res_raw(s, xOffset, yOffset, xOffset + xTotal, yOffset + yTotal, 0, 0, frameSizeX, frameSizeY, xOutput, yOutput, scale, binning); + } } - esp_camera_fb_return(fb); +} + +static size_t jpg_encode_stream(void *arg, size_t index, const void *data, size_t len) +{ + jpg_chunking_t *j = (jpg_chunking_t *)arg; - sensor_t * s = esp_camera_sensor_get(); - if (s) { - s->set_gain_ctrl(s, 0); - s->set_exposure_ctrl(s, 0); + if (!index) + { + j->len = 0; } - else { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "EnableAutoExposure: Failed to get control structure to set gain+exposure"); + + if (httpd_resp_send_chunk(j->req, (const char *)data, len) != ESP_OK) + { + return 0; } - LEDOnOff(false); - LightOnOff(false); - isFixedExposure = true; - waitbeforepicture_org = flash_duration; -} + j->len += len; + return len; +} esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("CaptureToBasisImage - Start"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("CaptureToBasisImage - Start"); +#endif + + _Image->EmptyImage(); // Delete previous stored raw image -> black image - _Image->EmptyImage(); //Delete previous stored raw image -> black image - - LEDOnOff(true); + LEDOnOff(true); // Status-LED on - if (delay > 0) { - LightOnOff(true); + if (delay > 0) + { + LightOnOff(true); // Flash-LED on const TickType_t xDelay = delay / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); + vTaskDelay(xDelay); } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("CaptureToBasisImage - After LightOn"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("CaptureToBasisImage - After LightOn"); +#endif - camera_fb_t * fb = esp_camera_fb_get(); + camera_fb_t *fb = esp_camera_fb_get(); esp_camera_fb_return(fb); fb = esp_camera_fb_get(); - if (!fb) { - LEDOnOff(false); - LightOnOff(false); + + if (!fb) + { + LEDOnOff(false); // Status-LED off + LightOnOff(false); // Flash-LED off LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "is not working anymore (CaptureToBasisImage) - most probably caused " "by a hardware problem (instablility, ...). System will reboot."); @@ -468,540 +631,532 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay) return ESP_FAIL; } - if (demoMode) { // Use images stored on SD-Card instead of camera image + if (CCstatus.DemoMode) + { + // Use images stored on SD-Card instead of camera image /* Replace Framebuffer with image from SD-Card */ loadNextDemoImage(fb); } - CImageBasis* _zwImage = new CImageBasis("zwImage"); - if (_zwImage) { + CImageBasis *_zwImage = new CImageBasis("zwImage"); + + if (_zwImage) + { _zwImage->LoadFromMemory(fb->buf, fb->len); } - else { + else + { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "CaptureToBasisImage: Can't allocate _zwImage"); } - esp_camera_fb_return(fb); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("CaptureToBasisImage - After fb_get"); - #endif + esp_camera_fb_return(fb); - LEDOnOff(false); +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("CaptureToBasisImage - After fb_get"); +#endif - if (delay > 0) - LightOnOff(false); - -// TickType_t xDelay = 1000 / portTICK_PERIOD_MS; -// vTaskDelay( xDelay ); // wait for power to recover - - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("CaptureToBasisImage - After LoadFromMemory"); - #endif + LEDOnOff(false); // Status-LED off - if (_zwImage == NULL) { - return ESP_OK; + if (delay > 0) + { + LightOnOff(false); // Flash-LED off } - if (imageNegative) { - _zwImage->Negative(); + // TickType_t xDelay = 1000 / portTICK_PERIOD_MS; + // vTaskDelay( xDelay ); // wait for power to recover + +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("CaptureToBasisImage - After LoadFromMemory"); +#endif + + if (_zwImage == NULL) + { + return ESP_OK; } - stbi_uc* p_target; - stbi_uc* p_source; + stbi_uc *p_target; + stbi_uc *p_source; int channels = 3; - int width = image_width; - int height = image_height; + int width = CCstatus.ImageWidth; + int height = CCstatus.ImageHeight; - #ifdef DEBUG_DETAIL_ON - std::string _zw = "Targetimage: " + std::to_string((int) _Image->rgb_image) + " Size: " + std::to_string(_Image->width) + ", " + std::to_string(_Image->height); - _zw = _zw + " _zwImage: " + std::to_string((int) _zwImage->rgb_image) + " Size: " + std::to_string(_zwImage->width) + ", " + std::to_string(_zwImage->height); - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, _zw); - #endif +#ifdef DEBUG_DETAIL_ON + std::string _zw = "Targetimage: " + std::to_string((int)_Image->rgb_image) + " Size: " + std::to_string(_Image->width) + ", " + std::to_string(_Image->height); + _zw = _zw + " _zwImage: " + std::to_string((int)_zwImage->rgb_image) + " Size: " + std::to_string(_zwImage->width) + ", " + std::to_string(_zwImage->height); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, _zw); +#endif for (int x = 0; x < width; ++x) + { for (int y = 0; y < height; ++y) { p_target = _Image->rgb_image + (channels * (y * width + x)); p_source = _zwImage->rgb_image + (channels * (y * width + x)); - for (int c = 0; c < channels; c++) { + + for (int c = 0; c < channels; c++) + { p_target[c] = p_source[c]; } } + } delete _zwImage; - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("CaptureToBasisImage - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("CaptureToBasisImage - Done"); +#endif return ESP_OK; } - esp_err_t CCamera::CaptureToFile(std::string nm, int delay) { string ftype; - LEDOnOff(true); // Switched off to save power ! + LEDOnOff(true); // Status-LED on - if (delay > 0) { - LightOnOff(true); + if (delay > 0) + { + LightOnOff(true); // Flash-LED on const TickType_t xDelay = delay / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); + vTaskDelay(xDelay); } - camera_fb_t * fb = esp_camera_fb_get(); + camera_fb_t *fb = esp_camera_fb_get(); esp_camera_fb_return(fb); fb = esp_camera_fb_get(); - if (!fb) { - LEDOnOff(false); - LightOnOff(false); + + if (!fb) + { + LEDOnOff(false); // Status-LED off + LightOnOff(false); // Flash-LED off LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "CaptureToFile: Capture Failed. " "Check camera module and/or proper electrical connection"); - //doReboot(); + // doReboot(); return ESP_FAIL; } - LEDOnOff(false); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "w %d, h %d, size %d", fb->width, fb->height, fb->len); - #endif + LEDOnOff(false); // Status-LED off + +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "w %d, h %d, size %d", fb->width, fb->height, fb->len); +#endif nm = FormatFileName(nm); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Save Camera to: %s", nm.c_str()); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Save Camera to: %s", nm.c_str()); +#endif ftype = toUpper(getFileType(nm)); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Filetype: %s", ftype.c_str()); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Filetype: %s", ftype.c_str()); +#endif - uint8_t * buf = NULL; - size_t buf_len = 0; - bool converted = false; + uint8_t *buf = NULL; + size_t buf_len = 0; + bool converted = false; if (ftype.compare("BMP") == 0) { frame2bmp(fb, &buf, &buf_len); converted = true; } + if (ftype.compare("JPG") == 0) { - if(fb->format != PIXFORMAT_JPEG){ - bool jpeg_converted = frame2jpg(fb, ActualQuality, &buf, &buf_len); + if (fb->format != PIXFORMAT_JPEG) + { + bool jpeg_converted = frame2jpg(fb, CCstatus.ImageQuality, &buf, &buf_len); converted = true; - if(!jpeg_converted){ + + if (!jpeg_converted) + { ESP_LOGE(TAG, "JPEG compression failed"); } - } else { + } + else + { buf_len = fb->len; buf = fb->buf; } } - FILE * fp = fopen(nm.c_str(), "wb"); - if (fp == NULL) { // If an error occurs during the file creation + FILE *fp = fopen(nm.c_str(), "wb"); + + if (fp == NULL) + { + // If an error occurs during the file creation LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "CaptureToFile: Failed to open file " + nm); } - else { - fwrite(buf, sizeof(uint8_t), buf_len, fp); + else + { + fwrite(buf, sizeof(uint8_t), buf_len, fp); fclose(fp); - } + } if (converted) + { free(buf); + } esp_camera_fb_return(fb); - if (delay > 0) - LightOnOff(false); + if (delay > 0) + { + LightOnOff(false); // Flash-LED off + } - return ESP_OK; + return ESP_OK; } - esp_err_t CCamera::CaptureToHTTP(httpd_req_t *req, int delay) { esp_err_t res = ESP_OK; size_t fb_len = 0; int64_t fr_start = esp_timer_get_time(); - LEDOnOff(true); + LEDOnOff(true); // Status-LED on - if (delay > 0) { - LightOnOff(true); + if (delay > 0) + { + LightOnOff(true); // Flash-LED on const TickType_t xDelay = delay / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); + vTaskDelay(xDelay); } camera_fb_t *fb = esp_camera_fb_get(); esp_camera_fb_return(fb); fb = esp_camera_fb_get(); - if (!fb) { - LEDOnOff(false); - LightOnOff(false); + + if (!fb) + { + LEDOnOff(false); // Status-LED off + LightOnOff(false); // Flash-LED off LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "CaptureToFile: Capture Failed. " - "Check camera module and/or proper electrical connection"); + "Check camera module and/or proper electrical connection"); httpd_resp_send_500(req); -// doReboot(); + // doReboot(); return ESP_FAIL; } - LEDOnOff(false); + LEDOnOff(false); // Status-LED off res = httpd_resp_set_type(req, "image/jpeg"); - if(res == ESP_OK){ + + if (res == ESP_OK) + { res = httpd_resp_set_hdr(req, "Content-Disposition", "inline; filename=raw.jpg"); } - if(res == ESP_OK){ - if (demoMode) { // Use images stored on SD-Card instead of camera image + if (res == ESP_OK) + { + if (CCstatus.DemoMode) + { + // Use images stored on SD-Card instead of camera image LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Using Demo image!"); /* Replace Framebuffer with image from SD-Card */ loadNextDemoImage(fb); res = httpd_resp_send(req, (const char *)fb->buf, fb->len); } - else { - if(fb->format == PIXFORMAT_JPEG){ + else + { + if (fb->format == PIXFORMAT_JPEG) + { fb_len = fb->len; res = httpd_resp_send(req, (const char *)fb->buf, fb->len); - } else { + } + else + { jpg_chunking_t jchunk = {req, 0}; - res = frame2jpg_cb(fb, 80, jpg_encode_stream, &jchunk)?ESP_OK:ESP_FAIL; + res = frame2jpg_cb(fb, 80, jpg_encode_stream, &jchunk) ? ESP_OK : ESP_FAIL; httpd_resp_send_chunk(req, NULL, 0); fb_len = jchunk.len; } } } + esp_camera_fb_return(fb); int64_t fr_end = esp_timer_get_time(); - - ESP_LOGI(TAG, "JPG: %dKB %dms", (int)(fb_len/1024), (int)((fr_end - fr_start)/1000)); - if (delay > 0) - LightOnOff(false); + ESP_LOGI(TAG, "JPG: %dKB %dms", (int)(fb_len / 1024), (int)((fr_end - fr_start) / 1000)); + + if (delay > 0) + { + LightOnOff(false); // Flash-LED off + } return res; } - esp_err_t CCamera::CaptureToStream(httpd_req_t *req, bool FlashlightOn) { esp_err_t res = ESP_OK; size_t fb_len = 0; int64_t fr_start; - char * part_buf[64]; + char *part_buf[64]; + + // wenn die Kameraeinstellungen durch Erstellen eines neuen Referenzbildes verändert wurden, müssen sie neu gesetzt werden + if (CFstatus.changedCameraSettings) + { + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); + CFstatus.changedCameraSettings = false; + } LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Live stream started"); - if (FlashlightOn) { - LEDOnOff(true); - LightOnOff(true); + if (FlashlightOn) + { + LEDOnOff(true); // Status-LED on + LightOnOff(true); // Flash-LED on } - //httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); //stream is blocking web interface, only serving to local + // httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); //stream is blocking web interface, only serving to local httpd_resp_set_type(req, _STREAM_CONTENT_TYPE); httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY)); - while(1) + while (1) { fr_start = esp_timer_get_time(); camera_fb_t *fb = esp_camera_fb_get(); esp_camera_fb_return(fb); fb = esp_camera_fb_get(); - if (!fb) { + + if (!fb) + { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "CaptureToStream: Camera framebuffer not available"); break; } + fb_len = fb->len; - - if (res == ESP_OK){ + + if (res == ESP_OK) + { size_t hlen = snprintf((char *)part_buf, sizeof(part_buf), _STREAM_PART, fb_len); res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen); } - if (res == ESP_OK){ + + if (res == ESP_OK) + { res = httpd_resp_send_chunk(req, (const char *)fb->buf, fb_len); } - if (res == ESP_OK){ + + if (res == ESP_OK) + { res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY)); } - + esp_camera_fb_return(fb); int64_t fr_end = esp_timer_get_time(); - ESP_LOGD(TAG, "JPG: %dKB %dms", (int)(fb_len/1024), (int)((fr_end - fr_start)/1000)); + ESP_LOGD(TAG, "JPG: %dKB %dms", (int)(fb_len / 1024), (int)((fr_end - fr_start) / 1000)); - if (res != ESP_OK){ // Exit loop, e.g. also when closing the webpage + if (res != ESP_OK) + { + // Exit loop, e.g. also when closing the webpage break; } int64_t fr_delta_ms = (fr_end - fr_start) / 1000; - if (CAM_LIVESTREAM_REFRESHRATE > fr_delta_ms) { - const TickType_t xDelay = (CAM_LIVESTREAM_REFRESHRATE - fr_delta_ms) / portTICK_PERIOD_MS; - ESP_LOGD(TAG, "Stream: sleep for: %ldms", (long) xDelay*10); - vTaskDelay(xDelay); + + if (CAM_LIVESTREAM_REFRESHRATE > fr_delta_ms) + { + const TickType_t xDelay = (CAM_LIVESTREAM_REFRESHRATE - fr_delta_ms) / portTICK_PERIOD_MS; + ESP_LOGD(TAG, "Stream: sleep for: %ldms", (long)xDelay * 10); + vTaskDelay(xDelay); } } - LEDOnOff(false); - LightOnOff(false); + LEDOnOff(false); // Status-LED off + LightOnOff(false); // Flash-LED off LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Live stream stopped"); return res; } - void CCamera::LightOnOff(bool status) { - GpioHandler* gpioHandler = gpio_handler_get(); - if ((gpioHandler != NULL) && (gpioHandler->isEnabled())) { + GpioHandler *gpioHandler = gpio_handler_get(); + + if ((gpioHandler != NULL) && (gpioHandler->isEnabled())) + { ESP_LOGD(TAG, "Use gpioHandler to trigger flashlight"); gpioHandler->flashLightEnable(status); - } - else { - #ifdef USE_PWM_LEDFLASH - if (status) { - ESP_LOGD(TAG, "Internal Flash-LED turn on with PWM %d", led_intensity); - ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, led_intensity)); + } + else + { +#ifdef USE_PWM_LEDFLASH + if (status) + { + ESP_LOGD(TAG, "Internal Flash-LED turn on with PWM %d", CCstatus.ImageLedIntensity); + ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, CCstatus.ImageLedIntensity)); // Update duty to apply the new value ESP_ERROR_CHECK(ledc_update_duty(LEDC_MODE, LEDC_CHANNEL)); } - else { + else + { ESP_LOGD(TAG, "Internal Flash-LED turn off PWM"); ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, 0)); ESP_ERROR_CHECK(ledc_update_duty(LEDC_MODE, LEDC_CHANNEL)); } - #else +#else // Init the GPIO gpio_pad_select_gpio(FLASH_GPIO); - // Set the GPIO as a push/pull output - gpio_set_direction(FLASH_GPIO, GPIO_MODE_OUTPUT); - if (status) + // Set the GPIO as a push/pull output + gpio_set_direction(FLASH_GPIO, GPIO_MODE_OUTPUT); + + if (status) + { gpio_set_level(FLASH_GPIO, 1); + } else + { gpio_set_level(FLASH_GPIO, 0); - #endif + } +#endif } } - void CCamera::LEDOnOff(bool status) { - if (xHandle_task_StatusLED == NULL) { + if (xHandle_task_StatusLED == NULL) + { // Init the GPIO gpio_pad_select_gpio(BLINK_GPIO); + /* Set the GPIO as a push/pull output */ - gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); + gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); - if (!status) + if (!status) + { gpio_set_level(BLINK_GPIO, 1); + } else - gpio_set_level(BLINK_GPIO, 0); + { + gpio_set_level(BLINK_GPIO, 0); + } } } - -void CCamera::GetCameraParameter(httpd_req_t *req, int &qual, framesize_t &resol, bool &zoomEnabled, int &zoomMode, int &zoomOffsetX, int &zoomOffsetY) +void CCamera::SetImageWidthHeightFromResolution(framesize_t resol) { - char _query[100]; - char _value[10]; - - resol = ActualResolution; - qual = ActualQuality; - zoomEnabled = imageZoomEnabled; - zoomMode = imageZoomMode; - zoomOffsetX = imageZoomOffsetX; - zoomOffsetY = imageZoomOffsetY; - - if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) + if (resol == FRAMESIZE_QVGA) { - ESP_LOGD(TAG, "Query: %s", _query); - if (httpd_query_key_value(_query, "size", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Size: %s", _size); - #endif - if (strcmp(_value, "QVGA") == 0) - resol = FRAMESIZE_QVGA; // 320x240 - else if (strcmp(_value, "VGA") == 0) - resol = FRAMESIZE_VGA; // 640x480 - else if (strcmp(_value, "SVGA") == 0) - resol = FRAMESIZE_SVGA; // 800x600 - else if (strcmp(_value, "XGA") == 0) - resol = FRAMESIZE_XGA; // 1024x768 - else if (strcmp(_value, "SXGA") == 0) - resol = FRAMESIZE_SXGA; // 1280x1024 - else if (strcmp(_value, "UXGA") == 0) - resol = FRAMESIZE_UXGA; // 1600x1200 - } - if (httpd_query_key_value(_query, "quality", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Quality: %s", _qual); - #endif - qual = atoi(_value); - if (qual > 63) // Limit to max. 63 - qual = 63; - else if (qual < 8) // Limit to min. 8 - qual = 8; - } - if (httpd_query_key_value(_query, "z", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Zoom: %s", _value); - #endif - if (atoi(_value) != 0) - zoomEnabled = true; - else - zoomEnabled = false; - } - if (httpd_query_key_value(_query, "zm", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Zoom mode: %s", _value); - #endif - zoomMode = atoi(_value); - if (zoomMode > 2) - zoomMode = 2; - else if (zoomMode < 0) - zoomMode = 0; - } - if (httpd_query_key_value(_query, "x", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "X offset: %s", _value); - #endif - zoomOffsetX = atoi(_value); - if (zoomOffsetX < 0) - zoomOffsetX = 0; - } - if (httpd_query_key_value(_query, "y", _value, sizeof(_value)) == ESP_OK) - { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Y offset: %s", _value); - #endif - zoomOffsetY = atoi(_value); - if (zoomOffsetY < 0) - zoomOffsetY = 0; - } + CCstatus.ImageHeight = 240; + CCstatus.ImageWidth = 320; + } + else if (resol == FRAMESIZE_VGA) + { + CCstatus.ImageHeight = 480; + CCstatus.ImageWidth = 640; + } + else if (resol == FRAMESIZE_SVGA) + { + CCstatus.ImageHeight = 600; + CCstatus.ImageWidth = 800; + } + else if (resol == FRAMESIZE_XGA) + { + CCstatus.ImageHeight = 768; + CCstatus.ImageWidth = 1024; + } + else if (resol == FRAMESIZE_HD) + { + CCstatus.ImageHeight = 720; + CCstatus.ImageWidth = 1280; + } + else if (resol == FRAMESIZE_SXGA) + { + CCstatus.ImageHeight = 1024; + CCstatus.ImageWidth = 1280; + } + else if (resol == FRAMESIZE_UXGA) + { + CCstatus.ImageHeight = 1200; + CCstatus.ImageWidth = 1600; } } - -framesize_t CCamera::TextToFramesize(const char * _size) +framesize_t CCamera::TextToFramesize(const char *_size) { if (strcmp(_size, "QVGA") == 0) - return FRAMESIZE_QVGA; // 320x240 + { + return FRAMESIZE_QVGA; // 320x240 + } else if (strcmp(_size, "VGA") == 0) - return FRAMESIZE_VGA; // 640x480 + { + return FRAMESIZE_VGA; // 640x480 + } else if (strcmp(_size, "SVGA") == 0) - return FRAMESIZE_SVGA; // 800x600 + { + return FRAMESIZE_SVGA; // 800x600 + } else if (strcmp(_size, "XGA") == 0) - return FRAMESIZE_XGA; // 1024x768 + { + return FRAMESIZE_XGA; // 1024x768 + } else if (strcmp(_size, "SXGA") == 0) - return FRAMESIZE_SXGA; // 1280x1024 + { + return FRAMESIZE_SXGA; // 1280x1024 + } else if (strcmp(_size, "UXGA") == 0) - return FRAMESIZE_UXGA; // 1600x1200 - - return ActualResolution; -} - - -CCamera::CCamera() -{ - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "CreateClassCamera"); - #endif - brightness = 0; - contrast = 0; - saturation = 0; - isFixedExposure = false; - - ledc_init(); -} - - -esp_err_t CCamera::InitCam() -{ - ESP_LOGD(TAG, "Init Camera"); - ActualQuality = camera_config.jpeg_quality; - ActualResolution = camera_config.frame_size; - //initialize the camera - esp_camera_deinit(); // De-init in case it was already initialized - esp_err_t err = esp_camera_init(&camera_config); - if (err != ESP_OK) { - ESP_LOGE(TAG, "Camera Init Failed"); - return err; + { + return FRAMESIZE_UXGA; // 1600x1200 } - CameraInitSuccessful = true; - return ESP_OK; -} - - -void CCamera::SetLEDIntensity(float _intrel) -{ - _intrel = min(_intrel, (float) 100); - _intrel = max(_intrel, (float) 0); - _intrel = _intrel / 100; - led_intensity = (int) (_intrel * 8191); - ESP_LOGD(TAG, "Set led_intensity to %d of 8191", led_intensity); - -} - - -bool CCamera::getCameraInitSuccessful() -{ - return CameraInitSuccessful; + return CCstatus.ImageFrameSize; } - std::vector demoFiles; -void CCamera::useDemoMode() +void CCamera::useDemoMode(void) { char line[50]; FILE *fd = fopen("/sdcard/demo/files.txt", "r"); - if (!fd) { + + if (!fd) + { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can not start Demo mode, the folder '/sdcard/demo/' does not contain the needed files!"); LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "See Details on https://jomjol.github.io/AI-on-the-edge-device-docs/Demo-Mode!"); return; } - demoImage = (uint8_t*)malloc(DEMO_IMAGE_SIZE); - if (demoImage == NULL) { + demoImage = (uint8_t *)malloc(DEMO_IMAGE_SIZE); + + if (demoImage == NULL) + { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Unable to acquire required memory for demo image!"); return; } - while (fgets(line, sizeof(line), fd) != NULL) { + while (fgets(line, sizeof(line), fd) != NULL) + { line[strlen(line) - 1] = '\0'; demoFiles.push_back(line); } - + fclose(fd); - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Using Demo mode (" + std::to_string(demoFiles.size()) + - " files) instead of real camera image!"); + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Using Demo mode (" + std::to_string(demoFiles.size()) + " files) instead of real camera image!"); - for (auto file : demoFiles) { + for (auto file : demoFiles) + { LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, file); } - demoMode = true; + CCstatus.DemoMode = true; } - -bool CCamera::loadNextDemoImage(camera_fb_t *fb) { +bool CCamera::loadNextDemoImage(camera_fb_t *fb) +{ char filename[50]; int readBytes; long fileSize; @@ -1012,17 +1167,20 @@ bool CCamera::loadNextDemoImage(camera_fb_t *fb) { /* Inject saved image */ - FILE * fp = fopen(filename, "rb"); - if (!fp) { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to read file: " + std::string(filename) +"!"); + FILE *fp = fopen(filename, "rb"); + + if (!fp) + { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to read file: " + std::string(filename) + "!"); return false; } fileSize = GetFileSize(filename); - if (fileSize > DEMO_IMAGE_SIZE) { + + if (fileSize > DEMO_IMAGE_SIZE) + { char buf[100]; - snprintf(buf, sizeof(buf), "Demo Image (%d bytes) is larger than provided buffer (%d bytes)!", - (int)fileSize, DEMO_IMAGE_SIZE); + snprintf(buf, sizeof(buf), "Demo Image (%d bytes) is larger than provided buffer (%d bytes)!", (int)fileSize, DEMO_IMAGE_SIZE); LogFile.WriteToFile(ESP_LOG_ERROR, TAG, std::string(buf)); return false; } @@ -1038,7 +1196,6 @@ bool CCamera::loadNextDemoImage(camera_fb_t *fb) { return true; } - long CCamera::GetFileSize(std::string filename) { struct stat stat_buf; diff --git a/code/components/jomjol_controlcamera/ClassControllCamera.h b/code/components/jomjol_controlcamera/ClassControllCamera.h index 064eefb91..cea057260 100644 --- a/code/components/jomjol_controlcamera/ClassControllCamera.h +++ b/code/components/jomjol_controlcamera/ClassControllCamera.h @@ -15,66 +15,99 @@ #include "CImageBasis.h" #include "../../include/defines.h" -class CCamera { - protected: - int ActualQuality; - framesize_t ActualResolution; - int brightness, contrast, saturation, autoExposureLevel; - bool isFixedExposure; - int waitbeforepicture_org; - int led_intensity = 4095; - - void ledc_init(void); - bool CameraInitSuccessful = false; - bool demoMode = false; - - bool loadNextDemoImage(camera_fb_t *fb); - long GetFileSize(std::string filename); - - void SetCamWindow(sensor_t *s, int resolution, int xOffset, int yOffset, int xLength, int yLength); - void SetImageWidthHeightFromResolution(framesize_t resol); - - public: - int image_height, image_width; - bool imageZoomEnabled = false; - int imageZoomMode = 0; - int imageZoomOffsetX = 0; - int imageZoomOffsetY = 0; - bool imageNegative = false; - bool imageAec2 = false; - bool imageAutoSharpness = false; - int imageSharpnessLevel = 0; - #ifdef GRAYSCALE_AS_DEFAULT - bool imageGrayscale = true; - #else - bool imageGrayscale = false; - #endif - - CCamera(); - esp_err_t InitCam(); - - void LightOnOff(bool status); - void LEDOnOff(bool status); - esp_err_t CaptureToHTTP(httpd_req_t *req, int delay = 0); - esp_err_t CaptureToStream(httpd_req_t *req, bool FlashlightOn); - void SetQualitySize(int qual, framesize_t resol, bool zoomEnabled, int zoomMode, int zoomOffsetX, int zoomOffsetY); - bool SetBrightnessContrastSaturation(int _brightness, int _contrast, int _saturation, int _autoExposureLevel, bool _grayscale, bool _negative, bool _aec2, int _sharpnessLevel); - void SetZoom(bool zoomEnabled, int zoomMode, int zoomOffsetX, int zoomOffsetY); - void GetCameraParameter(httpd_req_t *req, int &qual, framesize_t &resol, bool &zoomEnabled, int &zoomMode, int &zoomOffsetX, int &zoomOffsetY); - void SetLEDIntensity(float _intrel); - bool testCamera(void); - void EnableAutoExposure(int flash_duration); - bool getCameraInitSuccessful(); - void useDemoMode(void); - - - framesize_t TextToFramesize(const char * text); - - esp_err_t CaptureToFile(std::string nm, int delay = 0); - esp_err_t CaptureToBasisImage(CImageBasis *_Image, int delay = 0); -}; +typedef struct +{ + uint16_t CamSensor_id; + framesize_t ImageFrameSize = FRAMESIZE_VGA; // 0 - 10 + gainceiling_t ImageGainceiling; // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) -extern CCamera Camera; + int ImageQuality; // 0 - 63 + int ImageBrightness; // (-2 to 2) - set brightness + int ImageContrast; //-2 - 2 + int ImageSaturation; //-2 - 2 + int ImageSharpness; //-2 - 2 + bool ImageAutoSharpness; + int ImageSpecialEffect; // 0 - 6 + int ImageWbMode; // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) + int ImageAwb; // white balance enable (0 or 1) + int ImageAwbGain; // Auto White Balance enable (0 or 1) + int ImageAec; // auto exposure off (1 or 0) + int ImageAec2; // automatic exposure sensor (0 or 1) + int ImageAeLevel; // auto exposure levels (-2 to 2) + int ImageAecValue; // set exposure manually (0-1200) + int ImageAgc; // auto gain off (1 or 0) + int ImageAgcGain; // set gain manually (0 - 30) + int ImageBpc; // black pixel correction + int ImageWpc; // white pixel correction + int ImageRawGma; // (1 or 0) + int ImageLenc; // lens correction (1 or 0) + int ImageHmirror; // (0 or 1) flip horizontally + int ImageVflip; // Invert image (0 or 1) + int ImageDcw; // downsize enable (1 or 0) + + int ImageDenoiseLevel; // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + + int ImageWidth; + int ImageHeight; + + int ImageLedIntensity; + + bool ImageZoomEnabled; + int ImageZoomOffsetX; + int ImageZoomOffsetY; + int ImageZoomSize; + + int WaitBeforePicture; + bool isImageSize; + + bool CameraInitSuccessful; + bool changedCameraSettings; + bool DemoMode; + bool SaveAllFiles; +} camera_controll_config_temp_t; + +extern camera_controll_config_temp_t CCstatus; + +class CCamera +{ +protected: + void ledc_init(void); + bool loadNextDemoImage(camera_fb_t *fb); + long GetFileSize(std::string filename); + void SetCamWindow(sensor_t *s, int frameSizeX, int frameSizeY, int xOffset, int yOffset, int xTotal, int yTotal, int xOutput, int yOutput, int imageVflip); + void SetImageWidthHeightFromResolution(framesize_t resol); + void SanitizeZoomParams(int imageSize, int frameSizeX, int frameSizeY, int &imageWidth, int &imageHeight, int &zoomOffsetX, int &zoomOffsetY); + +public: + CCamera(void); + esp_err_t InitCam(void); + void LightOnOff(bool status); + void LEDOnOff(bool status); + + esp_err_t setSensorDatenFromCCstatus(void); + esp_err_t getSensorDatenToCCstatus(void); + + int ov5640_set_gainceiling(sensor_t *s, gainceiling_t level); + + esp_err_t CaptureToHTTP(httpd_req_t *req, int delay = 0); + esp_err_t CaptureToStream(httpd_req_t *req, bool FlashlightOn); + + void SetQualityZoomSize(int qual, framesize_t resol, bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip); + void SetZoomSize(bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip); + void SetCamSharpness(bool _autoSharpnessEnabled, int _sharpnessLevel); + + void SetLEDIntensity(float _intrel); + bool testCamera(void); + bool getCameraInitSuccessful(void); + void useDemoMode(void); + + framesize_t TextToFramesize(const char *text); + + esp_err_t CaptureToFile(std::string nm, int delay = 0); + esp_err_t CaptureToBasisImage(CImageBasis *_Image, int delay = 0); +}; + +extern CCamera Camera; #endif \ No newline at end of file diff --git a/code/components/jomjol_controlcamera/ov2640_sharpness.cpp b/code/components/jomjol_controlcamera/ov2640_sharpness.cpp index 6970b27c4..8e67bc789 100644 --- a/code/components/jomjol_controlcamera/ov2640_sharpness.cpp +++ b/code/components/jomjol_controlcamera/ov2640_sharpness.cpp @@ -3,71 +3,78 @@ #include "ov2640_sharpness.h" -#define OV2640_MAXLEVEL_SHARPNESS 6 - const static uint8_t OV2640_SHARPNESS_AUTO[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, 0x93, 0x20, 0x20, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_MANUAL[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL0[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xc0, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xC0, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL1[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xc1, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xC1, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL2[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xc2, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xC2, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL3[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xc4, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xC4, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL4[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xc8, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xC8, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL5[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xd0, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xD0, 0x1F, 0x00, 0x00, 0x00 }; const static uint8_t OV2640_SHARPNESS_LEVEL6[]= { - 0xFF, 0x00, 0xff, - 0x92, 0x01, 0xff, - 0x93, 0xdf, 0x1f, + //reg, val, mask + 0xFF, 0x00, 0xFF, + 0x92, 0x01, 0xFF, + 0x93, 0xDF, 0x1F, 0x00, 0x00, 0x00 }; @@ -82,6 +89,9 @@ const static uint8_t *OV2640_SETTING_SHARPNESS[]= OV2640_SHARPNESS_LEVEL6 // +3 sharpness }; +#define OV2640_MAXLEVEL_SHARPNESS 6 + + static int table_mask_write(sensor_t *sensor, const uint8_t* ptab) { uint8_t address; @@ -91,34 +101,52 @@ static int table_mask_write(sensor_t *sensor, const uint8_t* ptab) const uint8_t *pdata = ptab; if (pdata == NULL) + { return -1; + } while (1) { address = *pdata++; value = *pdata++; mask = *pdata++; + if ((address == 0) && (value == 0) && (mask == 0)) + { break; + } + sensor->set_reg(sensor, address, mask, value); } return 0; } + int ov2640_enable_auto_sharpness(sensor_t *sensor) { table_mask_write(sensor, OV2640_SHARPNESS_AUTO); + return 0; } int ov2640_set_sharpness(sensor_t *sensor, int sharpness) { - if ((sharpness < -3) || (sharpness > OV2640_MAXLEVEL_SHARPNESS - 3)) - return -1; + int sharpness_temp = 0; + + if (sharpness < -3) + { + sharpness_temp = -3; + } + + if (sharpness > OV2640_MAXLEVEL_SHARPNESS - 3) + { + sharpness_temp = OV2640_MAXLEVEL_SHARPNESS - 3; + } table_mask_write(sensor, OV2640_SHARPNESS_MANUAL); - table_mask_write(sensor, OV2640_SETTING_SHARPNESS[sharpness + 3]); + table_mask_write(sensor, OV2640_SETTING_SHARPNESS[sharpness_temp + 3]); + return 0; } diff --git a/code/components/jomjol_controlcamera/server_camera.cpp b/code/components/jomjol_controlcamera/server_camera.cpp index dc37e2abb..fc8fd4bc1 100644 --- a/code/components/jomjol_controlcamera/server_camera.cpp +++ b/code/components/jomjol_controlcamera/server_camera.cpp @@ -5,6 +5,7 @@ #include "esp_camera.h" #include "ClassControllCamera.h" +#include "MainFlowControl.h" #include "ClassLogFile.h" #include "esp_log.h" @@ -13,191 +14,187 @@ static const char *TAG = "server_cam"; - -void PowerResetCamera(){ - - ESP_LOGD(TAG, "Resetting camera by power down line"); - gpio_config_t conf; - conf.intr_type = GPIO_INTR_DISABLE; - conf.pin_bit_mask = 1LL << GPIO_NUM_32; - conf.mode = GPIO_MODE_OUTPUT; - conf.pull_down_en = GPIO_PULLDOWN_DISABLE; - conf.pull_up_en = GPIO_PULLUP_DISABLE; - gpio_config(&conf); - - // carefull, logic is inverted compared to reset pin - gpio_set_level(GPIO_NUM_32, 1); - vTaskDelay(1000 / portTICK_PERIOD_MS); - gpio_set_level(GPIO_NUM_32, 0); - vTaskDelay(1000 / portTICK_PERIOD_MS); +void PowerResetCamera() +{ +#if CAM_PIN_PWDN == GPIO_NUM_NC // Use reset only if pin is available + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "No power down pin availbale to reset camera"); +#else + ESP_LOGD(TAG, "Resetting camera by power down line"); + gpio_config_t conf; + conf.intr_type = GPIO_INTR_DISABLE; + conf.pin_bit_mask = 1LL << CAM_PIN_PWDN; + conf.mode = GPIO_MODE_OUTPUT; + conf.pull_down_en = GPIO_PULLDOWN_DISABLE; + conf.pull_up_en = GPIO_PULLUP_DISABLE; + gpio_config(&conf); + + // carefull, logic is inverted compared to reset pin + gpio_set_level(CAM_PIN_PWDN, 1); + vTaskDelay(1000 / portTICK_PERIOD_MS); + gpio_set_level(CAM_PIN_PWDN, 0); + vTaskDelay(1000 / portTICK_PERIOD_MS); +#endif } - esp_err_t handler_lightOn(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_lightOn - Start"); - ESP_LOGD(TAG, "handler_lightOn uri: %s", req->uri); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_lightOn - Start"); + ESP_LOGD(TAG, "handler_lightOn uri: %s", req->uri); +#endif - if (Camera.getCameraInitSuccessful()) + if (Camera.getCameraInitSuccessful()) { Camera.LightOnOff(true); - const char* resp_str = (const char*) req->user_ctx; + const char *resp_str = (const char *)req->user_ctx; httpd_resp_send(req, resp_str, strlen(resp_str)); } - else + else { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Camera not initialized: REST API /lighton not available!"); return ESP_ERR_NOT_FOUND; } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_lightOn - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_lightOn - Done"); +#endif return ESP_OK; } - esp_err_t handler_lightOff(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_lightOff - Start"); - ESP_LOGD(TAG, "handler_lightOff uri: %s", req->uri); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_lightOff - Start"); + ESP_LOGD(TAG, "handler_lightOff uri: %s", req->uri); +#endif - if (Camera.getCameraInitSuccessful()) + if (Camera.getCameraInitSuccessful()) { Camera.LightOnOff(false); - const char* resp_str = (const char*) req->user_ctx; - httpd_resp_send(req, resp_str, strlen(resp_str)); + const char *resp_str = (const char *)req->user_ctx; + httpd_resp_send(req, resp_str, strlen(resp_str)); } - else + else { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Camera not initialized: REST API /lightoff not available!"); return ESP_ERR_NOT_FOUND; } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_lightOff - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_lightOff - Done"); +#endif return ESP_OK; } - esp_err_t handler_capture(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture - Start"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture - Start"); +#endif - if (Camera.getCameraInitSuccessful()) + if (Camera.getCameraInitSuccessful()) { - int quality; - framesize_t res; - bool zoomEnabled; - int zoomMode; - int zoomOffsetX; - int zoomOffsetY; - - Camera.GetCameraParameter(req, quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); - - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Size: %d, Quality: %d", res, quality); - #endif + // If the camera settings were changed by creating a new reference image, they must be reset + if (CFstatus.changedCameraSettings) + { + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); + CFstatus.changedCameraSettings = false; + } - Camera.SetQualitySize(quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Size: %d, Quality: %d", CCstatus.ImageFrameSize, CCstatus.ImageQuality); +#endif esp_err_t result; result = Camera.CaptureToHTTP(req); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture - Done"); +#endif return result; } - else + else { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Camera not initialized: REST API /capture not available!"); return ESP_ERR_NOT_FOUND; } } - esp_err_t handler_capture_with_light(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture_with_light - Start"); - #endif - - if (Camera.getCameraInitSuccessful()) +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture_with_light - Start"); +#endif + + if (Camera.getCameraInitSuccessful()) { char _query[100]; char _delay[10]; - - int quality; - framesize_t res; - bool zoomEnabled; - int zoomMode; - int zoomOffsetX; - int zoomOffsetY; int delay = 2500; if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) { ESP_LOGD(TAG, "Query: %s", _query); + if (httpd_query_key_value(_query, "delay", _delay, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Delay: %s", _delay); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Delay: %s", _delay); +#endif delay = atoi(_delay); if (delay < 0) + { delay = 0; + } } } - Camera.GetCameraParameter(req, quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); + // If the camera settings were changed by creating a new reference image, they must be reset + if (CFstatus.changedCameraSettings) + { + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); + CFstatus.changedCameraSettings = false; + } - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Size: %d, Quality: %d", res, quality); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Size: %d, Quality: %d", CCstatus.ImageFrameSize, CCstatus.ImageQuality); +#endif - Camera.SetQualitySize(quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); Camera.LightOnOff(true); const TickType_t xDelay = delay / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); + vTaskDelay(xDelay); esp_err_t result; - result = Camera.CaptureToHTTP(req); + result = Camera.CaptureToHTTP(req); Camera.LightOnOff(false); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture_with_light - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture_with_light - Done"); +#endif return result; } - else + else { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Camera not initialized: REST API /capture_with_flashlight not available!"); return ESP_ERR_NOT_FOUND; } } - esp_err_t handler_capture_save_to_file(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture_save_to_file - Start"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture_save_to_file - Start"); +#endif - if (Camera.getCameraInitSuccessful()) + if (Camera.getCameraInitSuccessful()) { char _query[100]; char _delay[10]; @@ -205,98 +202,102 @@ esp_err_t handler_capture_save_to_file(httpd_req_t *req) char filename[100]; std::string fn = "/sdcard/"; - - int quality; - framesize_t res; - bool zoomEnabled; - int zoomMode; - int zoomOffsetX; - int zoomOffsetY; - if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) { ESP_LOGD(TAG, "Query: %s", _query); + if (httpd_query_key_value(_query, "filename", filename, 100) == ESP_OK) { fn.append(filename); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Filename: %s", fn.c_str()); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Filename: %s", fn.c_str()); +#endif } else + { fn.append("noname.jpg"); + } if (httpd_query_key_value(_query, "delay", _delay, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Delay: %s", _delay); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Delay: %s", _delay); +#endif delay = atoi(_delay); if (delay < 0) + { delay = 0; + } } } else + { fn.append("noname.jpg"); + } + + // If the camera settings were changed by creating a new reference image, they must be reset + if (CFstatus.changedCameraSettings) + { + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); + CFstatus.changedCameraSettings = false; + } - Camera.GetCameraParameter(req, quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Size: %d, Quality: %d", res, quality); - #endif - Camera.SetQualitySize(quality, res, zoomEnabled, zoomMode, zoomOffsetX, zoomOffsetY); +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Size: %d, Quality: %d", CCstatus.ImageFrameSize, CCstatus.ImageQuality); +#endif esp_err_t result; - result = Camera.CaptureToFile(fn, delay); + result = Camera.CaptureToFile(fn, delay); - const char* resp_str = (const char*) fn.c_str(); + const char *resp_str = (const char *)fn.c_str(); httpd_resp_send(req, resp_str, strlen(resp_str)); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_capture_save_to_file - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_capture_save_to_file - Done"); +#endif return result; } - else + else { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Camera not initialized: REST API /save not available!"); return ESP_ERR_NOT_FOUND; } } - void register_server_camera_uri(httpd_handle_t server) { -#ifdef DEBUG_DETAIL_ON +#ifdef DEBUG_DETAIL_ON ESP_LOGI(TAG, "server_part_camera - Registering URI handlers"); #endif - httpd_uri_t camuri = { }; - camuri.method = HTTP_GET; + httpd_uri_t camuri = {}; + camuri.method = HTTP_GET; - camuri.uri = "/lighton"; - camuri.handler = handler_lightOn; - camuri.user_ctx = (void*) "Light On"; + camuri.uri = "/lighton"; + camuri.handler = handler_lightOn; + camuri.user_ctx = (void *)"Light On"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/lightoff"; - camuri.handler = handler_lightOff; - camuri.user_ctx = (void*) "Light Off"; - httpd_register_uri_handler(server, &camuri); - - camuri.uri = "/capture"; - camuri.handler = handler_capture; - camuri.user_ctx = NULL; - httpd_register_uri_handler(server, &camuri); - - camuri.uri = "/capture_with_flashlight"; - camuri.handler = handler_capture_with_light; - camuri.user_ctx = NULL; - httpd_register_uri_handler(server, &camuri); - - camuri.uri = "/save"; - camuri.handler = handler_capture_save_to_file; - camuri.user_ctx = NULL; - httpd_register_uri_handler(server, &camuri); + camuri.uri = "/lightoff"; + camuri.handler = handler_lightOff; + camuri.user_ctx = (void *)"Light Off"; + httpd_register_uri_handler(server, &camuri); + + camuri.uri = "/capture"; + camuri.handler = handler_capture; + camuri.user_ctx = NULL; + httpd_register_uri_handler(server, &camuri); + + camuri.uri = "/capture_with_flashlight"; + camuri.handler = handler_capture_with_light; + camuri.user_ctx = NULL; + httpd_register_uri_handler(server, &camuri); + + camuri.uri = "/save"; + camuri.handler = handler_capture_save_to_file; + camuri.user_ctx = NULL; + httpd_register_uri_handler(server, &camuri); } diff --git a/code/components/jomjol_controlcamera/server_camera.h b/code/components/jomjol_controlcamera/server_camera.h index 7bd79b89c..656b99eb2 100644 --- a/code/components/jomjol_controlcamera/server_camera.h +++ b/code/components/jomjol_controlcamera/server_camera.h @@ -10,7 +10,6 @@ //#include "ClassControllCamera.h" void register_server_camera_uri(httpd_handle_t server); - void PowerResetCamera(); #endif \ No newline at end of file diff --git a/code/components/jomjol_fileserver_ota/miniz/readme2.md b/code/components/jomjol_fileserver_ota/miniz/readme2.md index da2b7ea1f..64c696103 100644 --- a/code/components/jomjol_fileserver_ota/miniz/readme2.md +++ b/code/components/jomjol_fileserver_ota/miniz/readme2.md @@ -4,5 +4,5 @@ It should be possible to include the repo directly as a submodule, how ever it c - https://github.com/richgel999/miniz/issues/145 - https://github.com/espressif/esptool/pull/500#issuecomment-574879468 - For sumplicity we therefore use the release files as suggested in the readme. - Additionally we added the CMakeLists.txt and this readme. \ No newline at end of file + For simplicity we therefore use the release files as suggested in the readme. + Additionally we added the CMakeLists.txt and this readme. diff --git a/code/components/jomjol_flowcontroll/CMakeLists.txt b/code/components/jomjol_flowcontroll/CMakeLists.txt index 2b58ada94..2df515fc7 100644 --- a/code/components/jomjol_flowcontroll/CMakeLists.txt +++ b/code/components/jomjol_flowcontroll/CMakeLists.txt @@ -2,6 +2,6 @@ FILE(GLOB_RECURSE app_sources ${CMAKE_CURRENT_SOURCE_DIR}/*.*) idf_component_register(SRCS ${app_sources} INCLUDE_DIRS "." - REQUIRES esp_timer esp_wifi jomjol_tfliteclass jomjol_helper jomjol_controlcamera jomjol_mqtt jomjol_influxdb jomjol_fileserver_ota jomjol_image_proc jomjol_wlan) + REQUIRES esp_timer esp_wifi jomjol_tfliteclass jomjol_helper jomjol_controlcamera jomjol_mqtt jomjol_influxdb jomjol_webhook jomjol_fileserver_ota jomjol_image_proc jomjol_wlan openmetrics) diff --git a/code/components/jomjol_flowcontroll/ClassFlow.cpp b/code/components/jomjol_flowcontroll/ClassFlow.cpp index 0de7428d8..858c95244 100644 --- a/code/components/jomjol_flowcontroll/ClassFlow.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlow.cpp @@ -67,11 +67,6 @@ string ClassFlow::getHTMLSingleStep(string host){ return ""; } -string ClassFlow::getReadout() -{ - return string(); -} - std::string ClassFlow::GetParameterName(std::string _input) { string _param; diff --git a/code/components/jomjol_flowcontroll/ClassFlow.h b/code/components/jomjol_flowcontroll/ClassFlow.h index 52f5c72c8..9c826c11a 100644 --- a/code/components/jomjol_flowcontroll/ClassFlow.h +++ b/code/components/jomjol_flowcontroll/ClassFlow.h @@ -46,7 +46,6 @@ class ClassFlow virtual bool ReadParameter(FILE* pfile, string &aktparamgraph); virtual bool doFlow(string time); virtual string getHTMLSingleStep(string host); - virtual string getReadout(); virtual string name(){return "ClassFlow";}; }; diff --git a/code/components/jomjol_flowcontroll/ClassFlowAlignment.cpp b/code/components/jomjol_flowcontroll/ClassFlowAlignment.cpp index 235e3df50..2324fd3cf 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowAlignment.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowAlignment.cpp @@ -1,393 +1,374 @@ -#include "ClassFlowAlignment.h" -#include "ClassFlowTakeImage.h" -#include "ClassFlow.h" -#include "MainFlowControl.h" - -#include "CRotateImage.h" -#include "esp_log.h" - - -#include "ClassLogFile.h" -#include "psram.h" -#include "../../include/defines.h" - - -static const char *TAG = "ALIGN"; - -// #define DEBUG_DETAIL_ON - - -void ClassFlowAlignment::SetInitialParameter(void) -{ - initialrotate = 0; - anz_ref = 0; - initialmirror = false; - use_antialiasing = false; - initialflip = false; - SaveAllFiles = false; - namerawimage = "/sdcard/img_tmp/raw.jpg"; - FileStoreRefAlignment = "/sdcard/config/align.txt"; - ListFlowControll = NULL; - AlignAndCutImage = NULL; - ImageBasis = NULL; - ImageTMP = NULL; - #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG - AlgROI = (ImageData*)malloc_psram_heap(std::string(TAG) + "->AlgROI", sizeof(ImageData), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - #endif - previousElement = NULL; - disabled = false; - SAD_criteria = 0.05; -} - - -ClassFlowAlignment::ClassFlowAlignment(std::vector* lfc) -{ - SetInitialParameter(); - ListFlowControll = lfc; - - for (int i = 0; i < ListFlowControll->size(); ++i) - { - if (((*ListFlowControll)[i])->name().compare("ClassFlowTakeImage") == 0) - { - ImageBasis = ((ClassFlowTakeImage*) (*ListFlowControll)[i])->rawImage; - } - } - - if (!ImageBasis) // the function take pictures does not exist --> must be created first ONLY FOR TEST PURPOSES - { - ESP_LOGD(TAG, "CImageBasis had to be created"); - ImageBasis = new CImageBasis("ImageBasis", namerawimage); - } -} - - -bool ClassFlowAlignment::ReadParameter(FILE* pfile, string& aktparamgraph) -{ - std::vector splitted; - int suchex = 40; - int suchey = 40; - int alg_algo = 0; //default=0; 1 =HIGHACCURACY; 2= FAST; 3= OFF //add disable aligment algo |01.2023 - - - aktparamgraph = trim(aktparamgraph); - - if (aktparamgraph.size() == 0) - if (!this->GetNextParagraph(pfile, aktparamgraph)) - return false; - - if (aktparamgraph.compare("[Alignment]") != 0) //Paragraph does not fit Alignment - return false; - - while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) - { - splitted = ZerlegeZeile(aktparamgraph); - if ((toUpper(splitted[0]) == "FLIPIMAGESIZE") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - initialflip = true; - } - if ((toUpper(splitted[0]) == "INITIALMIRROR") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - initialmirror = true; - } - if (((toUpper(splitted[0]) == "initialrotate") || (toUpper(splitted[0]) == "INITIALROTATE")) && (splitted.size() > 1)) - { - this->initialrotate = std::stod(splitted[1]); - } - if ((toUpper(splitted[0]) == "SEARCHFIELDX") && (splitted.size() > 1)) - { - suchex = std::stod(splitted[1]); - } - if ((toUpper(splitted[0]) == "SEARCHFIELDY") && (splitted.size() > 1)) - { - suchey = std::stod(splitted[1]); - } - if ((toUpper(splitted[0]) == "ANTIALIASING") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - use_antialiasing = true; - } - if ((splitted.size() == 3) && (anz_ref < 2)) - { - References[anz_ref].image_file = FormatFileName("/sdcard" + splitted[0]); - References[anz_ref].target_x = std::stod(splitted[1]); - References[anz_ref].target_y = std::stod(splitted[2]); - anz_ref++; - } - - if ((toUpper(splitted[0]) == "SAVEALLFILES") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - SaveAllFiles = true; - } - if ((toUpper(splitted[0]) == "ALIGNMENTALGO") && (splitted.size() > 1)) - { - #ifdef DEBUG_DETAIL_ON - std::string zw2 = "Alignment mode selected: " + splitted[1]; - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, zw2); - #endif - if (toUpper(splitted[1]) == "HIGHACCURACY") - alg_algo = 1; - if (toUpper(splitted[1]) == "FAST") - alg_algo = 2; - if (toUpper(splitted[1]) == "OFF") //no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 - alg_algo = 3; - } - } - - for (int i = 0; i < anz_ref; ++i) - { - References[i].search_x = suchex; - References[i].search_y = suchey; - References[i].fastalg_SAD_criteria = SAD_criteria; - References[i].alignment_algo = alg_algo; - #ifdef DEBUG_DETAIL_ON - std::string zw2 = "Alignment mode written: " + std::to_string(alg_algo); - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, zw2); - #endif - } - - //no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 - if(References[0].alignment_algo != 3){ - LoadReferenceAlignmentValues(); - } - - return true; - -} - - -string ClassFlowAlignment::getHTMLSingleStep(string host) -{ - string result; - - result = "

Rotated Image:

\n"; - result = result + "

Found Alignment:

\n"; - result = result + "

Aligned Image:

\n"; - return result; -} - - -bool ClassFlowAlignment::doFlow(string time) -{ - #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG - if (!AlgROI) // AlgROI needs to be allocated before ImageTMP to avoid heap fragmentation - { - AlgROI = (ImageData*)heap_caps_realloc(AlgROI, sizeof(ImageData), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - if (!AlgROI) - { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate AlgROI"); - LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); - } - } - - if (AlgROI) - { - ImageBasis->writeToMemoryAsJPG((ImageData*)AlgROI, 90); - } - #endif - - if (!ImageTMP) - { - ImageTMP = new CImageBasis("tmpImage", ImageBasis); // Make sure the name does not get change, it is relevant for the PSRAM allocation! - if (!ImageTMP) - { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate tmpImage -> Exec this round aborted!"); - LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); - return false; - } - } - - delete AlignAndCutImage; - AlignAndCutImage = new CAlignAndCutImage("AlignAndCutImage", ImageBasis, ImageTMP); - if (!AlignAndCutImage) - { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate AlignAndCutImage -> Exec this round aborted!"); - LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); - return false; - } - - CRotateImage rt("rawImage", AlignAndCutImage, ImageTMP, initialflip); - if (initialflip) - { - int _zw = ImageBasis->height; - ImageBasis->height = ImageBasis->width; - ImageBasis->width = _zw; - - _zw = ImageTMP->width; - ImageTMP->width = ImageTMP->height; - ImageTMP->height = _zw; - } - - if (initialmirror) - { - ESP_LOGD(TAG, "do mirror"); - rt.Mirror(); - - if (SaveAllFiles) - AlignAndCutImage->SaveToFile(FormatFileName("/sdcard/img_tmp/mirror.jpg")); - } - - if ((initialrotate != 0) || initialflip) - { - if (use_antialiasing) - rt.RotateAntiAliasing(initialrotate); - else - rt.Rotate(initialrotate); - - if (SaveAllFiles) - AlignAndCutImage->SaveToFile(FormatFileName("/sdcard/img_tmp/rot.jpg")); - } - - - //no align algo if set to 3 = off //add disable aligment algo |01.2023 - if(References[0].alignment_algo != 3){ - if (!AlignAndCutImage->Align(&References[0], &References[1])) - { - SaveReferenceAlignmentValues(); - } - }// no align - - - #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG - if (AlgROI) { - //no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 - if(References[0].alignment_algo != 3){ - DrawRef(ImageTMP); - } - flowctrl.DigitalDrawROI(ImageTMP); - flowctrl.AnalogDrawROI(ImageTMP); - ImageTMP->writeToMemoryAsJPG((ImageData*)AlgROI, 90); - } - #endif - - if (SaveAllFiles) - { - AlignAndCutImage->SaveToFile(FormatFileName("/sdcard/img_tmp/alg.jpg")); - ImageTMP->SaveToFile(FormatFileName("/sdcard/img_tmp/alg_roi.jpg")); - } - - // must be deleted to have memory space for loading tflite - delete ImageTMP; - ImageTMP = NULL; - - //no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 - if(References[0].alignment_algo != 3){ - LoadReferenceAlignmentValues(); - } - - return true; -} - - -void ClassFlowAlignment::SaveReferenceAlignmentValues() -{ - FILE* pFile; - std::string zwtime, zwvalue; - - pFile = fopen(FileStoreRefAlignment.c_str(), "w"); - - if (strlen(zwtime.c_str()) == 0) - { - time_t rawtime; - struct tm* timeinfo; - char buffer[80]; - - time(&rawtime); - timeinfo = localtime(&rawtime); - - strftime(buffer, 80, "%Y-%m-%dT%H:%M:%S", timeinfo); - zwtime = std::string(buffer); - } - - fputs(zwtime.c_str(), pFile); - fputs("\n", pFile); - - zwvalue = std::to_string(References[0].fastalg_x) + "\t" + std::to_string(References[0].fastalg_y); - zwvalue = zwvalue + "\t" +std::to_string(References[0].fastalg_SAD)+ "\t" +std::to_string(References[0].fastalg_min); - zwvalue = zwvalue + "\t" +std::to_string(References[0].fastalg_max)+ "\t" +std::to_string(References[0].fastalg_avg); - fputs(zwvalue.c_str(), pFile); - fputs("\n", pFile); - - zwvalue = std::to_string(References[1].fastalg_x) + "\t" + std::to_string(References[1].fastalg_y); - zwvalue = zwvalue + "\t" +std::to_string(References[1].fastalg_SAD)+ "\t" +std::to_string(References[1].fastalg_min); - zwvalue = zwvalue + "\t" +std::to_string(References[1].fastalg_max)+ "\t" +std::to_string(References[1].fastalg_avg); - fputs(zwvalue.c_str(), pFile); - fputs("\n", pFile); - - fclose(pFile); -} - - -bool ClassFlowAlignment::LoadReferenceAlignmentValues(void) -{ - FILE* pFile; - char zw[1024]; - string zwvalue; - std::vector splitted; - - - pFile = fopen(FileStoreRefAlignment.c_str(), "r"); - if (pFile == NULL) - return false; - - fgets(zw, 1024, pFile); - ESP_LOGD(TAG, "%s", zw); - - fgets(zw, 1024, pFile); - splitted = ZerlegeZeile(std::string(zw), " \t"); - if (splitted.size() < 6) - { - fclose(pFile); - return false; - } - - References[0].fastalg_x = stoi(splitted[0]); - References[0].fastalg_y = stoi(splitted[1]); - References[0].fastalg_SAD = stof(splitted[2]); - References[0].fastalg_min = stoi(splitted[3]); - References[0].fastalg_max = stoi(splitted[4]); - References[0].fastalg_avg = stof(splitted[5]); - - fgets(zw, 1024, pFile); - splitted = ZerlegeZeile(std::string(zw)); - if (splitted.size() < 6) - { - fclose(pFile); - return false; - } - - References[1].fastalg_x = stoi(splitted[0]); - References[1].fastalg_y = stoi(splitted[1]); - References[1].fastalg_SAD = stof(splitted[2]); - References[1].fastalg_min = stoi(splitted[3]); - References[1].fastalg_max = stoi(splitted[4]); - References[1].fastalg_avg = stof(splitted[5]); - - fclose(pFile); - - - /*#ifdef DEBUG_DETAIL_ON - std::string _zw = "\tLoadReferences[0]\tx,y:\t" + std::to_string(References[0].fastalg_x) + "\t" + std::to_string(References[0].fastalg_x); - _zw = _zw + "\tSAD, min, max, avg:\t" + std::to_string(References[0].fastalg_SAD) + "\t" + std::to_string(References[0].fastalg_min); - _zw = _zw + "\t" + std::to_string(References[0].fastalg_max) + "\t" + std::to_string(References[0].fastalg_avg); - LogFile.WriteToDedicatedFile("/sdcard/alignment.txt", _zw); - _zw = "\tLoadReferences[1]\tx,y:\t" + std::to_string(References[1].fastalg_x) + "\t" + std::to_string(References[1].fastalg_x); - _zw = _zw + "\tSAD, min, max, avg:\t" + std::to_string(References[1].fastalg_SAD) + "\t" + std::to_string(References[1].fastalg_min); - _zw = _zw + "\t" + std::to_string(References[1].fastalg_max) + "\t" + std::to_string(References[1].fastalg_avg); - LogFile.WriteToDedicatedFile("/sdcard/alignment.txt", _zw); - #endif*/ - - return true; -} - - -void ClassFlowAlignment::DrawRef(CImageBasis *_zw) -{ - if (_zw->ImageOkay()) - { - _zw->drawRect(References[0].target_x, References[0].target_y, References[0].width, References[0].height, 255, 0, 0, 2); - _zw->drawRect(References[1].target_x, References[1].target_y, References[1].width, References[1].height, 255, 0, 0, 2); - } -} +#include "ClassFlowAlignment.h" +#include "ClassFlowTakeImage.h" +#include "ClassFlow.h" +#include "MainFlowControl.h" + +#include "CRotateImage.h" +#include "esp_log.h" + +#include "ClassLogFile.h" +#include "psram.h" +#include "../../include/defines.h" + +static const char *TAG = "ALIGN"; + +// #define DEBUG_DETAIL_ON + +void ClassFlowAlignment::SetInitialParameter(void) +{ + initialrotate = 0; + anz_ref = 0; + use_antialiasing = false; + initialflip = false; + SaveAllFiles = false; + namerawimage = "/sdcard/img_tmp/raw.jpg"; + FileStoreRefAlignment = "/sdcard/config/align.txt"; + ListFlowControll = NULL; + AlignAndCutImage = NULL; + ImageBasis = NULL; + ImageTMP = NULL; +#ifdef ALGROI_LOAD_FROM_MEM_AS_JPG + AlgROI = (ImageData *)malloc_psram_heap(std::string(TAG) + "->AlgROI", sizeof(ImageData), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); +#endif + previousElement = NULL; + disabled = false; + SAD_criteria = 0.05; +} + +ClassFlowAlignment::ClassFlowAlignment(std::vector *lfc) +{ + SetInitialParameter(); + ListFlowControll = lfc; + + for (int i = 0; i < ListFlowControll->size(); ++i) { + if (((*ListFlowControll)[i])->name().compare("ClassFlowTakeImage") == 0) { + ImageBasis = ((ClassFlowTakeImage *)(*ListFlowControll)[i])->rawImage; + } + } + + // the function take pictures does not exist --> must be created first ONLY FOR TEST PURPOSES + if (!ImageBasis) { + ESP_LOGD(TAG, "CImageBasis had to be created"); + ImageBasis = new CImageBasis("ImageBasis", namerawimage); + } +} + +bool ClassFlowAlignment::ReadParameter(FILE *pfile, string &aktparamgraph) +{ + std::vector splitted; + int suchex = 40; + int suchey = 40; + int alg_algo = 0; // default=0; 1 =HIGHACCURACY; 2= FAST; 3= OFF //add disable aligment algo |01.2023 + + aktparamgraph = trim(aktparamgraph); + + if (aktparamgraph.size() == 0) + { + if (!this->GetNextParagraph(pfile, aktparamgraph)) { + return false; + } + } + + if (aktparamgraph.compare("[Alignment]") != 0) + { + // Paragraph does not fit Alignment + return false; + } + + while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) + { + splitted = ZerlegeZeile(aktparamgraph); + + if ((toUpper(splitted[0]) == "FLIPIMAGESIZE") && (splitted.size() > 1)) { + initialflip = alphanumericToBoolean(splitted[1]); + } + else if (((toUpper(splitted[0]) == "initialrotate") || (toUpper(splitted[0]) == "INITIALROTATE")) && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { + this->initialrotate = std::stod(splitted[1]); + } + } + else if ((toUpper(splitted[0]) == "SEARCHFIELDX") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { + suchex = std::stod(splitted[1]); + } + } + else if ((toUpper(splitted[0]) == "SEARCHFIELDY") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { + suchey = std::stod(splitted[1]); + } + } + else if ((toUpper(splitted[0]) == "ANTIALIASING") && (splitted.size() > 1)) { + use_antialiasing = alphanumericToBoolean(splitted[1]); + } + else if ((splitted.size() == 3) && (anz_ref < 2)) { + if ((isStringNumeric(splitted[1])) && (isStringNumeric(splitted[2]))) + { + References[anz_ref].image_file = FormatFileName("/sdcard" + splitted[0]); + References[anz_ref].target_x = std::stod(splitted[1]); + References[anz_ref].target_y = std::stod(splitted[2]); + anz_ref++; + } + else + { + References[anz_ref].image_file = FormatFileName("/sdcard" + splitted[0]); + References[anz_ref].target_x = 10; + References[anz_ref].target_y = 10; + anz_ref++; + } + } + + else if ((toUpper(splitted[0]) == "SAVEALLFILES") && (splitted.size() > 1)) { + SaveAllFiles = alphanumericToBoolean(splitted[1]); + } + else if ((toUpper(splitted[0]) == "ALIGNMENTALGO") && (splitted.size() > 1)) { +#ifdef DEBUG_DETAIL_ON + std::string zw2 = "Alignment mode selected: " + splitted[1]; + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, zw2); +#endif + if (toUpper(splitted[1]) == "HIGHACCURACY") { + alg_algo = 1; + } + if (toUpper(splitted[1]) == "FAST") { + alg_algo = 2; + } + if (toUpper(splitted[1]) == "OFF") { + // no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 + alg_algo = 3; + } + } + } + + for (int i = 0; i < anz_ref; ++i) { + References[i].search_x = suchex; + References[i].search_y = suchey; + References[i].fastalg_SAD_criteria = SAD_criteria; + References[i].alignment_algo = alg_algo; +#ifdef DEBUG_DETAIL_ON + std::string zw2 = "Alignment mode written: " + std::to_string(alg_algo); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, zw2); +#endif + } + + // no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 + if (References[0].alignment_algo != 3) { + return LoadReferenceAlignmentValues(); + } + + return true; +} + +string ClassFlowAlignment::getHTMLSingleStep(string host) +{ + string result; + + result = "

Rotated Image:

\n"; + result = result + "

Found Alignment:

\n"; + result = result + "

Aligned Image:

\n"; + return result; +} + +bool ClassFlowAlignment::doFlow(string time) +{ +#ifdef ALGROI_LOAD_FROM_MEM_AS_JPG + // AlgROI needs to be allocated before ImageTMP to avoid heap fragmentation + if (!AlgROI) { + AlgROI = (ImageData *)heap_caps_realloc(AlgROI, sizeof(ImageData), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + + if (!AlgROI) { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate AlgROI"); + LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); + } + } + + if (AlgROI) { + ImageBasis->writeToMemoryAsJPG((ImageData *)AlgROI, 90); + } +#endif + + if (!ImageTMP) { + ImageTMP = new CImageBasis("tmpImage", ImageBasis); // Make sure the name does not get change, it is relevant for the PSRAM allocation! + + if (!ImageTMP) { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate tmpImage -> Exec this round aborted!"); + LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); + return false; + } + } + + delete AlignAndCutImage; + AlignAndCutImage = new CAlignAndCutImage("AlignAndCutImage", ImageBasis, ImageTMP); + + if (!AlignAndCutImage) { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Can't allocate AlignAndCutImage -> Exec this round aborted!"); + LogFile.WriteHeapInfo("ClassFlowAlignment-doFlow"); + return false; + } + + CRotateImage rt("rawImage", AlignAndCutImage, ImageTMP, initialflip); + + if (initialflip) { + int _zw = ImageBasis->height; + ImageBasis->height = ImageBasis->width; + ImageBasis->width = _zw; + + _zw = ImageTMP->width; + ImageTMP->width = ImageTMP->height; + ImageTMP->height = _zw; + } + + if ((initialrotate != 0) || initialflip) { + if (use_antialiasing) { + rt.RotateAntiAliasing(initialrotate); + } + else { + rt.Rotate(initialrotate); + } + + if (SaveAllFiles) { + AlignAndCutImage->SaveToFile(FormatFileName("/sdcard/img_tmp/rot.jpg")); + } + } + + // no align algo if set to 3 = off //add disable aligment algo |01.2023 + if (References[0].alignment_algo != 3) { + if (!AlignAndCutImage->Align(&References[0], &References[1])) { + SaveReferenceAlignmentValues(); + } + } // no align + +#ifdef ALGROI_LOAD_FROM_MEM_AS_JPG + if (AlgROI) { + // no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 + if (References[0].alignment_algo != 3) { + DrawRef(ImageTMP); + } + + flowctrl.DigitDrawROI(ImageTMP); + flowctrl.AnalogDrawROI(ImageTMP); + ImageTMP->writeToMemoryAsJPG((ImageData *)AlgROI, 90); + } +#endif + + if (SaveAllFiles) { + AlignAndCutImage->SaveToFile(FormatFileName("/sdcard/img_tmp/alg.jpg")); + ImageTMP->SaveToFile(FormatFileName("/sdcard/img_tmp/alg_roi.jpg")); + } + + // must be deleted to have memory space for loading tflite + delete ImageTMP; + ImageTMP = NULL; + + // no align algo if set to 3 = off => no draw ref //add disable aligment algo |01.2023 + if (References[0].alignment_algo != 3) { + return LoadReferenceAlignmentValues(); + } + + return true; +} + +void ClassFlowAlignment::SaveReferenceAlignmentValues() +{ + FILE *pFile; + std::string zwtime, zwvalue; + + pFile = fopen(FileStoreRefAlignment.c_str(), "w"); + + if (strlen(zwtime.c_str()) == 0) { + time_t rawtime; + struct tm *timeinfo; + char buffer[80]; + + time(&rawtime); + timeinfo = localtime(&rawtime); + + strftime(buffer, 80, "%Y-%m-%dT%H:%M:%S", timeinfo); + zwtime = std::string(buffer); + } + + fputs(zwtime.c_str(), pFile); + fputs("\n", pFile); + + zwvalue = std::to_string(References[0].fastalg_x) + "\t" + std::to_string(References[0].fastalg_y); + zwvalue = zwvalue + "\t" + std::to_string(References[0].fastalg_SAD) + "\t" + std::to_string(References[0].fastalg_min); + zwvalue = zwvalue + "\t" + std::to_string(References[0].fastalg_max) + "\t" + std::to_string(References[0].fastalg_avg); + fputs(zwvalue.c_str(), pFile); + fputs("\n", pFile); + + zwvalue = std::to_string(References[1].fastalg_x) + "\t" + std::to_string(References[1].fastalg_y); + zwvalue = zwvalue + "\t" + std::to_string(References[1].fastalg_SAD) + "\t" + std::to_string(References[1].fastalg_min); + zwvalue = zwvalue + "\t" + std::to_string(References[1].fastalg_max) + "\t" + std::to_string(References[1].fastalg_avg); + fputs(zwvalue.c_str(), pFile); + fputs("\n", pFile); + + fclose(pFile); +} + +bool ClassFlowAlignment::LoadReferenceAlignmentValues(void) +{ + FILE *pFile; + char zw[1024]; + string zwvalue; + std::vector splitted; + + pFile = fopen(FileStoreRefAlignment.c_str(), "r"); + + if (pFile == NULL) { + return false; + } + + fgets(zw, 1024, pFile); + ESP_LOGD(TAG, "%s", zw); + + fgets(zw, 1024, pFile); + splitted = ZerlegeZeile(std::string(zw), " \t"); + + if (splitted.size() < 6) { + fclose(pFile); + return false; + } + + References[0].fastalg_x = stoi(splitted[0]); + References[0].fastalg_y = stoi(splitted[1]); + References[0].fastalg_SAD = stof(splitted[2]); + References[0].fastalg_min = stoi(splitted[3]); + References[0].fastalg_max = stoi(splitted[4]); + References[0].fastalg_avg = stof(splitted[5]); + + fgets(zw, 1024, pFile); + splitted = ZerlegeZeile(std::string(zw)); + + if (splitted.size() < 6) { + fclose(pFile); + return false; + } + + References[1].fastalg_x = stoi(splitted[0]); + References[1].fastalg_y = stoi(splitted[1]); + References[1].fastalg_SAD = stof(splitted[2]); + References[1].fastalg_min = stoi(splitted[3]); + References[1].fastalg_max = stoi(splitted[4]); + References[1].fastalg_avg = stof(splitted[5]); + + fclose(pFile); + + /*#ifdef DEBUG_DETAIL_ON + std::string _zw = "\tLoadReferences[0]\tx,y:\t" + std::to_string(References[0].fastalg_x) + "\t" + std::to_string(References[0].fastalg_x); + _zw = _zw + "\tSAD, min, max, avg:\t" + std::to_string(References[0].fastalg_SAD) + "\t" + std::to_string(References[0].fastalg_min); + _zw = _zw + "\t" + std::to_string(References[0].fastalg_max) + "\t" + std::to_string(References[0].fastalg_avg); + LogFile.WriteToDedicatedFile("/sdcard/alignment.txt", _zw); + _zw = "\tLoadReferences[1]\tx,y:\t" + std::to_string(References[1].fastalg_x) + "\t" + std::to_string(References[1].fastalg_x); + _zw = _zw + "\tSAD, min, max, avg:\t" + std::to_string(References[1].fastalg_SAD) + "\t" + std::to_string(References[1].fastalg_min); + _zw = _zw + "\t" + std::to_string(References[1].fastalg_max) + "\t" + std::to_string(References[1].fastalg_avg); + LogFile.WriteToDedicatedFile("/sdcard/alignment.txt", _zw); + #endif*/ + + return true; +} + +void ClassFlowAlignment::DrawRef(CImageBasis *_zw) +{ + if (_zw->ImageOkay()) { + _zw->drawRect(References[0].target_x, References[0].target_y, References[0].width, References[0].height, 255, 0, 0, 2); + _zw->drawRect(References[1].target_x, References[1].target_y, References[1].width, References[1].height, 255, 0, 0, 2); + } +} diff --git a/code/components/jomjol_flowcontroll/ClassFlowAlignment.h b/code/components/jomjol_flowcontroll/ClassFlowAlignment.h index e7a1591fe..2d0944cbf 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowAlignment.h +++ b/code/components/jomjol_flowcontroll/ClassFlowAlignment.h @@ -1,54 +1,51 @@ -#pragma once - -#ifndef CLASSFLOWALIGNMENT_H -#define CLASSFLOWALIGNMENT_H - -#include "ClassFlow.h" -#include "Helper.h" -#include "CAlignAndCutImage.h" -#include "CFindTemplate.h" - -#include - -using namespace std; - -class ClassFlowAlignment : - public ClassFlow -{ -protected: - float initialrotate; - bool initialmirror; - bool initialflip; - bool use_antialiasing; - RefInfo References[2]; - int anz_ref; - string namerawimage; - bool SaveAllFiles; - CAlignAndCutImage *AlignAndCutImage; - std::string FileStoreRefAlignment; - float SAD_criteria; - - void SetInitialParameter(void); - bool LoadReferenceAlignmentValues(void); - void SaveReferenceAlignmentValues(); - -public: - CImageBasis *ImageBasis, *ImageTMP; - #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG - ImageData *AlgROI; - #endif - - ClassFlowAlignment(std::vector* lfc); - - CAlignAndCutImage* GetAlignAndCutImage(){return AlignAndCutImage;}; - - void DrawRef(CImageBasis *_zw); - - bool ReadParameter(FILE* pfile, string& aktparamgraph); - bool doFlow(string time); - string getHTMLSingleStep(string host); - string name(){return "ClassFlowAlignment";}; -}; - - -#endif //CLASSFLOWALIGNMENT_H +#pragma once + +#ifndef CLASSFLOWALIGNMENT_H +#define CLASSFLOWALIGNMENT_H + +#include "ClassFlow.h" +#include "Helper.h" +#include "CAlignAndCutImage.h" +#include "CFindTemplate.h" + +#include + +using namespace std; + +class ClassFlowAlignment : public ClassFlow +{ +protected: + float initialrotate; + bool initialflip; + bool use_antialiasing; + RefInfo References[2]; + int anz_ref; + string namerawimage; + bool SaveAllFiles; + CAlignAndCutImage *AlignAndCutImage; + std::string FileStoreRefAlignment; + float SAD_criteria; + + void SetInitialParameter(void); + bool LoadReferenceAlignmentValues(void); + void SaveReferenceAlignmentValues(); + +public: + CImageBasis *ImageBasis, *ImageTMP; +#ifdef ALGROI_LOAD_FROM_MEM_AS_JPG + ImageData *AlgROI; +#endif + + ClassFlowAlignment(std::vector *lfc); + + CAlignAndCutImage *GetAlignAndCutImage() { return AlignAndCutImage; }; + + void DrawRef(CImageBasis *_zw); + + bool ReadParameter(FILE *pfile, string &aktparamgraph); + bool doFlow(string time); + string getHTMLSingleStep(string host); + string name() { return "ClassFlowAlignment"; }; +}; + +#endif // CLASSFLOWALIGNMENT_H diff --git a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp index 4eb3544a2..146063f3d 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp @@ -19,7 +19,6 @@ static const char* TAG = "CNN"; static heap_trace_record_t trace_record[NUM_RECORDS]; // This buffer must be in internal RAM #endif - ClassFlowCNNGeneral::ClassFlowCNNGeneral(ClassFlowAlignment *_flowalign, t_CNNType _cnntype) : ClassFlowImage(NULL, TAG) { string cnnmodelfile = ""; modelxsize = 1; @@ -36,8 +35,7 @@ ClassFlowCNNGeneral::ClassFlowCNNGeneral(ClassFlowAlignment *_flowalign, t_CNNTy imagesRetention = 5; } - -string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution, int prev, float _before_narrow_Analog, float analogDigitalTransitionStart) { +string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution, int prev, float _before_narrow_Analog, float AnalogToDigitTransitionStart) { string result = ""; if (GENERAL[_analog]->ROI.size() == 0) { @@ -65,7 +63,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution return result; } - if (CNNType == Digital) { + if (CNNType == Digit) { for (int i = 0; i < GENERAL[_analog]->ROI.size(); ++i) { if (GENERAL[_analog]->ROI[i]->result_klasse >= 10) { result = result + "N"; @@ -77,7 +75,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution return result; } - if ((CNNType == DoubleHyprid10) || (CNNType == Digital100)) { + if ((CNNType == DoubleHyprid10) || (CNNType == Digit100)) { float number = GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float; // NaN? if (number >= 0) { @@ -92,7 +90,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution } else { if (_before_narrow_Analog >= 0) { - prev = PointerEvalHybridNew(GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float, _before_narrow_Analog, prev, true, analogDigitalTransitionStart); + prev = PointerEvalHybridNew(GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float, _before_narrow_Analog, prev, true, AnalogToDigitTransitionStart); } else { prev = PointerEvalHybridNew(GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float, prev, prev); @@ -103,7 +101,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution } else { result = "N"; - if (_extendedResolution && (CNNType != Digital)) { + if (_extendedResolution && (CNNType != Digit)) { result = "NN"; } } @@ -137,13 +135,13 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution * 0.1 => 0 (eval_predecessors) * The 0 makes a 9.9 to 0 (eval_predecessors) * The 0 makes a 9.8 to 0 - * @param Analog_Predecessors false/true if the last ROI is an analog or digital ROI (default=false) + * @param Analog_Predecessors false/true if the last ROI is an analog or digit ROI (default=false) * runs in special handling because analog is much less precise - * @param digitalAnalogTransitionStart start of the transitionlogic begins on number_of_predecessor (default=9.2) + * @param digitAnalogTransitionStart start of the transitionlogic begins on number_of_predecessor (default=9.2) * * @return int the determined number of the current ROI */ -int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors, float digitalAnalogTransitionStart) { +int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors, float digitAnalogTransitionStart) { int result; int result_after_decimal_point = ((int) floor(number * 10)) % 10; int result_before_decimal_point = ((int) floor(number) + 10) % 10; @@ -155,21 +153,21 @@ int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_pred result = (int) ((int) trunc(round((number+10 % 10)*100)) ) / 100; LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalHybridNew - No predecessor - Result = " + std::to_string(result) + - " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digital_Uncertainty = " + std::to_string(Digital_Uncertainty)); + " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digit_Uncertainty = " + std::to_string(Digit_Uncertainty)); return result; } if (Analog_Predecessors) { - result = PointerEvalAnalogToDigitNew(number, number_of_predecessors, eval_predecessors, digitalAnalogTransitionStart); + result = PointerEvalAnalogToDigitNew(number, number_of_predecessors, eval_predecessors, digitAnalogTransitionStart); LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalHybridNew - Analog predecessor, evaluation over PointerEvalAnalogNew = " + std::to_string(result) + - " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digital_Uncertainty = " + std::to_string(Digital_Uncertainty)); + " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digit_Uncertainty = " + std::to_string(Digit_Uncertainty)); return result; } - if ((number_of_predecessors >= Digital_Transition_Area_Predecessor ) && (number_of_predecessors <= (10.0 - Digital_Transition_Area_Predecessor))) { - // no digit change, because predecessor is far enough away (0+/-DigitalTransitionRangePredecessor) --> number is rounded + if ((number_of_predecessors >= Digit_Transition_Area_Predecessor ) && (number_of_predecessors <= (10.0 - Digit_Transition_Area_Predecessor))) { + // no digit change, because predecessor is far enough away (0+/-DigitTransitionRangePredecessor) --> number is rounded // Band around the digit --> Round off, as digit reaches inaccuracy in the frame - if ((result_after_decimal_point <= DigitalBand) || (result_after_decimal_point >= (10-DigitalBand))) { + if ((result_after_decimal_point <= DigitBand) || (result_after_decimal_point >= (10-DigitBand))) { result = ((int) round(number) + 10) % 10; } else { @@ -177,7 +175,7 @@ int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_pred } LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalHybridNew - NO analogue predecessor, no change of digits, as pre-decimal point far enough away = " + std::to_string(result) + - " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digital_Uncertainty = " + std::to_string(Digital_Uncertainty)); + " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digit_Uncertainty = " + std::to_string(Digit_Uncertainty)); return result; } @@ -194,17 +192,16 @@ int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_pred result = result_before_decimal_point % 10; } LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalHybridNew - NO analogue predecessor, zero crossing has taken placen = " + std::to_string(result) + - " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digital_Uncertainty = " + std::to_string(Digital_Uncertainty)); + " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digit_Uncertainty = " + std::to_string(Digit_Uncertainty)); return result; } - // remains only >= 9.x --> no zero crossing yet --> 2.8 --> 2, - // and from 9.7(DigitalTransitionRangeLead) 3.1 --> 2 + // and from 9.7(DigitTransitionRangeLead) 3.1 --> 2 // everything >=x.4 can be considered as current number in transition. With 9.x predecessor the current // number can still be x.6 - x.7. // Preceding (else - branch) does not already happen from 9. - if (Digital_Transition_Area_Forward>=number_of_predecessors || result_after_decimal_point >= 4) { + if (Digit_Transition_Area_Forward>=number_of_predecessors || result_after_decimal_point >= 4) { // The current digit, like the previous digit, does not yet have a zero crossing. result = result_before_decimal_point % 10; } @@ -215,40 +212,39 @@ int ClassFlowCNNGeneral::PointerEvalHybridNew(float number, float number_of_pred } LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalHybridNew - O analogue predecessor, >= 9.5 --> no zero crossing yet = " + std::to_string(result) + - " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digital_Uncertainty = " + std::to_string(Digital_Uncertainty) + " result_after_decimal_point = " + std::to_string(result_after_decimal_point)); + " number: " + std::to_string(number) + " number_of_predecessors = " + std::to_string(number_of_predecessors)+ " eval_predecessors = " + std::to_string(eval_predecessors) + " Digit_Uncertainty = " + std::to_string(Digit_Uncertainty) + " result_after_decimal_point = " + std::to_string(result_after_decimal_point)); return result; } - -int ClassFlowCNNGeneral::PointerEvalAnalogToDigitNew(float number, float numeral_preceder, int eval_predecessors, float analogDigitalTransitionStart) { +int ClassFlowCNNGeneral::PointerEvalAnalogToDigitNew(float number, float numeral_preceder, int eval_predecessors, float AnalogToDigitTransitionStart) { int result; int result_after_decimal_point = ((int) floor(number * 10)) % 10; int result_before_decimal_point = ((int) floor(number) + 10) % 10; bool roundedUp = false; - // Within the digital inequalities - if ((result_after_decimal_point >= (10-Digital_Uncertainty * 10)) // Band around the digit --> Round off, as digit reaches inaccuracy in the frame + // Within the digit inequalities + if ((result_after_decimal_point >= (10-Digit_Uncertainty * 10)) // Band around the digit --> Round off, as digit reaches inaccuracy in the frame || (eval_predecessors <= 4 && result_after_decimal_point>=6)) { // or digit runs after (analogue =0..4, digit >=6) result = (int) (round(number) + 10) % 10; roundedUp = true; // before/ after decimal point, because we adjust the number based on the uncertainty. result_after_decimal_point = ((int) floor(result * 10)) % 10; result_before_decimal_point = ((int) floor(result) + 10) % 10; - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalAnalogToDigitNew - Digital Uncertainty - Result = " + std::to_string(result) + + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalAnalogToDigitNew - Digit Uncertainty - Result = " + std::to_string(result) + " number: " + std::to_string(number) + " numeral_preceder: " + std::to_string(numeral_preceder) + " erg before comma: " + std::to_string(result_before_decimal_point) + " erg after comma: " + std::to_string(result_after_decimal_point)); } else { result = (int) ((int) trunc(number) + 10) % 10; - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalAnalogToDigitNew - NO digital Uncertainty - Result = " + std::to_string(result) + + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalAnalogToDigitNew - NO digit Uncertainty - Result = " + std::to_string(result) + " number: " + std::to_string(number) + " numeral_preceder = " + std::to_string(numeral_preceder)); } // No zero crossing has taken place. // Only eval_predecessors used because numeral_preceder could be wrong here. // numeral_preceder<=0.1 & eval_predecessors=9 corresponds to analogue was reset because of previous analogue that are not yet at 0. - if ((eval_predecessors>=6 && (numeral_preceder>analogDigitalTransitionStart || numeral_preceder<=0.2) && roundedUp)) { + if ((eval_predecessors>=6 && (numeral_preceder>AnalogToDigitTransitionStart || numeral_preceder<=0.2) && roundedUp)) { result = ((result_before_decimal_point+10) - 1) % 10; LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "PointerEvalAnalogToDigitNew - Nulldurchgang noch nicht stattgefunden = " + std::to_string(result) + " number: " + std::to_string(number) + @@ -259,7 +255,6 @@ int ClassFlowCNNGeneral::PointerEvalAnalogToDigitNew(float number, float numeral return result; } - int ClassFlowCNNGeneral::PointerEvalAnalogNew(float number, int numeral_preceder) { float number_min, number_max; int result; @@ -296,7 +291,6 @@ int ClassFlowCNNGeneral::PointerEvalAnalogNew(float number, int numeral_preceder return result; } - bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { std::vector splitted; @@ -322,7 +316,6 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { return true; } - while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) { splitted = ZerlegeZeile(aktparamgraph); if ((toUpper(splitted[0]) == "ROIIMAGESLOCATION") && (splitted.size() > 1)) { @@ -336,7 +329,9 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { } if ((toUpper(splitted[0]) == "ROIIMAGESRETENTION") && (splitted.size() > 1)) { - this->imagesRetention = std::stoi(splitted[1]); + if (isStringNumeric(splitted[1])) { + this->imagesRetention = std::stoi(splitted[1]); + } } if ((toUpper(splitted[0]) == "MODEL") && (splitted.size() > 1)) { @@ -344,7 +339,9 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { } if ((toUpper(splitted[0]) == "CNNGOODTHRESHOLD") && (splitted.size() > 1)) { - CNNGoodThreshold = std::stof(splitted[1]); + if (isStringNumeric(splitted[1])) { + CNNGoodThreshold = std::stof(splitted[1]); + } } if (splitted.size() >= 5) { @@ -366,9 +363,7 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { } if ((toUpper(splitted[0]) == "SAVEALLFILES") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") { - SaveAllFiles = true; - } + SaveAllFiles = alphanumericToBoolean(splitted[1]); } } @@ -378,7 +373,6 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { return false; } - for (int _ana = 0; _ana < GENERAL.size(); ++_ana) { for (int i = 0; i < GENERAL[_ana]->ROI.size(); ++i) { GENERAL[_ana]->ROI[i]->image = new CImageBasis("ROI " + GENERAL[_ana]->ROI[i]->name, @@ -391,7 +385,6 @@ bool ClassFlowCNNGeneral::ReadParameter(FILE* pfile, string& aktparamgraph) { return true; } - general* ClassFlowCNNGeneral::FindGENERAL(string _name_number) { for (int i = 0; i < GENERAL.size(); ++i) { if (GENERAL[i]->name == _name_number) { @@ -402,7 +395,6 @@ general* ClassFlowCNNGeneral::FindGENERAL(string _name_number) { return NULL; } - general* ClassFlowCNNGeneral::GetGENERAL(string _name, bool _create = true) { string _analog, _roi; int _pospunkt = _name.find_first_of("."); @@ -445,7 +437,6 @@ general* ClassFlowCNNGeneral::GetGENERAL(string _name, bool _create = true) { return _ret; } - string ClassFlowCNNGeneral::getHTMLSingleStep(string host) { string result, zw; std::vector htmlinfo; @@ -469,7 +460,6 @@ string ClassFlowCNNGeneral::getHTMLSingleStep(string host) { return result; } - bool ClassFlowCNNGeneral::doFlow(string time) { #ifdef HEAP_TRACING_CLASS_FLOW_CNN_GENERAL_DO_ALING_AND_CUT //register a buffer to record the memory trace @@ -500,7 +490,6 @@ bool ClassFlowCNNGeneral::doFlow(string time) { return true; } - bool ClassFlowCNNGeneral::doAlignAndCut(string time) { if (disabled) { return true; @@ -537,7 +526,6 @@ bool ClassFlowCNNGeneral::doAlignAndCut(string time) { return true; } - void ClassFlowCNNGeneral::DrawROI(CImageBasis *_zw) { if (_zw->ImageOkay()) { if (CNNType == Analogue || CNNType == Analogue100) { @@ -564,7 +552,6 @@ void ClassFlowCNNGeneral::DrawROI(CImageBasis *_zw) { } } - bool ClassFlowCNNGeneral::getNetworkParameter() { if (disabled) { return true; @@ -606,17 +593,17 @@ bool ClassFlowCNNGeneral::getNetworkParameter() { ESP_LOGD(TAG, "TFlite-Type set to DoubleHyprid10"); break; case 11: - CNNType = Digital; - ESP_LOGD(TAG, "TFlite-Type set to Digital"); + CNNType = Digit; + ESP_LOGD(TAG, "TFlite-Type set to Digit"); break; /* case 20: - CNNType = DigitalHyprid10; - ESP_LOGD(TAG, "TFlite-Type set to DigitalHyprid10"); + CNNType = DigitHyprid10; + ESP_LOGD(TAG, "TFlite-Type set to DigitHyprid10"); break; */ // case 22: -// CNNType = DigitalHyprid; -// ESP_LOGD(TAG, "TFlite-Type set to DigitalHyprid"); +// CNNType = DigitHyprid; +// ESP_LOGD(TAG, "TFlite-Type set to DigitHyprid"); // break; case 100: if (modelxsize==32 && modelysize == 32) { @@ -624,8 +611,8 @@ bool ClassFlowCNNGeneral::getNetworkParameter() { ESP_LOGD(TAG, "TFlite-Type set to Analogue100"); } else { - CNNType = Digital100; - ESP_LOGD(TAG, "TFlite-Type set to Digital"); + CNNType = Digit100; + ESP_LOGD(TAG, "TFlite-Type set to Digit"); } break; default: @@ -637,7 +624,6 @@ bool ClassFlowCNNGeneral::getNetworkParameter() { return true; } - bool ClassFlowCNNGeneral::doNeuralNetwork(string time) { if (disabled) { return true; @@ -700,8 +686,8 @@ bool ClassFlowCNNGeneral::doNeuralNetwork(string time) { } } break; - case Digital: - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CNN Type: Digital"); + case Digit: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CNN Type: Digit"); { GENERAL[n]->ROI[roi]->result_klasse = 0; GENERAL[n]->ROI[roi]->result_klasse = tflite->GetClassFromImageBasis(GENERAL[n]->ROI[roi]->image); @@ -792,10 +778,10 @@ bool ClassFlowCNNGeneral::doNeuralNetwork(string time) { } } } break; - case Digital100: + case Digit100: case Analogue100: { - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CNN Type: Digital100 or Analogue100"); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CNN Type: Digit100 or Analogue100"); int _num; float _result_save_file; @@ -842,16 +828,14 @@ bool ClassFlowCNNGeneral::doNeuralNetwork(string time) { return true; } - bool ClassFlowCNNGeneral::isExtendedResolution(int _number) { - if (CNNType == Digital) { + if (CNNType == Digit) { return false; } return true; } - std::vector ClassFlowCNNGeneral::GetHTMLInfo() { std::vector result; @@ -877,7 +861,7 @@ std::vector ClassFlowCNNGeneral::GetHTMLInfo() { zw->filename_org = GENERAL[_ana]->name + "_" + GENERAL[_ana]->ROI[i]->name + ".jpg"; } - if (CNNType == Digital) { + if (CNNType == Digit) { zw->val = GENERAL[_ana]->ROI[i]->result_klasse; } else { @@ -894,12 +878,10 @@ std::vector ClassFlowCNNGeneral::GetHTMLInfo() { return result; } - int ClassFlowCNNGeneral::getNumberGENERAL() { return GENERAL.size(); } - string ClassFlowCNNGeneral::getNameGENERAL(int _analog) { if (_analog < GENERAL.size()) { return GENERAL[_analog]->name; @@ -908,7 +890,6 @@ string ClassFlowCNNGeneral::getNameGENERAL(int _analog) { return "GENERAL DOES NOT EXIST"; } - general* ClassFlowCNNGeneral::GetGENERAL(int _analog) { if (_analog < GENERAL.size()) { return GENERAL[_analog]; @@ -917,7 +898,6 @@ general* ClassFlowCNNGeneral::GetGENERAL(int _analog) { return NULL; } - void ClassFlowCNNGeneral::UpdateNameNumbers(std::vector *_name_numbers) { for (int _dig = 0; _dig < GENERAL.size(); _dig++) { std::string _name = GENERAL[_dig]->name; @@ -934,7 +914,6 @@ void ClassFlowCNNGeneral::UpdateNameNumbers(std::vector *_name_numb } } - string ClassFlowCNNGeneral::getReadoutRawString(int _analog) { string rt = ""; @@ -948,7 +927,7 @@ string ClassFlowCNNGeneral::getReadoutRawString(int _analog) rt = rt + "," + RundeOutput(GENERAL[_analog]->ROI[i]->result_float, 1); } - if (CNNType == Digital) { + if (CNNType == Digit) { if (GENERAL[_analog]->ROI[i]->result_klasse >= 10) { rt = rt + ",N"; } @@ -957,10 +936,9 @@ string ClassFlowCNNGeneral::getReadoutRawString(int _analog) } } - if ((CNNType == DoubleHyprid10) || (CNNType == Digital100)) { + if ((CNNType == DoubleHyprid10) || (CNNType == Digit100)) { rt = rt + "," + RundeOutput(GENERAL[_analog]->ROI[i]->result_float, 1); } } return rt; } - diff --git a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.h b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.h index 8c3baac6a..9946d551a 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.h +++ b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.h @@ -11,10 +11,10 @@ enum t_CNNType { AutoDetect, Analogue, Analogue100, - Digital, - DigitalHyprid10, + Digit, + DigitHyprid10, DoubleHyprid10, - Digital100, + Digit100, None }; @@ -26,15 +26,6 @@ class ClassFlowCNNGeneral : std::vector GENERAL; float CNNGoodThreshold; - //moved to define.h - //float Analog_error = 3.0; - //float AnalogToDigtalFehler = 0.8; - //float Digital_Uncertainty = 0.2; - //int DigitalBand = 3; - //float Digital_Transition_Range_Predecessor = 2; - //float Digital_Transition_Area_Predecessor = 0.7; // 9.3 - 0.7 - //float Digital_Transition_Area_Forward = 9.7; // Pre-run zero crossing only happens from approx. 9.7 onwards - string cnnmodelfile; int modelxsize, modelysize, modelchannel; bool isLogImageSelect; @@ -44,8 +35,8 @@ class ClassFlowCNNGeneral : bool SaveAllFiles; int PointerEvalAnalogNew(float zahl, int numeral_preceder); - int PointerEvalAnalogToDigitNew(float zahl, float numeral_preceder, int eval_predecessors, float analogDigitalTransitionStart); - int PointerEvalHybridNew(float zahl, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors = false, float analogDigitalTransitionStart=9.2); + int PointerEvalAnalogToDigitNew(float zahl, float numeral_preceder, int eval_predecessors, float AnalogToDigitTransitionStart); + int PointerEvalHybridNew(float zahl, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors = false, float AnalogToDigitTransitionStart=9.2); @@ -61,7 +52,7 @@ class ClassFlowCNNGeneral : bool doFlow(string time); string getHTMLSingleStep(string host); - string getReadout(int _analog, bool _extendedResolution = false, int prev = -1, float _before_narrow_Analog = -1, float analogDigitalTransitionStart=9.2); + string getReadout(int _analog, bool _extendedResolution = false, int prev = -1, float _before_narrow_Analog = -1, float AnalogToDigitTransitionStart=9.2); string getReadoutRawString(int _analog); diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp index f54df869d..474a86ec8 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp @@ -32,7 +32,6 @@ static const char* TAG = "FLOWCTRL"; //#define DEBUG_DETAIL_ON - std::string ClassFlowControll::doSingleStep(std::string _stepname, std::string _host){ std::string _classname = ""; std::string result = ""; @@ -65,11 +64,19 @@ std::string ClassFlowControll::doSingleStep(std::string _stepname, std::string _ _classname = "ClassFlowInfluxDBv2"; } #endif //ENABLE_INFLUXDB + #ifdef ENABLE_WEBHOOK + if ((_stepname.compare("[Webhook]") == 0) || (_stepname.compare(";[Webhook]") == 0)){ + _classname = "ClassFlowWebhook"; + } + #endif //ENABLE_WEBHOOK for (int i = 0; i < FlowControll.size(); ++i) if (FlowControll[i]->name().compare(_classname) == 0){ - if (!(FlowControll[i]->name().compare("ClassFlowTakeImage") == 0)) // if it is a TakeImage, the image does not need to be included, this happens automatically with the html query. + if (!(FlowControll[i]->name().compare("ClassFlowTakeImage") == 0)) { + // if it is a TakeImage, the image does not need to be included, this happens automatically with the html query. FlowControll[i]->doFlow(""); + } + result = FlowControll[i]->getHTMLSingleStep(_host); } @@ -78,37 +85,51 @@ std::string ClassFlowControll::doSingleStep(std::string _stepname, std::string _ return result; } - std::string ClassFlowControll::TranslateAktstatus(std::string _input) { - if (_input.compare("ClassFlowTakeImage") == 0) + if (_input.compare("ClassFlowTakeImage") == 0) { return ("Take Image"); - if (_input.compare("ClassFlowAlignment") == 0) + } + + if (_input.compare("ClassFlowAlignment") == 0) { return ("Aligning"); - if (_input.compare("ClassFlowCNNGeneral") == 0) - return ("Digitalization of ROIs"); + } + + if (_input.compare("ClassFlowCNNGeneral") == 0) { + return ("Digitization of ROIs"); + } + #ifdef ENABLE_MQTT - if (_input.compare("ClassFlowMQTT") == 0) + if (_input.compare("ClassFlowMQTT") == 0) { return ("Sending MQTT"); + } #endif //ENABLE_MQTT + #ifdef ENABLE_INFLUXDB - if (_input.compare("ClassFlowInfluxDB") == 0) + if (_input.compare("ClassFlowInfluxDB") == 0) { return ("Sending InfluxDB"); - if (_input.compare("ClassFlowInfluxDBv2") == 0) + } + + if (_input.compare("ClassFlowInfluxDBv2") == 0) { return ("Sending InfluxDBv2"); + } #endif //ENABLE_INFLUXDB - if (_input.compare("ClassFlowPostProcessing") == 0) + #ifdef ENABLE_WEBHOOK + if (_input.compare("ClassFlowWebhook") == 0) { + return ("Sending Webhook"); + } + #endif //ENABLE_WEBHOOK + if (_input.compare("ClassFlowPostProcessing") == 0) { return ("Post-Processing"); + } return "Unkown Status"; } - -std::vector ClassFlowControll::GetAllDigital() +std::vector ClassFlowControll::GetAllDigit() { - if (flowdigit) - { - ESP_LOGD(TAG, "ClassFlowControll::GetAllDigital - flowdigit != NULL"); + if (flowdigit) { + ESP_LOGD(TAG, "ClassFlowControll::GetAllDigit - flowdigit != NULL"); return flowdigit->GetHTMLInfo(); } @@ -116,65 +137,63 @@ std::vector ClassFlowControll::GetAllDigital() return empty; } - std::vector ClassFlowControll::GetAllAnalog() { - if (flowanalog) + if (flowanalog) { return flowanalog->GetHTMLInfo(); + } std::vector empty; return empty; } - -t_CNNType ClassFlowControll::GetTypeDigital() +t_CNNType ClassFlowControll::GetTypeDigit() { - if (flowdigit) + if (flowdigit) { return flowdigit->getCNNType(); + } return t_CNNType::None; } - t_CNNType ClassFlowControll::GetTypeAnalog() { - if (flowanalog) + if (flowanalog) { return flowanalog->getCNNType(); + } return t_CNNType::None; } - #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG -void ClassFlowControll::DigitalDrawROI(CImageBasis *_zw) +void ClassFlowControll::DigitDrawROI(CImageBasis *_zw) { - if (flowdigit) + if (flowdigit) { flowdigit->DrawROI(_zw); + } } - void ClassFlowControll::AnalogDrawROI(CImageBasis *_zw) { - if (flowanalog) + if (flowanalog) { flowanalog->DrawROI(_zw); + } } #endif - #ifdef ENABLE_MQTT bool ClassFlowControll::StartMQTTService() { /* Start the MQTT service */ - for (int i = 0; i < FlowControll.size(); ++i) { - if (FlowControll[i]->name().compare("ClassFlowMQTT") == 0) { - return ((ClassFlowMQTT*) (FlowControll[i]))->Start(AutoInterval); - } - } + for (int i = 0; i < FlowControll.size(); ++i) { + if (FlowControll[i]->name().compare("ClassFlowMQTT") == 0) { + return ((ClassFlowMQTT*) (FlowControll[i]))->Start(AutoInterval); + } + } return false; } #endif //ENABLE_MQTT - void ClassFlowControll::SetInitialParameter(void) { AutoStart = false; @@ -189,7 +208,6 @@ void ClassFlowControll::SetInitialParameter(void) aktstatusWithTime = aktstatus; } - bool ClassFlowControll::getIsAutoStart(void) { return AutoStart; @@ -201,69 +219,81 @@ void ClassFlowControll::setAutoStartInterval(long &_interval) _interval = AutoInterval * 60 * 1000; // AutoInterval: minutes -> ms } - ClassFlow* ClassFlowControll::CreateClassFlow(std::string _type) { ClassFlow* cfc = NULL; _type = trim(_type); - if (toUpper(_type).compare("[TAKEIMAGE]") == 0) - { + if (toUpper(_type).compare("[TAKEIMAGE]") == 0) { cfc = new ClassFlowTakeImage(&FlowControll); flowtakeimage = (ClassFlowTakeImage*) cfc; } - if (toUpper(_type).compare("[ALIGNMENT]") == 0) - { + + if (toUpper(_type).compare("[ALIGNMENT]") == 0) { cfc = new ClassFlowAlignment(&FlowControll); flowalignment = (ClassFlowAlignment*) cfc; } - if (toUpper(_type).compare("[ANALOG]") == 0) - { + + if (toUpper(_type).compare("[ANALOG]") == 0) { cfc = new ClassFlowCNNGeneral(flowalignment); flowanalog = (ClassFlowCNNGeneral*) cfc; } - if (toUpper(_type).compare(0, 7, "[DIGITS") == 0) - { + + if (toUpper(_type).compare(0, 7, "[DIGITS") == 0) { cfc = new ClassFlowCNNGeneral(flowalignment); flowdigit = (ClassFlowCNNGeneral*) cfc; } + #ifdef ENABLE_MQTT - if (toUpper(_type).compare("[MQTT]") == 0) + if (toUpper(_type).compare("[MQTT]") == 0) { cfc = new ClassFlowMQTT(&FlowControll); + } #endif //ENABLE_MQTT + #ifdef ENABLE_INFLUXDB - if (toUpper(_type).compare("[INFLUXDB]") == 0) + if (toUpper(_type).compare("[INFLUXDB]") == 0) { cfc = new ClassFlowInfluxDB(&FlowControll); - if (toUpper(_type).compare("[INFLUXDBV2]") == 0) + } + + if (toUpper(_type).compare("[INFLUXDBV2]") == 0) { cfc = new ClassFlowInfluxDBv2(&FlowControll); + } #endif //ENABLE_INFLUXDB + #ifdef ENABLE_WEBHOOK + if (toUpper(_type).compare("[WEBHOOK]") == 0) + cfc = new ClassFlowWebhook(&FlowControll); + #endif //ENABLE_WEBHOOK - if (toUpper(_type).compare("[POSTPROCESSING]") == 0) - { + if (toUpper(_type).compare("[POSTPROCESSING]") == 0) { cfc = new ClassFlowPostProcessing(&FlowControll, flowanalog, flowdigit); flowpostprocessing = (ClassFlowPostProcessing*) cfc; } - if (cfc) // Attached only if it is not [AutoTimer], because this is for FlowControll + if (cfc) { + // Attached only if it is not [AutoTimer], because this is for FlowControll FlowControll.push_back(cfc); + } - if (toUpper(_type).compare("[AUTOTIMER]") == 0) - cfc = this; + if (toUpper(_type).compare("[AUTOTIMER]") == 0) { + cfc = this; + } - if (toUpper(_type).compare("[DATALOGGING]") == 0) - cfc = this; + if (toUpper(_type).compare("[DATALOGGING]") == 0) { + cfc = this; + } - if (toUpper(_type).compare("[DEBUG]") == 0) - cfc = this; + if (toUpper(_type).compare("[DEBUG]") == 0) { + cfc = this; + } - if (toUpper(_type).compare("[SYSTEM]") == 0) - cfc = this; + if (toUpper(_type).compare("[SYSTEM]") == 0) { + cfc = this; + } return cfc; } - void ClassFlowControll::InitFlow(std::string config) { aktstatus = "Initialization"; @@ -284,62 +314,55 @@ void ClassFlowControll::InitFlow(std::string config) line = ""; char zw[1024]; - if (pFile != NULL) - { + + if (pFile != NULL) { fgets(zw, 1024, pFile); ESP_LOGD(TAG, "%s", zw); line = std::string(zw); } - while ((line.size() > 0) && !(feof(pFile))) - { + while ((line.size() > 0) && !(feof(pFile))) { cfc = CreateClassFlow(line); -// printf("Name: %s\n", cfc->name().c_str()); - if (cfc) - { - ESP_LOGD(TAG, "Start ReadParameter (%s)", line.c_str()); + // printf("Name: %s\n", cfc->name().c_str()); + + if (cfc) { + ESP_LOGE(TAG, "Start ReadParameter (%s)", line.c_str()); cfc->ReadParameter(pFile, line); } - else - { + else { line = ""; - if (fgets(zw, 1024, pFile) && !feof(pFile)) - { - ESP_LOGD(TAG, "Read: %s", zw); - line = std::string(zw); - } + + if (fgets(zw, 1024, pFile) && !feof(pFile)) { + ESP_LOGD(TAG, "Read: %s", zw); + line = std::string(zw); + } } } fclose(pFile); } - std::string* ClassFlowControll::getActStatusWithTime() { return &aktstatusWithTime; } - std::string* ClassFlowControll::getActStatus() { return &aktstatus; } - void ClassFlowControll::setActStatus(std::string _aktstatus) { aktstatus = _aktstatus; aktstatusWithTime = aktstatus; } - void ClassFlowControll::doFlowTakeImageOnly(string time) { std::string zw_time; - for (int i = 0; i < FlowControll.size(); ++i) - { + for (int i = 0; i < FlowControll.size(); ++i) { if (FlowControll[i]->name() == "ClassFlowTakeImage") { zw_time = getCurrentTimeString("%H:%M:%S"); aktstatus = TranslateAktstatus(FlowControll[i]->name()); @@ -353,7 +376,6 @@ void ClassFlowControll::doFlowTakeImageOnly(string time) } } - bool ClassFlowControll::doFlow(string time) { bool result = true; @@ -373,8 +395,7 @@ bool ClassFlowControll::doFlow(string time) //checkNtpStatus(0); - for (int i = 0; i < FlowControll.size(); ++i) - { + for (int i = 0; i < FlowControll.size(); ++i) { zw_time = getCurrentTimeString("%H:%M:%S"); aktstatus = TranslateAktstatus(FlowControll[i]->name()); aktstatusWithTime = aktstatus + " (" + zw_time + ")"; @@ -391,7 +412,7 @@ bool ClassFlowControll::doFlow(string time) if (!FlowControll[i]->doFlow(time)){ repeat++; LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Fehler im vorheriger Schritt - wird zum " + to_string(repeat) + ". Mal wiederholt"); - if (i) i -= 1; // vPrevious step must be repeated (probably take pictures) + if (i) { i -= 1; } // vPrevious step must be repeated (probably take pictures) result = false; if (repeat > 5) { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wiederholung 5x nicht erfolgreich --> reboot"); @@ -399,8 +420,7 @@ bool ClassFlowControll::doFlow(string time) //Step was repeated 5x --> reboot } } - else - { + else { result = true; } @@ -424,27 +444,29 @@ bool ClassFlowControll::doFlow(string time) string ClassFlowControll::getReadoutAll(int _type) { std::string out = ""; - if (flowpostprocessing) - { + + if (flowpostprocessing) { std::vector *numbers = flowpostprocessing->GetNumbers(); - for (int i = 0; i < (*numbers).size(); ++i) - { + for (int i = 0; i < (*numbers).size(); ++i) { out = out + (*numbers)[i]->name + "\t"; + switch (_type) { case READOUT_TYPE_VALUE: out = out + (*numbers)[i]->ReturnValue; break; case READOUT_TYPE_PREVALUE: - if (flowpostprocessing->PreValueUse) - { - if ((*numbers)[i]->PreValueOkay) + if (flowpostprocessing->PreValueUse) { + if ((*numbers)[i]->PreValueOkay) { out = out + (*numbers)[i]->ReturnPreValue; - else - out = out + "PreValue too old"; + } + else { + out = out + "PreValue too old"; + } } - else + else { out = out + "PreValue deactivated"; + } break; case READOUT_TYPE_RAWVALUE: out = out + (*numbers)[i]->ReturnRawValue; @@ -453,8 +475,10 @@ string ClassFlowControll::getReadoutAll(int _type) out = out + (*numbers)[i]->ErrorMessageText; break; } - if (i < (*numbers).size()-1) + + if (i < (*numbers).size()-1) { out = out + "\r\n"; + } } // ESP_LOGD(TAG, "OUT: %s", out.c_str()); } @@ -462,43 +486,24 @@ string ClassFlowControll::getReadoutAll(int _type) return out; } - string ClassFlowControll::getReadout(bool _rawvalue = false, bool _noerror = false, int _number = 0) { - if (flowpostprocessing) + if (flowpostprocessing) { return flowpostprocessing->getReadoutParam(_rawvalue, _noerror, _number); - - string zw = ""; - string result = ""; - - for (int i = 0; i < FlowControll.size(); ++i) - { - zw = FlowControll[i]->getReadout(); - if (zw.length() > 0) - { - if (result.length() == 0) - result = zw; - else - result = result + "\t" + zw; - } } - return result; + return std::string(""); } - string ClassFlowControll::GetPrevalue(std::string _number) { - if (flowpostprocessing) - { + if (flowpostprocessing) { return flowpostprocessing->GetPreValue(_number); } - return std::string(""); } - bool ClassFlowControll::UpdatePrevalue(std::string _newvalue, std::string _numbers, bool _extern) { double newvalueAsDouble; @@ -519,10 +524,12 @@ bool ClassFlowControll::UpdatePrevalue(std::string _newvalue, std::string _numbe } if (flowpostprocessing) { - if (flowpostprocessing->SetPreValue(newvalueAsDouble, _numbers, _extern)) + if (flowpostprocessing->SetPreValue(newvalueAsDouble, _numbers, _extern)) { return true; - else + } + else { return false; + } } else { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "UpdatePrevalue: ERROR - Class Post-Processing not initialized"); @@ -530,93 +537,85 @@ bool ClassFlowControll::UpdatePrevalue(std::string _newvalue, std::string _numbe } } - bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph) { std::vector splitted; aktparamgraph = trim(aktparamgraph); - if (aktparamgraph.size() == 0) - if (!this->GetNextParagraph(pfile, aktparamgraph)) + if (aktparamgraph.size() == 0) { + if (!this->GetNextParagraph(pfile, aktparamgraph)) { return false; - + } + } if ((toUpper(aktparamgraph).compare("[AUTOTIMER]") != 0) && (toUpper(aktparamgraph).compare("[DEBUG]") != 0) && - (toUpper(aktparamgraph).compare("[SYSTEM]") != 0 && (toUpper(aktparamgraph).compare("[DATALOGGING]") != 0))) // Paragraph passt nicht zu Debug oder DataLogging + (toUpper(aktparamgraph).compare("[SYSTEM]") != 0 && (toUpper(aktparamgraph).compare("[DATALOGGING]") != 0))) { + // Paragraph passt nicht zu Debug oder DataLogging return false; + } - while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) - { + while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) { splitted = ZerlegeZeile(aktparamgraph, " ="); - if ((toUpper(splitted[0]) == "AUTOSTART") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") + + if ((toUpper(splitted[0]) == "AUTOSTART") && (splitted.size() > 1)) { + AutoStart = alphanumericToBoolean(splitted[1]); + } + + if ((toUpper(splitted[0]) == "INTERVAL") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { - AutoStart = true; + AutoInterval = std::stof(splitted[1]); } } - if ((toUpper(splitted[0]) == "INTERVAL") && (splitted.size() > 1)) - { - AutoInterval = std::stof(splitted[1]); + if ((toUpper(splitted[0]) == "DATALOGACTIVE") && (splitted.size() > 1)) { + LogFile.SetDataLogToSD(alphanumericToBoolean(splitted[1])); } - if ((toUpper(splitted[0]) == "DATALOGACTIVE") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") + if ((toUpper(splitted[0]) == "DATAFILESRETENTION") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { - LogFile.SetDataLogToSD(true); - } - else { - LogFile.SetDataLogToSD(false); + LogFile.SetDataLogRetention(std::stoi(splitted[1])); } } - if ((toUpper(splitted[0]) == "DATAFILESRETENTION") && (splitted.size() > 1)) - { - LogFile.SetDataLogRetention(std::stoi(splitted[1])); - } - - if ((toUpper(splitted[0]) == "LOGLEVEL") && (splitted.size() > 1)) - { + if ((toUpper(splitted[0]) == "LOGLEVEL") && (splitted.size() > 1)) { /* matches esp_log_level_t */ - if ((toUpper(splitted[1]) == "TRUE") || (toUpper(splitted[1]) == "2")) - { + if ((toUpper(splitted[1]) == "TRUE") || (toUpper(splitted[1]) == "2")) { LogFile.setLogLevel(ESP_LOG_WARN); } - else if ((toUpper(splitted[1]) == "FALSE") || (toUpper(splitted[1]) == "0") || (toUpper(splitted[1]) == "1")) - { + else if ((toUpper(splitted[1]) == "FALSE") || (toUpper(splitted[1]) == "0") || (toUpper(splitted[1]) == "1")) { LogFile.setLogLevel(ESP_LOG_ERROR); } - else if (toUpper(splitted[1]) == "3") - { + else if (toUpper(splitted[1]) == "3") { LogFile.setLogLevel(ESP_LOG_INFO); } - else if (toUpper(splitted[1]) == "4") - { + else if (toUpper(splitted[1]) == "4") { LogFile.setLogLevel(ESP_LOG_DEBUG); } /* If system reboot was not triggered by user and reboot was caused by execption -> keep log level to DEBUG */ - if (!getIsPlannedReboot() && (esp_reset_reason() == ESP_RST_PANIC)) + if (!getIsPlannedReboot() && (esp_reset_reason() == ESP_RST_PANIC)) { LogFile.setLogLevel(ESP_LOG_DEBUG); + } } - if ((toUpper(splitted[0]) == "LOGFILESRETENTION") && (splitted.size() > 1)) - { - LogFile.SetLogFileRetention(std::stoi(splitted[1])); + + if ((toUpper(splitted[0]) == "LOGFILESRETENTION") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) + { + LogFile.SetLogFileRetention(std::stoi(splitted[1])); + } } /* TimeServer and TimeZone got already read from the config, see setupTime () */ #if (defined WLAN_USE_ROAMING_BY_SCANNING || (defined WLAN_USE_MESH_ROAMING && defined WLAN_USE_MESH_ROAMING_ACTIVATE_CLIENT_TRIGGERED_QUERIES)) - if ((toUpper(splitted[0]) == "RSSITHRESHOLD") && (splitted.size() > 1)) - { + if ((toUpper(splitted[0]) == "RSSITHRESHOLD") && (splitted.size() > 1)) { int RSSIThresholdTMP = atoi(splitted[1].c_str()); RSSIThresholdTMP = min(0, max(-100, RSSIThresholdTMP)); // Verify input limits (-100 - 0) - if (ChangeRSSIThreshold(WLAN_CONFIG_FILE, RSSIThresholdTMP)) - { + if (ChangeRSSIThreshold(WLAN_CONFIG_FILE, RSSIThresholdTMP)) { // reboot necessary so that the new wlan.ini is also used !!! fclose(pfile); LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Rebooting to activate new RSSITHRESHOLD ..."); @@ -625,10 +624,8 @@ bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph) } #endif - if ((toUpper(splitted[0]) == "HOSTNAME") && (splitted.size() > 1)) - { - if (ChangeHostName(WLAN_CONFIG_FILE, splitted[1])) - { + if ((toUpper(splitted[0]) == "HOSTNAME") && (splitted.size() > 1)) { + if (ChangeHostName(WLAN_CONFIG_FILE, splitted[1])) { // reboot necessary so that the new wlan.ini is also used !!! fclose(pfile); LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Rebooting to activate new HOSTNAME..."); @@ -636,23 +633,19 @@ bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph) } } - if ((toUpper(splitted[0]) == "SETUPMODE") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - { - SetupModeActive = true; - } + if ((toUpper(splitted[0]) == "SETUPMODE") && (splitted.size() > 1)) { + SetupModeActive = alphanumericToBoolean(splitted[1]); } } return true; } - int ClassFlowControll::CleanTempFolder() { const char* folderPath = "/sdcard/img_tmp"; ESP_LOGD(TAG, "Clean up temporary folder to avoid damage of sdcard sectors: %s", folderPath); DIR *dir = opendir(folderPath); + if (!dir) { ESP_LOGE(TAG, "Failed to stat dir: %s", folderPath); return -1; @@ -660,31 +653,33 @@ int ClassFlowControll::CleanTempFolder() { struct dirent *entry; int deleted = 0; + while ((entry = readdir(dir)) != NULL) { std::string path = string(folderPath) + "/" + entry->d_name; - if (entry->d_type == DT_REG) { - if (unlink(path.c_str()) == 0) { - deleted ++; - } else { - ESP_LOGE(TAG, "can't delete file: %s", path.c_str()); - } - } else if (entry->d_type == DT_DIR) { - deleted += removeFolder(path.c_str(), TAG); - } + if (entry->d_type == DT_REG) { + if (unlink(path.c_str()) == 0) { + deleted ++; + } + else { + ESP_LOGE(TAG, "can't delete file: %s", path.c_str()); + } + } + else if (entry->d_type == DT_DIR) { + deleted += removeFolder(path.c_str(), TAG); + } } + closedir(dir); ESP_LOGD(TAG, "%d files deleted", deleted); return 0; } - esp_err_t ClassFlowControll::SendRawJPG(httpd_req_t *req) { return flowtakeimage != NULL ? flowtakeimage->SendRawJPG(req) : ESP_FAIL; } - esp_err_t ClassFlowControll::GetJPGStream(std::string _fn, httpd_req_t *req) { ESP_LOGD(TAG, "ClassFlowControll::GetJPGStream %s", _fn.c_str()); @@ -846,8 +841,8 @@ esp_err_t ClassFlowControll::GetJPGStream(std::string _fn, httpd_req_t *req) else { std::vector htmlinfo; - htmlinfo = GetAllDigital(); - ESP_LOGD(TAG, "After getClassFlowControll::GetAllDigital"); + htmlinfo = GetAllDigit(); + ESP_LOGD(TAG, "After getClassFlowControll::GetAllDigit"); for (int i = 0; i < htmlinfo.size(); ++i) { @@ -916,14 +911,20 @@ esp_err_t ClassFlowControll::GetJPGStream(std::string _fn, httpd_req_t *req) return result; } - string ClassFlowControll::getNumbersName() { return flowpostprocessing->getNumbersName(); } - string ClassFlowControll::getJSON() { return flowpostprocessing->GetJSON(); } + +/** + * @returns a vector of all current sequences + **/ +const std::vector &ClassFlowControll::getNumbers() +{ + return *flowpostprocessing->GetNumbers(); +} diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.h b/code/components/jomjol_flowcontroll/ClassFlowControll.h index e0d5f74e2..40b5ba112 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.h +++ b/code/components/jomjol_flowcontroll/ClassFlowControll.h @@ -17,6 +17,9 @@ #include "ClassFlowInfluxDB.h" #include "ClassFlowInfluxDBv2.h" #endif //ENABLE_INFLUXDB +#ifdef ENABLE_WEBHOOK + #include "ClassFlowWebhook.h" +#endif //ENABLE_WEBHOOK #include "ClassFlowCNNGeneral.h" class ClassFlowControll : @@ -52,12 +55,13 @@ class ClassFlowControll : string GetPrevalue(std::string _number = ""); bool ReadParameter(FILE* pfile, string& aktparamgraph); string getJSON(); + const std::vector &getNumbers(); string getNumbersName(); string TranslateAktstatus(std::string _input); #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG - void DigitalDrawROI(CImageBasis *_zw); + void DigitDrawROI(CImageBasis *_zw); void AnalogDrawROI(CImageBasis *_zw); #endif @@ -73,10 +77,10 @@ class ClassFlowControll : std::string* getActStatus(); void setActStatus(std::string _aktstatus); - std::vector GetAllDigital(); + std::vector GetAllDigit(); std::vector GetAllAnalog(); - t_CNNType GetTypeDigital(); + t_CNNType GetTypeDigit(); t_CNNType GetTypeAnalog(); #ifdef ENABLE_MQTT diff --git a/code/components/jomjol_flowcontroll/ClassFlowDefineTypes.h b/code/components/jomjol_flowcontroll/ClassFlowDefineTypes.h index 059a55b8f..63e8afe16 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowDefineTypes.h +++ b/code/components/jomjol_flowcontroll/ClassFlowDefineTypes.h @@ -5,6 +5,10 @@ #include "ClassFlowImage.h" +/** + * Properties of one ROI + * FIXME: naming of members could use some refactoring to comply with common C++ coding style guidelines + */ struct roi { int posx, posy, deltax, deltay; float result_float; @@ -14,56 +18,66 @@ struct roi { CImageBasis *image, *image_org; }; +/** + * FIXME: Why is this additional layer needed? + */ struct general { string name; std::vector ROI; }; enum t_RateType { - AbsoluteChange, - RateChange + AbsoluteChange, // ignores the time difference; only the value difference is used comparison with NumberPost.maxRate + RateChange // time difference is considered and a normalized rate is used for comparison with NumberPost.maxRate }; +/** + * Holds all properties and settings of a sequence. A sequence is a set of digit and/or analog ROIs that are combined to + * provide one meter reading (value). + * FIXME: can be renamed to `Sequence` + */ struct NumberPost { - float MaxRateValue; - bool useMaxRateValue; - t_RateType RateType; - bool ErrorMessage; - bool PreValueOkay; - bool AllowNegativeRates; - bool checkDigitIncreaseConsistency; - time_t lastvalue; - time_t timeStampTimeUTC; - string timeStamp; - double FlowRateAct; // m3 / min - double PreValue; // last value that was read out well - double Value; // last value read out, incl. corrections - string ReturnRateValue; // return value rate - string ReturnChangeAbsolute; // return value rate - string ReturnRawValue; // Raw value (with N & leading 0) - string ReturnValue; // corrected return value, if necessary with error message - string ReturnPreValue; // corrected return value without error message - string ErrorMessageText; // Error message for consistency check - int AnzahlAnalog; - int AnzahlDigital; - int DecimalShift; - int DecimalShiftInitial; - float AnalogDigitalTransitionStart; // When is the digit > x.1, i.e. when does it start to tilt? - int Nachkomma; + float MaxRateValue; // maxRate; upper bound for the difference between two consecutive readings; affected by maxRateType; + bool useMaxRateValue; // consistencyChecksEnabled; enables consistency checks; uses maxRate and maxRateType + t_RateType MaxRateType; // maxRateType; affects how the value of maxRate is used for comparing the current and previous value + bool ErrorMessage; // FIXME: not used; can be removed + int ChangeRateThreshold; // threshold parameter for negative rate detection + bool PreValueOkay; // previousValueValid; indicates that the reading of the previous round has no errors + bool AllowNegativeRates; // allowNegativeRate; defines if the consistency checks allow negative rates between consecutive meter readings. + bool checkDigitIncreaseConsistency; // extendedConsistencyCheck; performs an additional consistency check to avoid wrong readings + time_t timeStampLastValue; // Timestamp for the last read value; is used for the log + time_t timeStampLastPreValue; // Timestamp for the last PreValue set; is used for useMaxRateValue + time_t timeStampTimeUTC; // FIXME: not used; can be removed. + string timeStamp; // localTimeStr; timestamp of last valid reading formatted as local time + double FlowRateAct; // currentRate; ΔValue/min; since usage is not limited to water meters, the physical unit is not known. + double PreValue; // lastValidValue; most recent value that could be read w/o any errors + double Value; // value; most recent readout; may include corrections + string ReturnRateValue; // currentRateStr; current normalized rate; ΔValue/min + string ReturnChangeAbsolute; // currentChangeStr; absolute difference between current and previous measurement + string ReturnRawValue; // rawValueStr; Raw value (with N & leading 0) + string ReturnValue; // valueStr; corrected return value, if necessary with error message + string ReturnPreValue; // lastValidValueStr; corrected return value without error message + string ErrorMessageText; // errorMessage; Error message for consistency checks + int AnzahlAnalog; // numAnalogRoi; number of analog ROIs used in this sequence + int AnzahlDigit; // numDigitRoi; number of digit ROIs used in this sequence + int DecimalShift; // decimalShift; each increment shifts the decimal separator by one digit; value=value*10^decimalShift; pos. value shifts to the right + int DecimalShiftInitial; // decimalShiftInitial; same as decimalShift but is a const to reset decimalShift after calculations + float AnalogToDigitTransitionStart; // AnalogToDigitTransitionStartValue; FIXME: need a better description; When is the digit > x.1, i.e. when does it start to tilt? + int Nachkomma; // decimalPlaces; usually defined by the number of analog ROIs; affected by DecimalShift - string FieldV1; // Fieldname in InfluxDBv1 - string MeasurementV1; // Measurement in InfluxDBv1 + string FieldV1; // influxdbFieldName_v1; Name of the Field in InfluxDBv1 + string MeasurementV1; // influxdbMeasurementName_v1; Name of the Measurement in InfluxDBv1 - string FieldV2; // Fieldname in InfluxDBv2 - string MeasurementV2; // Measurement in InfluxDBv2 + string FieldV2; // influxdbFieldName_v2; Name of the Field in InfluxDBv2 + string MeasurementV2; // influxdbMeasurementName_v2; Name of the Measurement in InfluxDBv2 - bool isExtendedResolution; + bool isExtendedResolution; // extendResolution; Adds the decimal place of the least significant analog ROI to the value - general *digit_roi; - general *analog_roi; + general *digit_roi; // digitRoi; set of digit ROIs for the sequence + general *analog_roi; // analogRoi; set of analog ROIs for the sequence - string name; + string name; // name; Designation for the sequence }; #endif diff --git a/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp b/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp index 797491f6e..b1162f837 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp @@ -286,7 +286,7 @@ bool ClassFlowMQTT::doFlow(string zwtime) if (resultchangabs.length() > 0) { success |= MQTTPublish(namenumber + "changeabsolut", resultchangabs, qos, SetRetainFlag); // Legacy API - success |= MQTTPublish(namenumber + "rate_per_digitalization_round", resultchangabs, qos, SetRetainFlag); + success |= MQTTPublish(namenumber + "rate_per_Digitization_round", resultchangabs, qos, SetRetainFlag); } if (resultraw.length() > 0) diff --git a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp index 7e19c22c3..db4a3778b 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp @@ -15,124 +15,129 @@ static const char* TAG = "POSTPROC"; -std::string ClassFlowPostProcessing::getNumbersName() -{ +std::string ClassFlowPostProcessing::getNumbersName() { std::string ret=""; - for (int i = 0; i < NUMBERS.size(); ++i) - { + for (int i = 0; i < NUMBERS.size(); ++i) { ret += NUMBERS[i]->name; - if (i < NUMBERS.size()-1) + + if (i < NUMBERS.size()-1) { ret = ret + "\t"; + } } -// ESP_LOGI(TAG, "Result ClassFlowPostProcessing::getNumbersName: %s", ret.c_str()); + // ESP_LOGI(TAG, "Result ClassFlowPostProcessing::getNumbersName: %s", ret.c_str()); return ret; } -std::string ClassFlowPostProcessing::GetJSON(std::string _lineend) -{ +std::string ClassFlowPostProcessing::GetJSON(std::string _lineend) { std::string json="{" + _lineend; - for (int i = 0; i < NUMBERS.size(); ++i) - { + for (int i = 0; i < NUMBERS.size(); ++i) { json += "\"" + NUMBERS[i]->name + "\":" + _lineend; - json += getJsonFromNumber(i, _lineend) + _lineend; - if ((i+1) < NUMBERS.size()) + if ((i+1) < NUMBERS.size()) { json += "," + _lineend; + } } + json += "}"; return json; } - string ClassFlowPostProcessing::getJsonFromNumber(int i, std::string _lineend) { - std::string json = ""; + std::string json = ""; - json += " {" + _lineend; + json += " {" + _lineend; - if (NUMBERS[i]->ReturnValue.length() > 0) - json += " \"value\": \"" + NUMBERS[i]->ReturnValue + "\"," + _lineend; - else - json += " \"value\": \"\"," + _lineend; + if (NUMBERS[i]->ReturnValue.length() > 0) { + json += " \"value\": \"" + NUMBERS[i]->ReturnValue + "\"," + _lineend; + } + else { + json += " \"value\": \"\"," + _lineend; + } - json += " \"raw\": \"" + NUMBERS[i]->ReturnRawValue + "\"," + _lineend; - json += " \"pre\": \"" + NUMBERS[i]->ReturnPreValue + "\"," + _lineend; - json += " \"error\": \"" + NUMBERS[i]->ErrorMessageText + "\"," + _lineend; + json += " \"raw\": \"" + NUMBERS[i]->ReturnRawValue + "\"," + _lineend; + json += " \"pre\": \"" + NUMBERS[i]->ReturnPreValue + "\"," + _lineend; + json += " \"error\": \"" + NUMBERS[i]->ErrorMessageText + "\"," + _lineend; - if (NUMBERS[i]->ReturnRateValue.length() > 0) - json += " \"rate\": \"" + NUMBERS[i]->ReturnRateValue + "\"," + _lineend; - else - json += " \"rate\": \"\"," + _lineend; + if (NUMBERS[i]->ReturnRateValue.length() > 0) { + json += " \"rate\": \"" + NUMBERS[i]->ReturnRateValue + "\"," + _lineend; + } + else { + json += " \"rate\": \"\"," + _lineend; + } - json += " \"timestamp\": \"" + NUMBERS[i]->timeStamp + "\"" + _lineend; - json += " }" + _lineend; + json += " \"timestamp\": \"" + NUMBERS[i]->timeStamp + "\"" + _lineend; + json += " }" + _lineend; - return json; + return json; } - -string ClassFlowPostProcessing::GetPreValue(std::string _number) -{ +string ClassFlowPostProcessing::GetPreValue(std::string _number) { std::string result; int index = -1; - if (_number == "") - _number = "default"; + if (_number == "") { + _number = "default"; + } - for (int i = 0; i < NUMBERS.size(); ++i) - if (NUMBERS[i]->name == _number) + for (int i = 0; i < NUMBERS.size(); ++i) { + if (NUMBERS[i]->name == _number) { index = i; + } + } - if (index == -1) + if (index == -1) { return std::string(""); + } result = RundeOutput(NUMBERS[index]->PreValue, NUMBERS[index]->Nachkomma); return result; } - -bool ClassFlowPostProcessing::SetPreValue(double _newvalue, string _numbers, bool _extern) -{ +bool ClassFlowPostProcessing::SetPreValue(double _newvalue, string _numbers, bool _extern) { //ESP_LOGD(TAG, "SetPrevalue: %f, %s", zw, _numbers.c_str()); for (int j = 0; j < NUMBERS.size(); ++j) { //ESP_LOGD(TAG, "Number %d, %s", j, NUMBERS[j]->name.c_str()); + if (NUMBERS[j]->name == _numbers) { - if (_newvalue >= 0) { // if new value posivive, use provided value to preset PreValue + if (_newvalue >= 0) { + // if new value posivive, use provided value to preset PreValue NUMBERS[j]->PreValue = _newvalue; } - else { // if new value negative, use last raw value to preset PreValue + else { + // if new value negative, use last raw value to preset PreValue char* p; double ReturnRawValueAsDouble = strtod(NUMBERS[j]->ReturnRawValue.c_str(), &p); + if (ReturnRawValueAsDouble == 0) { - LogFile.WriteToFile(ESP_LOG_WARN, TAG, "SetPreValue: RawValue not a valid value for further processing: " - + NUMBERS[j]->ReturnRawValue); + LogFile.WriteToFile(ESP_LOG_WARN, TAG, "SetPreValue: RawValue not a valid value for further processing: " + NUMBERS[j]->ReturnRawValue); return false; } + NUMBERS[j]->PreValue = ReturnRawValueAsDouble; } NUMBERS[j]->ReturnPreValue = std::to_string(NUMBERS[j]->PreValue); NUMBERS[j]->PreValueOkay = true; - if (_extern) - { - time(&(NUMBERS[j]->lastvalue)); - localtime(&(NUMBERS[j]->lastvalue)); + if (_extern) { + time(&(NUMBERS[j]->timeStampLastPreValue)); + localtime(&(NUMBERS[j]->timeStampLastPreValue)); } + //ESP_LOGD(TAG, "Found %d! - set to %.8f", j, NUMBERS[j]->PreValue); UpdatePreValueINI = true; // Only update prevalue file if a new value is set SavePreValue(); - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "SetPreValue: PreValue for " + NUMBERS[j]->name + " set to " + - std::to_string(NUMBERS[j]->PreValue)); + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "SetPreValue: PreValue for " + NUMBERS[j]->name + " set to " + std::to_string(NUMBERS[j]->PreValue)); return true; } } @@ -141,9 +146,7 @@ bool ClassFlowPostProcessing::SetPreValue(double _newvalue, string _numbers, boo return false; // No new value was set (e.g. wrong numbersname, no numbers at all) } - -bool ClassFlowPostProcessing::LoadPreValue(void) -{ +bool ClassFlowPostProcessing::LoadPreValue(void) { std::vector splitted; FILE* pFile; char zw[1024]; @@ -152,30 +155,34 @@ bool ClassFlowPostProcessing::LoadPreValue(void) UpdatePreValueINI = false; // Conversion to the new format - pFile = fopen(FilePreValue.c_str(), "r"); - if (pFile == NULL) + + if (pFile == NULL) { return false; + } + + // Makes sure that an empty file is treated as such. + zw[0] = '\0'; fgets(zw, 1024, pFile); ESP_LOGD(TAG, "Read line Prevalue.ini: %s", zw); zwtime = trim(std::string(zw)); - if (zwtime.length() == 0) + + if (zwtime.length() == 0) { return false; + } splitted = HelperZerlegeZeile(zwtime, "\t"); - if (splitted.size() > 1) // Conversion to the new format - { - while ((splitted.size() > 1) && !_done) - { + + // Conversion to the new format + if (splitted.size() > 1) { + while ((splitted.size() > 1) && !_done) { name = trim(splitted[0]); zwtime = trim(splitted[1]); zwvalue = trim(splitted[2]); - for (int j = 0; j < NUMBERS.size(); ++j) - { - if (NUMBERS[j]->name == name) - { + for (int j = 0; j < NUMBERS.size(); ++j) { + if (NUMBERS[j]->name == name) { NUMBERS[j]->PreValue = stod(zwvalue.c_str()); NUMBERS[j]->ReturnPreValue = RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma + 1); // To be on the safe side, 1 digit more, as Exgtended Resolution may be on (will only be set during the first run). @@ -192,27 +199,30 @@ bool ClassFlowPostProcessing::LoadPreValue(void) whenStart.tm_sec = ss; whenStart.tm_isdst = -1; - NUMBERS[j]->lastvalue = mktime(&whenStart); + NUMBERS[j]->timeStampLastPreValue = mktime(&whenStart); time(&tStart); localtime(&tStart); - double difference = difftime(tStart, NUMBERS[j]->lastvalue); + double difference = difftime(tStart, NUMBERS[j]->timeStampLastPreValue); difference /= 60; - if (difference > PreValueAgeStartup) + + if (difference > PreValueAgeStartup) { NUMBERS[j]->PreValueOkay = false; - else + } + else { NUMBERS[j]->PreValueOkay = true; + } } } - if (!fgets(zw, 1024, pFile)) + if (!fgets(zw, 1024, pFile)) { _done = true; - else - { + } + else { ESP_LOGD(TAG, "Read line Prevalue.ini: %s", zw); splitted = HelperZerlegeZeile(trim(std::string(zw)), "\t"); - if (splitted.size() > 1) - { + + if (splitted.size() > 1) { name = trim(splitted[0]); zwtime = trim(splitted[1]); zwvalue = trim(splitted[2]); @@ -221,8 +231,8 @@ bool ClassFlowPostProcessing::LoadPreValue(void) } fclose(pFile); } - else // Old Format - { + else { + // Old Format fgets(zw, 1024, pFile); fclose(pFile); ESP_LOGD(TAG, "%s", zw); @@ -244,20 +254,21 @@ bool ClassFlowPostProcessing::LoadPreValue(void) ESP_LOGD(TAG, "TIME: %d, %d, %d, %d, %d, %d", whenStart.tm_year, whenStart.tm_mon, whenStart.tm_wday, whenStart.tm_hour, whenStart.tm_min, whenStart.tm_sec); - NUMBERS[0]->lastvalue = mktime(&whenStart); + NUMBERS[0]->timeStampLastPreValue = mktime(&whenStart); time(&tStart); localtime(&tStart); - double difference = difftime(tStart, NUMBERS[0]->lastvalue); + double difference = difftime(tStart, NUMBERS[0]->timeStampLastPreValue); difference /= 60; - if (difference > PreValueAgeStartup) + + if (difference > PreValueAgeStartup) { return false; + } NUMBERS[0]->Value = NUMBERS[0]->PreValue; NUMBERS[0]->ReturnValue = to_string(NUMBERS[0]->Value); - if (NUMBERS[0]->digit_roi || NUMBERS[0]->analog_roi) - { + if (NUMBERS[0]->digit_roi || NUMBERS[0]->analog_roi) { NUMBERS[0]->ReturnValue = RundeOutput(NUMBERS[0]->Value, NUMBERS[0]->Nachkomma); } @@ -268,27 +279,28 @@ bool ClassFlowPostProcessing::LoadPreValue(void) return true; } -void ClassFlowPostProcessing::SavePreValue() -{ +void ClassFlowPostProcessing::SavePreValue() { FILE* pFile; string _zw; - if (!UpdatePreValueINI) // PreValues unchanged --> File does not have to be rewritten + // PreValues unchanged --> File does not have to be rewritten + if (!UpdatePreValueINI) { return; + } pFile = fopen(FilePreValue.c_str(), "w"); - for (int j = 0; j < NUMBERS.size(); ++j) - { + for (int j = 0; j < NUMBERS.size(); ++j) { char buffer[80]; - struct tm* timeinfo = localtime(&NUMBERS[j]->lastvalue); + struct tm* timeinfo = localtime(&NUMBERS[j]->timeStampLastPreValue); strftime(buffer, 80, PREVALUE_TIME_FORMAT_OUTPUT, timeinfo); NUMBERS[j]->timeStamp = std::string(buffer); - NUMBERS[j]->timeStampTimeUTC = NUMBERS[j]->lastvalue; -// ESP_LOGD(TAG, "SaverPreValue %d, Value: %f, Nachkomma %d", j, NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma); + NUMBERS[j]->timeStampTimeUTC = NUMBERS[j]->timeStampLastPreValue; + // ESP_LOGD(TAG, "SaverPreValue %d, Value: %f, Nachkomma %d", j, NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma); _zw = NUMBERS[j]->name + "\t" + NUMBERS[j]->timeStamp + "\t" + RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma) + "\n"; ESP_LOGD(TAG, "Write PreValue line: %s", _zw.c_str()); + if (pFile) { fputs(_zw.c_str(), pFile); } @@ -299,9 +311,7 @@ void ClassFlowPostProcessing::SavePreValue() fclose(pFile); } - -ClassFlowPostProcessing::ClassFlowPostProcessing(std::vector* lfc, ClassFlowCNNGeneral *_analog, ClassFlowCNNGeneral *_digit) -{ +ClassFlowPostProcessing::ClassFlowPostProcessing(std::vector* lfc, ClassFlowCNNGeneral *_analog, ClassFlowCNNGeneral *_digit) { PreValueUse = false; PreValueAgeStartup = 30; ErrorMessage = false; @@ -314,76 +324,56 @@ ClassFlowPostProcessing::ClassFlowPostProcessing(std::vector* lfc, C flowAnalog = _analog; flowDigit = _digit; - for (int i = 0; i < ListFlowControll->size(); ++i) - { - if (((*ListFlowControll)[i])->name().compare("ClassFlowTakeImage") == 0) - { + for (int i = 0; i < ListFlowControll->size(); ++i) { + if (((*ListFlowControll)[i])->name().compare("ClassFlowTakeImage") == 0) { flowTakeImage = (ClassFlowTakeImage*) (*ListFlowControll)[i]; } } } -void ClassFlowPostProcessing::handleDecimalExtendedResolution(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleDecimalExtendedResolution(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; + } - for (int j = 0; j < NUMBERS.size(); ++j) - { - bool _zwdc = false; - - if (toUpper(_value) == "TRUE") - _zwdc = true; - - if (_digit == "default") // Set to default first (if nothing else is set) - { - NUMBERS[j]->isExtendedResolution = _zwdc; - } + for (int j = 0; j < NUMBERS.size(); ++j) { + bool _zwdc = alphanumericToBoolean(_value); - if (NUMBERS[j]->name == _digit) - { + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { NUMBERS[j]->isExtendedResolution = _zwdc; } } } - -void ClassFlowPostProcessing::handleDecimalSeparator(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleDecimalSeparator(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; + } - for (int j = 0; j < NUMBERS.size(); ++j) - { + for (int j = 0; j < NUMBERS.size(); ++j) { int _zwdc = 0; - -// try - { - _zwdc = stoi(_value); - } -/* catch(const std::exception& e) - { - ESP_LOGD(TAG, "ERROR - Decimalshift is not a number: %s", _value.c_str()); - } -*/ - if (_digit == "default") // Set to default first (if nothing else is set) - { - NUMBERS[j]->DecimalShift = _zwdc; - NUMBERS[j]->DecimalShiftInitial = _zwdc; + + if (isStringNumeric(_value)) { + _zwdc = std::stoi(_value); } - if (NUMBERS[j]->name == _digit) - { + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { NUMBERS[j]->DecimalShift = _zwdc; NUMBERS[j]->DecimalShiftInitial = _zwdc; } @@ -392,285 +382,309 @@ void ClassFlowPostProcessing::handleDecimalSeparator(string _decsep, string _val } } -void ClassFlowPostProcessing::handleAnalogDigitalTransitionStart(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleAnalogToDigitTransitionStart(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; + } - for (int j = 0; j < NUMBERS.size(); ++j) - { + for (int j = 0; j < NUMBERS.size(); ++j) { float _zwdc = 9.2; - { - _zwdc = stof(_value); + + if (isStringNumeric(_value)) { + _zwdc = std::stof(_value); } - if (_digit == "default" || NUMBERS[j]->name == _digit) // Set to default first (if nothing else is set) - { - NUMBERS[j]->AnalogDigitalTransitionStart = _zwdc; + + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { + NUMBERS[j]->AnalogToDigitTransitionStart = _zwdc; } } } -void ClassFlowPostProcessing::handleAllowNegativeRate(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleAllowNegativeRate(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; + } - for (int j = 0; j < NUMBERS.size(); ++j) - { - bool _rt = false; - - if (toUpper(_value) == "TRUE") - _rt = true; - - if (_digit == "default") // Set to default first (if nothing else is set) - { - NUMBERS[j]->AllowNegativeRates = _rt; - } + for (int j = 0; j < NUMBERS.size(); ++j) { + bool _zwdc = alphanumericToBoolean(_value); - if (NUMBERS[j]->name == _digit) - { - NUMBERS[j]->AllowNegativeRates = _rt; + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { + NUMBERS[j]->AllowNegativeRates = _zwdc; } } } - - -void ClassFlowPostProcessing::handleMaxRateType(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleMaxRateType(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; + } - for (int j = 0; j < NUMBERS.size(); ++j) - { - t_RateType _rt = AbsoluteChange; - - if (toUpper(_value) == "RATECHANGE") - _rt = RateChange; + for (int j = 0; j < NUMBERS.size(); ++j) { + t_RateType _zwdc = AbsoluteChange; - if (_digit == "default") // Set to default first (if nothing else is set) - { - NUMBERS[j]->RateType = _rt; + if (toUpper(_value) == "RATECHANGE") { + _zwdc = RateChange; } - if (NUMBERS[j]->name == _digit) - { - NUMBERS[j]->RateType = _rt; + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { + NUMBERS[j]->MaxRateType = _zwdc; } } } - - - -void ClassFlowPostProcessing::handleMaxRateValue(string _decsep, string _value) -{ +void ClassFlowPostProcessing::handleMaxRateValue(string _decsep, string _value) { string _digit, _decpos; int _pospunkt = _decsep.find_first_of("."); -// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); - if (_pospunkt > -1) + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { _digit = _decsep.substr(0, _pospunkt); - else + } + else { _digit = "default"; - for (int j = 0; j < NUMBERS.size(); ++j) - { + } + + for (int j = 0; j < NUMBERS.size(); ++j) { float _zwdc = 1; -// try - { - _zwdc = stof(_value); - } -/* catch(const std::exception& e) - { - ESP_LOGD(TAG, "ERROR - MaxRateValue is not a number: %s", _value.c_str()); - } -*/ - if (_digit == "default") // Set to default first (if nothing else is set) - { - NUMBERS[j]->useMaxRateValue = true; - NUMBERS[j]->MaxRateValue = _zwdc; + + if (isStringNumeric(_value)) { + _zwdc = std::stof(_value); } - if (NUMBERS[j]->name == _digit) - { + + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { NUMBERS[j]->useMaxRateValue = true; NUMBERS[j]->MaxRateValue = _zwdc; } } } +void ClassFlowPostProcessing::handleChangeRateThreshold(string _decsep, string _value) { + string _digit, _decpos; + int _pospunkt = _decsep.find_first_of("."); + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { + _digit = _decsep.substr(0, _pospunkt); + } + else { + _digit = "default"; + } + + for (int j = 0; j < NUMBERS.size(); ++j) { + int _zwdc = 2; -bool ClassFlowPostProcessing::ReadParameter(FILE* pfile, string& aktparamgraph) + if (isStringNumeric(_value)) { + _zwdc = std::stof(_value); + } + + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { + NUMBERS[j]->ChangeRateThreshold = _zwdc; + } + } +} +/* +void ClassFlowPostProcessing::handlecheckDigitIncreaseConsistency(std::string _decsep, std::string _value) { + std::string _digit; + int _pospunkt = _decsep.find_first_of("."); + // ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + + if (_pospunkt > -1) { + _digit = _decsep.substr(0, _pospunkt); + } + else { + _digit = "default"; + } + + for (int j = 0; j < NUMBERS.size(); ++j) { + bool _rt = alphanumericToBoolean(_value); + + // Set to default first (if nothing else is set) + if ((_digit == "default") || (NUMBERS[j]->name == _digit)) { + NUMBERS[j]->checkDigitIncreaseConsistency = _rt; + } + } +} +*/ +bool ClassFlowPostProcessing::ReadParameter(FILE* pfile, string& aktparamgraph) { std::vector splitted; int _n; aktparamgraph = trim(aktparamgraph); - if (aktparamgraph.size() == 0) - if (!this->GetNextParagraph(pfile, aktparamgraph)) + if (aktparamgraph.size() == 0) { + if (!this->GetNextParagraph(pfile, aktparamgraph)) { return false; + } + } - - if (aktparamgraph.compare("[PostProcessing]") != 0) // Paragraph does not fit PostProcessing + // Paragraph does not fit PostProcessing + if (aktparamgraph.compare("[PostProcessing]") != 0) { return false; + } InitNUMBERS(); - - while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) - { + while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) { splitted = ZerlegeZeile(aktparamgraph); std::string _param = GetParameterName(splitted[0]); - if ((toUpper(_param) == "EXTENDEDRESOLUTION") && (splitted.size() > 1)) - { + if ((toUpper(_param) == "EXTENDEDRESOLUTION") && (splitted.size() > 1)) { handleDecimalExtendedResolution(splitted[0], splitted[1]); } - if ((toUpper(_param) == "DECIMALSHIFT") && (splitted.size() > 1)) - { + if ((toUpper(_param) == "DECIMALSHIFT") && (splitted.size() > 1)) { handleDecimalSeparator(splitted[0], splitted[1]); } - if ((toUpper(_param) == "ANALOGDIGITALTRANSITIONSTART") && (splitted.size() > 1)) - { - handleAnalogDigitalTransitionStart(splitted[0], splitted[1]); + + if ((toUpper(_param) == "AnalogToDigitTransitionStart") && (splitted.size() > 1)) { + handleAnalogToDigitTransitionStart(splitted[0], splitted[1]); } - if ((toUpper(_param) == "MAXRATEVALUE") && (splitted.size() > 1)) - { + + if ((toUpper(_param) == "MAXRATEVALUE") && (splitted.size() > 1)) { handleMaxRateValue(splitted[0], splitted[1]); } - if ((toUpper(_param) == "MAXRATETYPE") && (splitted.size() > 1)) - { + + if ((toUpper(_param) == "MAXRATETYPE") && (splitted.size() > 1)) { handleMaxRateType(splitted[0], splitted[1]); } - - if ((toUpper(_param) == "PREVALUEUSE") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - { - PreValueUse = true; - } + + if ((toUpper(_param) == "PREVALUEUSE") && (splitted.size() > 1)) { + PreValueUse = alphanumericToBoolean(splitted[1]); + } + + if ((toUpper(_param) == "CHANGERATETHRESHOLD") && (splitted.size() > 1)) { + handleChangeRateThreshold(splitted[0], splitted[1]); } - if ((toUpper(_param) == "CHECKDIGITINCREASECONSISTENCY") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - for (_n = 0; _n < NUMBERS.size(); ++_n) + + if ((toUpper(_param) == "CHECKDIGITINCREASECONSISTENCY") && (splitted.size() > 1)) { + // handlecheckDigitIncreaseConsistency(splitted[0], splitted[1]); + if (alphanumericToBoolean(splitted[1])) { + for (_n = 0; _n < NUMBERS.size(); ++_n) { NUMBERS[_n]->checkDigitIncreaseConsistency = true; - } - if ((toUpper(_param) == "ALLOWNEGATIVERATES") && (splitted.size() > 1)) - { + } + } + } + + if ((toUpper(_param) == "ALLOWNEGATIVERATES") && (splitted.size() > 1)) { handleAllowNegativeRate(splitted[0], splitted[1]); -/* Updated to allow individual Settings - if (toUpper(splitted[1]) == "TRUE") - for (_n = 0; _n < NUMBERS.size(); ++_n) - NUMBERS[_n]->AllowNegativeRates = true; -*/ } - if ((toUpper(_param) == "ERRORMESSAGE") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - ErrorMessage = true; + + if ((toUpper(_param) == "ERRORMESSAGE") && (splitted.size() > 1)) { + ErrorMessage = alphanumericToBoolean(splitted[1]); } - if ((toUpper(_param) == "IGNORELEADINGNAN") && (splitted.size() > 1)) - { - if (toUpper(splitted[1]) == "TRUE") - IgnoreLeadingNaN = true; + + if ((toUpper(_param) == "IGNORELEADINGNAN") && (splitted.size() > 1)) { + IgnoreLeadingNaN = alphanumericToBoolean(splitted[1]); } - - if ((toUpper(_param) == "PREVALUEAGESTARTUP") && (splitted.size() > 1)) - { - PreValueAgeStartup = std::stoi(splitted[1]); + if ((toUpper(_param) == "PREVALUEAGESTARTUP") && (splitted.size() > 1)) { + if (isStringNumeric(splitted[1])) { + PreValueAgeStartup = std::stoi(splitted[1]); + } } } if (PreValueUse) { - LoadPreValue(); + return LoadPreValue(); } return true; } -void ClassFlowPostProcessing::InitNUMBERS() -{ +void ClassFlowPostProcessing::InitNUMBERS() { int anzDIGIT = 0; int anzANALOG = 0; std::vector name_numbers; - if (flowDigit) - { + if (flowDigit) { anzDIGIT = flowDigit->getNumberGENERAL(); flowDigit->UpdateNameNumbers(&name_numbers); } - if (flowAnalog) - { + + if (flowAnalog) { anzANALOG = flowAnalog->getNumberGENERAL(); flowAnalog->UpdateNameNumbers(&name_numbers); } ESP_LOGD(TAG, "Anzahl NUMBERS: %d - DIGITS: %d, ANALOG: %d", name_numbers.size(), anzDIGIT, anzANALOG); - for (int _num = 0; _num < name_numbers.size(); ++_num) - { + for (int _num = 0; _num < name_numbers.size(); ++_num) { NumberPost *_number = new NumberPost; _number->name = name_numbers[_num]; _number->digit_roi = NULL; - if (flowDigit) + + if (flowDigit) { _number->digit_roi = flowDigit->FindGENERAL(name_numbers[_num]); + } - if (_number->digit_roi) - _number->AnzahlDigital = _number->digit_roi->ROI.size(); - else - _number->AnzahlDigital = 0; + if (_number->digit_roi) { + _number->AnzahlDigit = _number->digit_roi->ROI.size(); + } + else { + _number->AnzahlDigit = 0; + } _number->analog_roi = NULL; - if (flowAnalog) + + if (flowAnalog) { _number->analog_roi = flowAnalog->FindGENERAL(name_numbers[_num]); + } - - if (_number->analog_roi) + if (_number->analog_roi) { _number->AnzahlAnalog = _number->analog_roi->ROI.size(); - else + } + else { _number->AnzahlAnalog = 0; + } - _number->ReturnRawValue = ""; // Raw value (with N & leading 0). - _number->ReturnValue = ""; // corrected return value, possibly with error message - _number->ErrorMessageText = ""; // Error message for consistency check - _number->ReturnPreValue = ""; + _number->FlowRateAct = 0; // m3 / min _number->PreValueOkay = false; _number->AllowNegativeRates = false; _number->MaxRateValue = 0.1; - _number->RateType = AbsoluteChange; + _number->MaxRateType = AbsoluteChange; _number->useMaxRateValue = false; _number->checkDigitIncreaseConsistency = false; _number->DecimalShift = 0; _number->DecimalShiftInitial = 0; _number->isExtendedResolution = false; - _number->AnalogDigitalTransitionStart=9.2; + _number->AnalogToDigitTransitionStart=9.2; + _number->ChangeRateThreshold = 2; - - _number->FlowRateAct = 0; // m3 / min - _number->PreValue = 0; // last value read out well _number->Value = 0; // last value read out, incl. corrections - _number->ReturnRawValue = ""; // raw value (with N & leading 0) _number->ReturnValue = ""; // corrected return value, possibly with error message + _number->ReturnRawValue = ""; // raw value (with N & leading 0) + _number->PreValue = 0; // last value read out well + _number->ReturnPreValue = ""; _number->ErrorMessageText = ""; // Error message for consistency check _number->Nachkomma = _number->AnzahlAnalog; @@ -679,40 +693,41 @@ void ClassFlowPostProcessing::InitNUMBERS() } for (int i = 0; i < NUMBERS.size(); ++i) { - ESP_LOGD(TAG, "Number %s, Anz DIG: %d, Anz ANA %d", NUMBERS[i]->name.c_str(), NUMBERS[i]->AnzahlDigital, NUMBERS[i]->AnzahlAnalog); + ESP_LOGD(TAG, "Number %s, Anz DIG: %d, Anz ANA %d", NUMBERS[i]->name.c_str(), NUMBERS[i]->AnzahlDigit, NUMBERS[i]->AnzahlAnalog); } - } -string ClassFlowPostProcessing::ShiftDecimal(string in, int _decShift){ - - if (_decShift == 0){ +string ClassFlowPostProcessing::ShiftDecimal(string in, int _decShift) { + if (_decShift == 0) { return in; } int _pos_dec_org, _pos_dec_neu; _pos_dec_org = findDelimiterPos(in, "."); + if (_pos_dec_org == std::string::npos) { _pos_dec_org = in.length(); } - else - { + else { in = in.erase(_pos_dec_org, 1); } _pos_dec_neu = _pos_dec_org + _decShift; - if (_pos_dec_neu <= 0) { // comma is before the first digit - for (int i = 0; i > _pos_dec_neu; --i){ + // comma is before the first digit + if (_pos_dec_neu <= 0) { + for (int i = 0; i > _pos_dec_neu; --i) { in = in.insert(0, "0"); } + in = "0." + in; return in; } - if (_pos_dec_neu > in.length()){ // Comma should be after string (123 --> 1230) - for (int i = in.length(); i < _pos_dec_neu; ++i){ + // Comma should be after string (123 --> 1230) + if (_pos_dec_neu > in.length()) { + for (int i = in.length(); i < _pos_dec_neu; ++i) { in = in.insert(in.length(), "0"); } return in; @@ -726,8 +741,7 @@ string ClassFlowPostProcessing::ShiftDecimal(string in, int _decShift){ return zw; } -bool ClassFlowPostProcessing::doFlow(string zwtime) -{ +bool ClassFlowPostProcessing::doFlow(string zwtime) { string result = ""; string digit = ""; string analog = ""; @@ -739,8 +753,10 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) // Update decimal point, as the decimal places can also change when changing from CNNType Auto --> xyz: imagetime = flowTakeImage->getTimeImageTaken(); - if (imagetime == 0) + + if (imagetime == 0) { time(&imagetime); + } struct tm* timeinfo; timeinfo = localtime(&imagetime); @@ -750,110 +766,118 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) ESP_LOGD(TAG, "Quantity NUMBERS: %d", NUMBERS.size()); - for (int j = 0; j < NUMBERS.size(); ++j) - { + for (int j = 0; j < NUMBERS.size(); ++j) { NUMBERS[j]->ReturnRawValue = ""; NUMBERS[j]->ReturnRateValue = ""; NUMBERS[j]->ReturnValue = ""; + NUMBERS[j]->ReturnChangeAbsolute = RundeOutput(0.0, NUMBERS[j]->Nachkomma); // always reset change absolute NUMBERS[j]->ErrorMessageText = ""; NUMBERS[j]->Value = -1; - /* calculate time difference BEFORE we overwrite the 'lastvalue' */ - double difference = difftime(imagetime, NUMBERS[j]->lastvalue); // in seconds - - /* TODO: - * We could call `NUMBERS[j]->lastvalue = imagetime;` here and remove all other such calls further down. - * But we should check nothing breaks! */ + // calculate time difference + // double LastValueTimeDifference = difftime(imagetime, NUMBERS[j]->timeStampLastValue); // in seconds + double LastPreValueTimeDifference = difftime(imagetime, NUMBERS[j]->timeStampLastPreValue); // in seconds UpdateNachkommaDecimalShift(); int previous_value = -1; - if (NUMBERS[j]->analog_roi) - { - NUMBERS[j]->ReturnRawValue = flowAnalog->getReadout(j, NUMBERS[j]->isExtendedResolution); - if (NUMBERS[j]->ReturnRawValue.length() > 0) - { + if (NUMBERS[j]->analog_roi) { + NUMBERS[j]->ReturnRawValue = flowAnalog->getReadout(j, NUMBERS[j]->isExtendedResolution); + + if (NUMBERS[j]->ReturnRawValue.length() > 0) { char zw = NUMBERS[j]->ReturnRawValue[0]; - if (zw >= 48 && zw <=57) + + if (zw >= 48 && zw <=57) { previous_value = zw - 48; + } } } + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After analog->getReadout: ReturnRaw %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif - if (NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) + + if (NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) { NUMBERS[j]->ReturnRawValue = "." + NUMBERS[j]->ReturnRawValue; + } - if (NUMBERS[j]->digit_roi) - { - if (NUMBERS[j]->analog_roi) - NUMBERS[j]->ReturnRawValue = flowDigit->getReadout(j, false, previous_value, NUMBERS[j]->analog_roi->ROI[0]->result_float, NUMBERS[j]->AnalogDigitalTransitionStart) + NUMBERS[j]->ReturnRawValue; - else + if (NUMBERS[j]->digit_roi) { + if (NUMBERS[j]->analog_roi) { + NUMBERS[j]->ReturnRawValue = flowDigit->getReadout(j, false, previous_value, NUMBERS[j]->analog_roi->ROI[0]->result_float, NUMBERS[j]->AnalogToDigitTransitionStart) + NUMBERS[j]->ReturnRawValue; + } + else { NUMBERS[j]->ReturnRawValue = flowDigit->getReadout(j, NUMBERS[j]->isExtendedResolution, previous_value); // Extended Resolution only if there are no analogue digits + } } + #ifdef SERIAL_DEBUG - ESP_LOGD(TAG, "After digital->getReadout: ReturnRaw %s", NUMBERS[j]->ReturnRawValue.c_str()); + ESP_LOGD(TAG, "After digit->getReadout: ReturnRaw %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif + NUMBERS[j]->ReturnRawValue = ShiftDecimal(NUMBERS[j]->ReturnRawValue, NUMBERS[j]->DecimalShift); #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After ShiftDecimal: ReturnRaw %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif - if (IgnoreLeadingNaN) - while ((NUMBERS[j]->ReturnRawValue.length() > 1) && (NUMBERS[j]->ReturnRawValue[0] == 'N')) + if (IgnoreLeadingNaN) { + while ((NUMBERS[j]->ReturnRawValue.length() > 1) && (NUMBERS[j]->ReturnRawValue[0] == 'N')) { NUMBERS[j]->ReturnRawValue.erase(0, 1); + } + } #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After IgnoreLeadingNaN: ReturnRaw %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif + NUMBERS[j]->ReturnValue = NUMBERS[j]->ReturnRawValue; - if (findDelimiterPos(NUMBERS[j]->ReturnValue, "N") != std::string::npos) - { - if (PreValueUse && NUMBERS[j]->PreValueOkay) - { + if (findDelimiterPos(NUMBERS[j]->ReturnValue, "N") != std::string::npos) { + if (PreValueUse && NUMBERS[j]->PreValueOkay) { NUMBERS[j]->ReturnValue = ErsetzteN(NUMBERS[j]->ReturnValue, NUMBERS[j]->PreValue); } - else - { + else { string _zw = NUMBERS[j]->name + ": Raw: " + NUMBERS[j]->ReturnRawValue + ", Value: " + NUMBERS[j]->ReturnValue + ", Status: " + NUMBERS[j]->ErrorMessageText; LogFile.WriteToFile(ESP_LOG_INFO, TAG, _zw); - /* TODO to be discussed, see https://github.com/jomjol/AI-on-the-edge-device/issues/1617 */ - NUMBERS[j]->lastvalue = imagetime; - + NUMBERS[j]->ReturnValue = ""; + NUMBERS[j]->timeStampLastValue = imagetime; WriteDataLog(j); continue; // there is no number because there is still an N. } } + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After findDelimiterPos: ReturnValue %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif + // Delete leading zeros (unless there is only one 0 left) - while ((NUMBERS[j]->ReturnValue.length() > 1) && (NUMBERS[j]->ReturnValue[0] == '0')) + while ((NUMBERS[j]->ReturnValue.length() > 1) && (NUMBERS[j]->ReturnValue[0] == '0')) { NUMBERS[j]->ReturnValue.erase(0, 1); + } + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After removeLeadingZeros: ReturnValue %s", NUMBERS[j]->ReturnRawValue.c_str()); #endif + NUMBERS[j]->Value = std::stod(NUMBERS[j]->ReturnValue); + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After setting the Value: Value %f and as double is %f", NUMBERS[j]->Value, std::stod(NUMBERS[j]->ReturnValue)); #endif - if (NUMBERS[j]->checkDigitIncreaseConsistency) - { - if (flowDigit) - { - if (flowDigit->getCNNType() != Digital) - ESP_LOGD(TAG, "checkDigitIncreaseConsistency = true - ignored due to wrong CNN-Type (not Digital Classification)"); - else + if (NUMBERS[j]->checkDigitIncreaseConsistency) { + if (flowDigit) { + if (flowDigit->getCNNType() != Digit) { + ESP_LOGD(TAG, "checkDigitIncreaseConsistency = true - ignored due to wrong CNN-Type (not Digit Classification)"); + } + else { NUMBERS[j]->Value = checkDigitConsistency(NUMBERS[j]->Value, NUMBERS[j]->DecimalShift, NUMBERS[j]->analog_roi != NULL, NUMBERS[j]->PreValue); + } } - else - { + else { #ifdef SERIAL_DEBUG - ESP_LOGD(TAG, "checkDigitIncreaseConsistency = true - no digital numbers defined!"); + ESP_LOGD(TAG, "checkDigitIncreaseConsistency = true - no digit numbers defined!"); #endif } } @@ -862,79 +886,88 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) ESP_LOGD(TAG, "After checkDigitIncreaseConsistency: Value %f", NUMBERS[j]->Value); #endif - if (!NUMBERS[j]->AllowNegativeRates) - { - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handleAllowNegativeRate for device: " + NUMBERS[j]->name); - if ((NUMBERS[j]->Value < NUMBERS[j]->PreValue)) - { - // more debug if extended resolution is on, see #2447 - if (NUMBERS[j]->isExtendedResolution) { - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Neg: value=" + std::to_string(NUMBERS[j]->Value) + if (PreValueUse && NUMBERS[j]->PreValueOkay) { + if (NUMBERS[j]->Nachkomma > 0) { + double _difference1 = (NUMBERS[j]->PreValue - (NUMBERS[j]->ChangeRateThreshold / pow(10, NUMBERS[j]->Nachkomma))); + double _difference2 = (NUMBERS[j]->PreValue + (NUMBERS[j]->ChangeRateThreshold / pow(10, NUMBERS[j]->Nachkomma))); + + if ((NUMBERS[j]->Value >= _difference1) && (NUMBERS[j]->Value <= _difference2)) { + NUMBERS[j]->Value = NUMBERS[j]->PreValue; + NUMBERS[j]->ReturnValue = std::to_string(NUMBERS[j]->PreValue); + } + } + + if ((!NUMBERS[j]->AllowNegativeRates) && (NUMBERS[j]->Value < NUMBERS[j]->PreValue)) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handleAllowNegativeRate for device: " + NUMBERS[j]->name); + + if ((NUMBERS[j]->Value < NUMBERS[j]->PreValue)) { + // more debug if extended resolution is on, see #2447 + if (NUMBERS[j]->isExtendedResolution) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Neg: value=" + std::to_string(NUMBERS[j]->Value) + ", preValue=" + std::to_string(NUMBERS[j]->PreValue) + ", preToll=" + std::to_string(NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma)))); - } - - // Include inaccuracy of 0.2 for isExtendedResolution. - if ((NUMBERS[j]->Value >= (NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))) && NUMBERS[j]->isExtendedResolution) - // not extended resolution allows -1 on the lowest digit - || (NUMBERS[j]->Value >= (NUMBERS[j]->PreValue-(1/pow(10, NUMBERS[j]->Nachkomma))) && !NUMBERS[j]->isExtendedResolution)) { - NUMBERS[j]->Value = NUMBERS[j]->PreValue; - NUMBERS[j]->ReturnValue = to_string(NUMBERS[j]->PreValue); - } - else { + } + NUMBERS[j]->ErrorMessageText = NUMBERS[j]->ErrorMessageText + "Neg. Rate - Read: " + zwvalue + " - Raw: " + NUMBERS[j]->ReturnRawValue + " - Pre: " + RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma) + " "; NUMBERS[j]->Value = NUMBERS[j]->PreValue; NUMBERS[j]->ReturnValue = ""; - NUMBERS[j]->lastvalue = imagetime; + NUMBERS[j]->timeStampLastValue = imagetime; string _zw = NUMBERS[j]->name + ": Raw: " + NUMBERS[j]->ReturnRawValue + ", Value: " + NUMBERS[j]->ReturnValue + ", Status: " + NUMBERS[j]->ErrorMessageText; LogFile.WriteToFile(ESP_LOG_ERROR, TAG, _zw); WriteDataLog(j); continue; } - } - } - #ifdef SERIAL_DEBUG - ESP_LOGD(TAG, "After AllowNegativeRates: Value %f", NUMBERS[j]->Value); - #endif + #ifdef SERIAL_DEBUG + ESP_LOGD(TAG, "After AllowNegativeRates: Value %f", NUMBERS[j]->Value); + #endif - difference /= 60; - NUMBERS[j]->FlowRateAct = (NUMBERS[j]->Value - NUMBERS[j]->PreValue) / difference; - NUMBERS[j]->ReturnRateValue = to_string(NUMBERS[j]->FlowRateAct); - - if (NUMBERS[j]->useMaxRateValue && PreValueUse && NUMBERS[j]->PreValueOkay) - { - double _ratedifference; - if (NUMBERS[j]->RateType == RateChange) - _ratedifference = NUMBERS[j]->FlowRateAct; - else - _ratedifference = (NUMBERS[j]->Value - NUMBERS[j]->PreValue); - - if (abs(_ratedifference) > abs(NUMBERS[j]->MaxRateValue)) - { - NUMBERS[j]->ErrorMessageText = NUMBERS[j]->ErrorMessageText + "Rate too high - Read: " + RundeOutput(NUMBERS[j]->Value, NUMBERS[j]->Nachkomma) + " - Pre: " + RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma) + " - Rate: " + RundeOutput(_ratedifference, NUMBERS[j]->Nachkomma); - NUMBERS[j]->Value = NUMBERS[j]->PreValue; - NUMBERS[j]->ReturnValue = ""; - NUMBERS[j]->ReturnRateValue = ""; - NUMBERS[j]->lastvalue = imagetime; + // LastValueTimeDifference = LastValueTimeDifference / 60; // in minutes + LastPreValueTimeDifference = LastPreValueTimeDifference / 60; // in minutes + NUMBERS[j]->FlowRateAct = (NUMBERS[j]->Value - NUMBERS[j]->PreValue) / LastPreValueTimeDifference; + NUMBERS[j]->ReturnRateValue = to_string(NUMBERS[j]->FlowRateAct); - string _zw = NUMBERS[j]->name + ": Raw: " + NUMBERS[j]->ReturnRawValue + ", Value: " + NUMBERS[j]->ReturnValue + ", Status: " + NUMBERS[j]->ErrorMessageText; - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, _zw); - WriteDataLog(j); - continue; + if ((NUMBERS[j]->useMaxRateValue) && (NUMBERS[j]->Value != NUMBERS[j]->PreValue)) { + double _ratedifference; + + if (NUMBERS[j]->MaxRateType == RateChange) { + _ratedifference = NUMBERS[j]->FlowRateAct; + } + else { + // TODO: + // Since I don't know if this is desired, I'll comment it out first. + // int roundDifference = (int)(round(LastPreValueTimeDifference / LastValueTimeDifference)); // calculate how many rounds have passed since NUMBERS[j]->timeLastPreValue was set + // _ratedifference = ((NUMBERS[j]->Value - NUMBERS[j]->PreValue) / ((int)(round(LastPreValueTimeDifference / LastValueTimeDifference)))); // Difference per round, as a safeguard in case a reading error(Neg. Rate - Read: or Rate too high - Read:) occurs in the meantime + _ratedifference = (NUMBERS[j]->Value - NUMBERS[j]->PreValue); + } + + if (abs(_ratedifference) > abs(NUMBERS[j]->MaxRateValue)) { + NUMBERS[j]->ErrorMessageText = NUMBERS[j]->ErrorMessageText + "Rate too high - Read: " + RundeOutput(NUMBERS[j]->Value, NUMBERS[j]->Nachkomma) + " - Pre: " + RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma) + " - Rate: " + RundeOutput(_ratedifference, NUMBERS[j]->Nachkomma); + NUMBERS[j]->Value = NUMBERS[j]->PreValue; + NUMBERS[j]->ReturnValue = ""; + NUMBERS[j]->ReturnRateValue = ""; + NUMBERS[j]->timeStampLastValue = imagetime; + + string _zw = NUMBERS[j]->name + ": Raw: " + NUMBERS[j]->ReturnRawValue + ", Value: " + NUMBERS[j]->ReturnValue + ", Status: " + NUMBERS[j]->ErrorMessageText; + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, _zw); + WriteDataLog(j); + continue; + } } - } #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "After MaxRateCheck: Value %f", NUMBERS[j]->Value); #endif + } NUMBERS[j]->ReturnChangeAbsolute = RundeOutput(NUMBERS[j]->Value - NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma); NUMBERS[j]->PreValue = NUMBERS[j]->Value; NUMBERS[j]->PreValueOkay = true; - NUMBERS[j]->lastvalue = imagetime; + + NUMBERS[j]->timeStampLastValue = imagetime; + NUMBERS[j]->timeStampLastPreValue = imagetime; NUMBERS[j]->ReturnValue = RundeOutput(NUMBERS[j]->Value, NUMBERS[j]->Nachkomma); NUMBERS[j]->ReturnPreValue = RundeOutput(NUMBERS[j]->PreValue, NUMBERS[j]->Nachkomma); @@ -951,104 +984,105 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) return true; } -void ClassFlowPostProcessing::WriteDataLog(int _index) -{ - if (!LogFile.GetDataLogToSD()){ +void ClassFlowPostProcessing::WriteDataLog(int _index) { + if (!LogFile.GetDataLogToSD()) { return; } string analog = ""; - string digital = ""; + string digit = ""; string timezw = ""; char buffer[80]; - struct tm* timeinfo = localtime(&NUMBERS[_index]->lastvalue); + struct tm* timeinfo = localtime(&NUMBERS[_index]->timeStampLastValue); strftime(buffer, 80, PREVALUE_TIME_FORMAT_OUTPUT, timeinfo); timezw = std::string(buffer); - if (flowAnalog) + if (flowAnalog) { analog = flowAnalog->getReadoutRawString(_index); - if (flowDigit) - digital = flowDigit->getReadoutRawString(_index); - LogFile.WriteToData(timezw, NUMBERS[_index]->name, - NUMBERS[_index]->ReturnRawValue, NUMBERS[_index]->ReturnValue, NUMBERS[_index]->ReturnPreValue, - NUMBERS[_index]->ReturnRateValue, NUMBERS[_index]->ReturnChangeAbsolute, - NUMBERS[_index]->ErrorMessageText, - digital, analog); - ESP_LOGD(TAG, "WriteDataLog: %s, %s, %s, %s, %s", NUMBERS[_index]->ReturnRawValue.c_str(), NUMBERS[_index]->ReturnValue.c_str(), NUMBERS[_index]->ErrorMessageText.c_str(), digital.c_str(), analog.c_str()); -} + } + if (flowDigit) { + digit = flowDigit->getReadoutRawString(_index); + } + + LogFile.WriteToData(timezw, NUMBERS[_index]->name, NUMBERS[_index]->ReturnRawValue, NUMBERS[_index]->ReturnValue, NUMBERS[_index]->ReturnPreValue, + NUMBERS[_index]->ReturnRateValue, NUMBERS[_index]->ReturnChangeAbsolute, NUMBERS[_index]->ErrorMessageText, digit, analog); -void ClassFlowPostProcessing::UpdateNachkommaDecimalShift() -{ - for (int j = 0; j < NUMBERS.size(); ++j) - { - if (NUMBERS[j]->digit_roi && !NUMBERS[j]->analog_roi) // There are only digital digits - { -// ESP_LOGD(TAG, "Nurdigital"); + ESP_LOGD(TAG, "WriteDataLog: %s, %s, %s, %s, %s", NUMBERS[_index]->ReturnRawValue.c_str(), NUMBERS[_index]->ReturnValue.c_str(), NUMBERS[_index]->ErrorMessageText.c_str(), digit.c_str(), analog.c_str()); +} + +void ClassFlowPostProcessing::UpdateNachkommaDecimalShift() { + for (int j = 0; j < NUMBERS.size(); ++j) { + // There are only digits + if (NUMBERS[j]->digit_roi && !NUMBERS[j]->analog_roi) { + // ESP_LOGD(TAG, "Nurdigit"); NUMBERS[j]->DecimalShift = NUMBERS[j]->DecimalShiftInitial; - if (NUMBERS[j]->isExtendedResolution && flowDigit->isExtendedResolution()) // Extended resolution is on and should also be used for this digit. + // Extended resolution is on and should also be used for this digit. + if (NUMBERS[j]->isExtendedResolution && flowDigit->isExtendedResolution()) { NUMBERS[j]->DecimalShift = NUMBERS[j]->DecimalShift-1; + } NUMBERS[j]->Nachkomma = -NUMBERS[j]->DecimalShift; } - if (!NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) - { -// ESP_LOGD(TAG, "Nur analog"); + if (!NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) { + // ESP_LOGD(TAG, "Nur analog"); NUMBERS[j]->DecimalShift = NUMBERS[j]->DecimalShiftInitial; - if (NUMBERS[j]->isExtendedResolution && flowAnalog->isExtendedResolution()) + + if (NUMBERS[j]->isExtendedResolution && flowAnalog->isExtendedResolution()) { NUMBERS[j]->DecimalShift = NUMBERS[j]->DecimalShift-1; + } NUMBERS[j]->Nachkomma = -NUMBERS[j]->DecimalShift; } - if (NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) // digital + analog - { -// ESP_LOGD(TAG, "Nur digital + analog"); + // digit + analog + if (NUMBERS[j]->digit_roi && NUMBERS[j]->analog_roi) { + // ESP_LOGD(TAG, "Nur digit + analog"); NUMBERS[j]->DecimalShift = NUMBERS[j]->DecimalShiftInitial; NUMBERS[j]->Nachkomma = NUMBERS[j]->analog_roi->ROI.size() - NUMBERS[j]->DecimalShift; - if (NUMBERS[j]->isExtendedResolution && flowAnalog->isExtendedResolution()) // Extended resolution is on and should also be used for this digit. + // Extended resolution is on and should also be used for this digit. + if (NUMBERS[j]->isExtendedResolution && flowAnalog->isExtendedResolution()) { NUMBERS[j]->Nachkomma = NUMBERS[j]->Nachkomma+1; - + } } ESP_LOGD(TAG, "UpdateNachkommaDecShift NUMBER%i: Nachkomma %i, DecShift %i", j, NUMBERS[j]->Nachkomma,NUMBERS[j]->DecimalShift); } } - -string ClassFlowPostProcessing::getReadout(int _number) -{ +string ClassFlowPostProcessing::getReadout(int _number) { return NUMBERS[_number]->ReturnValue; } -string ClassFlowPostProcessing::getReadoutParam(bool _rawValue, bool _noerror, int _number) -{ - if (_rawValue) +string ClassFlowPostProcessing::getReadoutParam(bool _rawValue, bool _noerror, int _number) { + if (_rawValue) { return NUMBERS[_number]->ReturnRawValue; - if (_noerror) + } + + if (_noerror) { return NUMBERS[_number]->ReturnValue; + } + return NUMBERS[_number]->ReturnValue; } - -string ClassFlowPostProcessing::ErsetzteN(string input, double _prevalue) -{ +string ClassFlowPostProcessing::ErsetzteN(string input, double _prevalue) { int posN, posPunkt; int pot, ziffer; float zw; posN = findDelimiterPos(input, "N"); posPunkt = findDelimiterPos(input, "."); - if (posPunkt == std::string::npos){ + + if (posPunkt == std::string::npos) { posPunkt = input.length(); } - while (posN != std::string::npos) - { + while (posN != std::string::npos) { if (posN < posPunkt) { pot = posPunkt - posN - 1; } @@ -1066,7 +1100,7 @@ string ClassFlowPostProcessing::ErsetzteN(string input, double _prevalue) return input; } -float ClassFlowPostProcessing::checkDigitConsistency(double input, int _decilamshift, bool _isanalog, double _preValue){ +float ClassFlowPostProcessing::checkDigitConsistency(double input, int _decilamshift, bool _isanalog, double _preValue) { int aktdigit, olddigit; int aktdigit_before, olddigit_before; int pot, pot_max; @@ -1074,16 +1108,19 @@ float ClassFlowPostProcessing::checkDigitConsistency(double input, int _decilams bool no_nulldurchgang = false; pot = _decilamshift; - if (!_isanalog) // if there are no analogue values, the last one cannot be evaluated - { + + // if there are no analogue values, the last one cannot be evaluated + if (!_isanalog) { pot++; } + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "checkDigitConsistency: pot=%d, decimalshift=%d", pot, _decilamshift); #endif + pot_max = ((int) log10(input)) + 1; - while (pot <= pot_max) - { + + while (pot <= pot_max) { zw = input / pow(10, pot-1); aktdigit_before = ((int) zw) % 10; zw = _preValue / pow(10, pot-1); @@ -1096,43 +1133,36 @@ float ClassFlowPostProcessing::checkDigitConsistency(double input, int _decilams no_nulldurchgang = (olddigit_before <= aktdigit_before); - if (no_nulldurchgang) - { - if (aktdigit != olddigit) - { + if (no_nulldurchgang) { + if (aktdigit != olddigit) { input = input + ((float) (olddigit - aktdigit)) * pow(10, pot); // New Digit is replaced by old Digit; } } - else - { - if (aktdigit == olddigit) // despite zero crossing, digit was not incremented --> add 1 - { + else { + // despite zero crossing, digit was not incremented --> add 1 + if (aktdigit == olddigit) { input = input + ((float) (1)) * pow(10, pot); // add 1 at the point } } + #ifdef SERIAL_DEBUG ESP_LOGD(TAG, "checkDigitConsistency: input=%f", input); #endif + pot++; } return input; } -string ClassFlowPostProcessing::getReadoutRate(int _number) -{ +string ClassFlowPostProcessing::getReadoutRate(int _number) { return std::to_string(NUMBERS[_number]->FlowRateAct); } -string ClassFlowPostProcessing::getReadoutTimeStamp(int _number) -{ +string ClassFlowPostProcessing::getReadoutTimeStamp(int _number) { return NUMBERS[_number]->timeStamp; } - -string ClassFlowPostProcessing::getReadoutError(int _number) -{ +string ClassFlowPostProcessing::getReadoutError(int _number) { return NUMBERS[_number]->ErrorMessageText; } - - diff --git a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.h b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.h index aae28e6a3..e16aa618c 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.h +++ b/code/components/jomjol_flowcontroll/ClassFlowPostProcessing.h @@ -21,11 +21,9 @@ class ClassFlowPostProcessing : bool ErrorMessage; bool IgnoreLeadingNaN; // SPECIAL CASE for User Gustl ??? - ClassFlowCNNGeneral* flowAnalog; ClassFlowCNNGeneral* flowDigit; - string FilePreValue; ClassFlowTakeImage *flowTakeImage; @@ -41,21 +39,18 @@ class ClassFlowPostProcessing : void handleMaxRateValue(string _decsep, string _value); void handleDecimalExtendedResolution(string _decsep, string _value); void handleMaxRateType(string _decsep, string _value); - void handleAnalogDigitalTransitionStart(string _decsep, string _value); + void handleAnalogToDigitTransitionStart(string _decsep, string _value); void handleAllowNegativeRate(string _decsep, string _value); + void handleChangeRateThreshold(string _decsep, string _value); std::string GetStringReadouts(general); void WriteDataLog(int _index); - - - public: bool PreValueUse; std::vector NUMBERS; - ClassFlowPostProcessing(std::vector* lfc, ClassFlowCNNGeneral *_analog, ClassFlowCNNGeneral *_digit); virtual ~ClassFlowPostProcessing(){}; bool ReadParameter(FILE* pfile, string& aktparamgraph); diff --git a/code/components/jomjol_flowcontroll/ClassFlowTakeImage.cpp b/code/components/jomjol_flowcontroll/ClassFlowTakeImage.cpp index 5d6d9ed74..f83829064 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowTakeImage.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowTakeImage.cpp @@ -1,9 +1,15 @@ +#include +#include +#include +#include + #include "ClassFlowTakeImage.h" #include "Helper.h" #include "ClassLogFile.h" #include "CImageBasis.h" #include "ClassControllCamera.h" +#include "MainFlowControl.h" #include "esp_wifi.h" #include "esp_log.h" @@ -12,14 +18,14 @@ #include -// #define DEBUG_DETAIL_ON - +// #define DEBUG_DETAIL_ON // #define WIFITURNOFF -static const char* TAG = "TAKEIMAGE"; +static const char *TAG = "TAKEIMAGE"; -esp_err_t ClassFlowTakeImage::camera_capture(){ - string nm = namerawimage; +esp_err_t ClassFlowTakeImage::camera_capture(void) +{ + string nm = namerawimage; Camera.CaptureToFile(nm); time(&TimeImageTaken); localtime(&TimeImageTaken); @@ -30,204 +36,499 @@ esp_err_t ClassFlowTakeImage::camera_capture(){ void ClassFlowTakeImage::takePictureWithFlash(int flash_duration) { // in case the image is flipped, it must be reset here // - rawImage->width = image_width; - rawImage->height = image_height; - ///////////////////////////////////////////////////////////////////////////////////// + rawImage->width = CCstatus.ImageWidth; + rawImage->height = CCstatus.ImageHeight; + ESP_LOGD(TAG, "flash_duration: %d", flash_duration); + Camera.CaptureToBasisImage(rawImage, flash_duration); + time(&TimeImageTaken); localtime(&TimeImageTaken); - if (SaveAllFiles) rawImage->SaveToFile(namerawimage); + if (CCstatus.SaveAllFiles) + { + rawImage->SaveToFile(namerawimage); + } } void ClassFlowTakeImage::SetInitialParameter(void) { - waitbeforepicture = 5; - isImageSize = false; - ImageQuality = -1; TimeImageTaken = 0; - ImageQuality = 5; rawImage = NULL; - ImageSize = FRAMESIZE_VGA; - ZoomEnabled = false; - ZoomMode = 0; - zoomOffsetX = 0; - zoomOffsetY = 0; - ImageNegative = false; - ImageAec2 = false; -#ifdef GRAYSCALE_AS_DEFAULT - ImageGrayscale = true; -#else - ImageGrayscale = false; -#endif - SaveAllFiles = false; disabled = false; - FixedExposure = false; namerawimage = "/sdcard/img_tmp/raw.jpg"; -} - - -ClassFlowTakeImage::ClassFlowTakeImage(std::vector* lfc) : ClassFlowImage(lfc, TAG) -{ - imagesLocation = "/log/source"; - imagesRetention = 5; - SetInitialParameter(); } - -bool ClassFlowTakeImage::ReadParameter(FILE* pfile, string& aktparamgraph) +// auslesen der Kameraeinstellungen aus der config.ini +// wird beim Start aufgerufen +bool ClassFlowTakeImage::ReadParameter(FILE *pfile, string &aktparamgraph) { + Camera.getSensorDatenToCCstatus(); // Kamera >>> CCstatus + std::vector splitted; aktparamgraph = trim(aktparamgraph); - int _brightness = 0; - int _contrast = 0; - int _saturation = 0; - int _sharpness = 0; - int _autoExposureLevel = 0; if (aktparamgraph.size() == 0) + { if (!this->GetNextParagraph(pfile, aktparamgraph)) + { return false; + } + } - if (aktparamgraph.compare("[TakeImage]") != 0) // Paragraph does not fit TakeImage + if (aktparamgraph.compare("[TakeImage]") != 0) + { + // Paragraph does not fit TakeImage return false; + } while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) { splitted = ZerlegeZeile(aktparamgraph); - if ((toUpper(splitted[0]) == "RAWIMAGESLOCATION") && (splitted.size() > 1)) + + if ((toUpper(splitted[0]) == "RAWIMAGESLOCATION") && (splitted.size() > 1)) { imagesLocation = "/sdcard" + splitted[1]; isLogImage = true; } - if ((toUpper(splitted[0]) == "IMAGEQUALITY") && (splitted.size() > 1)) - ImageQuality = std::stod(splitted[1]); - if ((toUpper(splitted[0]) == "ZOOM") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "RAWIMAGESRETENTION") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + this->imagesRetention = std::stod(splitted[1]); + } + } + + else if ((toUpper(splitted[0]) == "SAVEALLFILES") && (splitted.size() > 1)) + { + CCstatus.SaveAllFiles = alphanumericToBoolean(splitted[1]); + } + + else if ((toUpper(splitted[0]) == "WAITBEFORETAKINGPICTURE") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _WaitBeforePicture = std::stoi(splitted[1]); + if (_WaitBeforePicture != 0) + { + CCstatus.WaitBeforePicture = _WaitBeforePicture; + } + else + { + CCstatus.WaitBeforePicture = 2; + } + } + } + + else if ((toUpper(splitted[0]) == "CAMGAINCEILING") && (splitted.size() > 1)) + { + std::string _ImageGainceiling = toUpper(splitted[1]); + + if (isStringNumeric(_ImageGainceiling)) + { + int _ImageGainceiling_ = std::stoi(_ImageGainceiling); + switch (_ImageGainceiling_) + { + case 1: + CFstatus.ImageGainceiling = GAINCEILING_4X; + break; + case 2: + CFstatus.ImageGainceiling = GAINCEILING_8X; + break; + case 3: + CFstatus.ImageGainceiling = GAINCEILING_16X; + break; + case 4: + CFstatus.ImageGainceiling = GAINCEILING_32X; + break; + case 5: + CFstatus.ImageGainceiling = GAINCEILING_64X; + break; + case 6: + CFstatus.ImageGainceiling = GAINCEILING_128X; + break; + default: + CFstatus.ImageGainceiling = GAINCEILING_2X; + } + } + else + { + if (_ImageGainceiling == "X4") + { + CCstatus.ImageGainceiling = GAINCEILING_4X; + } + else if (_ImageGainceiling == "X8") + { + CCstatus.ImageGainceiling = GAINCEILING_8X; + } + else if (_ImageGainceiling == "X16") + { + CCstatus.ImageGainceiling = GAINCEILING_16X; + } + else if (_ImageGainceiling == "X32") + { + CCstatus.ImageGainceiling = GAINCEILING_32X; + } + else if (_ImageGainceiling == "X64") + { + CCstatus.ImageGainceiling = GAINCEILING_64X; + } + else if (_ImageGainceiling == "X128") + { + CCstatus.ImageGainceiling = GAINCEILING_128X; + } + else + { + CCstatus.ImageGainceiling = GAINCEILING_2X; + } + } + } + + else if ((toUpper(splitted[0]) == "CAMQUALITY") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageQuality = std::stoi(splitted[1]); + CCstatus.ImageQuality = clipInt(_ImageQuality, 63, 6); + } + } + + else if ((toUpper(splitted[0]) == "CAMBRIGHTNESS") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageBrightness = std::stoi(splitted[1]); + CCstatus.ImageBrightness = clipInt(_ImageBrightness, 2, -2); + } + } + + else if ((toUpper(splitted[0]) == "CAMCONTRAST") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageContrast = std::stoi(splitted[1]); + CCstatus.ImageContrast = clipInt(_ImageContrast, 2, -2); + } + } + + else if ((toUpper(splitted[0]) == "CAMSATURATION") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageSaturation = std::stoi(splitted[1]); + CCstatus.ImageSaturation = clipInt(_ImageSaturation, 2, -2); + } + } + + else if ((toUpper(splitted[0]) == "CAMSHARPNESS") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageSharpness = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageSharpness = clipInt(_ImageSharpness, 2, -2); + } + else + { + CCstatus.ImageSharpness = clipInt(_ImageSharpness, 3, -3); + } + } + } + + else if ((toUpper(splitted[0]) == "CAMAUTOSHARPNESS") && (splitted.size() > 1)) + { + CCstatus.ImageAutoSharpness = alphanumericToBoolean(splitted[1]); + } + + else if ((toUpper(splitted[0]) == "CAMSPECIALEFFECT") && (splitted.size() > 1)) + { + std::string _ImageSpecialEffect = toUpper(splitted[1]); + + if (isStringNumeric(_ImageSpecialEffect)) + { + int _ImageSpecialEffect_ = std::stoi(_ImageSpecialEffect); + CFstatus.ImageSpecialEffect = clipInt(_ImageSpecialEffect_, 6, 0); + } + else + { + if (_ImageSpecialEffect == "NEGATIVE") + { + CCstatus.ImageSpecialEffect = 1; + } + else if (_ImageSpecialEffect == "GRAYSCALE") + { + CCstatus.ImageSpecialEffect = 2; + } + else if (_ImageSpecialEffect == "RED") + { + CCstatus.ImageSpecialEffect = 3; + } + else if (_ImageSpecialEffect == "GREEN") + { + CCstatus.ImageSpecialEffect = 4; + } + else if (_ImageSpecialEffect == "BLUE") + { + CCstatus.ImageSpecialEffect = 5; + } + else if (_ImageSpecialEffect == "RETRO") + { + CCstatus.ImageSpecialEffect = 6; + } + else + { + CCstatus.ImageSpecialEffect = 0; + } + } + } + + else if ((toUpper(splitted[0]) == "CAMWBMODE") && (splitted.size() > 1)) + { + std::string _ImageWbMode = toUpper(splitted[1]); + + if (isStringNumeric(_ImageWbMode)) + { + int _ImageWbMode_ = std::stoi(_ImageWbMode); + CFstatus.ImageWbMode = clipInt(_ImageWbMode_, 4, 0); + } + else + { + if (_ImageWbMode == "SUNNY") + { + CCstatus.ImageWbMode = 1; + } + else if (_ImageWbMode == "CLOUDY") + { + CCstatus.ImageWbMode = 2; + } + else if (_ImageWbMode == "OFFICE") + { + CCstatus.ImageWbMode = 3; + } + else if (_ImageWbMode == "HOME") + { + CCstatus.ImageWbMode = 4; + } + else + { + CCstatus.ImageWbMode = 0; + } + } + } + + else if ((toUpper(splitted[0]) == "CAMAWB") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - ZoomEnabled = true; - else if (toUpper(splitted[1]) == "FALSE") - ZoomEnabled = false; + CCstatus.ImageAwb = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "ZOOMMODE") && (splitted.size() > 1)) - ZoomMode = std::stod(splitted[1]); - if ((toUpper(splitted[0]) == "ZOOMOFFSETX") && (splitted.size() > 1)) - zoomOffsetX = std::stod(splitted[1]); - if ((toUpper(splitted[0]) == "ZOOMOFFSETY") && (splitted.size() > 1)) - zoomOffsetY = std::stod(splitted[1]); - if ((toUpper(splitted[0]) == "GRAYSCALE") && (splitted.size() > 1)) + + else if ((toUpper(splitted[0]) == "CAMAWBGAIN") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - ImageGrayscale = true; - else if (toUpper(splitted[1]) == "FALSE") - ImageGrayscale = false; + CCstatus.ImageAwbGain = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "NEGATIVE") && (splitted.size() > 1)) + + else if ((toUpper(splitted[0]) == "CAMAEC") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - ImageNegative = true; - else if (toUpper(splitted[1]) == "FALSE") - ImageNegative = false; + CCstatus.ImageAec = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "AEC2") && (splitted.size() > 1)) + + else if ((toUpper(splitted[0]) == "CAMAEC2") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - ImageAec2 = true; - else if (toUpper(splitted[1]) == "FALSE") - ImageAec2 = false; + CCstatus.ImageAec2 = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "AUTOEXPOSURELEVEL") && (splitted.size() > 1)) - _autoExposureLevel = std::stod(splitted[1]); - if ((toUpper(splitted[0]) == "IMAGESIZE") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMAELEVEL") && (splitted.size() > 1)) { - ImageSize = Camera.TextToFramesize(splitted[1].c_str()); - isImageSize = true; + if (isStringNumeric(splitted[1])) + { + int _ImageAeLevel = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageAeLevel = clipInt(_ImageAeLevel, 2, -2); + } + else + { + CCstatus.ImageAeLevel = clipInt(_ImageAeLevel, 5, -5); + } + } } - if ((toUpper(splitted[0]) == "SAVEALLFILES") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMAECVALUE") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - SaveAllFiles = true; + if (isStringNumeric(splitted[1])) + { + int _ImageAecValue = std::stoi(splitted[1]); + CCstatus.ImageAecValue = clipInt(_ImageAecValue, 1200, 0); + } } - - if ((toUpper(splitted[0]) == "WAITBEFORETAKINGPICTURE") && (splitted.size() > 1)) + + else if ((toUpper(splitted[0]) == "CAMAGC") && (splitted.size() > 1)) + { + CCstatus.ImageAgc = alphanumericToBoolean(splitted[1]); + } + + else if ((toUpper(splitted[0]) == "CAMAGCGAIN") && (splitted.size() > 1)) { - waitbeforepicture = stoi(splitted[1]); + if (isStringNumeric(splitted[1])) + { + int _ImageAgcGain = std::stoi(splitted[1]); + CCstatus.ImageAgcGain = clipInt(_ImageAgcGain, 30, 0); + } } - if ((toUpper(splitted[0]) == "RAWIMAGESRETENTION") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMBPC") && (splitted.size() > 1)) { - this->imagesRetention = std::stoi(splitted[1]); + CCstatus.ImageBpc = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "BRIGHTNESS") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMWPC") && (splitted.size() > 1)) { - _brightness = stoi(splitted[1]); + CCstatus.ImageWpc = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "CONTRAST") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMRAWGMA") && (splitted.size() > 1)) { - _contrast = stoi(splitted[1]); + CCstatus.ImageRawGma = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "SATURATION") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMLENC") && (splitted.size() > 1)) { - _saturation = stoi(splitted[1]); + CCstatus.ImageLenc = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "SHARPNESS") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMHMIRROR") && (splitted.size() > 1)) { - _sharpness = stoi(splitted[1]); + CCstatus.ImageHmirror = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "FIXEDEXPOSURE") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMVFLIP") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") - FixedExposure = true; + CCstatus.ImageVflip = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "LEDINTENSITY") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMDCW") && (splitted.size() > 1)) { - float ledintensity = stof(splitted[1]); - ledintensity = min((float) 100, ledintensity); - ledintensity = max((float) 0, ledintensity); - Camera.SetLEDIntensity(ledintensity); + CCstatus.ImageDcw = alphanumericToBoolean(splitted[1]); } - if ((toUpper(splitted[0]) == "DEMO") && (splitted.size() > 1)) + else if ((toUpper(splitted[0]) == "CAMDENOISE") && (splitted.size() > 1)) { - if (toUpper(splitted[1]) == "TRUE") + if (isStringNumeric(splitted[1])) + { + int _ImageDenoiseLevel = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageDenoiseLevel = 0; + } + else + { + CCstatus.ImageDenoiseLevel = clipInt(_ImageDenoiseLevel, 8, 0); + } + } + } + + else if ((toUpper(splitted[0]) == "CAMZOOM") && (splitted.size() > 1)) + { + CCstatus.ImageZoomEnabled = alphanumericToBoolean(splitted[1]); + } + + else if ((toUpper(splitted[0]) == "CAMZOOMOFFSETX") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageZoomOffsetX = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 480, -480); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CCstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 704, -704); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CCstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 960, -960); + } + } + } + + else if ((toUpper(splitted[0]) == "CAMZOOMOFFSETY") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageZoomOffsetY = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 360, -360); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CCstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 528, -528); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CCstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 720, -720); + } + } + } + + else if ((toUpper(splitted[0]) == "CAMZOOMSIZE") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + int _ImageZoomSize = std::stoi(splitted[1]); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageZoomSize = clipInt(_ImageZoomSize, 29, 0); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CCstatus.ImageZoomSize = clipInt(_ImageZoomSize, 43, 0); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CCstatus.ImageZoomSize = clipInt(_ImageZoomSize, 59, 0); + } + } + } + + else if ((toUpper(splitted[0]) == "LEDINTENSITY") && (splitted.size() > 1)) + { + if (isStringNumeric(splitted[1])) + { + float ledintensity = std::stof(splitted[1]); + Camera.SetLEDIntensity(ledintensity); + } + } + + else if ((toUpper(splitted[0]) == "DEMO") && (splitted.size() > 1)) + { + CCstatus.DemoMode = alphanumericToBoolean(splitted[1]); + if (CCstatus.DemoMode == true) + { Camera.useDemoMode(); + } } } - Camera.SetBrightnessContrastSaturation(_brightness, _contrast, _saturation, _autoExposureLevel, ImageGrayscale, ImageNegative, ImageAec2, _sharpness); - Camera.SetQualitySize(ImageQuality, ImageSize, ZoomEnabled, ZoomMode, zoomOffsetX, zoomOffsetY); + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); - image_width = Camera.image_width; - image_height = Camera.image_height; rawImage = new CImageBasis("rawImage"); - rawImage->CreateEmptyImage(image_width, image_height, 3); - - waitbeforepicture_store = waitbeforepicture; - if (FixedExposure && (waitbeforepicture > 0)) - { -// ESP_LOGD(TAG, "Fixed Exposure enabled!"); - int flash_duration = (int) (waitbeforepicture * 1000); - Camera.EnableAutoExposure(flash_duration); - waitbeforepicture = 0.2; -// flash_duration = (int) (waitbeforepicture * 1000); -// takePictureWithFlash(flash_duration); -// rawImage->SaveToFile("/sdcard/init2.jpg"); - } + rawImage->CreateEmptyImage(CCstatus.ImageWidth, CCstatus.ImageHeight, 3); return true; } +ClassFlowTakeImage::ClassFlowTakeImage(std::vector *lfc) : ClassFlowImage(lfc, TAG) +{ + imagesLocation = "/log/source"; + imagesRetention = 5; + SetInitialParameter(); +} string ClassFlowTakeImage::getHTMLSingleStep(string host) { @@ -236,74 +537,78 @@ string ClassFlowTakeImage::getHTMLSingleStep(string host) return result; } - +// wird bei jeder Auswertrunde aufgerufen bool ClassFlowTakeImage::doFlow(string zwtime) { psram_init_shared_memory_for_take_image_step(); string logPath = CreateLogFolder(zwtime); - int flash_duration = (int) (waitbeforepicture * 1000); - - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - Before takePictureWithFlash"); - #endif + int flash_duration = (int)(CCstatus.WaitBeforePicture * 1000); +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - Before takePictureWithFlash"); +#endif - #ifdef WIFITURNOFF - esp_wifi_stop(); // to save power usage and - #endif +#ifdef WIFITURNOFF + esp_wifi_stop(); // to save power usage and +#endif - takePictureWithFlash(flash_duration); + // wenn die Kameraeinstellungen durch Erstellen eines neuen Referenzbildes verändert wurden, müssen sie neu gesetzt werden + if (CFstatus.changedCameraSettings) + { + Camera.setSensorDatenFromCCstatus(); // CCstatus >>> Kamera + Camera.SetQualityZoomSize(CCstatus.ImageQuality, CCstatus.ImageFrameSize, CCstatus.ImageZoomEnabled, CCstatus.ImageZoomOffsetX, CCstatus.ImageZoomOffsetY, CCstatus.ImageZoomSize, CCstatus.ImageVflip); + CFstatus.changedCameraSettings = false; + } - #ifdef WIFITURNOFF - esp_wifi_start(); - #endif + takePictureWithFlash(flash_duration); +#ifdef WIFITURNOFF + esp_wifi_start(); +#endif - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - After takePictureWithFlash"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - After takePictureWithFlash"); +#endif LogImage(logPath, "raw", NULL, NULL, zwtime, rawImage); RemoveOldLogs(); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - After RemoveOldLogs"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("ClassFlowTakeImage::doFlow - After RemoveOldLogs"); +#endif psram_deinit_shared_memory_for_take_image_step(); return true; } - esp_err_t ClassFlowTakeImage::SendRawJPG(httpd_req_t *req) { - int flash_duration = (int) (waitbeforepicture * 1000); + int flash_duration = (int)(CCstatus.WaitBeforePicture * 1000); time(&TimeImageTaken); localtime(&TimeImageTaken); return Camera.CaptureToHTTP(req, flash_duration); } - -ImageData* ClassFlowTakeImage::SendRawImage() +ImageData *ClassFlowTakeImage::SendRawImage(void) { CImageBasis *zw = new CImageBasis("SendRawImage", rawImage); ImageData *id; - int flash_duration = (int) (waitbeforepicture * 1000); + int flash_duration = (int)(CCstatus.WaitBeforePicture * 1000); Camera.CaptureToBasisImage(zw, flash_duration); time(&TimeImageTaken); localtime(&TimeImageTaken); - id = zw->writeToMemoryAsJPG(); + id = zw->writeToMemoryAsJPG(); delete zw; - return id; + return id; } -time_t ClassFlowTakeImage::getTimeImageTaken() +time_t ClassFlowTakeImage::getTimeImageTaken(void) { return TimeImageTaken; } @@ -312,4 +617,3 @@ ClassFlowTakeImage::~ClassFlowTakeImage(void) { delete rawImage; } - diff --git a/code/components/jomjol_flowcontroll/ClassFlowTakeImage.h b/code/components/jomjol_flowcontroll/ClassFlowTakeImage.h index d83f393e1..0be4f3af8 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowTakeImage.h +++ b/code/components/jomjol_flowcontroll/ClassFlowTakeImage.h @@ -9,54 +9,32 @@ #include -class ClassFlowTakeImage : - public ClassFlowImage +class ClassFlowTakeImage : public ClassFlowImage { protected: - float waitbeforepicture; - float waitbeforepicture_store; - framesize_t ImageSize; - bool isImageSize; - bool ZoomEnabled = false; - int ZoomMode = 0; - int zoomOffsetX = 0; - int zoomOffsetY = 0; - bool ImageGrayscale; - bool ImageNegative; - bool ImageAec2; - int ImageQuality; time_t TimeImageTaken; string namerawimage; - int image_height, image_width; - bool SaveAllFiles; - bool FixedExposure; - - - void CopyFile(string input, string output); - - esp_err_t camera_capture(); + esp_err_t camera_capture(void); void takePictureWithFlash(int flash_duration); - - void SetInitialParameter(void); + void SetInitialParameter(void); public: CImageBasis *rawImage; - ClassFlowTakeImage(std::vector* lfc); + ClassFlowTakeImage(std::vector *lfc); - bool ReadParameter(FILE* pfile, string& aktparamgraph); + bool ReadParameter(FILE *pfile, string &aktparamgraph); bool doFlow(string time); string getHTMLSingleStep(string host); - time_t getTimeImageTaken(); - string name(){return "ClassFlowTakeImage";}; + time_t getTimeImageTaken(void); + string name() { return "ClassFlowTakeImage"; }; - ImageData* SendRawImage(); + ImageData *SendRawImage(void); esp_err_t SendRawJPG(httpd_req_t *req); ~ClassFlowTakeImage(void); }; - -#endif //CLASSFFLOWTAKEIMAGE_H \ No newline at end of file +#endif // CLASSFFLOWTAKEIMAGE_H \ No newline at end of file diff --git a/code/components/jomjol_flowcontroll/ClassFlowWebhook.cpp b/code/components/jomjol_flowcontroll/ClassFlowWebhook.cpp new file mode 100644 index 000000000..5194c82b4 --- /dev/null +++ b/code/components/jomjol_flowcontroll/ClassFlowWebhook.cpp @@ -0,0 +1,171 @@ +#ifdef ENABLE_WEBHOOK +#include +#include "ClassFlowWebhook.h" +#include "Helper.h" +#include "connect_wlan.h" + +#include "time_sntp.h" +#include "interface_webhook.h" + +#include "ClassFlowPostProcessing.h" +#include "ClassFlowAlignment.h" +#include "esp_log.h" +#include "../../include/defines.h" + +#include "ClassLogFile.h" + +#include + +static const char* TAG = "WEBHOOK"; + +void ClassFlowWebhook::SetInitialParameter(void) +{ + uri = ""; + flowpostprocessing = NULL; + flowAlignment = NULL; + previousElement = NULL; + ListFlowControll = NULL; + disabled = false; + WebhookEnable = false; + WebhookUploadImg = 0; +} + +ClassFlowWebhook::ClassFlowWebhook() +{ + SetInitialParameter(); +} + +ClassFlowWebhook::ClassFlowWebhook(std::vector* lfc) +{ + SetInitialParameter(); + + ListFlowControll = lfc; + for (int i = 0; i < ListFlowControll->size(); ++i) + { + if (((*ListFlowControll)[i])->name().compare("ClassFlowPostProcessing") == 0) + { + flowpostprocessing = (ClassFlowPostProcessing*) (*ListFlowControll)[i]; + } + if (((*ListFlowControll)[i])->name().compare("ClassFlowAlignment") == 0) + { + flowAlignment = (ClassFlowAlignment*) (*ListFlowControll)[i]; + } + + } +} + +ClassFlowWebhook::ClassFlowWebhook(std::vector* lfc, ClassFlow *_prev) +{ + SetInitialParameter(); + + previousElement = _prev; + ListFlowControll = lfc; + + for (int i = 0; i < ListFlowControll->size(); ++i) + { + if (((*ListFlowControll)[i])->name().compare("ClassFlowPostProcessing") == 0) + { + flowpostprocessing = (ClassFlowPostProcessing*) (*ListFlowControll)[i]; + } + if (((*ListFlowControll)[i])->name().compare("ClassFlowAlignment") == 0) + { + flowAlignment = (ClassFlowAlignment*) (*ListFlowControll)[i]; + } + } +} + + +bool ClassFlowWebhook::ReadParameter(FILE* pfile, string& aktparamgraph) +{ + std::vector splitted; + + aktparamgraph = trim(aktparamgraph); + printf("akt param: %s\n", aktparamgraph.c_str()); + + if (aktparamgraph.size() == 0) + if (!this->GetNextParagraph(pfile, aktparamgraph)) + return false; + + if (toUpper(aktparamgraph).compare("[WEBHOOK]") != 0) + return false; + + + + while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) + { + ESP_LOGD(TAG, "while loop reading line: %s", aktparamgraph.c_str()); + splitted = ZerlegeZeile(aktparamgraph); + std::string _param = GetParameterName(splitted[0]); + + if ((toUpper(_param) == "URI") && (splitted.size() > 1)) + { + this->uri = splitted[1]; + } + if (((toUpper(_param) == "APIKEY")) && (splitted.size() > 1)) + { + this->apikey = splitted[1]; + } + if (((toUpper(_param) == "UPLOADIMG")) && (splitted.size() > 1)) + { + if (toUpper(splitted[1]) == "1") + { + this->WebhookUploadImg = 1; + } else if (toUpper(splitted[1]) == "2") + { + this->WebhookUploadImg = 2; + } + } + } + + WebhookInit(uri,apikey); + WebhookEnable = true; + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Webhook Enabled for Uri " + uri); + + printf("uri: %s\n", uri.c_str()); + return true; +} + + +void ClassFlowWebhook::handleMeasurement(string _decsep, string _value) +{ + string _digit, _decpos; + int _pospunkt = _decsep.find_first_of("."); +// ESP_LOGD(TAG, "Name: %s, Pospunkt: %d", _decsep.c_str(), _pospunkt); + if (_pospunkt > -1) + _digit = _decsep.substr(0, _pospunkt); + else + _digit = "default"; + for (int j = 0; j < flowpostprocessing->NUMBERS.size(); ++j) + { + if (_digit == "default") // Set to default first (if nothing else is set) + { + flowpostprocessing->NUMBERS[j]->MeasurementV2 = _value; + } + if (flowpostprocessing->NUMBERS[j]->name == _digit) + { + flowpostprocessing->NUMBERS[j]->MeasurementV2 = _value; + } + } +} + + +bool ClassFlowWebhook::doFlow(string zwtime) +{ + if (!WebhookEnable) + return true; + + if (flowpostprocessing) + { + printf("vor sende WebHook"); + bool numbersWithError = WebhookPublish(flowpostprocessing->GetNumbers()); + + #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG + if ((WebhookUploadImg == 1 || (WebhookUploadImg != 0 && numbersWithError)) && flowAlignment && flowAlignment->AlgROI) { + WebhookUploadPic(flowAlignment->AlgROI); + } + #endif + } + + return true; +} +#endif //ENABLE_WEBHOOK \ No newline at end of file diff --git a/code/components/jomjol_flowcontroll/ClassFlowWebhook.h b/code/components/jomjol_flowcontroll/ClassFlowWebhook.h new file mode 100644 index 000000000..8f679d42f --- /dev/null +++ b/code/components/jomjol_flowcontroll/ClassFlowWebhook.h @@ -0,0 +1,43 @@ +#ifdef ENABLE_WEBHOOK + +#pragma once + +#ifndef CLASSFWEBHOOK_H +#define CLASSFWEBHOOK_H + +#include "ClassFlow.h" + +#include "ClassFlowPostProcessing.h" +#include "ClassFlowAlignment.h" + +#include + +class ClassFlowWebhook : + public ClassFlow +{ +protected: + std::string uri, apikey; + ClassFlowPostProcessing* flowpostprocessing; + ClassFlowAlignment* flowAlignment; + + bool WebhookEnable; + int WebhookUploadImg; + + void SetInitialParameter(void); + + void handleFieldname(string _decsep, string _value); + void handleMeasurement(string _decsep, string _value); + + +public: + ClassFlowWebhook(); + ClassFlowWebhook(std::vector* lfc); + ClassFlowWebhook(std::vector* lfc, ClassFlow *_prev); + + bool ReadParameter(FILE* pfile, string& aktparamgraph); + bool doFlow(string time); + string name(){return "ClassFlowWebhook";}; +}; + +#endif //CLASSFWEBHOOK_H +#endif //ENABLE_WEBHOOK \ No newline at end of file diff --git a/code/components/jomjol_flowcontroll/MainFlowControl.cpp b/code/components/jomjol_flowcontroll/MainFlowControl.cpp index 85ed30674..e80f69eb3 100644 --- a/code/components/jomjol_flowcontroll/MainFlowControl.cpp +++ b/code/components/jomjol_flowcontroll/MainFlowControl.cpp @@ -34,6 +34,7 @@ #endif ClassFlowControll flowctrl; +camera_flow_config_temp_t CFstatus; TaskHandle_t xHandletask_autodoFlow = NULL; @@ -48,177 +49,329 @@ bool isPlannedReboot = false; static const char *TAG = "MAINCTRL"; -//#define DEBUG_DETAIL_ON +// #define DEBUG_DETAIL_ON - -void CheckIsPlannedReboot() { +void CheckIsPlannedReboot(void) +{ FILE *pfile; - - if ((pfile = fopen("/sdcard/reboot.txt", "r")) == NULL) { - //LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Initial boot or not a planned reboot"); + + if ((pfile = fopen("/sdcard/reboot.txt", "r")) == NULL) + { + // LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Initial boot or not a planned reboot"); isPlannedReboot = false; } - else { + else + { LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Planned reboot"); - DeleteFile("/sdcard/reboot.txt"); // Prevent Boot Loop!!! + DeleteFile("/sdcard/reboot.txt"); // Prevent Boot Loop!!! isPlannedReboot = true; } } - -bool getIsPlannedReboot() { +bool getIsPlannedReboot(void) +{ return isPlannedReboot; } - -int getCountFlowRounds() { +int getCountFlowRounds(void) +{ return countRounds; } - -esp_err_t GetJPG(std::string _filename, httpd_req_t *req) { +esp_err_t GetJPG(std::string _filename, httpd_req_t *req) +{ return flowctrl.GetJPGStream(_filename, req); } - -esp_err_t GetRawJPG(httpd_req_t *req) { +esp_err_t GetRawJPG(httpd_req_t *req) +{ return flowctrl.SendRawJPG(req); } - -bool isSetupModusActive() { +bool isSetupModusActive(void) +{ return flowctrl.getStatusSetupModus(); } - -void DeleteMainFlowTask() +void DeleteMainFlowTask(void) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "DeleteMainFlowTask: xHandletask_autodoFlow: %ld", (long) xHandletask_autodoFlow); - #endif - - if( xHandletask_autodoFlow != NULL ) { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "DeleteMainFlowTask: xHandletask_autodoFlow: %ld", (long)xHandletask_autodoFlow); +#endif + + if (xHandletask_autodoFlow != NULL) + { vTaskDelete(xHandletask_autodoFlow); xHandletask_autodoFlow = NULL; } - - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Killed: xHandletask_autodoFlow"); - #endif -} +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Killed: xHandletask_autodoFlow"); +#endif +} -void doInit() { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Start flowctrl.InitFlow(config);"); - #endif +void doInit(void) +{ +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Start flowctrl.InitFlow(config);"); +#endif flowctrl.InitFlow(CONFIG_FILE); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Finished flowctrl.InitFlow(config);"); - #endif - +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Finished flowctrl.InitFlow(config);"); +#endif + /* GPIO handler has to be initialized before MQTT init to ensure proper topic subscription */ gpio_handler_init(); - #ifdef ENABLE_MQTT - flowctrl.StartMQTTService(); - #endif //ENABLE_MQTT +#ifdef ENABLE_MQTT + flowctrl.StartMQTTService(); +#endif // ENABLE_MQTT } - -bool doflow() { +bool doflow(void) +{ std::string zw_time = getCurrentTimeString(LOGFILE_TIME_FORMAT); ESP_LOGD(TAG, "doflow - start %s", zw_time.c_str()); flowisrunning = true; flowctrl.doFlow(zw_time); flowisrunning = false; - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "doflow - end %s", zw_time.c_str()); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "doflow - end %s", zw_time.c_str()); +#endif return true; } +esp_err_t setCCstatusToCFstatus(void) +{ + CFstatus.CamSensor_id = CCstatus.CamSensor_id; + + CFstatus.ImageFrameSize = CCstatus.ImageFrameSize; + CFstatus.ImageGainceiling = CCstatus.ImageGainceiling; + + CFstatus.ImageQuality = CCstatus.ImageQuality; + CFstatus.ImageBrightness = CCstatus.ImageBrightness; + CFstatus.ImageContrast = CCstatus.ImageContrast; + CFstatus.ImageSaturation = CCstatus.ImageSaturation; + CFstatus.ImageSharpness = CCstatus.ImageSharpness; + CFstatus.ImageAutoSharpness = CCstatus.ImageAutoSharpness; + CFstatus.ImageWbMode = CCstatus.ImageWbMode; + CFstatus.ImageAwb = CCstatus.ImageAwb; + CFstatus.ImageAwbGain = CCstatus.ImageAwbGain; + CFstatus.ImageAec = CCstatus.ImageAec; + CFstatus.ImageAec2 = CCstatus.ImageAec2; + CFstatus.ImageAeLevel = CCstatus.ImageAeLevel; + CFstatus.ImageAecValue = CCstatus.ImageAecValue; + CFstatus.ImageAgc = CCstatus.ImageAgc; + CFstatus.ImageAgcGain = CCstatus.ImageAgcGain; + CFstatus.ImageBpc = CCstatus.ImageBpc; + CFstatus.ImageWpc = CCstatus.ImageWpc; + CFstatus.ImageRawGma = CCstatus.ImageRawGma; + CFstatus.ImageLenc = CCstatus.ImageLenc; + CFstatus.ImageSpecialEffect = CCstatus.ImageSpecialEffect; + CFstatus.ImageHmirror = CCstatus.ImageHmirror; + CFstatus.ImageVflip = CCstatus.ImageVflip; + CFstatus.ImageDcw = CCstatus.ImageDcw; + CFstatus.ImageDenoiseLevel = CCstatus.ImageDenoiseLevel; + + CFstatus.ImageLedIntensity = CCstatus.ImageLedIntensity; + + CFstatus.ImageZoomEnabled = CCstatus.ImageZoomEnabled; + CFstatus.ImageZoomOffsetX = CCstatus.ImageZoomOffsetX; + CFstatus.ImageZoomOffsetY = CCstatus.ImageZoomOffsetY; + CFstatus.ImageZoomSize = CCstatus.ImageZoomSize; + + CFstatus.WaitBeforePicture = CCstatus.WaitBeforePicture; + + return ESP_OK; +} + +esp_err_t setCFstatusToCCstatus(void) +{ + // CCstatus.CamSensor_id = CFstatus.CamSensor_id; + + CCstatus.ImageFrameSize = CFstatus.ImageFrameSize; + CCstatus.ImageGainceiling = CFstatus.ImageGainceiling; + + CCstatus.ImageQuality = CFstatus.ImageQuality; + CCstatus.ImageBrightness = CFstatus.ImageBrightness; + CCstatus.ImageContrast = CFstatus.ImageContrast; + CCstatus.ImageSaturation = CFstatus.ImageSaturation; + CCstatus.ImageSharpness = CFstatus.ImageSharpness; + CCstatus.ImageAutoSharpness = CFstatus.ImageAutoSharpness; + CCstatus.ImageWbMode = CFstatus.ImageWbMode; + CCstatus.ImageAwb = CFstatus.ImageAwb; + CCstatus.ImageAwbGain = CFstatus.ImageAwbGain; + CCstatus.ImageAec = CFstatus.ImageAec; + CCstatus.ImageAec2 = CFstatus.ImageAec2; + CCstatus.ImageAeLevel = CFstatus.ImageAeLevel; + CCstatus.ImageAecValue = CFstatus.ImageAecValue; + CCstatus.ImageAgc = CFstatus.ImageAgc; + CCstatus.ImageAgcGain = CFstatus.ImageAgcGain; + CCstatus.ImageBpc = CFstatus.ImageBpc; + CCstatus.ImageWpc = CFstatus.ImageWpc; + CCstatus.ImageRawGma = CFstatus.ImageRawGma; + CCstatus.ImageLenc = CFstatus.ImageLenc; + CCstatus.ImageSpecialEffect = CFstatus.ImageSpecialEffect; + CCstatus.ImageHmirror = CFstatus.ImageHmirror; + CCstatus.ImageVflip = CFstatus.ImageVflip; + CCstatus.ImageDcw = CFstatus.ImageDcw; + CCstatus.ImageDenoiseLevel = CFstatus.ImageDenoiseLevel; + + CCstatus.ImageLedIntensity = CFstatus.ImageLedIntensity; + + CCstatus.ImageZoomEnabled = CFstatus.ImageZoomEnabled; + CCstatus.ImageZoomOffsetX = CFstatus.ImageZoomOffsetX; + CCstatus.ImageZoomOffsetY = CFstatus.ImageZoomOffsetY; + CCstatus.ImageZoomSize = CFstatus.ImageZoomSize; + + CCstatus.WaitBeforePicture = CFstatus.WaitBeforePicture; + + return ESP_OK; +} + +esp_err_t setCFstatusToCam(void) +{ + sensor_t *s = esp_camera_sensor_get(); + + if (s != NULL) + { + s->set_framesize(s, CFstatus.ImageFrameSize); + s->set_quality(s, CFstatus.ImageQuality); // 0 - 63 + + s->set_brightness(s, CFstatus.ImageBrightness); // -2 to 2 + s->set_contrast(s, CFstatus.ImageContrast); // -2 to 2 + s->set_saturation(s, CFstatus.ImageSaturation); // -2 to 2 + // s->set_sharpness(s, CFstatus.ImageSharpness); // auto-sharpness is not officially supported, default to 0 + Camera.SetCamSharpness(CFstatus.ImageAutoSharpness, CFstatus.ImageSharpness); + + s->set_denoise(s, CFstatus.ImageDenoiseLevel); // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + + s->set_special_effect(s, CFstatus.ImageSpecialEffect); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint, 4 - Green Tint, 5 - Blue Tint, 6 - Sepia) + s->set_wb_mode(s, CFstatus.ImageWbMode); // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) + + s->set_ae_level(s, CFstatus.ImageAeLevel); // -2 to 2 + s->set_aec_value(s, CFstatus.ImageAecValue); // 0 to 1200 + s->set_agc_gain(s, CFstatus.ImageAgcGain); // 0 to 30 + + // s->set_gainceiling(s, CFstatus.ImageGainceiling); // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) + Camera.ov5640_set_gainceiling(s, CFstatus.ImageGainceiling); + + s->set_lenc(s, CFstatus.ImageLenc); // 0 = disable , 1 = enable + s->set_gain_ctrl(s, CFstatus.ImageAgc); // 0 = disable , 1 = enable + s->set_exposure_ctrl(s, CFstatus.ImageAec); // 0 = disable , 1 = enable + + s->set_hmirror(s, CFstatus.ImageHmirror); // 0 = disable , 1 = enable + s->set_vflip(s, CFstatus.ImageVflip); // 0 = disable , 1 = enable + s->set_aec2(s, CFstatus.ImageAec2); // 0 = disable , 1 = enable + + s->set_bpc(s, CFstatus.ImageBpc); // 0 = disable , 1 = enable + s->set_wpc(s, CFstatus.ImageWpc); // 0 = disable , 1 = enable + + s->set_raw_gma(s, CFstatus.ImageRawGma); // 0 = disable , 1 = enable + + s->set_awb_gain(s, CFstatus.ImageAwbGain); // 0 = disable , 1 = enable + s->set_whitebal(s, CFstatus.ImageAwb); // 0 = disable , 1 = enable -esp_err_t handler_get_heap(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_get_heap - Start"); - ESP_LOGD(TAG, "handler_get_heap uri: %s", req->uri); - #endif + s->set_dcw(s, CFstatus.ImageDcw); // 0 = disable , 1 = enable + + TickType_t xDelay2 = 100 / portTICK_PERIOD_MS; + vTaskDelay(xDelay2); + + return ESP_OK; + } + else + { + return ESP_FAIL; + } +} + +esp_err_t handler_get_heap(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_get_heap - Start"); + ESP_LOGD(TAG, "handler_get_heap uri: %s", req->uri); +#endif std::string zw = "Heap info:
" + getESPHeapInfo(); - #ifdef TASK_ANALYSIS_ON - char* pcTaskList = (char*) calloc_psram_heap(std::string(TAG) + "->pcTaskList", 1, sizeof(char) * 768, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - if (pcTaskList) { - vTaskList(pcTaskList); - zw = zw + "

Task info:
Name | State | Prio | Lowest stacksize | Creation order | CPU (-1=NoAffinity)
" - + std::string(pcTaskList) + "
"; - free_psram_heap(std::string(TAG) + "->pcTaskList", pcTaskList); - } - else { - zw = zw + "

Task info:
ERROR - Allocation of TaskList buffer in PSRAM failed"; - } - #endif +#ifdef TASK_ANALYSIS_ON + char *pcTaskList = (char *)calloc_psram_heap(std::string(TAG) + "->pcTaskList", 1, sizeof(char) * 768, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + if (pcTaskList) + { + vTaskList(pcTaskList); + zw = zw + "

Task info:
Name | State | Prio | Lowest stacksize | Creation order | CPU (-1=NoAffinity)
" + std::string(pcTaskList) + "
"; + free_psram_heap(std::string(TAG) + "->pcTaskList", pcTaskList); + } + else + { + zw = zw + "

Task info:
ERROR - Allocation of TaskList buffer in PSRAM failed"; + } +#endif httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (zw.length() > 0) { + if (zw.length() > 0) + { httpd_resp_send(req, zw.c_str(), zw.length()); } - else { + else + { httpd_resp_send(req, NULL, 0); } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_get_heap - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_get_heap - Done"); +#endif return ESP_OK; } - -esp_err_t handler_init(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_init - Start"); - ESP_LOGD(TAG, "handler_doinit uri: %s", req->uri); - #endif +esp_err_t handler_init(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_init - Start"); + ESP_LOGD(TAG, "handler_doinit uri: %s", req->uri); +#endif httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - const char* resp_str = "Init started
"; - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + const char *resp_str = "Init started
"; + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); doInit(); resp_str = "Init done
"; - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_init - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_init - Done"); +#endif return ESP_OK; } - -esp_err_t handler_stream(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_stream - Start"); - ESP_LOGD(TAG, "handler_stream uri: %s", req->uri); - #endif +esp_err_t handler_stream(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_stream - Start"); + ESP_LOGD(TAG, "handler_stream uri: %s", req->uri); +#endif char _query[50]; char _value[10]; bool flashlightOn = false; - if (httpd_req_get_url_query_str(req, _query, 50) == ESP_OK) { -// ESP_LOGD(TAG, "Query: %s", _query); - if (httpd_query_key_value(_query, "flashlight", _value, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "flashlight is found%s", _value); - #endif - if (strlen(_value) > 0) { + if (httpd_req_get_url_query_str(req, _query, 50) == ESP_OK) + { + // ESP_LOGD(TAG, "Query: %s", _query); + if (httpd_query_key_value(_query, "flashlight", _value, 10) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "flashlight is found%s", _value); +#endif + if (strlen(_value) > 0) + { flashlightOn = true; } } @@ -226,190 +379,277 @@ esp_err_t handler_stream(httpd_req_t *req) { Camera.CaptureToStream(req, flashlightOn); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_stream - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_stream - Done"); +#endif return ESP_OK; } - -esp_err_t handler_flow_start(httpd_req_t *req) { - - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_flow_start - Start"); - #endif +esp_err_t handler_flow_start(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_flow_start - Start"); +#endif ESP_LOGD(TAG, "handler_flow_start uri: %s", req->uri); httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (autostartIsEnabled) { + if (autostartIsEnabled) + { xTaskAbortDelay(xHandletask_autodoFlow); // Delay will be aborted if task is in blocked (waiting) state. If task is already running, no action LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Flow start triggered by REST API /flow_start"); - const char* resp_str = "The flow is going to be started immediately or is already running"; - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + const char *resp_str = "The flow is going to be started immediately or is already running"; + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); } - else { + else + { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Flow start triggered by REST API, but flow is not active!"); - const char* resp_str = "WARNING: Flow start triggered by REST API, but flow is not active"; - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + const char *resp_str = "WARNING: Flow start triggered by REST API, but flow is not active"; + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_flow_start - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_flow_start - Done"); +#endif return ESP_OK; } - #ifdef ENABLE_MQTT -esp_err_t MQTTCtrlFlowStart(std::string _topic) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("MQTTCtrlFlowStart - Start"); - #endif +esp_err_t MQTTCtrlFlowStart(std::string _topic) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("MQTTCtrlFlowStart - Start"); +#endif ESP_LOGD(TAG, "MQTTCtrlFlowStart: topic %s", _topic.c_str()); - if (autostartIsEnabled) { + if (autostartIsEnabled) + { xTaskAbortDelay(xHandletask_autodoFlow); // Delay will be aborted if task is in blocked (waiting) state. If task is already running, no action LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Flow start triggered by MQTT topic " + _topic); } - else { + else + { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Flow start triggered by MQTT topic " + _topic + ", but flow is not active!"); - } + } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("MQTTCtrlFlowStart - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("MQTTCtrlFlowStart - Done"); +#endif return ESP_OK; } -#endif //ENABLE_MQTT - +#endif // ENABLE_MQTT -esp_err_t handler_json(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_json - Start"); - #endif +esp_err_t handler_json(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_json - Start"); +#endif ESP_LOGD(TAG, "handler_JSON uri: %s", req->uri); - - if (bTaskAutoFlowCreated) { + + if (bTaskAutoFlowCreated) + { httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); httpd_resp_set_type(req, "application/json"); std::string zw = flowctrl.getJSON(); - if (zw.length() > 0) { + if (zw.length() > 0) + { httpd_resp_send(req, zw.c_str(), zw.length()); } - else { + else + { httpd_resp_send(req, NULL, 0); } } - else { + else + { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Flow not (yet) started: REST API /json not yet available!"); return ESP_ERR_NOT_FOUND; } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_JSON - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_JSON - Done"); +#endif return ESP_OK; } +/** + * Generates a http response containing the OpenMetrics (https://openmetrics.io/) text wire format + * according to https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#text-format. + * + * A MetricFamily with a Metric for each Sequence is provided. If no valid value is available, the metric is not provided. + * MetricPoints are provided without a timestamp. Additional metrics with some device information is also provided. + * + * The metric name prefix is 'ai_on_the_edge_device_'. + * + * example configuration for Prometheus (`prometheus.yml`): + * + * - job_name: watermeter + * static_configs: + * - targets: ['watermeter.fritz.box'] + * +*/ +esp_err_t handler_openmetrics(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_openmetrics - Start"); +#endif + + ESP_LOGD(TAG, "handler_openmetrics uri: %s", req->uri); + + if (bTaskAutoFlowCreated) + { + httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); + httpd_resp_set_type(req, "text/plain"); // application/openmetrics-text is not yet supported by prometheus so we use text/plain for now + + const string metricNamePrefix = "ai_on_the_edge_device"; -esp_err_t handler_wasserzaehler(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler water counter - Start"); - #endif + // get current measurement (flow) + string response = createSequenceMetrics(metricNamePrefix, flowctrl.getNumbers()); - if (bTaskAutoFlowCreated) { + // CPU Temperature + response += createMetric(metricNamePrefix + "_cpu_temperature_celsius", "current cpu temperature in celsius", "gauge", std::to_string((int)temperatureRead())); + + // WiFi signal strength + response += createMetric(metricNamePrefix + "_rssi_dbm", "current WiFi signal strength in dBm", "gauge", std::to_string(get_WIFI_RSSI())); + + // memory info + response += createMetric(metricNamePrefix + "_memory_heap_free_bytes", "available heap memory", "gauge", std::to_string(getESPHeapSize())); + + // device uptime + response += createMetric(metricNamePrefix + "_uptime_seconds", "device uptime in seconds", "gauge", std::to_string((long)getUpTime())); + + // data aquisition round + response += createMetric(metricNamePrefix + "_rounds_total", "data aquisition rounds since device startup", "counter", std::to_string(countRounds)); + + // the response always contains at least the metadata (HELP, TYPE) for the MetricFamily so no length check is needed + httpd_resp_send(req, response.c_str(), response.length()); + } + else + { + httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Flow not (yet) started: REST API /metrics not yet available!"); + return ESP_ERR_NOT_FOUND; + } + +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_openmetrics - Done"); +#endif + + return ESP_OK; +} + +esp_err_t handler_wasserzaehler(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler water counter - Start"); +#endif + + if (bTaskAutoFlowCreated) + { bool _rawValue = false; bool _noerror = false; bool _all = false; std::string _type = "value"; - string zw; + std::string zw; - ESP_LOGD(TAG, "handler water counter uri: %s", req->uri); + ESP_LOGD(TAG, "handler water counter uri: %s", req->uri); char _query[100]; char _size[10]; - if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) { - // ESP_LOGD(TAG, "Query: %s", _query); - if (httpd_query_key_value(_query, "all", _size, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "all is found%s", _size); - #endif + if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) + { + // ESP_LOGD(TAG, "Query: %s", _query); + if (httpd_query_key_value(_query, "all", _size, 10) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "all is found%s", _size); +#endif _all = true; } - if (httpd_query_key_value(_query, "type", _size, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "all is found: %s", _size); - #endif + if (httpd_query_key_value(_query, "type", _size, 10) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "all is found: %s", _size); +#endif _type = std::string(_size); } - if (httpd_query_key_value(_query, "rawvalue", _size, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "rawvalue is found: %s", _size); - #endif + if (httpd_query_key_value(_query, "rawvalue", _size, 10) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "rawvalue is found: %s", _size); +#endif _rawValue = true; } - - if (httpd_query_key_value(_query, "noerror", _size, 10) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "noerror is found: %s", _size); - #endif + + if (httpd_query_key_value(_query, "noerror", _size, 10) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "noerror is found: %s", _size); +#endif _noerror = true; - } - } + } + } httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (_all) { + if (_all) + { httpd_resp_set_type(req, "text/plain"); ESP_LOGD(TAG, "TYPE: %s", _type.c_str()); int _intype = READOUT_TYPE_VALUE; - - if (_type == "prevalue") { + + if (_type == "prevalue") + { _intype = READOUT_TYPE_PREVALUE; } - - if (_type == "raw") { + + if (_type == "raw") + { _intype = READOUT_TYPE_RAWVALUE; } - - if (_type == "error") { + + if (_type == "error") + { _intype = READOUT_TYPE_ERROR; } zw = flowctrl.getReadoutAll(_intype); ESP_LOGD(TAG, "ZW: %s", zw.c_str()); - - if (zw.length() > 0) { + + if (zw.length() > 0) + { httpd_resp_send(req, zw.c_str(), zw.length()); } - + return ESP_OK; } std::string *status = flowctrl.getActStatus(); - string query = std::string(_query); - // ESP_LOGD(TAG, "Query: %s, query.c_str()); - if (query.find("full") != std::string::npos) { - string txt; + std::string query = std::string(_query); + // ESP_LOGD(TAG, "Query: %s, query.c_str()); + + if (query.find("full") != std::string::npos) + { + std::string txt; txt = ""; - if ((countRounds <= 1) && (*status != std::string("Flow finished"))) { + if ((countRounds <= 1) && (*status != std::string("Flow finished"))) + { // First round not completed yet txt += "

Please wait for the first round to complete!

Current state: " + *status + "

\n"; } - else { + else + { txt += "

Value

"; } @@ -417,161 +657,185 @@ esp_err_t handler_wasserzaehler(httpd_req_t *req) { } zw = flowctrl.getReadout(_rawValue, _noerror, 0); - - if (zw.length() > 0) { - httpd_resp_sendstr_chunk(req, zw.c_str()); + + if (zw.length() > 0) + { + httpd_resp_sendstr_chunk(req, zw.c_str()); } - if (query.find("full") != std::string::npos) { - string txt, zw; + if (query.find("full") != std::string::npos) + { + std::string txt, zw; - if ((countRounds <= 1) && (*status != std::string("Flow finished"))) { + if ((countRounds <= 1) && (*status != std::string("Flow finished"))) + { // First round not completed yet // Nothing to do } - else { - /* Digital ROIs */ + else + { + /* Digit ROIs */ txt = ""; txt += "

Recognized Digit ROIs (previous round)

\n"; txt += "\n"; - std::vector htmlinfodig; - htmlinfodig = flowctrl.GetAllDigital(); + std::vector htmlinfodig; + htmlinfodig = flowctrl.GetAllDigit(); - for (int i = 0; i < htmlinfodig.size(); ++i) { - if (flowctrl.GetTypeDigital() == Digital) { - if (htmlinfodig[i]->val >= 10) { + for (int i = 0; i < htmlinfodig.size(); ++i) + { + if (flowctrl.GetTypeDigit() == Digit) + { + // Numbers greater than 10 and less than 0 indicate NaN, since a Roi can only have values ​​from 0 to 9. + if ((htmlinfodig[i]->val >= 10) || (htmlinfodig[i]->val < 0)) + { zw = "NaN"; } - else { - zw = to_string((int) htmlinfodig[i]->val); + else + { + zw = std::to_string((int)htmlinfodig[i]->val); } - txt += "\n"; + txt += "\n"; } - else { + else + { std::stringstream stream; stream << std::fixed << std::setprecision(1) << htmlinfodig[i]->val; zw = stream.str(); - if (std::stod(zw) >= 10) { + // Numbers greater than 10 and less than 0 indicate NaN, since a Roi can only have values ​​from 0 to 9. + if ((std::stod(zw) >= 10) || (std::stod(zw) < 0)) + { zw = "NaN"; } - txt += "\n"; + txt += "\n"; } delete htmlinfodig[i]; } htmlinfodig.clear(); - + txt += "

" + zw + "

filename + "\">

" + zw + "

filename + "\">

" + zw + "

filename + "\">

" + zw + "

filename + "\">

\n"; - httpd_resp_sendstr_chunk(req, txt.c_str()); + httpd_resp_sendstr_chunk(req, txt.c_str()); /* Analog ROIs */ txt = "

Recognized Analog ROIs (previous round)

\n"; txt += "\n"; - - std::vector htmlinfoana; + + std::vector htmlinfoana; htmlinfoana = flowctrl.GetAllAnalog(); - - for (int i = 0; i < htmlinfoana.size(); ++i) { + + for (int i = 0; i < htmlinfoana.size(); ++i) + { std::stringstream stream; stream << std::fixed << std::setprecision(1) << htmlinfoana[i]->val; zw = stream.str(); - - if (std::stod(zw) >= 10) { + + // Numbers greater than 10 and less than 0 indicate NaN, since a Roi can only have values ​​from 0 to 9. + if ((std::stod(zw) >= 10) || (std::stod(zw) < 0)) + { zw = "NaN"; - } + } - txt += "\n"; + txt += "\n"; delete htmlinfoana[i]; } - - htmlinfoana.clear(); + + htmlinfoana.clear(); txt += "\n

" + zw + "

filename + "\">

" + zw + "

filename + "\">

\n"; - httpd_resp_sendstr_chunk(req, txt.c_str()); - - /* Full Image - * Only show it after the image got taken and aligned */ - txt = "

Aligned Image (current round)

\n"; - - if ((*status == std::string("Initialization")) || - (*status == std::string("Initialization (delayed)")) || - (*status == std::string("Take Image"))) { + httpd_resp_sendstr_chunk(req, txt.c_str()); + + /* Full Image + * Only show it after the image got taken */ + txt = "

Full Image (current round)

\n"; + + if ((*status == std::string("Initialization")) || + (*status == std::string("Initialization (delayed)")) || + (*status == std::string("Take Image"))) + { txt += "

Current state: " + *status + "

\n"; } - else { + else + { txt += "\n"; } - httpd_resp_sendstr_chunk(req, txt.c_str()); + httpd_resp_sendstr_chunk(req, txt.c_str()); } - } + } /* Respond with an empty chunk to signal HTTP response completion */ - httpd_resp_sendstr_chunk(req, NULL); + httpd_resp_sendstr_chunk(req, NULL); } - else { + else + { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "Flow not (yet) started: REST API /value not available!"); return ESP_ERR_NOT_FOUND; } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_wasserzaehler - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_wasserzaehler - Done"); +#endif return ESP_OK; } - -esp_err_t handler_editflow(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_editflow - Start"); - #endif +esp_err_t handler_editflow(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_editflow - Start"); +#endif ESP_LOGD(TAG, "handler_editflow uri: %s", req->uri); - char _query[200]; + char _query[512]; char _valuechar[30]; - string _task; - - if (httpd_req_get_url_query_str(req, _query, 200) == ESP_OK) { - if (httpd_query_key_value(_query, "task", _valuechar, 30) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "task is found: %s", _valuechar); - #endif - _task = string(_valuechar); + std::string _task; + + if (httpd_req_get_url_query_str(req, _query, 512) == ESP_OK) + { + if (httpd_query_key_value(_query, "task", _valuechar, 30) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "task is found: %s", _valuechar); +#endif + _task = std::string(_valuechar); } - } + } - if (_task.compare("namenumbers") == 0) { + if (_task.compare("namenumbers") == 0) + { ESP_LOGD(TAG, "Get NUMBER list"); return get_numbers_file_handler(req); } - if (_task.compare("data") == 0) { + if (_task.compare("data") == 0) + { ESP_LOGD(TAG, "Get data list"); return get_data_file_handler(req); } - if (_task.compare("tflite") == 0) { + if (_task.compare("tflite") == 0) + { ESP_LOGD(TAG, "Get tflite list"); return get_tflite_file_handler(req); } - if (_task.compare("copy") == 0) { - string in, out, zw; + if (_task.compare("copy") == 0) + { + std::string in, out, zw; httpd_query_key_value(_query, "in", _valuechar, 30); - in = string(_valuechar); - httpd_query_key_value(_query, "out", _valuechar, 30); - out = string(_valuechar); + in = std::string(_valuechar); + httpd_query_key_value(_query, "out", _valuechar, 30); + out = std::string(_valuechar); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "in: %s", in.c_str()); - ESP_LOGD(TAG, "out: %s", out.c_str()); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "in: %s", in.c_str()); + ESP_LOGD(TAG, "out: %s", out.c_str()); +#endif in = "/sdcard" + in; out = "/sdcard" + out; @@ -579,48 +843,64 @@ esp_err_t handler_editflow(httpd_req_t *req) { CopyFile(in, out); zw = "Copy Done"; httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_send(req, zw.c_str(), zw.length()); + httpd_resp_send(req, zw.c_str(), zw.length()); } - if (_task.compare("cutref") == 0) { - string in, out, zw; - int x, y, dx, dy; + if (_task.compare("cutref") == 0) + { + std::string in, out, zw; + int x = 0, y = 0, dx = 20, dy = 20; bool enhance = false; httpd_query_key_value(_query, "in", _valuechar, 30); - in = string(_valuechar); + in = std::string(_valuechar); - httpd_query_key_value(_query, "out", _valuechar, 30); - out = string(_valuechar); + httpd_query_key_value(_query, "out", _valuechar, 30); + out = std::string(_valuechar); httpd_query_key_value(_query, "x", _valuechar, 30); - zw = string(_valuechar); - x = stoi(zw); + std::string _x = std::string(_valuechar); + if (isStringNumeric(_x)) + { + x = std::stoi(_x); + } httpd_query_key_value(_query, "y", _valuechar, 30); - zw = string(_valuechar); - y = stoi(zw); + std::string _y = std::string(_valuechar); + if (isStringNumeric(_y)) + { + y = std::stoi(_y); + } httpd_query_key_value(_query, "dx", _valuechar, 30); - zw = string(_valuechar); - dx = stoi(zw); + std::string _dx = std::string(_valuechar); + if (isStringNumeric(_dx)) + { + dx = std::stoi(_dx); + } httpd_query_key_value(_query, "dy", _valuechar, 30); - zw = string(_valuechar); - dy = stoi(zw); - - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "in: %s", in.c_str()); - ESP_LOGD(TAG, "out: %s", out.c_str()); - ESP_LOGD(TAG, "x: %s", zw.c_str()); - ESP_LOGD(TAG, "y: %s", zw.c_str()); - ESP_LOGD(TAG, "dx: %s", zw.c_str()); - ESP_LOGD(TAG, "dy: %s", zw.c_str()); - #endif - - if (httpd_query_key_value(_query, "enhance", _valuechar, 10) == ESP_OK) { - zw = string(_valuechar); - if (zw.compare("true") == 0) { + std::string _dy = std::string(_valuechar); + if (isStringNumeric(_dy)) + { + dy = std::stoi(_dy); + } + +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "in: %s", in.c_str()); + ESP_LOGD(TAG, "out: %s", out.c_str()); + ESP_LOGD(TAG, "x: %s", _x.c_str()); + ESP_LOGD(TAG, "y: %s", _y.c_str()); + ESP_LOGD(TAG, "dx: %s", _dx.c_str()); + ESP_LOGD(TAG, "dy: %s", _dy.c_str()); +#endif + + if (httpd_query_key_value(_query, "enhance", _valuechar, 10) == ESP_OK) + { + string _enhance = std::string(_valuechar); + + if (_enhance.compare("true") == 0) + { enhance = true; } } @@ -628,271 +908,612 @@ esp_err_t handler_editflow(httpd_req_t *req) { in = "/sdcard" + in; out = "/sdcard" + out; - string out2 = out.substr(0, out.length() - 4) + "_org.jpg"; + std::string out2 = out.substr(0, out.length() - 4) + "_org.jpg"; - if ((flowctrl.SetupModeActive || (*flowctrl.getActStatus() == "Flow finished")) && psram_init_shared_memory_for_take_image_step()) { + if ((flowctrl.SetupModeActive || (*flowctrl.getActStatus() == std::string("Flow finished"))) && psram_init_shared_memory_for_take_image_step()) + { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Taking image for Alignment Mark Update..."); CAlignAndCutImage *caic = new CAlignAndCutImage("cutref", in); caic->CutAndSave(out2, x, y, dx, dy); - delete caic; + delete caic; CImageBasis *cim = new CImageBasis("cutref", out2); - if (enhance) { + + if (enhance) + { cim->Contrast(90); } cim->SaveToFile(out); - delete cim; + delete cim; psram_deinit_shared_memory_for_take_image_step(); zw = "CutImage Done"; } - else { - LogFile.WriteToFile(ESP_LOG_WARN, TAG, std::string("Taking image for Alignment Mark not possible while device") + - " is busy with a round (Current State: '" + *flowctrl.getActStatus() + "')!"); + else + { + LogFile.WriteToFile(ESP_LOG_WARN, TAG, std::string("Taking image for Alignment Mark not possible while device") + " is busy with a round (Current State: '" + *flowctrl.getActStatus() + "')!"); zw = "Device Busy"; } httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_send(req, zw.c_str(), zw.length()); + httpd_resp_send(req, zw.c_str(), zw.length()); } - if ((_task.compare("test_take") == 0) || (_task.compare("cam_settings") == 0)) { - std::string _zw = ""; - std::string _host = ""; - int bri = -100; - int sat = -100; - int con = -100; - int intens = -100; - int aelevel = 0; - int zoommode = 0; - int zoomoffsetx = 0; - int zoomoffsety = 0; - bool zoom = false; - bool negative = false; - bool aec2 = false; - int sharpnessLevel = 0; - #ifdef GRAYSCALE_AS_DEFAULT - bool grayscale = true; - #else - bool grayscale = false; - #endif - - if (httpd_query_key_value(_query, "host", _valuechar, 30) == ESP_OK) { - _host = std::string(_valuechar); - } - if (httpd_query_key_value(_query, "int", _valuechar, 30) == ESP_OK) { - std::string _int = std::string(_valuechar); - intens = stoi(_int); - } - if (httpd_query_key_value(_query, "bri", _valuechar, 30) == ESP_OK) { - std::string _bri = std::string(_valuechar); - bri = stoi(_bri); - } - if (httpd_query_key_value(_query, "con", _valuechar, 30) == ESP_OK) { - std::string _con = std::string(_valuechar); - con = stoi(_con); - } - if (httpd_query_key_value(_query, "sat", _valuechar, 30) == ESP_OK) { - std::string _sat = std::string(_valuechar); - sat = stoi(_sat); - } - if (httpd_query_key_value(_query, "ae", _valuechar, 30) == ESP_OK) { - std::string _ae = std::string(_valuechar); - aelevel = stoi(_ae); - } - if (httpd_query_key_value(_query, "sh", _valuechar, 30) == ESP_OK) { - std::string _sh = std::string(_valuechar); - sharpnessLevel = stoi(_sh); - } - if (httpd_query_key_value(_query, "gs", _valuechar, 30) == ESP_OK) { - std::string _gr = std::string(_valuechar); - if (stoi(_gr) != 0) { - grayscale = true; + // wird beim Erstellen eines neuen Referenzbildes aufgerufen + std::string *sys_status = flowctrl.getActStatus(); + + if ((sys_status->c_str() != std::string("Take Image")) && (sys_status->c_str() != std::string("Aligning"))) + { + if ((_task.compare("test_take") == 0) || (_task.compare("cam_settings") == 0)) + { + std::string _host = ""; + + // laden der aktuellen Kameraeinstellungen(CCstatus) in den Zwischenspeicher(CFstatus) + setCCstatusToCFstatus(); // CCstatus >>> CFstatus + + if (httpd_query_key_value(_query, "host", _valuechar, 30) == ESP_OK) + { + _host = std::string(_valuechar); } - else { - grayscale = false; + + if (httpd_query_key_value(_query, "waitb", _valuechar, 30) == ESP_OK) + { + std::string _waitb = std::string(_valuechar); + if (isStringNumeric(_waitb)) + { + CFstatus.WaitBeforePicture = std::stoi(_valuechar); + } } - } - if (httpd_query_key_value(_query, "ne", _valuechar, 30) == ESP_OK) { - std::string _ne = std::string(_valuechar); - if (stoi(_ne) != 0) { - negative = true; + + if (httpd_query_key_value(_query, "aecgc", _valuechar, 30) == ESP_OK) + { + std::string _aecgc = std::string(_valuechar); + if (isStringNumeric(_aecgc)) + { + int _aecgc_ = std::stoi(_valuechar); + switch (_aecgc_) + { + case 1: + CFstatus.ImageGainceiling = GAINCEILING_4X; + break; + case 2: + CFstatus.ImageGainceiling = GAINCEILING_8X; + break; + case 3: + CFstatus.ImageGainceiling = GAINCEILING_16X; + break; + case 4: + CFstatus.ImageGainceiling = GAINCEILING_32X; + break; + case 5: + CFstatus.ImageGainceiling = GAINCEILING_64X; + break; + case 6: + CFstatus.ImageGainceiling = GAINCEILING_128X; + break; + default: + CFstatus.ImageGainceiling = GAINCEILING_2X; + } + } + else + { + if (_aecgc == "X4") { + CFstatus.ImageGainceiling = GAINCEILING_4X; + } + else if (_aecgc == "X8") { + CFstatus.ImageGainceiling = GAINCEILING_8X; + } + else if (_aecgc == "X16") { + CFstatus.ImageGainceiling = GAINCEILING_16X; + } + else if (_aecgc == "X32") { + CFstatus.ImageGainceiling = GAINCEILING_32X; + } + else if (_aecgc == "X64") { + CFstatus.ImageGainceiling = GAINCEILING_64X; + } + else if (_aecgc == "X128") { + CFstatus.ImageGainceiling = GAINCEILING_128X; + } + else { + CFstatus.ImageGainceiling = GAINCEILING_2X; + } + } } - else { - negative = false; - } - } - if (httpd_query_key_value(_query, "a2", _valuechar, 30) == ESP_OK) { - std::string _a2 = std::string(_valuechar); - if (stoi(_a2) != 0) { - aec2 = true; - } - else { - aec2 = false; - } - } - if (httpd_query_key_value(_query, "z", _valuechar, 30) == ESP_OK) { - std::string _zoom = std::string(_valuechar); - if (stoi(_zoom) != 0) { - zoom = true; - } - else { - zoom = false; - } - } - if (httpd_query_key_value(_query, "zm", _valuechar, 30) == ESP_OK) { - std::string _zm = std::string(_valuechar); - zoommode = stoi(_zm); - } - if (httpd_query_key_value(_query, "x", _valuechar, 30) == ESP_OK) { - std::string _x = std::string(_valuechar); - zoomoffsetx = stoi(_x); - } - if (httpd_query_key_value(_query, "y", _valuechar, 30) == ESP_OK) { - std::string _y = std::string(_valuechar); - zoomoffsety = stoi(_y); - } -// ESP_LOGD(TAG, "Parameter host: %s", _host.c_str()); -// string zwzw = "Do " + _task + " start\n"; ESP_LOGD(TAG, zwzw.c_str()); - Camera.SetZoom(zoom, zoommode, zoomoffsetx, zoomoffsety); - Camera.SetBrightnessContrastSaturation(bri, con, sat, aelevel, grayscale, negative, aec2, sharpnessLevel); - Camera.SetLEDIntensity(intens); + if (httpd_query_key_value(_query, "qual", _valuechar, 30) == ESP_OK) + { + std::string _qual = std::string(_valuechar); + if (isStringNumeric(_qual)) + { + int _qual_ = std::stoi(_valuechar); + CFstatus.ImageQuality = clipInt(_qual_, 63, 6); + } + } - if (_task.compare("cam_settings") == 0) - { - ESP_LOGD(TAG, "Cam Settings set"); - _zw = "Cam Settings set"; + if (httpd_query_key_value(_query, "bri", _valuechar, 30) == ESP_OK) + { + std::string _bri = std::string(_valuechar); + if (isStringNumeric(_bri)) + { + int _bri_ = std::stoi(_valuechar); + CFstatus.ImageBrightness = clipInt(_bri_, 2, -2); + } + } + + if (httpd_query_key_value(_query, "con", _valuechar, 30) == ESP_OK) + { + std::string _con = std::string(_valuechar); + if (isStringNumeric(_con)) + { + int _con_ = std::stoi(_valuechar); + CFstatus.ImageContrast = clipInt(_con_, 2, -2); + } + } + + if (httpd_query_key_value(_query, "sat", _valuechar, 30) == ESP_OK) + { + std::string _sat = std::string(_valuechar); + if (isStringNumeric(_sat)) + { + int _sat_ = std::stoi(_valuechar); + CFstatus.ImageSaturation = clipInt(_sat_, 2, -2); + } + } + + if (httpd_query_key_value(_query, "shp", _valuechar, 30) == ESP_OK) + { + std::string _shp = std::string(_valuechar); + if (isStringNumeric(_shp)) + { + int _shp_ = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CFstatus.ImageSharpness = clipInt(_shp_, 2, -2); + } + else + { + CFstatus.ImageSharpness = clipInt(_shp_, 3, -3); + } + } + } + + if (httpd_query_key_value(_query, "ashp", _valuechar, 30) == ESP_OK) + { + std::string _ashp = std::string(_valuechar); + CFstatus.ImageAutoSharpness = alphanumericToBoolean(_ashp); + } + + if (httpd_query_key_value(_query, "spe", _valuechar, 30) == ESP_OK) + { + std::string _spe = std::string(_valuechar); + if (isStringNumeric(_spe)) + { + int _spe_ = std::stoi(_valuechar); + CFstatus.ImageSpecialEffect = clipInt(_spe_, 6, 0); + } + else + { + if (_spe == "negative") { + CFstatus.ImageSpecialEffect = 1; + } + else if (_spe == "grayscale") { + CFstatus.ImageSpecialEffect = 2; + } + else if (_spe == "red") { + CFstatus.ImageSpecialEffect = 3; + } + else if (_spe == "green") { + CFstatus.ImageSpecialEffect = 4; + } + else if (_spe == "blue") { + CFstatus.ImageSpecialEffect = 5; + } + else if (_spe == "retro") { + CFstatus.ImageSpecialEffect = 6; + } + else { + CFstatus.ImageSpecialEffect = 0; + } + } + } + + if (httpd_query_key_value(_query, "wbm", _valuechar, 30) == ESP_OK) + { + std::string _wbm = std::string(_valuechar); + if (isStringNumeric(_wbm)) + { + int _wbm_ = std::stoi(_valuechar); + CFstatus.ImageWbMode = clipInt(_wbm_, 4, 0); + } + else + { + if (_wbm == "sunny") { + CFstatus.ImageWbMode = 1; + } + else if (_wbm == "cloudy") { + CFstatus.ImageWbMode = 2; + } + else if (_wbm == "office") { + CFstatus.ImageWbMode = 3; + } + else if (_wbm == "home") { + CFstatus.ImageWbMode = 4; + } + else { + CFstatus.ImageWbMode = 0; + } + } + } + + if (httpd_query_key_value(_query, "awb", _valuechar, 30) == ESP_OK) + { + std::string _awb = std::string(_valuechar); + CFstatus.ImageAwb = alphanumericToBoolean(_awb); + } + + if (httpd_query_key_value(_query, "awbg", _valuechar, 30) == ESP_OK) + { + std::string _awbg = std::string(_valuechar); + CFstatus.ImageAwbGain = alphanumericToBoolean(_awbg); + } + + if (httpd_query_key_value(_query, "aec", _valuechar, 30) == ESP_OK) + { + std::string _aec = std::string(_valuechar); + CFstatus.ImageAec = alphanumericToBoolean(_aec); + } + + if (httpd_query_key_value(_query, "aec2", _valuechar, 30) == ESP_OK) + { + std::string _aec2 = std::string(_valuechar); + CFstatus.ImageAec2 = alphanumericToBoolean(_aec2); + } + + if (httpd_query_key_value(_query, "ael", _valuechar, 30) == ESP_OK) + { + std::string _ael = std::string(_valuechar); + if (isStringNumeric(_ael)) + { + int _ael_ = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CFstatus.ImageAeLevel = clipInt(_ael_, 2, -2); + } + else + { + CFstatus.ImageAeLevel = clipInt(_ael_, 5, -5); + } + } + } + + if (httpd_query_key_value(_query, "aecv", _valuechar, 30) == ESP_OK) + { + std::string _aecv = std::string(_valuechar); + if (isStringNumeric(_aecv)) + { + int _aecv_ = std::stoi(_valuechar); + CFstatus.ImageAecValue = clipInt(_aecv_, 1200, 0); + } + } + + if (httpd_query_key_value(_query, "agc", _valuechar, 30) == ESP_OK) + { + std::string _agc = std::string(_valuechar); + CFstatus.ImageAgc = alphanumericToBoolean(_agc); + } + + if (httpd_query_key_value(_query, "agcg", _valuechar, 30) == ESP_OK) + { + std::string _agcg = std::string(_valuechar); + if (isStringNumeric(_agcg)) + { + int _agcg_ = std::stoi(_valuechar); + CFstatus.ImageAgcGain = clipInt(_agcg_, 30, 0); + } + } + + if (httpd_query_key_value(_query, "bpc", _valuechar, 30) == ESP_OK) + { + std::string _bpc = std::string(_valuechar); + CFstatus.ImageBpc = alphanumericToBoolean(_bpc); + } + + if (httpd_query_key_value(_query, "wpc", _valuechar, 30) == ESP_OK) + { + std::string _wpc = std::string(_valuechar); + CFstatus.ImageWpc = alphanumericToBoolean(_wpc); + } + + if (httpd_query_key_value(_query, "rgma", _valuechar, 30) == ESP_OK) + { + std::string _rgma = std::string(_valuechar); + CFstatus.ImageRawGma = alphanumericToBoolean(_rgma); + } + + if (httpd_query_key_value(_query, "lenc", _valuechar, 30) == ESP_OK) + { + std::string _lenc = std::string(_valuechar); + CFstatus.ImageLenc = alphanumericToBoolean(_lenc); + } + + if (httpd_query_key_value(_query, "mirror", _valuechar, 30) == ESP_OK) + { + std::string _mirror = std::string(_valuechar); + CFstatus.ImageHmirror = alphanumericToBoolean(_mirror); + } + + if (httpd_query_key_value(_query, "flip", _valuechar, 30) == ESP_OK) + { + std::string _flip = std::string(_valuechar); + CFstatus.ImageVflip = alphanumericToBoolean(_flip); + } + + if (httpd_query_key_value(_query, "dcw", _valuechar, 30) == ESP_OK) + { + std::string _dcw = std::string(_valuechar); + CFstatus.ImageDcw = alphanumericToBoolean(_dcw); + } + + if (httpd_query_key_value(_query, "den", _valuechar, 30) == ESP_OK) + { + std::string _idlv = std::string(_valuechar); + if (isStringNumeric(_idlv)) + { + int _ImageDenoiseLevel = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CCstatus.ImageDenoiseLevel = 0; + } + else + { + CFstatus.ImageDenoiseLevel = clipInt(_ImageDenoiseLevel, 8, 0); + } + } + } + + if (httpd_query_key_value(_query, "zoom", _valuechar, 30) == ESP_OK) + { + std::string _zoom = std::string(_valuechar); + CFstatus.ImageZoomEnabled = alphanumericToBoolean(_zoom); + } + + if (httpd_query_key_value(_query, "zoomx", _valuechar, 30) == ESP_OK) + { + std::string _zoomx = std::string(_valuechar); + if (isStringNumeric(_zoomx)) + { + int _ImageZoomOffsetX = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CFstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 480, -480); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CFstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 704, -704); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CFstatus.ImageZoomOffsetX = clipInt(_ImageZoomOffsetX, 960, -960); + } + } + } + + if (httpd_query_key_value(_query, "zoomy", _valuechar, 30) == ESP_OK) + { + std::string _zoomy = std::string(_valuechar); + if (isStringNumeric(_zoomy)) + { + int _ImageZoomOffsetY = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CFstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 360, -360); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CFstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 528, -528); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CFstatus.ImageZoomOffsetY = clipInt(_ImageZoomOffsetY, 720, -720); + } + } + } + + if (httpd_query_key_value(_query, "zooms", _valuechar, 30) == ESP_OK) + { + std::string _zooms = std::string(_valuechar); + if (isStringNumeric(_zooms)) + { + int _ImageZoomSize = std::stoi(_valuechar); + if (CCstatus.CamSensor_id == OV2640_PID) + { + CFstatus.ImageZoomSize = clipInt(_ImageZoomSize, 29, 0); + } + else if (CCstatus.CamSensor_id == OV3660_PID) + { + CFstatus.ImageZoomSize = clipInt(_ImageZoomSize, 43, 0); + } + else if (CCstatus.CamSensor_id == OV5640_PID) + { + CFstatus.ImageZoomSize = clipInt(_ImageZoomSize, 59, 0); + } + } + } + + if (httpd_query_key_value(_query, "ledi", _valuechar, 30) == ESP_OK) + { + std::string _ledi = std::string(_valuechar); + if (isStringNumeric(_ledi)) + { + float _ImageLedIntensity = std::stof(_valuechar); + Camera.SetLEDIntensity(_ImageLedIntensity); + CFstatus.ImageLedIntensity = CCstatus.ImageLedIntensity; + } + } + + if (_task.compare("cam_settings") == 0) + { + // wird aufgerufen, wenn das Referenzbild + Kameraeinstellungen gespeichert wurden + setCFstatusToCCstatus(); // CFstatus >>> CCstatus + + // Kameraeinstellungen wurden verädert + CFstatus.changedCameraSettings = true; + + ESP_LOGD(TAG, "Cam Settings set"); + std::string _zw = "CamSettingsSet"; + httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); + httpd_resp_send(req, _zw.c_str(), _zw.length()); + } + else + { + // wird aufgerufen, wenn ein neues Referenzbild erstellt oder aktualisiert wurde + // CFstatus >>> Kamera + setCFstatusToCam(); + + Camera.SetQualityZoomSize(CFstatus.ImageQuality, CFstatus.ImageFrameSize, CFstatus.ImageZoomEnabled, CFstatus.ImageZoomOffsetX, CFstatus.ImageZoomOffsetY, CFstatus.ImageZoomSize, CFstatus.ImageVflip); + // Camera.SetZoomSize(CFstatus.ImageZoomEnabled, CFstatus.ImageZoomOffsetX, CFstatus.ImageZoomOffsetY, CFstatus.ImageZoomSize, CFstatus.ImageVflip); + + // Kameraeinstellungen wurden verädert + CFstatus.changedCameraSettings = true; + + ESP_LOGD(TAG, "test_take - vor TakeImage"); + std::string image_temp = flowctrl.doSingleStep("[TakeImage]", _host); + httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); + httpd_resp_send(req, image_temp.c_str(), image_temp.length()); + } } - else + if (_task.compare("test_align") == 0) { - ESP_LOGD(TAG, "test_take - vor TakeImage"); - _zw = flowctrl.doSingleStep("[TakeImage]", _host); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_send(req, _zw.c_str(), _zw.length()); - } - - if (_task.compare("test_align") == 0) { - std::string _host = ""; - if (httpd_query_key_value(_query, "host", _valuechar, 30) == ESP_OK) { - _host = std::string(_valuechar); - } -// ESP_LOGD(TAG, "Parameter host: %s", _host.c_str()); + std::string _host = ""; -// string zwzw = "Do " + _task + " start\n"; ESP_LOGD(TAG, zwzw.c_str()); - std::string zw = flowctrl.doSingleStep("[Alignment]", _host); + if (httpd_query_key_value(_query, "host", _valuechar, 30) == ESP_OK) + { + _host = std::string(_valuechar); + } + + std::string zw = flowctrl.doSingleStep("[Alignment]", _host); + httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); + httpd_resp_send(req, zw.c_str(), zw.length()); + } + } + else + { + std::string _zw = "DeviceIsBusy"; httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_send(req, zw.c_str(), zw.length()); + httpd_resp_send(req, _zw.c_str(), _zw.length()); } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_editflow - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_editflow - Done"); +#endif return ESP_OK; } +esp_err_t handler_statusflow(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_statusflow - Start"); +#endif -esp_err_t handler_statusflow(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_statusflow - Start"); - #endif - - const char* resp_str; + const char *resp_str; httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (bTaskAutoFlowCreated) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "handler_statusflow: %s", req->uri); - #endif + if (bTaskAutoFlowCreated) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "handler_statusflow: %s", req->uri); +#endif - string* zw = flowctrl.getActStatusWithTime(); + string *zw = flowctrl.getActStatusWithTime(); resp_str = zw->c_str(); - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); } - else { + else + { resp_str = "Flow task not yet created"; - httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); + httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_statusflow - Done"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_statusflow - Done"); +#endif return ESP_OK; } - -esp_err_t handler_cputemp(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_cputemp - Start"); - #endif +esp_err_t handler_cputemp(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_cputemp - Start"); +#endif httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); httpd_resp_send(req, std::to_string((int)temperatureRead()).c_str(), HTTPD_RESP_USE_STRLEN); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_cputemp - End"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_cputemp - End"); +#endif return ESP_OK; } +esp_err_t handler_rssi(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_rssi - Start"); +#endif -esp_err_t handler_rssi(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_rssi - Start"); - #endif - - if (getWIFIisConnected()) { + if (getWIFIisConnected()) + { httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); httpd_resp_send(req, std::to_string(get_WIFI_RSSI()).c_str(), HTTPD_RESP_USE_STRLEN); } - else { + else + { httpd_resp_send_err(req, HTTPD_403_FORBIDDEN, "WIFI not (yet) connected: REST API /rssi not available!"); return ESP_ERR_NOT_FOUND; - } + } - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_rssi - End"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_rssi - End"); +#endif return ESP_OK; } +esp_err_t handler_uptime(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_uptime - Start"); +#endif -esp_err_t handler_uptime(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_uptime - Start"); - #endif - std::string formatedUptime = getFormatedUptime(false); httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_send(req, formatedUptime.c_str(), formatedUptime.length()); + httpd_resp_send(req, formatedUptime.c_str(), formatedUptime.length()); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_uptime - End"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_uptime - End"); +#endif return ESP_OK; } - -esp_err_t handler_prevalue(httpd_req_t *req) { - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_prevalue - Start"); - ESP_LOGD(TAG, "handler_prevalue: %s", req->uri); - #endif +esp_err_t handler_prevalue(httpd_req_t *req) +{ +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_prevalue - Start"); + ESP_LOGD(TAG, "handler_prevalue: %s", req->uri); +#endif // Default usage message when handler gets called without any parameter - const std::string RESTUsageInfo = + const std::string RESTUsageInfo = "00: Handler usage:
" "- To retrieve actual PreValue, please provide only a numbersname, e.g. /setPreValue?numbers=main
" "- To set PreValue to a new value, please provide a numbersname and a value, e.g. /setPreValue?numbers=main&value=1234.5678
" @@ -909,82 +1530,92 @@ esp_err_t handler_prevalue(httpd_req_t *req) { httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Query: %s", _query); - #endif + if (httpd_req_get_url_query_str(req, _query, 100) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Query: %s", _query); +#endif - if (httpd_query_key_value(_query, "numbers", _numbersname, 50) != ESP_OK) { + if (httpd_query_key_value(_query, "numbers", _numbersname, 50) != ESP_OK) + { // If request is incomplete sReturnMessage = "E91: Query parameter incomplete or not valid!
" "Call /setPreValue to show REST API usage info and/or check documentation"; httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); - return ESP_FAIL; + return ESP_FAIL; } - if (httpd_query_key_value(_query, "value", _value, 20) == ESP_OK) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Value: %s", _value); - #endif + if (httpd_query_key_value(_query, "value", _value, 20) == ESP_OK) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Value: %s", _value); +#endif } } - else { + else + { // if no parameter is provided, print handler usage httpd_resp_send(req, RESTUsageInfo.c_str(), RESTUsageInfo.length()); - return ESP_OK; - } + return ESP_OK; + } - if (strlen(_value) == 0) { + if (strlen(_value) == 0) + { // If no value is povided --> return actual PreValue sReturnMessage = flowctrl.GetPrevalue(std::string(_numbersname)); - if (sReturnMessage.empty()) { + if (sReturnMessage.empty()) + { sReturnMessage = "E92: Numbers name not found"; httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); return ESP_FAIL; } } - else { + else + { // New value is positive: Set PreValue to provided value and return value // New value is negative and actual RAW value is a valid number: Set PreValue to RAW value and return value - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "REST API handler_prevalue called: numbersname: " + std::string(_numbersname) + - ", value: " + std::string(_value)); - if (!flowctrl.UpdatePrevalue(_value, _numbersname, true)) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "REST API handler_prevalue called: numbersname: " + std::string(_numbersname) + ", value: " + std::string(_value)); + + if (!flowctrl.UpdatePrevalue(_value, _numbersname, true)) + { sReturnMessage = "E93: Update request rejected. Please check device logs for more details"; - httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); + httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); return ESP_FAIL; } sReturnMessage = flowctrl.GetPrevalue(std::string(_numbersname)); - if (sReturnMessage.empty()) { + if (sReturnMessage.empty()) + { sReturnMessage = "E94: Numbers name not found"; httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); return ESP_FAIL; } } - httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); + httpd_resp_send(req, sReturnMessage.c_str(), sReturnMessage.length()); - #ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_prevalue - End"); - #endif +#ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_prevalue - End"); +#endif return ESP_OK; } - -void task_autodoFlow(void *pvParameter) { +void task_autodoFlow(void *pvParameter) +{ int64_t fr_start, fr_delta_ms; bTaskAutoFlowCreated = true; - if (!isPlannedReboot && (esp_reset_reason() == ESP_RST_PANIC)) { + if (!isPlannedReboot && (esp_reset_reason() == ESP_RST_PANIC)) + { flowctrl.setActStatus("Initialization (delayed)"); - //#ifdef ENABLE_MQTT - //MQTTPublish(mqttServer_getMainTopic() + "/" + "status", "Initialization (delayed)", false); // Right now, not possible -> MQTT Service is going to be started later - //#endif //ENABLE_MQTT - vTaskDelay(60*5000 / portTICK_PERIOD_MS); // Wait 5 minutes to give time to do an OTA update or fetch the log + // #ifdef ENABLE_MQTT + // MQTTPublish(mqttServer_getMainTopic() + "/" + "status", "Initialization (delayed)", false); // Right now, not possible -> MQTT Service is going to be started later + // #endif //ENABLE_MQTT + vTaskDelay(60 * 5000 / portTICK_PERIOD_MS); // Wait 5 minutes to give time to do an OTA update or fetch the log } ESP_LOGD(TAG, "task_autodoFlow: start"); @@ -993,206 +1624,227 @@ void task_autodoFlow(void *pvParameter) { flowctrl.setAutoStartInterval(auto_interval); autostartIsEnabled = flowctrl.getIsAutoStart(); - if (isSetupModusActive()) { + if (isSetupModusActive()) + { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "We are in Setup Mode -> Not starting Auto Flow!"); autostartIsEnabled = false; - std::string zw_time = getCurrentTimeString(LOGFILE_TIME_FORMAT); - flowctrl.doFlowTakeImageOnly(zw_time); + // 15.7.0 Setup Wizard cannot take a Reference Picture #2953 + // std::string zw_time = getCurrentTimeString(LOGFILE_TIME_FORMAT); + // flowctrl.doFlowTakeImageOnly(zw_time); } - if (autostartIsEnabled) { + if (autostartIsEnabled) + { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Starting Flow..."); } - else { + else + { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Autostart is not enabled -> Not starting Flow"); } - - while (autostartIsEnabled) { + + while (autostartIsEnabled) + { LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "----------------------------------------------------------------"); // Clear separation between runs - std::string _zw = "Round #" + std::to_string(++countRounds) + " started"; time_t roundStartTime = getUpTime(); - LogFile.WriteToFile(ESP_LOG_INFO, TAG, _zw); + + std::string _zw = "Round #" + std::to_string(++countRounds) + " started"; + LogFile.WriteToFile(ESP_LOG_INFO, TAG, _zw); + fr_start = esp_timer_get_time(); - if (flowisrunning) { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Autoflow: doFlow is already running!"); - #endif + if (flowisrunning) + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Autoflow: doFlow is already running!"); +#endif } - else { - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Autoflow: doFlow is started"); - #endif + else + { +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Autoflow: doFlow is started"); +#endif flowisrunning = true; doflow(); - #ifdef DEBUG_DETAIL_ON - ESP_LOGD(TAG, "Remove older log files"); - #endif +#ifdef DEBUG_DETAIL_ON + ESP_LOGD(TAG, "Remove older log files"); +#endif LogFile.RemoveOldLogFile(); LogFile.RemoveOldDataLog(); } // Round finished -> Logfile - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Round #" + std::to_string(countRounds) + - " completed (" + std::to_string(getUpTime() - roundStartTime) + " seconds)"); - + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Round #" + std::to_string(countRounds) + " completed (" + std::to_string(getUpTime() - roundStartTime) + " seconds)"); + // CPU Temp -> Logfile LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CPU Temperature: " + std::to_string((int)temperatureRead()) + "°C"); - + // WIFI Signal Strength (RSSI) -> Logfile LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "WIFI Signal (RSSI): " + std::to_string(get_WIFI_RSSI()) + "dBm"); // Check if time is synchronized (if NTP is configured) - if (getUseNtp() && !getTimeIsSet()) { + if (getUseNtp() && !getTimeIsSet()) + { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Time server is configured, but time is not yet set!"); StatusLED(TIME_CHECK, 1, false); } - #if (defined WLAN_USE_MESH_ROAMING && defined WLAN_USE_MESH_ROAMING_ACTIVATE_CLIENT_TRIGGERED_QUERIES) - wifiRoamingQuery(); - #endif - - // Scan channels and check if an AP with better RSSI is available, then disconnect and try to reconnect to AP with better RSSI - // NOTE: Keep this direct before the following task delay, because scan is done in blocking mode and this takes ca. 1,5 - 2s. - #ifdef WLAN_USE_ROAMING_BY_SCANNING - wifiRoamByScanning(); - #endif - +#if (defined WLAN_USE_MESH_ROAMING && defined WLAN_USE_MESH_ROAMING_ACTIVATE_CLIENT_TRIGGERED_QUERIES) + wifiRoamingQuery(); +#endif + +// Scan channels and check if an AP with better RSSI is available, then disconnect and try to reconnect to AP with better RSSI +// NOTE: Keep this direct before the following task delay, because scan is done in blocking mode and this takes ca. 1,5 - 2s. +#ifdef WLAN_USE_ROAMING_BY_SCANNING + wifiRoamByScanning(); +#endif + fr_delta_ms = (esp_timer_get_time() - fr_start) / 1000; - - if (auto_interval > fr_delta_ms) { - const TickType_t xDelay = (auto_interval - fr_delta_ms) / portTICK_PERIOD_MS; - ESP_LOGD(TAG, "Autoflow: sleep for: %ldms", (long) xDelay); - vTaskDelay( xDelay ); + + if (auto_interval > fr_delta_ms) + { + const TickType_t xDelay = (auto_interval - fr_delta_ms) / portTICK_PERIOD_MS; + ESP_LOGD(TAG, "Autoflow: sleep for: %ldms", (long)xDelay); + vTaskDelay(xDelay); } } - while(1) { + while (1) + { // Keep flow task running to handle necessary sub tasks like reboot handler, etc.. - vTaskDelay(2000 / portTICK_PERIOD_MS); + vTaskDelay(2000 / portTICK_PERIOD_MS); } - vTaskDelete(NULL); //Delete this task if it exits from the loop above + vTaskDelete(NULL); // Delete this task if it exits from the loop above xHandletask_autodoFlow = NULL; + ESP_LOGD(TAG, "task_autodoFlow: end"); } - -void InitializeFlowTask() { +void InitializeFlowTask(void) +{ BaseType_t xReturned; ESP_LOGD(TAG, "getESPHeapInfo: %s", getESPHeapInfo().c_str()); uint32_t stackSize = 16 * 1024; - xReturned = xTaskCreatePinnedToCore(&task_autodoFlow, "task_autodoFlow", stackSize, NULL, tskIDLE_PRIORITY+2, &xHandletask_autodoFlow, 0); - - if( xReturned != pdPASS ) { + xReturned = xTaskCreatePinnedToCore(&task_autodoFlow, "task_autodoFlow", stackSize, NULL, tskIDLE_PRIORITY + 2, &xHandletask_autodoFlow, 0); + + if (xReturned != pdPASS) + { LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Creation task_autodoFlow failed. Requested stack size:" + std::to_string(stackSize)); LogFile.WriteHeapInfo("Creation task_autodoFlow failed"); } - + ESP_LOGD(TAG, "getESPHeapInfo: %s", getESPHeapInfo().c_str()); } - -void register_server_main_flow_task_uri(httpd_handle_t server) { +void register_server_main_flow_task_uri(httpd_handle_t server) +{ ESP_LOGI(TAG, "server_main_flow_task - Registering URI handlers"); - - httpd_uri_t camuri = { }; - camuri.method = HTTP_GET; - camuri.uri = "/doinit"; - camuri.handler = handler_init; - camuri.user_ctx = (void*) "Light On"; + httpd_uri_t camuri = {}; + camuri.method = HTTP_GET; + + camuri.uri = "/doinit"; + camuri.handler = handler_init; + camuri.user_ctx = (void *)"Light On"; httpd_register_uri_handler(server, &camuri); // Legacy API => New: "/setPreValue" - camuri.uri = "/setPreValue.html"; - camuri.handler = handler_prevalue; - camuri.user_ctx = (void*) "Prevalue"; + camuri.uri = "/setPreValue.html"; + camuri.handler = handler_prevalue; + camuri.user_ctx = (void *)"Prevalue"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/setPreValue"; - camuri.handler = handler_prevalue; - camuri.user_ctx = (void*) "Prevalue"; + camuri.uri = "/setPreValue"; + camuri.handler = handler_prevalue; + camuri.user_ctx = (void *)"Prevalue"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/flow_start"; - camuri.handler = handler_flow_start; - camuri.user_ctx = (void*) "Flow Start"; + camuri.uri = "/flow_start"; + camuri.handler = handler_flow_start; + camuri.user_ctx = (void *)"Flow Start"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/statusflow.html"; - camuri.handler = handler_statusflow; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/statusflow.html"; + camuri.handler = handler_statusflow; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/statusflow"; - camuri.handler = handler_statusflow; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/statusflow"; + camuri.handler = handler_statusflow; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); // Legacy API => New: "/cpu_temperature" - camuri.uri = "/cputemp.html"; - camuri.handler = handler_cputemp; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/cputemp.html"; + camuri.handler = handler_cputemp; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/cpu_temperature"; - camuri.handler = handler_cputemp; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/cpu_temperature"; + camuri.handler = handler_cputemp; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); // Legacy API => New: "/rssi" - camuri.uri = "/rssi.html"; - camuri.handler = handler_rssi; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/rssi.html"; + camuri.handler = handler_rssi; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/rssi"; - camuri.handler = handler_rssi; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/rssi"; + camuri.handler = handler_rssi; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/uptime"; - camuri.handler = handler_uptime; - camuri.user_ctx = (void*) "Light Off"; + camuri.uri = "/uptime"; + camuri.handler = handler_uptime; + camuri.user_ctx = (void *)"Light Off"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/editflow"; - camuri.handler = handler_editflow; - camuri.user_ctx = (void*) "EditFlow"; - httpd_register_uri_handler(server, &camuri); + camuri.uri = "/editflow"; + camuri.handler = handler_editflow; + camuri.user_ctx = (void *)"EditFlow"; + httpd_register_uri_handler(server, &camuri); // Legacy API => New: "/value" - camuri.uri = "/value.html"; - camuri.handler = handler_wasserzaehler; - camuri.user_ctx = (void*) "Value"; + camuri.uri = "/value.html"; + camuri.handler = handler_wasserzaehler; + camuri.user_ctx = (void *)"Value"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/value"; - camuri.handler = handler_wasserzaehler; - camuri.user_ctx = (void*) "Value"; + camuri.uri = "/value"; + camuri.handler = handler_wasserzaehler; + camuri.user_ctx = (void *)"Value"; httpd_register_uri_handler(server, &camuri); // Legacy API => New: "/value" - camuri.uri = "/wasserzaehler.html"; - camuri.handler = handler_wasserzaehler; - camuri.user_ctx = (void*) "Wasserzaehler"; + camuri.uri = "/wasserzaehler.html"; + camuri.handler = handler_wasserzaehler; + camuri.user_ctx = (void *)"Wasserzaehler"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/json"; - camuri.handler = handler_json; - camuri.user_ctx = (void*) "JSON"; + camuri.uri = "/json"; + camuri.handler = handler_json; + camuri.user_ctx = (void *)"JSON"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/heap"; - camuri.handler = handler_get_heap; - camuri.user_ctx = (void*) "Heap"; + camuri.uri = "/heap"; + camuri.handler = handler_get_heap; + camuri.user_ctx = (void *)"Heap"; httpd_register_uri_handler(server, &camuri); - camuri.uri = "/stream"; - camuri.handler = handler_stream; - camuri.user_ctx = (void*) "stream"; + camuri.uri = "/stream"; + camuri.handler = handler_stream; + camuri.user_ctx = (void *)"stream"; httpd_register_uri_handler(server, &camuri); + + /** will handle metrics requests */ + camuri.uri = "/metrics"; + camuri.handler = handler_openmetrics; + camuri.user_ctx = (void *)"metrics"; + httpd_register_uri_handler(server, &camuri); + + /** when adding a new handler, make sure to increment the value for config.max_uri_handlers in `main/server_main.cpp` */ } diff --git a/code/components/jomjol_flowcontroll/MainFlowControl.h b/code/components/jomjol_flowcontroll/MainFlowControl.h index 8ede3be07..a2c2047e3 100644 --- a/code/components/jomjol_flowcontroll/MainFlowControl.h +++ b/code/components/jomjol_flowcontroll/MainFlowControl.h @@ -9,26 +9,83 @@ #include #include "CImageBasis.h" #include "ClassFlowControll.h" +#include "openmetrics.h" +typedef struct +{ + uint16_t CamSensor_id; + + framesize_t ImageFrameSize = FRAMESIZE_VGA; // 0 - 10 + gainceiling_t ImageGainceiling; // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) + + int ImageQuality; // 0 - 63 + int ImageBrightness; // (-2 to 2) - set brightness + int ImageContrast; //-2 - 2 + int ImageSaturation; //-2 - 2 + int ImageSharpness; //-2 - 2 + bool ImageAutoSharpness; + int ImageSpecialEffect; // 0 - 6 + int ImageWbMode; // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) + int ImageAwb; // white balance enable (0 or 1) + int ImageAwbGain; // Auto White Balance enable (0 or 1) + int ImageAec; // auto exposure off (1 or 0) + int ImageAec2; // automatic exposure sensor (0 or 1) + int ImageAeLevel; // auto exposure levels (-2 to 2) + int ImageAecValue; // set exposure manually (0-1200) + int ImageAgc; // auto gain off (1 or 0) + int ImageAgcGain; // set gain manually (0 - 30) + int ImageBpc; // black pixel correction + int ImageWpc; // white pixel correction + int ImageRawGma; // (1 or 0) + int ImageLenc; // lens correction (1 or 0) + int ImageHmirror; // (0 or 1) flip horizontally + int ImageVflip; // Invert image (0 or 1) + int ImageDcw; // downsize enable (1 or 0) + + int ImageDenoiseLevel; // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + + int ImageWidth; + int ImageHeight; + + int ImageLedIntensity; + + bool ImageZoomEnabled; + int ImageZoomOffsetX; + int ImageZoomOffsetY; + int ImageZoomSize; + + int WaitBeforePicture; + bool isImageSize; + + bool CameraInitSuccessful; + bool changedCameraSettings; + bool DemoMode; + bool SaveAllFiles; +} camera_flow_config_temp_t; + +extern camera_flow_config_temp_t CFstatus; extern ClassFlowControll flowctrl; +esp_err_t setCCstatusToCFstatus(void); // CCstatus >>> CFstatus +esp_err_t setCFstatusToCCstatus(void); // CFstatus >>> CCstatus +esp_err_t setCFstatusToCam(void); // CFstatus >>> Kamera void register_server_main_flow_task_uri(httpd_handle_t server); -void CheckIsPlannedReboot(); -bool getIsPlannedReboot(); +void CheckIsPlannedReboot(void); +bool getIsPlannedReboot(void); -void InitializeFlowTask(); -void DeleteMainFlowTask(); -bool isSetupModusActive(); +void InitializeFlowTask(void); +void DeleteMainFlowTask(void); +bool isSetupModusActive(void); -int getCountFlowRounds(); +int getCountFlowRounds(void); #ifdef ENABLE_MQTT esp_err_t MQTTCtrlFlowStart(std::string _topic); -#endif //ENABLE_MQTT +#endif // ENABLE_MQTT esp_err_t GetRawJPG(httpd_req_t *req); esp_err_t GetJPG(std::string _filename, httpd_req_t *req); -#endif //MAINFLOWCONTROL_H +#endif // MAINFLOWCONTROL_H diff --git a/code/components/jomjol_helper/Helper.cpp b/code/components/jomjol_helper/Helper.cpp index ed2c9524e..78d359e38 100644 --- a/code/components/jomjol_helper/Helper.cpp +++ b/code/components/jomjol_helper/Helper.cpp @@ -1,4 +1,4 @@ -//#pragma warning(disable : 4996) +// #pragma warning(disable : 4996) #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -14,7 +14,8 @@ #include #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif #include #ifdef __cplusplus @@ -32,7 +33,7 @@ extern "C" { #include "esp_vfs_fat.h" #include "../sdmmc_common.h" -static const char* TAG = "HELPER"; +static const char *TAG = "HELPER"; using namespace std; @@ -42,190 +43,205 @@ sdmmc_cid_t SDCardCid; sdmmc_csd_t SDCardCsd; bool SDCardIsMMC; -// #define DEBUG_DETAIL_ON +// #define DEBUG_DETAIL_ON ///////////////////////////////////////////////////////////////////////////////////////////// -string getESPHeapInfo(){ +string getESPHeapInfo() +{ string espInfoResultStr = ""; char aMsgBuf[80]; - size_t aFreeHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t aFreeHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT); - size_t aFreeSPIHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - size_t aFreeInternalHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); + size_t aFreeSPIHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + size_t aFreeInternalHeapSize = heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); size_t aHeapLargestFreeBlockSize = heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); size_t aHeapIntLargestFreeBlockSize = heap_caps_get_largest_free_block(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - size_t aMinFreeHeapSize = heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - size_t aMinFreeInternalHeapSize = heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - + size_t aMinFreeHeapSize = heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + size_t aMinFreeInternalHeapSize = heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - sprintf(aMsgBuf,"Heap Total: %ld", (long) aFreeHeapSize); + sprintf(aMsgBuf, "Heap Total: %ld", (long)aFreeHeapSize); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | SPI Free: %ld", (long) aFreeSPIHeapSize); + sprintf(aMsgBuf, " | SPI Free: %ld", (long)aFreeSPIHeapSize); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | SPI Large Block: %ld", (long) aHeapLargestFreeBlockSize); + sprintf(aMsgBuf, " | SPI Large Block: %ld", (long)aHeapLargestFreeBlockSize); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | SPI Min Free: %ld", (long) aMinFreeHeapSize); + sprintf(aMsgBuf, " | SPI Min Free: %ld", (long)aMinFreeHeapSize); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | Int Free: %ld", (long) (aFreeInternalHeapSize)); + sprintf(aMsgBuf, " | Int Free: %ld", (long)(aFreeInternalHeapSize)); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | Int Large Block: %ld", (long) aHeapIntLargestFreeBlockSize); + sprintf(aMsgBuf, " | Int Large Block: %ld", (long)aHeapIntLargestFreeBlockSize); espInfoResultStr += string(aMsgBuf); - sprintf(aMsgBuf," | Int Min Free: %ld", (long) (aMinFreeInternalHeapSize)); + sprintf(aMsgBuf, " | Int Min Free: %ld", (long)(aMinFreeInternalHeapSize)); espInfoResultStr += string(aMsgBuf); - - return espInfoResultStr; -} + return espInfoResultStr; +} size_t getESPHeapSize() { - return heap_caps_get_free_size(MALLOC_CAP_8BIT); + return heap_caps_get_free_size(MALLOC_CAP_8BIT); } - -size_t getInternalESPHeapSize() +size_t getInternalESPHeapSize() { - return heap_caps_get_free_size(MALLOC_CAP_8BIT| MALLOC_CAP_INTERNAL); + return heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); } - -string getSDCardPartitionSize(){ +string getSDCardPartitionSize() +{ FATFS *fs; - uint32_t fre_clust, tot_sect; + uint32_t fre_clust, tot_sect; - /* Get volume information and free clusters of drive 0 */ - f_getfree("0:", (DWORD *)&fre_clust, &fs); - tot_sect = ((fs->n_fatent - 2) * fs->csize) /1024 /(1024/SDCardCsd.sector_size); //corrected by SD Card sector size (usually 512 bytes) and convert to MB + /* Get volume information and free clusters of drive 0 */ + f_getfree("0:", (DWORD *)&fre_clust, &fs); + tot_sect = ((fs->n_fatent - 2) * fs->csize) / 1024 / (1024 / SDCardCsd.sector_size); // corrected by SD Card sector size (usually 512 bytes) and convert to MB - //ESP_LOGD(TAG, "%d MB total drive space (Sector size [bytes]: %d)", (int)tot_sect, (int)fs->ssize); + // ESP_LOGD(TAG, "%d MB total drive space (Sector size [bytes]: %d)", (int)tot_sect, (int)fs->ssize); return std::to_string(tot_sect); } - -string getSDCardFreePartitionSpace(){ +string getSDCardFreePartitionSpace() +{ FATFS *fs; - uint32_t fre_clust, fre_sect; - - /* Get volume information and free clusters of drive 0 */ - f_getfree("0:", (DWORD *)&fre_clust, &fs); - fre_sect = (fre_clust * fs->csize) / 1024 /(1024/SDCardCsd.sector_size); //corrected by SD Card sector size (usually 512 bytes) and convert to MB + uint32_t fre_clust, fre_sect; - //ESP_LOGD(TAG, "%d MB free drive space (Sector size [bytes]: %d)", (int)fre_sect, (int)fs->ssize); + /* Get volume information and free clusters of drive 0 */ + f_getfree("0:", (DWORD *)&fre_clust, &fs); + fre_sect = (fre_clust * fs->csize) / 1024 / (1024 / SDCardCsd.sector_size); // corrected by SD Card sector size (usually 512 bytes) and convert to MB + + // ESP_LOGD(TAG, "%d MB free drive space (Sector size [bytes]: %d)", (int)fre_sect, (int)fs->ssize); return std::to_string(fre_sect); } - -string getSDCardPartitionAllocationSize(){ +string getSDCardPartitionAllocationSize() +{ FATFS *fs; - uint32_t fre_clust, allocation_size; - - /* Get volume information and free clusters of drive 0 */ - f_getfree("0:", (DWORD *)&fre_clust, &fs); - allocation_size = fs->ssize; + uint32_t fre_clust, allocation_size; - //ESP_LOGD(TAG, "SD Card Partition Allocation Size: %d bytes", allocation_size); + /* Get volume information and free clusters of drive 0 */ + f_getfree("0:", (DWORD *)&fre_clust, &fs); + allocation_size = fs->ssize; + + // ESP_LOGD(TAG, "SD Card Partition Allocation Size: %d bytes", allocation_size); return std::to_string(allocation_size); } - -void SaveSDCardInfo(sdmmc_card_t* card) { +void SaveSDCardInfo(sdmmc_card_t *card) +{ SDCardCid = card->cid; - SDCardCsd = card->csd; + SDCardCsd = card->csd; SDCardIsMMC = card->is_mmc; } - -string getSDCardManufacturer(){ +string getSDCardManufacturer() +{ string SDCardManufacturer = SDCardParseManufacturerIDs(SDCardCid.mfg_id); - //ESP_LOGD(TAG, "SD Card Manufacturer: %s", SDCardManufacturer.c_str()); - + // ESP_LOGD(TAG, "SD Card Manufacturer: %s", SDCardManufacturer.c_str()); + return (SDCardManufacturer + " (ID: " + std::to_string(SDCardCid.mfg_id) + ")"); } - -string getSDCardName(){ +string getSDCardName() +{ char *SDCardName = SDCardCid.name; - //ESP_LOGD(TAG, "SD Card Name: %s", SDCardName); + // ESP_LOGD(TAG, "SD Card Name: %s", SDCardName); return std::string(SDCardName); } - -string getSDCardCapacity(){ - int SDCardCapacity = SDCardCsd.capacity / (1024/SDCardCsd.sector_size) / 1024; // total sectors * sector size --> Byte to MB (1024*1024) - //ESP_LOGD(TAG, "SD Card Capacity: %s", std::to_string(SDCardCapacity).c_str()); +string getSDCardCapacity() +{ + int SDCardCapacity = SDCardCsd.capacity / (1024 / SDCardCsd.sector_size) / 1024; // total sectors * sector size --> Byte to MB (1024*1024) + // ESP_LOGD(TAG, "SD Card Capacity: %s", std::to_string(SDCardCapacity).c_str()); return std::to_string(SDCardCapacity); } - -string getSDCardSectorSize(){ +string getSDCardSectorSize() +{ int SDCardSectorSize = SDCardCsd.sector_size; - //ESP_LOGD(TAG, "SD Card Sector Size: %s bytes", std::to_string(SDCardSectorSize).c_str()); + // ESP_LOGD(TAG, "SD Card Sector Size: %s bytes", std::to_string(SDCardSectorSize).c_str()); return std::to_string(SDCardSectorSize); } /////////////////////////////////////////////////////////////////////////////////////////////// -void memCopyGen(uint8_t* _source, uint8_t* _target, int _size) +void memCopyGen(uint8_t *_source, uint8_t *_target, int _size) { - for (int i = 0; i < _size; ++i) - *(_target + i) = *(_source + i); + for (int i = 0; i < _size; ++i) + { + *(_target + i) = *(_source + i); + } } - std::string FormatFileName(std::string input) { #ifdef ISWINDOWS_TRUE - input.erase(0, 1); - std::string os = "/"; - std::string ns = "\\"; - FindReplace(input, os, ns); + input.erase(0, 1); + std::string os = "/"; + std::string ns = "\\"; + FindReplace(input, os, ns); #endif - return input; + return input; } +std::size_t file_size(const std::string &file_name) +{ + std::ifstream file(file_name.c_str(), std::ios::in | std::ios::binary); -std::size_t file_size(const std::string& file_name) { - std::ifstream file(file_name.c_str(),std::ios::in | std::ios::binary); - if (!file) return 0; - file.seekg (0, std::ios::end); - return static_cast(file.tellg()); + if (!file) + { + return 0; + } + + file.seekg(0, std::ios::end); + return static_cast(file.tellg()); } +void FindReplace(std::string &line, std::string &oldString, std::string &newString) +{ + const size_t oldSize = oldString.length(); -void FindReplace(std::string& line, std::string& oldString, std::string& newString) { - const size_t oldSize = oldString.length(); - - // do nothing if line is shorter than the string to find - if (oldSize > line.length()) return; - - const size_t newSize = newString.length(); - for (size_t pos = 0; ; pos += newSize) { - // Locate the substring to replace - pos = line.find(oldString, pos); - if (pos == std::string::npos) return; - if (oldSize == newSize) { - // if they're same size, use std::string::replace - line.replace(pos, oldSize, newString); - } - else { - // if not same size, replace by erasing and inserting - line.erase(pos, oldSize); - line.insert(pos, newString); - } - } -} + // do nothing if line is shorter than the string to find + if (oldSize > line.length()) + { + return; + } + + const size_t newSize = newString.length(); + + for (size_t pos = 0;; pos += newSize) + { + // Locate the substring to replace + pos = line.find(oldString, pos); + + if (pos == std::string::npos) + { + return; + } + if (oldSize == newSize) + { + // if they're same size, use std::string::replace + line.replace(pos, oldSize, newString); + } + else + { + // if not same size, replace by erasing and inserting + line.erase(pos, oldSize); + line.insert(pos, newString); + } + } +} /** * Create a folder and its parent folders as needed @@ -237,56 +253,63 @@ bool MakeDir(std::string path) LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Creating folder " + path + "..."); bool bSuccess = false; - int nRC = ::mkdir( path.c_str(), 0775 ); - if( nRC == -1 ) - { - switch( errno ) { - case ENOENT: - //parent didn't exist, try to create it - parent = path.substr(0, path.find_last_of('/')); - LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Need to create parent folder first: " + parent); - if(MakeDir(parent)) { - //Now, try to create again. - bSuccess = 0 == ::mkdir( path.c_str(), 0775 ); - } - else { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to create parent folder: " + parent); - bSuccess = false; - } - break; - - case EEXIST: - //Done! - bSuccess = true; - break; - - default: - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to create folder: " + path + " (errno: " + std::to_string(errno) + ")"); - bSuccess = false; - break; - } - } - else { - bSuccess = true; + int nRC = ::mkdir(path.c_str(), 0775); + + if (nRC == -1) + { + switch (errno) + { + case ENOENT: + // parent didn't exist, try to create it + parent = path.substr(0, path.find_last_of('/')); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Need to create parent folder first: " + parent); + + if (MakeDir(parent)) + { + // Now, try to create again. + bSuccess = 0 == ::mkdir(path.c_str(), 0775); + } + else + { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to create parent folder: " + parent); + bSuccess = false; + } + break; + + case EEXIST: + // Done! + bSuccess = true; + break; + + default: + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Failed to create folder: " + path + " (errno: " + std::to_string(errno) + ")"); + bSuccess = false; + break; + } + } + else + { + bSuccess = true; } - return bSuccess; + return bSuccess; } - bool ctype_space(const char c, string adddelimiter) { if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == 11) { return true; } + if (adddelimiter.find(c) != string::npos) + { return true; + } return false; } - string trim(string istring, string adddelimiter) { bool trimmed = false; @@ -313,76 +336,87 @@ string trim(string istring, string adddelimiter) } } - size_t findDelimiterPos(string input, string delimiter) { size_t pos = std::string::npos; - size_t zw; + // size_t zw; string akt_del; for (int anz = 0; anz < delimiter.length(); ++anz) { akt_del = delimiter[anz]; - if ((zw = input.find(akt_del)) != std::string::npos) + size_t zw = input.find(akt_del); + + if (zw != std::string::npos) { - if (pos != std::string::npos) + if ((pos != std::string::npos) && (zw < pos)) { - if (zw < pos) - pos = zw; + pos = zw; } else + { pos = zw; + } } } + return pos; } - bool RenameFile(string from, string to) { -// ESP_LOGI(logTag, "Deleting file: %s", fn.c_str()); + // ESP_LOGI(logTag, "Deleting file: %s", fn.c_str()); /* Delete file */ - FILE* fpSourceFile = fopen(from.c_str(), "rb"); - if (!fpSourceFile) // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + FILE *fpSourceFile = fopen(from.c_str(), "rb"); + + // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + if (!fpSourceFile) { ESP_LOGE(TAG, "DeleteFile: File %s existiert nicht!", from.c_str()); return false; } + fclose(fpSourceFile); rename(from.c_str(), to.c_str()); + return true; } - bool FileExists(string filename) { - FILE* fpSourceFile = fopen(filename.c_str(), "rb"); - if (!fpSourceFile) // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + FILE *fpSourceFile = fopen(filename.c_str(), "rb"); + + // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + if (!fpSourceFile) { return false; } + fclose(fpSourceFile); - return true; -} + return true; +} bool DeleteFile(string fn) { -// ESP_LOGI(logTag, "Deleting file: %s", fn.c_str()); + // ESP_LOGI(logTag, "Deleting file: %s", fn.c_str()); /* Delete file */ - FILE* fpSourceFile = fopen(fn.c_str(), "rb"); - if (!fpSourceFile) // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + FILE *fpSourceFile = fopen(fn.c_str(), "rb"); + + // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + if (!fpSourceFile) { ESP_LOGD(TAG, "DeleteFile: File %s existiert nicht!", fn.c_str()); return false; } + fclose(fpSourceFile); unlink(fn.c_str()); - return true; -} + return true; +} bool CopyFile(string input, string output) { @@ -396,14 +430,16 @@ bool CopyFile(string input, string output) } char cTemp; - FILE* fpSourceFile = fopen(input.c_str(), "rb"); - if (!fpSourceFile) // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + FILE *fpSourceFile = fopen(input.c_str(), "rb"); + + // Sourcefile existiert nicht sonst gibt es einen Fehler beim Kopierversuch! + if (!fpSourceFile) { ESP_LOGD(TAG, "File %s existiert nicht!", input.c_str()); return false; } - FILE* fpTargetFile = fopen(output.c_str(), "wb"); + FILE *fpTargetFile = fopen(output.c_str(), "wb"); // Code Section @@ -418,53 +454,60 @@ bool CopyFile(string input, string output) fclose(fpSourceFile); fclose(fpTargetFile); ESP_LOGD(TAG, "File copied: %s to %s", input.c_str(), output.c_str()); + return true; } - string getFileFullFileName(string filename) { size_t lastpos = filename.find_last_of('/'); if (lastpos == string::npos) + { return ""; + } -// ESP_LOGD(TAG, "Last position: %d", lastpos); + // ESP_LOGD(TAG, "Last position: %d", lastpos); string zw = filename.substr(lastpos + 1, filename.size() - lastpos); return zw; } - string getDirectory(string filename) { size_t lastpos = filename.find('/'); if (lastpos == string::npos) + { lastpos = filename.find('\\'); + } if (lastpos == string::npos) + { return ""; + } -// ESP_LOGD(TAG, "Directory: %d", lastpos); + // ESP_LOGD(TAG, "Directory: %d", lastpos); string zw = filename.substr(0, lastpos - 1); return zw; } - string getFileType(string filename) { size_t lastpos = filename.rfind(".", filename.length()); size_t neu_pos; + while ((neu_pos = filename.find(".", lastpos + 1)) > -1) { lastpos = neu_pos; } if (lastpos == string::npos) + { return ""; + } string zw = filename.substr(lastpos + 1, filename.size() - lastpos); zw = toUpper(zw); @@ -472,172 +515,213 @@ string getFileType(string filename) return zw; } - /* recursive mkdir */ -int mkdir_r(const char *dir, const mode_t mode) { - char tmp[FILE_PATH_MAX]; - char *p = NULL; - struct stat sb; - size_t len; - - /* copy path */ - len = strnlen (dir, FILE_PATH_MAX); - if (len == 0 || len == FILE_PATH_MAX) { - return -1; - } - memcpy (tmp, dir, len); - tmp[len] = '\0'; - - /* remove trailing slash */ - if(tmp[len - 1] == '/') { - tmp[len - 1] = '\0'; - } - - /* check if path exists and is a directory */ - if (stat (tmp, &sb) == 0) { - if (S_ISDIR (sb.st_mode)) { - return 0; - } - } - - /* recursive mkdir */ - for(p = tmp + 1; *p; p++) { - if(*p == '/') { - *p = 0; - /* test path */ - if (stat(tmp, &sb) != 0) { - /* path does not exist - create directory */ - if (mkdir(tmp, mode) < 0) { - return -1; - } - } else if (!S_ISDIR(sb.st_mode)) { - /* not a directory */ - return -1; - } - *p = '/'; - } - } - /* test path */ - if (stat(tmp, &sb) != 0) { - /* path does not exist - create directory */ - if (mkdir(tmp, mode) < 0) { - return -1; - } - } else if (!S_ISDIR(sb.st_mode)) { - /* not a directory */ - return -1; - } - return 0; -} +int mkdir_r(const char *dir, const mode_t mode) +{ + char tmp[FILE_PATH_MAX]; + char *p = NULL; + struct stat sb; + size_t len; + + /* copy path */ + len = strnlen(dir, FILE_PATH_MAX); + if (len == 0 || len == FILE_PATH_MAX) + { + return -1; + } + + memcpy(tmp, dir, len); + tmp[len] = '\0'; + + /* remove trailing slash */ + if (tmp[len - 1] == '/') + { + tmp[len - 1] = '\0'; + } + + /* check if path exists and is a directory */ + if (stat(tmp, &sb) == 0) + { + if (S_ISDIR(sb.st_mode)) + { + return 0; + } + } + + /* recursive mkdir */ + for (p = tmp + 1; *p; p++) + { + if (*p == '/') + { + *p = 0; + + /* test path */ + if (stat(tmp, &sb) != 0) + { + /* path does not exist - create directory */ + if (mkdir(tmp, mode) < 0) + { + return -1; + } + } + else if (!S_ISDIR(sb.st_mode)) + { + /* not a directory */ + return -1; + } + + *p = '/'; + } + } + + /* test path */ + if (stat(tmp, &sb) != 0) + { + /* path does not exist - create directory */ + if (mkdir(tmp, mode) < 0) + { + return -1; + } + } + else if (!S_ISDIR(sb.st_mode)) + { + /* not a directory */ + return -1; + } + + return 0; +} string toUpper(string in) { for (int i = 0; i < in.length(); ++i) + { in[i] = toupper(in[i]); - + } + return in; } - string toLower(string in) { for (int i = 0; i < in.length(); ++i) + { in[i] = tolower(in[i]); - + } + return in; } - // CPU Temp extern "C" uint8_t temprature_sens_read(); float temperatureRead() { - return (temprature_sens_read() - 32) / 1.8; + return (temprature_sens_read() - 32) / 1.8; } - -time_t addDays(time_t startTime, int days) { - struct tm* tm = localtime(&startTime); +time_t addDays(time_t startTime, int days) +{ + struct tm *tm = localtime(&startTime); tm->tm_mday += days; return mktime(tm); } - -int removeFolder(const char* folderPath, const char* logTag) { - //ESP_LOGD(logTag, "Delete content in path %s", folderPath); +int removeFolder(const char *folderPath, const char *logTag) +{ + // ESP_LOGD(logTag, "Delete content in path %s", folderPath); DIR *dir = opendir(folderPath); - if (!dir) { - ESP_LOGE(logTag, "Failed to stat dir: %s", folderPath); - return -1; - } - - struct dirent *entry; - int deleted = 0; - while ((entry = readdir(dir)) != NULL) { - std::string path = string(folderPath) + "/" + entry->d_name; - if (entry->d_type == DT_REG) { - //ESP_LOGD(logTag, "Delete file %s", path.c_str()); - if (unlink(path.c_str()) == 0) { - deleted ++; - } else { + + if (!dir) + { + ESP_LOGE(logTag, "Failed to stat dir: %s", folderPath); + return -1; + } + + struct dirent *entry; + int deleted = 0; + + while ((entry = readdir(dir)) != NULL) + { + std::string path = string(folderPath) + "/" + entry->d_name; + + if (entry->d_type == DT_REG) + { + // ESP_LOGD(logTag, "Delete file %s", path.c_str()); + if (unlink(path.c_str()) == 0) + { + deleted++; + } + else + { ESP_LOGE(logTag, "can't delete file: %s", path.c_str()); } - } else if (entry->d_type == DT_DIR) { + } + else if (entry->d_type == DT_DIR) + { deleted += removeFolder(path.c_str(), logTag); } - } - - closedir(dir); - if (rmdir(folderPath) != 0) { + } + + closedir(dir); + + if (rmdir(folderPath) != 0) + { ESP_LOGE(logTag, "can't delete folder: %s", folderPath); } + ESP_LOGD(logTag, "%d files in folder %s deleted.", deleted, folderPath); return deleted; } - std::vector HelperZerlegeZeile(std::string input, std::string _delimiter = "") { std::vector Output; std::string delimiter = " =,"; - if (_delimiter.length() > 0){ - delimiter = _delimiter; - } + + if (_delimiter.length() > 0) + { + delimiter = _delimiter; + } return ZerlegeZeile(input, delimiter); } - std::vector ZerlegeZeile(std::string input, std::string delimiter) { std::vector Output; - /* The input can have multiple formats: + /* The input can have multiple formats: * - key = value - * - key = value1 value2 value3 ... - * - key value1 value2 value3 ... - * + * - key = value1 value2 value3 ... + * - key value1 value2 value3 ... + * * Examples: * - ImageSize = VGA - * - IO0 = input disabled 10 false false + * - IO0 = input disabled 10 false false * - main.dig1 28 144 55 100 false - * + * * This causes issues eg. if a password key has a whitespace or equal sign in its value. * As a workaround and to not break any legacy usage, we enforce to only use the * equal sign, if the key is "password" - */ - if ((input.find("password") != string::npos) || (input.find("Token") != string::npos)) { // Line contains a password, use the equal sign as the only delimiter and only split on first occurrence + */ + if ((input.find("password") != string::npos) || (input.find("Token") != string::npos)) + { + // Line contains a password, use the equal sign as the only delimiter and only split on first occurrence size_t pos = input.find("="); Output.push_back(trim(input.substr(0, pos), "")); - Output.push_back(trim(input.substr(pos +1, string::npos), "")); + Output.push_back(trim(input.substr(pos + 1, string::npos), "")); } - else { // Legacy Mode - input = trim(input, delimiter); // sonst werden delimiter am Ende (z.B. == im Token) gelöscht) + else + { + // Legacy Mode + input = trim(input, delimiter); // sonst werden delimiter am Ende (z.B. == im Token) gelöscht) size_t pos = findDelimiterPos(input, delimiter); std::string token; - while (pos != std::string::npos) { + + while (pos != std::string::npos) + { token = input.substr(0, pos); token = trim(token, delimiter); Output.push_back(token); @@ -645,34 +729,35 @@ std::vector ZerlegeZeile(std::string input, std::string delimiter) input = trim(input, delimiter); pos = findDelimiterPos(input, delimiter); } + Output.push_back(input); } return Output; - } +std::string ReplaceString(std::string subject, const std::string &search, const std::string &replace) +{ + size_t pos = 0; -std::string ReplaceString(std::string subject, const std::string& search, - const std::string& replace) { - size_t pos = 0; - while ((pos = subject.find(search, pos)) != std::string::npos) { - subject.replace(pos, search.length(), replace); - pos += replace.length(); - } - return subject; -} + while ((pos = subject.find(search, pos)) != std::string::npos) + { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } + return subject; +} /* Source: https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git/tree/lsmmc.c */ /* SD Card Manufacturer Database */ -struct SDCard_Manufacturer_database { +struct SDCard_Manufacturer_database +{ string type; int id; string manufacturer; }; - /* Source: https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git/tree/lsmmc.c */ /* SD Card Manufacturer Database */ struct SDCard_Manufacturer_database sd_database[] = { @@ -857,242 +942,376 @@ struct SDCard_Manufacturer_database mmc_database[] = { }; /* Parse SD Card Manufacturer Database */ -string SDCardParseManufacturerIDs(int id) +string SDCardParseManufacturerIDs(int id) { - if (SDCardIsMMC) - { - unsigned int id_cnt = sizeof(mmc_database) / sizeof(struct SDCard_Manufacturer_database); - string ret_val = ""; - - for (int i = 0; i < id_cnt; i++) - { - if (mmc_database[i].id == id) - { - return mmc_database[i].manufacturer; - } - else - { - ret_val = "ID unknown (not in DB)"; - } - } + if (SDCardIsMMC) + { + unsigned int id_cnt = sizeof(mmc_database) / sizeof(struct SDCard_Manufacturer_database); + string ret_val = ""; - return ret_val; - } + for (int i = 0; i < id_cnt; i++) + { + if (mmc_database[i].id == id) + { + return mmc_database[i].manufacturer; + } + else + { + ret_val = "ID unknown (not in DB)"; + } + } - else - { - unsigned int id_cnt = sizeof(sd_database) / sizeof(struct SDCard_Manufacturer_database); - string ret_val = ""; + return ret_val; + } - for (int i = 0; i < id_cnt; i++) + else { - if (sd_database[i].id == id) - { - return sd_database[i].manufacturer; - } - else - { - ret_val = "ID unknown (not in DB)"; - } - } + unsigned int id_cnt = sizeof(sd_database) / sizeof(struct SDCard_Manufacturer_database); + string ret_val = ""; - return ret_val; - } -} + for (int i = 0; i < id_cnt; i++) + { + if (sd_database[i].id == id) + { + return sd_database[i].manufacturer; + } + else + { + ret_val = "ID unknown (not in DB)"; + } + } + return ret_val; + } +} string RundeOutput(double _in, int _anzNachkomma) { - std::stringstream stream; - int _zw = _in; -// ESP_LOGD(TAG, "AnzNachkomma: %d", _anzNachkomma); - - if (_anzNachkomma < 0) { - _anzNachkomma = 0; - } - - if (_anzNachkomma > 0) - { - stream << std::fixed << std::setprecision(_anzNachkomma) << _in; - return stream.str(); - } - else - { - stream << _zw; - } - - - return stream.str(); -} + std::stringstream stream; + int _zw = _in; + // ESP_LOGD(TAG, "AnzNachkomma: %d", _anzNachkomma); + + if (_anzNachkomma > 0) + { + stream << std::fixed << std::setprecision(_anzNachkomma) << _in; + } + else + { + stream << _zw; + } + return stream.str(); +} -string getMac(void) { - uint8_t macInt[6]; - char macFormated[6*2 + 5 + 1]; // AA:BB:CC:DD:EE:FF +string getMac(void) +{ + uint8_t macInt[6]; + char macFormated[6 * 2 + 5 + 1]; // AA:BB:CC:DD:EE:FF - esp_read_mac(macInt, ESP_MAC_WIFI_STA); - sprintf(macFormated, "%02X:%02X:%02X:%02X:%02X:%02X", macInt[0], macInt[1], macInt[2], macInt[3], macInt[4], macInt[5]); + esp_read_mac(macInt, ESP_MAC_WIFI_STA); + sprintf(macFormated, "%02X:%02X:%02X:%02X:%02X:%02X", macInt[0], macInt[1], macInt[2], macInt[3], macInt[4], macInt[5]); - return macFormated; + return macFormated; } - -void setSystemStatusFlag(SystemStatusFlag_t flag) { +void setSystemStatusFlag(SystemStatusFlag_t flag) +{ systemStatus = systemStatus | flag; // set bit char buf[20]; snprintf(buf, sizeof(buf), "0x%08X", getSystemStatus()); - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "New System Status: " + std::string(buf)); + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "New System Status: " + std::string(buf)); } - -void clearSystemStatusFlag(SystemStatusFlag_t flag) { +void clearSystemStatusFlag(SystemStatusFlag_t flag) +{ systemStatus = systemStatus | ~flag; // clear bit char buf[20]; snprintf(buf, sizeof(buf), "0x%08X", getSystemStatus()); - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "New System Status: " + std::string(buf)); + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "New System Status: " + std::string(buf)); } - -int getSystemStatus(void) { - return systemStatus; +int getSystemStatus(void) +{ + return systemStatus; } +bool isSetSystemStatusFlag(SystemStatusFlag_t flag) +{ + // ESP_LOGE(TAG, "Flag (0x%08X) is set (0x%08X): %d", flag, systemStatus , ((systemStatus & flag) == flag)); -bool isSetSystemStatusFlag(SystemStatusFlag_t flag) { - //ESP_LOGE(TAG, "Flag (0x%08X) is set (0x%08X): %d", flag, systemStatus , ((systemStatus & flag) == flag)); - - if ((systemStatus & flag) == flag) { + if ((systemStatus & flag) == flag) + { return true; } - else { + else + { return false; } } - -time_t getUpTime(void) { - return (uint32_t)(esp_timer_get_time()/1000/1000); // in seconds +time_t getUpTime(void) +{ + return (uint32_t)(esp_timer_get_time() / 1000 / 1000); // in seconds } - -string getResetReason(void) { +string getResetReason(void) +{ std::string reasonText; - switch(esp_reset_reason()) { - case ESP_RST_POWERON: reasonText = "Power-on event (or reset button)"; break; //!< Reset due to power-on event - case ESP_RST_EXT: reasonText = "External pin"; break; //!< Reset by external pin (not applicable for ESP32) - case ESP_RST_SW: reasonText = "Via esp_restart"; break; //!< Software reset via esp_restart - case ESP_RST_PANIC: reasonText = "Exception/panic"; break; //!< Software reset due to exception/panic - case ESP_RST_INT_WDT: reasonText = "Interrupt watchdog"; break; //!< Reset (software or hardware) due to interrupt watchdog - case ESP_RST_TASK_WDT: reasonText = "Task watchdog"; break; //!< Reset due to task watchdog - case ESP_RST_WDT: reasonText = "Other watchdogs"; break; //!< Reset due to other watchdogs - case ESP_RST_DEEPSLEEP: reasonText = "Exiting deep sleep mode"; break; //!< Reset after exiting deep sleep mode - case ESP_RST_BROWNOUT: reasonText = "Brownout"; break; //!< Brownout reset (software or hardware) - case ESP_RST_SDIO: reasonText = "SDIO"; break; //!< Reset over SDIO - - case ESP_RST_UNKNOWN: //!< Reset reason can not be determined - default: - reasonText = "Unknown"; + switch (esp_reset_reason()) + { + case ESP_RST_POWERON: + reasonText = "Power-on event (or reset button)"; + break; //!< Reset due to power-on event + case ESP_RST_EXT: + reasonText = "External pin"; + break; //!< Reset by external pin (not applicable for ESP32) + case ESP_RST_SW: + reasonText = "Via esp_restart"; + break; //!< Software reset via esp_restart + case ESP_RST_PANIC: + reasonText = "Exception/panic"; + break; //!< Software reset due to exception/panic + case ESP_RST_INT_WDT: + reasonText = "Interrupt watchdog"; + break; //!< Reset (software or hardware) due to interrupt watchdog + case ESP_RST_TASK_WDT: + reasonText = "Task watchdog"; + break; //!< Reset due to task watchdog + case ESP_RST_WDT: + reasonText = "Other watchdogs"; + break; //!< Reset due to other watchdogs + case ESP_RST_DEEPSLEEP: + reasonText = "Exiting deep sleep mode"; + break; //!< Reset after exiting deep sleep mode + case ESP_RST_BROWNOUT: + reasonText = "Brownout"; + break; //!< Brownout reset (software or hardware) + case ESP_RST_SDIO: + reasonText = "SDIO"; + break; //!< Reset over SDIO + + case ESP_RST_UNKNOWN: //!< Reset reason can not be determined + default: + reasonText = "Unknown"; } - return reasonText; -} + return reasonText; +} /** * Returns the current uptime formated ad xxf xxh xxm [xxs] */ -std::string getFormatedUptime(bool compact) { +std::string getFormatedUptime(bool compact) +{ char buf[20]; - #pragma GCC diagnostic ignored "-Wformat-truncation" +#pragma GCC diagnostic ignored "-Wformat-truncation" - int uptime = getUpTime(); // in seconds + int uptime = getUpTime(); // in seconds - int days = int(floor(uptime / (3600*24))); - int hours = int(floor((uptime - days * 3600*24) / (3600))); - int minutes = int(floor((uptime - days * 3600*24 - hours * 3600) / (60))); - int seconds = uptime - days * 3600*24 - hours * 3600 - minutes * 60; - - if (compact) { + int days = int(floor(uptime / (3600 * 24))); + int hours = int(floor((uptime - days * 3600 * 24) / (3600))); + int minutes = int(floor((uptime - days * 3600 * 24 - hours * 3600) / (60))); + int seconds = uptime - days * 3600 * 24 - hours * 3600 - minutes * 60; + + if (compact) + { snprintf(buf, sizeof(buf), "%dd%02dh%02dm%02ds", days, hours, minutes, seconds); } - else { + else + { snprintf(buf, sizeof(buf), "%3dd %02dh %02dm %02ds", days, hours, minutes, seconds); } return std::string(buf); } +const char *get404(void) +{ + return "
\n\n\n\n"
+		   "        _\n"
+		   "    .__(.)< ( oh oh! This page does not exist! )\n"
+		   "    \\___)\n"
+		   "\n\n"
+		   "                You could try your luck here!
\n" + ""; // Make sure we load the overview page +} + +std::string UrlDecode(const std::string &value) +{ + std::string result; + result.reserve(value.size()); -const char* get404(void) { - return -"
\n\n\n\n"
-"        _\n"
-"    .__(.)< ( oh oh! This page does not exist! )\n"
-"    \\___)\n"
-"\n\n"
-"                You could try your luck here!
\n" -""; // Make sure we load the overview page + for (std::size_t i = 0; i < value.size(); ++i) + { + auto ch = value[i]; + + if (ch == '%' && (i + 2) < value.size()) + { + auto hex = value.substr(i + 1, 2); + auto dec = static_cast(std::strtol(hex.c_str(), nullptr, 16)); + result.push_back(dec); + i += 2; + } + else if (ch == '+') + { + result.push_back(' '); + } + else + { + result.push_back(ch); + } + } + + return result; } +bool replaceString(std::string &s, std::string const &toReplace, std::string const &replaceWith) +{ + return replaceString(s, toReplace, replaceWith, true); +} -std::string UrlDecode(const std::string& value) +bool replaceString(std::string &s, std::string const &toReplace, std::string const &replaceWith, bool logIt) { - std::string result; - result.reserve(value.size()); - - for (std::size_t i = 0; i < value.size(); ++i) - { - auto ch = value[i]; - - if (ch == '%' && (i + 2) < value.size()) - { - auto hex = value.substr(i + 1, 2); - auto dec = static_cast(std::strtol(hex.c_str(), nullptr, 16)); - result.push_back(dec); - i += 2; - } - else if (ch == '+') - { - result.push_back(' '); - } - else - { - result.push_back(ch); - } - } - - return result; + std::size_t pos = s.find(toReplace); + + if (pos == std::string::npos) + { + // Not found + return false; + } + + std::string old = s; + s.replace(pos, toReplace.length(), replaceWith); + + if (logIt) + { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Migrated Configfile line '" + old + "' to '" + s + "'"); + } + + return true; } +bool isInString(std::string &s, std::string const &toFind) +{ + std::size_t pos = s.find(toFind); + + if (pos == std::string::npos) + { + // Not found + return false; + } -bool replaceString(std::string& s, std::string const& toReplace, std::string const& replaceWith) { - return replaceString(s, toReplace, replaceWith, true); + return true; } +// from https://stackoverflow.com/a/14678800 +void replaceAll(std::string& s, const std::string& toReplace, const std::string& replaceWith) +{ + size_t pos = 0; + + while ((pos = s.find(toReplace, pos)) != std::string::npos) + { + s.replace(pos, toReplace.length(), replaceWith); + pos += replaceWith.length(); + } +} -bool replaceString(std::string& s, std::string const& toReplace, std::string const& replaceWith, bool logIt) { - std::size_t pos = s.find(toReplace); +bool isStringNumeric(std::string &input) +{ + if (input.size() <= 0) + { + return false; + } + + // Replace comma with a dot + replaceString(input, ",", ".", false); + + int start = 0; + int punkt_existiert_schon = 0; - if (pos == std::string::npos) { // Not found - return false; - } + if (input[0] == '-') + { + start = 1; + } - std::string old = s; - s.replace(pos, toReplace.length(), replaceWith); - if (logIt) { - LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Migrated Configfile line '" + old + "' to '" + s + "'"); - } - return true; + for (int i = start; i < input.size(); i++) + { + if ((input[i] == '.') && (i > 0) && (punkt_existiert_schon == 0)) + { + punkt_existiert_schon = 1; + i++; + } + else if (!isdigit(input[i])) + { + return false; + } + } + + return true; +} + +bool isStringAlphabetic(std::string &input) +{ + for (int i = 0; i < input.size(); i++) + { + if (!isalpha(input[i])) + { + return false; + } + } + + return true; +} + +bool isStringAlphanumeric(std::string &input) +{ + for (int i = 0; i < input.size(); i++) + { + if (!isalnum(input[i])) + { + return false; + } + } + + return true; } +bool alphanumericToBoolean(std::string &input) +{ + if (isStringAlphabetic(input)) + { + return stringToBoolean(toUpper(input)); + } + else if (isStringNumeric(input)) + { + return numericStrToBool(input); + } -bool isInString(std::string& s, std::string const& toFind) { - std::size_t pos = s.find(toFind); + return false; +} - if (pos == std::string::npos) { // Not found - return false; - } - return true; +int clipInt(int input, int high, int low) +{ + if (input < low) + { + input = low; + } + else if (input > high) + { + input = high; + } + return input; +} + +bool numericStrToBool(std::string input) +{ + return (std::stoi(input) != 0); +} + +bool stringToBoolean(std::string input) +{ + return (input == "TRUE"); } diff --git a/code/components/jomjol_helper/Helper.h b/code/components/jomjol_helper/Helper.h index 9cfdf702e..6403fea80 100644 --- a/code/components/jomjol_helper/Helper.h +++ b/code/components/jomjol_helper/Helper.h @@ -21,7 +21,6 @@ bool RenameFile(string from, string to); bool MakeDir(std::string _what); bool FileExists(string filename); - string RundeOutput(double _in, int _anzNachkomma); size_t findDelimiterPos(string input, string delimiter); @@ -33,7 +32,6 @@ string getFileType(string filename); string getFileFullFileName(string filename); string getDirectory(string filename); - int mkdir_r(const char *dir, const mode_t mode); int removeFolder(const char* folderPath, const char* logTag); @@ -68,7 +66,6 @@ string getSDCardSectorSize(); string getMac(void); - /* Error bit fields One bit per error Make sure it matches https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Codes */ @@ -98,8 +95,18 @@ const char* get404(void); std::string UrlDecode(const std::string& value); +void replaceAll(std::string& s, const std::string& toReplace, const std::string& replaceWith); bool replaceString(std::string& s, std::string const& toReplace, std::string const& replaceWith); bool replaceString(std::string& s, std::string const& toReplace, std::string const& replaceWith, bool logIt); bool isInString(std::string& s, std::string const& toFind); +bool isStringNumeric(std::string &input); +bool isStringAlphabetic(std::string &input); +bool isStringAlphanumeric(std::string &input); +bool alphanumericToBoolean(std::string &input); + +int clipInt(int input, int high, int low); +bool numericStrToBool(std::string input); +bool stringToBoolean(std::string input); + #endif //HELPER_H diff --git a/code/components/jomjol_helper/psram.cpp b/code/components/jomjol_helper/psram.cpp index ce6c1c032..d2caf8565 100644 --- a/code/components/jomjol_helper/psram.cpp +++ b/code/components/jomjol_helper/psram.cpp @@ -120,15 +120,15 @@ void psram_free_shared_temp_image_memory(void) { /******************************************************************* - * Memory used in Digitalization Steps + * Memory used in Digitization Steps * During this step we only use the shared part of the PSRAM for the * Tensor Arena and one of the Models. * The shared memory is large enough for the largest model and the * Tensor Arena. Therefore we do not need to monitor the usage. *******************************************************************/ void *psram_get_shared_tensor_arena_memory(void) { - if ((sharedMemoryInUseFor == "") || (sharedMemoryInUseFor == "Digitalization_Model")) { - sharedMemoryInUseFor = "Digitalization_Tensor"; + if ((sharedMemoryInUseFor == "") || (sharedMemoryInUseFor == "Digitization_Model")) { + sharedMemoryInUseFor = "Digitization_Tensor"; LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Allocating Tensor Arena (" + std::to_string(TENSOR_ARENA_SIZE) + " bytes, use shared memory in PSRAM)..."); return shared_region; // Use 1th part of the shared memory for Tensor } @@ -140,8 +140,8 @@ void *psram_get_shared_tensor_arena_memory(void) { void *psram_get_shared_model_memory(void) { - if ((sharedMemoryInUseFor == "") || (sharedMemoryInUseFor == "Digitalization_Tensor")) { - sharedMemoryInUseFor = "Digitalization_Model"; + if ((sharedMemoryInUseFor == "") || (sharedMemoryInUseFor == "Digitization_Tensor")) { + sharedMemoryInUseFor = "Digitization_Model"; LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Allocating Model memory (" + std::to_string(MAX_MODEL_SIZE) + " bytes, use shared memory in PSRAM)..."); return (uint8_t *)shared_region + TENSOR_ARENA_SIZE; // Use 2nd part of the shared memory (after Tensor Arena) for the model } diff --git a/code/components/jomjol_helper/psram.h b/code/components/jomjol_helper/psram.h index 880e883ac..71a5436f2 100644 --- a/code/components/jomjol_helper/psram.h +++ b/code/components/jomjol_helper/psram.h @@ -20,7 +20,7 @@ void psram_free_shared_stbi_memory(void *p); void *psram_reserve_shared_tmp_image_memory(void); void psram_free_shared_temp_image_memory(void); -/* Memory used in Digitalization Steps */ +/* Memory used in Digitization Steps */ void *psram_get_shared_tensor_arena_memory(void); void *psram_get_shared_model_memory(void); void psram_free_shared_tensor_arena_and_model_memory(void); diff --git a/code/components/jomjol_helper/sdcard_init.c b/code/components/jomjol_helper/sdcard_init.c index 02bac5cb5..1c306ac94 100644 --- a/code/components/jomjol_helper/sdcard_init.c +++ b/code/components/jomjol_helper/sdcard_init.c @@ -35,15 +35,15 @@ static const char* TAG = "sdcard_init"; } \ } while(0) -typedef struct vfs_fat_sd_ctx_t { +typedef struct mh_vfs_fat_sd_ctx_t { BYTE pdrv; //Drive number that is mounted esp_vfs_fat_mount_config_t mount_config; //Mount configuration FATFS *fs; //FAT structure pointer that is registered sdmmc_card_t *card; //Card info char *base_path; //Path where partition is registered -} vfs_fat_sd_ctx_t; +} mh_vfs_fat_sd_ctx_t; -static vfs_fat_sd_ctx_t *s_ctx[FF_VOLUMES] = {}; +static mh_vfs_fat_sd_ctx_t *s_ctx[FF_VOLUMES] = {}; /** * This `s_saved_ctx_id` is only used by `esp_vfs_fat_sdmmc_unmount`, which is deprecated. @@ -185,14 +185,9 @@ BYTE ff_diskio_get_pdrv_card_mh(const sdmmc_card_t* card) return 0xff; } - - - - - static bool s_get_context_id_by_card_mh(const sdmmc_card_t *card, uint32_t *out_id) { - vfs_fat_sd_ctx_t *p_ctx = NULL; + mh_vfs_fat_sd_ctx_t *p_ctx = NULL; for (int i = 0; i < FF_VOLUMES; i++) { p_ctx = s_ctx[i]; if (p_ctx) { @@ -378,7 +373,7 @@ static esp_err_t init_sdmmc_host_mh(int slot, const void *slot_config, int *out_ esp_err_t esp_vfs_fat_sdmmc_mount_mh(const char* base_path, const sdmmc_host_t* host_config, const void* slot_config, const esp_vfs_fat_mount_config_t* mount_config, sdmmc_card_t** out_card) { esp_err_t err; - vfs_fat_sd_ctx_t *ctx = NULL; + mh_vfs_fat_sd_ctx_t *ctx = NULL; uint32_t ctx_id = FF_VOLUMES; FATFS *fs = NULL; int card_handle = -1; //uninitialized @@ -419,7 +414,7 @@ esp_err_t esp_vfs_fat_sdmmc_mount_mh(const char* base_path, const sdmmc_host_t* s_saved_ctx_id = 0; } - ctx = calloc(sizeof(vfs_fat_sd_ctx_t), 1); + ctx = calloc(sizeof(mh_vfs_fat_sd_ctx_t), 1); if (!ctx) { CHECK_EXECUTE_RESULT(ESP_ERR_NO_MEM, "no mem"); @@ -462,7 +457,7 @@ esp_err_t esp_vfs_fat_sdspi_mount_mh(const char* base_path, const sdmmc_host_t* { const sdmmc_host_t* host_config = host_config_input; esp_err_t err; - vfs_fat_sd_ctx_t *ctx = NULL; + mh_vfs_fat_sd_ctx_t *ctx = NULL; uint32_t ctx_id = FF_VOLUMES; FATFS *fs = NULL; int card_handle = -1; //uninitialized @@ -514,7 +509,7 @@ esp_err_t esp_vfs_fat_sdspi_mount_mh(const char* base_path, const sdmmc_host_t* s_saved_ctx_id = 0; } - ctx = calloc(sizeof(vfs_fat_sd_ctx_t), 1); + ctx = calloc(sizeof(mh_vfs_fat_sd_ctx_t), 1); if (!ctx) { CHECK_EXECUTE_RESULT(ESP_ERR_NO_MEM, "no mem"); diff --git a/code/components/jomjol_image_proc/CRotateImage.cpp b/code/components/jomjol_image_proc/CRotateImage.cpp index 12d441540..bd1c91e77 100644 --- a/code/components/jomjol_image_proc/CRotateImage.cpp +++ b/code/components/jomjol_image_proc/CRotateImage.cpp @@ -1,353 +1,309 @@ -#include -#include "CRotateImage.h" -#include "psram.h" - -static const char *TAG = "C ROTATE IMG"; - -CRotateImage::CRotateImage(std::string _name, CImageBasis *_org, CImageBasis *_temp, bool _flip) : CImageBasis(_name) -{ - rgb_image = _org->rgb_image; - channels = _org->channels; - width = _org->width; - height = _org->height; - bpp = _org->bpp; - externalImage = true; - ImageTMP = _temp; - ImageOrg = _org; - islocked = false; - doflip = _flip; -} - - -void CRotateImage::Mirror(){ - int memsize = width * height * channels; - uint8_t* odata; - if (ImageTMP) - { - odata = ImageTMP->RGBImageLock(); - } - else - { - odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); - } - - - int x_source, y_source; - stbi_uc* p_target; - stbi_uc* p_source; - - RGBImageLock(); - - for (int x = 0; x < width; ++x) - for (int y = 0; y < height; ++y) - { - p_target = odata + (channels * (y * width + x)); - - x_source = width - x; - y_source = y; - - p_source = rgb_image + (channels * (y_source * width + x_source)); - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = p_source[_channels]; - } - - // memcpy(rgb_image, odata, memsize); - memCopy(odata, rgb_image, memsize); - if (!ImageTMP) - free_psram_heap(std::string(TAG) + "->odata", odata); - - if (ImageTMP) - ImageTMP->RGBImageRelease(); - - RGBImageRelease(); -} - -void CRotateImage::Rotate(float _angle, int _centerx, int _centery) -{ - int org_width, org_height; - float m[2][3]; - - float x_center = _centerx; - float y_center = _centery; - _angle = _angle / 180 * M_PI; - - if (doflip) - { - org_width = width; - org_height = height; - height = org_width; - width = org_height; - x_center = x_center - (org_width/2) + (org_height/2); - y_center = y_center + (org_width/2) - (org_height/2); - if (ImageOrg) - { - ImageOrg->height = height; - ImageOrg->width = width; - } - } - else - { - org_width = width; - org_height = height; - } - - m[0][0] = cos(_angle); - m[0][1] = sin(_angle); - m[0][2] = (1 - m[0][0]) * x_center - m[0][1] * y_center; - - m[1][0] = -m[0][1]; - m[1][1] = m[0][0]; - m[1][2] = m[0][1] * x_center + (1 - m[0][0]) * y_center; - - if (doflip) - { - m[0][2] = m[0][2] + (org_width/2) - (org_height/2); - m[1][2] = m[1][2] - (org_width/2) + (org_height/2); - } - - int memsize = width * height * channels; - uint8_t* odata; - if (ImageTMP) - { - odata = ImageTMP->RGBImageLock(); - } - else - { - odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); - } - - - int x_source, y_source; - stbi_uc* p_target; - stbi_uc* p_source; - - RGBImageLock(); - - for (int x = 0; x < width; ++x) - for (int y = 0; y < height; ++y) - { - p_target = odata + (channels * (y * width + x)); - - x_source = int(m[0][0] * x + m[0][1] * y); - y_source = int(m[1][0] * x + m[1][1] * y); - - x_source += int(m[0][2]); - y_source += int(m[1][2]); - - if ((x_source >= 0) && (x_source < org_width) && (y_source >= 0) && (y_source < org_height)) - { - p_source = rgb_image + (channels * (y_source * org_width + x_source)); - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = p_source[_channels]; - } - else - { - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = 255; - } - } - - // memcpy(rgb_image, odata, memsize); - memCopy(odata, rgb_image, memsize); - - if (!ImageTMP) - { - free_psram_heap(std::string(TAG) + "->odata", odata); - } - if (ImageTMP) - ImageTMP->RGBImageRelease(); - - RGBImageRelease(); -} - - - -void CRotateImage::RotateAntiAliasing(float _angle, int _centerx, int _centery) -{ - int org_width, org_height; - float m[2][3]; - - float x_center = _centerx; - float y_center = _centery; - _angle = _angle / 180 * M_PI; - - if (doflip) - { - org_width = width; - org_height = height; - height = org_width; - width = org_height; - x_center = x_center - (org_width/2) + (org_height/2); - y_center = y_center + (org_width/2) - (org_height/2); - if (ImageOrg) - { - ImageOrg->height = height; - ImageOrg->width = width; - } - } - else - { - org_width = width; - org_height = height; - } - - m[0][0] = cos(_angle); - m[0][1] = sin(_angle); - m[0][2] = (1 - m[0][0]) * x_center - m[0][1] * y_center; - - m[1][0] = -m[0][1]; - m[1][1] = m[0][0]; - m[1][2] = m[0][1] * x_center + (1 - m[0][0]) * y_center; - - if (doflip) - { - m[0][2] = m[0][2] + (org_width/2) - (org_height/2); - m[1][2] = m[1][2] - (org_width/2) + (org_height/2); - } - - int memsize = width * height * channels; - uint8_t* odata; - if (ImageTMP) - { - odata = ImageTMP->RGBImageLock(); - } - else - { - odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); - } - - - int x_source_1, y_source_1, x_source_2, y_source_2; - float x_source, y_source; - float quad_ul, quad_ur, quad_ol, quad_or; - stbi_uc* p_target; - stbi_uc *p_source_ul, *p_source_ur, *p_source_ol, *p_source_or; - - RGBImageLock(); - - for (int x = 0; x < width; ++x) - for (int y = 0; y < height; ++y) - { - p_target = odata + (channels * (y * width + x)); - - x_source = (m[0][0] * x + m[0][1] * y); - y_source = (m[1][0] * x + m[1][1] * y); - - x_source += (m[0][2]); - y_source += (m[1][2]); - - x_source_1 = (int)x_source; - x_source_2 = x_source_1 + 1; - y_source_1 = (int)y_source; - y_source_2 = y_source_1 + 1; - - quad_ul = (x_source_2 - x_source) * (y_source_2 - y_source); - quad_ur = (1- (x_source_2 - x_source)) * (y_source_2 - y_source); - quad_or = (x_source_2 - x_source) * (1-(y_source_2 - y_source)); - quad_ol = (1- (x_source_2 - x_source)) * (1-(y_source_2 - y_source)); - - - if ((x_source_1 >= 0) && (x_source_2 < org_width) && (y_source_1 >= 0) && (y_source_2 < org_height)) - { - p_source_ul = rgb_image + (channels * (y_source_1 * org_width + x_source_1)); - p_source_ur = rgb_image + (channels * (y_source_1 * org_width + x_source_2)); - p_source_or = rgb_image + (channels * (y_source_2 * org_width + x_source_1)); - p_source_ol = rgb_image + (channels * (y_source_2 * org_width + x_source_2)); - for (int _channels = 0; _channels < channels; ++_channels) - { - p_target[_channels] = (int)((float)p_source_ul[_channels] * quad_ul - + (float)p_source_ur[_channels] * quad_ur - + (float)p_source_or[_channels] * quad_or - + (float)p_source_ol[_channels] * quad_ol); - } - } - else - { - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = 255; - } - } - - // memcpy(rgb_image, odata, memsize); - memCopy(odata, rgb_image, memsize); - - if (!ImageTMP) - { - free_psram_heap(std::string(TAG) + "->odata", odata); - } - if (ImageTMP) - ImageTMP->RGBImageRelease(); - - RGBImageRelease(); -} - - -void CRotateImage::Rotate(float _angle) -{ -// ESP_LOGD(TAG, "width %d, height %d", width, height); - Rotate(_angle, width / 2, height / 2); -} - -void CRotateImage::RotateAntiAliasing(float _angle) -{ -// ESP_LOGD(TAG, "width %d, height %d", width, height); - RotateAntiAliasing(_angle, width / 2, height / 2); -} - -void CRotateImage::Translate(int _dx, int _dy) -{ - int memsize = width * height * channels; - uint8_t* odata; - if (ImageTMP) - { - odata = ImageTMP->RGBImageLock(); - } - else - { - odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); - } - - - - int x_source, y_source; - stbi_uc* p_target; - stbi_uc* p_source; - - RGBImageLock(); - - for (int x = 0; x < width; ++x) - for (int y = 0; y < height; ++y) - { - p_target = odata + (channels * (y * width + x)); - - x_source = x - _dx; - y_source = y - _dy; - - if ((x_source >= 0) && (x_source < width) && (y_source >= 0) && (y_source < height)) - { - p_source = rgb_image + (channels * (y_source * width + x_source)); - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = p_source[_channels]; - } - else - { - for (int _channels = 0; _channels < channels; ++_channels) - p_target[_channels] = 255; - } - } - - // memcpy(rgb_image, odata, memsize); - memCopy(odata, rgb_image, memsize); - if (!ImageTMP) - { - free_psram_heap(std::string(TAG) + "->odata", odata); - } - - if (ImageTMP) - { - ImageTMP->RGBImageRelease(); - } - RGBImageRelease(); - -} - +#include +#include "CRotateImage.h" +#include "psram.h" + +static const char *TAG = "C ROTATE IMG"; + +CRotateImage::CRotateImage(std::string _name, CImageBasis *_org, CImageBasis *_temp, bool _flip) : CImageBasis(_name) +{ + rgb_image = _org->rgb_image; + channels = _org->channels; + width = _org->width; + height = _org->height; + bpp = _org->bpp; + externalImage = true; + ImageTMP = _temp; + ImageOrg = _org; + islocked = false; + doflip = _flip; +} + +void CRotateImage::Rotate(float _angle, int _centerx, int _centery) +{ + int org_width, org_height; + float m[2][3]; + + float x_center = _centerx; + float y_center = _centery; + _angle = _angle / 180 * M_PI; + + if (doflip) + { + org_width = width; + org_height = height; + height = org_width; + width = org_height; + x_center = x_center - (org_width/2) + (org_height/2); + y_center = y_center + (org_width/2) - (org_height/2); + if (ImageOrg) + { + ImageOrg->height = height; + ImageOrg->width = width; + } + } + else + { + org_width = width; + org_height = height; + } + + m[0][0] = cos(_angle); + m[0][1] = sin(_angle); + m[0][2] = (1 - m[0][0]) * x_center - m[0][1] * y_center; + + m[1][0] = -m[0][1]; + m[1][1] = m[0][0]; + m[1][2] = m[0][1] * x_center + (1 - m[0][0]) * y_center; + + if (doflip) + { + m[0][2] = m[0][2] + (org_width/2) - (org_height/2); + m[1][2] = m[1][2] - (org_width/2) + (org_height/2); + } + + int memsize = width * height * channels; + uint8_t* odata; + if (ImageTMP) + { + odata = ImageTMP->RGBImageLock(); + } + else + { + odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); + } + + + int x_source, y_source; + stbi_uc* p_target; + stbi_uc* p_source; + + RGBImageLock(); + + for (int x = 0; x < width; ++x) + for (int y = 0; y < height; ++y) + { + p_target = odata + (channels * (y * width + x)); + + x_source = int(m[0][0] * x + m[0][1] * y); + y_source = int(m[1][0] * x + m[1][1] * y); + + x_source += int(m[0][2]); + y_source += int(m[1][2]); + + if ((x_source >= 0) && (x_source < org_width) && (y_source >= 0) && (y_source < org_height)) + { + p_source = rgb_image + (channels * (y_source * org_width + x_source)); + for (int _channels = 0; _channels < channels; ++_channels) + p_target[_channels] = p_source[_channels]; + } + else + { + for (int _channels = 0; _channels < channels; ++_channels) + p_target[_channels] = 255; + } + } + + // memcpy(rgb_image, odata, memsize); + memCopy(odata, rgb_image, memsize); + + if (!ImageTMP) + { + free_psram_heap(std::string(TAG) + "->odata", odata); + } + if (ImageTMP) + ImageTMP->RGBImageRelease(); + + RGBImageRelease(); +} + + + +void CRotateImage::RotateAntiAliasing(float _angle, int _centerx, int _centery) +{ + int org_width, org_height; + float m[2][3]; + + float x_center = _centerx; + float y_center = _centery; + _angle = _angle / 180 * M_PI; + + if (doflip) + { + org_width = width; + org_height = height; + height = org_width; + width = org_height; + x_center = x_center - (org_width/2) + (org_height/2); + y_center = y_center + (org_width/2) - (org_height/2); + if (ImageOrg) + { + ImageOrg->height = height; + ImageOrg->width = width; + } + } + else + { + org_width = width; + org_height = height; + } + + m[0][0] = cos(_angle); + m[0][1] = sin(_angle); + m[0][2] = (1 - m[0][0]) * x_center - m[0][1] * y_center; + + m[1][0] = -m[0][1]; + m[1][1] = m[0][0]; + m[1][2] = m[0][1] * x_center + (1 - m[0][0]) * y_center; + + if (doflip) + { + m[0][2] = m[0][2] + (org_width/2) - (org_height/2); + m[1][2] = m[1][2] - (org_width/2) + (org_height/2); + } + + int memsize = width * height * channels; + uint8_t* odata; + if (ImageTMP) + { + odata = ImageTMP->RGBImageLock(); + } + else + { + odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); + } + + + int x_source_1, y_source_1, x_source_2, y_source_2; + float x_source, y_source; + float quad_ul, quad_ur, quad_ol, quad_or; + stbi_uc* p_target; + stbi_uc *p_source_ul, *p_source_ur, *p_source_ol, *p_source_or; + + RGBImageLock(); + + for (int x = 0; x < width; ++x) + for (int y = 0; y < height; ++y) + { + p_target = odata + (channels * (y * width + x)); + + x_source = (m[0][0] * x + m[0][1] * y); + y_source = (m[1][0] * x + m[1][1] * y); + + x_source += (m[0][2]); + y_source += (m[1][2]); + + x_source_1 = (int)x_source; + x_source_2 = x_source_1 + 1; + y_source_1 = (int)y_source; + y_source_2 = y_source_1 + 1; + + quad_ul = (x_source_2 - x_source) * (y_source_2 - y_source); + quad_ur = (1- (x_source_2 - x_source)) * (y_source_2 - y_source); + quad_or = (x_source_2 - x_source) * (1-(y_source_2 - y_source)); + quad_ol = (1- (x_source_2 - x_source)) * (1-(y_source_2 - y_source)); + + + if ((x_source_1 >= 0) && (x_source_2 < org_width) && (y_source_1 >= 0) && (y_source_2 < org_height)) + { + p_source_ul = rgb_image + (channels * (y_source_1 * org_width + x_source_1)); + p_source_ur = rgb_image + (channels * (y_source_1 * org_width + x_source_2)); + p_source_or = rgb_image + (channels * (y_source_2 * org_width + x_source_1)); + p_source_ol = rgb_image + (channels * (y_source_2 * org_width + x_source_2)); + for (int _channels = 0; _channels < channels; ++_channels) + { + p_target[_channels] = (int)((float)p_source_ul[_channels] * quad_ul + + (float)p_source_ur[_channels] * quad_ur + + (float)p_source_or[_channels] * quad_or + + (float)p_source_ol[_channels] * quad_ol); + } + } + else + { + for (int _channels = 0; _channels < channels; ++_channels) + p_target[_channels] = 255; + } + } + + // memcpy(rgb_image, odata, memsize); + memCopy(odata, rgb_image, memsize); + + if (!ImageTMP) + { + free_psram_heap(std::string(TAG) + "->odata", odata); + } + if (ImageTMP) + ImageTMP->RGBImageRelease(); + + RGBImageRelease(); +} + + +void CRotateImage::Rotate(float _angle) +{ +// ESP_LOGD(TAG, "width %d, height %d", width, height); + Rotate(_angle, width / 2, height / 2); +} + +void CRotateImage::RotateAntiAliasing(float _angle) +{ +// ESP_LOGD(TAG, "width %d, height %d", width, height); + RotateAntiAliasing(_angle, width / 2, height / 2); +} + +void CRotateImage::Translate(int _dx, int _dy) +{ + int memsize = width * height * channels; + uint8_t* odata; + if (ImageTMP) + { + odata = ImageTMP->RGBImageLock(); + } + else + { + odata = (unsigned char*)malloc_psram_heap(std::string(TAG) + "->odata", memsize, MALLOC_CAP_SPIRAM); + } + + + + int x_source, y_source; + stbi_uc* p_target; + stbi_uc* p_source; + + RGBImageLock(); + + for (int x = 0; x < width; ++x) + for (int y = 0; y < height; ++y) + { + p_target = odata + (channels * (y * width + x)); + + x_source = x - _dx; + y_source = y - _dy; + + if ((x_source >= 0) && (x_source < width) && (y_source >= 0) && (y_source < height)) + { + p_source = rgb_image + (channels * (y_source * width + x_source)); + for (int _channels = 0; _channels < channels; ++_channels) + p_target[_channels] = p_source[_channels]; + } + else + { + for (int _channels = 0; _channels < channels; ++_channels) + p_target[_channels] = 255; + } + } + + // memcpy(rgb_image, odata, memsize); + memCopy(odata, rgb_image, memsize); + if (!ImageTMP) + { + free_psram_heap(std::string(TAG) + "->odata", odata); + } + + if (ImageTMP) + { + ImageTMP->RGBImageRelease(); + } + RGBImageRelease(); + +} + diff --git a/code/components/jomjol_image_proc/CRotateImage.h b/code/components/jomjol_image_proc/CRotateImage.h index 30c758d3d..6b7b542ed 100644 --- a/code/components/jomjol_image_proc/CRotateImage.h +++ b/code/components/jomjol_image_proc/CRotateImage.h @@ -1,29 +1,28 @@ -#pragma once - -#ifndef CROTATEIMAGE_H -#define CROTATEIMAGE_H - -#include "CImageBasis.h" - - -class CRotateImage: public CImageBasis -{ - - public: - CImageBasis *ImageTMP, *ImageOrg; - bool doflip; - CRotateImage(std::string name, std::string _image, bool _flip = false) : CImageBasis(name, _image) {ImageTMP = NULL; ImageOrg = NULL; doflip = _flip;}; - CRotateImage(std::string name, uint8_t* _rgb_image, int _channels, int _width, int _height, int _bpp, bool _flip = false) : CImageBasis(name, _rgb_image, _channels, _width, _height, _bpp) {ImageTMP = NULL; ImageOrg = NULL; doflip = _flip;}; - CRotateImage(std::string name, CImageBasis *_org, CImageBasis *_temp, bool _flip = false); - - void Rotate(float _angle); - void RotateAntiAliasing(float _angle); - - void Rotate(float _angle, int _centerx, int _centery); - void RotateAntiAliasing(float _angle, int _centerx, int _centery); - - void Translate(int _dx, int _dy); - void Mirror(); -}; - +#pragma once + +#ifndef CROTATEIMAGE_H +#define CROTATEIMAGE_H + +#include "CImageBasis.h" + + +class CRotateImage: public CImageBasis +{ + + public: + CImageBasis *ImageTMP, *ImageOrg; + bool doflip; + CRotateImage(std::string name, std::string _image, bool _flip = false) : CImageBasis(name, _image) {ImageTMP = NULL; ImageOrg = NULL; doflip = _flip;}; + CRotateImage(std::string name, uint8_t* _rgb_image, int _channels, int _width, int _height, int _bpp, bool _flip = false) : CImageBasis(name, _rgb_image, _channels, _width, _height, _bpp) {ImageTMP = NULL; ImageOrg = NULL; doflip = _flip;}; + CRotateImage(std::string name, CImageBasis *_org, CImageBasis *_temp, bool _flip = false); + + void Rotate(float _angle); + void RotateAntiAliasing(float _angle); + + void Rotate(float _angle, int _centerx, int _centery); + void RotateAntiAliasing(float _angle, int _centerx, int _centery); + + void Translate(int _dx, int _dy); +}; + #endif //CROTATEIMAGE_H \ No newline at end of file diff --git a/code/components/jomjol_logfile/ClassLogFile.cpp b/code/components/jomjol_logfile/ClassLogFile.cpp index b4ec02c9b..3420e6a9a 100644 --- a/code/components/jomjol_logfile/ClassLogFile.cpp +++ b/code/components/jomjol_logfile/ClassLogFile.cpp @@ -32,7 +32,7 @@ void ClassLogFile::WriteHeapInfo(std::string _id) } -void ClassLogFile::WriteToData(std::string _timestamp, std::string _name, std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ReturnRateValue, std::string _ReturnChangeAbsolute, std::string _ErrorMessageText, std::string _digital, std::string _analog) +void ClassLogFile::WriteToData(std::string _timestamp, std::string _name, std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ReturnRateValue, std::string _ReturnChangeAbsolute, std::string _ErrorMessageText, std::string _digit, std::string _analog) { ESP_LOGD(TAG, "Start WriteToData"); time_t rawtime; @@ -67,7 +67,7 @@ void ClassLogFile::WriteToData(std::string _timestamp, std::string _name, std::s fputs(_ReturnChangeAbsolute.c_str(), pFile); fputs(",", pFile); fputs(_ErrorMessageText.c_str(), pFile); - fputs(_digital.c_str(), pFile); + fputs(_digit.c_str(), pFile); fputs(_analog.c_str(), pFile); fputs("\n", pFile); diff --git a/code/components/jomjol_logfile/ClassLogFile.h b/code/components/jomjol_logfile/ClassLogFile.h index b3ade1cd7..7ce4058e1 100644 --- a/code/components/jomjol_logfile/ClassLogFile.h +++ b/code/components/jomjol_logfile/ClassLogFile.h @@ -39,8 +39,8 @@ class ClassLogFile void RemoveOldLogFile(); void RemoveOldDataLog(); -// void WriteToData(std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ErrorMessageText, std::string _digital, std::string _analog); - void WriteToData(std::string _timestamp, std::string _name, std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ReturnRateValue, std::string _ReturnChangeAbsolute, std::string _ErrorMessageText, std::string _digital, std::string _analog); +// void WriteToData(std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ErrorMessageText, std::string _digit, std::string _analog); + void WriteToData(std::string _timestamp, std::string _name, std::string _ReturnRawValue, std::string _ReturnValue, std::string _ReturnPreValue, std::string _ReturnRateValue, std::string _ReturnChangeAbsolute, std::string _ErrorMessageText, std::string _digit, std::string _analog); std::string GetCurrentFileName(); diff --git a/code/components/jomjol_mqtt/server_mqtt.cpp b/code/components/jomjol_mqtt/server_mqtt.cpp index c95affd24..adc68e211 100644 --- a/code/components/jomjol_mqtt/server_mqtt.cpp +++ b/code/components/jomjol_mqtt/server_mqtt.cpp @@ -49,6 +49,15 @@ void mqttServer_setMeterType(std::string _meterType, std::string _valueUnit, std rateUnit = _rateUnit; } +/** + * Takes any multi-level MQTT-topic and returns the last topic level as nodeId + * see https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/ for details about MQTT topics +*/ +std::string createNodeId(std::string &topic) { + auto splitPos = topic.find_last_of('/'); + return (splitPos == std::string::npos) ? topic : topic.substr(splitPos + 1); +} + bool sendHomeAssistantDiscoveryTopic(std::string group, std::string field, std::string name, std::string icon, std::string unit, std::string deviceClass, std::string stateClass, std::string entityCategory, int qos) { @@ -69,11 +78,18 @@ bool sendHomeAssistantDiscoveryTopic(std::string group, std::string field, name = group + " " + name; } + /** + * homeassistant needs the MQTT discovery topic according to the following structure: + * //[/]/config + * if the main topic is embedded in a nested structure, we just use the last part as node_id + * This means a maintopic "home/test/watermeter" is transformed to the discovery topic "homeassistant/sensor/watermeter/..." + */ + std::string node_id = createNodeId(maintopic); if (field == "problem") { // Special binary sensor which is based on error topic - topicFull = "homeassistant/binary_sensor/" + maintopic + "/" + configTopic + "/config"; + topicFull = "homeassistant/binary_sensor/" + node_id + "/" + configTopic + "/config"; } else { - topicFull = "homeassistant/sensor/" + maintopic + "/" + configTopic + "/config"; + topicFull = "homeassistant/sensor/" + node_id + "/" + configTopic + "/config"; } /* See https://www.home-assistant.io/docs/mqtt/discovery/ */ @@ -172,10 +188,10 @@ bool MQTThomeassistantDiscovery(int qos) { allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "value", "Value", "gauge", valueUnit, meterType, "total_increasing", "", qos); allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "raw", "Raw Value", "raw", "", "", "", "diagnostic", qos); allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "error", "Error", "alert-circle-outline", "", "", "", "diagnostic", qos); - /* Not announcing "rate" as it is better to use rate_per_time_unit resp. rate_per_digitalization_round */ + /* Not announcing "rate" as it is better to use rate_per_time_unit resp. rate_per_Digitization_round */ // allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "rate", "Rate (Unit/Minute)", "swap-vertical", "", "", "", ""); // Legacy, always Unit per Minute allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "rate_per_time_unit", "Rate (" + rateUnit + ")", "swap-vertical", rateUnit, "", "measurement", "", qos); - allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "rate_per_digitalization_round", "Change since last digitalization round", "arrow-expand-vertical", valueUnit, "", "measurement", "", qos); // correctly the Unit is Unit/Interval! + allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "rate_per_Digitization_round", "Change since last Digitization round", "arrow-expand-vertical", valueUnit, "", "measurement", "", qos); // correctly the Unit is Unit/Interval! allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "timestamp", "Timestamp", "clock-time-eight-outline", "", "timestamp", "", "diagnostic", qos); allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "json", "JSON", "code-json", "", "", "", "diagnostic", qos); allSendsSuccessed |= sendHomeAssistantDiscoveryTopic(group, "problem", "Problem", "alert-outline", "", "problem", "", "", qos); // Special binary sensor which is based on error topic diff --git a/code/components/jomjol_mqtt/server_mqtt.h b/code/components/jomjol_mqtt/server_mqtt.h index 925358e35..41c359c98 100644 --- a/code/components/jomjol_mqtt/server_mqtt.h +++ b/code/components/jomjol_mqtt/server_mqtt.h @@ -22,6 +22,7 @@ std::string getTimeUnit(void); void GotConnected(std::string maintopic, bool SetRetainFlag); esp_err_t sendDiscovery_and_static_Topics(void); +std::string createNodeId(std::string &topic); #endif //SERVERMQTT_H #endif //ENABLE_MQTT \ No newline at end of file diff --git a/code/components/jomjol_tfliteclass/CTfLiteClass.cpp b/code/components/jomjol_tfliteclass/CTfLiteClass.cpp index 2f9ead86a..c6703ef59 100644 --- a/code/components/jomjol_tfliteclass/CTfLiteClass.cpp +++ b/code/components/jomjol_tfliteclass/CTfLiteClass.cpp @@ -206,6 +206,7 @@ bool CTfLiteClass::MakeAllocate() LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "CTfLiteClass::MakeAllocate"); this->interpreter = new tflite::MicroInterpreter(this->model, resolver, this->tensor_arena, this->kTensorArenaSize); + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Trying to load the model. If it crashes here, it ist most likely due to a corrupted model!"); if (this->interpreter) { diff --git a/code/components/jomjol_webhook/CMakeLists.txt b/code/components/jomjol_webhook/CMakeLists.txt new file mode 100644 index 000000000..10271c118 --- /dev/null +++ b/code/components/jomjol_webhook/CMakeLists.txt @@ -0,0 +1,7 @@ +FILE(GLOB_RECURSE app_sources ${CMAKE_CURRENT_SOURCE_DIR}/*.*) + +idf_component_register(SRCS ${app_sources} + INCLUDE_DIRS "." + REQUIRES esp_http_client jomjol_logfile jomjol_flowcontroll json) + + diff --git a/code/components/jomjol_webhook/interface_webhook.cpp b/code/components/jomjol_webhook/interface_webhook.cpp new file mode 100644 index 000000000..54d4c48ed --- /dev/null +++ b/code/components/jomjol_webhook/interface_webhook.cpp @@ -0,0 +1,170 @@ +#ifdef ENABLE_WEBHOOK +#include "interface_webhook.h" + +#include "esp_log.h" +#include +#include "ClassLogFile.h" +#include "esp_http_client.h" +#include "time_sntp.h" +#include "../../include/defines.h" +#include +#include + + +static const char *TAG = "WEBHOOK"; + +std::string _webhookURI; +std::string _webhookApiKey; +long _lastTimestamp; + +static esp_err_t http_event_handler(esp_http_client_event_t *evt); + +void WebhookInit(std::string _uri, std::string _apiKey) +{ + _webhookURI = _uri; + _webhookApiKey = _apiKey; + _lastTimestamp = 0L; +} + +bool WebhookPublish(std::vector* numbers) +{ + bool numbersWithError = false; + cJSON *jsonArray = cJSON_CreateArray(); + + for (int i = 0; i < (*numbers).size(); ++i) + { + string timezw = ""; + char buffer[80]; + time_t &lastPreValue = (*numbers)[i]->timeStampLastPreValue; + struct tm* timeinfo = localtime(&lastPreValue); + _lastTimestamp = static_cast(lastPreValue); + strftime(buffer, 80, PREVALUE_TIME_FORMAT_OUTPUT, timeinfo); + timezw = std::string(buffer); + + cJSON *json = cJSON_CreateObject(); + cJSON_AddStringToObject(json, "timestamp", timezw.c_str()); + cJSON_AddStringToObject(json, "timestampLong", std::to_string(_lastTimestamp).c_str()); + cJSON_AddStringToObject(json, "name", (*numbers)[i]->name.c_str()); + cJSON_AddStringToObject(json, "rawValue", (*numbers)[i]->ReturnRawValue.c_str()); + cJSON_AddStringToObject(json, "value", (*numbers)[i]->ReturnValue.c_str()); + cJSON_AddStringToObject(json, "preValue", (*numbers)[i]->ReturnPreValue.c_str()); + cJSON_AddStringToObject(json, "rate", (*numbers)[i]->ReturnRateValue.c_str()); + cJSON_AddStringToObject(json, "changeAbsolute", (*numbers)[i]->ReturnChangeAbsolute.c_str()); + cJSON_AddStringToObject(json, "error", (*numbers)[i]->ErrorMessageText.c_str()); + + cJSON_AddItemToArray(jsonArray, json); + + if ((*numbers)[i]->ErrorMessage) { + numbersWithError = true; + } + } + + char *jsonString = cJSON_PrintUnformatted(jsonArray); + + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "sending webhook"); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "sending JSON: " + std::string(jsonString)); + + char response_buffer[MAX_HTTP_OUTPUT_BUFFER] = {0}; + esp_http_client_config_t http_config = { + .url = _webhookURI.c_str(), + .user_agent = "ESP32 Meter reader", + .method = HTTP_METHOD_POST, + .event_handler = http_event_handler, + .buffer_size = MAX_HTTP_OUTPUT_BUFFER, + .user_data = response_buffer + }; + + esp_http_client_handle_t http_client = esp_http_client_init(&http_config); + + esp_http_client_set_header(http_client, "Content-Type", "application/json"); + esp_http_client_set_header(http_client, "APIKEY", _webhookApiKey.c_str()); + + ESP_ERROR_CHECK(esp_http_client_set_post_field(http_client, jsonString, strlen(jsonString))); + + esp_err_t err = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_http_client_perform(http_client)); + + if(err == ESP_OK) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP request was performed"); + int status_code = esp_http_client_get_status_code(http_client); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP status code: " + std::to_string(status_code)); + } else { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "HTTP request failed"); + } + + esp_http_client_cleanup(http_client); + cJSON_Delete(jsonArray); + free(jsonString); + return numbersWithError; +} + +void WebhookUploadPic(ImageData *Img) { + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Starting WebhookUploadPic"); + + std::string fullURI = _webhookURI + "?timestamp=" + std::to_string(_lastTimestamp); + char response_buffer[MAX_HTTP_OUTPUT_BUFFER] = {0}; + esp_http_client_config_t http_config = { + .url = fullURI.c_str(), + .user_agent = "ESP32 Meter reader", + .method = HTTP_METHOD_PUT, + .event_handler = http_event_handler, + .buffer_size = MAX_HTTP_OUTPUT_BUFFER, + .user_data = response_buffer + }; + + esp_http_client_handle_t http_client = esp_http_client_init(&http_config); + + esp_http_client_set_header(http_client, "Content-Type", "image/jpeg"); + esp_http_client_set_header(http_client, "APIKEY", _webhookApiKey.c_str()); + + esp_err_t err = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_http_client_set_post_field(http_client, (const char *)Img->data, Img->size)); + + err = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_http_client_perform(http_client)); + + if (err == ESP_OK) { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP PUT request was performed successfully"); + int status_code = esp_http_client_get_status_code(http_client); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP status code: " + std::to_string(status_code)); + } else { + LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "HTTP PUT request failed"); + } + + esp_http_client_cleanup(http_client); + + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "WebhookUploadPic finished"); +} + + +static esp_err_t http_event_handler(esp_http_client_event_t *evt) +{ + switch(evt->event_id) + { + case HTTP_EVENT_ERROR: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client Error encountered"); + break; + case HTTP_EVENT_ON_CONNECTED: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client connected"); + ESP_LOGI(TAG, "HTTP Client Connected"); + break; + case HTTP_EVENT_HEADERS_SENT: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client sent all request headers"); + break; + case HTTP_EVENT_ON_HEADER: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Header: key=" + std::string(evt->header_key) + ", value=" + std::string(evt->header_value)); + break; + case HTTP_EVENT_ON_DATA: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client data recevied: len=" + std::to_string(evt->data_len)); + break; + case HTTP_EVENT_ON_FINISH: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client finished"); + break; + case HTTP_EVENT_DISCONNECTED: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Client Disconnected"); + break; + case HTTP_EVENT_REDIRECT: + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "HTTP Redirect"); + break; + } + return ESP_OK; +} + +#endif //ENABLE_WEBHOOK diff --git a/code/components/jomjol_webhook/interface_webhook.h b/code/components/jomjol_webhook/interface_webhook.h new file mode 100644 index 000000000..d7033be09 --- /dev/null +++ b/code/components/jomjol_webhook/interface_webhook.h @@ -0,0 +1,17 @@ +#ifdef ENABLE_WEBHOOK + +#pragma once +#ifndef INTERFACE_WEBHOOK_H +#define INTERFACE_WEBHOOK_H + +#include +#include +#include +#include + +void WebhookInit(std::string _webhookURI, std::string _apiKey); +bool WebhookPublish(std::vector* numbers); +void WebhookUploadPic(ImageData *Img); + +#endif //INTERFACE_WEBHOOK_H +#endif //ENABLE_WEBHOOK \ No newline at end of file diff --git a/code/components/jomjol_wlan/connect_wlan.cpp b/code/components/jomjol_wlan/connect_wlan.cpp index 603751265..03a4cd756 100644 --- a/code/components/jomjol_wlan/connect_wlan.cpp +++ b/code/components/jomjol_wlan/connect_wlan.cpp @@ -480,7 +480,8 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_ if (WIFIReconnectCnt >= 10) { WIFIReconnectCnt = 0; LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Disconnected, multiple reconnect attempts failed (" + - std::to_string(disconn->reason) + "), still retrying..."); + std::to_string(disconn->reason) + "), retrying after 5s"); + vTaskDelay(5000 / portTICK_PERIOD_MS); // Delay between the reconnections } } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED) diff --git a/code/components/openmetrics/CMakeLists.txt b/code/components/openmetrics/CMakeLists.txt new file mode 100644 index 000000000..e25439394 --- /dev/null +++ b/code/components/openmetrics/CMakeLists.txt @@ -0,0 +1,7 @@ +FILE(GLOB_RECURSE app_sources ${CMAKE_CURRENT_SOURCE_DIR}/*.*) + +idf_component_register(SRCS ${app_sources} + INCLUDE_DIRS "." + REQUIRES jomjol_image_proc) + + diff --git a/code/components/openmetrics/openmetrics.cpp b/code/components/openmetrics/openmetrics.cpp new file mode 100644 index 000000000..c90100e87 --- /dev/null +++ b/code/components/openmetrics/openmetrics.cpp @@ -0,0 +1,43 @@ +#include "openmetrics.h" + +/** + * create a singe metric from the given input + **/ +std::string createMetric(const std::string &metricName, const std::string &help, const std::string &type, const std::string &value) +{ + return "# HELP " + metricName + " " + help + "\n" + + "# TYPE " + metricName + " " + type + "\n" + + metricName + " " + value + "\n"; +} + +/** + * Generate the MetricFamily from all available sequences + * @returns the string containing the text wire format of the MetricFamily + **/ +std::string createSequenceMetrics(std::string prefix, const std::vector &numbers) +{ + std::string res; + + for (const auto &number : numbers) + { + // only valid data is reported (https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#missing-data) + if (number->ReturnValue.length() > 0) + { + auto label = number->name; + + // except newline, double quote, and backslash (https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#abnf) + // to keep it simple, these characters are just removed from the label + replaceAll(label, "\\", ""); + replaceAll(label, "\"", ""); + replaceAll(label, "\n", ""); + res += prefix + "_flow_value{sequence=\"" + label + "\"} " + number->ReturnValue + "\n"; + } + } + + // prepend metadata if a valid metric was created + if (res.length() > 0) + { + res = "# HELP " + prefix + "_flow_value current value of meter readout\n# TYPE " + prefix + "_flow_value gauge\n" + res; + } + return res; +} diff --git a/code/components/openmetrics/openmetrics.h b/code/components/openmetrics/openmetrics.h new file mode 100644 index 000000000..b75e98cd4 --- /dev/null +++ b/code/components/openmetrics/openmetrics.h @@ -0,0 +1,15 @@ +#pragma once + +#ifndef OPENMETRICS_H +#define OPENMETRICS_H + +#include +#include +#include + +#include "ClassFlowDefineTypes.h" + +std::string createMetric(const std::string &metricName, const std::string &help, const std::string &type, const std::string &value); +std::string createSequenceMetrics(std::string prefix, const std::vector &numbers); + +#endif // OPENMETRICS_H diff --git a/code/dependencies.lock b/code/dependencies.lock index 6e49cb194..8ce5d9338 100644 --- a/code/dependencies.lock +++ b/code/dependencies.lock @@ -1,3 +1,16 @@ -manifest_hash: 63f5c6c9f0bcebc7b9ca12d2aa8b26b2c5f5218d377dc4b2375d9b9ca1df7815 +dependencies: + espressif/esp-nn: + component_hash: b32869798bdb40dec6bc99caca48cd65d42f8a9f506b9ab9c598a076f891ede9 + source: + pre_release: true + service_url: https://api.components.espressif.com/ + type: service + version: 1.0.2 + idf: + component_hash: null + source: + type: idf + version: 5.3.0 +manifest_hash: 6995555b9b41e897235448c868ca92c0c3401fd2ff90df084be9bb8629958f2c target: esp32 -version: 1.0.0 \ No newline at end of file +version: 1.0.0 diff --git a/code/include/defines.h b/code/include/defines.h index e7f9166da..e41178957 100644 --- a/code/include/defines.h +++ b/code/include/defines.h @@ -58,22 +58,11 @@ //#define CONFIG_IDF_TARGET_ARCH_XTENSA //not needed with platformio/espressif32 @ 5.2.0 - //Statusled + ClassControllCamera - #define BLINK_GPIO GPIO_NUM_33 // PIN for red board LED - - //ClassControllCamera - #define FLASH_GPIO GPIO_NUM_4 // PIN for flashlight LED - #define USE_PWM_LEDFLASH // if __LEDGLOBAL is defined, a global variable is used for LED control, otherwise locally and each time a new #define CAM_LIVESTREAM_REFRESHRATE 500 // Camera livestream feature: Waiting time in milliseconds to refresh image // #define GRAYSCALE_AS_DEFAULT - //ClassControllCamera + ClassFlowTakeImage - #define CAMERA_MODEL_AI_THINKER - #define BOARD_ESP32CAM_AITHINKER - - //server_GPIO #define __LEDGLOBAL @@ -105,7 +94,7 @@ #define LOGFILE_LAST_PART_BYTES 80 * 1024 // 80 kBytes // Size of partial log file to return #define SERVER_FILER_SCRATCH_BUFSIZE 4096 - #define SERVER_HELPER_SCRATCH_BUFSIZE 8192 + #define SERVER_HELPER_SCRATCH_BUFSIZE 4096 #define SERVER_OTA_SCRATCH_BUFSIZE 1024 @@ -187,15 +176,13 @@ //ClassFlowCNNGeneral #define Analog_error 3 - #define AnalogToDigtalFehler 0.8 - #define Digital_Uncertainty 0.2 - #define DigitalBand 3 - #define Digital_Transition_Range_Predecessor 2 - #define Digital_Transition_Area_Predecessor 0.7 // 9.3 - 0.7 - #define Digital_Transition_Area_Forward 9.7 // Pre-run zero crossing only happens from approx. 9.7 onwards - - + #define AnalogToDigtalFehler 0.8 + #define Digit_Uncertainty 0.2 + #define DigitBand 3 + #define Digit_Transition_Range_Predecessor 2 + #define Digit_Transition_Area_Predecessor 0.7 // 9.3 - 0.7 + #define Digit_Transition_Area_Forward 9.7 // Pre-run zero crossing only happens from approx. 9.7 onwards //#define DEBUG_DETAIL_ON @@ -210,117 +197,124 @@ //// Conditionnal definitions //// ///////////////////////////////////////////// -//******* camera model -#if defined(CAMERA_MODEL_WROVER_KIT) - #define PWDN_GPIO_NUM -1 - #define RESET_GPIO_NUM -1 - #define XCLK_GPIO_NUM 21 - #define SIOD_GPIO_NUM 26 - #define SIOC_GPIO_NUM 27 - - #define Y9_GPIO_NUM 35 - #define Y8_GPIO_NUM 34 - #define Y7_GPIO_NUM 39 - #define Y6_GPIO_NUM 36 - #define Y5_GPIO_NUM 19 - #define Y4_GPIO_NUM 18 - #define Y3_GPIO_NUM 5 - #define Y2_GPIO_NUM 4 - #define VSYNC_GPIO_NUM 25 - #define HREF_GPIO_NUM 23 - #define PCLK_GPIO_NUM 22 - -#elif defined(CAMERA_MODEL_M5STACK_PSRAM) - #define PWDN_GPIO_NUM -1 - #define RESET_GPIO_NUM 15 - #define XCLK_GPIO_NUM 27 - #define SIOD_GPIO_NUM 25 - #define SIOC_GPIO_NUM 23 - - #define Y9_GPIO_NUM 19 - #define Y8_GPIO_NUM 36 - #define Y7_GPIO_NUM 18 - #define Y6_GPIO_NUM 39 - #define Y5_GPIO_NUM 5 - #define Y4_GPIO_NUM 34 - #define Y3_GPIO_NUM 35 - #define Y2_GPIO_NUM 32 - #define VSYNC_GPIO_NUM 22 - #define HREF_GPIO_NUM 26 - #define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_AI_THINKER) - #define PWDN_GPIO_NUM GPIO_NUM_32 - #define RESET_GPIO_NUM -1 - #define XCLK_GPIO_NUM GPIO_NUM_0 - #define SIOD_GPIO_NUM GPIO_NUM_26 - #define SIOC_GPIO_NUM GPIO_NUM_27 - - #define Y9_GPIO_NUM GPIO_NUM_35 - #define Y8_GPIO_NUM GPIO_NUM_34 - #define Y7_GPIO_NUM GPIO_NUM_39 - #define Y6_GPIO_NUM GPIO_NUM_36 - #define Y5_GPIO_NUM GPIO_NUM_21 - #define Y4_GPIO_NUM GPIO_NUM_19 - #define Y3_GPIO_NUM GPIO_NUM_18 - #define Y2_GPIO_NUM GPIO_NUM_5 - #define VSYNC_GPIO_NUM GPIO_NUM_25 - #define HREF_GPIO_NUM GPIO_NUM_23 - #define PCLK_GPIO_NUM GPIO_NUM_22 - -#else - #error "Camera model not selected" -#endif //camera model // ******* Board type -#ifdef BOARD_WROVER_KIT // WROVER-KIT PIN Map - - #define CAM_PIN_PWDN -1 //power down is not used - #define CAM_PIN_RESET -1 //software reset will be performed - #define CAM_PIN_XCLK 21 - #define CAM_PIN_SIOD 26 - #define CAM_PIN_SIOC 27 - - #define CAM_PIN_D7 35 - #define CAM_PIN_D6 34 - #define CAM_PIN_D5 39 - #define CAM_PIN_D4 36 - #define CAM_PIN_D3 19 - #define CAM_PIN_D2 18 - #define CAM_PIN_D1 5 - #define CAM_PIN_D0 4 - #define CAM_PIN_VSYNC 25 - #define CAM_PIN_HREF 23 - #define CAM_PIN_PCLK 22 - -#endif //// WROVER-KIT PIN Map +#if defined(BOARD_WROVER_KIT) // WROVER-KIT PIN Map + // SD card (operated with SDMMC peripheral) + //------------------------------------------------- + #define GPIO_SDCARD_CLK GPIO_NUM_14 + #define GPIO_SDCARD_CMD GPIO_NUM_15 + #define GPIO_SDCARD_D0 GPIO_NUM_2 + #ifndef __SD_USE_ONE_LINE_MODE__ + #define GPIO_SDCARD_D1 GPIO_NUM_4 + #define GPIO_SDCARD_D2 GPIO_NUM_12 + #define GPIO_SDCARD_D3 GPIO_NUM_13 + #else + #define GPIO_SDCARD_D1 GPIO_NUM_NC + #define GPIO_SDCARD_D2 GPIO_NUM_NC + #define GPIO_SDCARD_D3 GPIO_NUM_13 + #endif + + #define CAM_PIN_PWDN GPIO_NUM_NC //power down is not used + #define CAM_PIN_RESET GPIO_NUM_NC //software reset will be performed + #define CAM_PIN_XCLK GPIO_NUM_21 + #define CAM_PIN_SIOD GPIO_NUM_26 + #define CAM_PIN_SIOC GPIO_NUM_27 + + #define CAM_PIN_D7 GPIO_NUM_35 + #define CAM_PIN_D6 GPIO_NUM_34 + #define CAM_PIN_D5 GPIO_NUM_39 + #define CAM_PIN_D4 GPIO_NUM_36 + #define CAM_PIN_D3 GPIO_NUM_19 + #define CAM_PIN_D2 GPIO_NUM_18 + #define CAM_PIN_D1 GPIO_NUM_5 + #define CAM_PIN_D0 GPIO_NUM_4 + #define CAM_PIN_VSYNC GPIO_NUM_25 + #define CAM_PIN_HREF GPIO_NUM_23 + #define CAM_PIN_PCLK GPIO_NUM_22 + + //Statusled + ClassControllCamera + #define BLINK_GPIO GPIO_NUM_33 // PIN for red board LED, On the board the LED is on the IO2, but it is used for the SD + + //ClassControllCamera + #define FLASH_GPIO GPIO_NUM_12 // PIN for flashlight LED + #define USE_PWM_LEDFLASH // if __LEDGLOBAL is defined, a global variable is used for LED control, otherwise locally and each time a new + +#elif defined(BOARD_M5STACK_PSRAM) // M5STACK PSRAM PIN Map + #define CAM_PIN_PWDN GPIO_NUM_NC + #define CAM_PIN_RESET GPIO_NUM_15 + #define CAM_PIN_XCLK GPIO_NUM_27 + #define CAM_PIN_SIOD GPIO_NUM_25 + #define CAM_PIN_SIOC GPIO_NUM_23 + + #define CAM_PIN_D7 GPIO_NUM_19 + #define CAM_PIN_D6 GPIO_NUM_36 + #define CAM_PIN_D5 GPIO_NUM_18 + #define CAM_PIN_D4 GPIO_NUM_39 + #define CAM_PIN_D3 GPIO_NUM_5 + #define CAM_PIN_D2 GPIO_NUM_34 + #define CAM_PIN_D1 GPIO_NUM_35 + #define CAM_PIN_D0 GPIO_NUM_32 + #define CAM_PIN_VSYNC GPIO_NUM_22 + #define CAM_PIN_HREF GPIO_NUM_26 + #define CAM_PIN_PCLK GPIO_NUM_21 + + //Statusled + ClassControllCamera + #define BLINK_GPIO GPIO_NUM_33 // PIN for red board LED + + //ClassControllCamera + #define FLASH_GPIO GPIO_NUM_4 // PIN for flashlight LED + #define USE_PWM_LEDFLASH // if __LEDGLOBAL is defined, a global variable is used for LED control, otherwise locally and each time a new + + +#elif defined(BOARD_ESP32CAM_AITHINKER) // ESP32Cam (AiThinker) PIN Map + // SD card (operated with SDMMC peripheral) + //------------------------------------------------- + #define GPIO_SDCARD_CLK GPIO_NUM_14 + #define GPIO_SDCARD_CMD GPIO_NUM_15 + #define GPIO_SDCARD_D0 GPIO_NUM_2 + #ifndef __SD_USE_ONE_LINE_MODE__ + #define GPIO_SDCARD_D1 GPIO_NUM_4 + #define GPIO_SDCARD_D2 GPIO_NUM_12 + #define GPIO_SDCARD_D3 GPIO_NUM_13 + #else + #define GPIO_SDCARD_D1 GPIO_NUM_NC + #define GPIO_SDCARD_D2 GPIO_NUM_NC + #define GPIO_SDCARD_D3 GPIO_NUM_13 + #endif + + #define CAM_PIN_PWDN GPIO_NUM_32 + #define CAM_PIN_RESET GPIO_NUM_NC //software reset will be performed + #define CAM_PIN_XCLK GPIO_NUM_0 + #define CAM_PIN_SIOD GPIO_NUM_26 + #define CAM_PIN_SIOC GPIO_NUM_27 + + #define CAM_PIN_D7 GPIO_NUM_35 + #define CAM_PIN_D6 GPIO_NUM_34 + #define CAM_PIN_D5 GPIO_NUM_39 + #define CAM_PIN_D4 GPIO_NUM_36 + #define CAM_PIN_D3 GPIO_NUM_21 + #define CAM_PIN_D2 GPIO_NUM_19 + #define CAM_PIN_D1 GPIO_NUM_18 + #define CAM_PIN_D0 GPIO_NUM_5 + #define CAM_PIN_VSYNC GPIO_NUM_25 + #define CAM_PIN_HREF GPIO_NUM_23 + #define CAM_PIN_PCLK GPIO_NUM_22 + + //Statusled + ClassControllCamera + #define BLINK_GPIO GPIO_NUM_33 // PIN for red board LED + + //ClassControllCamera + #define FLASH_GPIO GPIO_NUM_4 // PIN for flashlight LED + #define USE_PWM_LEDFLASH // if __LEDGLOBAL is defined, a global variable is used for LED control, otherwise locally and each time a new + +#else + #error "Board not selected" +#endif //Board PIN Map - -#ifdef BOARD_ESP32CAM_AITHINKER // ESP32Cam (AiThinker) PIN Map - - #define CAM_PIN_PWDN 32 - #define CAM_PIN_RESET -1 //software reset will be performed - #define CAM_PIN_XCLK 0 - #define CAM_PIN_SIOD 26 - #define CAM_PIN_SIOC 27 - - #define CAM_PIN_D7 35 - #define CAM_PIN_D6 34 - #define CAM_PIN_D5 39 - #define CAM_PIN_D4 36 - #define CAM_PIN_D3 21 - #define CAM_PIN_D2 19 - #define CAM_PIN_D1 18 - #define CAM_PIN_D0 5 - #define CAM_PIN_VSYNC 25 - #define CAM_PIN_HREF 23 - #define CAM_PIN_PCLK 22 - -#endif // ESP32Cam (AiThinker) PIN Map // ******* LED definition #ifdef USE_PWM_LEDFLASH - //// PWM für Flash-LED #define LEDC_TIMER LEDC_TIMER_1 // LEDC_TIMER_0 #define LEDC_MODE LEDC_LOW_SPEED_MODE @@ -332,6 +326,7 @@ #endif //USE_PWM_LEDFLASH + //softAP #ifdef ENABLE_SOFTAP #define EXAMPLE_ESP_WIFI_SSID "AI-on-the-Edge" diff --git a/code/main/main.cpp b/code/main/main.cpp index a0ef0ea20..0340e50f6 100644 --- a/code/main/main.cpp +++ b/code/main/main.cpp @@ -11,10 +11,13 @@ #include "esp_chip_info.h" // SD-Card //////////////////// -#include "sdcard_init.h" #include "esp_vfs_fat.h" #include "ffconf.h" #include "driver/sdmmc_host.h" + +#if (ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 1, 2)) +#include "sdcard_init.h" +#endif /////////////////////////////// #include "ClassLogFile.h" @@ -91,10 +94,10 @@ static const char *TAG = "MAIN"; #define MOUNT_POINT "/sdcard" - bool Init_NVS_SDCard() { esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); @@ -108,12 +111,23 @@ bool Init_NVS_SDCard() // Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals. sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); - // Set bus width to use: - #ifdef __SD_USE_ONE_LINE_MODE__ - slot_config.width = 1; - #else - slot_config.width = 4; - #endif + // Set bus width to use: +#ifdef __SD_USE_ONE_LINE_MODE__ + slot_config.width = 1; +#ifdef SOC_SDMMC_USE_GPIO_MATRIX + slot_config.clk = GPIO_SDCARD_CLK; + slot_config.cmd = GPIO_SDCARD_CMD; + slot_config.d0 = GPIO_SDCARD_D0; +#endif + +#else + slot_config.width = 4; +#ifdef SOC_SDMMC_USE_GPIO_MATRIX + slot_config.d1 = GPIO_SDCARD_D1; + slot_config.d2 = GPIO_SDCARD_D2; + slot_config.d3 = GPIO_SDCARD_D3; +#endif +#endif // Enable internal pullups on enabled pins. The internal pullups // are insufficient however, please make sure 10k external pullups are @@ -125,7 +139,7 @@ bool Init_NVS_SDCard() // dies führt jedoch bei schlechten Kopien des AI_THINKER Boards // zu Problemen mit der SD Initialisierung und eventuell sogar zur reboot-loops. // Um diese Probleme zu kompensieren, wird der PullUp manuel gesetzt. - gpio_set_pull_mode(GPIO_NUM_13, GPIO_PULLUP_ONLY); // HS2_D3 + gpio_set_pull_mode(GPIO_SDCARD_D3, GPIO_PULLUP_ONLY); // HS2_D3 // Options for mounting the filesystem. // If format_if_mount_failed is set to true, SD card will be partitioned and @@ -144,7 +158,11 @@ bool Init_NVS_SDCard() // Note: esp_vfs_fat_sdmmc_mount is an all-in-one convenience function. // Please check its source code and implement error recovery when developing // production applications. +#if (ESP_IDF_VERSION <= ESP_IDF_VERSION_VAL(5, 1, 2)) ret = esp_vfs_fat_sdmmc_mount_mh(mount_point, &host, &slot_config, &mount_config, &card); +#else + ret = esp_vfs_fat_sdmmc_mount(mount_point, &host, &slot_config, &mount_config, &card); +#endif if (ret != ESP_OK) { if (ret == ESP_FAIL) { @@ -167,7 +185,6 @@ bool Init_NVS_SDCard() return true; } - extern "C" void app_main(void) { //#ifdef CONFIG_HEAP_TRACING_STANDALONE @@ -191,7 +208,6 @@ extern "C" void app_main(void) // ******************************************** ESP_LOGI(TAG, "\n\n\n\n================ Start app_main ================="); - // Init SD card // ******************************************** if (!Init_NVS_SDCard()) @@ -212,7 +228,6 @@ extern "C" void app_main(void) LogFile.WriteToFile(ESP_LOG_INFO, TAG, "==================== Start ======================"); LogFile.WriteToFile(ESP_LOG_INFO, TAG, "================================================="); - // Init external PSRAM // ******************************************** esp_err_t PSRAMStatus = esp_psram_init(); @@ -261,7 +276,6 @@ extern "C" void app_main(void) ESP_LOGD(TAG, "After camera initialization: sleep for: %ldms", (long) xDelay * CONFIG_FREERTOS_HZ/portTICK_PERIOD_MS); vTaskDelay( xDelay ); - // Check camera init // ******************************************** if (camStatus != ESP_OK) { // Camera init failed, retry to init @@ -310,7 +324,6 @@ extern "C" void app_main(void) } } - // SD card: basic R/W check // ******************************************** int iSDCardStatus = SDCardCheckRW(); @@ -335,12 +348,10 @@ extern "C" void app_main(void) // ******************************************** setupTime(); // NTP time service: Status of time synchronization will be checked after every round (server_tflite.cpp) - // Set CPU Frequency // ******************************************** setCpuFrequency(); - // SD card: Create further mandatory directories (if not already existing) // Correct creation of these folders will be checked with function "SDCardCheckFolderFilePresence" // ******************************************** @@ -432,7 +443,6 @@ extern "C" void app_main(void) ESP_LOGD(TAG, "main: sleep for: %ldms", (long) xDelay * CONFIG_FREERTOS_HZ/portTICK_PERIOD_MS); vTaskDelay( xDelay ); - // manual reset the time // ******************************************** if (!time_manual_reset_sync()) @@ -440,8 +450,6 @@ extern "C" void app_main(void) LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Manual Time Sync failed during startup" ); } - - // Set log level for wifi component to WARN level (default: INFO; only relevant for serial console) // ******************************************** esp_log_level_set("wifi", ESP_LOG_WARN); @@ -465,8 +473,6 @@ extern "C" void app_main(void) #endif #endif - - // Print Device info // ******************************************** esp_chip_info_t chipInfo; @@ -522,7 +528,7 @@ extern "C" void app_main(void) } } - +// FIXME: needs to be revised or removed!!! void migrateConfiguration(void) { bool migrated = false; @@ -569,16 +575,19 @@ void migrateConfiguration(void) { migrated = migrated | replaceString(configLines[i], ";Demo = true", ";Demo = false"); // Set it to its default value migrated = migrated | replaceString(configLines[i], ";Demo", "Demo"); // Enable it - migrated = migrated | replaceString(configLines[i], ";FixedExposure = true", ";FixedExposure = false"); // Set it to its default value - migrated = migrated | replaceString(configLines[i], ";FixedExposure", "FixedExposure"); // Enable it + // Parameter is no longer used + // migrated = migrated | replaceString(configLines[i], ";FixedExposure = true", ";FixedExposure = false"); // Set it to its default value + // migrated = migrated | replaceString(configLines[i], ";FixedExposure", "FixedExposure"); // Enable it } if (section == "[Alignment]") { - migrated = migrated | replaceString(configLines[i], ";InitialMirror = true", ";InitialMirror = false"); // Set it to its default value - migrated = migrated | replaceString(configLines[i], ";InitialMirror", "InitialMirror"); // Enable it - - migrated = migrated | replaceString(configLines[i], ";FlipImageSize = true", ";FlipImageSize = false"); // Set it to its default value - migrated = migrated | replaceString(configLines[i], ";FlipImageSize", "FlipImageSize"); // Enable it + // Parameter is no longer used + // migrated = migrated | replaceString(configLines[i], ";InitialMirror = true", ";InitialMirror = false"); // Set it to its default value + // migrated = migrated | replaceString(configLines[i], ";InitialMirror", "InitialMirror"); // Enable it + + // Parameter is no longer used + // migrated = migrated | replaceString(configLines[i], ";FlipImageSize = true", ";FlipImageSize = false"); // Set it to its default value + // migrated = migrated | replaceString(configLines[i], ";FlipImageSize", "FlipImageSize"); // Enable it } if (section == "[Digits]") { @@ -593,6 +602,7 @@ void migrateConfiguration(void) { } if (section == "[PostProcessing]") { + migrated = migrated | replaceString(configLines[i], "AnalogDigitalTransitionStart", "AnalogToDigitTransitionStart"); // Rename it migrated = migrated | replaceString(configLines[i], ";PreValueUse = true", ";PreValueUse = false"); // Set it to its default value migrated = migrated | replaceString(configLines[i], ";PreValueUse", "PreValueUse"); // Enable it @@ -705,7 +715,6 @@ void migrateConfiguration(void) { } } - std::vector splitString(const std::string& str) { std::vector tokens; @@ -719,8 +728,6 @@ std::vector splitString(const std::string& str) { return tokens; } - - /*bool replace_all(std::string& s, std::string const& toReplace, std::string const& replaceWith) { std::string buf; std::size_t pos = 0; @@ -748,11 +755,10 @@ std::vector splitString(const std::string& str) { return found; }*/ - bool setCpuFrequency(void) { ConfigFile configFile = ConfigFile(CONFIG_FILE); string cpuFrequency = "160"; - esp_pm_config_esp32_t pm_config; + esp_pm_config_t pm_config; if (!configFile.ConfigFileExists()){ LogFile.WriteToFile(ESP_LOG_WARN, TAG, "No ConfigFile defined - exit setCpuFrequency()!"); @@ -764,7 +770,6 @@ bool setCpuFrequency(void) { bool disabledLine = false; bool eof = false; - /* Load config from config file */ while ((!configFile.GetNextParagraph(line, disabledLine, eof) || (line.compare("[System]") != 0)) && !eof) {} diff --git a/code/main/server_main.cpp b/code/main/server_main.cpp index b0a9a77eb..5d9d16f70 100644 --- a/code/main/server_main.cpp +++ b/code/main/server_main.cpp @@ -357,7 +357,7 @@ esp_err_t img_tmp_virtual_handler(httpd_req_t *req) if (filetosend == "raw.jpg") return GetRawJPG(req); - // Serve alg.jpg, alg_roi.jpg or digital and analog ROIs + // Serve alg.jpg, alg_roi.jpg or digit and analog ROIs if (ESP_OK == GetJPG(filetosend, req)) return ESP_OK; @@ -451,7 +451,7 @@ void register_server_main_uri(httpd_handle_t server, const char *base_path) httpd_handle_t start_webserver(void) { httpd_handle_t server = NULL; - httpd_config_t config = { }; + httpd_config_t config = HTTPD_DEFAULT_CONFIG(); config.task_priority = tskIDLE_PRIORITY+3; // previously -> 2022-12-11: tskIDLE_PRIORITY+1; 2021-09-24: tskIDLE_PRIORITY+5 config.stack_size = 12288; // previously -> 2023-01-02: 32768 @@ -459,7 +459,7 @@ httpd_handle_t start_webserver(void) config.server_port = 80; config.ctrl_port = 32768; config.max_open_sockets = 5; //20210921 --> previously 7 - config.max_uri_handlers = 39; // previously 24, 20220511: 35, 20221220: 37, 2023-01-02:38 + config.max_uri_handlers = 40; // Make sure this fits all URI handlers. Memory usage in bytes: 6*max_uri_handlers config.max_resp_headers = 8; config.backlog_conn = 5; config.lru_purge_enable = true; // this cuts old connections if new ones are needed. diff --git a/code/platformio.ini b/code/platformio.ini index 38012347d..51e198625 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -19,7 +19,8 @@ [common:esp32-idf] extends = common:idf - platform = platformio/espressif32 @ 6.5.0 + ; PlatformIO releases, see https://github.com/platformio/platform-espressif32/releases + platform = platformio/espressif32 @ 6.9.0 framework = espidf lib_deps = ${common:idf.lib_deps} @@ -29,7 +30,6 @@ -DUSE_ESP32 -DUSE_ESP32_FRAMEWORK_ESP_IDF - [flags:runtime] build_flags = -Wno-nonnull-compare @@ -46,6 +46,7 @@ ;-Wshadow-compatible-local -fno-exceptions + ; The main env - default [env:esp32cam] extends = common:esp32-idf @@ -56,13 +57,14 @@ build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} ; ### Sofware options : (can be set in defines.h) + -D BOARD_ESP32CAM_AITHINKER -D ENABLE_MQTT - -D ENABLE_INFLUXDB + -D ENABLE_INFLUXDB + -D ENABLE_WEBHOOK -D ENABLE_SOFTAP board_build.partitions = partitions.csv monitor_speed = 115200 -monitor_rts = 0 -monitor_dtr = 0 + ; full standalone dev mode ; As sample, the board is nod32s instead of esp32cam (do not change nothing in fact :) @@ -77,8 +79,10 @@ build_flags = ${common:esp32-idf.build_flags} ${flags:clangtidy.build_flags} ; ### Sofware options : (can be set in defines.h) + -D BOARD_ESP32CAM_AITHINKER -D ENABLE_MQTT - -D ENABLE_INFLUXDB + -D ENABLE_INFLUXDB + -D ENABLE_WEBHOOK ;-D ENABLE_SOFTAP ; ### Debug options : ;-D DEBUG_DETAIL_ON @@ -121,8 +125,6 @@ platform_packages = ;;;;espressif/toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5 board_build.partitions = partitions.csv monitor_speed = 115200 -monitor_rts = 0 -monitor_dtr = 0 ; Activate all debug mode @@ -210,5 +212,6 @@ build_flags = ${flags:clangtidy.build_flags} ; ### Sofware options : -D ENABLE_MQTT - -D ENABLE_INFLUXDB + -D ENABLE_INFLUXDB + -D ENABLE_WEBHOOK ;-D ENABLE_SOFTAP ; disabled diff --git a/code/sdkconfig.defaults b/code/sdkconfig.defaults index e41514a16..0fe530363 100644 --- a/code/sdkconfig.defaults +++ b/code/sdkconfig.defaults @@ -135,7 +135,8 @@ CONFIG_OV7670_SUPPORT=n CONFIG_OV7725_SUPPORT=n CONFIG_NT99141_SUPPORT=n CONFIG_OV3660_SUPPORT=n -CONFIG_OV5640_SUPPORT=n +CONFIG_OV2640_SUPPORT=y +CONFIG_OV5640_SUPPORT=y CONFIG_GC2145_SUPPORT=n CONFIG_GC032A_SUPPORT=n CONFIG_GC0308_SUPPORT=n diff --git a/code/test/components/jomjol-flowcontroll/test_PointerEvalAnalogToDigitNew.cpp b/code/test/components/jomjol-flowcontroll/test_PointerEvalAnalogToDigitNew.cpp index 825298ff7..69847981b 100644 --- a/code/test/components/jomjol-flowcontroll/test_PointerEvalAnalogToDigitNew.cpp +++ b/code/test/components/jomjol-flowcontroll/test_PointerEvalAnalogToDigitNew.cpp @@ -20,7 +20,7 @@ class UnderTestCNNGeneral : public ClassFlowCNNGeneral { */ void test_analogToDigit_Standard() { - UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digital100); + UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digit100); // 4.8 is a "hanging" 5, i.e. it has not jumped over to 5.0. // A "hanging digit" should still be rounded from Transition. @@ -59,7 +59,7 @@ void test_analogToDigit_Standard() { } void test_analogToDigit_Transition() { - UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digital100); + UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digit100); // https://github.com/jomjol/AI-on-the-edge-device/issues/921#issuecomment-1222672175 // Default: dig=3.9, ana=9.7 => erg=3 diff --git a/code/test/components/jomjol-flowcontroll/test_cnnflowcontroll.cpp b/code/test/components/jomjol-flowcontroll/test_cnnflowcontroll.cpp index dac99de13..10d4a28d1 100644 --- a/code/test/components/jomjol-flowcontroll/test_cnnflowcontroll.cpp +++ b/code/test/components/jomjol-flowcontroll/test_cnnflowcontroll.cpp @@ -16,7 +16,7 @@ class UnderTestCNN : public ClassFlowCNNGeneral { */ void test_ZeigerEval() { - UnderTestCNN undertest = UnderTestCNN(nullptr, Digital100); + UnderTestCNN undertest = UnderTestCNN(nullptr, Digit100); // the 5.2 is already above 5.0 and the previous digit too (3) printf("Test 5.2, 3\n"); @@ -29,11 +29,11 @@ void test_ZeigerEval() TEST_ASSERT_EQUAL(4, undertest.PointerEvalAnalogNew(5.2, 9)); printf("Test 4.4, 9\n"); - // the 4.4 (digital100) is not above 5 and the previous digit (analog) too (9.3) + // the 4.4 (Digit100) is not above 5 and the previous digit (analog) too (9.3) TEST_ASSERT_EQUAL(4, undertest.PointerEvalAnalogNew(4.4, 9)); printf("Test 4.5, 0\n"); - // the 4.5 (digital100) is not above 5 and the previous digit (analog) too (9.6) + // the 4.5 (Digit100) is not above 5 and the previous digit (analog) too (9.6) TEST_ASSERT_EQUAL(4, undertest.PointerEvalAnalogNew(4.5, 0)); } @@ -42,7 +42,7 @@ void test_ZeigerEval() * @brief test if all combinations of digit * evaluation are running correctly * - * Desciption on call undertest.PointerEvalHybridNew(float number, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors, float digitalAnalogTransitionStart) + * Desciption on call undertest.PointerEvalHybridNew(float number, float number_of_predecessors, int eval_predecessors, bool Analog_Predecessors, float digitAnalogTransitionStart) * @param number: is the current ROI as float value from recognition * @param number_of_predecessors: is the last (lower) ROI as float from recognition * @param eval_predecessors: is the evaluated number. Sometimes a much lower value can change higer values @@ -50,16 +50,16 @@ void test_ZeigerEval() * 0.1 => 0 (eval_predecessors) * The 0 makes a 9.9 to 0 (eval_predecessors) * The 0 makes a 9.8 to 0 - * @param Analog_Predecessors false/true if the last ROI is an analog or digital ROI (default=false) + * @param Analog_Predecessors false/true if the last ROI is an analog or digit ROI (default=false) * runs in special handling because analog is much less precise - * @param digitalAnalogTransitionStart start of the transitionlogic begins on number_of_predecessor (default=9.2) + * @param digitAnalogTransitionStart start of the transitionlogic begins on number_of_predecessor (default=9.2) * * * * */ void test_ZeigerEvalHybrid() { - UnderTestCNN undertest = UnderTestCNN(nullptr, Digital100); + UnderTestCNN undertest = UnderTestCNN(nullptr, Digit100); // the 5.2 and no previous should round down printf("PointerEvalHybridNew(5.2, 0, -1)\n"); @@ -93,17 +93,17 @@ void test_ZeigerEvalHybrid() { // the 5.7 with previous and the previous >=9.5 should trunc to 5 TEST_ASSERT_EQUAL(5, undertest.PointerEvalHybridNew(5.7, 9.6, 9)); - // the 4.5 (digital100) is not above 5 and the previous digit (analog) not over Zero (9.6) + // the 4.5 (Digit100) is not above 5 and the previous digit (analog) not over Zero (9.6) TEST_ASSERT_EQUAL(4, undertest.PointerEvalHybridNew(4.5, 9.6, 0)); - // the 4.5 (digital100) is not above 5 and the previous digit (analog) not over Zero (9.6) + // the 4.5 (Digit100) is not above 5 and the previous digit (analog) not over Zero (9.6) TEST_ASSERT_EQUAL(4, undertest.PointerEvalHybridNew(4.5, 9.6, 9)); - // the 4.5 (digital100) is not above 5 and the previous digit (analog) not over Zero (9.5) + // the 4.5 (Digit100) is not above 5 and the previous digit (analog) not over Zero (9.5) TEST_ASSERT_EQUAL(4, undertest.PointerEvalHybridNew(4.5, 9.5, 9)); // 59.96889 - Pre: 58.94888 // 8.6 : 9.8 : 6.7 - // the 4.4 (digital100) is not above 5 and the previous digit (analog) not over Zero (9.5) + // the 4.4 (Digit100) is not above 5 and the previous digit (analog) not over Zero (9.5) TEST_ASSERT_EQUAL(8, undertest.PointerEvalHybridNew(8.6, 9.8, 9)); // pre = 9.9 (0.0 raw) @@ -111,7 +111,7 @@ void test_ZeigerEvalHybrid() { TEST_ASSERT_EQUAL(2, undertest.PointerEvalHybridNew(1.8, 9.0, 9)); // if a digit have an early transition and the pointer is < 9.0 - // prev (pointer) = 6.2, but on digital readout = 6.0 (prev is int parameter) + // prev (pointer) = 6.2, but on digit readout = 6.0 (prev is int parameter) // zahl = 4.6 TEST_ASSERT_EQUAL(4, undertest.PointerEvalHybridNew(4.6, 6.0, 6)); diff --git a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp index a5676b074..466d4bd63 100644 --- a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp +++ b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp @@ -37,9 +37,9 @@ std::string process_doFlow(UnderTestPost* _underTestPost) { * @brief setup flow like it runs after recognition. * * @param analog the analog recognitions as array begins with the highest ROI - * @param digits the digital regocnitions as array begins with the highest ROI - * @param digType type of the model defaults do Digital100 - * @param checkConsistency for Digital type only. Not relvant for newer models + * @param digits the digit regocnitions as array begins with the highest ROI + * @param digType type of the model defaults do Digit100 + * @param checkConsistency for Digit type only. Not relvant for newer models * @param extendedResolution the lowest ROI will directly used (9.7 => 9.7) if false 9.7 => 9 * @param decimal_shift the decimal point offset. -3 corresponds to x.yyy * @return std::string the value result @@ -162,7 +162,7 @@ void setAnalogdigitTransistionStart(UnderTestPost* _underTestPost, float _analog std::vector* NUMBERS = _underTestPost->GetNumbers(); for (int _n = 0; _n < (*NUMBERS).size(); ++_n) { ESP_LOGD(TAG, "Setting decimal shift on number: %d to %f", _n, _analogdigitTransistionStart); - (*NUMBERS)[_n]->AnalogDigitalTransitionStart = _analogdigitTransistionStart; + (*NUMBERS)[_n]->AnalogToDigitTransitionStart = _analogdigitTransistionStart; } } } diff --git a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.h b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.h index af74e05da..7ca2d076f 100644 --- a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.h +++ b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.h @@ -33,13 +33,13 @@ UnderTestPost* setUpClassFlowPostprocessing(t_CNNType digType, t_CNNType anaType * * @param analog the analog recognitions * @param digits the digit recognitions - * @param digType the digit model type (default Digital100) + * @param digType the digit model type (default Digit100) * @param checkConsistency sets property checkConsistency (default = false) * @param extendedResolution sets property extendedResolution (default = false) * @param decimal_shift set property decimal_shift (Nachkommastellen, default = 0) * @return UnderTestPost* the created testobject */ -UnderTestPost* init_do_flow(std::vector analog, std::vector digits, t_CNNType digType = Digital100, +UnderTestPost* init_do_flow(std::vector analog, std::vector digits, t_CNNType digType = Digit100, bool checkConsistency=false, bool extendedResolution=false, int decimal_shift=0); /** @@ -47,13 +47,13 @@ UnderTestPost* init_do_flow(std::vector analog, std::vector digits * * @param analog the analog recognitions * @param digits the digit recognitions - * @param digType the digit model type (default Digital100) + * @param digType the digit model type (default Digit100) * @param checkConsistency sets property checkConsistency (default = false) * @param extendedResolution sets property extendedResolution (default = false) * @param decimal_shift set property decimal_shift (Nachkommastellen, default = 0) * @return std::string the return value of do_Flow is the Value as string */ -std::string process_doFlow(std::vector analog, std::vector digits, t_CNNType digType = Digital100, +std::string process_doFlow(std::vector analog, std::vector digits, t_CNNType digType = Digit100, bool checkConsistency=false, bool extendedResolution=false, int decimal_shift=0); /** diff --git a/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp b/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp index e33ffcfa3..ace52e0cf 100644 --- a/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp +++ b/code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp @@ -20,7 +20,7 @@ void testNegative() { // extendResolution=false // da kein negativ, sollte kein Error auftreten - UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digital100, false, false, 0); + UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digit100, false, false, 0); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue); std::string result = process_doFlow(underTestPost); @@ -31,7 +31,7 @@ void testNegative() { // extendResolution=true // da negativ im Rahmen (letzte Stelle -0.2 > ergebnis), kein Error // Aber der PreValue wird gesetzt - underTestPost = init_do_flow(analogs, digits, Digital100, false, true, 0); + underTestPost = init_do_flow(analogs, digits, Digit100, false, true, 0); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue_extended); result = process_doFlow(underTestPost); @@ -42,7 +42,7 @@ void testNegative() { // extendResolution=true // Tolleranz überschritten, Error wird gesetzt, kein ReturnValue preValue_extended = 16.988; // zu groß - underTestPost = init_do_flow(analogs, digits, Digital100, false, true, 0); + underTestPost = init_do_flow(analogs, digits, Digit100, false, true, 0); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue_extended); result = process_doFlow(underTestPost); @@ -53,7 +53,7 @@ void testNegative() { // extendResolution=false // value < (preValue -.01) preValue = 17.00; // zu groß - underTestPost = init_do_flow(analogs, digits, Digital100, false, false, 0); + underTestPost = init_do_flow(analogs, digits, Digit100, false, false, 0); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue); result = process_doFlow(underTestPost); @@ -65,7 +65,7 @@ void testNegative() { // value > (preValue -.01) // ist im Rahmen der Ungenauigkeit (-1 auf letzter Stelle) preValue = 16.99; // zu groß - underTestPost = init_do_flow(analogs, digits, Digital100, false, false, 0); + underTestPost = init_do_flow(analogs, digits, Digit100, false, false, 0); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue); result = process_doFlow(underTestPost); @@ -77,7 +77,7 @@ void testNegative() { // value < preValue // Aber Prüfung abgeschaltet => kein Fehler preValue = 17.99; // zu groß - underTestPost = init_do_flow(analogs, digits, Digital100, false, false, 0); + underTestPost = init_do_flow(analogs, digits, Digit100, false, false, 0); setAllowNegatives(underTestPost, true); setPreValue(underTestPost, preValue_extended); result = process_doFlow(underTestPost); @@ -105,11 +105,11 @@ void testNegative_Issues() { // value < preValue // Prüfung eingeschaltet => Fehler preValue = 22018.09; // zu groß - UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digital100, false, false, -2); + UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digit100, false, false, -2); setAllowNegatives(underTestPost, false); setPreValue(underTestPost, preValue_extended); std::string result = process_doFlow(underTestPost); - TEST_ASSERT_EQUAL_STRING("Neg. Rate - Read: - Raw: 22017.98 - Pre: 22018.08 ", underTestPost->getReadoutError().c_str()); + TEST_ASSERT_EQUAL_STRING("Neg. Rate - Read: - Raw: 22017.98 - Pre: 22018.09 ", underTestPost->getReadoutError().c_str()); // if negativ no result any more TEST_ASSERT_EQUAL_STRING("", result.c_str()); diff --git a/code/test/components/jomjol-flowcontroll/test_flowpostprocessing.cpp b/code/test/components/jomjol-flowcontroll/test_flowpostprocessing.cpp index 64df42a65..6cfbec463 100644 --- a/code/test/components/jomjol-flowcontroll/test_flowpostprocessing.cpp +++ b/code/test/components/jomjol-flowcontroll/test_flowpostprocessing.cpp @@ -178,7 +178,7 @@ void test_doFlowPP2() { std::vector digits = { 1.0, 9.0, 9.0}; // Übergang wurde um 1 erhöht (200, statt 199) std::vector analogs = { 7.1, 4.8, 8.3}; const char* expected = "199.748"; - std::string result = process_doFlow(analogs, digits, Digital); + std::string result = process_doFlow(analogs, digits, Digit); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // Fehler bei Rolling (2002-09-09) @@ -191,15 +191,15 @@ void test_doFlowPP2() { // expected_extended= "32289.4198"; // extendResolution=false, checkConsistency=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // checkConsistency=true und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler Rolling (2022-09-10) @@ -210,20 +210,20 @@ void test_doFlowPP2() { expected_extended= "83.99401"; // checkConsistency=false - result = process_doFlow(analogs, digits, Digital100, false); + result = process_doFlow(analogs, digits, Digit100, false); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=true - result = process_doFlow(analogs, digits, Digital100, true); + result = process_doFlow(analogs, digits, Digit100, true); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true); + result = process_doFlow(analogs, digits, Digit100, false, true); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // checkConsistency=true und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true); + result = process_doFlow(analogs, digits, Digit100, false, true); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler Rolling (2022-09-10) @@ -234,16 +234,16 @@ void test_doFlowPP2() { expected_extended= "123235.6"; // checkConsistency=true - result = process_doFlow(analogs, digits, Digital100, false, false); + result = process_doFlow(analogs, digits, Digit100, false, false); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=true - result = process_doFlow(analogs, digits, Digital100, true, false); + result = process_doFlow(analogs, digits, Digit100, true, false); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true); + result = process_doFlow(analogs, digits, Digit100, false, true); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V11.2.0 @@ -254,11 +254,11 @@ void test_doFlowPP2() { expected_extended= "3249.4692"; // checkConsistency=true - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V11.2.0 @@ -269,11 +269,11 @@ void test_doFlowPP2() { expected_extended= "269.92272"; // extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, false); + result = process_doFlow(analogs, digits, Digit100, false, false); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true); + result = process_doFlow(analogs, digits, Digit100, false, true); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V11.3.1 @@ -284,11 +284,11 @@ void test_doFlowPP2() { expected_extended= "169.35935"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V12.0.1 @@ -299,11 +299,11 @@ void test_doFlowPP2() { expected_extended= "211.03555"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V12.0.1 @@ -314,11 +314,11 @@ void test_doFlowPP2() { expected_extended= "245.9386"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler bei V12.0.1 @@ -329,11 +329,11 @@ void test_doFlowPP2() { expected_extended= "245.9386"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); } @@ -346,11 +346,11 @@ void test_doFlowPP3() { const char* expected_extended= "247.2045"; // extendResolution=false - std::string result = process_doFlow(analogs, digits, Digital100, false, false, 0); + std::string result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -362,11 +362,11 @@ void test_doFlowPP3() { expected_extended= "142.92690"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -379,14 +379,14 @@ void test_doFlowPP3() { expected_extended= "170.05287"; // extendResolution=false - UnderTestPost* undertestPost = init_do_flow(analogs, digits, Digital100, false, false, -3); + UnderTestPost* undertestPost = init_do_flow(analogs, digits, Digit100, false, false, -3); setAnalogdigitTransistionStart(undertestPost, 7.7); result = process_doFlow(undertestPost); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); delete undertestPost; // checkConsistency=false und extendResolution=true - undertestPost = init_do_flow(analogs, digits, Digital100, false, true, -3); + undertestPost = init_do_flow(analogs, digits, Digit100, false, true, -3); setAnalogdigitTransistionStart(undertestPost, 7.7); result = process_doFlow(undertestPost); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -400,11 +400,11 @@ void test_doFlowPP3() { expected_extended= "91.88174"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -416,11 +416,11 @@ void test_doFlowPP3() { expected_extended= "92.38320"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler V11.3.0 @@ -431,11 +431,11 @@ void test_doFlowPP3() { expected_extended= "7472.7594"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler V12.0.1 @@ -446,11 +446,11 @@ void test_doFlowPP3() { expected_extended= "577.86490"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -462,11 +462,11 @@ void test_doFlowPP3() { expected_extended= "211.03580"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler V12.0.1 @@ -477,11 +477,11 @@ void test_doFlowPP3() { expected_extended= "126.9231"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, 0); + result = process_doFlow(analogs, digits, Digit100, false, false, 0); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, 0); + result = process_doFlow(analogs, digits, Digit100, false, true, 0); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler V12.0.1 @@ -492,11 +492,11 @@ void test_doFlowPP3() { expected_extended= "386.05672"; // extendResolution=false - result = process_doFlow(analogs, digits, Digital100, false, false, -3); + result = process_doFlow(analogs, digits, Digit100, false, false, -3); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true, -3); + result = process_doFlow(analogs, digits, Digit100, false, true, -3); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); // Fehler V12.0.1 @@ -508,14 +508,14 @@ void test_doFlowPP3() { expected_extended= "171.24178"; // extendResolution=false - undertestPost = init_do_flow(analogs, digits, Digital100, false, false, -3); + undertestPost = init_do_flow(analogs, digits, Digit100, false, false, -3); setAnalogdigitTransistionStart(undertestPost, 7.7); result = process_doFlow(undertestPost); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); delete undertestPost; // checkConsistency=false und extendResolution=true - undertestPost = init_do_flow(analogs, digits, Digital100, false, true, -3); + undertestPost = init_do_flow(analogs, digits, Digit100, false, true, -3); setAnalogdigitTransistionStart(undertestPost, 7.7); result = process_doFlow(undertestPost); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); @@ -533,11 +533,11 @@ void test_doFlowPP4() { const char* expected_extended= "717.01658"; // extendResolution=false - std::string result = process_doFlow(analogs, digits, Digital100, false, false); + std::string result = process_doFlow(analogs, digits, Digit100, false, false); TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); // checkConsistency=false und extendResolution=true - result = process_doFlow(analogs, digits, Digital100, false, true); + result = process_doFlow(analogs, digits, Digit100, false, true); TEST_ASSERT_EQUAL_STRING(expected_extended, result.c_str()); } diff --git a/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp b/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp index 6ee19aceb..410b2f7a2 100644 --- a/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp +++ b/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp @@ -5,7 +5,7 @@ void test_getReadoutRawString() { // no ROIs setted up - UnderTestPost* _undertestPost = setUpClassFlowPostprocessing(Digital100, Analogue100); + UnderTestPost* _undertestPost = setUpClassFlowPostprocessing(Digit100, Analogue100); string result = _undertestPost->flowAnalog->getReadoutRawString(0); TEST_ASSERT_EQUAL_STRING("", result.c_str()); diff --git a/code/test/components/jomjol_mqtt/test_server_mqtt.cpp b/code/test/components/jomjol_mqtt/test_server_mqtt.cpp new file mode 100644 index 000000000..e59b12254 --- /dev/null +++ b/code/test/components/jomjol_mqtt/test_server_mqtt.cpp @@ -0,0 +1,22 @@ +#include +#include + +void test_createNodeId() +{ + std::string topic = "watermeter"; + TEST_ASSERT_EQUAL_STRING("watermeter", createNodeId(topic).c_str()); + + topic = "/watermeter"; + TEST_ASSERT_EQUAL_STRING("watermeter", createNodeId(topic).c_str()); + + topic = "home/test/watermeter"; + TEST_ASSERT_EQUAL_STRING("watermeter", createNodeId(topic).c_str()); + + topic = "home/test/subtopic/something/test/watermeter"; + TEST_ASSERT_EQUAL_STRING("watermeter", createNodeId(topic).c_str()); +} + +void test_mqtt() +{ + test_createNodeId(); +} \ No newline at end of file diff --git a/code/test/components/openmetrics/test_openmetrics.cpp b/code/test/components/openmetrics/test_openmetrics.cpp new file mode 100644 index 000000000..00600cd47 --- /dev/null +++ b/code/test/components/openmetrics/test_openmetrics.cpp @@ -0,0 +1,65 @@ +#include +#include + +void test_createMetric() +{ + // simple happy path + const char *expected = "# HELP metric_name short description\n# TYPE metric_name gauge\nmetric_name 123.456\n"; + std::string result = createMetric("metric_name", "short description", "gauge", "123.456"); + TEST_ASSERT_EQUAL_STRING(expected, result.c_str()); +} + +/** + * test the replaceString function as it's a dependency to sanitize sequence names + */ +void test_replaceString() +{ + std::string sample = "hello\\world\\"; + replaceAll(sample, "\\", ""); + TEST_ASSERT_EQUAL_STRING("helloworld", sample.c_str()); + + sample = "hello\"world\""; + replaceAll(sample, "\"", ""); + TEST_ASSERT_EQUAL_STRING("helloworld", sample.c_str()); + + sample = "hello\nworld\n"; + replaceAll(sample, "\n", ""); + TEST_ASSERT_EQUAL_STRING("helloworld", sample.c_str()); + + sample = "\\\\\\\\\\\\\\\\\\hello\\world\\\\\\\\\\\\\\\\\\\\"; + replaceAll(sample, "\\", ""); + TEST_ASSERT_EQUAL_STRING("helloworld", sample.c_str()); +} + +void test_createSequenceMetrics() +{ + std::vector NUMBERS; + NumberPost *number_1 = new NumberPost; + number_1->name = "main"; + number_1->ReturnValue = "123.456"; + NUMBERS.push_back(number_1); + + const std::string metricNamePrefix = "ai_on_the_edge_device"; + const std::string metricName = metricNamePrefix + "_flow_value"; + + std::string expected1 = "# HELP " + metricName + " current value of meter readout\n# TYPE " + metricName + " gauge\n" + + metricName + "{sequence=\"" + number_1->name + "\"} " + number_1->ReturnValue + "\n"; + TEST_ASSERT_EQUAL_STRING(expected1.c_str(), createSequenceMetrics(metricNamePrefix, NUMBERS).c_str()); + + NumberPost *number_2 = new NumberPost; + number_2->name = "secondary"; + number_2->ReturnValue = "1.0"; + NUMBERS.push_back(number_2); + + std::string expected2 = "# HELP " + metricName + " current value of meter readout\n# TYPE " + metricName + " gauge\n" + + metricName + "{sequence=\"" + number_1->name + "\"} " + number_1->ReturnValue + "\n" + + metricName + "{sequence=\"" + number_2->name + "\"} " + number_2->ReturnValue + "\n"; + TEST_ASSERT_EQUAL_STRING(expected2.c_str(), createSequenceMetrics(metricNamePrefix, NUMBERS).c_str()); +} + +void test_openmetrics() +{ + test_createMetric(); + test_replaceString(); + test_createSequenceMetrics(); +} diff --git a/code/test/test_suite_flowcontroll.cpp b/code/test/test_suite_flowcontroll.cpp index f399fb297..d152f1995 100644 --- a/code/test/test_suite_flowcontroll.cpp +++ b/code/test/test_suite_flowcontroll.cpp @@ -20,7 +20,8 @@ #include "components/jomjol-flowcontroll/test_PointerEvalAnalogToDigitNew.cpp" #include "components/jomjol-flowcontroll/test_getReadoutRawString.cpp" #include "components/jomjol-flowcontroll/test_cnnflowcontroll.cpp" - +#include "components/openmetrics/test_openmetrics.cpp" +#include "components/jomjol_mqtt/test_server_mqtt.cpp" bool Init_NVS_SDCard() { @@ -151,12 +152,12 @@ extern "C" void app_main() { initGPIO(); Init_NVS_SDCard(); - esp_log_level_set("*", ESP_LOG_DEBUG); // set all components to ERROR level + esp_log_level_set("*", ESP_LOG_ERROR); // set all components to ERROR level UNITY_BEGIN(); RUN_TEST(testNegative_Issues); RUN_TEST(testNegative); - /* + RUN_TEST(test_analogToDigit_Standard); RUN_TEST(test_analogToDigit_Transition); RUN_TEST(test_doFlowPP); @@ -167,6 +168,8 @@ extern "C" void app_main() // getReadoutRawString test RUN_TEST(test_getReadoutRawString); - */ + RUN_TEST(test_openmetrics); + RUN_TEST(test_mqtt); + UNITY_END(); } diff --git a/param-docs/expert-params.txt b/param-docs/expert-params.txt index c2fe85c73..056b71288 100644 --- a/param-docs/expert-params.txt +++ b/param-docs/expert-params.txt @@ -1,8 +1,30 @@ -demo WaitBeforeTakingPicture -ImageQuality -ImageSize -FixedExposure +CamFrameSize +CamGainceiling +CamQuality +CamAutoSharpness +CamSharpness +CamSpecialEffect +CamWbMode +CamAwb +CamAwbGain +CamAec +CamAec2 +CamAeLevel +CamAecValue +CamAgc +CamAgcGain +CamBpc +CamWpc +CamRawGma +CamLenc +CamDcw +CamDenoise +CamZoom +CamZoomSize +CamZoomOffsetX +CamZoomOffsetY +demo SearchFieldX SearchFieldY AlignmentAlgo diff --git a/param-docs/parameter-pages/Alignment/FlipImageSize.md b/param-docs/parameter-pages/Alignment/FlipImageSize.md deleted file mode 100644 index 9fdc95bb8..000000000 --- a/param-docs/parameter-pages/Alignment/FlipImageSize.md +++ /dev/null @@ -1,11 +0,0 @@ -# Parameter `FlipImageSize` -Default Value: `false` - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -This parameter can be used to rotate the viewport together with the alignment rotation: -![](img/flipImageSize.png) diff --git a/param-docs/parameter-pages/Alignment/InitialMirror.md b/param-docs/parameter-pages/Alignment/InitialMirror.md deleted file mode 100644 index 072de29c8..000000000 --- a/param-docs/parameter-pages/Alignment/InitialMirror.md +++ /dev/null @@ -1,10 +0,0 @@ -# Parameter `InitialMirror` -Default Value: `false` - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Option for initially mirroring the image on the original x-axis. diff --git a/param-docs/parameter-pages/MQTT/CACert.md b/param-docs/parameter-pages/MQTT/CACert.md index 5ee45b46d..9f2fa8c4e 100644 --- a/param-docs/parameter-pages/MQTT/CACert.md +++ b/param-docs/parameter-pages/MQTT/CACert.md @@ -16,3 +16,6 @@ Usually there is a common RootCA certificate for the MQTT broker !!! Note This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! + +!!! Note + Only TLS 1.2 is supported! diff --git a/param-docs/parameter-pages/MQTT/ClientCert.md b/param-docs/parameter-pages/MQTT/ClientCert.md index 9cb49241c..83ca26f94 100644 --- a/param-docs/parameter-pages/MQTT/ClientCert.md +++ b/param-docs/parameter-pages/MQTT/ClientCert.md @@ -17,3 +17,6 @@ Usually there is a one pair of Client Certificate/Key for each client that conne !!! Note If set, `ClientKey` must be set too This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! + +!!! Note + Only TLS 1.2 is supported! diff --git a/param-docs/parameter-pages/MQTT/ClientKey.md b/param-docs/parameter-pages/MQTT/ClientKey.md index af862f088..b976ba199 100644 --- a/param-docs/parameter-pages/MQTT/ClientKey.md +++ b/param-docs/parameter-pages/MQTT/ClientKey.md @@ -17,3 +17,6 @@ Usually there is a one pair of Client Certificate/Key for each client that conne !!! Note If set, `ClientCert` must be set too This also means that you might have to change the protocol and port in [uri](https://jomjol.github.io/AI-on-the-edge-device-docs/Parameters/#parameter-uri) to `mqtts://example.com:8883`! + +!!! Note + Only TLS 1.2 is supported! diff --git a/param-docs/parameter-pages/MQTT/MainTopic.md b/param-docs/parameter-pages/MQTT/MainTopic.md index 3cf12ec25..390a3d56f 100644 --- a/param-docs/parameter-pages/MQTT/MainTopic.md +++ b/param-docs/parameter-pages/MQTT/MainTopic.md @@ -8,7 +8,7 @@ The single value will be published with the following key: `MAINTOPIC/NUMBER/RES With: - `NUMBER`: The name of the value (a meter might have more than one value). - The names get defined in the analog and digital ROI configuration (defaults to `main`). + The names get defined in the analog and digit ROI configuration (defaults to `main`). - `RESULT_TOPIC`: Automatically filled with the right name, eg. `value`, `rate`, `timestamp`, `error`, .... The general connection status can be found in `MAINTOPIC/CONNECTION`. @@ -16,3 +16,5 @@ See [MQTT Result Topics](../MQTT-API#result) for a full list of topics. !!! Note The main topic is allowed to contain `/` which can be used to split it into multiple levels, eg. `/basement/meters/watermeter/1/` if you have multiple water meters in your basement. + +The nodeId for the Home Assistant MQTT Service Discovery must follow the schema `//[/]/config`. The node_id is not configurable but derived from the `MainTopic` by stripping any but the last topic level. A `MainTopic` with the value `home/basement/watermeter` is transformed into the node_id `watermeter`, resulting in the discovery topic `homeassistant/sensor/watermeter/value/config` for the current value. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md b/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitTransitionStart.md similarity index 70% rename from param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md rename to param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitTransitionStart.md index d04831aa0..90bb4f326 100644 --- a/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitalTransitionStart.md +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.AnalogDigitTransitionStart.md @@ -1,9 +1,9 @@ -# Parameter `.AnalogDigitalTransitionStart` +# Parameter `.AnalogDigitTransitionStart` Default Value: `9.2` This can be used if you have wrong values, but the recognition of the individual ROIs are correct. Look for the start of changing of the first digit and note the analog pointer value behind. Set it here. Only used on combination of digits and analog pointers. -See [here](../Watermeter-specific-analog---digital-transition) for details. +See [here](../Watermeter-specific-analog---digit-transition) for details. Range: `6.0` .. `9.9`. diff --git a/param-docs/parameter-pages/PostProcessing/NUMBER.ChangeRateThreshold.md b/param-docs/parameter-pages/PostProcessing/NUMBER.ChangeRateThreshold.md new file mode 100644 index 000000000..9a4d0e14f --- /dev/null +++ b/param-docs/parameter-pages/PostProcessing/NUMBER.ChangeRateThreshold.md @@ -0,0 +1,25 @@ +# Parameter `.ChangeRateThreshold` +Default Value: `2` + +Range: `1` .. `9`. + +Threshold parameter for change rate detection.
+This parameter is intended to compensate for small reading fluctuations that occur when the meter does not change its value for a long time (e.g. at night) or slightly turns backwards. This can eg. happen on watermeters. + +It is only applied to the last digit of the read value (See example below). +If the read value is within PreValue +/- Threshold, no further calculation is carried out and the Value/Prevalue remains at the old value. + +Example: + + Smallest ROI provides value for 0.000x + ChangeRateThreshold = 2 + + Extended Resolution disabled: + PreValue: 123.456'7 >>> Threshold = +/- 0.000'2 + Comparative value >>> max = 123.456'9 and min = 123.456'5 + + Extended Resolution enabled: + PreValue: 123.456'78 >>> Threshold = +/- 0.000'02 + Comparative value >>> max = 123.456'80 and min = 123.456'76 + +![](img/ChangeRateThreshold.png) diff --git a/param-docs/parameter-pages/TakeImage/Aec2.md b/param-docs/parameter-pages/TakeImage/Aec2.md deleted file mode 100644 index d5489ee29..000000000 --- a/param-docs/parameter-pages/TakeImage/Aec2.md +++ /dev/null @@ -1,13 +0,0 @@ -# Parameter `Aec2` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Switch to "Auto-exposure Control 2" algorithm. This may resolve some over-exposure and under-exposure issues. diff --git a/param-docs/parameter-pages/TakeImage/Brightness.md b/param-docs/parameter-pages/TakeImage/Brightness.md deleted file mode 100644 index b5f65aa59..000000000 --- a/param-docs/parameter-pages/TakeImage/Brightness.md +++ /dev/null @@ -1,10 +0,0 @@ -# Parameter `Brightness` -Default Value: `0` - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Image Brightness (`-2` .. `2`) diff --git a/param-docs/parameter-pages/TakeImage/CamAeLevel.md b/param-docs/parameter-pages/TakeImage/CamAeLevel.md new file mode 100644 index 000000000..5a5f3c8fa --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAeLevel.md @@ -0,0 +1,22 @@ +# Parameter `CamAeLevel` + +**Auto-Exposure-Level** + +range on OV2640 (`-2` .. `2`)
+range on OV3660 and OV5640 (`-5` .. `5`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + The exposure offset for automatic exposure, lower values produce darker image. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamAec.md b/param-docs/parameter-pages/TakeImage/CamAec.md new file mode 100644 index 000000000..af30a1df1 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAec.md @@ -0,0 +1,19 @@ +# Parameter `CamAec` + +**Auto-Exposure-Control** + +- When **true**, the camera attempts to automatically control the exposure. +- When **false**, the **CamAecValue** setting is used instead. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamAec2.md b/param-docs/parameter-pages/TakeImage/CamAec2.md new file mode 100644 index 000000000..eb90c5fe0 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAec2.md @@ -0,0 +1,22 @@ +# Parameter `CamAec2` + +**Auto-Exposure-Control2** + +- When **true**, the sensor’s "night mode" is enabled, extending the range of automatic gain control. +- When **false**, the sensor’s "night mode" is disabled. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This may resolve some over-exposure and under-exposure issues. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamAecValue.md b/param-docs/parameter-pages/TakeImage/CamAecValue.md new file mode 100644 index 000000000..e070158e0 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAecValue.md @@ -0,0 +1,21 @@ +# Parameter `CamAecValue` + +**Auto-Exposure-Value** + +Range (`0` .. `1200`) + +Default Value: `160` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + Access the exposure value of the camera, higher values produce brighter images. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamAgc.md b/param-docs/parameter-pages/TakeImage/CamAgc.md new file mode 100644 index 000000000..eaa89b31c --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAgc.md @@ -0,0 +1,16 @@ +# Parameter `CamAgc` + +**Auto-Gain-Control** + +- When **true**, the camera attempts to automatically control the sensor gain, up to the value in the **CamGainceiling** property. +- When **false**, the **CamAgcGain** setting is used instead. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! diff --git a/param-docs/parameter-pages/TakeImage/CamAgcGain.md b/param-docs/parameter-pages/TakeImage/CamAgcGain.md new file mode 100644 index 000000000..d139effa1 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAgcGain.md @@ -0,0 +1,21 @@ +# Parameter `CamAgcGain` + +**Auto-Gain-Control-Value** + +Range (`0` .. `30`) + +Default Value: `15` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This is used when **CamAgc** is off. + +!!! Note + Access the gain level of the sensor, higher values produce brighter images. diff --git a/param-docs/parameter-pages/TakeImage/CamAutoSharpness.md b/param-docs/parameter-pages/TakeImage/CamAutoSharpness.md new file mode 100644 index 000000000..cd3bb27ad --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAutoSharpness.md @@ -0,0 +1,22 @@ +# Parameter `CamAutoSharpness` + +**Auto-Sharpness** + +- When **true**, the camera attempts to automatically adjusts the sharpness. +- When **false**, the **CamSharpness** setting is used instead. + +Default Value: `false` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + The OV2640 does not officially support auto sharpness, this is an experimental parameter! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamAwb.md b/param-docs/parameter-pages/TakeImage/CamAwb.md new file mode 100644 index 000000000..2bb080524 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAwb.md @@ -0,0 +1,16 @@ +# Parameter `CamAwb` + +**Auto-White-Balance** + +- When **true**, the camera attempts to automatically control white balance. +- When **false**, the **CamWbMode** setting is used instead. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! diff --git a/param-docs/parameter-pages/TakeImage/CamAwbGain.md b/param-docs/parameter-pages/TakeImage/CamAwbGain.md new file mode 100644 index 000000000..ca5ca3902 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamAwbGain.md @@ -0,0 +1,15 @@ +# Parameter `CamAwbGain` + +**Auto-White-Balance-Gain** + +- Enable/Disable **CamAwbGain** control. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! diff --git a/param-docs/parameter-pages/TakeImage/CamBpc.md b/param-docs/parameter-pages/TakeImage/CamBpc.md new file mode 100644 index 000000000..975356178 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamBpc.md @@ -0,0 +1,15 @@ +# Parameter `CamBpc` + +**Black-Pixel-Correction** + +- Enable/Disable **black point compensation**, this can make black parts of the image darker. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! diff --git a/param-docs/parameter-pages/TakeImage/CamBrightness.md b/param-docs/parameter-pages/TakeImage/CamBrightness.md new file mode 100644 index 000000000..eebd9e3cc --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamBrightness.md @@ -0,0 +1,16 @@ +# Parameter `CamBrightness` + +**Image-Brightness** + +Range (`-2` .. `2`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamColorbar.md b/param-docs/parameter-pages/TakeImage/CamColorbar.md new file mode 100644 index 000000000..f74f40fd6 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamColorbar.md @@ -0,0 +1,13 @@ +# Parameter `CamColorbar` + +**Colorbar** + +currently not implemented. + +Default Value: `false` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! diff --git a/param-docs/parameter-pages/TakeImage/AutoExposureLevel.md b/param-docs/parameter-pages/TakeImage/CamContrast.md similarity index 52% rename from param-docs/parameter-pages/TakeImage/AutoExposureLevel.md rename to param-docs/parameter-pages/TakeImage/CamContrast.md index b681bf0ff..eca0244ae 100644 --- a/param-docs/parameter-pages/TakeImage/AutoExposureLevel.md +++ b/param-docs/parameter-pages/TakeImage/CamContrast.md @@ -1,15 +1,16 @@ -# Parameter `AutoExposureLevel` +# Parameter `CamContrast` + +**Image-Contrast** + +Range (`-2` .. `2`) + Default Value: `0` +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + !!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! + After changing this parameter you need to update your reference image and alignment markers! !!! Note This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Exposure compensation. Lower values produce darker image. - -Range (`-2` .. `2`) diff --git a/param-docs/parameter-pages/TakeImage/CamDcw.md b/param-docs/parameter-pages/TakeImage/CamDcw.md new file mode 100644 index 000000000..318d71244 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamDcw.md @@ -0,0 +1,21 @@ +# Parameter `CamDcw` + +**Image-Downsize** + +- When **CamDcw** is on, the image that you receive will be the size that you requested (VGA, QQVGA, etc). +- When **CamDcw** is off, the image that you receive will be one of UXGA, SVGA, or CIF. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + + If **CamZoom** is used, this must be activated. + +!!! Note + If **CamDcw** is off, and you pick a different image size, this implicitly turns **CamDcw** back on again. diff --git a/param-docs/parameter-pages/TakeImage/CamDenoise.md b/param-docs/parameter-pages/TakeImage/CamDenoise.md new file mode 100644 index 000000000..978419640 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamDenoise.md @@ -0,0 +1,15 @@ +# Parameter `CamDenoise` + +**Image-Denoise** + +- Denoise Image, is only supported by OV3660 and OV5640 + +range on OV3660 and OV5640 (0 .. 8) + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! diff --git a/param-docs/parameter-pages/TakeImage/CamGainceiling.md b/param-docs/parameter-pages/TakeImage/CamGainceiling.md new file mode 100644 index 000000000..af7a5985a --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamGainceiling.md @@ -0,0 +1,33 @@ +# Parameter `CamGainceiling` + +**Gain-Ceiling** + +Available options: + +- `x2` +- `x4` +- `x8` +- `x16` +- `x32` +- `x64` +- `x128` + +Default Value for ov2640: `x4`
+Default Value for ov5640: `x8` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + A higher gain means that the sensor has a greater response to light, but also makes sensor noise more visible. + + This is used when **CamAgc** is on. + +!!! Note + The **Gain** is an analog multiplier applied to the raw sensor data.
+ The **Ceiling** is the maximum gain value that the sensor will use. diff --git a/param-docs/parameter-pages/TakeImage/CamHmirror.md b/param-docs/parameter-pages/TakeImage/CamHmirror.md new file mode 100644 index 000000000..d6c59127b --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamHmirror.md @@ -0,0 +1,16 @@ +# Parameter `CamHmirror` + +**Mirror-Image** + +- When **true**, the camera image is mirrored left-to-right. + +Default Value: `false` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamLenc.md b/param-docs/parameter-pages/TakeImage/CamLenc.md new file mode 100644 index 000000000..54e6d9ff5 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamLenc.md @@ -0,0 +1,18 @@ +# Parameter `CamLenc` + +**Lens-Correction** + +- Enable/Disable lens correction. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This can help compensate for light fall-off at the edge of the sensor area. diff --git a/param-docs/parameter-pages/TakeImage/CamQuality.md b/param-docs/parameter-pages/TakeImage/CamQuality.md new file mode 100644 index 000000000..db2777674 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamQuality.md @@ -0,0 +1,22 @@ +# Parameter `CamQuality` + +**Image-Quality** + +Range (`8` .. `63`) + +Default Value: `10` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + + Value below 10 could result in system instabilities! + +!!! Note + Quality index for pictures: `8` (highest quality) ... `63` (lowest quality) + + This is similar to the quality setting when exporting a jpeg image from photo editing software. diff --git a/param-docs/parameter-pages/TakeImage/CamRawGma.md b/param-docs/parameter-pages/TakeImage/CamRawGma.md new file mode 100644 index 000000000..cff99f0ca --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamRawGma.md @@ -0,0 +1,21 @@ +# Parameter `CamRawGma` + +**Raw-Gamma** + +- Enable/Disable raw gamma mode. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + The main purpose of the Gamma (GMA) function is to compensate for the non-linear characteristics of the sensor. + GMA converts the pixel values according to the Gamma curve to compensate the sensor output under different light strengths. + The non-linear gamma curve is approximately constructed with different linear functions. Raw gamma compensates the + image in the RAW domain. diff --git a/param-docs/parameter-pages/TakeImage/CamSaturation.md b/param-docs/parameter-pages/TakeImage/CamSaturation.md new file mode 100644 index 000000000..3772acd22 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamSaturation.md @@ -0,0 +1,19 @@ +# Parameter `CamSaturation` + +**Image-Saturation** + +Range (`-2` .. `2`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + Positive values increase saturation (more vibrant colors), negative values lower it (more muted colors). + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamSharpness.md b/param-docs/parameter-pages/TakeImage/CamSharpness.md new file mode 100644 index 000000000..278646f14 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamSharpness.md @@ -0,0 +1,26 @@ +# Parameter `CamSharpness` + +**Image-Sharpness** + +Range (`-2` .. `2`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + The OV2640 does not officially support sharpness, this is an experimental parameter! + +!!! Note + Positive values increase sharpness (more defined edges), negative values lower it (softer edges). + + This is used when **CamAutoSharpness** is off. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamSpecialEffect.md b/param-docs/parameter-pages/TakeImage/CamSpecialEffect.md new file mode 100644 index 000000000..35b341ca8 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamSpecialEffect.md @@ -0,0 +1,26 @@ +# Parameter `CamSpecialEffect` + +**Image-Special-Effect** + +Available options: + +- `no_effect` +- `negative` +- `grayscale` +- `red` +- `green` +- `blue` +- `retro` + +Default Value: `no_effect` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamVflip.md b/param-docs/parameter-pages/TakeImage/CamVflip.md new file mode 100644 index 000000000..4e1dea8ec --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamVflip.md @@ -0,0 +1,19 @@ +# Parameter `CamVflip` + +**Flip-Image** + +- When **true**, the camera image is flipped top-to-bottom. + +Default Value: `false` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + On some OV5640 Cameras, the image becomes reddish when Vflip is used in conjunction with the zoom function! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamWbMode.md b/param-docs/parameter-pages/TakeImage/CamWbMode.md new file mode 100644 index 000000000..458832662 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamWbMode.md @@ -0,0 +1,25 @@ +# Parameter `CamWbMode` + +**White-Balance-Mode** + +Available options: + +- `auto` +- `sunny` +- `cloudy` +- `office` +- `home` + +Default Value: `auto` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This is used when **CamAwb** is off. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamWpc.md b/param-docs/parameter-pages/TakeImage/CamWpc.md new file mode 100644 index 000000000..5349e6e1d --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamWpc.md @@ -0,0 +1,16 @@ +# Parameter `CamWpc` + +**White-Pixel-Correction** + +- Enable/Disable **white point compensation**, his can make white parts of the image whiter. + +Default Value: `true` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamZoom.md b/param-docs/parameter-pages/TakeImage/CamZoom.md new file mode 100644 index 000000000..c1d08440c --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamZoom.md @@ -0,0 +1,21 @@ +# Parameter `CamZoom` + +**Digital-Zoom** + +- Enable/Disable digital zoom. + +Default Value: `false` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + It is always zoomed into the center of the image, if **CamZoomOffsetX** and **CamZoomOffsetY** are zero. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamZoomOffsetX.md b/param-docs/parameter-pages/TakeImage/CamZoomOffsetX.md new file mode 100644 index 000000000..05acde821 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamZoomOffsetX.md @@ -0,0 +1,25 @@ +# Parameter `CamZoomOffsetX` + +**Digital-Zoom-OffsetX** + +range on OV2640 (`-480` .. `480`)
+range on OV3660 (`-704` .. `704`)
+range on OV5640 (`-960` .. `960`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + X displacement of the image from the center.
+ Positive values ​​shift the image to the right, negative values ​​to the left.
+ The maximum possible offset depends on the value of the **CamZoomSize**. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamZoomOffsetY.md b/param-docs/parameter-pages/TakeImage/CamZoomOffsetY.md new file mode 100644 index 000000000..d69f539a9 --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamZoomOffsetY.md @@ -0,0 +1,25 @@ +# Parameter `CamZoomOffsetY` + +**Digital-Zoom-OffsetY** + +range on OV2640 (`-360` .. `360`)
+range on OV3660 (`-528` .. `528`)
+range on OV5640 (`-720` .. `720`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + Y displacement of the image from the center.
+ Positive values ​​move the image up, negative values ​​move the image down.
+ The maximum possible offset depends on the value of the **CamZoomSize**. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/CamZoomSize.md b/param-docs/parameter-pages/TakeImage/CamZoomSize.md new file mode 100644 index 000000000..3a9f540bb --- /dev/null +++ b/param-docs/parameter-pages/TakeImage/CamZoomSize.md @@ -0,0 +1,23 @@ +# Parameter `CamZoomSize` + +**Digital-Zoom-Size** + +range on OV2640 (`0` .. `29`)
+range on OV3660 (`0` .. `43`)
+range on OV5640 (`0` .. `59`) + +Default Value: `0` + +See [here](../datasheets/Camera.ov2640_ds_1.8_.pdf) for the ov2640 camera datasheet.
+See [here](../datasheets/OV5640_datasheet.pdf) for the ov5640 camera datasheet. + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! + + After changing this parameter you need to update your reference image and alignment markers! + +!!! Note + Zoom factor/level of the digital zoom, the larger the value, the more it zooms in. + +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/Contrast.md b/param-docs/parameter-pages/TakeImage/Contrast.md deleted file mode 100644 index 7bc76f2f2..000000000 --- a/param-docs/parameter-pages/TakeImage/Contrast.md +++ /dev/null @@ -1,11 +0,0 @@ -# Parameter `Contrast` -Default Value: `0` - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Image Contrast (`-2` .. `2`) - diff --git a/param-docs/parameter-pages/TakeImage/Demo.md b/param-docs/parameter-pages/TakeImage/Demo.md index 4f66edf76..b34beea98 100644 --- a/param-docs/parameter-pages/TakeImage/Demo.md +++ b/param-docs/parameter-pages/TakeImage/Demo.md @@ -1,9 +1,10 @@ # Parameter `Demo` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! Enable to use demo images instead of the real camera images. Make sure to have a `/demo` folder on your SD-Card and make sure it contains the expected files! -Check [here](../Demo-Mode) for details. +Check [here](../Demo-Mode) for details. + +Default Value: `false` + +!!! Warning + This is an **Expert Parameter**! Only change it if you understand what it does! diff --git a/param-docs/parameter-pages/TakeImage/FixedExposure.md b/param-docs/parameter-pages/TakeImage/FixedExposure.md deleted file mode 100644 index 7db1c4051..000000000 --- a/param-docs/parameter-pages/TakeImage/FixedExposure.md +++ /dev/null @@ -1,13 +0,0 @@ -# Parameter `FixedExposure` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Fixes the illumination setting of camera at the startup and uses this later -> Individual round is faster. diff --git a/param-docs/parameter-pages/TakeImage/Grayscale.md b/param-docs/parameter-pages/TakeImage/Grayscale.md deleted file mode 100644 index 5eca929ae..000000000 --- a/param-docs/parameter-pages/TakeImage/Grayscale.md +++ /dev/null @@ -1,13 +0,0 @@ -# Parameter `Grayscale` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Produces black and white image. diff --git a/param-docs/parameter-pages/TakeImage/ImageQuality.md b/param-docs/parameter-pages/TakeImage/ImageQuality.md deleted file mode 100644 index 7f5c4c09f..000000000 --- a/param-docs/parameter-pages/TakeImage/ImageQuality.md +++ /dev/null @@ -1,10 +0,0 @@ -# Parameter `ImageQuality` -Default Value: `12` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -Quality index for pictures: `8` (highest quality) ... `63` (lowest quality) - -!!! Warning - Value below 12 could result in system instabilities! diff --git a/param-docs/parameter-pages/TakeImage/ImageSize.md b/param-docs/parameter-pages/TakeImage/ImageSize.md deleted file mode 100644 index 73531f3c8..000000000 --- a/param-docs/parameter-pages/TakeImage/ImageSize.md +++ /dev/null @@ -1,12 +0,0 @@ -# Parameter `ImageSize` -Default Value: `VGA` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -Size of the camera picture. - -Available options: - -- `VGA` (640 x 480 pixel) -- `QVGA` (320 x 240 pixel) diff --git a/param-docs/parameter-pages/TakeImage/LEDIntensity.md b/param-docs/parameter-pages/TakeImage/LEDIntensity.md index 56e75827c..29589e857 100644 --- a/param-docs/parameter-pages/TakeImage/LEDIntensity.md +++ b/param-docs/parameter-pages/TakeImage/LEDIntensity.md @@ -1,10 +1,11 @@ # Parameter `LEDIntensity` -Default Value: `50` -!!! Note - This parameter can also be set on the Reference Image configuration page! +Set the Flash LED Intensity: (`0` .. `100`) + +Default Value: `50` !!! Note After changing this parameter you need to update your reference image and alignment markers! -Set the Flash LED Intensity: (`0` .. `100`) +!!! Note + This parameter can also be set on the Reference Image configuration page! diff --git a/param-docs/parameter-pages/TakeImage/Negative.md b/param-docs/parameter-pages/TakeImage/Negative.md deleted file mode 100644 index e0dc675c3..000000000 --- a/param-docs/parameter-pages/TakeImage/Negative.md +++ /dev/null @@ -1,13 +0,0 @@ -# Parameter `Negative` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Inverts the colors. diff --git a/param-docs/parameter-pages/TakeImage/RawImagesLocation.md b/param-docs/parameter-pages/TakeImage/RawImagesLocation.md index 0b53a93c0..6b48a120d 100644 --- a/param-docs/parameter-pages/TakeImage/RawImagesLocation.md +++ b/param-docs/parameter-pages/TakeImage/RawImagesLocation.md @@ -1,7 +1,8 @@ # Parameter `RawImagesLocation` -Default Value: `/log/source` Location on the SD-Card to store the raw images. +Default Value: `/log/source` + !!! Warning A SD-Card has limited write cycles. Since the device does not do [Wear Leveling](https://en.wikipedia.org/wiki/Wear_leveling), this can wear out your SD-Card! diff --git a/param-docs/parameter-pages/TakeImage/RawImagesRetention.md b/param-docs/parameter-pages/TakeImage/RawImagesRetention.md index e14e79bca..d06dbb5ca 100644 --- a/param-docs/parameter-pages/TakeImage/RawImagesRetention.md +++ b/param-docs/parameter-pages/TakeImage/RawImagesRetention.md @@ -1,6 +1,7 @@ # Parameter `RawImagesRetention` -Default Value: `15` + +Number of days to keep the raw images (`0` = forever) Unit: Days -Number of days to keep the raw images (`0` = forever) +Default Value: `15` diff --git a/param-docs/parameter-pages/TakeImage/Saturation.md b/param-docs/parameter-pages/TakeImage/Saturation.md deleted file mode 100644 index 34c165dd5..000000000 --- a/param-docs/parameter-pages/TakeImage/Saturation.md +++ /dev/null @@ -1,11 +0,0 @@ -# Parameter `Saturation` -Default Value: `0` - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Image Saturation (`-2` .. `2`) - diff --git a/param-docs/parameter-pages/TakeImage/Sharpness.md b/param-docs/parameter-pages/TakeImage/Sharpness.md deleted file mode 100644 index 88259fc76..000000000 --- a/param-docs/parameter-pages/TakeImage/Sharpness.md +++ /dev/null @@ -1,15 +0,0 @@ -# Parameter `Sharpness` -Default Value: `0` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Changes the sharpness of the image. Set to `-4` for auto-sharpness. - -Range (`-4` .. `3`) diff --git a/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md b/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md index f65775190..d9eeea619 100644 --- a/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md +++ b/param-docs/parameter-pages/TakeImage/WaitBeforeTakingPicture.md @@ -1,9 +1,10 @@ # Parameter `WaitBeforeTakingPicture` -Default Value: `5` + +Waiting time between switching the flash light (onboard LED) on and taking the picture. Unit: seconds +Default Value: `5` + !!! Warning This is an **Expert Parameter**! Only change it if you understand what it does! - -Waiting time between switching the flash light (onboard LED) on and taking the picture. diff --git a/param-docs/parameter-pages/TakeImage/Zoom.md b/param-docs/parameter-pages/TakeImage/Zoom.md deleted file mode 100644 index 8dc875860..000000000 --- a/param-docs/parameter-pages/TakeImage/Zoom.md +++ /dev/null @@ -1,13 +0,0 @@ -# Parameter `Zoom` -Default Value: `false` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -Crop the camera sensor frame to `ImageSize` resolution instead of scaling it down. diff --git a/param-docs/parameter-pages/TakeImage/ZoomMode.md b/param-docs/parameter-pages/TakeImage/ZoomMode.md deleted file mode 100644 index 05ac0fd48..000000000 --- a/param-docs/parameter-pages/TakeImage/ZoomMode.md +++ /dev/null @@ -1,15 +0,0 @@ -# Parameter `ZoomMode` -Default Value: `0` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -`ZoomMode` only applies when `Zoom` is enabled. -Value 0: Crop the camera sensor frame to `ImageSize` resolution. -Value 1: Scale the camera sensor frame to 800 x 600 pixels then crop it to `ImageSize` resolution. diff --git a/param-docs/parameter-pages/TakeImage/ZoomOffsetX.md b/param-docs/parameter-pages/TakeImage/ZoomOffsetX.md deleted file mode 100644 index 613c2d171..000000000 --- a/param-docs/parameter-pages/TakeImage/ZoomOffsetX.md +++ /dev/null @@ -1,14 +0,0 @@ -# Parameter `ZoomOffsetX` -Default Value: `0` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -`ZoomOffsetX` only applies when `Zoom` is enabled. -X coordinate of the crop location within the camera sensor frame. diff --git a/param-docs/parameter-pages/TakeImage/ZoomOffsetY.md b/param-docs/parameter-pages/TakeImage/ZoomOffsetY.md deleted file mode 100644 index 5880f5665..000000000 --- a/param-docs/parameter-pages/TakeImage/ZoomOffsetY.md +++ /dev/null @@ -1,14 +0,0 @@ -# Parameter `ZoomOffsetY` -Default Value: `0` - -!!! Warning - This is an **Expert Parameter**! Only change it if you understand what it does! - -!!! Note - This parameter can also be set on the Reference Image configuration page! - -!!! Note - After changing this parameter you need to update your reference image and alignment markers! - -`ZoomOffsetY` only applies when `Zoom` is enabled. -Y coordinate of the crop location within the camera sensor frame. diff --git a/param-docs/parameter-pages/Webhook/ApiKey.md b/param-docs/parameter-pages/Webhook/ApiKey.md new file mode 100644 index 000000000..79cf21615 --- /dev/null +++ b/param-docs/parameter-pages/Webhook/ApiKey.md @@ -0,0 +1,4 @@ +# Parameter `ApiKey` +Default Value: `undefined` + +ApiKey sent as Header diff --git a/param-docs/parameter-pages/Webhook/UploadImg.md b/param-docs/parameter-pages/Webhook/UploadImg.md new file mode 100644 index 000000000..fb375642f --- /dev/null +++ b/param-docs/parameter-pages/Webhook/UploadImg.md @@ -0,0 +1,8 @@ +# Parameter `UploadImg` +Default Value: `0` (`NEVER`) + +Available options: + +- `0`: `NEVER` +- `1`: `ALWAYS` +- `2`: `ON_ERROR` \ No newline at end of file diff --git a/param-docs/parameter-pages/Webhook/Uri.md b/param-docs/parameter-pages/Webhook/Uri.md new file mode 100644 index 000000000..7a08cf0bd --- /dev/null +++ b/param-docs/parameter-pages/Webhook/Uri.md @@ -0,0 +1,4 @@ +# Parameter `Uri` +Default Value: `undefined` + +URI of the HTTP Endpoint receiving requests, e.g. `http://192.168.1.1/watermeter/webhook`. diff --git a/param-docs/parameter-pages/img/ChangeRateThreshold.png b/param-docs/parameter-pages/img/ChangeRateThreshold.png new file mode 100644 index 0000000000000000000000000000000000000000..f05640e9a0199f7f2662bb70fbc2ca89e91ae8f7 GIT binary patch literal 39338 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

2eRE$2HG0wWZCBUwfes3l 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 QJVX8&+%~>drE3%NAC3(P8~^|S literal 0 HcmV?d00001 diff --git a/sd-card/config/ana-cont_1300_s2.tflite b/sd-card/config/ana-cont_1300_s2.tflite new file mode 100644 index 0000000000000000000000000000000000000000..b8b72be85887d886830bb334c15229d9bf034daf GIT binary patch literal 183756 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%0Dt$SSAowD` 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νdkW2_U}+{T#l=Z)iXSEd{ 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 z�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 Ie-M)Y0a&W*3IG5A literal 0 HcmV?d00001 diff --git a/sd-card/config/config.ini b/sd-card/config/config.ini index 6e0d1ea62..02f84a9fd 100644 --- a/sd-card/config/config.ini +++ b/sd-card/config/config.ini @@ -1,123 +1,143 @@ -[TakeImage] -;RawImagesLocation = /log/source -WaitBeforeTakingPicture = 5 -;RawImagesRetention = 15 -Brightness = 0 -Contrast = 0 -Saturation = 0 -Sharpness = 0 -LEDIntensity = 50 -ImageQuality = 12 -ImageSize = VGA -Zoom = false -ZoomMode = 0 -ZoomOffsetX = 0 -ZoomOffsetY = 0 -Grayscale = false -Negative = false -Aec2 = false -AutoExposureLevel = 0 -FixedExposure = false -Demo = false - -[Alignment] -InitialRotate = 0.0 -InitialMirror = false -SearchFieldX = 20 -SearchFieldY = 20 -AlignmentAlgo = Default -FlipImageSize = false -/config/ref0.jpg 103 271 -/config/ref1.jpg 442 142 - -[Digits] -Model = /config/dig-cont_0620_s3_q.tflite -CNNGoodThreshold = 0.5 -;ROIImagesLocation = /log/digit -;ROIImagesRetention = 3 -main.dig1 294 126 30 54 false -main.dig2 343 126 30 54 false -main.dig3 391 126 30 54 false - -[Analog] -Model = /config/ana-cont_1208_s2_q.tflite -CNNGoodThreshold = 0.5 -;ROIImagesLocation = /log/analog -;ROIImagesRetention = 3 -main.ana1 432 230 92 92 false -main.ana2 379 332 92 92 false -main.ana3 283 374 92 92 false -main.ana4 155 328 92 92 false - -[PostProcessing] -main.DecimalShift = 0 -main.AnalogDigitalTransitionStart = 9.2 -PreValueUse = true -PreValueAgeStartup = 720 -main.AllowNegativeRates = false -main.MaxRateValue = 0.05 -;main.MaxRateType = AbsoluteChange -main.ExtendedResolution = false -main.IgnoreLeadingNaN = false -ErrorMessage = true -CheckDigitIncreaseConsistency = false - -;[MQTT] -;Uri = mqtt://IP-ADRESS:1883 -;MainTopic = watermeter -;ClientID = watermeter -;user = USERNAME -;password = PASSWORD -RetainMessages = false -HomeassistantDiscovery = false -;MeterType = other -;CACert = /config/certs/RootCA.pem -;ClientCert = /config/certs/client.pem.crt -;ClientKey = /config/certs/client.pem.key - -;[InfluxDB] -;Uri = undefined -;Database = undefined -;Measurement = undefined -;user = undefined -;password = undefined - -;[InfluxDBv2] -;Uri = undefined -;Bucket = undefined -;Measurement = undefined -;Org = undefined -;Token = undefined -;main.Fieldname = undefined - -;[GPIO] -;MainTopicMQTT = wasserzaehler/GPIO -;IO0 = input disabled 10 false false -;IO1 = input disabled 10 false false -;IO3 = input disabled 10 false false -;IO4 = built-in-led disabled 10 false false -;IO12 = input-pullup disabled 10 false false -;IO13 = input-pullup disabled 10 false false -LEDType = WS2812 -LEDNumbers = 2 -LEDColor = 150 150 150 - -[AutoTimer] -AutoStart = true -Interval = 5 - -[DataLogging] -DataLogActive = true -DataFilesRetention = 3 - -[Debug] -LogLevel = 1 -LogfilesRetention = 3 - -[System] -TimeZone = CET-1CEST,M3.5.0,M10.5.0/3 -;TimeServer = pool.ntp.org -;Hostname = undefined -RSSIThreshold = -75 -CPUFrequency = 160 -SetupMode = true +[TakeImage] +;RawImagesLocation = /log/source +;RawImagesRetention = 15 +WaitBeforeTakingPicture = 2 +CamGainceiling = x8 +CamQuality = 10 +CamBrightness = 0 +CamContrast = 0 +CamSaturation = 0 +CamSharpness = 0 +CamAutoSharpness = false +CamSpecialEffect = no_effect +CamWbMode = auto +CamAwb = true +CamAwbGain = true +CamAec = true +CamAec2 = true +CamAeLevel = 2 +CamAecValue = 600 +CamAgc = true +CamAgcGain = 8 +CamBpc = true +CamWpc = true +CamRawGma = true +CamLenc = true +CamHmirror = false +CamVflip = false +CamDcw = true +CamDenoise = 0 +CamZoom = false +CamZoomOffsetX = 0 +CamZoomOffsetY = 0 +CamZoomSize = 0 +LEDIntensity = 50 +Demo = false + +[Alignment] +InitialRotate = 0.0 +InitialMirror = false +SearchFieldX = 20 +SearchFieldY = 20 +AlignmentAlgo = Default +FlipImageSize = false +/config/ref0.jpg 103 271 +/config/ref1.jpg 442 142 + +[Digits] +Model = /config/dig-cont_0710_s3_q.tflite +CNNGoodThreshold = 0.5 +;ROIImagesLocation = /log/digit +;ROIImagesRetention = 3 +main.dig1 294 126 30 54 false +main.dig2 343 126 30 54 false +main.dig3 391 126 30 54 false + +[Analog] +Model = /config/ana-cont_1300_s2.tflite +CNNGoodThreshold = 0.5 +;ROIImagesLocation = /log/analog +;ROIImagesRetention = 3 +main.ana1 432 230 92 92 false +main.ana2 379 332 92 92 false +main.ana3 283 374 92 92 false +main.ana4 155 328 92 92 false + +[PostProcessing] +main.DecimalShift = 0 +main.AnalogDigitTransitionStart = 9.2 +main.ChangeRateThreshold = 2 +PreValueUse = true +PreValueAgeStartup = 720 +main.AllowNegativeRates = false +main.MaxRateValue = 0.05 +;main.MaxRateType = AbsoluteChange +main.ExtendedResolution = false +main.IgnoreLeadingNaN = false +ErrorMessage = true +CheckDigitIncreaseConsistency = false + +;[MQTT] +;Uri = mqtt://IP-ADRESS:1883 +;MainTopic = watermeter +;ClientID = watermeter +;user = USERNAME +;password = PASSWORD +RetainMessages = false +HomeassistantDiscovery = false +;MeterType = other +;CACert = /config/certs/RootCA.pem +;ClientCert = /config/certs/client.pem.crt +;ClientKey = /config/certs/client.pem.key + +;[InfluxDB] +;Uri = undefined +;Database = undefined +;Measurement = undefined +;user = undefined +;password = undefined + +;[InfluxDBv2] +;Uri = undefined +;Bucket = undefined +;Measurement = undefined +;Org = undefined +;Token = undefined +;main.Fieldname = undefined + +;[Webhook] +;Uri = undefined +;ApiKey = undefined +;UploadImg = 0 + +;[GPIO] +;MainTopicMQTT = wasserzaehler/GPIO +;IO0 = input disabled 10 false false +;IO1 = input disabled 10 false false +;IO3 = input disabled 10 false false +;IO4 = built-in-led disabled 10 false false +;IO12 = input-pullup disabled 10 false false +;IO13 = input-pullup disabled 10 false false +LEDType = WS2812 +LEDNumbers = 2 +LEDColor = 150 150 150 + +[AutoTimer] +AutoStart = true +Interval = 5 + +[DataLogging] +DataLogActive = true +DataFilesRetention = 3 + +[Debug] +LogLevel = 1 +LogfilesRetention = 3 + +[System] +TimeZone = CET-1CEST,M3.5.0,M10.5.0/3 +;TimeServer = pool.ntp.org +;Hostname = undefined +RSSIThreshold = -75 +CPUFrequency = 160 +SetupMode = true diff --git a/sd-card/config/dig-class100-0168_s2_q.tflite b/sd-card/config/dig-class100-0168_s2_q.tflite deleted file mode 100644 index 8dd82963e2bf44bbf4a53086c4502c42a4e09978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226968 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®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 diff --git a/sd-card/config/dig-class100-0173-s2-q.tflite b/sd-card/config/dig-class100-0173-s2-q.tflite new file mode 100644 index 0000000000000000000000000000000000000000..100e2d279c8ac2f8e67f04e3ff7649d71e401ccb GIT binary patch literal 226968 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%0DHde~5 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

b^PEYTW{;{Ji$ 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 literal 0 HcmV?d00001 diff --git a/sd-card/config/dig-cont_0640_s3_q.tflite b/sd-card/config/dig-cont_0640_s3_q.tflite new file mode 100644 index 0000000000000000000000000000000000000000..41536f5231888bf2e91d55bacc225a4431726934 GIT binary patch literal 315504 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�-+0XOAoyH_iK!d7+-*KPMM+yz%8U=T` zK&?KJlA`hH$JoQ&{BK|re@LhimXIU8B!Wq%Okz1(evI*XU_itaL@!n1sc#=GB+asK zzPju##8sqlsGp}+fJUJEFKwMcsls>b&oDWk;>PRK;%@vQae2SK;?oL34=l`+jM}VI zbCgs@XVrR7-c&){*(HA-2WC+x2?J901A+-hLu0xlR{|)$IkcjmwM-I1OcZA*J#MPp z2AA55JuM-_brO`sVy!V{NuXqbM>9L2v$wuS6GMHKi8aV(xs#r%!9r*1pCV*K!);AX zl`Tf8WKwT}+0n3-@bgA1S!@hF0aqa~$6_v3LM~X3dU^iwlYD!07anjXB13{tmct_) zHo$px_(PI1cko}u{g{shL|8iMn7b#&=jhFu_n-aNyP!9`cFAc8yF*VFV5I_@QEb80{77 zT?1H8MA**}kt<+r1zY>^9>MD!!qH-;e?P}T)ABs?ZsI!@|F3s93wER9&O6 z0EBI*#Q$rSspm4+apTgcs87%3-jn-Sa$?I|x zek>y`9VVQV%vo%LZ^?wH7B~!7<29%+H|z^ma&S$hf>qd|@FoBp&O6|U=zbiz@_zw=CK=bQ#~9DOdIb)-;hc0vgfW??w-6G(Fy{eS+uCUN1P zn%0&(nEM=C9%~q1l^Mh)HPhVj^mHZGHeUQZQEVoT+DNTDPuRTGjnex5e5kvA*RH%s z_u>NceU6+XRQU!7ye$NgHa%jThhu76uhYB2;br7xTrzu4n( zzJerM-0H=dG(^ohV4N`IN!i`*((~F zg?ixp*FUL|uD%3<@sGGN33c_Guw+B1%ovH5er`#3C?4a-9jONI-D5#}@SrX_9!N(V z)XcCZt4r5j0n{-2XTnTahl)X_;IRmBS^PH|{o2j?NP*MywJ}?d97qA&&W^T>nlmfA z8dr;3?!3CuD8(fJ zPm8=~t~hyCYV*uBx%L#m2E~&bHW!#2%LJBAQH;4NO3hEs6-N)9SdC5L925IQ{7w7R z{zXPCHBakK+Yvhr2h38Po)uAVvv9bWGpg|zBGB6`{3Q`JohQZ;o6D&Sk@elcVphu#WLs;IR2a7 z7Z~a7v{Qxd?TZ6ZgHysYozJMA(d4RQFsOE0$3701GqMi2YNo}{%-I6VY~wPF9$QG+ z?8gVIK@Dh7c3i7{)X$0!r7ozQ!O_I(Zo#bm=2%4Dx1b_b+5aJ|fTRZ&QQMK;yenu& z>&CV!R6FFO?W<8~BscHoA4Xc?L|2d2BRnZgQwAaJL5ZF$1h--(I4uOV&vjOC&1`O` zvv79OwAzxwR6j17zLydcr$Pq$^awUq8v{{nH2aFD)U~r#75s|$X|D*Z(X4j#Fx3x9 z)s`v~(AyP=wB3+#w7VAfZ(U8|UZ%LfQ!Cm$oy`6hHfF~h&zA=-bdI^w$L5}jE&FHI zgj8M-|MS%gnMX=Z1|;NPb0S1>A?ap|xI3}f`nv3gjY0Fa=w%f=v~uH*mn$pJyR_{$ zLQA@wkRPI-@Y^2N%5b&LZwlA=sGua~zT|z{KHo|EOI_x{JR}!#_BBNV&~&soo&n~m z864GDO3c}JtEuzkN=EUCCq|+Vk#sgF(`F1vw52J<*R&26FLG(B6#62Ryvz*H?!O0e3}2CyNC6xhU-1~aRTP_e!vqH)ip|RM)FrN^bR5c}Vg-)2 zw@Ig%(j&+OpT|(NU+?!4Ot)&VYSQfl6m_Dn>&qZFptKsmVtL2TWon#C4cpfe*Lzso zQB#O*LfWpOlGJ?UzE!6W2&N9v=N|n+*^sqyj1~b-{-kLJ=uB0p!tQ;pXb*I;Q_Dg6 z!Q7rT(|Oq3Xu(gZtB~;}G7KXiJHits(PQ-Ka19TC`1GFl?}mwVRQ`6qmS{KTzF2Vs zg8ARfrnM5eohQdrcQPSn!ftV86nWC;R(-{T0@K&}If%^@A28$*Um&ZE8|Zj#;H>kE zlat@h{BxWm9B395>!Mg$DAP5|klbfTn*V4Z& zJ|ffdT#l3I1c5#-M}4*O(D`Wd&kS!7&eQwU(T=@;A1^N4z0gJ?Pqhm6;}tE@IWkBF zTir3hW=IYji^!lw=82W7%qcXCBQg6VVphO7!=926I@w^$+ zR`W<}DFi7aJ?dlU#6yTN;tGyc6IUaA^`ueTGvvkE9Z!MBxQYqvf_e_sDYJ)_ai zRGn{Gcn`s>`MjMqUZ;4FTut+Yp{b&n;K%8%>7>JFJUhhg{F4;$x@X&Slm4}LvB z-dy|qd*mw{#vXzkG>)RxwGGx+gGH2|Qoj@+XeGEHWunt8i;xdAEuE2W04iG0Q^BZ} z-`k9J`3AI!F@zRgdYETP>4b=|tQ^0n;U{}T1GTHti*6njh%7hSy`>zGn~Vz8RRt3z z62Pe25*9-eHgE)0*jOo+VwuFJZHiA{Bw1e8X<62uWHAkuqMOf@WytV}Vi@Jbs3pC; zDGbA~pla$d30!!yLcSvx|GFDe1CzD{E!lfXjT&WHC#7MiYa{8pCRbLTv71#v?kWUP z(jIMX+z?pp{tU&49#aee6u?!7T6tB`pmpk+(!upNt6X(ihKvRJW^z4rfv*dvePilF z7HL{xzc=K$+w73PVK@I(b$+LjHV>2%SIRh(T#azNV@L^>_<8h&i-P8N1Z|scM)e zfU!!qr|x|)RFN?*HHhGhkP+Ue5nD8kh|i9Gb~d6cNh-Wlu~e?~7!>{%d|)5mpD>zu zHJIMn;^#GN8tL^y9sZb2${U&J5248qVmdEwsAGFeZbg?Z5TgR)=txG*wF2UlDXkM> z)vaf3Kzj@(5D~x8*_{C7+zbyBNG`>OYWW{}wrr)g%AGX>;b?M){BBwe4!8x$G50bn zirpv|UwTn<;DMH>L)$Ld1iEwh5rWGd=1mn!>hW~Hc$&ISm(INCwQjX|ggP0u(PQuP zUi`IBTW;jGba|C?s@H)cykehR;*Hi=-iYx1zD9ZJH+cIn9W6yE!hrxzoR8`q33-3C zmRk#Ps_K-rDzD@Rj5@U;S~yjLIo z)w=)L4~ImxZh-Yl7CAgT0@2>;dJ<)rd>OJ(`Ek|uhOIfzlk{#L`daypSq z3-5pvzjg8lwZdne%K5KTCx3ACN=NwQe^vvFhnkJO)9rui5?b$2`k))1Q}*6D>s~0P z{~&PWLR;8L-g?UY!zf#7E)=6&nMali(#wCwxqgWn9TiWhI(Q*5#?~ERrI&kEz^e^l{XiW+HIPc^=e zM|!P?yj^n~to;6esPsHrV3ihlS9>RwyMt4{SklBjt|fJQz-_@hqBEkfln87N@Q&B9 zwDrP)v?4eOEVDIhLgn*RxF?4f!IjlkQ+&vjqI(}SVG5~D0=uMUb!^KkKjD`nDkdm* z<1plRJ!nT#_tQRD2_^9GO0#S4?2b|9N#)T^fYq1}LE%nmjM@#nPPT0oS(BroMMX?< z_9VVK^vi-(>Kf9%&7O46%o7GS7d36ISYt+Q=;`gh-V^KO>)n7)R6R6xCaAnh^(y70p(E@|5wD3v+~U{S453XS=2kiiVAoh0%*g_ltRBs}40#^buj>R&GBjEZW88l=BL?fETzgX6 zV^V6KNS@6ts|AF7DxZY=!WVPe7IaG{g?e2!4E?m)+*6OC#HeF#$H>y?MJOg9Wi2;ZsE)oSZ8lO*b z%Houg;wG3fut6biGoTf@x;aH5p3_Q?{_TH4~^4@!! zWil%(^L~umKMoNO@ArP0$TFy^%>2FgKHp4d5F5}5x_!{KQR6ySCE(NKrhF2Tivh8^ za!`ib455V*Jm*Omq7f(?V8txeW?3PE6;@vDxJMD|wfDO+|HQ_sotnb7Wgk0IrDi*) zG%@?>R3}mIwUa!4BQPkdBk&+XY6Y1Pt(2QADSJkKc(Xv{+Y%3d?XY*Rkg8b_lER#f z4S5TKh@UJG?e|HK1Ti5@fmw|-1r*iOx+T)apbbhH2|5L;1GPwQfGBnJBv`0NMd><% zHLTZZbTV1glf>k(lq&9jwbK=m@+eiH28+3Z7O67e)Cn%qLOIx=MMqRIK>O6)wxR6- zl|0evN=>un{OGB6uJyv=gU>uuF{!n2{_bG$hHyHF8__$`W_b6Ra)-pJ03Axt^h?@)|a%J#!N&m-zv>Sc?vle5R$0d9BR` zty?&kX(dS~F(H4lUw(XG$DZG>8D$}^7eZfWJL&!0gR7C*y_~I(edNBE+LCzosohqV zn`V*!ysGVx2uV zcL|U4s3A!wBlC2+3Wd2$vrab7uqo&Eh;@8Wrv}zj^7_D5o{P~*D~sf znq`PWt&q7B)RszNSQ(RWu^zKY8)=I(943ESo$k}D9z7-3kAqT+L|0)Ep5>M_w*_i@ z;^T)l@tC?{1HAg?&I}=;XH>AIzEA@75v?_UP8I4uT@6WKjxm=kmbw+)a#j2Rv-_IN zSr!<}9wGLkJW>Fx@XX{sgM!j9Cg%VAn>^)t_MuI}aTVYxPb}XiRB9sL=hnZ71yMf< zeUOnJ?xbJ}v*YsEH4s%4+G$iW-o$0X!-yl}wT!KW*E8!Oog5QFY6z&fQxw%+ zh~4s&R;lfv9d3B=orJIm)MJBw`!V`bm)jSuiqPnV`J$Fl9|nTBmWND^UyZTL%!jr* zT@(IN*{_nbrI2=}c*mfHB(K=FjkFz+bir6+)BRCSkY5PyUT6yXaI{xcqTso3uuG@Cr9~^o1phYKju6`oNCbp<7C1bx$BuomJ zdri3CT<^+#tX=U;Ei6K0YXXv5gdQOT9mT9a%HPjAx7cU)?N zMW)=61j|=56e&wga?Bp5k43_J7%9KExC7AWBM_ZbRPjAdOI5n3?H`H7UxTfQ?r9Hd zY?!I~rfxWkiNXYVl(gR@vhLmm(SRG&<|oF3HCDl0quulE^dFzB1!Fk2BCXS^l6;>t zfS-s;;pkLB<@O4_D;6{NKlmD*!u7M95;M}F(j~2Xnp5Q+VW8m|rimY-U-J8b^DtQ~!20?XD@Uju-*ejO*vy=5Hrd|yIk@LQ>byxZH zTd{J*X3TC$lg`ENX`$v&+@T78c}HQ>MR&!=J4?oSQxGu_^CR~MzVN|R$9}Z6`NpE_ z^W9~|8{N{otY1%;%wZoAb5Raf!iQ_$7Cs|ljL+}0RJELK(*s9S@&%8udie3gk9FDO zr0R*Y^b|Mn!cTfM$;SEorM=6S$JvU}NcZOBpP=8;>N(xNj|BfJ9H)Y!5kG%@x8}+s zmNv+x&6zj2N3{ui-a+SxhN1plYM)GH6oV+TYG{pa7Wl-+W4tK)Xeh(A?K1zksbXL1 zwo7BmR-yfxp7PpYvdIpR9En5axI4TTu-bwLTs`)UEXPjA%*J+wUMpn0bgoHL8&God zycQ?{!onG5E?4F}o#m3@K9Ao@a2i`gLl_`v^>)!DL z<`aC4UI_7e2bGT{?BD*xpPt}a>fu!3ehcL`zG9pz$p#3sBX^QQW0{f2wN1<5NbliM zSuh@EbtqXtqNwHYGZ-v8vqj30X+u90ysijk{tsLwu<3}%kl}@!AW8YEsA~vl16n(Nz_ctpY@)2JaUfhh>%bDst$=4YBerT&=+OE5N-z7DB zXXSRYn5;kkiF(C>R`BaD#~Foqr70b0(+3RgorgVvR2XoQFYNZ_Rr)cUJTI^6?{sHA zTtdQ7WMZYpx$i!ekoQ|x#Z7BqT_Pp#N%`jf_yhg&Y$2%+cF3*vwt1vJHO;xU5m^l| z@2u8FVx6+3uj|&d65ULCNok}Jr29WwOZSyTEG^oVx6ajT=4V=O?Gh5!U72s$r@47g z;U(ZU(HUviOm|c(EvZny74rJpHJo;DEV#p~(dC!M+cvUB+q{)5y?cnVZ2 z(0HNd@H~GoU~o}NOU12rs5KP}OBl2zc01Mawh>Z~RklN9PB}8j5p}f3Y(p`#Cev!A zj2>FN;BF_8tp>G61XHrYu|z2qQTt|&*;D3BOv0MW#PETfE|yj6^OA|V4yu+hL<<;9 z|Gv|$TUm=%q}{C(}IT7IH!l&ahE=r>u_e%@+C0-6_1lzrte zIhN6+5Fltn*K=4Ic7~d%Qp<@PkHSE&EF_fa^tU^?Vy+R3@B8N?5yB)a<{z6FU6MMZ z@s8tcWM&vEhJYCE@XO&T)Rr~6EnV9P+ zlI)htESk!YWxluOaba(^>bTz|uz2SmYl@8LsG8cPb{gaLnX)lwZ*4oe4N2MKquG@I8ti^P~^6{&N z?yuvTGG)-hY25JU2sg?(F)bWcJTJZ<%bXH%04W=$wRgB&-k638xbW64h58vi>w9!> zg1TY3d;;f>dG4bQr!_^RYv<5w-axH$z;50`#oR35?faXZfAog;>KlETdlqd+$1AZ8 z!a8FMjAxN&Tf-KCz%bR==$Pxa^rNY&s2mYJHC&h%bT~*mBc9bJTe(1|Cp<5tRGP8_ zHEX#J?S{G|MQxpee;ba%3BgK45-sHWZ6_>=MiS))8BRnd82iPC?L^2fDZF$BCjvxr z)M_#G2sUHygpAu-W@UQxoTttj9{2=79lR!P(F82|Ksk}2R7xi$GwHOp>)Of8v|Tw1){ z$G)u9c!mxg7gqh8OiD@istFgIyH+~N0Wp__fj@DO3G1JkfsR$)Mv7UqY?SsWQ`CU> z-GUf8JV}d#^#M;J(VLScR@fSJa*;Yo5l-$MQ(H;hE6nE8Cx(<8vH3QB+sR`8+J!g$ z2`5ARs&~fNd>*zyoStN6@Ec(iw+*0NnoEqz_DhelN=-?j=Q@__x^bDLWUVmox6iKR z_Fml9Ql$!o4B=yf!>0bDQOf~hp6^UcWfpRydsQ@{OV6^R4d=%erjp6DhC?Wo=CYo+ zUMb7#!&P=JI~L+ti!aSD_3ylz<-E~Lv}mJFxqel7hUjimHL|V$r$WhfSA`?5Q`>tV z@2k$(Fy0CcfRIU-GGqK!QJXo(nbVW36Z+rVv!{8fzonRJN%8joI9oVVxV7}?i8JeK z^csucOaRbUfDLv=(jdxq@^VJXD6=|w!Z$f;~VK9NXl!AC!_x5B!;y)`I zk0kx)h1)kivC0i}=n<;|s{ayc&vA5UFMfQoBDgqfYe5&biiSc4_eTcoZT(Z*&GtJ{ z_;YDsCpj@sH6$>%wi~GYA;!D+gzCD*aNVB%=%d5WBTUNRB~7nSS}nBpR8=-K@WJxC zE9}hpdYbv^oGOiMJnRp$X8F+16b@2Ar{B(&`O8mcWwmy^Ev&pcbB8QS;=E=KfC1}_x2JRc)%Fvj35EiE(faA6c}bzOlIOH84zl1$24fGx12R>x z4tE(NQoh8czQHhj?ewHHMSkqi#52{OP6_9F^=9z?0?P}xKa(*sV+ZOj^totK5iZGw z?^G6YG(6J{;mH0TGXZ@*622lx@<06bnLBYOHDL>1bu1ltuMBo%MwRaBPq~S$g10~y zHaC9#;T<;IJLbmYy+h*O&y>||a!17)qoZH3MQ{B6#nM3sN5x%D|6q)>AZ;cT$O{EJ z$=D>b!@5md-lSnOLE7SC3v0-`BvH977#eaKo#k5GG(3VqXGBR~zK8<}7>Qcea&?3{ zX?GlDAZMC3lTG@_rn11p4`t1V5ERO1gRE~x+|2Jm?);W(3n;>k8;xIj##*#oWTX` z)uiIRM1AKCYlhK&>W!&!(S@esL(%X%2}<+HE@j;D<5RzRUQT{bz*Wv8)ZKz)By)xD z=e>EkW*ah}R~v@T7xV31rtDvaqlMEtp|sCOhLy=v&Ga8nmA{p*nJct%P%wsse`Bk@ z|5Ggg>au)wTYEA+FdOIpggSWJ<#Q6MO2^VwHHJF zU<@5xah6!mp7hq&1F^H~d7|8d*{N2}B_u=Inc9GQi&3mei*T6=* z(nvF|9~2*LHe0UD{c8%W83(C2>uLyglM~m*bBv}iUfui$t*obNv6eK!f zYmsWHmCkIQHJo*vY_D<$PLXQhAuqA=fmxnFw_c%>oY!I22~=4hCP|c&DoW-kqAA*z zr}=fH9{HThMa_VvV{ zqmCG|X0q_?6TC@AcV;~(^$+*e-!n>ttu&>3r6E8V8Ewy}Mg>jueTfF>HC&<^%|))0 zbu!1}Dg1(DfYTGgV|WeqHI#iIh8n}6pj6jlTR!DCwh)Aqb`59RPKZM}Xx?qMBD5@( zD#lnR=VUpa*2|e1B*ln4yFYF1*vEaJPD&#y_I zWLw*~=L<>n3_h@>KPUtk6^84XY56FnGQz*4e<)5uQ#Rj)Hw%j48H-f$Zzf!?;xTSK z8EqwW2xmi8=6EWaZX~5<=j-b4p!`2@$8#md!g)&%T$huZ48CZGcRDuAFWM)%U72?{ zT8Uhmts!Wz%WMtU2P_I!p*E3{RwS)>!d;6(CPc`KK%Otmo8HK{w*y+oXIyQP$zVis z0d4^nOJ#hqEJ|Xkk~OgAI-%Zd4Fr^o|A5dXrdl*=kaCh2m~}U6i;FYD6uZaG;W$I& z%PdeCtm0IIQV~lDiX6#}(EB!=*4UW7iL0OJj|WcG`Fc095$(nq-sgb~mj+Gj=6k*R z{5*hPDU6Qp>k@LT36wUw7ubrnIqN(;(yAF$R92s&=)C^XJZGzu7a2RFi@_%OThhJq ziS>-8hdiZ+H>Ld!?EXMjZ_QT&Q!zUL5W3V;6OfYXntE-Qfu7o5mf0zt10J(+6FFc$I`xZBdI$2<1ozr( zrd>$>*i*8K+dfx^pBC5HCH{D%Nb2`DS=<{uub11~7VG@lvhB8!o)__p6clr_)h5wi zh83e9O`nQ^!pvi_R7FONl%v!jBCFmz<@ISaoK-QCMafRwaUXM##9&%SZO~ew58??# zfTik#-Q8F*9RY8}%+T2WifBjVLqgH=8uQQJ#HRgOATGxe0U=d`!|oQY@pOjv)G@ZtnzeGh9t z-eX_rT61I8c(3Dw&Jsd`|8MCrhId1IhNNs7hXu_Co%8BVPLM@+6Xi{87@~>R3+Fpk zaiRHqcvtgNTE_}!LS24R4F-{c^+;SN59|}{O!@FJM{oy>}IL&UAwzsqJ-JhX* zHfsjbB`ciqT>9ts?^#dihvLDbZp69Cc-ZRPh>U)7|N1fJsNX+O#iw4ja|=oPz}k4M zxcZf^MM}464;Fh7N^@CGUW)X0xT&T_I$?1PSBPnc}sK(x>zI&94b<4c{$ za7+}k!m$fVpP2EC^9MwA$MDO)e9|EBK9pS@K_15P2Zttu!Bpp)3yv})#_&6hO(n_b zyJ{j14^?43eXv#aRfv(pfNG8mx|>4n($^Vh7ixjoLWwUN*fwFTw86YyF<$KTZ-%m= z_{!wMMJLfs$(e*_fr8QpY>gTMaBho%?1bhlygcY!&9OJ7j)P55_F<4psT!1}QaJW; zV#_XZn6@8KVav&67(FC)#QD~|R%|CXkY?)lc$ok#dPlA^2WFVHW~Y8Nn=i_W!jNM6 za5p#IK3qDm?WK0!PzqIb8}m$W;0sbydyV9ney=IXm>P=XPR5y_ks?YSJ?<1B7D*&GHv2N|cZj!r31I=t;b zqX3^NVl-YrP2bQqyCO}QlN}AKxpPqwGEm57o1!?Y9!2P#pzy=yXw8(UbA!Vxbx~-Y zzayMgszk-Cev~&)5$yoUk_o zb*i^F8_Z-RoUZ;44-IB?+8%I5Bhuk3ISO9dMi0lzP-iSZcGBpm)sD-|voi2aOhZhP z9k2&Q@MqEsCCfT&2io;!Am_qUPe@bT@I7xR8HPfnP-e&JJ`r_x*Tp-gp-%M5_ zJIou}Pb1xP8}}J;Oqt$V*4iJrbp(FrwfwEQ(a?!h$=vM(E|~NCU&R<}yHg!9-^)^bprGP( z^U#kPw-Cxf!_dcH?w3F*M@d_v za%zJ8wm>)oC7U&-UQ1B;tv+=qLq^zawG`>a+65jNE5Z~Z3j;mbbu7iw;SCN$P8~6i z0P#F_)!c8e)Kv;fmT_WyXr#+))meHdEd&{U353d(2|9};CS)B-!YEPX+OR-1952mK zB^ccf;e?it3#oAdm0-dBK3>UMlMEFMr`sX{QD!r`3?;iCD7V#6=NYC<9{u;0#%a^-6;V z1E_9b1W}J8s$!YP$%qB+E-gatQ-=w2posyTe6s`6McMi=4M51N*;yX2 zL;$r7X&(kfYTuHW-Hh;0u9^J~gc)AVk`{R_`pzZGa3Vh%4yL z(LtBnYM+Ygnz`1HkQMM7YQS%UVnywWbcln9n3 zRe<5G66&@aXKG_Gc+ zXC_PFW7H~-GO{p~N)1enR#BSbZR80uG(N^pMD5WTYf95gFmgzu%**C>#kzKb7|>yE zL&Mc!NIt7zM<^0~*9ceHMt0MVL$#s$!Cbcsk+*{OcC23UHsnV#qCZJESVuBUD=f4c zj2MBKlR+ZxwwkfJ6#{BRUC6hWf=m($@+W>SeAI^S^DhrhDdnZN&b9nK!Vij5(h|JG z3v;5KuD)J}IJ7-GplNj5&!m}zrEE`=L<&;jG?T0x9m}3?Lqvu_JMC*BPOoxMo~g35 zR_b*OJUla+D}}m61xfAaWpMl`3-gt@7EMsFB*h@_u-Re^=A&e7tBR!*h+=!VLygzi zv@9JWYh-@nkciCmh8120&Z#VFn$5h7;Kz(u!+^quL{}Zi(FP1np{ei2Nj9XX5?eAd zV=ZgKl37^ICYLm@js>d`4M!j#oAh#BYQ52%GbvCM)$50(ny;6#>@r{6dBR$QxqWGe zk5`Gy&NFOJgH|%#&gE47dB0XHVaCukUzr zt?J??4HsexgP%Q`phIA-YPJwlCZ@$Unt?JgvA@70O>O5D{rEY;m)0vpu9e^`71AKC z+3b@#qN7~SFf&z>orIN7gmEZ|MP8_fb3`%s=>Kqn74K7* zeau>r|7mBe5JQHXUD;F9XC|E4)0C?_MA#L)eKF=^5)7!v>|X6c2pI|E+!tp2S0H*K zk(1AWvx%%x$o6??MZzN~eW(o}?zK%@huIfE^(3=Ds3JoFg}giDSQUa4#26% z5vS?2URm;fZ$yDmHpA3dXN$7_NyQ`}f$WH;68tI+_W?-t1Y>8i%1lHQ z6{H@v9x|{Qx#rNtQPb!}aJAa)3r{D$(=xW?0j}Zt}bz+Fn zjgvdxjmSnj#-MX$`6Ft|dJ6U2zB}8t-p)O$%y~zYc%blG>y3>Q9{C5AP@lH9vej~0 z9eiCW!CIsr{tUW!B>R|K&m_WCZ``TF0HwJZI0=>sWv|42`Qs&RFrEK95 zat(E4RgjHPQvp9ngqHM=ELzAg$z*qh22DtC3eY?Sh{&Of0r^2vbC#unWSr3qTq-lp zjY7D@o{7v$&v`MG=;HMJD4A~W`58=Ry;6$SS1IvkkU9)oa^)#aG7gOwO7+`;uoAga zeyG|Wy;>0NB7t?Jm!4I2nG=f{Ydz&5HPKeS4LynYj_RXXLo!|Vkx@CUS%eoVbX9;btA z6qRD6x@|f>Oy6*rE*(y$GR;hg^pt_8XQJ)wAloT?X?hKG@R#+$3S?InPP$)f#f#*Kc}$C`z34 z!rPPwxBPz&G(RQ$Pol9)#=hx^7auozwx4~k*6F^O%hTj5S=JZs^M84b$NX@vo15u# zAB=3Ms?w2V?{hYek+(4Xsc$wM4X9qg^ivBxspiRvIebz=6b`?W_d0KJ$PoVoI7*0G$hYYhyyHI2CfcFQ{Z%#FiD7_6jc9ZHmX#tEtO|1 ze0u&dH&5ZVr@5i*l|HT5h{K#TvtB-0=@kkylHO_3r7N4%mXceU&vGh_hB<)BUuBvu z(u3_+mC@I66czMq8o`{5^(#{UsUR?7gEuBWdcc zINSEYbj9@*@3Db)x9wZ6MNYtNT55?DqDI(nJvv~2-u89vpNF`E{Yp8%&hoi~9;9n7 zvH7+2MpoK^?oKKA*$vL)A(O;!$)HW5Wtj{z{@^&O51%k%Yf<*Uza6_d=`9QukIesW zsiA0BuD)yP&)6lc_&^L@q{zD^wDt;-?FLn{V>xlsFR>bzOVF}rI~4o3PPUXGX$5wY z#RtIHolbpR~ZeKW6T#&I``{>YsCwtbe<{odgo)Bi1h`V;A1`#p@a5O0x{x z_;r<4C2Zupwp0NZ(alvtB|hB^R*V+Va4f>OR#k5x#??FtU4BQVjP?Ze7PA5Hx*`%m zF;%iLg@9kGcCL&i*XX)d6LFSDr4I{P*^=wT*ONSYx#7KE*9am zKBtNP;0zm;>`>^o0o{k`PWa8SJB$pEPR-F6K^{pmA$zb3b!Ht+hCsdu3)4xlQQy;( z$X0P-zEu_v)HLXWOtVex@8iOu1-3YTCE=u=U!7zVte)iB3If&EhiA76>26WgG{lCD zd~nLINfgZ`Xq&LCO&P{-_R^xV-%{b{OTLaSTul$t>!5W1i%Oe0K(QDqt8HLdd@pVA zN3>C_Uk2q!Y-(I-fl^Tyw^)`4NZJDR5gBA5@o>k8l#FE6Y-6DIcX^TT@klX#D6dqZ z$-uGL5a>EgmDZ4K!i)LiH_55&|M4{kOT@?xnDGyAlbG*K(2Et4FiDm{*KD=x3LB)1sw3Z@6Y23%e{ z5*lC(MNi7;H|=#Jp=CR+nGIgtG>hi=xf;QA3DtU)90OzzRI;@xXj^9cMX*|lhT%ZU z;;nDS?qxY0b2=pn5$5@w; zo9Cwgb(Pf~gJVGgawI(hCJUj8fc!evs2Im=)+EwL>(E9bRJfPf6ru9Tj}!$zpy=V_Iz1aWaRY&Wh5R>@3nM zKzc$?k@czSJ_jI7x?By$ppJ_Xfsu90m}iRUM>bGrOUNymAe9qi@dQAOTciP$Y040Q z(LQvy+vvPoH)N6gGf|fmcP*vNb>&UaNV;9itvb@&?!R?c$|X>zddnG zIL95V(k68;SJNggB!#)dqhPU2EAF=S_(PD#>%vv*a@)ipCsTcKH`-{1g@S!fJFm>T z%JLfKF65euI*l{i9)w4u7_M>3#+4a&nY6sy(w zc!L5KJ0@pq-t?0>p+VpG?k(=>O61JOk7YoTmztSvq&;y=n8+* z9U&)0BPWv2%`;!v6z@rD9miO-K%%jge&Qo7LW;g)(70Js7Ojx@1j(0 zCa-3$L6*%Zt8~p>e=Y0E-MwSj{L$H-&mKPhcE_x!J;W9-6 zCBDV3TAXL2C6ZA831oSMl{`n0m;T=qMT@{@_j zJEu1(gJ=J|#&ilf0@C9@&bxY|y_XE?NkJyXN{&?SemOF?6d~C*L|wz(YKW!d+`Uxj z&G6oL)%ST%p*q@wD%V_i059IQvpC!=DnVMo5vgIsP5;7g!r(3cK2E_zH_@fLrh zN88PG_x-V-o|2QZyKDxR0D8+2j*7eL6a(>A&rgimQWRtZdm2V)6p!U1JzBrObl2OX zA$#&uu?nk~QlXjw@g%jh?wP8GooaMi6jwzjgN_)9ijcLvZCguf{6_uR8`fOc`30rG zsiZ#JnqOyg5Ib#eIOpI%f{(enw|)b$r?UB+eizyAN8%WJ2{M_wI$>BWnG zWL$h<_G!V>uL-Zd@xod8`E$=&&wcYd7p}h~oc-E={0|p3=g0or<(Ew_e*L9$osr)+ z=BHl1^77<&#?O8C`tRqy^Yr)s;_S2Enfd;y- z^vNgv-+%MX7rt@M@{El!6t+)yPt7dou5qTH`jfZJ$N%5^LZXmJ|BFl_F~IwC2PcT< z2!i;XzY1a-Fc`!Ru+OvLP5g5Ze*t3PNG|~YD)7g^TfjCP{F@dSe;dptfd4aa%q3t{ z5KDl69&BG55JU#}Yhe2aVD5K+3}E~PnEONEM}Y?qMFJ@@;_t!sIv6X#JOsusf$>FP z%iw@MFn1Ho{bvy00`}iP{0x}SfpGxLYe0Mj#IFM%1atp4u(!Y%9F}+nj8}jGy-5-m z*!RH$7C@W^8@a&$71-x5fiHmgyI|WpAifD~672gX@c#@f3hcjtef|#k-#zc&y}lIK z|IdLv1?I1Uxp80pM$2V?i|=D~BS0uO`z{wp}P3yd+~|0D2naEuFJzyArw-v+)6 z%mU_~1F;b7|5w0kf&KJfd@%mMfPDz!3D^JrEEvfo?xNUyuXcU*%_#(;?+P@w(!Z>h`I~KDP4c6geP1h*W*Gz1_k!NqXVq>i>5lt5cbD_KYw==#buF3N zE`1PK;%t4%$coV4)c#@HB~EF3o@>Hq+i}gAC%CO?UTaMWo0k|ILq4R@9?sw}Mkbwx zZPbP3kyx*cV@mJ%fF6fui-A*Nn~B!1)Og0xf!V+%2`A@z-D>`9R#_UQk|fzTLWpLZ zOw_gHOjTQ6ANm?BG?H@?%M*!#ROZlhp(xEzBn5nQMZKDHwtC?^I(6KPUgy=MkUBi` zJ}dXC?&!-IZK9fThGXXED_`M}NTt+IjSl572=0H$+WBBB`7W=1q+Ao<2;m;xXCL!# z|Kb-H1*%_l|Nd>?-r^^pEmC5ULw&rLW8D6M@i9lxE#SKnNrFKp?+1rIF)S2aK&*Q` zJ#P#4~`){dl~@G zPf0V=<})ESJh$`9=&l3AczeR?|2VzpRz+m#ZdIup$#Z#gGI#ZD!* zS=)-wJb3yeH*)e@qUWUMXAAxDHX8gy7}{Q57*4wSaIw;!J$%TPZCidMbyi!+{rIUZ zG(azhnRM$`Re&@7qGE@g+ho98_cEVJ_v0IfHlo<(s3YcBEovYi8^i15RJWjV5sypR zv`i(-J$%?K?Bu-z%E=&-CLW4*YCx)e@K_O0#{=!I^O2piHhJ27>w<4$DRI7P{oZS*+JC>bLAZ=Ty#O7zNsdfNXR#(R_ayE5 z)Y#lv-WXTPmd%Z*4tN0_z&+()fHTMQUO0=$2t+2Cf zn~0zC5y!kv77iBj1GavGESTgT_`0=1SkYaHc^N$(o;s{srk%2Zp@D%S5&HLJH5aap z@ckua=F_=Qfs)Vt(4(es8rgO&$eU0%dcGy>hd75R61lSI?Ww%z*FkM-`koxQh?uJ^ z=I8~t^hT9+JfY#-bYh~-onSYhkr$kl*keYqIWMpkVv)}W{gHGV9y?t9C;3O`k%N0X ze{p9KeG<{N>0rS$QXtlQMcMPS!ac@5e|D$7jVi`xgZvkc)}o{4{{COw$+|s@frIDU zT&j0;LK9NAfA!qHsQhy6%IBB}dM@_d$#0(d@Y%0hdC(zi&qW~>MZ%PZ*Y4vyc3uec zG?aXMq@HEM-3}*;6)B=tnKjkVgDm)#tQYk((^XkV$m=QiKIu`Z@tBn87-MeVWM!A7 zpqDwY9JUGAwjOo%S6W)Hk=}Qj8);z&>xb8w9?`?*@x8(kj4yZJyYn#4_I$TtcuFKg zdbbs$#=%)7|3l+@#MGi({&MkUTlZijSuM8q><#Zs+i}PD*^poQ*4i(B*pb&^T)zsf ziS$X1zO0~3@=~7Fth`8pOZ2lE+L5L=Q_X4sT1uMzcMVoeHKv4iPuuH7cc_o#c?DLI zXTR0B@%Ev%)x$=4SPsqbU@qR5#N8@XIl>%dE|xlnX0gl3r^+(syuXS79a&MDiyYEV zq@d($NW?oX9mRvB4pS`OPt6~H=F+y+=H7NJTg}`%KJ7{*XmBHYZVN3jTLLKD6|RoQ zbGtC01Q+fT&lr`v`4=al%i3Z#S;o7@hn0$^Cg>k!IMs z_Z*Ixta8e)j39+ASnazWVBMUiCWg!Y?C>VtJeU6)XZfswxC*oG-zwY*+`0P2c);h_ zx_&(L*DLKw=XaF8T6wNeyU);*1zBce-`Z52%*Dp;=CYnu*q^DW7LEN&w{}xatxn4| zau@GB{(|RVSU<45r?(?FMV)+jX35#*jMF3Aty|Qb#C&r%MI8;II+7AgmMDQ8(4k-{ z;q2YMR#7cWE4#6}gvQ7>jmCMsXcbx7N>_SQX}EPh@;|GldYy@OYl*!a)h>u zxv!d+Cr`0CTVM2U?VI@&P^fD-)WUR@p- zaV7u-+*6A(PFgbOH~WcEEycP?^Gk%%JNrB@D&3K0ggVj+kA5qh!`8B*k!a2NUJJ>E zp@tbq1I4IARux+uZhbINnr|^z?>|hluWDcBZ18*38h8EhTlsASSu=-EmiKptH zxMb>^Gor9?Wgw**pVCRo3A5SaDNi-}yXtY!7sE^a*c)M;vc4>J-FoNfhn&J6%IDkv zYvw1felqq0C+WLCw~r)t1hd$0zmizS4=ki3pWrOtE%{qZ%HPl3O1i6mTm642de1Jo z&ht#Sa?UxY&N(-_8<7A=0HjEY5-CcyXpOC7%X94GHM2b7!^|2jjL#g)vL(}&Yz2xm zMG}$74K%tNonv)Z&N=6*U2#_qyUz9xsE@ne_kEuGzAnz&UtxAUTQbQAkO4F+A`D7DjcelO4A7e5Gp z$+VGW?(7#)I7Z)xZ4WihjVv|t*iUDc(Uh4%a!e)B8RbqLNxaxRV1klD*AkV|#AH;K zT!|FR8JCv{Ee-~A+a`XjC}lOvIRda4gRx^O8!1R5(i|*mYK&WdQ3C5hUwULbDFG8m z;#^nY;&QsIuG6ZoffuT-@ZBs=K*Q1cn^{uhMw%yBp*|tRNYoxH#UEdYbM^$Xc3)t0 zuFuUvcuW1mI?@Vegnw}es|ylYuc|c*11mT{1cUZGwgd6rrBQWcD;%HvDMq64>En>rSx-R*qeA(%ZnQYMF<&y@i?eQw;O2xy3Lz3Kg#Cp$Y_o=Fh#XAY9`JYI0P-F5?9d+4T`d)3u41e3 z`Yw8c&7h*m=dW%Jyr0M#*b9{q3Fh~IIVnh!ZmKZw3|^391>B1EfsLV2%VEv^(hOl)Rwrmxiu`a+Gq6BJAu`r3aL_*?)T=Kay= zp~!}P*bqw6+-NA=xe%2)&`|Vx<)zGZmP_pHG9YZWg^aoYio<8`Zjra_=}7bms;mwd z_jNk|>HQc!_o|seJLB|SYgmIVFD29ToYN1q8}$gQoxy|Nr0Om&yrqnd7T)N5&dh%< zgwEzwr(*h24(^{!yc4R2$KA=3=MkOto%hEAOs`DGe!04@Pniy-JLjCVnl%7T6fdDD z9ld6s64r;}?MKZ@-t-Bv4aN84_fzRYHybB?UULbt+l0H2+;{4o#N4@ z_HQcURVa)(^*zd+S6f;Ll5XrF`m`_CU0jZnlSzFYI<}abTg%97^KSTIVF$r_w!HU* zGwiS^t#Tj0rj9zoQ(7g)wVEOMHl+j2P1Uw2-0cNww`ZaoUj`zbqZ213HO?@Qx*TJ# zCLG-Q2)XeTdHzJawQ|5f5!&QMG6^4m%>wuH7;)H6dab6Gpjeb;=@r8Q3vA*jvVfxZ zT1BbM%6ZO2aZ-+CcEGL|tJTcEIr_RfO@2zV>k=-}=T8-t zJzGIqO~HDKJBg?St=fPdblFy_0YL*)AJg#rM9bfFTzssJADDXRn%_fLX>9ni!x@Ri z+GHwB@}a;a*`&pZqW*Ip!SH>W&Y0sl-EY3OG?6e&Vb2QyYkk_TJSMX1qebz$qc2Nzts+X< z%5$$DXc0vxAqUjyM3cWJG&RQ&KksqWrn!@BP)Y!x&LECzl5nGGuQ~iF{F-~|USEBU zpker$(MR*i{eiiG9kE7|86|Xhwm8z7lLUp9pf;j)y^)CN{~^_R>h~N#PrYFaduQkJ9fk%M^v;I1jHVlLG)GC(^d3-TqmnUP!PK*dBB8}jU8q0gSJB#fcQUbD zA(|2gjC7v~C-rT+af(G6*DeO}Nt@VSFH`!?VOGDFWSB|wXq}mmvpN#hd=ZaAVip-M zw~K~k1r`(S&P)_a#i7h35T+Gce}#;mv``>B!L1mpWL$Bje_piN=09fG7w^ZU3!i3L zV{v|yP&$31Hjw0n|KMJWd3~gVRazKpcw*NyS3SP~y2^4XTeMCUe5#ql5`tAI#lG20eBbL8C~CBvi7R z4l4q3%%rnT^I`?|U|*NatTT#7YW!iq6q_zYqKMT13+}P>l(Pej z7+C9%sNrHuh`tPvD)vds1!-Ss;(Qo6CHGJJTUlv( zvKmheP-ER>;7vXXCt+j4JQ+Ylc3T{dmkuQ;=5GBee!$=Km1({tDTB;qiVz}vFZZ{d z=V(T>nX?^(=N||lxFbf2B8=+R!9qaGci35_)a{tC z0XyBxr_^KDFPTA7WkhE~7i*G=3>j^uI2NbEmEGDiztV(}bn>RHX%O%Cy*TjXkMDPU zgnOu$9U2Rpfud?K^Tuthh za}RbuHI@K9&j+os>POb&`ovyybuHo(6>SNq5zaSx_OUiv z$tw>tIQdc4U<|uN>)?PolGN7^mgp6Hj^1p1(Y`=Flk0S~bSc8fsDNy7s}GH2dDTt- z6XPag{Y$MkXelL^cU`Ngl_z^I4)v?MU#%UxpH~jdpZ)WFePsK#{fX;|F7>tTlhU%_ zWbMdvKYqHodcp;d4&C8nmnxiM34?e5K@JC*fjyayF2$5HMW?6}d=lOEi^u|V`hZoS z#qMN^M&jw0heo!o;j;E}YWSk9ZxmBRhLkN)OH_Z?pHUXY^?^d75{8&OG>;pPwdk?# zRjK@^Qa>)$*PMvW8+i;JQiv}-yc!N z<4F#h!521D9R8`DTdCCP4Jd?)P-ms&G-HKMZ+K{|fiNNfK<4wB4j}?78;F;W^|ni% zh%bijV9VT^3h`|g&9dVIybbp(@=YEW#c0S-zKL4b`5zgDq!I<-=KE2I|MC{28|s0m z*s(d}n~+UjK1Y_t(YS0I{laim7QHQth=7RDD2Bw)|_b+M{dv2i$c!oq$reAIabie*j^rR1l2FF*X3ax^}#)Zn!YgtAf?p}s)J(LX6gj3+;EO)h?foffjFy)FDD{IM%gAIPVRFwxWo(=rfqL#W1z95uoi-vvKB{=3ewPGq*n1Rr>0sj#gd0V_2Kznl`-Fa??Rvj}6N= zPBGD}RmSzXrKRA(w$#qI?q?IQMl)DTeZK&bVdYXi7_k(w?tF>8@6v>MP*;q7>`V4r zDP3kW+0HRYg*qz*R{8BH$!~^jy5yJs*NYTE?ZSr=Tr%GsqL!N%l;KKl!Z|19C=%R( zXav=wzqEx08mQ@b-(E^LsbO~FtxjJRJ(^tfnya}SCrz-prRH>wWg`{S!Z@7Uu4mxg z+%qVihqK=1a*~vXIsEiU|E8n?S=%*7Syu3y91S$!uT~14M6Kn^ycdUv^=2!Eau}1X zYLg{F9yj5Jg`kjy{0vNiD#bK9VPv|eRBd9REF%S{A_06T4w}hQRRCrty`~&0t0p7O z>Fp9EBKFxaJV0omXQMSa>s%G$ciI@DDSV}Dp+S`8fi#M);*c8MVu6fKC6ER;;ia=$JUkse^u^kUp{Ob&J!B-B&{iDfil#(Kz|2qe<&RD)DP40A$egcF5^@Bt*E z)+xPBE)$4+ZJ};88JopKSqM`Ie8eC|;=W9Fn@w>N%j_D+{F8PxFxx4?!62&>_S>O4TX}_f-{EW7! z#;tKwhltJRzA{@>B!ok^VzXiO^2KW0U54cIplE1>PSO?fd`pgigyJ z3EzPlnVHMtbqO)yyw!`buz|U}r))f3{6|YZ*a$w7dbe!I4yoSrs}0TC{;eJHmwQi6 zpDkzJ`Mr7-{sa^sr>k~i)Rn+}4r_rt1e$i@)}i3p<(c}ah2$iL_epmX8jR4BMcnhB zME7dEo-F?+DU)hwh^FB_C3ZnhfA)r00^oj4LD)_i*hHFHYQsTiU&5ugAMGQx2u@2#j5 zN4M6T{bK{R8-8V8U0am_D2a-fJ5($LStW~D06886S_!>2rYekArK?Tp90iy9Ci@MH z0f`84upDTF*)>Yg(+ClFc+u_*A=>?dh#XHK#OFGJSd}zxw7-33_OQ!8eM2j(g0CiIS1@YYrxHr7z-03(K_}z z;4+~L5%ejUz~W@;a-6ir%KOf^T6c_0J!;Qz=!|Z}{J(WYt1d)z)v`x(JXs^3{FZAWd;@6DXxvMeS1c5OYa@#tTGQpZhBJ;SJVx8BsSglVh znPW5tSRCU{6zZp?lgF6XZtztM#V3dmeVjR;oD2S-KeBP@pTRXA0?n$Af)TX$B$-j* zeH&ft86Zb&8o*;8S~wM2RnFg#3$>bP^X4Q@`j`Iy(gNvJDUMG9v#RxRKw_YAVgkv8 zU`{#4^)`6#jt6E7{oVCSvd+rfC$@OQ$FZjwbf^mjbAgDs)}ziIY>8G09aTl(M^^4Y z1E~WOm!nLCn+;1hkL=c2s6qnk(qh=&a^BRTNh&;Tdbo*K;uf0G{-ev9j(crP>wP}f zVfiG8@PHtr>99z_HJ>EiLfAqtVly=c4$gO}a4yi6M|L1z*`hDgDU4PYfFTCwKg~>r zS`I|mSHc?!xpK;v2@1%OY8w_&xmwyn1ePvftu1&=$B3iJ$lh2}m0|W^>+zHuqzw9d z8C{=2nV@B4)k2ft>P4|zesT^4VgdK7LO!N`I}F!HPA0%uFQJ6O@pEjr?NIJvwThUd za;XIw)Z>kWN0OX#+I6;>dODTNG}A<+LG1+mUMqyx;}WqL9S<6rqzdL#d>VPUsnELf zz9V{1E~bDozE*GUbl8-N2JbrSNiV&*yFu1i4VI2eW7vD>t8W#}M3= zL(GKGMO;@g<>+nJDgw4@8Wz#>WNelIO9W=|@o`cPp&Vl+5feB!gIeG}2Gg^Wn&+aY zr?)vJny6IJuKt9WSV((EIdM7C!@42I4)KrXkIE4M$m_CMNPSf$~;TBP6SS^CfiHp*}rNWD({ zUz@D7$wc|F>XmqPrn?FK>X6)S`#`wz9pfYm@Jk%qDH2XI49Zb0**FmBE5!t=H7IRi zCTe9S_q2bRh@%qP_!=I7@ zIrfuW#uKhRYTmOe;>mpg6?p7-qb;5ZlRuLNqTW~On4g@%)Ofl-EFjJ?Ir<){1luYQ z1Y_eN`DNfLt^NJz@5hI~)(NN(X z7=dO^t58>WlpE7i_37@+w&r60`tSD;yOnXOBIK1&=Yp?&pObO$n^L`&hIx{ck4p1BVPGZ=!m zM1RUue8k-Ao);{}dvIU<#fP&2itNCw#ftauwV`;5}+UidOK{` zyMEZQ5jo55)>%`DhK)&hxuXn(Fxdw}aNob=jW>tKV<1YhRYQ3I@=oxS(hfOl8{t1$ zS(BK}X+Am_4S$n{P2;aMc=PG!gP_;;OO$Q*@epQv_>)t)HS27AY2$}AcMpfQSIozI zxToY$cW<@yWhk(T2i*zB@50?+{Fd8v|CqAn*lYiOv-3=4K`J^=|M?FrqJ-e|Wzq1dhD%q6iHXV?&(0lP*&gg1nXod>BP398E!={d|GTrzg)L@VV z*zydXE1V(cR2TV#1#Y^BmVce>mZH+vWZ;z`L{L$ZE9H+K;8~tw{UkwLAQFX5Dt2&z(bEC@CL`-C*>lM1BXiqCixBUs`%^(j zCQ*1|iY9>-c-PrQtZlnte~!*>MDn2fFYl9l2`#+yC_c6o!pH-Hx}>>NBecMsaFg-F zMY7xZa3fjgWQS8%f~O0CZ=asc9TzUR2Xaa0@kM+%Oq*-f@?)o`A2OJZ%(HJa4TA6v zjG&8lSXVQc#74O@sUXadYW;z{nsjjVh70lA5y9XtZgR(ZU3a$a19!P8|K=Pcn@`}w;Rpr&ekH!yvFKS$2V5( zNvFstL3%h?vTn!$3IwGa1=#pXK$Tg^4UE%4#Bq_Cyq@avXXfbSLa-KbR7ugMkmx$XsZ}$d@{ls#vtHCioC|u0WEJkd$d!5 z^$qO-H?x7xhfs`C)>rgqu$ZNl7M&<4wR(Bd-m>Q(%_#=2zkBnaVnk$Lm;J5c#bZvq zK)*fz_k*TOl%CB$(JUi|yMJS*_F%S5Y%Cj3Z3s68LqlH>iP?+elj!b#%kq#?A`lVP zeOyHkv~!LTxEdiZ3PjzgLfwPY+c?tdC}Xtw&4A z=LiT1b)Y1!MOa~(h*i$_BnV)h(Ufr5jQ|UaWwg6REMt~DD9JMWd+mMmsp=a5=? z5w1B#J|pA%lk((aU3z-}QXpkjEpdD6-_&<21@H8WnNXjn zKO3IJGPS+XM#Cjs;L0XrlK0r;pBO8lQbu{{%3pk_JnXYiaueqXdEbA+SqcJv5hEy_ zIL6-ZVyGIL07<{VK5eFDAWkGnSfl~Pl=4iCWfD@UcRfPoon{A3&Mb|%X0S;z?`l5I z^+$X9BDs8pU;na~+S9`0mB4u+c(lv95-4M~Kz)YY{@DX>49LG>c%;{D9Jwr$7-HL8 z_^k=q*yB#ujGUA5FFIgiHTrEV5xi6Y>ssQ7^_eaCbs*4f@_bSh+y|X8YuoP6bh5d| zAD^8(C}NxTlO=fe|9bczp5X72;@#@4s!Xu=6>X~nH*hwh;akrhm0t5nKi2 zNv%trVOZiGAvQqll|bVn&V4DkpG*k)I_IV+H*t0-&%^CoU;J^?qL!?{f;#GYX_0(< z2s8De0Sh1NCXw#siFCvLVT`2XQQai+eg7<11JtCW~BQ@0K8?g670mb`~p< z-rU%95|>s+1wv&~suFQPq^QR0NFoAu|*nC$Q4+2Yd< zy6>dNPj-_*gl9w09tKf3MHP#I1wEO7v(c`gQQT}NhLm@lB)ECGfzhhW~19zp^J21~(~ z?h(yR1d?*(fuY8s(BxjYOf84_twBw)t;NERApY}wkxDfVqG-gF4Rp6r(U+;lD8Me7 z)#T?uLO&s9Rk%vythKIw>O|_qbfh&kL~Czi@uPKS6_=?i6WZ#tC3t$6$JlH>XLTP{ z>gglUNL{tHodWF4KpnKgv~(1`k_Lam2p0wt6jGYI zk6<`UOSSX6TKRmHdW9UG`FZUTZt|mP13BqgPRo<0aLFJJ z3J_L6@9{BSf{Gh0z&>MG-Z;*I^|#N`m~dRzVaWQ<*hiVU3C%Pxk=sdLUJ+6F*63yA z;2|)zP?9Tz)uQr70q+@&2jCr@{&}qyVb0o7uMG51;`)UtN$$T&@d+C4vqVC;E;V2> z3e2s6Mv|SJuZ1P-9y(MLWxQh@$W08LPmF%44lbBQW$b5A4 z>QPFUoouq2dHAUs=tUk3_*|J+9LL&Tl~)0G>;7}`yzS?lMxuI>x3P-Gf(;>SjqRzE z>F${(K1dn4zZ}31+M-E)B>sYaIeXkf1bnw=EUr(;*hav+di;+2W$fmA#EzH;- zJ9>y&FMSyMwJ7_w$3iXvzxjOM{&{%AK^c92KQ~yI%3k!EpfIItN1%1(KgB{L=Uu`a zK39B%*#N%lvN=gaAgkdFdf>NI%or*nmrL;(C)N{WL}__k@eawp)SHiOA%<5vQx%xG zOC44159iXp=1aDIW!_-O4bJ1D7R9^24ccwQ0|Z603mC^h%2v(pChSbYqp1syNdI<& z3d5zkuVsTz&hK#8d!q=6Tn|Hb$eN(rn~0wCG{T{6kzuguec`*y3-un}hL ztTIE9Z^L@dg2qehvu%W^9ykt>+G;VV-Xau!<|Xc}TB7WzIvs;drX+N@0vVCG$L#xX zRr-nSN$Kky&P~f#J6~;`f7Nn8*%i*A=V#vi&t>0RdC=4!Js14%u{)80rfTi%QupA^ zxRVVtr*?b@kA^6JoMz{*ItTebnkcIP++|cDFnP^#n)n8)M@jgBM)rSk(A*|tW6*;S zC&t+1hlJe$2fQ-CBw4NyxjuFhIYi6y7!mv{R{ecMTRhE4a)ZSTG$j%vyPb54mMog` zU7%eG1EgGy+V1dcylmNyMxlz8z7DZYVspSB{@vhn`_g0fL+8GSxIL20SA2*a(fu9& zuZ8pzH%WZ#o3aT``ulfy#i`cB2EBb(@h$lda|N=R$-INAP(M_WHUD!T;+lN47+ZKG zaDQLjEFh<6`i9)Dx>C`-)`l+LpRU*nsSh^tAp5Zmk3$6d6>|)*(=vh8f<8T%Ney%> z5=6FCpgM~%l|`&BLItKS)J?z7a(AH-O4#RnG6ayBQUcFGyi&&;7QOMRKL;5 z+@M@4;caF9YTYM_g>BkQq?vohHrgtu$9c(&Pf?Z)2 zU434+*Yu_oEr3CPx@~L`QU5LFAl|n;b(HoX+k&ptl>QoD_3neN$

}!yw_KF41wm2(ldIj)B9PX|M&ITRBAsd$pfjFyZPz4kINNGD<&$8qC#0Bk_J% z_26I_P4HRhrX;O_%q&JhCAuRG7ch(vk^#Iawt>yaxovSr{%c&0S!oRBt0dkCpcVo! z8>XlmX7pN$4m~TgbGOIhnM!mYI6b%K5uH%9N#otWe0-R4oR{QyYW6%p%xg@wb5 zTX4xP=InI1xS?npJZ=yu@c>S73?>nJJT}uQOZ=RoxLq(OXSoQ>KG9>2mEq}Iyp9vr zk(4sG!=f%>lnhG;TD(#jNkC*h ziaBP6kIx84;x2JFfC-}3$G_EkFB@tW+;iR4_GFw2!;DhBb-IN!N)b}Qi319X4(}>=nC%Ss1$WR!IU1W{0*SnTXA$-+ilW)fe3DUc2~F6 zNLUzPw&fkcSL)|aPo|EiI+r+UXXMyu9yF@@lw$Rt{~Q+rXAbc{mt$IY6+VPs;mMmr z{6zS8%@lirtF5+zk4SzRt>?hNXi4U%2vp8F(4^of_&`}(&?tVSvSuW4Vdw&DU4C&l zi|w%l`$$WO3u6LqyD)Y)0h3n&l9W=@j8rvH9_Q7CpTXBAq(NC*%f$B0h^6qZ)m=d% z3Y$47V$F0D345|-K1ie#UGh=Rp%;*-zJ~l&qSipibwkh6-Xx;sx{tG&zF8=AFMsfV zWFLR%CtftXyB+xt;Qc(p2SSM4iMrRn{o>Xh&q745eeFJlK1rPn#Jjapm&#WSc~BRG zH0bPZNht27B!5<2`(R|2d88EGk(2T$8nTZwO&GBA#bauOu>v&3)9BEIoIGWnlC-g8 za_6~qFGyCY0xsL{J8OYxeNMa%c5N7EVC}h{`nb#B9b#eg^`@{?EPNwgTnqK)FsK+! z-O&Y7zjrWPeUYp8NFf7b63PJ};L-76VbxG0%hJmdT$0TxQB8kXo5kG^EF(8Dd1}!pw^Q;j&(vYjql8DJ%3MP4#bQ_pjO=R$PQ#z* z4ai-9a*PNYilP5hIZcN|J!xL|*j(l845Wc^TgU>Ly&XCvxNXE0JiBiD zwZ6`To)0due}Z|5ba!j+f?gC``JDNR1032N`qGX2)zdXQkW56^b+^)8k8qXu=moa) zs4wVW3r&9EhiZ@5r9EuW-xrS7?OXa!+eP~j>>(96^xN4_Y9j3LJs}AHc{Hm8ScZG} zGOTOp;rdyySu7$gKh(s&LmLchWtyWc_Q`a8#q9)0GNW^$dr(@A*Xs5P49KT>#6&MT z-{B9Bkho+=uV0{AuPQj&?y-x=>)y1b+saI|57UOrMwJ2uwbmX|-@|mPgwHmMd15!Y zT2MVRr>fy>q_IA2Au9Jdjz@Wh_VPVK%{6^m6HJ~GMfrUlYU)Hz_C2p|<%eRhsf+y< zi4gu z%DemRo+S`MvKAY>X6T`;2bEcj1JuTFj4p0YW@g-1m44u3^i%KP17@h$ZpiMt+O~f+ zVyM!uA08V{zrw!UB9}szr?Mu+=kWbzwN{Y!I9R6yCAmQ4P~)9vSIOn$ibtxAa^V@* z=sqB*ylUeDmr6tzE`6M4&iEaD{YL_0=M*le-&em2?^fHr0Gm<$42coye3pP<@UKjN z7Vi`8&o-3Vto!Eq#k*4>g2!v-XKO;5jfAF$;6ao#b)b)FZM#D;^F$1@bDcL7E@hnFJn(k@+g-k6M_b#i$eZ#qTUiEQa;7tX)Y-0cX3@d1%s`y8#WIMB7 z=I7D&HrX~PZ*PXq=QI{&vwv&Q^?>@v^9Z^F{NV7lg<$r^s=`MA@#lEhy+E%8P3RRl zq&i`h&Oa|SfV|IJ1VO(srXxa8m7VLQKY{LfsB5M@ak2%S)bIaF>+@d!m$%W+rEVZ} z88SpJWa7K$g%h6A5jFU?Jw3Zs?m&+Xg=ZdMzn2Oc=QeTrw^yRF;Tv3q7oeni_-9$S zUD=exB}p;rh=pwRiftt)Z%>t`Vy!$!xGh+aq^u6b5OpxMd{lzah(d~SU4%73sI%Dh zLB}FD4lBlzSA8i2{d}aTZ}ic;T^DMBo%%8Pgyz4T&u*WQ{qlWoSTuF9sJYJmu8ZR$ ztN(S(A#c%K`8I}4P!wU2hWSXxymppjEm;#^CMcN;RC)}2W9Pbi#2iWv+&)uNn{~61 z%r0f2k*+9?0`td5BPXU%8P1V;I*w%qf+D}FK9=X0fU7(^?PL}3Nb z%`qxFs@s31o5&qpLA`2Z7NY(Dm%BQ3l2*=*72Fe4x+k}Sc0Ry3qooC;t9jhcWm|&; z$NkfW;B}?^WFvTQyMi~J$IJz7mkud<%02JenN>Wcpy$8os}=&Nk@Oi%MmsouEy6pP z4)3;ImdqCjL0R4MDu}2l9t+S?%4N>mSt;>;tQ#QXkYy$^c4Y&o*5SOqxD&=E1mt!R z%bQIsd9j2#HlH0jeV#>3&4q`)*o;DiYp6@8*44e@VO(nZ;m53(W4+d0Wqms+tm_>3 z1>4@siUsIUy&)HlGVCcZK#!POq#m8U92;fyNpaQ#l}bGk?}qvsQ-99P5>)Wv;8>9S z>@QLw8uN`5AAfbMABppd)a<(`OCEtdN~*0kBL}$%2a@n-M6*c%9W|0$MrsZV@}?S# zuttd5vzYWYL71K72?|fIT~CrWe%_)b=orfHN5(`-)j= zGnojqGo)>iUr2IQ!i1qlE?h18Ph71G%YSSLyINRTtT(Lhb;y9`o*Nf5Bu8+lQpMdX z?h>#yTq)LMh4ZKC1U7iYE}buH9cjVNj5A%HU|%z zM=G#f-pe%MRldALZxPby94l8zoVI7VE-|o;^X}m`2xYOkNp^{rx!c=$tUl9e=Mi9s zaT04F8oVQaEQRjD;yr^P{1i7d0?+#oP{MnPT=vEQ&8EXXGQS$BjseZ5krgZZ)H2=G zDNhGDlPB%mdMZDY?~Nf)Eug0)IZKV9^ zV0h`oK~Cs<$HZSUb<-s699}rzH#L?$WVYm7G_F|!TZ>Ix=_)1um9Z}#Da)wVh&JeQ zD^pQA39(8y*v*Gs?>%N#`P51DGFL`xs21sD-a6!5LRDU%5wPO~m&jFx^VD~!5|T|k z^W)?2yS}=q!aP9jGDi_B#)|f@3rU`N_$?gSa#mYItx5E#Mb`&wbC+qO*>C){YDF zhi{90^2WI2zU%UCou7_iIQ&5i0U7Y78*CkrLZ%obj3;WbbjqqgQ$&!-;o&|4AF9-y zY;U(78}!hcw5}QxLKLHZSxv|m$b=Z5L`_6VP_S;kGL6Ns;S{8_<4$ZGLcqOei6`sO zzv()qn?Vp?=Eobmw`PAU-joyEi8NPNe0loPo+#zuvb=}242Q1!G;D*8^84&0FqXRP1tEBhXijk_}orV}+V)9%5W;M7Tfr}V*5Mt|;ijYN> zD8SBFjjnNFvO%#nfy_XVkFqUNs`XxaDl@OAEO!8XHd*85%L5HhdOh9=5-WRA)L50C zY%FAl``$`Rjd*RM%bLB{10XMk`8{c?d>?NVV{&2*%I}uj$aw@EaX8 zMR*#zn#vxz8WDuQz$rgXcf5Np2f+uMzZ}w)8mpRS(oqmU?Mhut%Fp-|%Z9O_mxE^{ ze%JPRB--+3aghqe2yU$y)AYrCIW@go8_s`U=Qtm{dd)--@y;9#USgdQr#-W|tA#f2&16IvK*rp;wdVeqt2eZpufEy#SC6GaPse=tWCFbhYFG^XpMCud!ZHw* zYupbmheK@b2T^Qw_)6Ih%y+G#BWCwGq((Fsn(sQ-W7(m2JjlY}tc=WaFaN@=#0mA( z@}pZiC+<2m-!BKc-r;&G`n&4t z3#sGOiY=WP4#4ko!;np3jIdugep;LR-SypNiyD!$(P-)7cw!BY)g_TxL;%MQP(W6f z|I8G$wc}p!>~X>0M)bq?Rm?A%ZePsWB~#jdf|O6mhdHjaBAI3xDVi)bj0Y0%wX`-A znF^sDOmFjikSv5EH-cz#-3nz<9q&YPB2)DUhKLZFfHX60&9=$tKlkw^q?K|rl_TrA z1-u@h%p@=2^ZWTPvkV55_YkudRQ&9V%5^aK;s=;_kCq1i>BH|_1XI5!w$kGO_{xK^ z=Ltly0g2>wF&0@aOzLGck^;YHPsC1JsRUL%nL?AxZMT2ON6U>g=*Y~%Ae%C*Mk&pM zoQxI$N6C|=6uFmcp~0sTrZga~3Tsz6;}Axn!Vzb44P`WG8{!-fVQDp9tkFW%Mja9S z2)^a0C9zT6-Js|dLH}mb`38Y3)3J=1?03*i{tqHp?|Ybs1@5tb zC!|KY(Gz?ONvPp5NTaNsy;jW@K_8x#!_iZinoq__-K+e|o36It^1;_Le&e^3`9;=D z$r=2Bft$7esVn>Ayr&k_7NbadF?{v|;DurHzaR1yZj%-xdZ9AEvB4)e(8Ri`wau{k zep_nd`?>W7vbQxbetW*v+UvSWJN;YGV7#Ug(8J`V^Nh~?HW)2j_Ycp>8DUu2thTAgWk?O8k zv}LXp2aD;UE68Llj-+^4_2Ir9|80r0D{S&Vt0yBGa-4jCIzY6uB8M#X@+Y!n#_7r? z6$f2X3-SERCq@a2VAtxePzfg#e!wG%?A!_Eg8O-#UA)%~-Nw=_hVc}I#HKqmyI^C| zs8(e=prGBQy>|54T|qH6){Cj-$D>Q_IZ#0Qomce5$!^vBu5~NEN`8pEeIH4397@i; zMjt~;KK}jr_IZkXez_G8T_)Gxc8=-$dp9@(Y|qN?G?NO5X!=KO=gy*cfI8us*r8merozKZ0U@suj0Gz&BqEk>WwUU z`-v#mM~Fydve{QK;cIvK2lpi#J<8XAs@(dw+3z1bd01C|VSf4nL0~HYvHgKV?a416PfiHoz9-SeR=ZiUYq$j&9HQP?{WWj`*PhWl(#US zD24_iQnuAEm|=z(;Be96KZa`?5Q(Qpw`W3tFxCZ5ErHZ=FR|2I1`|F!=(FR&homg4 zt|5ler9zB)8o*GF=;OwctMnN|)1_Fd&CEm)?ojQmzTUyM z=n*EA8my0}XM`8tg7AWWX-pM(se+sa@=AObSw8o#nXhU_1&rLra6wW1Vp@3OSfF3U zqgU36wXYn|K|m@mOBPoY1pH^-?Zu}%L&?uvV;JBe`@LE+)QN^QR8t5zoF+Uh1>=6S zikJZP&hB^nrFF}z(kl<{E{#R^i}& zYC|P4$PO!o+SZx%&+S+k1XG8aNA|Q5ISySnkKQm zibjySs{-;Q8LUymSZTcoky}LE0S3~Qo0!6;-&vkTDWuvhwhRm&iNT$6Wh zEX^p3zpljS|35|V{pHAcpZTH+Ip+*?188)kbDr*=95_SHa7ZzVl1R~7NwzFs+xK4I zWAE`j>peW&yFTmPwJBS&EK!mvF%F01EvqfFG&=yx;Hp zJf9CwKn{N}W;ioRCW0rQ9)H16-PjnzLK8}RPdQQe2bo({LYTK?)#V5w_L|gwvKuGY zR&?~cNBXHZ^TxDCWB!Z3ZK!DQ2wTsv>35}E#RbRT?7q3WTbr4&3_j@}7`kG+w|p9a z3z;rWz!?)ep&>*65c)f>mj;3k|4IhtMT!${9??5_;8C+pCkVu*S7 zjm}HgJjEZqa-4`uo@p~tlrl4QGm>bPz#iO$@Qbq)M^zX5-(gEA=0N*?P4qfbLF!qjH-si_KY-jRfq0R0(8VFzeF8-yBn!!c{QbxJL)afH`zNA%-~mK^7)~O?liai zu98>0NA{`{+tn!LibG}o3NYT{;ZYE-74_BI$_aDIPLmiUf}4!x^6 zfTgEaqps)i26MGWGDu%&{ocPIx1B<<+O#663|{Hzp#@Xwg}6eU?ebNo1t?6^lff<>k@{&0EkzUd4ue(HJI zf6xB6S%}GGbDoU%tu66U>dwM(sNs3TWZQ|kz%^q04|kRq{Xgq$U2)p^5y^DE1=ZiE zx5<42%T*-q+xT%rT~?z`Z~6j#ewtr$@VG^3Q*@#9vIKmkJ1ESA$={pmDHRAkw(~Qk z6^m#P60}r}K(JBqcyKo4>sT9SUyDCXpNJMie6ouXt6@RuM(6h_U$BY^f1v@M+l zy<)Um>H0UJzeV;u;b|2(O(xd$RPI4vY)qikG~P@ zg%$L?Ou8C=kAsDcZ3Lxjs;?IaJiluDOrx{fHHLAjil^v5ngfweT+W^pddLUFOR^~X zX4|R~<7hCgrcMzeSbRr3-%Op$w&;3ShOQwd*+S0D{w|r;(4E*?>Gsdbn9tsR4iP;K z(CamPAIZ6LIiP=-f6|6nK$CK*_aF2WTY)G^XSZ8Y*nnx3YW@XM2g!|W6xcW0)V~o) z%SEgwp!_QVn~WziyN85D-sq(H2cvOn8drT5I4ubRy>oso3JbMrLSOVH*NbGQS(026 zk#pGS6RPeV5jzMofYC_tIYNl`B-h9v=Rxk9-!yE9dK7ni*oU_|;na$UP)r|3Ck&c{ zf5L_g&gR=>nxGkWM4B!dy}}gTlUa$j>S+twoeBZ*Q)-zC9a%*WsRaiWAJn zjXhDqe);To_jsFjx&7wFVZ#n7Zs0{aC7{hAJM^=6)|bKn?J;?K-@f6$ZJNl)3%)9# zHs<3`hwv;L!53d#z|xtQ1BW4pk7Od3gsYAUqa(0E7XP#`PM zOGEnZRwhl!o+b@(`qKPWYc0-RQ+7HRUA+(Iu!1{p)sww*49q*ARjkd}gi z>Dd*?=`d~AWN6aL_jPkXJ65HJgxT=!5|~2cmYM@*bwyXN$7wu*ew}ZY5275D%Jd26 z=@>J>((CHfDYZ7%@viD&|3jv@WiZD%e%EW8PnP2JSh>GUpdbW!Zq$V;P?~VqOOt8s z)Ip(74iD5tovt$-It45E$rVfiP!U!Tc%0PCmQWKE2}N(nAPv-;4puW|~eUx3>ChYH5MD5~Q z=a&(FC99^oiVNhxSD!qK95?sv;l-J|N5Ej6cOuU;8jm6h{z8)<_Jjn%3@y(TdE99a zCq+a#1u_9o3<`~mk|#+{P3dTD1JFKi8Ernk`eofVqttIdpAdj|QnF&Ii__kV?JC)h zAJ3etv3dsVvC3;kR%<+b`|}R{Wmgol$aRXx9xiOdG)zM z3EmQW`q=s23}<=j)v!O5;dr|wkym_g;L5XXte&omkTjLZOV#z}%>kOMI&`iFL)PT1 z%<+KppjYfqEcoga(b2^eQ6#_*4`T8*2Otwo%dJu>SJ1~E_#-~4{#P<}w2?)*c~0MZ zX+c!MO^g8SEGk1(^k)Jt3-q6EU87fLIsG|S4f9Zy*cZ3~PixLSCLn7XtQlD&v?mjIS5vb!9`s9E)d!$uTD_A5xUN*)J)ysUXmu{tq896&}bFlZ|>o zR)QIUERJ+Fjp3n-krTC4R$3aP7c?v#jYMg4M%teC-K6a)mZdBNDxk42kDio$nSc;) zjUS5^pS5M{+{%Wj+8{S~E17MeW1=plA|j_Vzkd`>2TQJeDMymTW7NGGDV+k+_)IN& zTp?u~Ij%KnVTQ`~DB>+us9OO6vP`avc@D6Jk9G0mMgRXxOT~d|QD}6P1*#D}c7>IwO)LrR>}wMLMSx>>KyI5fiv! z*z*PG{L0oA{=~atIdx)j6}(MYyW4zLnQyyy!=J#x)m3x&u_My)EN%uTExQC)FmGz_ z()Yo@vSuyiw;Pk>qx^Ctu8+r3yZk4J2_nXQffmdNwo;5(LGMxJ3{bGNR*9ZujV{~# z*2-=yQRh3$9SK3sJ)5mL3(-^2vt__8U%t0OI@@puRy zP8)G`T)^Z>POe?U$gSkFRQ2_xR!;q3j;(xqVSs*&9R`?(E~l`f(x@!z4I z4-RFdB=x%!AE!Q`0{>jb9N{cfHW#lo=5QTBowA?Vk0P`YqBatx3q>ZresQ*!S8K2k=bGy|je}7@tVxESfa`^= zKWYUktGHn9cQda9o4b8PZtvM(G{O8?X=VA}e^yU&n1W!_y<+y&aJrrOq}S6gDlQft zTZrOy`EJO?JQ`;HlChAotp9gOJvQ@o-N{iYqV}`KPj}4Q^ncTAL1;*vgK*`Jylu@EHaxl&Ieegegwx{*FYU+T zi=fD>Kl!z7(oc?VrjTdSYAYFjR$=`JWq{8TPy&d*z?tmL)?~7#k4?^%&Q9O4dG-F0m5CT zR1rZcGPAUhd0&E*xkz0>+>-&nkEDo@t-<0Z-roO;+8xat3EM5YPj<&-9tG;fN*t(+ z`+Km_xDoam%S~eZ8N4Ir`1S0`@*O&~BixJoootVz<3eW2kDSHcNVKgmLrE3$lt&v9 zM()|b^qs`eE}x?N9UK^_KCXQZx<~0BKE)mSd8ujuVrt^h8Sa7}94sV$>~P%+_FHSV z)vp@>zqP6M^P3VL1wnn)twI}gRQdDatXM65Qf%PEeFACK0&~6&`>M2}bbQ}k+X@t3 zMk54;umc98Cl0SHD|NX7yj8KK$2`u#J*e2_yR|B&CF_Hud)-k>8I4A5|YzR zpWzO%np3t*lm}jthDjuJZPU2wHsw<4r^aAATXKnvPj<>g7S)_A@n#pqY*{65O<^Z1 z2EEy~cM@cbkJ3eX*R~PmGQKb#wv&TIlyZb9Ij@vZZn+w?bM|1`_x$nUCBoTE6MRm` zEjH?Q`h+Om!n27lu(QBNYFu09DphDb6m&3 zI((2MmT!Q{&0uod=&l*(K+;K|=c~!M^AC22z2B$YZ$8o#?mUb!n^|T(Ww7moAno|u z(W7AO**BZwXccrv3n%asms5o))MMQrH?}>*SetCNZxak_?W59NWCw}ZtKQho!6$fF z(73bb+3=YSiS&-1|5acF9-NNyo@NdK$>ljoBB*;vBS^{q8+-i<5lGDdDeb9KlH*SQ z^qPQ`?6Lfv(x70mBhqD&qI-fBMhZf|m$%IA<-A9$?PZ$B&yH^9C^7u;UL9sVD_;^J zCG?V*oC!n6=Zlm5NoT6CObStaexTmT_K2SCIArURnWs71t%n)fOK~nE*uPHysH=1z zd{{n84&^`PD~&iQWfLr*P|4M=Sokj1Z6?ls?T)ztfN9 zMX!DCaGvLPtEFcHymz=IX^x0bk;5*+U)s8>K@^uFA=wm9&$-i2=wN+)?ogRK?{2dG z+ca6F(iV2&lcB+!QrgvM{+?edG=8o8LDh(3ed2#W6+Ud#_WCFo`hX{&FnVA+ zf>z-5eeUJv0WQVy9VfE`Itjk!?#1A=*yVi%x6gcN{Iv8_eG;bpmZ``8>T#@?il%v3 zY8t5S-k~366`Ar^0eeYhoh-wDQ*;{F$zv3}!5o zvmN42sx`!>(D`_G=v+KfuQz6bpeVp4=FTZ-xp>esX(tY$x0Y>W;gmlFV5~OMw>>`D zKiggKko{P}vU2}rv=siI$iTBfPj=_@=GDWfswLPTHSA4%_Oe#$?r3=TUHh>J9yM}E z9x!SvHLvcc^Xbi~N4^OTWLNs?1B`(Ot7cnMACbw^YTIU+lP1%h0dncgm9Pg54P8}_ zTPx=mPfE?8_Ktv#!6#g z^hjW3@^9G+juYrF{ru3~T(6@lzrid}H<`#8o`u3zuezF7j4+sId{o## z-0ruy2_EYhitB@>Z>O36G6Y5*7@x~WM#W6WD8wpJ-P6OVD650fuy8xuo1y)$-l@F! zZ=7co`b22Uy5;mjb7ovF%eVZ^mI4g@*I#|x^ACRSHD3FTzvbP3bK^|=y{p&8+?QzI za0Kpt6U+040Q_P7Y{a)!S{75*WzFW+n&+%kTgJ^Jl$Wz?*x8jc-j<-d9n1J3UHJ~dVBSPi#n5z^b`bW_Fj zZ&Mzvs?A}C3%-YU{sTrBKClsYndsMrqUlzcIc(jrP*hT@+J#k3bw6J*`D4-jgSuYo zrePg}6>O26Z%WOJn)r$xXU5_S6w5=p_G$S`x9O9#_(4#ag!ELn=Az{8CjFsh=#RfF zqtr4~s#`@zo6hv1#_El;VeeyPVf*XD!m?a$zZ^W&V2^0?v+ue#{J zw*9^3o299TUmXo#Fb8OJ!*bic>!?DT7*+pK_103v@A)FRb2o(o)PGG&8Qq9pi$7c#6vC8qan*G&T5B1-I*L-}j2j9v*Wn z@s@b--7%G1%T^)E6qb^{=$EIz#jcGxMW-$YmAP?(c}f7a0= zl{4ewcM7kwblD%w^!{*&E}P>P&*zwO9%E8C5tYlcebb}wfpiU_7OLjkm#wVxSH^Fi z!CWs_obO!gxj0Pv?#u1#5^c{V`CR|>|8eET%NLaBT#-~I4N}S9rs9V|aQfzr`pn#q zXk{|Y6xbGl!xAx*N#Vv|f`!-@@`O$a-mo?w$sQ($aWP?|qh2S}yGkj7f51*=X^hBH zWg^+4m)U8`q7?R5PZSVG6iQkFRhEw$F4~?JXavBGGxPU6i9oO?Rv-Iva7I>$HqFN# z1wz~cjqJf@4L2mPj&FCNcOaW6&LX%`E)ONj!x%6k_Ebb|)~dw{j3YTS=X2op+7Pvi zx@|QpeG`>Ar1zxCTx0Upn8mB45Hv>~lUh8mScvI0>{SeqPxAmOF)RK2reulLMbWZ} zJ-lbdBq8YBV^1xK8v{-|(a-VL5P`3gta2w1Qa)CD;1>s^3~o8XX-HvAWX`p@+LbDU zhz$*FF;0wz3(b_v?ds&3#SR4z$JuU2979J}+l`}=THzH(zGCh0SWwB_rA$<&vq`me zdUw#k$EcR#?UK8Q({Juh#5~+~fx(F)nG9G%??jA1**f}g$=CtYm)aF!0!^15fKrX+ zH1DRTlPYuKf-xC&!_#M9WIk7AGMGlRN>a<-3q36;ep}!>o zCupUDzn4+aO->}}`HAFQ`#b?Z%UKYlg)br{{b_ZJoaa?Zdq7@w6bQBR?y@q~eg*|v zmEIK=FSmmf%~O~kvrM-F4$I50Mt_&#{VDRXuOEF_~!M5&Q&qm!c2Sv{onl8=$0 zZLeidy0)V&sYFV^_eF{KnNM6UB?d3u&1op8fWdF6m_2Z`iKk{@T||^LZY}|-O81J1ZGf}DNMVVX&}YJ(++o zM?c?hZ=XEcE+a-G<#%j2=h$Y7=MS~QgofW0U6dmsap^$T4MB&XlbXc$=hZ56xIV1h z_6(fsb)P#RT!f8nD&++XKVCwJB{?3P2gEG&3lQe6iv668rmmA=fyhqK%(i2XtkZvhX29~m`*!yhtO5LRJ6>sseo9H40 zD8>K;H7TWb4@Gq>%vYH%8QVS5!76%!VCAf!x4(KuBhr#OP_KJZ(Ri&&B@TMzSg5Xw z>hN`0gwaBU1S!5u!tM07U?w$~Ng63*J;$+Cx75(Ncxp7jXM0VH$PA`vpR*vRCT>%* zq_nc)#&t?cJP~8EvcbloA-mI;@pUj)eGIvJY>IXizzd99Ey^Oh__TwKznw*N{ORob zVDRtjV+Zl`W+C+MT=CB8Wr*u_my&2sK`kpT7g!HCJH7-})LQ!2D!s&0Djy>GFH*u7 zF4~cV6afj)vH8Qu146C!ehFw6BC;$cz$gmZ)b31{d8e2?EElm^IUM81A`}LOw1wl! zkb}a%Kvq+DCt+FOC52E0P})6IdMo{nrFl6QDaM}0pF`E=16?7l zimstEWATaXq)#CeP$nj7Whsnaq-=MDPn4BlABmf;4U4obEhZilU*P2vWEsQ47Zc?0 zRMCdYqbdEC2m4?HP9K8Qdtx|rIFv~Wph8d^^rCcT|a@#D&~5TneQ z&nkkfZqLDWgi!sMx!~zL!xDno=IAo z337j3v7HkHS!pNP?{57>W@7%@iY0KnRHqo}5jx|TIkBUCT+F;eklD{u-0~6VSOU;Y zx6yhs4Cb>SpKlo0YV_tatPSO8O6umJ#S5zc;lpwf7@|A@Q)5>1yU^(n0azl^?T*$- zK7O^5)tiYPi!+hiLbr>0Jbgl3DjFPLp!rbmW(48SGKss;9%KuY4XVUgC_HB!H%{zr z*ai+e<#5IJG87L~ZlW7y)xmMHT!Gr|YXKixw83NyLQrZ~db{LZN9=YpZf6^qv?>gV zGj)GV08n}4K@gYAH!_I7$h54*JMh*Zq9{@2GYQ~7^1Aq=vNLkZFRczp^E5)EQ{6&1 z3Erx-NTRLHc~aa9IbpVf@^byHO@LNaC3w^&8SJSGJ9!eN*1+{Gbspgk!`}Wr58*+K zgqjH&h8}dtRI^-^kQ9)zBs>YXlCr5-1$smE>E|nic|7aU{?{cV9v^RRuL<2sX5<=b zXWG`i>FpFgDkII}Vs`Fl<*T7U?mq$RzX?W0nVhvn-dpGYm({}#8QI83?ty{}GLjzx zyHED&hET61!?{E-WlG?c&@)Q9?=bwJRqTfN6k;A9Nw<2Xp{#|}!1j@nSj0aOMQ87> zdus-F$yl$j$mP*mPLfQ>nGZfO%vTx3AOap&o`|0D8zIvzY6T)> zOodu;$2*)YZMcd?dfIN?{pDn?V*N_{-~c4%9v=EW-}oKqBiuuu{QB?l%*9V%%>L@+ z=idsH-v31Y|6Mt_h~7N>&c;sHY0kdD@2zjiMwihcrd?OS&B|FD+`Z~Z3Pn2-Ijw1` zXIY2!fzaoiZpFp5>QP*%riAj5?GO%41u#tnITh$W=D6js#y`jgN6o*mU_D=}!uUhzegp;Q`RCF=%xy2-Ji*0%+B8x*&j=@z_)!d2luRsz)IxdZ> zZ*$`F?@i;UVy&2!6*n6G6iV-L6p?xv~5qN|zg z0hxF=R!RFEZV85`dq3D0_ora}dc)=QtT6Q^>M>M`Bpg+utu=3hXrUtZtG$5PFcIvZ z_*mZbM~lr51LRc3P;b&dT;_#ECAe@42c$P>p;peD59}5g@{X@rQFoD=9t5pbb465` z?taD-c8Lv2%xU*xQcQJvGBUW4XPwry$=P6NK-LQt=`(f%&nQ2zRhvUX7%Yf*(;PgL z)9Iq%83Z|)?v?|+NCw5W; zsrWEvPVdQM{SIPp4(H4qtvApR*7mcrhq}gATjPOE6R|Z4UAC-pUU*$Bby21`r$qIR z24z*817~JfmX*Q?pW^5S(k&;)A-<7F0=ipF{1Rd=lRD9p3P(B@&4#@-rQ@_S zFV<&*W$_7p)7b>@Y^Ea45__;Gw=jSePlkq;3$E@?V-DseTe9P(gK^RCK~2I}WS(k) z-2+s*-Y>~GdfTo7I-Nn9Ac1J&wn9S#vIxCeiPt-Dp5$S=8a*^5OW}tT%u-d;p|!_) zwakQ4k|DxT$E0MKElMh?wPro;4Es_UXQVli4q^Y8`TTOcZ6JogSjGiAt|Qu-E5=YOa>3;#ess*zcaq?o`Q&i(1Neya&wzf5P6i zTfB=_E$u6NBjd^bn?g6W=zY~eE%y`q8vPyOW!`g{N3ZH%>!I%(6N;9SGMhA+A%IL| z`$Lrw*;${`lWeVMf!ZA>`*ZYkBbQlaVTWK40t>Ag$yiLDW8v}sHlvc?W<(QlzX+{N zFB&S%V5o#{LkhR(h>6A}6`oy{HHTOyVN<%K33nuv08IkNs_YQvTz4)l~NJ~x|aHpD)f@>Qb z8Z8SV8oA=^v=5-84dv+{-cN0vTdBU-YW?KT|AJ3EnN;okaA7h#Jeq5bo+Ln*zX-N3 z(c$mqbJYc9?vmwWvubfJ^BtT>Vb0wkYtC&GSmRmEWGd8EQ%O&2Cu7mxf^PR(UEh)U zn(-eMp{n9Kn{OZBg|JV3vFiK(NtOO8U?qX-u<+f$7L?w?~ zGlf0!kEr|t7wXB~GaV3^ZwPSI2P}wJJy5=mZp~^C>2=wq$Is@C#k7%~ygq|RxnFb z(i8AgzexQ3PQi5PMBcGo(t0*+KYHK)ES?s7@!A3iCt|*eXJ9(fPn<9jpaCK< zq9uT~IqN?d<2$b~x2O zljEYr9EoCQjWw7kF;lVG4~Tf9k6hE$O8ju7Ka_N&8N(d~r zEh>}hY_*1fUTLqbJe~JDdDWghl@qn@2;#nxq@J?Ww1yUL+L9mfXZSlzX zlvs#sO(hapHlr`5bTGO@mjPE-2+N|eRB&gqC1C~y=?n=@P$xZdE{5}A3;;$Um(Q7I zpP0{JYeE{AQhD3?;ckvIfx``ky2zYsgF^!PbDn95XhNjG5yoEoqi-=TtFO;~oB3a_ z%uVA?50*JS;3YbV^=GdU-WmIU<}OV2j?MmA`E1XNug~&tYI2>v!M!rr>OhTtVWsBQ z5rsg+k2&l+2&1Pr6R)gcvoKQ1F~>(=LyFh?n=u4W9L%OfluH>2;kp*Kjy0lNweaGh z%8n{(0gCWkSF)^lnq=D5T?iSi!Xp*#vi7N;$H^yEdSSa+qVzJb^I*VZ=xPGQ=(jNI z7%EOkX~)uj2x=tzEBI_#Aec>@pUl_W<8)hgdMMYBGl`YU@+yna#V-Qo#!&7pLH7mx z#FdOQ9RQ2#MrCTxkg25f zHzMqnkn*A=mAq_fdq`xU{D-}aI|(5?B9hKydP}m?@QJG7*vdF!BxlUMN-I9b+{*Sn zTArV`Y8bhIWS8E-+V1m~C`bSa|_WAhBrG_GKR@Lo(u6yIBJd&6%`6n46bwN3GO6`_&Wn@CD{)gsef6C4}Db{rj zNb?%~Saidvu*~3KWN26!C~32N*-DJEt*H2*Ow--^J234%qJF*qs|gmFFEu?XpOSAy ze^`B}*pParqQUO@OYTVDcUhMbtP7X;2Rz{d5PWr_d_eY%otR|=p}M`(kSSV~Gb1Ru zku8>pO|>WkQen2N1Mm5&j)h?Y2w5rBjpjjkJwU>|g?`~vR9oKI_auuO+1|af`Mmx_`{YDVV007o_~X>? zBAkZ;BT6sHNw&R$pev`AS00S66L6IFU|DaOev-jxJ;~gfny?1g8ArRHGE6df{v%^8 zjN%$ozhAG^zAT0Y&gRDF7ssyuVA_9v2Rk3*<0N!%)Jl&M@ZC>|(%TbssTU~W69>s? zB_{VxFjr@~z6E1PVqPD=e}hrGz`+Lk^MZJR$1CnSvK)t!G9ogQ`ZT!y@pu^aYkLOH zvzCx=iLRwZQ86H*)mhwYBXFLgn`s2t_3P_LFR*p;Qz7#hnkHy403*Gde^qei+k+gk z^9^Q?*t77g?>Rs9`#09Q69VsCk`7r^JuGg%`ao__vp6FUkg={>pS*`Kw6E{^c6l8e zB`h~_csWBx>jMi{Y|c(Ky;o*lwi2&$e;6%H9Goz^GDA7XYfQytRvRC#@(8&>-9S1$ zaW&3=UFm>~XAmBl{Z4)S*$$U; zMhcIBWzK6if*puR%b&@No$|dD=S?2do0ybvCS5qQ&rJT2aW4O(hwc;0OBv$-sjboL z8maQDo=5Fdj0%@wnT%B1%qYLqwl`WSR=bbi$Lgze_YGoe-iLgmx4T%|#|2KvHBR6` z9~ZZF4sI6TpU@qarKw#oS7Fygy_*aaPi_3WdTWO^%59^FhIq_v;)~HO#R)0J24rvK z2y+HOAv~aS^r^$mp2BrJCOIe$1(2}+|*evZg5M9jEQ_OO_@;K?{I zT&{bZMI?l#tsSVDLK>0hsK`K);my$G(UfE*P_Z-Ol{20uLG4V22p;!5TNwZ>?SXPH zpm~H*fC>Kn|Hz3LD4VC13^qs5szQ_(0>vcj((S5!vR}u+y_J!V)bpG$$)ejQRI)dU zk~N2QY-f6K>Ew7^hS2NNG1y0}*GAZMreHFBFx z>_WASP_UaAe?`9*p{OXRBEsi=;Ua3DibNH0i)w5yn6p)GBQWQSn3vDJVREhjN) z@5JfZ0uT)z=iB1rOehN*Xx3CO!O%97!a_%b3Rjtgd~cK*C-G&f0w+=LH2QUS<&Mf*@RHLlBI z0ZqyvJ=pEO%aDD8(YQm^DGFh1Io9^62FqhqOg(40QZ=1ZbxLDKPPu9ixlo?D?UiuL zIDa?nLDKDQq)6nNHt`Te=1Ufenf2w6P!^X-<~D^7-2zAnwKupD>lWQb+1h&=c5;|V z`RM({tc{Y7dVl9Oml>PDZGWQRqBZluBDQK}`!gI|2F;ML@K7AWrUfP4+|IB{T9C3I z2~#VDXqyB@P;%9c35&>Z8%$unLga*AO1Io?sp)rzCv}`40`zr#8NCgbn*67k-%dtV zx9dS~+v|C>42t03D#?^lYSkrPzR`emY=J~Tw1^nSCrp7wMJ_9^*BB)v;7 zn}o+a9-H9y1*t}Ym7C*o@o_I(gzk;cS@K9awXs@@vJ16jna)zK?l|90cHZQ7nkS-# zT=Bi)4-*|qzCeAXa951mKSZ* zZa{YTo=<9bv$#w>e1hN36)kNG7QbG>FDzhb-Y+)h6z2K#&Psv?8-l4UGwG(d(6}p) zY!BW+H+N?qS@ckl#fIVzq1O^-=pUE7_G|C<`xblZNop*qF#zLaTko26;DVRAxLQBiN+phq z<6+ZF=0qxm*u3Jwhoro|J&>TacabQWIknaAXI)SXtH#xRCoOJjB78BC=iYpwH1|#= zo*$o$kVaB{?pIiw-tYf(U0b>loRXJg;J8N4=He$_4(wYoqh2GIz!`{zSj18gO9WhT z3Aslu#c)W&*o#J3+opoey#SPf<2$L<&Wele+X_%C{?cAwEcN7gYqyN_tWtJ%^(cv- z@k~A#qZIvDR(5#%~?2Epv=L5JUy9w znHaWYX&JVH6-%rHmaM=bPslWh+DDWid*Mq@?-LcvUvg$|POQ==ZC7aEAg<9qZs<k|CV(& zip=c9IKIv6Et&^)WZ@AZg{SWBt#_%g?ml~6^(|2x(!d-xIo!~Dqo2SV(v}1 zt&mGGSqkr!_DLkv)5$iDP>Ivh$tL)X79tBJTfuT)dDZdc2;2p0tpk6$bEou@S5M*b zeR-_c2dp`xp3K$iQF^oaMo>^a%9^B>Ko!!h_s#JhW z%p=F4-+#;zdkz}w68H4%;lq{D{9^hmIGLzy252}%=2_~*`QA<*@E;x(sPPqgUyVgs zB>ROrf3B%+gOY;J6(b+}-!_Al1RUh7uZCbzX~lc*!zDrtUCz}z93tCLCTsydd==}% z4`6s_x!Qy)dGFvWflifIl>zi}wmxR9uF^{mp%5pghpQ!9stFgYc+1bNt9=T{@00hENf`&z}vN;Wl zoh;4QtR?dO`sWP>(=gZ*<`@LNXB$8=CF$@ZI)yGLo3;_W_2?6f98n}N&*m$8YmnXz zU`$ykd5-pQJWn;+YM95^Kl;NRwW3W~>s* z64icO!wyyv^+ZM62nU6D|JcNnVmQ(<-nka)AgGkv1oveH zpBaf*_WMXvqcOn&{Y~z%#KNTnJquONk=cNoeR1R3;@462MKb+b%`u)5Qmb#7-qo7An6RuU0=ZPUXf_=RS<<*!u7Th$c}wEaL5K~c(M<7F%abz$9Q{rH`6!{$*(84DZX0%z=0 z1$`Q)QX2v^?IoUM1Yu!f1YaW+!3s5q1h~h%YVB5zMjP@Fho&YtRislot4;Qpg$!%R z6Dv>CX*Ie|$x5~_;i-xa4^_%(X>p4>*xOxd6N;Az4emh=#$t2@oH^Q|;v1dzY3CtK zh<8LhI;B>~LON%IWf;PWw2~oe`f?OEP=``@hqu37_@Z6E7-13DLcAcf*~VC9dm25N z$RQrl^PM)zBvh&4tpcvX%KH&@J6Y)D*{wB2s8x_vB5X=Z0O|rELnj3&sSu8vA-m`B z=L)41#00YNTGpA&&wF-=t&%p%ZDwG?W!Zqu$ujQxS;1CmINz9cYw;J>YS~u~Fcf?e zuM`LBypg_C<|bV-sD!?eo=oOkxVtSjLZnT98p0_$RLTLqWBDzv=n^Kf?RESCBI;lg zRq?Md#``X;z#H;{o`Ov;%kZ=?|4{g>KNh9zHJjcoAbIsd>heD>TXfpy$W*P?WwbA! z;J>2%EM_@V8TkF2*OnQnF0^@+r=PlGk@O^CWy>+m68}spMy9}QGE3T-Btdv@gO6+A zfmyrJzvpy^bKcTn){(-oa3wJr^AH}h@PTLLoG|0y6-+=J$qvkAOePfy%~GSZtODi%5fxZAgM?CZp&@(Unjpk_mu9=|0P86?oTi+gW6|)5SvE?+fRN2KQ;W-se-? zpCE~dSP0MepRo>CoAO+Omgsumqwd$f9GJ$tvc#V=+}+Wi33T^!v{M@jsiw1jPWy)G zPmA4-W!BL7()s?()aO4wbyOaI^4Bk5CY0~mN1K_&Zl+FA&^4Kwi<8X%pQ86*jwHX& zG|PMMy$1^3qk%?yJKa5=L(XtWN+Ori-YTTq(CTh4;_mj2(Lrf-qDYa)p}QH*a15uX zJ=y~eG`ueW<-PabS7n*3tg6fX3Yi)CH^29No>6K`JBQ>NSnr>z)uvkre4o18iCu8_ z{dJ_cH#FN;#48(X`@q2a zqwlv}UNZTzx|;?v7(E7t=IwmWcsP6jbE&;rJVM6$=16=0!9(6CXHkw^#y+hYKJKGi zt=WbX+_YkL30l%K@M-;L%RmJVI1pc+H_RfMA|Ncd`mfyENx${@= zN(79**?;Z5Bx)j!DK}o(8i@%utR8K=x%u6`{YVX9tY0qw7uJz|HJDxr9KRq|lmB|# zN#A{D2)fr*5B`KR+PuL;I`iz6{hJc{m)3?OTU#_P*1~^G-?A@k_@Ufd%DVl;Zpo~x zmcMk_yXC64{B--)(idMDy-~~hzWw&2Z@_=~WZe_%<~vJ3Y{Thj-XZD+mvS$Dk4L{6 z`He^ahjc-I*e?FEh7?Bc96$b*5v!%P-!A>&fo7=^&rE%B%J*6m`LPna_+-ed*KJ&G z{@nlR19m!U3H<6+Wn)9god`yKY?N~0>`807h3ma>k@>A3QI3`4?+3}VvCEWg^y_so zbcUy#zV_~Y<}A8R=|hgD`#NDUoF94DB>ds=k3ZPiy&Q^i)M;sJFWPrzyFILL=@8=% z%gJ>E#vw0yPe6e~(xqHam~`~)Ts^P2(q;QI1?=BsCO3#5n5L%T&Lj9#(VHMYNpM^2 z_$wutS`nc`@tu$*rHdXEPu)g#KglG^9)xGb|BxXQID1}r{-Um>>+C~d32lMHhhOREc|iofsGZyv?92{x&wSTza5+QG0qxyEF0d=9eT~o99_-)6rbKzm`q;K@oOzNaTH0 zZm0N-G}?pDC`d$PIoRr>(FrA;r@Px+Eey)@wjN=O9$GaLN!$u6oV4ZZl0HZ_A;1GY z%sw%WYdG&{2o#cn{d+`oQ{G`^prHbm8D_P)P`8&N%c}T_DcG6lFWHjNKWKO-cFcPi z(%4(?A)@7Hw4M8ZdtYI)PW87g+h@Z!NRw^HYkkmQlK^VANE=IJ;|bUMe+1q?Iy(ZR zL`iGS#a&RTO@I2!isqZGgFB+ew+!4ttK#5&GvVI*36q$7mn1q{KOhdwq&sWA7dPMG z!yi|D_r6}2#UlD3$yfH6cF?bRvZDX=$+0x8eJm3CJ~+B4#F>n~_ioqPsm-paVfXf* z!aVY*^>}1=-*Hx018MD$_uCD37w~n zRTRl-TE4(16|U~Y^5+@2!8dRaY76u4n8JeeMf?_*KJ${X*^4*}n1E4o?&u4Ayu&Vs z?>R4~grBl6b*`b@;fJ%!sI__I=P=22Cv*IuX+9v23Vzf1_2Jk4IqHEv=P2p=zdmnF zX_2SCxdHZXo$>EoVzgJXj}g`*e8wp*BmvMmbsT} zw33sDi_hHgy?N=`#7c-_-Ni1)TNd4sv2};G*km;@grF zuf1`yWgBDdbOU1$TcMEr_Ee?UHpggbcA*v%K&SZvdAETe3E^MiS{;(}xQ@_hT!8Ew zofRSkOjzK2ar)Rm?!0`;hAv{T*;cVPTAB{N2|nn5y%b=MIJCQ}9li)Hi)d<;djYE- zr_bw}+(3iiJ~rPArC!p03;*>cXp4(iUY9?2Z#8FOE&ND&*pmByjabzhgA0&DwBXW9 z@WSt`i-GNEXWLeS#NWz9ofWik{sNY%)>8N8aDS>(n8*wH(}aI{|0S%WXUJ0pCy%?8 z&rK(VMzRvy`I<#F9JbJL;l~M0mXB$S_CyPO4sc441UZ0coU|8q$16%MZn(?9bW*99 z@>FlkLFuY@dx}g7jtWpiLmUyGCln8G;Hz|c^B4(YUy>mN{ltyR5-SM|%xHpFr|9Qv zqj>He?DhO#9G>A&8_<|nGMxZl^-gbf+oYDN2Yar0X4Ecfb;gQqnpGI9q%QndZZQ{F z*1k1N{-0Hm-e`{{a~k;M5X!}i4xMS;&RC;4#NQ@L`Dgl``A!^&GReHM4*d<`FZ3_p4#u>D#JR74# z3SgVsD&~Wl(>>*aBtEEw?;J9rdss{Xucknlv7O<W0PzNE=G!?OU4K|O-3VpWC5FndWpvyJUg(e5xp5~GTC;NIO9i3WyT|NR3TJ+h_!e zrg9C%)96Se$fGIPN+GV>$#ZosG!~tN)q@f|jywXaC+prp64VTBrSGxOA*A^2WY3x9 zw-Tpx74yV#ZjSSkJH@BR*cW?F31c`XaadU5?48D-F+iNw8N-q>3nzyE4trQe?6pl$ z)s++$bjWi%vwQD3ccbJ39)aqH-DusC;0lt9Y;++?RYp|oT~_*-&2TdsF?&8fQ*xz_ zr!ZvAi$Rb#$0HegHmTS3Q`Ypgi*eN({@eJMwYA$qpY7iAy{@x#!?kXf;JOa)Ontku z?msjB{kPdidivMCp}J^Bl+dl7;qH!LfclffC0#al^oai&fsi|OIU6iYJz&_C4?CI! zqCVZ60=p?C)B{k#3VgR8simDRyDFxptvtVKSWO3#*#orD6ZS?K=_NjA7?bpZkx6YB03mJo#4HK8JH?jx=GEGF|DBbVONl2 zWkkEDh0xPUtfm@12HNStTBFhE*ynl>NLFu-kWjJhtw20cO;9&~@p3&u6wpqD7dO)8 z{n~$Ea1uVF4Gf@ux#OEy=X=D@PbD1nuMDZu+JJ*r56@j?xfcb0E+(0NSt__JyZ)aW zWy^EPS;9|-{-Xq|hzXBo-hJ7>Jh@0eBXjl7l}uCOXL-bTEA!sZa0M?aGrxWXcjh;A z(IhSm9q!HJ59}3Dc84#oik|rj*76+8`aIL$k~0bVo+<%_#jTmB3F%GOjRAeCj^BYM zn?FsFdo8X!MW&b`%#<(+GAb`AKg0q=ZuE7k##5GWDBky(ss6KJ7V z_^wjk*LxQNiYR`J$jt{p9qfYbrFtQ6 zvT2iY%idya=a+Q#!g%{(F(Ao`mtZ6?$5Z88npYm)(O&AamlJfV`SiI40!oZ}gad*~ z{mkwlt$~W5O871V)Z*#nw?y^nt27cwl-laN>MO>yP$E_{0Fs7p3|DwD2u-09cIPRR z2h*z^S%vdZl*-8MMH1*Cj?kTUWOld4+?_YVx^%2x;B36re&D^@0kRhuBI2o2XEWN_ z6eq5$7%fHRCslhp>Y76bDl4}6%-z9wsLb>31WEaw3`6_S{ixyU#2x~VFD>X`|GBBt zq{St95-_hRjtifJiCuOnHGA#P%#F4w(=ErVY`()=#k;sFPb@G_tOwEMx)(}R zEDfA16lv?lhaF-mTi~)QePN0xldkUUdx_aQg4I1v6s+e7&Z3X#3gB7?g#&avMh1;w z-0I5uo;wmD=Ss#>L=}Ak7^#C|@B8);yEz}Fs#**`L!3scw_QdXDQw>T3@VfUB=^50 z-TYwp+1|K)p4UI<<%mYwGBywg&r+ykZp}VO5R|SA`&&^8m4w?> zH&G2S62)QQ+Wr6ctZ-}bForCOK~k)@bx^MY2u72hhkYHf z1_7UI@*9Piri^R>ic|>Ey9@DMrfe!*wPj2kfT~Zd1AsT4p!%!12CuN$=5j6`(c87N zV^bRqFd{`15g{5#IuauG$6wB9Jez#nzP4z=_rIldhz6&4=(UOTp^`$A1ASR( zCHmoXN0Z@NhPLd&tQTFYVcT`^~ zzAByuAE-wc))3xbz94+?)!l#Ix>ve|Ej}!HIiy7-IF&i}U}EZuGDrdjF)1dw+@@mN z@xma<(1Yi+fKyaJbyDW;C3Xc;I0D2GpEVCuPDEPbFz6!}s^Q=yn-AOPP=;=a2&<4o zRuWfZYKS30XY7||1XD&>kjw)Bcv`bla3~Bzu)=vR|uiO zw7>b;zszpVe5_No@;@I6PJHri^>^1ValOyiQ5GvEn{@3!%Ew=~Vb~kDvy*Q6V_gd* zCBJGH(kZmqgE*ztS6>O1rjH&yI~el}HqPqW)-~DFoku(0M7I2t^Jv3gEY8G{m(x?i zSfqne;h8@W!#hC9=v_>Ot@|!Z81Al6wavlRM7;v+FuIrh#!4F#Q(_8J26Nmtaag%-uR$E2DLd;n z>7)oui4oi0rG*S271cN#OF0V1?>M70%Y-V*n)vcR0sWITdAr zhXO|F9!r9boX1hfiNusKG=vgwuvcp%$>*1d+fPLrB z#^BGtiiLgkgT1?smD}4td$j0T-d)khz$|cR1bj=Cdx=90#*FIc5{n1vqB{n%5YyID z)@95Uqk38(;5fuJx`Sy+(@$^5R9g`tgGE?o_yqNoATFpjNP_7LQjYS(SmYWXGp4fj zUX7}Q_TLHfrTn_$3ltsq zv(gxCekbBf%Ps3bY$BzZ$L_(*eUD0i7tMYk%Y0zA_<+4I{BFRjh)AqpkNgsMqlegv07G%aru!z24Os#VgosnfK*oVLxi-l?o-x^IL1{r{OsIfzb z4WUX$DHZ?^A>u{ksBZ_k570RbMv8b(!{x6(V6Ij_2Xe=~e>@bSxx7ZBx~JPmn!P7d zb@rV8+4UmoQZAcMNry-sg{VQ_{0>yPItZod-gJp%^d5`hZZTC$sj~qxFVkuV^DX6s zytw=KLLtvwA<#2cTny+(B|g`pEg1e}6vGTMwZoYm+;btL*C#2OQECSxrcy%we?#}QbB zX_OVB4oc3r`zd_X`d;$)EKhMv;`d7DeSaBUym;cTx4XB`7P*t@A8n7G2X~a&XWq6i z`Qqh2DqXfkTmRaH%*NOEodjUmEVm1aEuVT`@<7+xV8_51oYZC(T6I3ParBgC+96!= zt)QbW9B!joEzedKmqiN_Q+LCn6<5#^LbqyQ>Kn~H?pLabVoG3+AWTKiP* z@ZL;+h)#_c;q{p*5yKo9zYcOHD9{VD0*%&Hp*&@xV2Hgg``A+82g8%)0qYHUKFTA` zfs$k~r8`7~IaX0BAtzO**w9|I4pDaM1O#Q1;S2T;)ywq&3e1FEdgxTw9jF#i6`B8b z1BcBQ3uqLd0@A6TVgaZI(~Ct%x{)X_n>AXw?ZI{Hff(K3FeWRqY9xiCws^K$+=0m9 zt+9r>QUhHcAu8f8mR;JaD^MagD;z*kO<*g}laeSEQSzBxMRv&7M|D-aDmO8dN;rG- ze1_Cc2Oum$7OPi$SeL3-SHM3!OCyTl_$uCuyduU6FJ9gV?S5Z4a-(%^P5Sqgu&{#- zPp#C;vCA#czaQ#fIZa93^iudvs6Lc+1F>$;F+N=`mvDBp#U}}{b1SFFGe_P+HvK}& zdukI{NN6ChY8QsOamO4aE0FUCb8j&yK8i9ML^p^zUmyu9t*A}%845DtpxWa|NruYK zC)04KxC>#ZKm}qTX}yraitKPi5K+%T%77Z8rts8^WcoafYZcXDfzXXfbfckZf&wOo zSY#7Pm-~C*`z?a|9RyBPmR7H_@iT)%=>@Maq-Ok&m&N)H(V{IA=`CUPd{NJgoy-?( zZbdsXHLEeF480z;M06Qq_N*hkhW>D|&QHGnW}eu}W=4SVZH%ZI_0@;dr`v#3!THNW zR)UVQEM#FLLtHB)9FDryn7b{rgN#Q`N|TyrmLZG#Co$% z$|5kvyc-DN!5GQPNWzD$sCz24X0DOgFznLXI26X|4ZxQM+A>thK2F@CSBZ^WsLdhc zhNB#T%!aNF*A9|4TswluQ>Z>?b1&r%GTdMg@3Xen?qzX9#&4&x-V5Ts^1QN~bGq1u zY8;O|zVuw%Z5fKJx%*XIsB9#ZUginC)s20IpZm5u_%)~9*Rgf8v8Z4IJJud#pVKm0 zmUh9KVt$~-)WrSqvv>+q9V{!f(Nrtjc8Ds#6mkq65!^5lenMZ^M6@{C^|y;6u^m}D zL+Av?i%8ijYOpom9YVU(7|t@81IK*uJyhl{9mqo=;(D2g<(IPhYCt^f#TcqvI97N> zkCkmni>AgRQ(2GgGrkEaliRedUC;AH<5*&rzSFBJ zZr*Sh-N&=5O5+?TRcS&)t(|Pw=u8$N=qVzP1QQ^Fo#@g|=yILIF2Ryv>%WajLP90+ zQjeK{Yk0~#Y?dc}qsKgeFBTXzdOG+fG0GR>iGgcpxdu%KUAc=eNwch=Q({-BPq*K1 zCAj-634Bi)F?5fgpoVomRJPA|VS!%*YV{Nlvy(GkhpC~=3>P-t3G0i2t--az!l}Ig_zVL#w1?NDro%0Ksi&4`tlY)2L zF0D2&@HtF?rA2xG8 zUz?d-9(k}+nA#unC3g!GCy(>6bU2a$!X~*!;ic}q9gc*6(DBjpl&kz^oR}pFpiyOd z)Ek*}gaN>~c0Is+fRpnArv{dd7me2a&O~f~aUp@KHE<>(ZA4by5fezG9ymN7KF=1z z?`-$a_^E3{*K3kr5OlyBSuIi0?1i86)ddpN%Nr~VtKC4%|KdC>%*ZpwhBIO1Lq<3tRhU|-)7Ito?ZQ*1kC+lR_i8_tYk zkubLLz*pd8qDo1oM1*AmHBs9ON{j#Qtrn+>Ag`@YhaD;~%Y7c2Fz?lRQ9Vw`$->B~ z%Pd~{$W|@$j*uK&HRF#)w*!`fy?ayFSZV$nk3gWrav|wN)=l@`vT!AJSlGSX)#;Wd-C&@Q~TSCMPhj#vR zvNG-l%(4aW6$F9I4&i=fx!;D3+(gRqEjs*{Gqha$M(J78s^MlnG>~AL4Q< z#2US-E>Ndh=h|#Vo`EIxMF{&`nRtMV+bd@V%<2U`Mj%kSUJPe@*NqJf>_f1QlV+ILk`G5ZV?3#g+9dWs-=Uu!LC}yCbjst}K%izg z8G5DdZ^``4;XelL&r$QNjt%k6V43xANQg_R4yC`kp^rox-+G;F8}|?{iT*2P=?X#P zy;L@?0=2->^i}YoPAdJW>QMCzo!F4p&1PN`8)p_P|RWr{uyPqLyj^fDu!McXq z{K<#1*2088Ij(YByIF~(b)o%CFd{DfT_ZN&32wP4y~JnFkir$4g1sZGr*I`SzK^cl zdzy7VZp#~=OksB#x~*b__qmB1o^k0i_7dH*WuR7e=F170YftY;s) zUYZlMCi;b`dLhtf3`f)G71J70WQ)*zp;qu%sPZPBWk z=wLQkD;-e?t4Y*8X$SLi*3S0je%!iPTqX7gQ|I6v02lf8d^t*cgAmX~HdW3A{&zbt;v^Rp3=eAe0RKoO8 zoD!;ac{Bn#Zi}&%)}WJw9_{z!=hqi*o^A4IN{_^yU(8{Wvu?XOB*;t&$_z!`h>l$TgeJ zgqS;$k#nUUE1OACD^Z+i5x%1~6H&m!xI!xB0UiCTx1 zBYAhIH8g}JYFrh3Y#Z>Z;@;} zgjy$;=IzbV`r> zzOQa zF66OTUwPFf&PmMpPOLlAev(O!pAwYN9!X}W0aB7in$}HSHos@E#TORW;X}?c21~EAzNxOy^@aqhH1@iOrx4sJGPnVIWnkudzk6v{dt&=@5`FPIJ*99MG= zB%U##TJ#RzKxWsDIh6*fP_;Sa?ios^x{+vf&Y4;lGLdSFTF`Ou(wS%BHhgZ*V<_xRd|E2ckrcJWD?)(>GhD(Y<=V`R6T)8Un{9au&q^d zB>v(?|LLJVC4>56JkE$lfxeR~a|KmH4xon%L<_c93$~@NbxLgPU#)R(2rf*W%#07W z9mB)JZ8~1)9By9!;d!orJJM9NF&X09)t!^q$Cxk|vD<%{cl@+o(9)CNDe)>Do?iUf z9vJ}#m8=KCm_9er6Q$IdMOA02RRyVziG04g;(oPY_4?qmN2Q1o|3n z@o5bcG&S%f4Ul50_5*>i*cYbq7j@0>7m z@ZMmV-_1t+XM!0&r#xnu;=SUy@@__=KGh?ENwPi%JiY1o59wntTux@dw9y?VWw=nR zkO6<3-~f|64oaG=fOu3ERCA3iTBWU`;1w9eaVxjseqJmyt5lZdB!oUJ&?W;GISB!e zk36@!Dip86ebWA z*89z6m6<2VsOly2z1XCVFU^M&S7PXL{`H{F#3~{eG-bc4B-vKwU6V*00uinTJbt7( ze~3`#pbE4JlV~g0vbYg+Q%XM63@hT6aR$_?Dt2 zXw$(&70SAIY66o7Pz```EH7Q<7v!8c4~IgJGYV*eYj9~y5eH@A&XWp9p+?g2JZ!YJ zPOd2r<7AM2bYeEO-P0NOyiIj=5A_)j~cA1rQAwwWn&W zmY}&%ELVV@&YSP}9!xezW3}94Q?YU@jErs-AVHdiC?gl~2p(SHBwNx72?pV71UdVo zL&WBWXt^S{(I1dgL7@r4)l6{?hQDt76Me%u71Gx*1(}uAXst$y_Sovo6zvF;PRTq` z1TBki>>yoFfKO3PBITI!sx{^rPk4o?CoOOILH&@Q{J45(K=Im#dPjV za5{gJ_`mccb}PK?9#Q6>zLIxDrJ`mN6hvNCu?Z<+mRPIYNE z0uS&$gSUzu0P>mDm`0t)KpUyyO>9_GwGfl|{-RUuVtZUX!1`u>s5d0>@yMV46p-j)f6Suh;pg8%5#wd4UoaDPt!|{wy6Gws5Ujo|CQ` z$W(SzdO8OqeyIju=$m4KH<185{L^>Jv6l{KskLfsHxnNBh?gCD3fSJFzmqatz-n^2 zO&f;w`1}b?pvQ62_C`N_AoV(LzHM%duj;I7+o^u1@|dtReuya^T-ZZ@jGy{~`e%0_ zI?FMXDQIccQX&)L7Mo_zyo zJJ`(5NkF7~B>e(veM1iC{a`az=3AHbxVp+TdN-`I@pkgW4)Q48Pwd@~m2|a-uaO4a zsET(sH{KwcjLK-AH0f%Cak4HLYY<=L3Od#nv68YPIi{KjSvz7hkY2|p1yuc@ne3E= z`pUp)2?f*`HLb>NDc2&ZiaP^F8N!ejZFd9$xl4+|1fiu3X&pl# zEM5jZ`LD-uCmhv;OZ14C9p{kIvwZ0|<^M()#ZDE?DiIlZz!qi|P|BE&MTGB-ykv|~<|A|ER(j|yAwJH}|DcWRj;8!V`H>5H|?663Vsv1lZ= zgf8}F4lR!rOjo#b98x%GUfhWpB6UK$4IHBj1?%_%`l}fAWV8#uyM8U>?s=8$qV%IbA7mmD zStX;<*NfIRV~mPps?CjaVttrGM}wFXb_Uw2Eq@UC%0@JbX#l4osJmmBMlE}FvLn_)s@GFO0h3zqqeU?K(>>p( z(fdil5&pUETo3tDZ=QwwF38y#=}lb=HN@@WYvoh3r>4k^PUQ4ar&R(n4WEiEW-%Jv z7f_Mo_sw#ZC420$Ud%3z4`=P^(Cm3)axBy6YmeCS>1w6SpXy*nBzrx~h|H^{q7c7H z7W+DS$>|&AQRJ0fzPM8EzN_{H2qJ3oAQx5i4(}xE=mRW;hd`eo;yq5Kao7sCgb(H1 zHOg{yqlUC8*Vi>i`p?)r!AjblNmv$zk8EN)zUHU? zNuiBE#IMy(22-Hy0+}?cq@;?md1`>!LUBmV$Z22T#B+*wM_ zR5dS8L!jB>=xV-n6v*fr0yr(^OpZYcNHZo6N+Hta3?W}h6%=mM zkKlML#Z_Cm>CVP{G}A$lnL(p-X_KoNPg4Whm{sYbXM0S_je%q}p4+kh*kX zVVj?o6UAf{0jY%V_+o`jlz?rfT6w#RgvXmOwPJP+R6XuRUO!isz)o`X6cPU1dXDL< zOx&AilyEh#LF|r2sFf-IEcIAGmEAYQ&~DmE`*MUS8=-(#T4<^(;|}^;(yOQ=*mGZf zTLfm2%X3dJJmRE{Y2s9}viWN9S`9z4>;*5^W0V(fTa!rQ&$#z0 zpKlHR^Pm3-W8X*Fc0>9*)#cszXP#f*3O9EHrsLbcM?TYi5`k7g|dsu7>wU0S}6H8rkXLaby)gh`WakIRtjkt4E=%GVie#{3h?FJcjIS1mw{| z#kDTzc2;Nvyk|dXPKKVMckSD$l()8Ov4g1~SIW^fgE_=^=UUa5b=OOyp7Sv#gAnir zRt3(%KinQ0-`Q4b8mWG1d{1?%Q8r?{7PiiX6;k@uJv0UOnhPGX0bWm? zG2O>2je@7d+QEOk>ix-%Xc{3rOiG zn$=DaIyw4#Kg4obJ!ol(PJM&SOVN1sLHX(YTEkmE*!Cbo3+TsLa699S?Ro;vLfs#D z2x7J^K;<)91i6#kBJ0-J1^q^=yy^L4*<|t}j*(`&gIBA+*%ftDB>J2AEvE2tei+5A zHG~O~a8mI)nam>aNmc)){}uD>!LYUg*AoNc~6A5Id zCmmE=vMf$hG<7w{`!S<6!x|eq-a={?Tr5_xZ+ydw*D2yz|-W){B(s z%kVATlUrYAFQst7;gncbUBv;V`|GD$|1tYL8O#96(iNZP0AU#B>J|g_Z8LA zmO520I=$3>Fm_5i*eUzH9hmg)odL7-f&ofZkToNKM%3D3Oa@&-CuH?vzJktXyRBry zS%3)M446V~M|p|jD3L)#U{kpVrrgffB5>zue*2j|6n(m}_Z+vXf3&^3y10E$x3~QS zb?@okO8Duz{v-4Af?&Q|lAoP@pvKeh%_{&PoNfr$e3XG4U0GL(V+SQStLM)GU#@OSR3l2FSJEZlr27 zW$fTK6yw$*Tv**Wxgij*sWC|(A7ed+!D#T55h^(fu-SMrmRWD^9rM{m>rUDevgJ(G z*eD-GZ;AMMc`OlFt$Y~ague&)ybg6*e`eVa((3M%Oc6CkI3=#^m^ zhg|mkf_(WFvF)P%%GsObkZ{jI)5OSIsI~eF3bzCW0wq+ zjzESVt8Qr6(y@wXt=kEcR(!9vR-&5P#?{tA=J}-lRq|7Uh4i#h zJ#_u08Xf|MZxCbRGt;Y3;>X`oMTPZtnc52O!54O!^TtfFB->AXv?DQ(jzkwQho73G z^2HR7-TnB?#}k`_8^8Tn{yQ(tW^rG@?`)>8p>D1nc@B^0$@R##yWI%fTPUQ|*mOcr z>5em)7*su;Jgv2% zzJngVNVRZKisT)tn%MP6b}F>p8syKA5bQDDoo22tTaS_Ux47&FYHF{|c^#?bkWvWQ zUCG z^4|L{*WK0LpdHZg1PPD?K_hZRjil9##%p$V<8CAFHuhoyw-LLyqtQq+azjZJDH;(V z4B=fj+Iv@3UEX`|vTRmmxy$_m6&=-C`8U7!eICCu;FC5F!69yNp@*$o1F~2@LCk0n z8th~~5=ZqvtyavUYOqM6a*l%b_mUbS%A4%OC|D)G6vX1I^qHd)HPC{b2_GR9k7=Ol zH5`8*#0cUAX3Q8ZnOv|=oF(kIqCV1ye2~|fKkhmy+U1@V-V4*{?FF*V~4Qq3GPXX(Wm@~=)_TxOL{%6}|x!}#c^tmesD+k3|w zFR^)6FdsesS+ZHp`TgY{;vtLCyvxXqd{j*8u9vJYT+VU8*?CvrGp3Qo0`-SE6Z$7 zjl&UtBT(o(1*1@Mt8V5N zSBmBk_w$FVML&Bt;EcX}Ic#bTD}B#=Dw7I6pn z9ZugD&P5I1+0)mJ%{qI^13UhGuDUqrDEhtenmY_PcXN)B&a*(o$i&@tKYzBj>0bKM zd@GpQ-Miyhu&a`$?#AZh}l@Rm~&-`GB&150n zP4NN4KOPJ|rYW_1Gp$(j6n9Y?Qvvoy|Vz@9>7h`yy{&;Fd%s(OqGb|5aPkU^wA(ENet>)bK z@&D8%AFg};i2tU{^i-@ib1<9Q3H%(FsMrYv_Cr$eC80rFSTvv(%*6!0hn!n+6=R6F zhk>-Wvt69IFWSeLw9V+S$33`wWH(sO>j7NT``trUw1>}(k=A!rzVRjf1dKdbaR+jc6M;eYIi4TZ%-JA6QA7+lxF;n7}^2-g!brc=(N@FBEdm zlMDnW9nB+hjQX*uQngefU2}t@ubNpBw2Q14jeete%x_jLBw zK5^X&ly5n{WULPKT*=+(AoBRY6+qLAIAL$SA*XC7IxRED zRlAX$B30g?TAdO1n(6p5etZuye*m%h2aglG#`&7SD@rQj>k!V)$2Y?J z8#)2GoTsAp%<{+(yqb!Z@cW$-+fgLDfB}$J2bHj#jWnqBG=40{Xfj#F>}ntZ^$`4e zeySR$hE=lEp>4bNS__sLy)X9!?=_hjX5-iRrj3`WWf+lBa$>J^gZBC8ZxeKc_$kfv zXhGow+UfLeogT<7wI2V|bI3$)uiq%hebu>@m&Ek1Ru4_*b7uni-z}_y>UEkY^787I z?>f%?W%#(~DE&wgI?kXX?Q}XEU0!y%OlG(5Y^_J&kge2S5~njBM>-{MwWjh13llLj zOOopxV;QC{+;SYg()f4}8%1i}?UGK%>6l$4q%iF&wc8ZEC12%v7;pK_cQ@DWl#b^H zucf@M&p4X#pBcUMUmmyqK01;lAl^R44{LLDUd?}j5Ph+(iibBC0{arvGGsV2R1$7P zefd+wKK8)7tEFet#@H#sncueF+Prm`-FWD_{gh7Sp)^`kMJ)TDM;P3}`q77wA;;O+zbqja zd1C7xO1b1Za8qD+pQ$sh#g5KiJPj9#aXYAQNxMP3dSfseTyLKMo4f2<(ns!8Gc;3v zpW2tyeRcPa22Til4gfAMnZj$~HtGWO!dP}jp6LVDG{mNm<_?w37emfLR(D{(mzMDf z$8fVHxnPJy3(*_p3=^OQLH~LGfEI2~){3JBt%=*SQD*cv+ozZ2*Z2FpzWew_DUc3$ zDb%>>;RJWx9sghuY8!BOt5R8zSdx@xb6pk&Ip5^n#^4tdn)~Nzv@(GUyXlvMk$z{f zmZW?^l`GEWyZ85-jB<@tOrA>hbrT-*;AbnF6{`z-9hK{#X4o2PiyfBCM5J(?m8A7M z$z1Viu^8{aH?uMNK0qT8f#T`<27V87)3G9K1{#4tmhpgLQ?U=DtAzgjGPd`?zOuC8 zkf3kW>Qi(m^Xl=wDw9I@&__1^({XEhg|TBeqL;4cM7i}(0En7>Nc7_qhm-|Y!^LA- z@Ime1FAM9jqUi+O3_^2-4{Ncj0g&Z7W$Qj$K`Yyb?aH?{4A@^WIcEEg9VNi-(1V28 zg@ff_gFO)5e7AN|wXpYzPdUByJ`>~0&U>` z+eAslKh5Vc;qzPdeM$!3_vPV4Qb1S>N;ACNx)Q54W?t^Z?LT%CoZ?r}&ep^M)5~=E zmMA|7UV(nIHJW338bhX!i`?~e3J)Hw{+z-7Y3Aw61C^3ox&M?Y8fD0=E=Tr3v)5Y~ z8J6=$z802&HTs%n4Q5ea9DtSrGWlWf+K;|arQr``sNkXxEIJB>97wi$GS zz9=8B(+p-&Uk^gW1yaOhBsXdF`U^m9C+PF4ACzOMmpB1w@nEH$v$Z~cQnhxAeLZyv zr5)roy7~r<)y_v}NIb0Hu&eX*)3D*xP7NKsu*(9Hn1e>Bn`rf1M8t4=>#ZuDErD4C z837OU@lX$YwK^m}k*upcI-VreBneLS6Q(d+9-<<(G`RvsK#B+(LIZ&jqw#ncB?+eV zrr7zwERoQ^Dyb+Kf~62+)DDVMuSpH44>C?GPC~>5X|jiycqAceQ&nZ;e1q=8`FN_D zFJJW665x6PXPJzsyc@9YB!=T(nj!CvPmQ!&@I3L%CH=&UnW9zwvo=dMOOu2llm5;*4l)IBmq$s&c z2O&v`N7XUXx(Scau(T@rSwff_&o%ATFdl`YxT^WA7AWizwhQEP3&2v->YN{w6h#Px zg1_Sw);pmlD=mT@X&41hY!t5GqyRe3R1g;-D6}f)?xJX-ox6ZsFH8sZ3*ixRNAu=}S$@ z?%|Orqqp=QC4zQjyC7`lu@!z+kq&2Va+k0@WEpVb`I=Es(1`Q}1_V+{x}(^tz$285 zs3NMCJK=QAf%U*xUJx4UxUmK>hxM=`*j8)tP)~3$E9e~K?T(K@#}E)Ina*VkDe+>b z3$fcZ8q~m-lW784@WXa<8bHoz7F9@t&yOTpm0EdM2$p%V7Cur$+1XxRh8;@@jHGHv zlN{NjyHu0x;$kIhHs_{Y5sxHi>cyV{lGc0x=SykWsX&ik71(PmDsN#NZZ$@J)NsFx z3-yM#S0lsE02vU=={6?w+G3Vq?RB(HfL{csR^2wo?T3(IBPL~csinAh zFGoku#S%05IP($6tHwXX8iF@X*Gs0U*T=p~c>PQLAFpsoSIX_&yW+;~4;F{ zIi;!`oDj7rinB1S9bIqmXM5@z;`|5#WuOAGN?EmbDI?+wQ+Y#XK1L=f!zxq%{ z5%`>K`u?Doh5D(|6^qZWtr1%XQpyrK_Q9B+q3lzO}4xtU5vgSw3Psxb0?t`zMhV7Q{Q zkqEN-@?=b8;CxxCdp18S_I&Vhzs=LPCUX1n)KaW6&AQ6PT0j4;^sgn8``z^6$)jdJLr{0qn^#wht_SAJ^V?VF|lAIOEzOHH6aI3F-daG#Z zhEm3XniADL9k<3}rv~Q{_AIfIb&`kQv{;TT2X(*w5v}q5Q*7Jw!TJZGXW?Jfh`)J9JyukGv9ZG_lYT#n|jsUMc4f4KliKI zRt$Fk(4N)Knn)49^yauFk>o+PD?JVV#Ej-iF#KQLgZBq5>!SCX*5Rs?yrDs_ZiT2|A#y5E6Ih@^vqW=MF46b@;reL#!b z;PYrWdxy~<{`P)#C>!uriymB>Vkq9>r>9V)#bI%?sHG;g>9Z^QZ_}^XQSd}{@q3YB z&z}^%V{!6VJ+@r^xj=p#41eWyR7t*N6TO|Bh%lxqVlLoJcp4KgM!v4}V4ZX1tr8tr z@%o49&7UVy@f9LDauY4&E!1MzdYrNAD>6=Vt5M6Q^*Jy{+`Uqs@X*|RTIa3pal!Q8 z#H^=@A#5#roC5X1<95CTmL??Ptfy*=raxD%9JL#OYsTAKLqx4+k~wN+N6;3stX?7# zl;Q3-UHnWa8!L;eIpSd+=c0wxt85EP_HvY*XAI%g4G^=OX+ToWU>Spu|2;sf@h+7y z)kmnxP#Tl9;g|>8xs5tdLo*~iqs4X?>-2P~+UPuPaWZdUY19~p;caz0Bhy9<_w1B0 z_>4pdY*(ImNh}L#YKO;}>ei|fle8g1oH7*-bqy7VDB%>h ziUprH9UURAKStXq$9_8a1sZAN+&}p5W{tQ-}XIi0#6b)okfsQYO@p8ZckGC5O zLbUv0I}7thjch6b%HnHOX7;mR*@UOrO3R&ZKL6cUg+1Z;kJ@JSjc$1Unf;q<*Zm#s zjd>O!`*mOU8Zg~RmqXv-lnqHmAc%Wc~l}lxEZl>onBMoGI1S)X3SEt~guo@P| z*v0v-#5p729=*BHeX)M093R>~Xg*Y=aKB&=J* z6v&gzW{quN4$V+%t=ack%&02#r!{5atRO8Nn?tvj2S5-UDY8(uGf>Dg;4aE>o$4A; zatu=~7xIVHTDpy;QVq>1`5MXFAl5xy5QBxk;hmlah6*P0xPSD&8L~L0Q?>W_4Ly zrK$s`s7+>qPZ1}EKD;IsV5nXq8S}cIjpuU<7Q<3d{Hn$(mv53%E_wkrLm7MYg=$G?koI}`@_e0VMJ5d{B<+B`9 z4DW`?kS%*qq6@(9 zz?Wjo98HgZ&sqZh+Bn^11u&xea`Y|MAi*Fg?uHGH2>OMf3G^bLs0>@v27MrX)FPMz z%s2Y5OT-kRynX4niigB=Bdl;k8}OFJBo|xL12V_IY+!wv$Ahbw0c|X|u~$ejnXE$6 zo+kO%;+gBno1i;imb8M|I?Xhy!{ssbv^AwUP$f5Oi0!cyo>7970KI~s#!DJau zb{m4@P10+WhdVe-50tCoQF=uZ%;Ll~TyP?Zr*v4y%k285-E*EiH~dpv~o61FpYvtgv#u5qb2hlaX5^B(?|H5sw;3oOhDIaH;Ex z==K+Dq8_K}KaY6s+GjQ^wXolubT;9Sdjiav$W`evWuKOS*Nlw&O7Y{qVHzfksD8mF zP{JSg(js>w&=iW^N|a_Ue$=cvcqm!yv&^fR%^P<<2%KR#g@__I92D@`LJ!Ln(>hBq zxo4reAQ~0-F~8-)&3N)ON;ZlrANJtEQ?%WMkmx|HhRwH$sG)p~^_4q88R~P7*Z2)l z*Vc^Gm{c)U1t@ArnXB$aN+ZRC22+561t~($cd;f2@7%)bBhP7PFE&b5f>_x_EeC6C zOA~y?^)MKO9&16jwX!#5k=h2IJiU92H96*rd+y)zvdWj9y)WfQ6WXC;zzPgS$|-TA z*te~p^*KQKJt48wbFMGp3}&0eG`^q{>pdU)I;lsX%l5}Md|J0FwpHR%+;sr=0NxKl zI~1|My2heZn@2x83NE%1xq&uN$05~O2!G0AiD28h5Wd2S1ewL$H69M$q0)0){?-yh zfI^BeO}CmBJ}AIZeF6!AsVi^rBR&-Nc zT9VZ`K=t%xqGfzzax!v%pCleCS}QxpKNgkn^>rYX&B$!0v5SL@TTB0BrWfx0x74H4 zUrhhMk6nhKNViE$b5EA9mod=Nll9*J9z=-^B7paB#?6NQh$PdSNMPeKh_`8+wsQNP z|I0+vWo3zePuyny)AQrlc1ir3#hV$C>F2w$eekw9@vUKI&S9FaFaB^2)9TXPnC5>&=ROw0RDKMaoUgX*ot$E*2&fJV@)FmHjdpohmv!uvZ-hDV zf08aw1=-Ve^_7df_`9keO|C*cuT=kCFYkhEz@Ru;(vl8YNN&)n*}@q3EbRq0w#f+& z&Yr~S@ZDa#^aqswv3oKlWt2JyVwu?<*}3Xai9bx%k_LOe&FyJ*Cf+{NEdpTUY>)a} z;&P#;_Ma%_<9`&HdiAFFroNx0`_F$duMK8a-oxH}LKuPKvD71m$_*O zv(Tpga26l$4*Lv9=k@J*bQ5N60=)#dopnPS?GbYkOU@cFN9>quOcMi(?AGi z$>=zLeDbDv24&E-d@|7|YwZlUj3gUF5FutT(*kj_J7dcEpJt24>56XF&{}V1oj1BY z52D?4q=y*i1mcETCDYfG9}&C(%!kueqn}JHR7oYUzTdxF?r`y;fd=z+W4wsSO1dsv zjIA~%8g42NlM5s|aZI?d$dO23Y7HOnQ>1Cm@=zthsgra@FAI;y%eC|iO!TTy$|G|m zv{gbA2T-U&W(dd3c&phd3LcggK<2_}s-uw3!yXfD*8^!9tJSr=bYVM3^dSeF3Npm5 z!b$#(qmB6*?!Kb!-YIYwD#J=v%1g_0@=^Pvb9N-#UlcE-v_U4w%P%3fb!tbqy36F} z=m60X+pTG{0Y#I(4{i{)iCU&4A}(*a_-S82ut|&3iLe+7W`qwTs^{^S1a#qCVBGX? zS6jQyv$HxwFSC8b{@CVE z^p=a*V-F=>-p%*W>DbsY5NgYWbeo%OZ4&jHw>q6PsDEUb2Yd_}hW59TTHS zH@%kT&Y62STqaE`gG1OP$IV4V+8k%Cga({hAyjHpBJw?I-e3zbQ)2{TW~I*T#iaOh zS)+@}F)e*KIb8R4{miTf$O2k&=cn#owit)~b;0usMo*OzAQ?(nqZb&qRnrkvZi~HnZ^H7RI z|BzD_FU7dwD4x7^U=gq6cJcDY+;Y9fWiNwkR!bz7h-j#7_-Hps{FB-9{g_f;loq6^ z_ZY3Je^|upHJ+y&hiH#BRJhEw#Th?D*+5RlC++8WR z#DGnj9`DCsOWoQsFAK{-1dM!!^y)gf5J5dg)2$6i8}e*E3bFS#Qf*04Z_LGOfpc+1 zT7Yjt9esyB;U=YlTv?efX<&}Tk*mfQnXD)_O{Wh9`vhV(_4{c6(ag?D+2vV~72t!} znsI_!lf8`7?KDU^n4v_ekvynol*{{h)6Q6>Q5M&+4j zg9J+Vhf(6Utg>5@XFZk!T*V&(ycVS18Q*E6WBr8hdBOJwZDU*PIofW=1dQp;D#}dr z7DAT#ZX$T-rK~eEoUK^FPwE(#Do5q;UOxWV>tRrYM`)-ZYqt5tQL`#tI^hUquy#Da zU-yRc*d>qBa}>vgEYzmI;MZ62o)QLK!f@SG*%z&E9+Jq3{uK{%uNKONTmlYM7roIU z!vMMj)oE-NViQ+CQm8nYhNg33l*U-gb*v~yyj?E2I0Uw!@NN-Dr4V>h30)4FJO@J2 zF%s>sWAe;4)rEt>p@umHnF*%}sv?!6CJHEj#1lxlV3x-4LN+3S)#ByD5TU@0NLq9W zlH8Tj@{^@E%%ygfCn8U^8ysqa0jK@*aY9GXJ5m(NY;b=S37`kn{dSVwq-G3s0-l6n zMn-d!od{4>!f~mHsn-|4fm@6dveYN|Jm-H+Qz6Bdv$X3Rg>MHh6!x6Z_ic#!wb(ho zz@w6vS&jaw5Z^vCCkoGOYwT@AI!`1u%T$Q>dyEy#lB-J9(NzWOqZI$o_d+ZioAi$6 zm&>O7cq}-VXXEW&gbyPC2lw7B|T+R@OYs{P5G?ljWZ_%R>I1zL?;Tzz^oxGHvPa|mB*))g` zbv~Dk43LT^_QWzqot@O60V8q{BD_*`Y(F2}>h^5!Zwi7i>Ow3qn#B}%r)0AR9~KVX zyB5-MCQN818#Kpmbn#KDURd{~(si;)w&v#)H(!XN$xJ8qlG4P4kSNCl7E(>(ml^4P zOGSU2FOBVzMY%USUij4H0@2t$ zlOVF12dngRD4(;LxVP1OTV)>-4eSN#v#|I)N@u;qGas{GiX-$iNCq$XW0)g5F-UL5 z;*sogmuz+5aMjd!sJU6&TkFJB!YH&9rT;$iq92*{mF~n%8OBz$1X@b=-eecSb?+Yd z&r_yzLzNZj>9_KjfUEY2B)zrQJVvl@RJz#%W@hL_?J6^8uwgnqB+GDp_+QSx@(0h= zY5B@uzF;q1d;iz6A1i(*xIe#sLyO(s9G6jZsp}sH20hX5e2AqEX?_pCo|pc^vqiE? z&OG@3PK9^u#YDK}QxD!J{#Af<@=SNXk6kOedtxh{l%etWY47`AYsrrTlzg+3C^RS3 zlnZ5Y%=)SQR;(-9?e;87U7p|Ok+KKWFqWIFp~t^vOymG(t>O(Ok87B0c1!Jt*aybG zS@2$0UY(ffbNVc|Uzk+LU+J$!w#HJgS`E)KUkvV@W7qh#*#UAXIsT`Crs0{d_}$l+ zo_lSRrj z)T-PMXD$|)Sn%Q?bFNj1)B>1%O$oekt{-@tdvINdQzGKQLV_2>hK^873MnAm&*ai> zgzD|26YT|CA-dyj>}CA@=4CN84^^O;e7XWjw9N>k(OHPbE6v^P{AlqU*Usl(tS;0< z)x6{l%msE!cYKEWdVVmQbad5ao_i{n?pf?tJnvA#Jx5V)NtYO*X2lj44r~mP{-x0G?JYzUZQTz&AE-n+&neRWWHW=i(meJoa<`f}# zJC-QHIjomHyFr%3Gn+zu(a%Y&L*MAq_Am`$L6|U_IM4i&UPj+GZn+a6U?qFAp~T3_ z$sS4-H;{8$AYvXRR(Lm~2}}HQHNtYk>~F-SSFUGSldDO*^kEN1aP)^h+MMWQTE83` z52CxjLNM(Gc+O%v8?HkwpuywBTh&4oD+FsKa(OLE#fLJj2$aMcXeF?ctL4<|?Q$?G zPF52!g;^ZrgC<6B4+6}kZrEPoMuTBQ?(1Zn-f*S2VJ99HUByhZmaA|ZVOG9fH06C2 zbjGU7b(pzssQ_2q#9+9MT_wo6yx-Db=w6r-gH71=Oz^ ztV&#ns%>&u9+Oi7+F;R9DnO(xtpVAuc+x$dKA1lTs8)hFlO^ze`&Fkq4*4VcU1Loa z783gEQwdo59Lh~arW(RSP6)hirEA`q1 z%}++|Tvc3QUwJjH8z>#HA6|;366a>KuXN`V#f1T2nzixFYp!GaE0cj}AT$>5_1+Dh z;ApsOpChsBc7E>c?)ws(I$X^3mvPIN?fI(xw=7}J5;?=2c!2Ptg4$&4cIFc>xKuO- z@U&j``Ou5X0FD6y4;zi2K$>1fpfMPnDb-~BTFXaUy;N*EvRV@RGLA)OFo&2Y#2hfh zyA{1-XOqBMKAo#` z8xlM@RHE#9>=`EX>XwlrZ!Ca+|O!~utK&!6| z0@e!s7?zv|-^Wf+F^nCT^p+AUD)`Cg&sReUXR@T|k2>P69paw_$K!^7#6J+v=tcrR zJW^fxukRkShQEi)cXFnqJ?o`VqvEe3dQ9_m?EeOGjWLroMxKJbipNXX_{3X?z^>X# ztPh^7hNI`WP!T`AhMJbl=_so-o&)+tD{TrAsm85tXo8B+_^&?eB&7l38S*xP%CZ`P zG7f@j8DN0)Wd)7p`nXK;AtO^dSY~u&!Nct4()UKmXgjoq^QX(clC9xiP|9A(;SSx_ z&R{FXQ#sws--?m_gYq)K)?nTak9*9Qrt~2xx!k>@U>^GFFVDAp(+51SYGW>I*FO(BEip#0p5t5rllJ3-X68hjKH94@M|RKp0@hSJG}9UP6*- z8KOdIyQfxz@op@3UIuHzxm=OrYRhYpqb?U4=OFANP^;$QCJYqi*-Ay$fCaf`X5X3s zaXO0BN)QDj2vN=&m-fRNQZ%hUDMdpft&&UCTSu)FWTd4DG_Z?_MyZBMVE}ro+DeG+ zFR(;>C)e!(Kv1R#!yj-?dKma)`W}VD>{G@Vbux}7rgb+J_B!r4;%L-sWolH+IS!V) z73E? zg}|W1Amf$?i)ZMp9F!z={V{xk!I>56xFY&KYyWR_=es?}!lvPeZf4JqWDFUDLDg#8 zhgU+h&Y$tr@#a7B^W)m`0mU_RajcWeiRm7IWysM4!P5g|)+>rv=)?1{O2lZ+={Zte zX zlRDYR55}@F4v`@~`DS_u6cj-kwZQx@G5smSR8b4*7LY6+EA2^lPK}Hcrxofnp{B^y z*aB%!n<^OK#C6(=x|iCTI5U`*4qPB${H!UkzfUBrXv?6ZfxmRoh9S%N;USw-E;Rxt z{VcpMl2ZEn!!5%dXIK(~9g}hn2R{xJ*d$SoXn?JhA+=$P0z2$e0B*cO6#MEdN=jD~VeCd#xdo)nh&D?~7vuO1!hz5L~C zICPDUcmx_Y>Jz1L@(E$--{*pFs7la-h9FmL_(!B8$Q4@VDHm`?@i?l^~@1yS}zzU1+{LbSLUYqY| zOb64pz!^fi5e$mSr_|*BsT`Ttg^pDM5;SPpJwaua}k6~ zyD;qeSD+gkcMa}jLwhR|o>AZ9j9}xVt~R~8&gw^&x9M*jl05^zphEqzHQ7NU z%~2h&yH?Dvt*@n231?sKtw3@ljb)0oL?6-2l~=mO1mF@RImB025?F6kR44vlj#~Vz ziodmf?ND@=6M{RR{gt9vQ=Y5RR{X|s8q=lJ`5L){Z-!E#EBN#&@#IBe&cjPXM$3-7b1sp%{bjxI%ol)Y$`B zu}Rn;hI>gtN1l_s$m6G?f~=_$B53XPJg1HCc_jU$`Bd!Ux%YBeC_$U2mhu%I}cF$t?wpIEuA!K&!>Ns&^pHo}-9wMzFo)7DzpLo*a>DKgU&H=XfC zRziDqWgv%@iP{nXp_lj_SwSE`BQ8zOg0P(m60X#aaP;SRI};J z)7oKxQ>+w7PCHP?0}?I|f&iSOSk`a*x+lSo!EaQz8!V!zy;}>sQcDqsM2AG)sjLrf zE)6I%k=XYXb1hi9N6lc}6)1uW5hKGx9Wus_<%~6JP)S&Mqre<+;!Do5r$A4PqlK1I zRD9H3YsjGpfwHD%TNN=WTBl!z? z7|dk9qOaZ@r#ORJI!B3z2)BwkcaFTq^b2ZYp_b8Usmo}TC$E321vL% zbt^u5nJdpRMNRY)n#bY1;b*U=t5j#Vr}tw4%%9lkQ-d^$8Y_m?uS-I4)j|_U9MyNo4!7e_fJ~|Bs%ToFij1onVw=qRQfk9@y5W&uASW=v5 zWCa=ODAq;{%Kff_>h&|<2hd%Y&CD#aa~FBA*gU5nTMlstj@IdXDv$ZAH7BNf8SRf7M^lrw`SN+guhs{|PpmeGj1&4VkHhJI29B5_NGKuBC zgtUF-ACPw<%6u+I()1jM z>JT-l56K~Vp`d`HU1iEvI=;<7pVsmyick7~?2soq1$`2Y?U^=GYXlSm)R_iI|v><1RoGwVqd4OpQK zPJ1wFez23qu!@-~raL8zozPS;xBy)Z3wRB@r8(l39fbJlglp)|W1|mQRQvai&L7Oss%-ZtaJlVFvZ~ZpYj)w?m+KMF{Ru9o!;12!mfPvlJM!=@BYlSk3H?mPVnulD+=aE zC&y2vnmea6xsegRrZU#Z#=2Zw2Y(HlC>x@X4Cli~eT!0;1EfxOBUDpDsx4D!sPr=Z znn}{_rV14Ld+kBG90#4`DPA~&>LvvfH(xxsg%njs zzD4KTGK5yf7>R@Q{q@eOb@pS!L1IYZV!i3wm#zLRyDK3WKYEH+KLRW1gGdz)R@x|> zdkidP1Y(wySgpS(cA0N8PqB>mJKJsph?6}dUtM?Ffa}~{+%^p!lo9BB!A6kOG^Wg3 zC1yvIO1M3T+Wj{2)?Zjll>o0WOBR1W7S|p3ZrAIk?|FMRPq7K!c~v+3VHtLaCW?7q z#7iIaCtqOC@AlGx_tDU2yqt1I#VD_|x^K&{Tih#KtM&y#c#Vk?+uBGZCC=!rLmeGU ze-;m>PFadYGQ1P-xW>HSPnL&QPU|DKkqid!V5eSb=g6@qB+6a;gS2F8@#OTfwrYRy zduk~8uir*$@-8U+jI6fS_%Jj0xjQz|5yX;;4Vcj7qWx!2iAf=F1N@YyS}Fp$63OWg zwY*1m6c;=HMP8lZAPY0j>@uh!}i-mfc2|YCbm6 zgLD-6M6I0ppR*%gx@1J`6kBlmesW{86N&4e{<_*!1)KR95^Ut{D8NX|*w{)bUx<(V zu%)5H-MgD&hz8ToavQ}v-nxH$;0zogq9EgQLGOLtPsd7u>mbqKby<=+2eae0$_HM3 zOn=hBY#>jAWcsJ#`t9sm^5}S|%xRe)a&Y?p8>`>kO;W504xVQ%1FzjsJ)=D{0XeZ- z|8IS^_!@m+YCExBJKjqJJUv`YCmC4gR4)3 zDwqzE_(sex)IeRR!@%h2xYLTNQIgV>H5H$N2p^LOcs79!^fDQGbP8zT&y(tKeL=EV z$vlh- zt&ww&x3+AIsg9z#;Y4WS-cL!9$$fPJ$3k2OE5(Y2LJsos&K8?j5pMFs_bR!9OJeWe^@#1`+G4QZk1}h->3#uSG zvMJCA7$Qw4Qc=;Vr$}MMnv*CP9+|)q8VHnVsX`mBo(@#A>=+vTJuYDcOkB|}u>m1O zgt!AZjk}Gi4*6ticKBfVlL9y`rkYKA&!7B{KkWAF`^`}NS?+-UhcC7!u1DKq>wzBA z`Z2yiJs=m6`wzr=bMnTy?WQ>!*iXd13|jsK-^n-Ws!=fbU$Skn3Jun@H^i>U(_m)E zr@I{Uj3ph9qg~kf%Ujm){e<3?G)$alMhClnv^shB2lq8w`PO>Ai?x<{pHo7x_VAq@ zcy|Q@T?&)}K)jSB?G9!H>`cXVk$cA7=h=GoU8KDRfzPNF5U996{DH-i|-dZr_w_hfyS-pjHBZ!{)U!o2P8B(oaL+r<2jra%I#@j;v0e)CV!5)&vQ zHx%7Mpmd~3Q9;H86;D9M&>SU4m8Ca?E~~}b3IaGYjjYF7MJbsZ18%A9)E>oukbWn7 zVORMO6U(`rgku6X_(1Vy8n?nvLzUI{?^7PJL=${dRqXDzG6XX@q8WZLX=6h*!Y#mf zyhFLQvA40dQB{tXCt@vH;ro+xmMcN5P{D05;bQf?`^DSP6i!AeEo{{P?JcgIC_Y>(evma;4? z3oN}Y9Rz7o_THnKS2{IWuS49qtwud9-fn@|Ea!T4xzIHmy-$ zjV$;Sl+avs`+;Hhcz$19dzpqIVYE1_xvnSuY!f4NRC4v2S&8?Et`ocM<@D31#H_=_ z5sly0zhv3GhQ=>jcr2by;g%;PGGgnSJoIwq6^4vtz1I52#T|uOdc1&z<}SUhUcK&` zCfZo4v?n`&%&iwWHxx8iJ;)mCtr0XQCzj-pXJ}Og_Wf9QQbkXqywbR_)}Y2SPvA4; zS6t~`VmhaBIB8CsLSkttkT66>mOecutWZ}=eM&PwuwBaX9FSUTVwbGtM%|T6TbW=y zm^LybsBpKT(yIh6eZ#csGUiPmcTmCI~?|9 zEe^9V$AF?=+(nbZ3P}dPM7r3&z287HD5RhzcY$RUr`xM4hu-QTOmf2D_nJ(E!xwtk zX$qRukQ^TnA0{P=mITV6cY%l=RQ6K!IMveHl*uYvr0XBi;FQ-(%ShJiV4L-3W>g4o z4M_?{T>B+HmOS%ZdvWPyk2reY!!xz!qBC`t3Pw_HV^tfU-Vj@LTu1s_=T~ukBELK4 zj}xh^Ia=NMDSf<$Bkm0qQsai6c_|!`SKf_toQEBfGpT8k{u&|dvD_-Nyph8ny?Ckg zioW43#>Fer8exi7$O6hBgvJ(OuZN_ggl$keo@X=87-0++JL~pst<)4rWO_Mu zV*x$%a*iI|NISp3x%2TrV;OV)T+pZ4TCjrJ)M=2)V+Umi&;wmt92_I5T-Lmv(zk~d zG+MVgtzGV?E09$(QuVqSSm%CQT|;D0*6pIrq-(@1R|w_UZHms=Ojm}k?KP*a(V8|}enLr5i$RiU z)u1EkmRus2df@ z7tL1o4hV}y25t`Xy-nNFgG)_#6nkxPp6ys)iA}j++_bs1-<+MJgYgPSbn0g`R7z$3 zRVD$B<~54;mN`~tZS&o_+H!O>MP71$Q)-C={Js_gnumk`=uodXr`fTxK`NhVZ8PAY zY2mj~m(}OzR5w~^D3XlQ4J0O1?O)QynvHu*`GSH!B)6*zjc0Zbw2tNrwH2|vevM>< z!QrfSlk}ckOkQBZkkKV_u|;1V#>^UP>orvj%&Sz;W_Xs)U{-1}LyTW#y3%h4rcvxI zto8Nt>TR_9d@-XgjlSUyzJr#2{=(S;H z=eBy%vjz+GttBGX4Et|D8Gz%1_TE@T2N(@}%D03}KDI%w~byo8#D*PmA z#*`kniqB0ovrI_uP3?77zhq7 zVl_IQTyei^6%BhloKr@nwk8(}Y0eK7*l@?y@y^tnX5Ejqdd03%2iwXs{Q=qfw;hKi zfs6r*4t`0uq%>Eqan-gbkrD4(*lQB7B)vSi?&_cK)$5+v^qZA){FHZm?4z zwS|?ARdo$|W;x3An2RcS6D9e<1P5oJj_I)gF;O1oxN8~b!I>Z^#dVk%}{r}fym zv-;J!;?eG0g~RC4f^%K{H#h_B-ZF!6!LmN#zo#IP?+W} zSgsA<_|>uU7@Fg4@2i&{#xt}l8Ui%5`-*9SMZ6^)N{PE=8?$77_vu2zGELJAg|59I zP@7>?ca7$_zSPEpCJ{S36tZRJS&Y0;jSRhVrx~VW2K2VJZmBMef>~Ih&w#%~uZJ`JJ)=y}XjK%gWTsF=~+`uhpoRDXlP9ygR-IU-yLgz=f0v=nx9jP+%CEiesO+Tl-%INC9eA|xbp6Bl=8lvS zQB`96-PWAIgVkm55}`Kpmf*K*nN4=kd6kOd8?2Pxzrru+*vhm1yy9}5Z*sx5x~0x! z@nABMRhpLEd?vo&l2+EKW8E3Ae%;%iWZ_kK|55wRYu5!OtTvBCmwyiiXfMi1exv3k z{3qqr4qx7gPKZ$CCuydS_c6^RmS(9my=Kii7spZA61oMY#j{(lqLD^fktrM0?rbaY z(vp~T8xPS;M`!xE!#Fi7MQmv=;#7~MN}JQF?Ta4-)+x)K@3}~&ohDYpmuqRZMRMER z=B%;74sliZ&{TBUF(xI?WMn}-P38hCV# z@*HpSHMJURjEL-PLj!g}orqOr^te7XE8bdBHB_vXs$r7{FBZ*avE2WSF{_Q0^NkCd zJ&TiNdU{UZW3=ntnr2rNX3p}_VI}JX*1ooH*hE;@Agn7>YOXReA1MDSJz0J#rzp;_ zO0Qmsi@(#fEKQHIh-Z}9ag8xB5*I(?fuu|Ct{|htNhz`J6yEH- zAY_zC^a_f`%f^{;&6MI?10qAjtVlP@d4!J%c)`Sz7X*&%<7>^&NtC5}?s)20mlwyJM%QfY@$`w;GheB}?x4b#044V`ae15ltaiz$K+&h6 zV<=}}La|wo)54opoE9Z~*5hcO!r6hN?JhYUa-_%K!-$o8g1G${bJ5^rwESr;W9#%O zZ=^mRNT=LBYX4XvtP&`Fi|%)r|6rRg=>5&0pu1IR@RNbb(O-Vnbm5%CuVf^BH;@$9 z*PL7~8yvc4@G39CA}g1EprIwPK?VBRa>~bX+WG z!z#y>_s#D#nRn*PH0qUg`B@dLu7NJo7Q^~sZSB+~y{qg*0k1^wLOpYVv6~USQ%5eu z`gj`m1x3~}{-5$DnV5DCe#OKtJ(*tF*i&7f-k{l(I^6fL?@^1i@N%*!qw1ol>Fj!Dm@= z@|1=(6}0X=tXeB?2Cty99V;x#AqJI78irvZfa}h;Nq@=7^1D>|s5&iKni|L3|Fy%3 ztKzK8U(#CcB{ELkE5A0FmGsL{YF5v~@0b59P0kqq#Wf>_V=TDw;8NbQ18Tf9yVzpw z;#)_`vsn+V8faZ9g*^Qe`B~utX@Ol2OJr4%>(4F7Nh;x)wyw%(R6K6%N?Vv4Ga@vy z&MbUTpi3>A;)PK#OjN5>E+17YH^Z|)tW*l97}g+DD&M!lur>(0Xkb{c4u<^+;pN&G zR>8rrGYv{*I6Mb*DV4X4G3-K*QaKL!J~hQKA;iyi!LYBKG0YbDP$B*Rq#tBrSQwza z6l54-SfnL}y{A+vPxLC4>&!811JK$kl*(Z{kgtznfa?}FDG9c^(`Uiskr$KJ5A;=w9 zDvyKwYF*GbN2zQanyjNo@Z%i9PIEUG?rfK(39TJ0>#^C3ZDQ}IWyr<#GN-#=V@G3K z<=NC>Z4HZURlZ~DZTuovBpHNbROBMA*Y zEjHU1y}4*vWL|shpfui1k3P^SIClqrkS@T!zqqQjsiD}fyFGS*BBObDvqdRO16Iv* ze3NJ_>8FXC{TK`huN7ugQwU3moiinZ(G@TaP#Md>JW@~!H z`00AlQ-9_&y|fKX*=}Nd!OV|5vH2q=7o~WQd!%{BV@2$l+|!TT&(t5+V7gfvZT==B zc4>ee$I1U*UEa1iD-5ZA$77rCm$fw+Z_ecX-m>Pp9e0W8=%$4$LS&+MZ=Q$O+c&oa z#Kix>FE=V$Lw-CWacO5il-v4AN_}{`R|A5qH~D>-B>JJFre)1bG1(2r2P+lu8>_3F zXrdn3rt!d-ouBwSG3W-V8v-eP3Z4m6B%Bs@WR5hr#I>28boEOxA6>c8CuR}*^|GH@ErT^l$C$fki^Zeqgwrk`8M~kJ zlf2rBQpdk}r7gcwDsjl{HK;E3DGPM)_Tt7^C^yb})3xxyBWjP0f+|ifjh*8@wb)U&RVL0e$8N^Aw=qS*fmS00UdgA$E4R2AV&V(2wJUbeeVm5M z>!toLF*UOJ3)t3=r5BAU7W^W?)!z6yukC2e>dvT*U$--6Ipu>z`k{^zU#4CDwYped z-@U;xpA?=@htv&p{v`hN#p_4t^XK@q>Bc^4ygb+WV`Gw|AqctA^5nGq|x1@@=Mht&tVoqwTO%Z%|Hovzd#a$$c40vfv z;O>UhhxWENHj=j5$8sOW{?_`SYWBJvK^tx3W8*#wk93`D_VDDfS~K6wuEfsE^*xG( z_1|X|9~#yn5-kkl_<~dB`io*-U9@^+*(eL^s+Zr7EpuOE7_d6f&YGPiEz)CaX?JO# z{~;yV!C71GD5sCce57yJi^&+~Ryx$12Z|G7^V$ru7LlKwIdD9{{?SJpKd!GeGz@9s z^fNavkD+!{7A9viO})~3j}M93>#7)SUHn&9Y!#%XAN=mf>DWteE)WI;3M{$8xqZfa zDKpm?ygsgLY479Nl%K!}Sn9SgH12Y2Rk?D(9M9pl#NT7DB;CKc$=^8sB2SMtw2GMR zL9^ef?Y^~rWS!$@Ho?P17uw$aET(#v|SKM^Fe>dBP7kKeE zQImFD6gQ@Ru*57VWy`*g3@rmZ4a~zB;m7#DoVy;IQuU|J()n`Ode*=LZDuia_`F+< zudiA{H*bah3ip|3Y9o4Zmw)-pEjLG9H}-NJwvp=_Vrij_>m5vSlU;}vbZFmV;yN^{ z#g>(`mW7)!JiCfpu*_fT@5Of9rEyLeceh*2Gj<<2NGZI*6Mr7FgY7==hEpra{UFGH z0X3tS$xQTFTyC|#|Bu+*f)hN3z}lik%oOEw11+cnExF>@oWg{y`a6O&+;zr1&c^8kSsjcn$s(|7X(%!a@)Kc%C&!Ggth%ov}LsL=JVxK?a(jbV?nl2fP;+iTksk0kK_ zY>DK)t2Zi7W(_S z46Oi64F0JYV_|xj4n~8}WV|)pD`32>0ptN9**n4_cft*W;T<~x zajyZI1J*#|3Bc`u{(#M(gP4%LkbV4j8O)DeOdq?;-)OcSxPr}-HwTcbSD z`IELrG$`y0h}tL>_)e9{L`9EyUYMdsbci15g4(IyQ~GH(t3va@sd_=Qh=(KKTTkgJ zsGXoTj%-9gJfcw{qDAozfXGHL6~#_H%{$E&gU~*aPU;B330t82h^IYZHx#w8$1PWuNdXP%FboawYcPxxFgyeu7aQ;>bS(aWIpDD2fCJ#j-vOEfo`6COfb*;c z+z-n1Lc@L;@HQyu1{e;FsRR`D2Ry0``T{P7%D4>%MB~anFy;UlXCI&(3L6dB2?YoT ztO31W14QUy&$UaaF@Gr`cuUH8`1CL>^M2AI3Y}*s{a@elu$mq!T zc1DCR2#bm$P##2&?1Sk2VI7U?hyxe`2xdV*Ukev?zW$|3C9*ZDE0lLX5(of~6JdxU zQJeZpxxUloUVTQc7h(i*!{MSX_v$lp11HEPFG!EV547jbfcuX3!Xu)*!y|U?j@aVo zy&^1n#hxf~dgT1bu-)^*LBO=~!`fL@{@K6>jhz5=WOJ1sA@J;9Hd%hC`ib)1n=JlB z8&7;(J;xd1)y4UGM@59a`|*}t5nH16Z1MMAjzVi9qV@otN`44D-&T{4!q6lUOtV7> zMBJW|ud+XMvlD=bksW^iz$y4yJNUlH4!+*c*&zh-&xU;xl^swRjokp#?0^K#hCK`Q zb^t@xG(9xsp>rG|qna(ISz?x&B~*4md{flqqk2GP0eDV+%9MOnJ)n6D0%U_D|GGE_ zjkW5spKl4zmw%#Mu-~F8Ka!8;6#(?*a8b1b^f0?(dOLt^p$S0p8?$WYAblp~Z;J|x zj*i&ry(VJ!_OSOOruZN_#OLaiJU0l20-`&>M0t^~Bc|w%WQPFW{tt4|I5R1CN7&vi z@4xq6ROHUL{lX`FVeiWjgmlCY$yev=4|__e+$uew8$>`?(IY)jeM2`jp$B|>c_OT` z|Fh*s{xhk^TVc^#w{O|`-mV>CQIVg7p+0EKEboPTc1MKIM@cIoW&NyKK(EqET~5I> zdZBs+_)EPip3$ovDGq?j%g62J{I`1fLB1F16%KoR>h?l@4=~}ch#tvQFGp0>bbD1J z0sy4fvCDD6PuuHOShP%3n0m+Ir{*p%)JLqQ&tl-|1PDMs43`(_Gd87Q<;sz-eijTTydq0h!n5kt!l3tu0$D>Ce@sEAeX`@T^B+w$r5 zM12RqG(S+;b3Y`cfB{ih)&6QG%{gJu>bZ>Izw!gr7e4C;>U?LzzN~t^PT6HzdqXnO zn7JP?6a@dB9)I87{QlMt)a6t>qnAC%2KY<8cz>hUTk{#g|E*r?exR;b6s*J5?Zuf; zYq}q((?{1%w^z1Wy+zmLKkoVCih!79C?VIroo7pga8 zbAV~%0S6*f^!s?z+ui+V>g~zw`?Z$W!T8@l1Kp+6Lf-^$yD? zjQ31=U>Y$2C=)7AkJYT%Xl^@Mo)^qfUeF>{e!_u#NG~KO3b?B5jQj*W1JJj_BNRrp*gIyC-*oZ0jN-#x}In~4KOjUeUYBl zO@FN?2K$V9kU4r=l-CD)!gfYSeuAd8FVtlO%8O+C1EO^~0Cg=~_D%6eX{hY#fWlf; zI|(PaPu7oWJ@?`n1GeO60vE);sIZRf0CzQe z{e>@2=?0mozz^x<4>-9uJ6Vn|r{thC#9JLu_{hI}Nu-y$ELF{*a!h1`hqu)DBbxwB zjG1lE@Q;~Ho46wW_aB9le?K-ozgB@Qj0v$JaIaI73tK=4Cgi@xpWYt!D<=UFAh|Qv zdJvv)pDfo4`kxo9kyLp@;9(8$M>cbVP6h3q0Z^mixnfGL9@r#gBKn`p|GEWGI}j}R z3cs`EG;Ub;Bi{4odHmnwXYofT&)`ED$@uEszu|T1$MBW?_wb-45Anf(n|R^q3Eb@R zG5q4qTexNOMLhnMtN5P4pYg313UH52AL1d$lJOY_&f=fUe1Mz(dK|wSaT(Xo{2jlO zcmx0PST4?u`xzhq;Sap>?Mt|4_*wkatB3G0&KcZTBMyHkj>FSvm+%`6MfjDEQt-s_ z-*Mae-|^()ukf>0HTd_P7w}IHeuLM}xQ*|1zJ%LE-o$5%PvP|Uuj7aP)A58KPvV=p zvhl?FbNIf4=kXJtoy9lJJ&W%@cn3eQ&lq#VEZaw5J4Y%u9- zPZq8J_t^{Vp8VCwgM1m;mk%2aDu2|6FaRCB3k(-b_5=U;xk(%ueq~8h_xhzSf7z3>UdBmUsTRrb zHYej-EXc@BY;yN?8oAEbnABcmO?o=pkS7mVkkPKeq-f4e^6XXvvTA_=IdW~72)($F z)IVZI4%Uwm*(aRI_zM;!lkG^hSR0WaZs3sKU;2^Gl`L{7J%~JU%Y+PFYf9#Sz$Sm< zvdLHTUC9x)5h>fcioC#bBpDGhBJA_|WLKOE`E-Bui9b#*o}q!D`Dh3rnlB^V4>%vr z=OO>{2SjsEfQfN76XJCsfYOjJasX9;!mkUj{)h4X`8^ob_`V#-Vf*p{3rSoct3>Zo&eNnc)mR)R}YM|elci?$^Yw#xAAmclnw(I~Na^pQb`Q!8W?u01(i|;<%CSMlf%uj6|XKF2MOAIBTI zUd30xvH`zkxgTG*^;`U#tncyHPJNCSyMKZAcJ9MRY`(&8o;-mQtvm3|C6TyG`8)V$ zZ>K*$zkRZ~@c*+%{d7D^A9y+*p))Z6bS{iXp`xkz?LXtuq*ea8{$qjvaSQB+^3M+w z5?A;=#IT1JDf_9DNK?p&&xfqZO!rdaH;*A=!=p~Z{z^Nsc&LGRQ$Z)!@2w^H^Jye; z&yd{QnMN!wNhjvo8k5_SGKu}^;{?-UkQijt5PLTnlRs~&B(6N*6Vf;#apPA_vU;Bt z`36ZPziTcbynJ*?Wl{~HSlmbG&1aB%yU!7^d&I<&7&x?lxQrML9V5OKb`v`q8i-$I z^#oV`fFO2^5#Lyh5yPgB3CbBIkwjMzjbk!m-9;U8z?DUAp`0XY1I@|veq#jBshh~j zyH7N^vdLe~Y{@;njYP?y5y_vGO?q=sDeghHrJC(e3 zfkiI4tVw>gj!n{rjY(Qq8FA$J10u!Lo)lU&5Co2qIcHjlzF+5&y>H(m3Y}Vrk;qb_ zy1J5hXM-kr(#?@1zRM(R9cqbl`oJ%?jM&QSBL>#$kkOGmBKRF8F>8YnS>|F&CapQfb1DIH6U4VG? z_1(*pX%knpR{A`t{6DPko_~j@THl30{^M$L;W!?G3AxsA9zk91v+KLhep@l;@Aq$? zmy4JqokIYPfd9n$4vYZ9C<5x2@O*em?mzoQlScXHI@w+t3}DxY_#RZ9XT6xRA9lq;bO|&HAfmm+hNUpTi1lUmO|&kRxkJLenal{3T>`? zx;SV)Y0NEIWXkH#9dGW|)y`b4 zPnq1H9j@HpjK+g(VjF^1ulD4=TJ6BS_y(IRcV}={zTX&>b;^MIsaq&F)YFUW8$BLG z3lHLcQ`Z_Kzv95XQ8I%Y^@SoRtY{b(qe*|InSwak1jQ1r0%c|5mjjJAHQR_rmwgFF2K< z%Kpr|=coRe0Ov4}f1>}nL}%Ur=sxi559be1zo0{%te1(De=h&C76^fof5qNSp2Wk+ z1Fx+mg*)FS56|0AUj6nB(q`>jWUxd)ERk;}m!4Qpo*4EfgAQ*YWt!_qzp@2nY}}XR zM%gOzQ>Xdl58Ym*;=MKG`TX@HPs@mG)AlC4PHrPD^gkkhNL)s;f;N)-$37)@9@s~2 zcm9+tTM|W{`(qioZN+=!xq5$+yWE!4TJ|CNYwC9L6V_VNq;nzZCbK2aEL=g_dw)kZ ziuRIk*$0rX82pPYuXG@f#%?D=oukQEegN5Wb2}++TS|`6{7AE}-yjd~+eJpy9Uyn^ z+e$hdBgv}4SIKSc&q(v~m&mcxJIJHIhLDbbgp!FTcah_dUMJCe>1n<>wUdj+d1N1O zn@Iw(4Mlo{Ab7ecQ+IT%>bIed|&(Ad6CJ!WK!Pb|C||v6!rf(Lw0~}1Ob%; zmlL4pQ(LOe4TCXvM^BUm(X!zb2g>*C*$x!vHifD=2C^@(d~(hQ=|Y?MoBV%|-4VM! zgww%W!XvhY?TL!s61nsJJ<(fyC;m48X;QLiTEP?pKoA6hT`YEiw{Q35bl=Tk=1z`1Gu_iUce|IQRGz9|_30BjoIZ2T zKb;}~0AKs!S6||QDo_Nn00*!@B+MfKBuoQg9svBKkkb(2pCdpvUH{uQ^|1Z5zfC8@HC;>+8SyJKy^4U;B-3e*GVQ^EZF% z*Z#Y20WXE++rN(h%OQ~v^Y;*-7sCA$1VH|G1o*-Kh5+9P`P#Q&;Pbx@13&n0VPH9g z`&kG;z5)S1_%Z~1Bjjse27u3hA$(300G7iS_}#E`el_H4Azuyoe8}q|*F&~LmP3jm zTu3AY330<`QA4I7y^wmyVaU^vyCENi{2=5zA^&g4AB6mF$p0Gh>mlK7fq(pszv;hU z3Dc1f0$~0_U$Ei%dPw-i{yGl}Q=hd7Zw*X7`=9{z*I)m$Z%>71pY{7^d{!rXE#TVD zD?6X{=iqPe@!9pR?p(dTb0tjt``=69{X>Y5NC+Fkg=9mDA=QxOkoA!5kSihALtYMf zJ>>0>&xia>$X7%DPRQ3nekJ5rL;haKH$wiKZ~o1De)c}P8wCH>3xbo7-w*j8L;h)q z9da6?hjc^!@Ne7vqwu8;KB!qgg>H8Sk1huLl=eyY+wBhy5BtW8+qZwTd;5OrW4C+% zzVxrHZ-YQha`LXwD16&_$Mq+VKb)-J`(&^7!?Aehz4!L_8$Tg_ z-1+XK9})WC!@b$=;rGwKd*k@02k95|v!9;yzjH@@@8JJjY3@E4oXRI3J~^xX^t$(N|1|aE$EP0+zw^+za~t=BCl4mU;d^zh*8F(zuOAT457kdU{DA-Qi{CZw zn{4Xr51#Md@8I_if%o#JaM&As{QifH_wN3g`0StGbAI&jQO_AYa){P>eHfpM3nsZFRRTe(WHB(*FJ0`}bZLpPoFsBh&8W+r3ZzqTl=%&%S;7g!rlXUi-s- zd~&pce{_93d}4ew`{@09C#TO2Kbbz+Jw3ns@t;HAY5Yvw;z7*?oskd?bE^T!_Lu9;6E?^)u$H% z^+T?{fBfxF@1~Z#AEwX$*;u=yedqZ9R(>d-k{^EiM@JWbadLLQCqJ9reemorA3k~Y znRxrf-p3pK2d(e_@c5^DkBNV|G(c8DHziI@*{~V6#KMC``;Dlp4 z%x{P1&%$FetS^S+*Y$${4a@!qD+qda5d1jIyBF5M!t(z(L=DqF4)bH-B>RV9x)omQ zO4$DWFufJlorUTDE4;>c!{aZ6{JXIHe+jR3C2afcF#q?$`5+hO{j;$CS;%5|uYVlY zYlYW*6xR8>VV&n8ba<_Q5SD*77ym^#NyNiCM3}!H9(Tgyn_>CWuuU{P|CizUZdmWN z@IIf-{nx|m|3=8oU;Ep>cpCsJ=zXS~ZYNC~_LsN{6iPfv)bDfcwcz3`pb zT+Uo1Y4ZpoHHhepu_U}Dv(rtA4+hH*P9rj)+0>5{feU|SsI z3{qrcl|j9PN4ns?uZf0{jIPq$@U|39;ZPSGrA=&^2D$3hXYSQe7BKo8)-Rj0h;0PP zxQPMqNR@652pU6IdS;C)WeqbRvnfR;HauLqtSe&LPXCU^}gR4-?-&eo7hoN8@xbJDY40oEZVNj>J z;K}2asYgYkttMcn_Z!#ZV`_vA8)X~6wb(uJ<@{RvzaAV{#XG3zXW|?bkk) z@U+=My8NL35(Yx#ta)fm*)*7{Yg+;Oz#-S0JL1kZp2=!t3SpSoB+=(hn_Ft)n3TN` zgVCgwt-(b+Yg7yxF6$PgBaP@djd@<*>0Ij0eFRxx)F`_KC`pn)CCuVg+K^-CW}YK) z5*{)Jwxn%2QlV}?VKR>4f*Y;ubVW*a3I8bww%gK^b;yf3_CDPa5h%+%BO0KAtLx-) zDeB2x6(BREF>}Es^MW-&7CV!#l1hK0m{VB(+TgrvbD43ggLf`>TbHyBi42Fil~`eA&NA?7<&*I- zV7BDk6ULB^(ROa|)sIUfM2xDRNU2mL`UZG*D0-1ozJJQ9sp#y_sU29W*xh79tpaCE{(r%YA5q#zjC2RjaU6A-ek3W7*D7i zoO(7j^|#BhH2!RFombBC!f->w_ZQhmd_(*@ z@qYBR{+IamxlwDtTax_xFZa_dABCk|<{}z7PMzE?sOFwSEg!PNd}&}lW`-_u#ZqKX zX9>0q5QAl#lQL)XNIxN(s@z-{!b-WxYJA_d`01c5fsu7Os?cbO}vD6|>D zx>>Nd+K$Eo-I}2Uu`(7f)iV4{e@Fx)h!W=G6|DlFP^U$eO~i3e1qSA;328OMXeHHZ zPX-XRE2Vc6Q}i)!W;4;8{Ay4r54-HZncFrHpX+c_@wd!p?bK{(Ff((*LBX6Yxx^)6 z04}=`NrsBCULCGQ-5fI=Fz9PdqnJawCn*1I#K0R zE)CJfq@ktMV4hUD!W7MktEzrJT{%7xC`pOA(?WLra_UAhr&hYSY7vl~>Ra|4*0-#& zT^yFll}8%G7ShQHHll>t)m&;AD=C_;XP&rMyQu7?x z=<}Nu8_BbtH3H`qX-x!U;S8!3ylGLWa=^XG8Qyq!?)4~=S*E8Kk?|!L6HgM6VK)Kc zbSH+)h4-{84?Z`ZTd}IwC+BIY2Mom*%eU6`lW`a4FzqV!WG>5&)3C%&KEu|l%)3+E zdpH;_=1Yl%1L*EMnKxmBVWaMZV&5XtXSq#)uJKF18jF@yWxlc}(o>x3AqClh{B?GK z5TGP$^?+VxTP)xvDJ-URP{b|JG&avVF(lqlW=IyEH~ox)z?=aC3EiKzC^HvMoJ>)( zr{hLuc_wA_wORhA3xZ1!kXlAnYVSO4&d7BbkRqbN#7eU{3utX0r5EM)RbxORnT8@H z0dyx4AiZ+n24=KaL}sd^*$k?LOAbVdTImM1JY7aGtEDD;TgGsm8}xlaqMVVHYXWpD zlfz-#@S%d0MwT?NnkNM|LGYL!H}E{~;B2-B%ODFNzH!l(W=9k%ak+U!geQ?`hdhk3 z?dNb2-I&6O`eF~7iulwcA1Ig?W7jZ!G$wmS5I6OhM1I)}g2-J(?41$ZNG}$r)k`p7 zTe~TELrg(5RWJrzZ6u|I9ABB}K0i?sc0x}9lbPwLGLVK4yI70M+k{$2u9WF z1&6S-GB7P92zY5eo|0IK+)=f3=h?!2bT0W(77fncNdm?de8$;^yXS$JO@}@u_bUBpZ%q{*qbitanl!XT6QaPPG_e>dK)u{~#%yWv@0nMuI+w zSSAa0VET+SJT%ekLsZ|MByVC&QU~1U-!?452A_0KhH?CY8r7N4 z0$<@9b$fELO3cbMjr2O1zH~;#H#N$UclCr5jYjt^H3{Rd-N;Z(1f#j>MPE(CQ46yr zTaYHWnO$9EMz=JQ|16g}S#yszhyS<)1`3#zDivCjZdO}?cEXHuViHR z_$$IvmW)4>Xu}b`oB5|}s7)B?5&4RCX~|~m{Cq_}v!ABaDf6;>e7MByd@;#9)lp2G zH}sWyLwb2zKXtIxGo^FoR&j>lpOcWXTRiN5ym0d-2&X+SfMCP%90j`ax^>pYXEznpk}%5*0Kk?ErE7%$@I-! zf7zo(=mLhno-U9Xia@C$zTbw}+e*Ao{tUH@m*cBFwnEaPNvM^*=hD0WDS$6`7NRHA zZnd*_$$E5RM_*lUk;NAj7L>^6{$+=i=WiN2*!jfa$D_nlC_K2fB@r^;YDG7uef;H^ z@~#3frK30lruQ{t4RKR}jeyGx(Y$p5 zO42a~1<9N1l~azxV(n38|K;byLRQE}S9Zk2T;oUqay!7)l)Z*6R@LR9n56^b%Tr{> zsxPI0#Co*-)-{=1@!y0k?BY{?_(27OU}AP-u(!H0=_Qc9x2~0-*ywm8+g=|Slc@u* zMpnzsSuIv$tAm(RcB1%;12B-CI(5(uLPaELRHLV#Oq`Rb%J-TD#!~4}-F$go)=fY4 z^Eg3kP~;Uhk+vq+dqNZf)P)>*u(>%$4|D3;VP+0?DR%;Wb@!`2m?zR*_Ep*ckEUD( zoa5wkL|dBiyVWOi@Dq|&diR9< z?3NV=q9egBL5EP__}Rs`y}g0^MU319bbV9%(6e5BrnP4gAlWblU?(Ni0tblQ+kfe- z>fIn#9zKutW76WSU|?hXbb1-ULrFtW`|-PC(9ng-^b@I3HvFDRguec%ybC;MrZ&}LN7quC6 zk}@6nV&hEED^u^0SJV!Nnm2DUac2bQbc{zx!SL_P%6ZsV#e!1?>A*QbiyQ@tcla^Ye-5Dc z;KOAVNM1J0w_vLyVZC{E4ZA4dlRyRis{^q4=C&oK#`dhd8pt{{VK>sggUhj%CZZvG z=#6X5%ru4%Es%-gV{i6kg>+zUgMg~W)^I^5MkAeWhkxLTQJmN#-S^4I&0Uj)o>jcs z6k;eNnae#);?x5LR^?SF>5n5qe<22sEQ`NIJr1#25}kY675B&&2`}2DAx~HW+@B+oD3sFisTnW%T@k4)l)T;p zFjE=yZzHzXJoZJR;Kr5|z(7Y)N;O(WEYf6Dek~}|ZW$j_RJ=lfWew z?#~m0=MYVhcsmQf#^cDTg~qn#3lPz5r;#Ia$82B6M!rxZ|#3-GYRC0BYhE-td^ z{REx?-)xSEx}p)+HmGN#midv*fl9(xg{!V-f>2+j2m`rx)JP`r(r8DY&1#pUva8Mp=qcm!8~@vj304K zq@vw0CzsoKodJ5;Se0Fzj&C9R^Bd42mJfBBvFTL|j|K<>QaDD@NB9jK0Pi7mwr$mM z`Q^l8q6wmI-;2kCA_S+ss__VUxIj#a1}_;feSnY8P;u)A7ej2zd0gQ@s745bi^OCY$Zj{E*P%ss<#&)AJ+O=LldsV{s-Ulm#A;cbh~Il!FKkmo|Zn?&k0Oadj^VhXRK@GEl8pQux@<;b~z| zh0O@I1cg?wk6hA^7lQZzEvOw(v_iGp`#CF|?UAn5pGz+%fdzVjr>kpiqZJvvlhx(W0b!Z%ba+J zry52H>T+|X4VhhC`QC!W2hTS7&{i!Xu;1JOZhwDcy}aSQUU__ya#z_Om`gVE+WWRrJMSU$~9LVhbGoUyyimX?Zw)^5gGIpZqIm zRH#QIsf^Zr^#(Hov=;Q2-)8Q-ZlY^+^{!PPy_3v7ZHV&{Q+Rgp{3Gy-r(Z$^8eg^w z1+uj%?Vi-e-&uLJa57BZppVA*6EyR^cw`7Sk4Jk{tlhU4PR-^_|4*Jdq+tLab;49Y|fiQ`zHpgOVMxovs73#`zFkOC>53rq2B_$AhM_YxK;pV4eEq|!%l@q?T z5w7~IkRo0P>*x*sAUMsq^*%RsGl3&+#Al_s+MF9S(JMw<&nh?|E9_=%W#l;{7sICd zm$VmHgO01h_-QxB8w%u9wKjfw3#FJe1k0AYv~jy+hc8h^KJL$a==_1{ckn&2udSuxv(?`CX=Qi}Y`fHC zIA2!RETz<{P+y$ITy1~VNN!B(B=U?|&jKkcVmDxeK;&2o{>XBsj!52&v!zlbx;zeT z9&&=o$um5(s4RhmdSe9oa3yDpVlmE+<`bu^62mUjOI@&9oYG8D^r52ZOu^A91oH?c z%Ms#$6q^FB;*0%RY`ThHzCKKzuP!?$?!-{Uie4wSuwc+isF}&RvAnV}bKvb{R5*9r zTa%ZtzIl*}IyLU?_4w2n)+cgqBef1Kz-RKA5GAH4hwSf+ZdI38LuP=Khjycdz^TR-x2WJ1Su6zYM_Gh!KE^(L4#MBp(e$wxA z^sT;y(bJurt~D^~IHrkp_4S_huJ8WR0OZ!$l3HCFN<5%|b1&l|@_>VyCVGutEIzZT z&~?V;SES)t8Ct7d%Y`B0gT!5bjYj08oC*v8#Ps^5MkNP%(gtBXHLM^0E@j)_U)*U}sMwX5iTg9cc zA~UU=(8{x%zT+1TW|$;tP)DjtDv#5%)l;Q6D+EMMIz=uBhRBQ}(N~|le$jkcEiiZ~ zcOA*fTXH&6xO{0SpyQRZ0LU-LGv^oGGf_s}1E>+rv|>lih|kBOAg?9SIXsNX)ZS&y zjGs(7$`j9;WMhV`Yrv$Ry+GmXx9F2>`W~lii)^XiNw!;R&ACK;j%`GEXqDgyAQV66 zn|Mi|K10Y^>M&N(udI#R@&o!>w&RR?qWKu8*hQ1PA=S@V=L(qP<`@_Qd6Ra>Rn9p{ zX&^$Y*aj>kc!Mkti*k{TbQAm}rl9b|JlV?LuYUX7)05~UYaL5>t$ySc)M;fY{X$cj zvm;>uX4KG6lx&|%HGB^0K%XbL-s_oF<7S||^C&he_>bB8)k;;^A*~L37HzU?=yu{Jb+vANH6`#*)m(v{O*9weT{FWC?2?@kWRJU^kJ`6-#a_VD1o z;DA&;nmG+EZOaZl#& zMV9kBx8 zMJvZH%6Xl{SxQc*KIal#DEW$NEI!Lctw9b~< zPAt~kl+P$8jkxC@tPg<^xHzEbtg7#{nX??!r+|%4s^94I_CSbSK8{X$lcB9lz0a2f z`DgNub;1ZTN?0mc1@nygQ+&pVni^}Z1qub4ArWRsm4xXDkL7fTu)*&Q3$}7>~k#> zmE#myE_<5ba%RtIgFr0_w$X;wZ!Su}8_PE#Xf<_OTLl-Ht>+C;t3=$7=CmEc~b3RdHpElw1`JUm& z@o9EFem6Lc7_qdKgtNVo>5f!IPYkw`nVY%j9KMol$>UkpI^?!juM#(xRaat?t;6GF z^^(UD^IWTE2pFMvyL7oPpG|qKHMSOed(FWmP8BX!42bw;-5#g?#RTHvU4TIos2Ndx zvW29gw~jk4Hhmb;N1+!xbm(Z_rDD3ukFLmzI^%aT$o+k z6#xlHZ`qs-D&sd*v@qF2=2MP^YRkVUF1$Hgw$EPFV0u`o?P5*E<%4{(OoDudRc83md zU+I=^?zE=KwA;RwjZDYGGeF%+hKft;B^SyRJJBGGU0Ctz^6*|%wQ7#6@0#x$ATU!* zjy;v)b_JMLqJoi1N{Nh+8^ilcw>ng!2O3syRU?awEUQlj{6eAA(Ag@hLv`K1F^&(B z7%&d8WLs+AEVl7`GHMm17p2p!cTE=}WecomC{BWVMk)AN;$VoKJKl%J8Jm3i%HbC|e$!FnO!&A}1*!4-h2k5j?Kt$8y{R zg`Po}uC=k_x1d;-$l<}P$Un`EA~m6W%N~pxvtyT}f|$s$8825oxym#zdCw4~Fue%I zPssKuafk##DqCvlLUJzNCns4{Ak#6vITJO7Z!f)kRfaB}H&UQC32?YkD+ZGz&sntq zD6#>QWG-NAJdAr(XLIYUn2plZF)+?B=m5pWhBHe)MeUaFr_F%5U#{M*Q|8l_8-Q8! zlBM~pF@6>kCmw^Aib?fcxT?*U+v>yx*2B;wkG&JTl-(8b$%U~*?Zsm}A2UJpMyWq5 z4E+|pNQJHlDAuKV`HR5VqE>`mGv&g_G?!f+ZM91U5G!wEj$)3J$SyfiLhx9CF-d-%M z&0KZ3G)`L7`Q<>*CQw+2WD22$?U0IR2>QUq;seshLU%+~%ZNJf)Y!B(sTzk?B~+`G zDFzfy_Z(p^yT*&rR}OSwRbG2`I_?^^`B|UHRNlV8>Y=f35(&-iwP8|wI81Ww!?;WQ z*;*%vgiidz%d?7>4C9HU)>$+)KN})Zl3bkG(T&V@IfuS`4O`rqoF>RS+0nK)cz}pV zYciW;r`G^&oN=7Q;QLsRsk1wK35~@A8r72%p_(6z;sGtCc7A zX#3IX@|$rw)xjtH3YXH3gK=icz8f_FM)_O>9=mde8NH)KHfwO!>BnF&)BZ5@!C--q zjFQu8k_YC|y_Hnt>!!-SrChJCH%BgL7!}aV^A_T>D>-3>iku#6R4_knb`mfG9pjO= zs|Q#2R!SZq+<85?{@9%)US39~R-`#|-F<+178)?A#M7=bj#$n{JVq|~Wq$oJ@3QU8vQGa>jrQMFru~B6X9W3lthi|UOkATgez5&F*oWIrtjQkff4>ZNrfA%~d26_}9 zq!*KrQu23j?1`FxXrrHh-OQ6B&JG=F41YvYVQ#>StU_Ok_d$V)Pyb~^7>;tS+Z7^g!7Md9lOjQJ1-b)&`)o-;p5JDGPtsTmpuR$Fu%TVHFmh3Le`f+_3u3? zPN&`VLN+VjVy?rR%4R7AtHaO?;l^9brh=vG!_l=wkyym6S4qVEjyy7H{IU4G>j6EZ!UXYX+&0~;Z zJlLyhZq%HKWhb%RKxfW|;Dj-u*m)u4MkZlg0418yOe3lJ4`i|J4hG`#pyv*^W3(a4 zaWFS(@I^qQ7m77*z;xAcF8~EG{lux#n!^z9yJ!+B(J7LUnmHx$n$%i}7LKYQN+V`Q z=?&B+5)ReVV@ZeDBcC7M)j|(St!#H-z$sRVN9RftY#^k}2@m#Dhr(lb#Pgi%I47}m zmQQ4BMAfjpR5d>R1jO{d5+4lU(e071$PnPCOlBAgv)8SX-#4@KZY;QTN^E!6`akK~d~ zuU8!j!e@@rip|Z`l*J;rhGYYSr_dB4kQz^AMrfH^8el2_E|6Hm4wg8|Mo1i>Ne|^i zH(=4v@~Wg4VaX~9+k8xch$>>6kx0fT9n2(5F&}4x1SPpE4hH~Zi;Q-WqS5V*poMvH z$qxnXfXo~cUS3T}Ueh@zU{9KH^QrBOe1|X1ZApwK3HEZRyyKZksD*lSs|WWy zEDUlwejdcmaB^Rx3E1+7-IC3ly0^^`gR9p1Q=zHv(35AS!myy3nr*CZo5>C%fRjCy zUN>XdP41q-#`5-%IP=mm8m;@CX(i{NZxbudXw<%`g>u%^Rc2;%CwZE}7iE9sYR353 zVwF^Hf=)bzpKLEw7@?g=8Nn!?GCKkbG|l#Gy17>C#MpCOSI475zuyFhsBj6-)#QMJ z2E&qX2LE?^UT8zlvJeWBi+m%+u|!t3dJYb{TA9A;12PBA zWS|=3WFrny8sl$p0ortoVd6N%0`Z=Ur1_U!?46OQvfZyr@kEi5p9OUFoBqzH} zW5gg44-1|{@r?}SHZ+Tc^0U!WyT1@56ldnm9T)uH89HHI@8Y5> zd3d?J>oO6atEZ(1Z{;K~T68DJ!}b%&Lfl~jn-~ifaJU27-q`KUIz;Tip3ljKqzK43 zxfpF}>*IQIcLX~4JXD)|nPcEadOvnXUaf_ixlqanQD~XW?F%Y3ML=*Ap=3>unky-* z2;tII6R3-x;(Zs^xp)dDZqHx~3> zF9TE#ZQg2v-pkVX-q=(Yn%WqekBae{BA((-rO#Mz#GA0(k5_8ycBvC|@}7sLF0^jk z8d+OROSV9xuA^U=`GnB?&)&Lu=Eaq4S8p8SeIQy0z3GPq(o$wqwwogyAWq3=bn`V- zk@H1+g+3c&kz_gyIZc%P`MCG2pbkMe)rQc76`)v`I*69A?okzh2^bhH2GWf7cM2!W z7#6*ZrqPL-hilAaRy{47G6|{leByOLx7J8k)u$FD-=g>s%&~mKo&;Nv&oEHr4V%#b?K=V@3))D zxUdvS%&~YqYWqALOG0VnPj=8Ed})co@r^i6+U>n{U9TqMpH+21*w3I zTCMD^EGl!jid;h4Mc!LAtz=gG!el3m4AoxT2!*NDK}zcKcM;7@PteCaS2_Zzoap5&(E`5TqSk;;~Lf+;Le&K%-Zi_ z6EqVA1Y#!o>WyvsOP5j^^eTM$a*WG;fn@Us2yX+_sFgU1jxM}(Wplh98GnX2cM;#Z@3dwu{b^$9 zCFNQ45#(8&??vf)0bEgV_N!Mak)zUZ0``QL}xgE(Z^6{I_b>fw-Mk) z7Ru*|-T?7GRh(Y2N=5zqC0dGsN-T2^Br2ktcqY)Gmh2NbVEM6)COZbpCyqYezZOQ~ zcpHE?o8ot03eM;#K`XoBm!I%gtl8RT(lE2aPUg@Ljd)&pY{@$hKBqGzroAs`0=k5Q zW%&rHX!91$$fIsn%zSkjZdxy+t;}d%Nesjag6Gmz#a3Jt=1$;S1>ML{%N}%^7)qld zSyPXVM9v`j2*SDcMb#aJdt7!2;yg$RIUCmxbjWG?l1&em*I6#3vdfWUd}tR_cD6I^ zR*6bd=&88N6L35`MO;6s#LPF%<2}nNhkF}H!I3AcM!&7nwR!3)4N!TfK&p5 zj?YPZA)-W2v1nwCSV|c^Hy{@k!7}4s5N&tMAa;BcPfU=C8g0PPEYV5`#^abA*_v1= z`t&&B=4tpdche|S#K2G}vzTTIj!N`sKI7EMFo@&Oc`3!8FYjh&zMu{4fm&myv@ z_(4Ab=Mc*mViCe4AElfEd!?j-S`mOk3mRZuDQ}O;BuS_%4XXMu&JH6KD$Yt-TylCZ zP7~uW>Ob`&%Mbz&oi6JUGBy*oi%eoQG0)ggwSHCONC#~TtMz-vMSL{u zAQx>z!_sG>)drW37;-<{Y6G<@&`z&dxB&897K6`{%P&$D<4E!ZTRkO~Coe=Vz=B|; zRSDs8-~+*2f}tc=P@sGSLse`&rt6`{8#z}rh;Fxw z7Bx@!8}oCwj%>$pqED?;WX8biO9B9sEdqi?Cjsfr{S$(q9?p+l1rNwbT zboZ1{I?jjDwXM2aVnIhq11Sm?mqfsZ7NotBnjXbPpY5uvClryD)R8~jNg1KbX+^yU z7Mk^|7fGnV91?7zQqt@pyxeRx)J89Ky{b+e3*XkH zm6k!#g0cklo#FbB=Nx1lUE3U-B00twPa`zx8o(Xej#(JjVbc0=NmA+a5Bdbx5XR3< z>)nehIU4CaU3qx|JlU?d1XN|PrU_7t?cD#3W88%jNoy7MFW%?7x+$#*Act-mx(mXr31nTbQ- zqpPla*NMh;I-v~K>Uxf!jqYWHxKt=g&E#@2zwl~|T7_rS)tQ)& z4d5$->2v#a=?!qIGl^t&#Ha_xXekUSZi8=i2}VOs#)))1HA@pKcK44eYt@LO(N~cz zYv8DH58-KTIByxpq-deXsNYrl!e(75;72xDiTIE@YxN~bQP?>< zu-K`~o)1?a^nwYQ*w)FGC*jg0FVrt-T0YzwH$I`R40Q!fu}5;k2;<9^59VGCNt&xm zb!_w2rDLFMM8U>@?^uBzK#9osWFfe>d0O?@;ti?zS~lM(#lzK8??;6Ys&t@^7b?}nSYEG@i>AEw~QLF2`5%}I~j%3 z+7WI6$mjDpVl#$jzZixeXXLd>Bf_G^7DV=-<^VWKNKPm|w|h{lES`qqdy2R#wI*&o zm0US=eSL^7%|_C-(j1-%xBYl#e#TfVS~t6V8yGXeXqR~HC?W}Nuzp9gvrW1)DlsEU z4&yRr471Uq3NCJ;;KyfRFCRsTtj@+R=2#79yM=bpbJd8#bec>bg_+kQ? zZ?eb~9;j_BzC?ieco+*~pIP1(irWb>&N;JYCvAg;bl`>C9O4EqvKZti!WazNsrv|u zM9V9nTa_#xovSr5-{VHn(4)+Wx?vL2;89YXTcat3;n=R9)zZh8J=QjcN|YHi(O6Jl z%RzWSRy{p*(juY3GnePk2zQQ_>l3&z+C~PAFut_!B;09J-pff*JtLS{(_9@NKQ*v$ zdRMa(J`}DiY7>YBL%gwI!UGV#2nO0ov^?bLxy%r36h7CY>*+N*We_SIV~H&c#*~nrF~q*tb%YB85d(9<~9v2PYd}cE|JokEQpFm1SM? zyDI1Es?NDrUTf!Y;!Sfso^%I`F|sThBoLNCvXR9nEF_SH`~ft`l0jJF1GWHRWGp;5 z$TnlojPKkz_udot*=MJd?dQMP$C~E+%Y3!F_M+XKZWTBE5|$X&lKOsai`|CE@$K4*j??Wj zSDSYJz*|^JZzp{p)W?`=&1AUGUT73APD@c``%hgxL(tL(Ys}xEfkjL~>6Tu@C8^a- z+~%2lnnjT-hd6p1S+>F8g?a8JVwN9&xkd(E2VYl(RYss^tvz}D!SxqWb&_iFwsJY; zi0cXS<|*Voe>*1ZQ85@@6zh%F*g2yfH3XzavX~Lw#Y&Ai|;QBI+@o%h$ACJua zi)eaLuM5@t-1{2Z!TY~)t20}bmgMSB*vixCZS!l+iRwj^JwUh;^P)u@-7rtSP0}sZ z;r^wld+V>z5FNjN+UAp1VSD~(86{;FYBxlpZ2c!k&rZY6@p>9@5b4r?rTmHX8~bo+ zUoCbAmmhvo%KpnY8^~z$U_#&9ky^Pto&AUFUfxOm=AF?m9M&q&x)ooE4IleaG$6Cz zo_D(+%;M9sj86-X-e9KET)gMY^L8|@pV=$%e5IA2jruv)YU5Urw$#>dB>!42#SK ze60WJpiTIi_X3+PwD`Gv6A~BMFZE5Zs#bpg=6K)wuC^zA1S*yt`WMcxhx8YMqYxuE ziG%o(2#>fQ(GM_Nm>{V0Rr-@Pt!k6@a2OXCtKmEuOr2+GyMU#&F^bT? z_K*H83jm-a4lo1m7%6wGfE3=MQyAaz0`9mje*`RnCa?u`nEOwFFYxcc_%~o1cIV&1 z{tk@mz%2OBVEm7v{a4UFg1Ns7kN4Zqo4_nMh5i=WZ@~IHc1Q~Sr_lc^m^*>>|1)eC zVebEeb_H{He1^Xab6>&uZeE7DI}XF|!t?w#%>S>@&fvBD2>QPUZ4T>MSoim!zhgW| zF!y5^|1KQ!7{-4c`a8}82J`;}#{U5Jy@BlowEqQO=ii69AHw#Zhc*8Kwwtj2ufX_k z!uH+k_&c!vA#DHGu>C2lw_tq7-}#SW-7U;NhvS~Yz6W>D1MQ!~zJCDypM`z@Im~mg z{g;DAy-R*w_)-KRnya1>4V| z{U5M>3;pi^&*D4SR-iqBHUA9SF|?n-IDz-7 zf%d!bIDZD_{}RlX6YL|P{R|%CufTW${ojKAQ)qV_j=uoozXt1H!}cBP<`A}<(Edkg zcZ{L0VGeAd`QL}v`Kx!Y59a>ce|y{=*W(^Mb_v$}0=EAu^gZaW;eWe^wRf-c?)Cj9 zj4xsP5{~VyZ@`-W2Db0slfMpY|8Lm-Etr1`<0|xj7smeuGy}#zhyFi;=eS$@ zXaC8+{Vf0r5sDQHV!Ow7DVHtteaK%K6HF9~%i=@9OmwSKHjJXbrCDKMxLC{5erMcZ?hAgf z8e<#fDc;@J1e#?kN`I0>yw~KcNh^~@I#MeW51X$8x6CcNvE95DwR6EPp_1ykhKP?q zPwXWPpFHX)7n1hEC2!N9F2qlb^19~WNf>sfpbq3Lcb8E^V{V#{pp+uFu>)>?D z*q!(fqGG6SN-OK*8{G@NASQxM5yUf@Y;E^JMekg-g4W6x>PI&fe}ryzPb zM@`qLUFzW`!i3V^+PA<*IS}K3SagTC8t_vN=B?d>Z6}$FMhh{C0quK&L*T?0)bA_L z+1+H>47RJnM4N9(WoS{lS^r`-Z%r-EB`o}s4ZlS;lVKD&Q)`dnF2xnZ8$gqwR5JSl ztZac@dVEc(uaxR-b+~6V2u^MSeIPN8uiMLE^_Qm0ybGJ@#g;5f*KMOPLz(Gk4_bx# z8|$6o-lMsS zOnEnnr0UN3KAWPO5PtQ=83^E6;bZq8;>t@!T@i zu&cdlG;3})TYATHk(;?I78<~M2FkX);u}a$+g;>;NWt%p6+@`B^t69`ocHW z8S&1|ZM?4DpRO(+cqs32$Xcxta%)yyUMz*`gnXYD+xWGHX^@7aImK8p{l`whBF=Vw zn(~YNuz%ft?H*oynLl#8gO}2XKI5b7!2#%*+H5Y zup>$0T!wT|6`%$W8970M5CBVF?L6Lsg0zZ*Axwydn;ayQ*IzJLasII=uXbvydYDOH z>@Ax&QDkmj&7)Ar7yPyKn|<_;%0@xdI!%M|koE58%jA^6u!d5o%Y@&6oXagBnuNNG zQ|%4fiuQ5GqGNkPb71~!n(n~$fz=XJ4pCyI5l#cJGKIQue_cwN^gC^G^^Wn9T`lIV z^=ftLRG)gFRWF;g6gH^MN!f>_gTv$-J~$L*wQFiycOKPRlJl)6^7XtWf(Q0ok)&P{ z7VPxu5gD+^L*6f1m|WHhia`?+A@spE{K#ZSLTD=qJ9pNA@PThDPm2ENlr~Pce(^Z3 z6$x@0)Ti~xu8Snq^4Fo9MWiZr4LV=tww?J=PLtWOL%4bwO6A+wl=X*KeeL)iIa#s%0cyNn^lzZ+Z7X$%v=K7EPL$@irHdD?I1dq(mtn5N789JQoPH zzQW}zTfygr{E{(KQ>hb`INO=-H8`uhF7BCLc-YFI2GJ4ZQ(;+4=nqw_{ zJ99aYjvlSjauaN+Nb&nhm2WDG5KL~?;&e@bB{UXci=!sDM1nn2TKR&J*kEL+SHv5H)Wc{QB3>oljt{=2 z1TDNNR5kaq{kFh3_oeGr247CEom!lB5wgi!QQKT-#rX`)9iVzlR)*tqMnq8%w5Oxj zyV1S*xDd8;tquMXkBJN6dFD)AH7BJ9E5ZV&^2|7~7|ehi*IaXFY>$YGkvHqMuI*}J zKrMW&TJwvt+L#y4v>W57_)Hbwojjo2dJ)-jhkMUqzvD>z;ul(hNKz#RtH9Kn2e z(A=x;%x~-1jH%7+*5efYKp>J%O^g<71Dm6W5;@~#2wHwJ9{94OSNN za8d;&Y$+ZrNx4KWL%$Q#iG1WD^$A@fu7Wyqot8F4Sv;@`KiFYhq2TT(v~L$__|b@h z)egX#M1&)UovE>vY8EZ3B2p$z?mIH608_{>F2yoY^9XtdCsR-7n9+x=K@aj-)l)i2e31(R64@!#DYctS zhPxd58pkt?wFitYrCfS$oSR^~zsLeoyaS5q#pVh^>?Pcf?1!9*^y?rTnu9RpWv)?2(+BSzwLJre8Pi@xCubK1gv;JCwRuWf8Oa(LGP~{MB}iR!D(&@0~4MsA%&0qX{^#43tArRP=`us@EDr~BNZA(+D3 zNSZBp>h%5-WFizXs(N_C;={gS7i05RIu*hjZ_elSqZgGfy=IV02bp!4@eFo{{MqcS;g-zMUwlm? z89F7CSV07BvKf$I7$H)SN|B_JT}Nc0%kXfAd(H8-%t zbEAEo~d^mo@u-g8{**j56U* zj5JfO?$wz3Qb zU+WLIgy;RcWNw?S3soFQz*PLYSyx5be{;3= zHLGy2Dyp+F*QluCele~p!?)8uukU9%C66sLhWq|C1F>efvk2r_h)ti(KNP|HeZp-PCZr!d#*CIr8 zyv~M*yO20*TJ3k;spbk-rBrtM=km}h++=GYl(=~!l-aeySn6U}JGvy0?^=u98DhH4 zWyifRv1ytyXzj-d(-Lw9uP{;-bX{nL&cg`%3gUvm8_KH3u1v>td)SUemsW zFv_6k`k)nQO@+zZru!YF3m(E#J@ogRJQlxWoX|$bt6I^e4RR2c-stpW-3;H-eag9w zN8Ja1h=5LCeefp>#ho45jYfA!*Y9r%TlyWSCXM~uI?0ygF_lM;=Idf8ivCMv!bP3c zas2{s6uzzSN@1iOxEw|{-4?Yteaa8E#UFV)F1uZD!Th1VSvP27*Pgnq<337%&Gs_) zL2bwAv2w#x^LD=U_eS+ijSH4-n{j2tGq50rdUjSYz-~rSXgwcTOY>& z^U$tLJ#Q{I$~=yVhZWk#+#|SMDzNxuPyTso1Ziai#tf9QCBtPa=+?Zp0Ca@rdsX&2 zcf+0DxYF?tgccFm6^Gd;JJf@u3!6ouS6^W^C27Lm>L6;t31T|Ygq>mK$N{o##}#qG zgp+8J+&VyOsgUvwR(ROJQT>dieRO^%d9Dryps)~ud|owt05ln?L!(jIs+BYK2<0}e z8@ax8PAp1A_xc=1SvBBd&&*y;J@c2t7$-**T)&sa1kF@c@5a^@!4~U!Z701N`=$HU z=O3C$Q|Wq3Y*W;HIOQ&w{MxY&H(M4gfK-YQbO+gG>e<1OnQ?f`{&}gS0-Zur=EZ$t z;J+{Tm`{KF{fF}57Q5UnYL(ymhJSeP&y<|gLuV~i5bnvI@GC$10XsSDcMhHj7QhC7 z&qHac@_4BpMKygbKRZ~(X4BZXcBxvIh{C#}941qyyEAqW$evbWJjqQpU-U|G@x(iz z;Nw9?T1xB@bxiWPLhrno%Zd7WTX5aOFfKn31~*-hKH*8GAy=DYT_D!`kh0jz8I~>L z+oy|kq0}Bdlamjy5^KaYBakPgs8!VSuRLql}z;GQ8 zLYQNtULBvKWUAnwVA&Kks?0fU6y!+gunH2%@iV&$< zQWow^=T~OJJ}1Ti8=ZH+3tAb~%V*39$l4KMv~4mJM@^zlGgfS=6^dMWmVP`=1!Qwy zJ*xX+>*c86(6Jb*lUuV&2;N`^bozaE(;vSatMiKPU*dUE4vsjoJkt1)Ys5QCjE>@B zTp2DG^T8wQy>-2cLiDD6$&wYHj*wnI<^dcQwnGALp|@E?WwzSvo=ahMZ9uwtrm6T- zVHJi|P7FK&-$)5rTm}gnEbkRd53-fm*rVPsWM}D&Aq}ZE^J29SdV@h|SUReZZK3_H z@O<6#ON@6t@x#zXxJ4kcs2)#jqvD~(!IcD381~A!2#u<6H3Fk>rgA- zOR_Ufhuh-Kp@+wI+%XmQx0hLvwJczKldQ6tc*R-F1abyA@$t^{k9f482=&9P-q#l$ z?Lgz!*~W&zrf2Edjw?SNTHij-`z^jpb!AlyR+69oCdCkH<|-RS6A-qrYN4G0d^)<{8jDzZ0fGoba(;C>Ii56 z-Q`MI`PTeVx_6z+7`bnrXp=CexEM&(!F|#fVkxSv+h(ndE-GC~2Kpm;1rZs_0=P=( zEbDGiBQuapC)U#MqN~%f?-kEokP%EwaoWkK)#~x}z7*Ez)iw5qEyOoVWrKCYdw~_P z(rz$tff+aw!1l^@cEq~1veNb|YIf5C-DG%foUL@VMT3*25EW&#Q^a4h-Z0eF37Svp zqJC?4&v~rSl?n+zFct^M(4$mpDYzk+p4DwB^+3+rHqv)>Synf+-qRHS$(m|ixv!@Q z70Mjs+NW5q;c|AnR>B^ z+y>*4^-)bu{C6rP+*B>S_ubEnZcTmqy0lEf>oyY!G1)(%<^iJg1&i!W}OEoLIzB)5x*6y$`RCSRYe%IY?lOgIZqenyZWUVw&D0HEXqbf)+GGIJ~#ByDYP!Hn}k>h4z|^3{<^I_P*^us1(b<-Oc0A zhWhPTyX3fWB}y&E*^Q{1O`SMUw)d)XO?g<|+5&oSC_iT!&&3{psIBIJzWjnUgR>$@ z4VU!$>}5L-BK1!bdWjsLyBq%c7M+i!X^=c4LcQ5o;5FZ?5C>pMLWR|EBc|v*rLYl} z^l5xEY~#NTgKs>5`??4TlBb!2GVR9{ zw-Oj<__q44pU9DpGuOL2>Zvo;#aI4lt}PAOSC92$O_(^r)H(KbLLs(*ZZ{7k|y^B?GSw@p> z)ECL|!Nv9*G^?MNW{JGh4S8|A>m8IUi0$ztI{ugF`2EeBb1dMeT^l z>3Gt3TGH#f(eZw~{7N6uTPB_r#I^Ev6)fh~(&j?`Vy(DOlbs${zG~F6u2kBZzr%y= zG5@KrKdXd68g-1-i?4>(r14&pH#d`oJ;TawKmt-?jN57q+WW7&`&8u>iDFZq^?xFQEe$_f=XLn2y?EoEj?;7ng6{5r)|}- z!`2-5{oOFU?idn^LXx9QXEhw9$x@zgD$~>A$XJ96)6t)AUR%~Y>25_`>4oo<39&q` zFB+}Y>(+zt^`Vbuy5rQ!Hdk2bhg%ep=?*X3D)$~QxMY3{zv^M^A4Szenrq@gp{)!S zNq@~EPa18HSaVnclHt^D){6v}Md=7mU11gQU)dSQZmv=GsZ(g*YSa{+tBqQNf3d7o zDWqlRz~){L?%TMty4GZ)HkzqISzigOwWGIVV!CHK@g}wLesKS_yUy0U?+??SLjZNL zK7cZrF*AfN z%(22p&P4tZvM4tXclzUSr?~wFnHed>;Nyp}adZ7ZmHRbWEfpkRDfxt-h~|}*OV7e*M4pYFDJpe^2)$= zykZM=9YfToo7yTHU%u57__d6bdGA4Q;4TZj#8iuto}}Zhr5O74rrdQ?vBR%f9+~^~Q@q-WvP|aDI~q^UdZ?wVt2%23Y<%u7 zI78elQ7Km(Ib#mJW?>&{ucRl6I;8ES?&h~)am{!d_zy4E{z)xFje04MIEiiy0=!Bc z39O~WPFi1TTW3nrv{bb{4arX59ut?E=G5Y0zINi_rl00gw`$=4=qyqv6MJSa_#)#F z@3eJmz`v489!^^JhF`Z|F;VyqQL(GWMt-&VdL6}Dfe{t=rz&v($(Zp@y#;*G**s44 zn0`H-mTO;2Az86x>t}rHboU0--0=jl*FE}Q%@kbUlZbGyZWs9dkQ9Ws`&aWsAWP%5 zwyftyi(|s>c)kcwt%##S<~|Vub4r&}S3X}Li~&_zX2fJ2R`J2$ZSD4GXL+({<0&E; z_PU`pXF}4|wz)4|ig;hJN zS|=Q2l98r2c8hxnCF`0}W4Z*5XF|b|^nK3St=gMP13nO`NHKg}+cZM>8*A#6wF|M@ zsOuA6r}%9#W80ewT#anr1xD2A7)YqOy5tw;TXxZau*{mi2q$DCWs7qu%izwybMsnS+!AF*1o()$RT}<$#c{jp zGBRas%58ECt{Nq*%|^I!`M{w=ff3Z1p%yim~5b(uteLEG!PMD`eM-IuIJTN%>;h57zg za%L)Z##e%B-n`ns2Q32_i}wHgaFp_0|+#mycakW9*;3Zqtng_u|@P&$n(sbMJ&gystwf|Yk= zcI|d4U5B{i!U5s<0SdP{c05t{H-*{8pT+x3qFnE%>K{G`WD#l)h1_XZiC*7gh!IFp zD&$#P*(W+;sbR=YdnkH6{HES42XRM-m<;5*6enJZwH;&!ib^!=al*Cbie(gzJ0n7x zAi$u7WG?+ZC|b}m+pZn_Y^J|ep^@QKQ2W*O} zcTg*aXQPUwR!ZA!Gf9S!WiHJXWl8d2!$ctISmG)k#os3hVjS z@uW>&mzM=)LD73r?=o>`eu3y!ieiz$2)Hze4SX#1z#xgoxK;%N%Brqlg*H~uhXz-h zm$nY|LS{Tki4 zv#0B&b>8aXzOeL@?^;Nn(A7}BQ7P`Y=qdXGR3BKG93en4n0me^_=O_ni|w|K5#>d$ zRV)N|Hk~n@#Bd7QTwB@N1$>^ge;#b~Yi6tCMx&NU*|v3Sw8}jKW%9$hLPv)>Z#2oe zO5PxfY1(OXs~rXD?bMXBN)?rz!c7aGeHJk1X}JOsTAxcfz;3zKeBUAvMFO-c!qN_I zI#+xLoH(df$?lStq3HJ+Bnk#Tz8%;jl+j(EX%ar24`?z$2;p6Y=kwNj2dHOLOk05p zV%rapZYVJ+MOXyt@RGBSGGB$YYpJ*oNdUw@mOrxb_t5~ZYf{1#3o%tlw({x;g_Jj| z!)@&=Dof}4krGzbwV{zE8(n`u>a~#}Yfo`cs|NFm%>=9_TGyznB7$x1vP8cKY8s`_ zEh{Rs>YLkb_aL@OR!zPiFYe)>uCJ0srH5U2J{=!ka}V}6z9FI{n|*h*MBRc%WuU3v zBhyvkJ8#CkpLY`Jfx45vdLL78HI;hDxz=Ps%`pbk*R748W&MMfxOk3VV2k7$s?Q-7 zGj@k^Mv^FB$7^c{x~w(aoIl9j<*J~5+fN3<9*VvrJVhS=s~IwO!NuR7EwXd`j3fHL zT;TI!fxUt3Q4+`5!^=jTM!H?i_&<6{*djFmmN>H`J*NPM^&_2_4;WKQl zOhh=iI)v(kbJ{@@X0tAAu~~rkXo?}Rg5r-_;X3;%S||v|@;$TWvWe@2H30nz z=XK3!n%8Dgyg-IB0I-5kepCm%cRcoFZs8i?j1>&&MswVg4%=~<+UwDU*!7t`H(?D| zki5>L2HC!RI`JElz6HZkY$%GaJ-c~>o3p1*;69m$4En2d0YagVKTTI*GAA~Ej@%yk z{21cmaLUT;n%9-)rSAljGk%?q-LAFFA9+Vp4jFU6y{W&u9iQlJcP~Q1%%d<EJ((_S>9-$gQaZ( zVtqOx@-gDxUrUGgnrBPVkP@gk82S>v1(~(~FDm8n+l|E^PU@d}t6{2h*VAtEh8>5q z5WRH#S``fU5BhO}yz~r_ZvYR=B(g6@DyVX=0+}u|^7iF|r;;y}?PPA_R`5Oq2wysH@DnzgeXQ+xkJC7-U?rZ2cR>v#L% zBUOAhFO06-i4DHa?F;wT_Kj;q$?to(^qTqQ=US@|#Yi%7k=GApd<)jk!es&|j$ehC zf7%UHBNN5BN~p)EOA#-rT3cP27w$EdhuqHlSCf-^{Mf`UYfsX)h=o-T^56&Qs#z(r znI59;F7uQ+K2(%+uLpJ1s`BQ;P`Vf9VSF=KaRTS>TFG)`L0zYv?Ck;RcY9>bnG4-O z!G(E0`DsSRhY{pq9&cUh)vOBT_t@p2O=>???|;!IefnZ*s0&No9ykQmxph4K{0T6c z0_K=$!DW$yUWIOstRyT3>^X8$M=7OC&On(76^WEp1kfNpO>XQ?i7qlYnPTI{UJ56Y zR9M1Ik9%1;`^?rVNiQD#fj>MfnToD{bX0%aiMH#e$9s0aJdSpyuf5W zDPKdGia8MnAor?d=qOs3{gsxNv(l5JblcVRQG8B;W=m2eJM3WR;?!*zxp z_qS0|=@(1Ys%<4wkM z#n$2S>hkrgja+zZIlFEAfjhNLVhj$#S()=K6(yb7n~GOd{0`hfs~c{cYQ((0x|cEl z^+o(L785*uY5rD~7s1W0+h{pxGNax;1CEPkud2p!jbilh9BRc*%+NdckXkQSh@tIMa}WTK z?0B@;TbM2N$k{&99-j>_%`Y?vofJ@Q{ik(X8D}N!RK8ITlKJ^)&~f7J`DDh#_})-c zxU;L~K1AdTs;jQ}>Uk>pde`5vQ@|G3&#~67;Y-cAi&&l3VJ;U(U_6eh)VRZ_O(Fw=>&vePZ>+6Ck${8bP4ko7GX@_>{QbcqJtfp4_;Ki1Phu_P~vB z(Z4b~854R#2f?;(UD$fVj$_JfByFDtE8FVN_I~pI!xGvwM()95t5Yc31N9hR63DI$ z4D1%kS?sn^NNGaR7bJhiRb?n8kUGY-7`8<8aD&N%fny~18p1`shYg6FKMCJ6Klke( zDt_JbgW$neC8*GYJ1Vm~Wj6|WKNz?13F5hP6-m&vd;QOEd}7iFJfrCC+VsY)q?g3+ zKa}5ncUF1kEq&+JLot;WM(ejisK0jQjMWL2%CC}DqN0`B(!7pk7oDV>W|aJp;3~LR zq`LuzmBXZA-zHI5PV`#W<)$5@!s&!vAMsw+KaW?RUz0Vh89JYf2JwHU&Vbrph;`q4 z^d8$@UXh3Vd9C#RD*?4{;x(2jZZpNvpWY0K`yVcw$X>IrJYYR)td+L~J90roCD)G_ z32L0Ax*ln{Css5a&7>{Q_qIDGp~*x5<&g{DGd+WZK(0EP9DcssRNrk5B_6^>DRD}F zu|xB#+F~XC_;r~ZL=;&Ph~{#q3#_@U$qAs*S=hNn3Tiqpmnvx_O=lPbB7e!3seb=E z<^7bdeL`EC;$cu=t{UWf&-@@0Ltx!*4x&xGdbJ`NhL&a5NoQ@NLlVxOt06cRVmDT+ zl}qfZj*q|rsA;*Xd4>G5U4It6X)R9guNfQ&NuYO5-13!kmUGU4T~0B9`Ho^%n-S%P z#IS39CM=uNXmS0BbdtyLlQdN3W|<3HBz9Q|S7IE04yCdPZg9qBBIIFjw+`5+!sYM% zj5&V}=e87U&_Q_$C};Nn-FbPqXROz^bVT9R*Y2;;Yg1Zqlg$^%qpsCDayc~2GBFw! zp-!;3rp3hhAfWD3dnrQ{(dFrx@^%;4N|>*Fw@?)(=k2eng>6mD$Jy#}@5YF_%ixWM ze|951Y)OS5QkVB{wccl~AcX8ZJNhc0$Muh<+Gd$n$G%Oi>Q0Oe*JuT0&rIay1$(sz z_hx>YWx81f4o5><$JG@bw&|lAjzS&r!G6v;!s^`h#lp``~$vfp-WAxLg3dJRAj#n9A5U*Mkvjg zjk=Tfp|qU5KPL|#7bwCD`?p;`-^vA$jvg+ySXI`jYWIR8+_;5(mPh9o7;*Rco!29BOlD8$#-g% zUH%cD-1~B;m3-_wBbTpGD4A{Qm4dU3#xxu4x|34Yf4Ni>eZus3SA2KFSmZ8LN?pyO zT3)Wo5qPX(hl`=CVwky;GTBal^S#dJvI)iI3S6@d;g#=y)^$sLJ|p@84}LR{GK&&$*oTB^1vCfyFOT)T^jSG!n{tX6IF?hUqiN6+9ibOW2qcA4uS?Y zMcBK`3nj)Ws(Skiy3k`c(PXtOgvRaJjz~p%NTG|Pg=Bdx*W8_EE_S@#a>(d8w!Z4< z3<1G$L8+IqC?{o(??9w;lzCj6IgJKKrb{=TJMWwItLpI3m}Rsa30JFpnr#(cMG3|( z2e|8}pAkz>?AFaU(bwww-7x}^&PAPaAJ6}UO5A__d4E&xFB8F2^RL$=NI1W?R}62^ ziDGSU1u!qvAY3`H(mch=y`2`QrTY61nALQr&>C;P`g9-5H7Fc(l@M>=eUM8%TL6qM zgzLDFDY?(5g>ci9_AB~bMKg{ea+GS zaUpC`&D&8aq+hwR5OfL{L=I|r75tFh=Z(THA9Owb5B^ek`Q)&9TkcKj_12KI5Kdn- zRq^e?{pD`q{>;#cghXq9{4pphJEH>1L{}f@NMrCvJ)lO8y2kn?RYep2sj|O&uA$Qm z1n)&B>oyk#qTd?b;u0-3M)Qo`BSdiak#9#I|>1a0B2_4EAHw3X3*@*pE;f3z5VN#vLd+ z8Q~fI&n7WZGH(6rXbWaXUlbv_b{Jby{Gne9~i z8Bi27F4Gtg92c9x)TmR_`ubPS>;)a{&(GZI8*;TAoWaSP075-TLb+*S^6RT$4&lh8 zIOdIe*nEq-vW5-*cnfsJIB>I3n74M5YkY9Y-@Gqk?m<~CM#U>I#-Ok9#qeQeIXp>Y zcYb6Sg(^0n!t=V7F^?M2cK!UpH<|~vXRGfajj{cTyRa{eG!fSlT8;GIKNauSoLi%< zd(;bLUKn=5bDS-Y-QAMo$K{mBAc-N?GMOx19NTGBPKQTcClxFix3wJh96pTDDeC{?_q7?h%4_qX4!20 zpa%xcilR1p(x!~L&lyhIY6wCO_L4D?~l>LH8{us;{^#j`ph}ce6?p`Hs z5+w`XyFQul4dy;qKd+RDKJ#LGZ^@I2sOZKyd))5IPb z&hpTIa)+l~lpV6^;ghclex>-hiuf9x+TBH#3;?y$OQK=M-Rmygt^ehyg&ArosfxLE zUAkh``gIC!nXMh{W7%e_yXgK9GjAOoD;*GT?Ow~K_j7jQ-O$mo1sl4Zc zX)s?BM6oUPS1rQq|}P;U4|uKVhB zI@(P1F|imJzxMcLgfCqDZ`|?bD@Fd2ujUfHWpgF5W~x|D3YWYeZx_rx_r*hg;>PpC zuHeagh9BNDAjR2o?~$W&n&g{rra1ru|m(FP0sVP2l`LApN(WvpVs`K4l}E zNfg0RS~Y6(x{ZctZvAz}ePl%_Z^rWKPrpB)3v65_UkEq_xAPD&;w|G7V7e-LwVU3K z$Q3{Xw>?@P#zgunfc*m{$_hcjy z?c4ZFXgpWvofP=!MMohCZ^$UoYAWP1rJYzwLz2-Ty(E-cdzp78mydxZS!e3v{iubqnib>28k;HJIk=ac5{#^V zevoC5*$PyJco@uBSEN*iA&4gO^%>=}b8^LAJSe=g@Ww*B>bDu2@oNAdJ}PT9Z;5qt z7;$E6U$ph?sURm=jb|0y;Q(2l9MXGSLki{%Wi&!E_tac&^I*{-W6(YTI+nS9Nm0%G zg7K{S8<}?A>bNwf8tn(EctJc8kLLJs!=KP6-G+#7vsH;8ugyO)Os8`H>A?6@pU)3; zb*C=P;xXA)H*F&I^I2C(xPGi-{TB_0y?R1_`4{0~BE}~BY^F8-Oe)ydTG6~+&-3@v zwj^`bsh@TVYeZ}?J%=t3?otbx&h#Qdri4Yw+Oz*aV0A1hNVCM$UT}*=7^uHW)*r@+ z!JPYu7${Cne@Si!nk~Ff++SR5=;eHVgz%P`Qk3VkiU&asNRAVp;$KMF@$tAeKp2LZR`hg4!F&P@H7}2%LE&ja_QPIWrED>tsZ;X zhlT6o>`?9_7psjs5iwT(h@Rfqx+?Y4=EZpWWJO>);3A<06BSepioxnX_7m; zuE9#<`JdOF$*Ui0ISX8M?J@BQDgC@!0@&uXHj{Tj$*xZ`iH8PXWkI^pQAKat5@$K( zPpZVQHP8Vie7q$Pja`a59<}LZ0_8$A@Fi49)>hXZXJ_FBMwTP2uyvf3nW^yRQ5Ama zFxe_%ga~BS!%U8**=&-}C_;nDBYWkH>Aju9`zMj9R{qj}h?~d!6kDX3=GAoobGHY` ze_61e$OG1{JXfkoMH{ku_Ll3Sc^nNF{~*VU`m^2K3Ll$?i7`lhLm6ktDW8U1J8~F47!K+F8F6)a8_X!}Th%U~OAcJpxL5h%?k}a5nzMCsn=+o-lo_pMu zrB{rukFZ+q071A?yZ8S|%6xRWo#Mr?wa*~6=zJs{oz6~Rr=%W;O1+KQhu>M{NefXp z@vzbfc9i+@zyGOA7KnVZrTJf07j%^ZJFa-J+%yX7;(I7k^+!)mT>ot0m?vr5bdS|f zc)F5DJ`p0vWUZ8WX*WW8g#aRptEZyQuGl8lV5Tyx3JsCQeZa$obF=5%FXCNXin9c? z#;C*Gw3(9s2<-P?F?JN?&FY;0Pgax`^5RVuW#Eh+$1VyQ(O$-^W(!fD$MRva>JkUa zrq;2!hM<#WvQ{Cwl+Mz4aSwjyC7(O_GBl+u%V!bSQ%(d0f>c2jUK3y?gYDyI5>iim zvbnk~i?9{PP_!r?0;)m?dRT?`$RTbbAfBa&$61~YNFi4*?k&Om$;@~CjJsxcxNql+ z`=|D`o!lg&cZ3T~ChZBFtnBteGZ;daZ49Am?iPn8wEm=CEuDsTMyzhfgcA0uU0bGg z$^X3g+pl#7GzOnj|D_T0+AuuVG{xDDL6E(1<={gcYrX$DGUqqt>qh#&7wu!B8@UJb z%jlN{^B3+a!_5!sr86jMTwAw*nmfa|e9_`_Tjf#^ezEhBXYsYy`?d|E%9` zKIe0aS8zq-sYhe0`uU)y@?Q_Efws{M_Yo<^1^v(A!g={e#&opvv;4u`B}dcC2PJIs z#Juze%PUUrqoA-j-+W>=pY3J1@pcnn+_rvkTbf^Pko#(f88()};y25plRnJqW~cvP z!E!I(V%7y} zzN&B-z+wP<(ZEHW+I*IDVfZ1qcS(fBQ^B2JHKGx`q;B%4_la@6E1;P-)2Eaw{*cQ; zFLby-8%h%~l7Guj_A;}03TsGD6Jq-5asHd-FINwbnI(4n^Uf!UyE4Rpy7o&Ld0Ie{ z^Y0?xdnOix!zkq#-Ehs3kZ13)#SZ`j%6*nV`?2l|ycHTQfN` zQta|v2+l-%)f)VFwfwEj1bcR0WTzk%5*S<(mI0%cZt$-s35zZ;{Tt|V5lw&0=Z7;`+ES zCI|Z~Ya@Q;1Xbke+r;9wWZBqx@SU77}ps-Jm zkh>4N#wD<*KJNdV*rK;k#8mjIXU}1T*_$Ors3>-5%kC1h(vN>UX5L~{!y{Csjhg6NF@ihUpUYQ)EoaG%Dz;$%`PP;loi zoZrN}-&=YRd;xU`adXrrCxpj2@6 zwv2peBm<^{8->3hQ1>o1yJ0ZhI2!|)hJH=7BGpB7Da$u zu3j$djU#7~gNPCIbBoVvlaTJ1-IFgNq(D9n$=nBIk+U2bwpEQt0&CxE7#Ec56YV_ho~HKqaMB2oegTcl6fx6`)1jlt5nD)9{`DJ^%fW3RS4aZ9d)dPyiA@K=B0GH3rZd-5fGOajzuvirsW zxRh}hZLaGllIu8lX^nf;J-F+<(L5I+i_k6wGN%2y+`n^6-=EI;sQvTw3gA$<*KA#C=(xhkvkKlho`&UK;4r49@9wS=X)t(*S;~%m` zW&(V)(&iMIowTaKSNqcdZ4Eo?LD zOfX5sH4`J_h1hM!JsPgdQL!jTVosVqWrp&MaaNh|aHPep#G(o*g1SUDc+=mXMN4+9 zBbt9_qDC}1%O=Wude5@g`LME93DFg=lA^oFk3?@ic{DcYoO3-`mafF-{CeurJ&gBe zKrMi{CM{+30PoNL%H2Lwvd&ZTT(G6JMi?#urn1vzT{*eqUQpy)I&Rmdp+37Z67}Jw z|AlwM!_FY?uGs;+0R;P~ZM;PbJxJwo5t|a;)LkN31@HlD<@Be;R#U_ zUw;aJR}^{IjEZm%*YGCvxZ>X&VRcsvo&iXhd^)eib>$^?wf68%hWkT#9yR=&HW;EB z#US+f&VV{1g9&+OGhVLwoE+FaY03HH`!pW#eR*4YjquKe;*Re15)@*%eW!8}ePNE4 z)o#uWSL2D9CN$q)RDK zXB7?0;*gNjJiAUDf0e(i58=`)KsC{H9&@hYtLr>f^(pDZ zgne8Z4b*-%x70z(u=Wme3zHzBxOuB>?{>n;M8TftpWIHeHd2$gp_86MIv-nN%^9+R ze1P6s)rQ3{knS#6j)83s|F_<%fp_?G3%9Zu)w#1||EulgvLPNTesLW4ck;{I1IIS5 zm3^KdSiFi%lZ*>P$5res7QiT>SI`S>{j({&KPx*m1TiZ=4Mx`c?5hTBP;?K91_(lI z7v`-Tf3DQ8I-*&Na~xa!fb6a*fbUa}T7H!+9WPBnOlj$osl3?hy{uq=nT-sFN0#Cc)rDf-hds8oFT2^dy&GK}(X;@-SnpMv*7!&k|x za0~px>Xc)HB|(3>-RF~Pczzz2YFrc>uw1J4r+8Bl=@MG!j8)Ov`*5F_d1o!N1($=# zwg<46fab{!vTHXE?{IfLj)aWXD_t*hr=#Tyso-dT&mx|D^D7`{S~v3%<2OXxldP>i zBA@aH)iUeCqW((ZF~G;Nf=(l|Se9 z{x*GLe#Z(!_?#ZbggDIZ4q0Z4Bj0z~;rjZYi2>@jXj3DfdK*O_aVT8s`G;0HYHvT~ z*x&NkTiOq+SrTU!$D7?l(%0HLmNPdQY;%oCz)24mkg_AxX8EF+1@VZ4Q3MSzrR$$Y z7btOotOu7;a&tmLXM(1w7I8fLbD6@6LgQ=UM&EgpYN2yo`yYo+`R#j?E`G7|$C`Bh zKptyfJ$o_v`!ve`s`IJ!znHgEXxXH;rUz&M=G}IL)X(?D$w0#(Dv|yehGAuE8-{20iy5 z!O#1=WLt7>`Ox7a#6*rB?uO~lx3#LHcnHpe)LAD@s8oJG_^Y4(pZqvI zN)9J0U!uN7)`u}#-b@OSCxNoUjg45mx7wMkmAOQbe%&L zmOa@toEQmOL+WpkMri7v=)wl0JOlB7Mt8s0%@=9b4Rvlz0qt1Pax3qsxS!#NaZK&0}Wh5{duYoxA zgZweeAr9lOZ+K(io#ncMleIW!L9%~U_wsdIM6<_YVO5%ZX$7WWBZr$pMCAAj_F`$< z38k=aKo0JAe_F0z$Ig$EZprw4CVCX4eWan-?sBYG7gf#lG!P$!1RpiYTa1pSgR=;j zB>X#UPU=A(kQn27NQWxiPCGgi6HdBO^P_z|^Fn8x;~RqZ)~+diB1suj+_sCFt&bC% z;+9!zC#5+d0_+od0UlqZ%5S52u5?;_8Ggk(SLu7Hx6@AwYGl;w?7S4F=nhW%Y`(;m zU9tj*9I8?<%?j~hUYo?EY;9=Ny;8SjM6Vg3ZrmEIGWxlb%_;5mP@DeboV$<})IF-Q z`h1P8u!ThN`gbA* zBSGaSPBnxLov#yBR&K|Eb(|44gB5oT4V}lLD|rO@b0fD*b~d+2fhjZ9R%L*l_e&1c zyu@ofyk|&&>606V&K0w^E}h(Wsan0yt@Sr{60db3ck4UA9dI465PHCgP|VJCuJ#da zl>`;}tK3T$#0Qk%5Uo6fLs;BGRNq_It<2VS2+E!LKuR%tUG_i>{%~-SL63vN&9po( z2$QjA1zAO71quuVpet=@~$Lbho!J;DtTLe@ku1$%G5^YR6=mBd70djUe~&J z;%iKFhaqHEx2X&N`@AMFh*FUo3x#q(K(2UJ1~2-D>e@=2WV)H`SXQmuiY@9(Rvh<6 z>1-G_lNH2#wi1geRwl@RlPZ~Q$YG5Cu}{$8tY@Mya@MYf_r0@fP=Pga>JfKA81qE_ zYyX9puEeyc(_Q-BXvgasW?-N=dlku}6Wvj63Vao3e>9UH_UJ;AGbPpb=L&NbQPz2j zetmy~CF;M;0;%y>Mm1JK5bU(7=J=Q6U|h}LzTm-F9vIs1$CLx`=G4g<5=aE@rba^!r$Wm?3oQ#6UvSZsjh z_nOlt{^FtBYn|UV0#MdH?sm$ilT21@7fIN9Ny)Lqk4a`}KHL$G{*@1esed9?s{Y$> zeP9gbVH=ePjnccHUEA)4-zvRtLgM5HXCBcL@4HWlNCkEFF!%Dc9b1{-=A^NN>eZyY zF71g96j4N>#$>|S_K0$q8_{1HaGhnU-XUM%?R&qTDQp{Wonz8^F|Spob2*CFU$|~J z&5iE8JOAp3eda#oR}te2wNiB#yOj*FK>j#_7D0CBo2I_W0cG?5-De6}7nR1Uc$diw z4c4Oy`NXCz60(6<(c5!Jg0=2>av+uteelEcwz3R~<1e?r7_lb!=#G{7cE~dQ~-ilILi>V42d|>uP zVAy0{^wH!IvAQEP!)0Uoh|X8Y8}^Uo>GOJV-6e0rj2St46(E^dWs~XO9X=1I2#lafAg7tOmRy6j85R@J9{eR`i0GX zWFls|X2+xfw!?a>uQ#rlenSuq8wgd^; z*vC7mnjoRNEZ+4SclY@sMqRE{bdy|Mcw-LjwX;b%&f^o)^(}%d+IpO?I@)LrHI(9~ z)6|A~OR9NZzn;nOW>_{fG$;q`GZWkMhu~Xnv@2EEZ!xGW4(T)#H51|xk~Obh2m3#^ zA`q31Hi7fQFm|OqY`oPM+Muw_t+IKjULTosk237-jv{xYDL0v|W!up(IG`4k4~(Ji zO*wNG#AWtqNmJNoHa*6)w#bdpJ{eP{<45+w)v~Q}x&_AjlRvpnHRt z%=TVmcX2t zn`>|R94W!l_R-#Fh3Bq#w%sNXrfaoa9Akdd%Rd%4b@ID7IbRmVA%0JwNCe?2_b+~f zgAj1Vao#@u6B;W0373LtIoV|-Z~nb_Y1NZLvi70ei@)qYzeITODE`>>pQeem-j=G9 z{?(F{kqv(GVjCzaragT9Cvg6W@T$Hd3Ia2fE zOmcA^88PjAyZR&-igg%}QOmt}AK0e+eRF@@KggxG=lz^F%;(Nmo8!0o$yCzKqQG)R z@LoOwPz>8q))DUu5V_b!l4#-Q1bfJJ_FI{GDAvKCM6ZYrbVY0J)k0YT%7Disn8`ob zoqg6DL-!JFP3^6R?Rx@#0^>mKi$ay4#=h~1a1sgG3e&MU#!7kX4fK}z=E~zi8&h)9 zDh8B!pl6AbN(J$-bj_2`px-!~lO+B(R`4v$iWt(#1mwo$OQG3c0x2z7FX85}jmS_jl7E$(yLndABWFBRi8uAZ5JiSIyob#bD@@j zO<6AU9ElbpR_J3|2Oxj$p+7s2H@Rnp$?sZ{N%2a$f1}VtjB?4TJ6Nyu`C}#PJw|u! z7g_VuHOj*;iULbN= z^}t%ggMaKIQZ>V`D2iH>v~Ec~wiu+-E-1|OEs#R;fMv?sNkjJ7BE4zRK)XmY}Q7MO0Hd{Q?ZsE2A9hd@a{xjv* zO@zi&t~y?7g%g*ogM)Yd_!8UHgh%TU&odzYE~mmhoWLC~*?S$gFs-tDTqyu6ODhM^ z9OUe$7^YVZV^2*R$f`bUsK#c;IieHov=u-!@L7q+49>~|LG>mRLNX3$0J&mrb&l-k z@j?>fIS+zM|4m<5yPt8`pGs=M*)A&tspCYhESr`gs?w@g4k3?ms%JtYQ6`q309$uq zCxH|4sJiXaC~*bK$D~Nf%7}HGG}8|8;)+`ftkB`CiC9<)eoCA2K>JPXK4QUw@Gh{m z~LYtsQVQ1zVDd>_Cf?nUU*2OY;XhfisN2I)ouodb-+?giKqq5gEq2 z4aP64!|bY@v2a-rP}oD;xhjI0`_1!=?^rbHE<2i;K7rkv*;YT<2^VDcra3X6p81X0 zTBii4igf&?y5_-8-uo&*m1(pGd;%IrlT-Wq#i>NQnaP3mN?k;m;+`W6563+X6(}XD zG{uMllY!O0R*jd5S**Mt1JHz6$xhYXR~_5F^Pc>BYO6#ta%&r4ZbbFMdah^f58V6~ z9vazJjmZ{=#G*JkfI2N!HOV=s-&O_T-Tn1L7rWmS&~Upx);eWKYdVvn;wb4SUP^`- z*A$HaphGNTCd;^Ti1D<5obSoyp}Of-IMX&tfh%>E%0y7jA(_d@QnsP5mKE)y5Iex>80cYkG-t z^5OH`{1vwdFu$B6)xE{`UF{S9P-36?^S(Pzk@IgUtW@+H&`ewnw^mMJ(A7cKp|b*5 zwL*C{dIlsDyc0Q+WgezApNrv!Z?^6E$GWAQevp`;r(fOtmdP#LPa@b5U9Qsm z>)kGRsOOi{yZEQ9K}2A7;xf67Q9NPI-B9qAI)@=eY|G})wkb+Z*zy-5fn|2NpAo^R z$t*m~3!#)s9o6m1=w*qPu{nj}RZnbxxim8UKo6n^BumZK{mDw;>sRg~)W6KH=G(6( zt9ILz<2|egqneLksh7!A$=2hSs4ERrw_ydURg~IUyB4xfrl_IsGE>VpgXxV+GHn7E7Mg3M8`Wt5f8Nb%}74oyZP)wouZOiE3 ziSu}m=hSRh;>-gqM^rPu)RKdveF{WRbbsi9wWCjYn|fucNEnlxiGiiJg9d^quwu^B!VqF5TS0V@8&;{@87^O^&wnbVYB+q zgWya7e?|Y%(~#?5?Uw-XI_PfhLa^RE2$IKRgMWoiS*Cr|ek_nMYL}6sH4pkryrfoE z^9o(A)D3e{J*3P#Ty9${>SzTxR#$!AL+Elm;g5oNGRkg39F#66KUFU6?M0tXrFoA9mezhUh$2)U~~R;@=Y;;Eb61=sI~t4p+kS&Stqh#M*BEtTF$) zUD2+2D*Dv+FqGQ$3-;t_={vBsj{V0>ZAm=JTrVejMW3IMX7Bpxu=q|ep7D2S(QWNF zSgnUb`iFThLQ`Tc=xn+beT+pCXtbR42g1uQ#jQ0R%k(G|=}G)MBA2=TJxjJv|73-) zA?T{MU@@#peOe9wCf4~jkFr=>oU_duQ3$J-;&XMQTcQup zDQT6p{6F{e_Hr5$qb@x z>c3j8_l0iTM^L!?`E-mc@k)`e=G&$nuhXp9giveh{IR_0H%SJkOoqOhQWcm$ta1YH zWAV(fC-67?mwmzu3o{d{H}b4hx(kAeL(yeC5cqe%4|q~f2m9T;^bv#kcFwK8mc8Pn z936nPOP+V7F2-lQB_T0%jq5V1>Glnw{m`5bpTY(b1^K+iMR{3?VL%YcgQS``n^Xic9I!ozIXQcvR$BV;)|1y$TC6g` zsq*BODn$RY<1eF8To+=}-K~EX7wgGf;DKNd-8H8+<5y3xV%NvV0BzcZ;?Bq};=yY9 z`sShf`Jf{xY(&9veIq}c@CPH&_%@$C@CK+bHrc}L^HhgwL?wp@c<{VSCDsGO_yC}T%@ewL7wsL{etL{Xqm1`c`?Wq4ywWm_?$uq= zLHq)}{Tb$sf~mc_Q)a6oN$lrtlzj}{rw^7+4Xye)dS-~EQMKly6f(QbquK)APjDh8 z+L(zSwi)Y1kk<>64oA%*GhE@kRLX-jZWU_>of0WvYZeu(UGfhTym#W^YXnYZ1!ArC z)Pz<#HM&&DV16f55hn;s+91;c4q{O^Rn;3-kTcTgICN90L7&JmHre}7_3awQnFIl0 z*C|pq3G+JXioGfx^|@51AH72M&g+&y2%Nk)t;l+$U5?#>s}5R?H9@l8Zu&(8<~EyM z{rkf~U^sK67-mPDHY+p7pz%K0DufOa^<0$A-df%vtGTfE({j&%I1iN81^AAMy|_cQ zJ|xbpS^h7s;lTm*a-*v1Fsn_MgyJ501p`QMa1rL~S7=IX&_y)Serc3;MA3|-^y%_v z23JP<5u>zL=B@vY8jDVI_>U==ScS0X?}O| z%};W7rgO^_>JPKyYy);Uy{Qx(mNwwQF3Jw$^>0rDgwRs$aD&xj+}>96R) zG)<{2GTq~9Y*h0ZO~KegOs}Tl%V_7Af1NkH$z~tD_S@WwSs%HQcDvjhl0S~OdqkO( zukt|S&Db5EOA;%Z-(04vY@uv8gO`h<;aJ=zKMh$+cOOuT&i`YYeMI_xy!fmpprx}a z#4w!Zr;xN6^-zMy+MCJiI}u+H=-XXz09>IJwZONt%#zZF#FipSDcH!tzE_#Oc=3eY zB{@7>u5lJGLuV^kK>fC-5~E55Qn{6Ur3l4SK48L_oEFNv9SUhDtd4k`;0-d`G&StL z8wDx|1OpDcCv3YWSZih5KMkZopx~Pmv^|;E9J=WJY^U$Vvd$la&uW!_s~=o60g={D z3lKXlY+^4%$Hxn8mk<`q6?h}(B%5T;s;O}z=8qVX-4+!i#T&&K67gj%FWCynROkc5TI082de@t!jvQ{ELw0g?GA4<3irw`^#7=jzUGB^b33f!laI-$vmyEd&1b zMoTBBCbq>OT?BLLC)KR_8L7OpjNxTAzV^-)?;Y)V#U5kY0z836Y%j4k=#u)zKy0DV z5Jc+$F!hKoU`ipW`8%4UtVJx>0Pd!VEovuLDQl1joCO`gVo`;dUN|szx0{(4SUFC4 zVuWlGt0`=juQ!$o&AG+ z?JB-<7>pnHqH?ybb4-}=v&$jvJxjij_NPW?Y$Sx!`EEmC>#tUS=)r{krpWB@@n_^z znsy`f=Zkf`6UqBw@O#Cim?*m&9iG=Odl-ueK?m*=#F$*Ye86P+tXSeoBF7c!cL7h73 zuy|ov4M@~7w{1l$zPNzXb zyzhNL0yd*K8B;s3G zP%6y_gUh&`ow3d%$9~g!FlyhfOJrAT2#COwkdM{|*KeWrK0UWX={4Y3v8v$qb=v#KD020o4p+K1d4;uFWFVP$cYL?Zjn;J(qpfR2TtJR zxw#&wf!z4{UI^fBj+td!=o2ArjEq=}KQgLJwSX*^spZBqC*pR}s*t%C5Qrwn!QE~@ zd2+;qZ^_20vPu(wL(Kci10vS2enG8RU&H&$f2>KQ9Gr%KJFk9A#C_n?3$UmqxmN*6 zw2YhJ*gcZcIntu$-npTD-kwg}$3Y3dtJv4ta14iqW$wq3{NQTXmcE%m`zXJ3A|n3l z8Cdi5{Hkb|saYgEc`cQVfuEMs@0TpVh#jx@(%zCkttdnd+*$4|H`X`SJ2ftGm>NA9 zgw3`pE!YzP1`C{CPd#s1jiM{quKIf3on{(!(3KJ^FQKSn?n#H3+;u~)!-$+&V3Byi zN>Q}QAXdV#)406K>z!2$xW8kFQXFN?1`t+lZ00@Cx`NKO(p?})H>fS#j_iH(q?CX` z#Q3wvV5@kwCf!G4^?HrL)$Duq?79VP(Y+~@4mtHra_#WBwdKwEX`IDUQIN%K3TWs~ zj=eD1%^ut4B+-4wvFUUHrcT0kQkY%}>}+OlMa9R*IrltF)|(Q7^#(wpT5>8KPuP(W zwh(`bZqKek<`FBoWra@%E(Sm6kX4g_xZ+0>=$tJi*uAPrJu8&oNjt@^-c_p6CFD1f z%$3B{I<>0~vklh?EChxK)4YXGs0Ovf-F*-ugvHmw`4?Sf^3tZ$lLaW0KD|*p8TJij`H?c~`b0k!>_x*n3*O>nbyAP0 z)rqW7_iO&$PNybSqYJ|0jCuf%(m>%GXx|&9K3=M{TLq`*@X0C+u$%ZaTVU5+Y!}yO zX`!mdRuPAB(pG@t-if3T>?Y zmL4l>iNiBXiF@`i;PYE&?RgcoIyR^x`#8bWYVF7`W}<4=0_z0eE;u`NPLiM0wUA5! zH1;_-C)Nv{;p@Mu74ev|kG`N&!+1>z$iH#Piu=zFK3^Ad!zitW1&3q+JWv2pD?Lm; zSt!ffupr(F0sR}D*2Jt-2S~XgFE^cZ)~W92fwHQKwd_?ghCEgFxe^^Ry7Kde6ZEz16x$ti@!M{l`i$lg8`8)A$1Ifq&{o4;KkssCw z)O4>;wmure>wI-O@8t-tXhJ!}y)DT5@F<{K2g=e!_DOk3WOh!E38hhkUhbAqm%tGK zV|+dpW=^xZf?P3gFXR2zVVIIJzPF%`ptID3IBrgrcnVyk-iU4Q^PlNL27yoJWAcDF z(a9K4kT5`6c+5QogO!!3lw+ZYFF|j7*MxUvE|?qIeVDn0slDYgcGBKm*%?)ozS16H zu9!2b^DqnzkRm{VqTq88ov|K`s#4HVXx?zR-Awpas;m&|!9J}?s46w9ObuaX#ssjC z-htv~JVGlw>@rB&P$BlWy<2`J1jo-a7Oiz!%;J4!{A{z=l93-Zwr{Nk)kA78I9PBJ z(-NDp^NqpweUr~mV@!y-^`psLeKN#8T(}s z-Tc6n%MLd$pNa0cN^gL}GQRp;Ow)pFJb4RsxY(6W>ua)q*mQ2-EKpn!X%dSm&|%{* zDfM_R0Nh>Y^88BiEr>;O^Qw-iB2Icz{4z^y%G(i(s%Wl-N+kNC3upH2^HK`vJr$;K z`3Aq>5~;T#TYdJ95YbGjnzeTWQ>ZynN2`u0DK}ZBbqz2i&qm|fS_pUBJcsAADlG}+ zZ)5IXk_3XkInp96%$EVRtlEI!y*CfXJmX=~Ju}>A3&)6_xZTNKq-C9-bE$#f#|Ma= z6osA0No8CmHxQg4iArnnaD+K?R@e9%lk*++R9+gq>*l};98!uXQesMp2dal~gS2E$ z`JmJWPCKy}PG(+$UHr*HKxcLb(`})OBGWDml>s@#d`i=9F@dnO2VREF`v^z-m@N`aC91z_SoKKWFXbdO8Uh;HDg+j(nVgVtKh9VC!LAZeKKRb#3Sjj|mcix< z*7HS~89Ne3Zh~F+PFW9VdKgq&E--?zc~R@ev&E4aeDs{;79^yR7i5{uR({~hrmJt6 z;<%GVPxoVBelEXOGvGFP?}W*8JHKsodP~er_Gz*S&EUsp>kj4zfqX6QGIZ~@T|1uv zeMwt8iB&;Lw0Yd3us(~lI$&jQlXSVlkk_XGznO8rsYy;{(0qVFh$&)$%hVs&TpGUBto{ z=;Ai;pJ@byMlQ8UyqLY_TeI9IQ4EXJT`dbpEM^PVC9W8{a=CA(h1E7JCgg(HAuY1I zrcVp(*l8_?pLa@w^z)uMO{f&mWTPO{gI;NBj<}M&uW=$NZs4gvYCbCPYxzr`5t-?} zXi`Ms&tRK;^7)sq_I7l*0IaxP1Y%0w#F6X*R)`Z=N|B_hyDm?~{6cye>&4f2Pa>$) z808Lv?pIm0!-l12n=J)x0m(xuK zVrf`q-x``bn<`Y%)x$X=-EP=5!2CO6Npwhyf%oqZ5mpoE(j>7Od6>T*a0uY}iR;Ii zcrH zM;^dPK(=U@7{eyI?qU?o!h={?qH$Qybl`ReEqk4yz;bp|&=k8dt@3N4)i2SWNTSEH zSIm}Y2-2fBP820+gZx+`>hJKj)VEy3)^_UcX8|G{JP33exe`vla4!;4{KkU#PN}du z8EQ`5@}VZ4`1!5rF()YaHu&A9!qjdCBTP!pp_syn;RLV!JI5)KkiEdUa!gt=^TOxS z#q>wJ|Am5LP5k*{A0QP~nYu_rT~%b1yNir=WRG2Bw;?q=M}=#5$tlIcj>~QE#Z$vy_{Vm|_zKkq^`}p7U@~L? zbEWWAs3k2N3D0Pc0zw@n1m-0l(e$wigVW)eOuUt?B(SfLN;j$VD|_iCP5NP7C=9Gw zX<@eY!4{S4U+&AYo1ff(biSr2H%-c6iQTz6J)~_sBeLcimDRqTc%Dop>q~G*CBQ-{ ztaXHZOxDg;Gcrt6*t+ep0k4KhZ38Cs81?c3q?;dbt0vE*i3`qc=pz{g*~@26XbpLejl-ErC1If{))DF& zfBEz+xhRa?*$PZl7v$`h75GxY0{0W45M8L*T^h5%v;UM?=yT&Q$lPSN1l@OfzyE3_ z706swc9tL2`xAe57pO38|D5$Qp%*ZI1%v$C(snmFI5^Zy%3nPt!ky{UL5?WOfBj1J z`#uio1%=jZ?&H#0ejX{co_1KcQ-GuI-)w~^B@5QvKazggukIJcYS3g#OrYAi+spFk zJ?7;>;Ls6Ri{rfU?$O&zIGdLvf?wx{tVyqrny6EjdIW+snapd6y zgrNdNJ5&!L_>yhRi0kF~bD?^rROREkgH)b+18!D$>8!UX)Hn?ZA7p&1B`J(wHwbP% zL%ybaIQ_eAjU~H%bTin5A~jz8*N;7RGZ^h`Ahz2IBrE?9{*Q~b?HQJv4=m>E^l!ar ze4}OQWdU%IZ|>YLn}Vv{NuSWdNN1b>OJQ+K_DI6W|TW%3s% zXd&ZPixO!;!{7A+fCkBC7?%>p{Z)pS?*tB?ehwRcikF5Tl!TJ|5n7cGr}EP}m9qjlZ7InX zLRHh_#!t7I-7|T}pC#236eBQ>z@G@YxVYy# zXX27^Ev*B0eOAcwe(3_$gta18Ypqun@ttF?9p)%?prTDgyYdhPpPMg|{m?%i?$naG zgK;t|ivtbC*{1L|4ku6ld6n}b0ahlNK~IS^(K=S2G5 zQ{0;1aZzP|(WZIS&W2ntGsgrI^8s{k`pJtxgaV;&@0Oxh*hH0Y*Jx?-ww#c)wG3PH zX+VibKk?d5X?9vq#nYkoUqs`EZmjR9Z44>iv|AL1#<*O9_bIub`H1Nh6}m5=by63y ziutU;!~x->=&pZgjJJVg_=Ej_tOWvR(w;iZp4=qkc>$&c5^<0Zb%#PQW1bDtr~3nZ zt*dpxFYKb>0+3xql!L5*wlpi~+uPbyYYW<~$bT>l_ORR~xHzL_9n3lo+X$iYr2xZV zfp=Yzy2I4_4LB8C8X-D@QC+P30qVb~N!l!z-ifJifE*TuF4s{t_T8NQW?f=nG*}rA zX9fK}IC&5W;aP$5pTB0^O`gVqzg}e9{Ju_Rg{_I)QdUn2;FP!N4?dLk7+ik!S@DN8 z7YowzBzocAYyoMb3X?$1Cp4R|kja9Cd>Q-C0#Pbs&t4->#iJ{_ot7uMEz* zyDYp*V2wVzmzUjtv%6&KC4(N~>Gllg*H^jd;R)L(G4Qu;%cCDH6Ds^5%)_8Sl&&Z7Z8g&Y@7kY9u$D&>F@nym}UDuv4 z!2W>)b=HF%)4VCCiLiuGlf&>;G1|;G7uH2$8Btnts@`EgN0kRrbK!J-i!RxWoxIUQ z#2dwBQCes05SQ!MQNGz|pBEnUFh+dd#N^XP7H@wUy(uia*ue`bT0rnP8}lD~(J zp+{*MS1Yd&Lh1aZ52w2MiWHN#ci0fIpBvko7_3W&`?T+yJotv+Aw)*p0Eey#9_ z(4(GnSFD?j`~|pFJ6(_^144C}!RXtsu(o!yK-YU%En11~qb&rO2EOnDT{ca(K(fat zR5D$;-=b2jl_{XloWH+$Y{ZQ*9t7puFLC)CXI=jjS9wvIXf+UhK%@|pJDNNVV`sL` zT~0O)=}Ac+w`VE({37$JIpp&BMhC_^;<#Q`#Jrg?GazZ;v+ol=cuCRotfH7rw>m)M zRc~4?yxQ`AS^&J1d)hdQta^(mex;CCP0MPSf3r>h_ky4N{D=AvJSnYT5y-mPQSK@^ z>pKJoU=VeEqj(-H0^)8n-00M$r8;_v2$*W-pMII4fTD!UU!kq#Lb&}$@?7{znJi*n zM5a+yCpQe|4-j#VbGyPq>6RsRf^xxI=JE3IX!frr2W_*hm~mxSwcrA&mrq81vMWo_ z9kJYaDmm2_o!gjSrugR@miz!$rHtTEUy*Rpnc@EAxVp1W^!{3R-xDyq0FF7ZGi5GNy)w!T4y4H!QT0QHR+(Zv zbXlkZeDS@GQd8tY+kJw>zP&u$)Q2dhdphIaLg4TCqZ$<}&dUVnJ%bG`-MTNezjS_Q z4LhNBr{T_oy>{e2b47!wf-9bS`wKVr2;C$nf!y*nPR$)Z%x;~3Y*1QWxGjv5$GaXg zh5Oh`pxNDqODA3J*#OA3d7sYt(UF)XqET93DXVQfIaE)1<&TUX8P7Gce#)}zqI;$< zSh!+ZIdiTwmwDt%HPteS!UTs+ol-1fvUdd^SEGJ=7O<2g=!h?=Y+;~W)stLFN_U)k&1gRj2ofRnf#oCfldQGvvlv#vp;VC z0fMi=aP1I3Xeir9%f)!JtS=7k7t~KD{Mcc-_qDCWnCP6Ow>VllG9b2z-n+{}=r)fh zr-}5sQR*=$`^A^%X$sage}JG!(WH>KKX(s8A=lIoVNQHti}l zKH-L@8fb>>#Dh|TGuqE}R=(%;CDR?wjV{mc+k@aKA`aL(dUe+Vi+SptQf|fHX9V49 zL8|srJlzOq6-_;6OHNpKN4a_dW4a5;L&q$7TVQvS5^AHcHZM1UYV9apI#_#E)0j+} zP~wK>no}u&7NzPafy<;ACZ!hns3-T;7H%iQl9fRQa&PWHMSf#lc&QFN72Y~(AsPONr>SKgKQH-30opfac7TC90i*|SpDT$k7 z*d%R()Vv3ZO~|AT^DJ663thR6RcG`Ew+vN?(Cm$~mTJbR65O^+uZ+am1dZf`CIEMO zJ6%H*1YppgRrlK6kc|IVr8=~Kq`8|V@pyt1PFWkuQ^VcilezGn#DM{7<$oVzxxRV# z80ZIM1SWd1@aw}P+YHRrHM~X1<^A_TzF09TX*z2wS1I;=##rLsK-+CEHM95oU}Y}u z3NhQ^E0vwijBfqa26d4?f8pA>m2-(#@|7T5G{iDsTp_qn&%LZ$<@6rAF#0^qKwq{p z5zFEL&!ONq6I%@ycD@Fb>hVpLg6Iao>idOq*%28YZQ5Yev#bIIt3q2E&H^H>1#tzG z^DJ0M{H`(1+w&gw` z>)*z9#thbTk1zz$ry39BUFxAymi4-E#vr)VBm zFUrS-pLShy*IC++ni3Dm^N;hdrUwvv^OgjQBMKQozVzl{M6NdQ<8Y^@s-$7aiwbtQ zb~5l(HS9A#A3mAQ--pQuC_~RFW_ry*$6ypaK{rsHUA1;pQH@MuaQR!Ou|aEIw%J2) z=(LnV!pJO-t5zaSuOnsw zueOP>q_lxiq?|^qk=T2hIQXML_{47K=p8=aNZ`_Q@f4-%Uie~PJ(QOFVounS)E+@{ zkd1=nm0PACt8L>=^eVrj#&T?gm9-3=j06giHM5nm1PzN9@5cx4kikQXo@+CmH{C=* zH-~%%$97(&x9Wp6Ar!NQfbWyATNxH2PYIjbbaHEOQHwiMGL|z_8|i%Lw-4DA{}`m@ zg==^PUlJ^odvix{xztw4NBI};JGG+wbRpdPYc9xtwAJ!WlM{a^_-DgXs3ax$C&G>C zQ`s-=1dgsMKj+A}zc4;zRPSnOTnD;WC5V43KOVt>oX-(#=9F>Q4O%pxecD{hci_0ch-w1tcpuam@UvfnVOM=)9SjmWX>8}2;K+ye*U;( zR6hIfs2F)}SW4RTOO97p9~QgX>itG7h1_7ran`(%$|tb%wQam-?e*-`YL60Ryfv`T z)MWCOs++`ZpVStb;C-ln+F{vo7{xi8Ca~7_NN!?i;1Cd0JxojGXC-lBmPEboXSHNk z`46)&K@SiujaXa)`;Y_P0JrPbl+(sy8a?DdNswiL7T?IKW@S4;@}a(A zOGXl~drbrDN580tb+;AL)kT(bBrSCl~7F(SmH$JMg}nJ~*RbQY z{XCp=+=ixKAQ@rnN|3XiavPM!s=HlkwNqSFTp}7`m7pH-bqhnAGz$O47l*w!*SV3{ z{^w-sbZ9K`2fKL6{&|~im|c@z3l8jrrdU%obUpKmRgBGeKyh$`L$29K8}qQh7Gs;n z(plio75eN08g>gwCx;lEyXqrXg?E)E^DrTef{GtfsBaYm#~Y z_38-wIcXIRc~QWv%|-p-J0~a{A;WDUJ+8Xxo5EEIq$NlzDH!J2od;ljCUME9=$;*N%gFffc zqp4fG=>h;Q_>}}C#PTz64&|vZKTQfdW&=Lu7>|Rb@*V^Nj^c&pUh;-aaKd7<3YgzS ztk?L=B=K5w`nq_m);A=Hw@NwCs8kx1w4zJdGuJUE(YTC>;V3oF*T_Np}Af5;V^k0niq_`i@)Xq~C$-swlzn zCs$yx7%c6Tz}Lx0!IFz3TnLvM{6g5FT8}p`Y7qpADP8K@eCC*FXB1txyC*H~`L1 zElyY;VQNe=FX_AD2NDdzdwZeGxRMhf+jJECBha-0lFV(OoCTuK4xSgK;3C z)yblembATK`4VZ6^BUEiqrzULu-2-)3|t}BLJeLlR-&NagIPJU%QWAUiOQGZ&FHdE3Urg6PuCaJ%C+ovY8* zKJ2LTfj!~iX3?I;cauyo!Z8p}2jiX?6|u4#-V2Po&GeX(^F?V!=|_JrqI5 zLh?xo!5NE}29_N^GHVL@h!BxA+5BF@p=uBz0CAB&35I49GbYwe5qh)bT$P5bBzlL1 z5C1`0HXa+51M`PxA9(1`L%{s)`i*lBA5Lz~rI!qKc#~sRbV!8E#U4V{$*yIUfRPgE zAn)*#qkP@qyiul9lMQLysHnb4j73gEY1ttRznDBDY};lQFE{YES#pap?zAp)|1^lo z?7ksl1O8c5U19!P1ZgkIr5#h>*=vRJW*4aG3?i5huIaavgV|%mVgOBUbiH;DJn2#` z&FBxdqkwKQomGf9@T(eyTUuMQNVskGjqvedjgiE@KUE-$VD%92XKJ z`}V%DJ-B!)_ot+lXHop&v8;*u0q!mEU3Yx@0jnFW27_N2Y5V1QNb0j~oHaB4RCJWP zILiA)Wr>7P8r1ilTAW;=&*jb1Sf%iC)OmlRX!J#)RUN-WxOPni4K7dtQ~)>D^6JC0 z>^|RO1V7ZNN4puqX?V6yG<6QNg`kPI$ebK|!hBFEJ8OH29MN&_S#m1WHg=V08GZMm z`*WG7{!i)`Gk70ii|Ar?tSNY(X}icvPbHd|bn}bz3W{aMjQz_@9sj$@Gt6lzmErO{Bbddx-O}uny^Z z5CkB|DD!&TLZiikgy%-1sjKWhw@?CeFITHdb2hS=sBA#*pp?q{JGv*7!ebDTqP`bi zGmT*7x1c||a4~))liIS~nM(5xvM>`_i{pY^0iP=|)4#NRz=K6jDxS$aW1izgM#VFp z2W>Mj`IopP4o_;BdWJ_75CtQs0LHT2cz#LY8L|_KGQRH=XrG9?SB9`?s&!e(g&NV? zxj!Hf0D6mC5d4$2(?8a+dim-Ns_X8byWE~yXrAO2kY`3d0&_H>B`8mv0RTiyY;02e z3_WXo`q+6syIHvP%JKZO?`mezq6&;YxYhr8Lmi#zG56a(v7MYC2-_G(pOBKhQtAJB z*xJ#C1by&W&p#DEo__Y-K>4S)Uhr%*RMS5xk>Y{)2mE*IdJ#ge#(u)?sry}xC?u4J z=nj>u{V;W-!XxNaCa+i^01WY=OsH`sU#9nj;pLu+!EwiM|9tKATC-Ksa1RIJZ4p+z zwI(C~hm-C2L$*CSwXmH;6&z0e>a@xp?n7Hf|LPwRT(HL|zuLG*U*G{FKHisR7X7>5 z-C>*cBeG^tgK2pTT~s`p)*aV0Ywcth<*Pfk%uq$x&{pfvu*d2I7fo|Q5mG}`Mps{G zSs`bKm3|}RqOd@gZu=fJoqcODyS7)`MPXHGv=H3B`Nq1(i>MPhMQ)MqR^EeKz1Nf4-ICDw-mE{75-&zPvyet3hvdKnv^UW&$5B)N@G; zg#npXDG^wWrhi#SJ-Gkr@QO3;!1?@*yg!n%C>+$^bhkI9VlBh;?qN^x>Rog& zHo>6Bc!bB^q4g^1ibeWjyjADKdK<7pUNC<9-K#Wy*S^^*DSdVIA`dZvw7pQ$7fMQo zWk}`J3p?ZY)Pi){59AltOan+$E^qq^mMj}(a|0g167i@Ck#YL)#?cWF>hO)jh25En%VS2XE<1FgIAv~ zEvX7$cJhV~R!#ldgfmPLA0DH@r-1Aw^X<0J_J*X3*Dl>Az-)J0JG<gri!DUkOSUy^0>Yi{#X1TLG+4f-l`ao^z4Pn3V1p^3r$*>#Feu`u@=uvAD zf25r^zV|n%{r2zc=ncHD$M>D~>+1JmNjU3&U0WOlAFLs7J&RxMr?c(bPS(th*k1gzdenqE7No6+YH{o#;?0Nar06S(>?(x<#lw$c=N2?SilE!Q)C4pig)}+K{#v z3^Ngn0JJqxb$eSx+D(430dV}Ml`HIzbv&EpK~P+>m0D&3G=uyCmvL1AcX;- z_kAn^%WH*vwYnztY{KujVbil4By#yPene3B96c}1$)rp#eOPxENUk*(nM`Z?@ogPzCl^+&IP8Nbej5c;m?O|_w_h?OYgw0%D7~#`5j`Ti%XVlS6B;=B; zTQnKjHV>~TF1;6Xzd=?{aUQlRvU9TPKlv+FtyW2PNi3#E%fdJ2A+q=S5i`&s%lP&E zqc==!vl=zZ*QWqNGp1yY1exkx#Q}xjb96ELk=EiO#RFJ`-p{0gc|cUr@*=r7)JzyE zIESXlW%2LX^^W*e&wS(>zxnkaXoPz@KnL{Ce~ssz;nrrpmex*dw0*fBWe}RS>*-NE zpG4~%RBIiV#?WnCO@=IO_z077L5&m%9;+HNnvp-`@Z}e)idD70(31em?Z;^Cj&7KH zGYtk9+P2sGsuKBuI=UtS1?nu0S6eU7qr06Qh*CWtrpn#`hg4M} zVyHS)j$tg{Ahnv;Otx=f9L^y1m347`!z{~lo=p%&;XqSUR>&|2hy)h3fYBEWW)HB?P@z<;hVJ5MQi5Ep({%B|MX3yusnITFo4_!&B@a7MfD%|Pu`Bjk-0`~N zF7>v0>pAwoX(ui~9r#gf!G~=geaMW`ABaT*=*a#OzTBCi;!-FV_X350al~Y(-7x){ zoX)cubGVLZZ^;DvVC0~@@Wwl149C`b6)g7 zRY~c>?}NSNq-rW3Q}_HlUPtndc&cd0lfqHzhkHB0aszCFtK=34`iZ|f@eTq|)e9uK z$`kggQc?HKqJ!{c-NRj1VsX~Nz&X;8!ddKB(D4qxRJ^58gF66Tw-oV6j`pQ6^!AVN zuYiVnC7>~TcZ9;HChpkfPO!XBiu}WD&q1efCP3BxdN;P!LLuTMshE;W@?3v?w<98}n3{+(^wA$QBs>I_~@hZD}q}QP~mVyVN)oW*&njpLrN>xA$WWhn$ zfUd*nBdyZY>CJp^u(zMqdQrDYtUtw=j(dy!TkKFv>s@;HI1e?pW&9xj`|f`m7jx16 z%lIvD{Sx)Z+za z5b3&{53kXN`}|GP})OdcB{DFG7>v4ze6H7wtR0 zsWV?Jg2C{^B~W?0I6bmCC{7%Y`KLkj3PV;NXd%`cEauc#lLxPL^iMUnJ(;l~j{QHk zcK(yu^!<3k+i-FwqBikKMXcXo5$wAh$U3>I(naZP9xS|*&tv1RU}M9$`#IXg*A1if zx+`?~}XgZ4)sb+q1$Gkp4#l;;0}!t+aA}lWd}5 z09R%D!NOa@+bJIrq>4@G@R^3n0sl*gMXk2mF*1YL1;T#G&dBBPb;)o2SS6ZY2({{G zvESCOV~ImrBsGie4dq41Ovr+c>-NlXxY-X(maTYaRPj9qMkfe}p5mB}vfA1_t!>Td z;~rYSUhM|FI=SK%x(ADA5~NL{%p$O9+!cZRE0ik zA=es@U;kX zg=(>Q_-8Wz`VB7qXP#kIAadr+Bf$689RG4F;P=R+;%?5O;1dU{e!v-nABzpQ>O)ybjfM7%?gIp-?AgYdYwb<_z{_{< zcNj}I%T2j2Ggl9COv|y~x&L7Qp{B!P_50+omZo`ke)rQ|cl5DTySYrJs~GW&aUp4xa(hq6EmRXT2x=NkEtOSQVDc zcpT@6e!IfWfR;ruhx}%;P#x~!f9!No!tGYSG8jU;(QexXz>P=vJ_-2`^e`HF|L+&= zW3$U0#6IDjqvzE{B+65w_3%gPWODfIr>Opzu7?W$F$v3!L52Bhf0@LExUKmom=V-- zeQ$Po`q~}j=g}_f0yEdvQPYr~O)tRpx~&M!dPR{>yfFhKKZl#(1^ec(+Ly7N z86Qh{-Xluwl^)yhqpLlJ^rE~&3X5i=7YgbjJLOCzya`hQcDCCzd+5#*$Ms*>y)CYL z&K_oia2V^;2Vw>R;A<0q27!^n(-B@Vqk8;M)Pik&oQ?xg*!bhl^{31>f2(V@7Wv0S+SfQp z?+9rQFsNH~bXx&Skb~cNIsEa1p8mdL|H@DbPx{%$`oCwUdP(efHj2fC{B!)bGOqoe zi3hiHV|4xe%Wv4LJaZZ_|80q#G&4mKATi^92?=$G>WB6VhS_wgPz~i{SAhRb)v;(F zDLA?BDOnRa4}$les}5()C1qtJ-ld~Lba3!d$Ku!>&5!1I3uB$kiI8HC=^_AFM~c^nls#-sSDK96 z!GW7!Bpx3G9Yocw3Vr4vGy-hLLt9A{q~d+}I?X7-LS}uT+u)k|Z2G-bcZTJ?youHs z5!vxQPx;{CJQF|UdgC%Jkk2>&nyp`M!U#<#&+_X~?bXT?>SHmLuAE)g zZvf`YX;OVYFQZ7!dLmp+I&`z|{zBSbcLKhtfOfc*Q2ol_1!7*Zl8oMm=%)bY3A%2R zykzpZRLX%4ycj@-?LZZ{Of2y>vTv_Mw)Dbj=E_52r*cQ_xahCiYr2%({xrQmmq4<#!tTMES`~HI?$;3e@~ha{*bi2fX@-YRF54*JxJ|8mXTL3AV&@nu z6B6-aS)F}O;VH(FVOz${p)mItpXgGVy(^y|P_$W;1%m9qiRxqrOnBp4*Nj zvyGxH0z6hnCTrR2=xji@e>KM4Ts1APLBjTY&~VZMC7{%msx4+=Nu=x|<{DVI<)~>^#@+lP zg#t{yZkiuAV=Y~RMy%z&0lvR#Tn=oL3AW70!}TCgNxEC$!p#YgPT z{;nvK$Vf%S2DwHS%v+)ZviRNgH#^t<#eJ><7Ykjv{l+=Ve4#M{#e%i~7Y*{cY35Ba z1dBo=`%i%t2;;Dwm}mjrrX(9zU`uERvw6|))@A*YtfS56VU@2;VbVz-^Lf7Dl%a!m z;Vj0Ay@3J9`4ljOF+k+@d$WQ~qtYs>+o1>pcs5O_Or=QKnJEFpk-DKt_xKOLO99@ zu>445fxKO-=jw8N|1f!KE~!SpsL!!Iz_D zKIi@=;ERkGe9wNg17NHRN!6<%!&9{n$DW0oAzwJ-CeW<6LtSW7#iVMkkM~~Df0xt{ zubm{EQrF-y_VZW~sO?0*iop=~Y@&PScals4FVi_%UCad!_XEUy%8+i*Rk%ZWipZi) ztt@>na8u7q#wXxqYG!xl7~TCLXBP7?;mPvb8sA=GQ9xR|=j0W_*C>nT4scUk)x@n* z!vm;Umhv>?Eopx#E84d43*6*mt5IjU$MM_Ke3LX?=V4@jkpqU=(E>KoXexv(O1WJ& zNB>E*>-<6-9|`;n#-2MZHBRsNdao)s$&8=vcGT8h>y&r-;@MNy281LMZHsQsm#i3- z^q*E06FY;CDX1f!eq(cuVO@?e@VN5-IxSTl&soqwvj~HVI>Do&1iwL3tUt;f9@dlL z!W0N6tuq81ZoHby$rwCKcOK?8^dx_Bf(GIN8Ivb$>HH(fe$m<$vvyXjTWNG3A>t8B z_g~DEWIby1*x2)Ct?j#HTM9i{0K+vIORLsyn!c2?uzZA*?3lu_Ci8IH09eH40Z$ds#G>Tm{=T=8Sl8C5DV%Go$s1$7atKP2Ul zr1%Ny!Sn&ruv%n|Yl+B=s2vvIx@^F_jLm=J8j zX81ce=mn%RCh<;7az1xk1A|0jt40hwBTXf&9^dGvHQjkz*d2raYs^pZ`2+u^uaR;|N6(^yzYmv6ko7x+mCb_%PDN- zX7Br>CwTAkaG~9xMFf_Lgh3e#q+*#m0rR8}dALer+i#^y5eO#0#bWIPd);vD$Rl3^ zN>}VkO87+ERTl2m4X2UVjnfnn*g}!zVk?t7g+U<)B)M$uHcG`y|9y!YrkqgOLG)6( zL__v={vfaQO;A5MsMKw!O1pXTz*ytjru|`W*0J0xM)_$^7fxe)-UX8BThn65R&DyR zBs?@8CjLGa&Zt9e*RT-z#%Sz*eCVRfa}^x)j#~qMiWJ$&-d9J*ombyZ)o%*L9o#R} z7oFc#t@cBx6NCH*kZ(OEm6t}rsxE5c2B07UpGK2&M1dg6yQUst;JWPh-b?7?klUWC-ERY=Ag`eI!WVs-gJXNb zp}OoYA2?>(4{$N3)ff!@f&hg8uANr$)DNRZ{r_VEfFG5DMofr8BcCCap&+`g=-HjOL#?1cF0}R57u7n#`3J zJt|FG#RJy9uCpWjWs2W~Y(qA61KE`bo?QybzE=6Cr*yXFRtXZ{)6r9Hr^V4m zVb)Cf7|P50R$gyKA1`vSAQ>dFj|k~rvy;XqKaZQz0X6dbp?d@KTH>3E)Wr;)uvV{NQV%;4?V>m?tUF{y!c!~G+cx@U^N9pok4 zkW6h;P_>|uHV`>s+T353zQld|y zx+#_@O*Os;%9ys1w7qzT&E#|=t_J7n(`9B5%Q%k|-X~%rd7aRa;M-=@qx=jGEO%{a z)%@AQgl=w9jdec{Y&jA&@pl|l1ahVIorrR4XD(|5S=l`e1snE2mLRX`y|9Jz9p1J^rFOR&lJ;%7L5x8bjs_K$IvgQaR1 zxpsM+pv}2WqD7iug1(hgkmTqNP6(TD5TmU-e5>9I1Zi^E(|$4T6^9f>)`faLbMXWx z_#Kr1{mFdfk^ClCCk9W+`q@?e+q_ANwD;kks*}p@!e2)9-L!CJW$y}m_mKnC-wVmz zzm5yRo#R2Nr!bsE+HBq#K?m5d#aT5Zh%oA8phsC~eI>-*v#NWES=?3?gij&sNtmVey6v8pB$NhKoC37&kFKLb^pns|7_Q z&Cg1Zm#}O3RM=)aodpEDuZYhSR=e&$cFo+t&TAt1=4fj<+^U_{CgPFvW2VD;|~A z1B(wht6Kiiatc^a^MjCe^XK7v6cKlm=*Q$KVyt7jeZc##V~Jmka`JWSM_3N$1;UCLEyeV@rTpIZD`eG3HTwvucv3s03=||1E%UXn5sB_QT z09+)?NM~6V+zt;iEcC6C_}m&8eyo-4uO1!^s}V$yBUu$RB$IT`leXWT1@nQX((6GD zL=v5*gwATxo**it5{Qdna=25$yD$qKtPsN8v_K!F@_9BG2kq4`1oB5%of@O|FTK@g zo%Haj522Sc==N(901r?uIuFZHH1dR~EVD20(o?w^a>2S-UeSj#IEb1Jb|vld8oV>O zJeT(J<+g_a8T19#Z=4kX3uFir0{v~NF@-9B1su(HmYa)Qd4VmRfIG>YQ{r*&+9Mo4 zwQ|Bi08xD8KYl19GO;+=M+~mDVg}&;%&5Cg8k||krYg zE1sVs0&>JuH?-vM{QW1R&kD>S=Mn7)A}D6Do4MtPZcOXu@*!x;ow>Wf(fjjUuurfg zAsSJxJ;h}+t(hAaiFTa3KtcjvN4A{2k2zoN~z0ZaSjzLBGsr_gk0ZDVUd zZs7&r4yDKAJ&IRC64Mn!e!lpsNUW1oaLMK2WEieB9D;*%r+v?-*D_26GNuU#hsJ%) ztd>aMeRo`@H*NMM;P-u_RiT?tO+uEpL-)C1xqRV1p%w}}Fx zH~4mZBG<(B;C5oU6={HSNxud<9yw4d%bpSVOKA@Fi5 z;;^ZmOl`UQhq3eQBbt5D4fsYTbkk9K0NiWa?Io;-2 zI*rn0Ll!~ua$L^jV6ww$j3t`ep{dDAQ|jqt%^>D#?SMijyYurDxbDcQ%G0+s_BuSo z<_XvpEq4iQf|i{CSnlbEr1e{7moaHXvGx>oA5L~i877wYTvMX>I094sJ7 z%H3&(C;%v5YNJ6?<~jvpIy9xgo1_(RBf~ISPhmIkQz=AGjF&xO&71d4z87aDLoY8F zqhF#B>TvdHT+B^0ARd$is^k=W7qoJ6`H+q5@w#8`$JU+j4f+S?|EK6ZmmEp6G(Fc6 z4u{qOAY?{lq%PHBd#Af+hFoE!EpLT)L>g)QK_l15-Q~>g%yhM^>aNVJ%!~|$2xtw5 zYptE9Z=fnI0JwkOIq&;CKP+4J^v+E=dE@Z}N_yj&>`uMXcJUo~C_h<@nR7&l`sr{Q zjUlsEKdY=c*;TJb;RpS5&p#y(U3#U@r^6^oy^hsRPe3|buo1uZ(8|*ow4qE+P9A_^ z?cB4318YeO0Us*TkIw%XqbdTtPm5UV0GPPv4Ejv~_0X~s!#QR(S&rAvVhG>Y#4NTw z5EndXXAKHVXj9*v4yx5|V{uN^t41W40d;KHV5Q$Sx@U%lDrSfcnM8CQK@gqtCQwrM zHocV^kv!SA2W)YBqU6OPez5V}Yp=H~Id2xZK7OW$MXF}0>+q3~G*$PrrmoTp#a2-# z(ke03ufbO0y{M*h@#JqD_v8u$DlyVsRfkPUH%<$6=CO(X2vFMx4I42s$Wi^4FqJ@P zI`_2FmC;H|iMM2zXl9n0B#lm%s#1XiVpTj~*!U+AGc&Li!_RwD)*VOD#EK$r+r^|+ zUHnr_ji)H^BKInG+d6fZs$7ZsyAl51SMm--q<%C&=3BfDhHNbDrfTRMIhK_!P^{&g zs!3Su^5vvJA)5f}XgITN+7=OLJmB2=_B!3mh%wEP$==%=Qv?kH>!^cxW_R@>wg#O7 z@oiUhTAM&u-gqaRvav|Pz1{axDQ7(*tq4n$;kz_?ScmhFX+?l!1DxX)@{D;(<&Km#0W@6P;xIH>8$Tu z9i;w;7IE8fZmf|>ijSF@@_kvV744aO6_RffCCw8{u0^ogCc7;H4-=qo|cYK z&*S}Jk;QXRW{?jYrj|qqwJq%ISFO-L`3#G76an}`M`n&l;2Csr4)a{V5#Fh zG~)1+M}~XiN^zll3G|8p!l+fkMygU&p)G>@kQ^+0M>e)HG z^hG;MjwgihaM0!ifJ2IE4erRy*6BH#xNfDV;n4?pxvk`@R9bq;TlfeMC`~wQmrsfv zyc^Y$T41-E-Mn)EcBq?s~2ABu6+!WR2Mv{x~!I&ePC@#g@l3yI7bIOxLE#F(_MF7*>Pe=RY zS$lHbjOe>LxDPznJp#*0XpLiKFv|>+LX}Q)(~sRRxz8#x3tD z`(+Tj)yEG)N!XFNcybm^d%)0u@p)}kmoqt+@xEL*U6!AUFg5j(#8&M)M}9qrfK@;) zj>g0LzL`9YUaxi-r%Cj@RQwt2Y)>p?vvx7UHic1(FZQ2|W2`<&9&k5+*AlS<9G!%o zIFW#GXBQSBfbcqqMGgheQ^XYVAGju7Ch)>z3F_Y(MTycv^it1)l*Un@2c0uvy4Ww! zn-7_-jadRC*R6dqEq=RWbxpM=HX_7|I$(liy`vHD-i^^&yPGpTm=Y35K4Hgc6lNLc z--Qa@#@q}mb&wOsVPC}ln5Kf1z-_&ZOoN_NJFfp0>nqa+r<3?F9xe>*5v{cGLi;3N z`%GGIQg1EB9OZ4z9QG+*w26EQq?Z#KO&ch1-P6d&N>MvB3lkQ15Y!nqx0xHsGkIBm zQlpztfqP8u^YM{nBO)^Au9V~HgmFp@@ygoGi$`Cyk$b}*x325-Fwf7oQZQ;E+Gj2A zhMObJ28O{T{VAhv}^Ko{zl0!rR7|K+mukc3gNL@ zLd_|XRp?0{XuP{b#b>Qd?bJ-vDTQNqGDD)d%pK{`YcKMgfvw6)#C9O_OHdFdzx$w_ zu*^(r4_sJ>?ch?-BK|ndy#UwJtkSN_$IfbB@+x`eVXOKDXlBDlht>kO{J`hjMc(T2 zOJomRSYQm|xY9jo+hy}YHjY=r*~oAtj`=BL@7iOT!{%bdyMb-eTdZ{Eal>xNWHhe zcn|A3hU{IO@cSN;{Lxg+pBJ|A;vRXMuU+ebkG{aIhsT>_NWV^1(1T*19_cac;uS_0 za&Y8X{P{mUu71Il&M~L8y%g8mue{2Tx)$k?b(MYd#4QUYNra9&=Y_oFsbaqPJlBf$ z=B@P2rF#K3+0>vaL9gPF-g5x3_a>98cu0XLZ2l^d7t0&eekhpqgW+&w8JbnL1evRUIrzkUvu7=;sRS>xQ@Mmb6= z*_&NafOa&190#ctV zcSSiHIm0r-3h0@xSLk;3K@T_IkOfbpZvV*cfTQ5&O=xtxE3cS9d)WG&7zK0}kT3Ywu*t$2a^FQ^elRy{D-Ao~Fb`A_2 zb2EGr7sy{JPi5#1CtqkqZ&wm5dV9z=I(tDY;uGQ7DaWQOFpESHB|ZH$5T75h`&)Sk z_DyLy0rbcJyEQv&3niA-#6JNa$KOxC=hgw01dg)1`HBDhz_u3#_j?5aVX4=XHq)zp z4!MFfoq};rPZ-FsCv>F0?N%{{3W}{s(trAWvT=xMB$>uP6U{IBZM6^-*Ju4+BrwO9 z*r05``=)OSbn|oia{S=MOM%i&@3g&JSCbtv-)=ZZf?olL*mKxKLjC`D+zhOP>=eE{ z^Wg-J(W#ZQIh+H;Vt3y<;8#nIC?whlRCsMU)z7x}N&`+qyPkJS@D%DH2PsnyM5DD+ zoZdkj+I?=l=0dPV;;pYE%jq`@WZ76O?l+tXY+R(5l#{KH!5oERjeLH((lh{cxO>ht zLR>@4#Ev>8U7Xd)KOU27p;H8*#ESAge2vYDskvbfT_s@;8pN6m%4qw5+@}sqr>DjP zW`z+Q-BYUFV7Lg>Q!Epz-6Gi6Ot=!&vh?62*D#%1JpX~x=dM*Mr+A(q$}$y@^F8qYMAbZZ z>#OgLgx#c0xPPkB1>Yv&6&Ulyl@5nRA#1h6sQ2n8z!QFNfB{)>qizF~QH z{KiQys4wd`omH*fgoaF(-=*~|@3D=qkd6O7I&aON>vs4wlG&s8(ilY1w<9Sh{Y56E zSEA@We<7{P>i=Xm^_3AvyMxehAO7lXFyg^KdvLO9dk@5jKvy^Xp*8n+b=Tr$CW%R^ zv(1D9ypezU=M$DFn$tDT%S9TnoV8A+$z|Mb3uov4GG(CcO^t$Wq}8a#v9{8;`8sxy z$!?9omsz3BZ*YPG;098nwequnW0)j+%SP&|UPoE*r1j5uAF!X=XO}3yS%zgVoKw&k zCtA;+9{UL!Q2SO}Jg)Eh9R!kx6RhT3Q4=_f(ivBaAw_~MmQqxBLPFYck4^)yEH{t0 z&EFFhW0*UFbsFa6jH$3IjULchSl?ow7IpWOcF9D1#@(;~rjf4)UR0-Q!(N&&{X1?` z;h%Y5ZzJO5{W9^^^&}Bq-0;=l`y%;rU&TdO-)SfryXEBP!iN@vPTXwl=Ym?Nel(mP zlK^-q=$GA-?5L!<{=uwkJdN*fPHMZ`t_89S&2Vu}-GpB!Cq)@}ApdwR&5NXs}4J1*6_w04bhg%Ou~;5{}zYY!cN54NTQ zw>}5GxX}v3fG{P+Ey>kT4G9s?~{+1Rp36En|P)% z-#t78oe5anu3m%bX7lOGTYY;KwI`AJBb&Phq6GkXw21xb@=up4F^zwd{5^t&+!(%d z?}xc&pnPp|-?4~!0{!V-nPI700zD5zYsnr~D(^#-4r8$#X1ROj&7amN?v$}bgjG{2 zp{GLypTGrZ%=}Hfzx|;zqc!)?`uM9Q-T3}=#}0eHEmZgR7j_RUmR|5b|JZPRPn49e zz7B<%yIrQZ3-WGD4oR!E{kc_gmaKPc|5>O_PrZT94WPEi}^qEpVSpl?^<3*FW z7m+*wCfZJ8s_+27UH16Y@o^So^nuQ#|yv zpsfVC6Hl#Lk>ShTYIl4TdWnBZd`%wJti6qb!HS%TVW4n{$XztbM`?JG`ZQef9uQ4% z%F0cKMp<0`jg^sM-PgsXmycIC$qcARn!cM(p!0b(4P>66Xveqb+r`bnD2N?sllK# ziM?x^v$>1u05Bz+E6xte)3^QYL;Kvt3cCf~IACVx9LzO` z{~;>zw})5SwDO;zNO=aLln-67MeJHCMGvXkeO9w412vz zW+aywpp{lruNK6m3J4qHjL8ye8nic9MONg@sUE7XvTA?!lrsA%W&ye3gBmBkXFoFQ z^;^V#M0<|_w@fmXCrY_hE~Aj2jPBQtio!Z;Q#T-nCfvxIJz{>?3hwXt$LClQgh3y9 zKQ$}vwkf&Vu)mrO_w4l#tNBAqn*@=%{a)xas;G`|LcAHOl^i|(j5~pJdGK!Y&)MVr zVYb@=r*yjhtFX!nr{qt6!aydr%SgDiBpd_Ysf$Sk&3J8Er})w=nSv8>x<`vXg@c+v zray9hDwx0KBwuTvdY$5PHaH40tpLMC+nD!|@?(itw+`ab0aM)kCC)MaIEA!{B! zE}@APc-1}q2>cdcv9K!VlK@=+dHX=XJK9IeH)g4xwmPl0X5$1KNmLvvlWW?WKcm#ti$ z2I$btx#f&bISeZK*8{A+T_hW z7JKIl?!<`A&ULCP3O@_<)(kdrGWSv2vTojptA?3;8Gc>8Qog^veTO&2o6OM=H}(-v7(--%aP+rq=pP>ucpj z{&HD7sUKX_fp)Z{+HF>I4|0I`i_0#flx(}jKE)u^>4kpXmLqmSo=0ZAX(soo001tT zR11yVQ0j5+)0`(9MzwnL;b6n>61-H?mU^lqJ7D`X?sTSaT+gV%Q&fIR?X_H9g_zrM zqLD`J=*oyKlZ2Cx>tTJkUrf&dcnkUhmj-PXlsi@VkY`HMmRWUcve9hGTsqD$2y82; zWsBGyJBuf1<6>0qb(03)_pWnQKzC;f|5fG0Gwvjjo!^$+e&J*Oxzxpif#C9U@8DnI zAFTRATx!VByuY@8eW}*uLBQ5GjC*>z6(A6mULa!D!B9g$eDfqfi-1NxHlKEGa`g;b z`MZjYQXnBn+UOxSvH$h5Tlz^}fb7nYJ)N`uYWvewxfM0BDfe2@SLO@3x%xV$-d~~N z1C_(kKXYpL{1jIj%HS;&m8}C=>&*0O@y!VAAvZ!)@W->#Sp~bt4^>_qvK(g zBP{Qu_=y7oRJ5s7AjcIJI_2i>_jcZ;;~(9X(5)ikuCm3-_IpN;q330N{0aA4J)~g( z9lBOMdl=at^JoU5+p5!6xTU&X-;Zs5;W}zfl$)21cTwJM^eS=Qt+z@+WtG>93HD#b zxBkIFvzp-_f3%u(R@_q7N`6&1D%wB7`JZt42Xvhzh3$F*p_?EyK|OuV9B7neR4QzG ze?2`h8WP1<5ZIlnb=zSuuRg?@Jq}1y$Pe~<%?3M)x-RxeKngB0tjKMjaLxnI18WOT zrbXWW-8cWzp{dp0-7pr}D(~kuv&q`}PF9-#L3OIsQSLd(t=YT#w?*E#DVRUkm^9k-C`6oMJs)t8A-DnQ~&Ffpit997ZSmvNenX_80F zhfYAx=@Qta7k*MnHLAB;GcA>Ds+%C*Q)!SK>Wy$F3j3R)5ZwUow2(Qqs;{?|Z6dMN z+!n>b-;Ddn|oqkB$trB6wP1e@u1nU!bM(-%Z}#H(dn?cR|~0})l4 zDGX&ew!{-3WO5aD?Bv(!RGQ^?rlfCcU7yFfe)JxT3rD@S=Y#baSfMPqh^kBPw|v0|r<9!?2$@!eI@)}( zvO4St#*tLL2wC+SX~Rd(_1}geGQSBT#04Qbnt75}rdsQJ-bo8`a0PG`aL-ktH59G9u(SbBS%iHwh}it3WzEEZ1+Dzh zLy*%=f#Xqi@i;$@OGW*FYSkaW6kP;{;R-C4UB6X1{}74iLdALoEcqfhquLH*%BZ6f z=CSrH1mNMMATUU{)?-q~uV*Jm4UJlEru+bDy8@8a7tVdn9Z)P|o|6))!~x z^_*R*SX-zbH`o;u8trGiq-y^2#D$Jnr^N?4NoIMn@s@r=Kh|LR>52f4LpuI_|UY<+H%|rPRNVfGed9pQ0 zBSC71ZUMB*)e)ABRewnyDQEA(MDyzxSX|FQ6YS-Xo%yl}fB51qE|QCZ85%UivuHn; z^CPIskgYft-7JUZojulumm946@+Y7>*d>e!WSZGDc*c2W&R-r!quDRRvErq7@lHF@9#AiJ0peR;K|3tm7=g(89D0JZTBmSLt-~k9>IxX|JTJVRr19CGoVZV;4rC{#K&c-urhW_`@4xi zkIT*+LdwLDYw?usyPN$Of?4WiL?C{%iZ&|m!3Vh-ZrCfg)Lr2Qzd_gD9m401b?Oz7 z4_S(;E|cP{OSuO)z6I!aQbu1n2NO^TFs!BJ?yF?BC5au}zh;l&IvMymguKSLJLxtV zA6WTpLaglDj4J_1XCf3fprg!jqEkHB!6P26z+}P};Rk|(9M7hDs}!hUNHGBRDnSMa zdAq0(ak5=g@)TJZZA%-3ytb2l)>k$}oa6GlO%X_DKWqek=BfCX^ISypT%1A@h~1k- z|A5_@vo-rji`+PKoSqN74?g$d){SUXTNJW7QKkfoq7@s0_oOO5f@wP`Yu8i z$Tas96yPmK-4KPLMWvX7e}?{;Q!=1gTrZBr!tBTxuZ~4X5wGkoyB&GR)&cF_{8~8t zJ^A5j>l+OLr=drA}hBMwMx~qFWLCVX)$4qW|sq`b1xH{o(EgAJcfHR zAhPy`rXka~f;7oCsk22oNaKCGwTDLyP$7(Pzv?1K@*FEVF_?8z(`-c4_R-2mv6MVP zK2iU1?w}+U7of=yztXwoa``Bv1$gw68?e-n^1Wsf6e6F*W5EA4rH#ncg3Kz$;jT}m z#S@}XG0%vkxoRh67&nGnLxtjwP<11d?iNHgV~8(v8z69^vOJZ6xe;NHRGx|mZj>h6TlS-nDNoY4?R6>GC zTqQ*e`ko0qXhP*!*^xCVp*LH!bv;)LaaG9s_Bd5JTd%dtpn#RD8-2VsDUWL9JEuFO zekC@QPSzH<2P6FML98+gLa;2pzH&b1aX@}<#AZmXbYi?x`6t=%JV_oxeA52bCDb3u z>`>*k-0#%tj*LPhEwwuY4G%f=4t9Ehoyzql>k1gR#&)gNjuIOpaeg^jBsc5sR?^EB z8v;}mZNRh`CM>fyWUf_1yMem(z&dVfvm?G90mJ&t(h3_(8x{}R>?qB3F%mcEk*+C10C9Ik;&gvUKvq`MnG>0R9OZ{QY&LKGcT9KQVb> z>Jid0l3q88_Mp7d?s-zU#_CUVfYCed=-kC~DK>N#wl66|5HHN`Z3b~G<#JXSaA>z0iHrK9=1bIp1Q-@sv}c9+Q!PCd)suS)?yzwdYsv6O5QR!xg-^vOI{y zNE1tUX3O6^eB^cj-t)}O&pGa=hNj3YBYYe9iMj{FoW_GnNS|VgDT91csp2#vX ziQU^>6Hs4k0?_1w_R}aXBhjLBJVehx3(Jqgfyp4475F!bcMe5q$xz=q_@22QyZ*yg4ixSE#?Sg!tcl}gN2yyBwXC~}|R1o_$VPo-mvf4xtRZbX{X}j{yao#A7N7d%GB68G118t9asY68B-quE90Ww^i3k zwxyc1GaFJNdDYOjQ|!(s4HT4rP~s?V|FrA3kh(*76vvM`CpPN?U3~oSq?0 zu%eP=f?65gh}_t>Zk}(7T2!sT$T_87n-Qboph^3e{XboPF%-II_n+VC*#dr8+{R4X z-m)tNk6>Bv2kjh^$ZBIWaM$^9WXi_RUdN+> z;0&t$#vaZWx+&igeWvQGJIE$;VL-QDSE7g(L zeS27G@$P3jbEdjOD`f~_NoG;=)bF>Pr^?Oy3|eRWjS(n+>@Ds)K;yPmOrVzzam8 zl!b`fi6xJ3_>qRX=F6IWn>y3bHG`18wqF(v@-)g?RegDeP-$AmvWU=W^fi>PeD7$l z6p$ltv2Oi#fZtW2><=tmHhsAg$J{TqWkGs0geSf9Pv50) zSZ7y!+Mq5^81-krYlhFiH<++jeJi5l3?cq3HiPtAmdJ=yd)@X|d@{*8Vi5wyJ&h^^ zoAzb|8ua$fDcqwZ_xk(wwVpT^=>@$#YW4s*=H;IB?A0^#nc?l(Vz% z9Z}E!Z71EdxYz5r)OR{R-Eg)Pi@(bC7C!RQ&YQE@xL^BItEik5=_X!;^6GwvoTEs- zd{!TCjGpIq+j;tIrnk3$_auMK2KU-`b&D_1WW(3o-d+Qg8%ZY}jHT?l);05dX7eK! z|NVTz|N8Ya^`KAULfshmp1(e92q*RUq*@|hrorXwrnymAOchJz|KZWt)}L@LJg&bE z;r|Vj-TZ!BT6-_}jXP9dtQfrB&r2i`h$s^<6n*^EA`!jaK|Ih=7C)5q$l8)w z3C}V)UdrOOQ26>MIxPqDJBrQ^orfb;?3YZ1_~w9D7A2BNa!P=2m$c6AD3dHpR3H`e zB~Uag%AY}KoHI+SB=3Ozi9XJ~DVD!NM)n>K?mGesOMmn0(8a(3SDu}l{%`f_1&XPU z^QahsL>lJWTV7op7w)#JG}8ZY#y~1zv@bO8v@hX5y7($quHD68{wXXG;#GMx+!em; zBJ=piB^Z&p{c#cEXgu6iEk(*(n3je510A}{u^mC2f`&R=aB5bft$(TRXoDDF)XBUy zaZ|jbMjo>nt3BDuKR}so5b@lviA6_YBD0D3JH-Xgtb?5`8o(0)u|amHFg@0)iWhr4 zzrMGSN)IaFo8Ev<8_J$9JwkUR%=W55CW%DzO^V8WlKeVgX#=^|tkK7Uxd+RJ52NT} z`_jsUZ7Rg5o{%4tc>IR3#X2Hc8JFyEZS)Z$MG_*l3htkUXxKcr!=g&qYze6gJZ7ky zE_(JWoy^m`Dg=RA621eq9K*pE70j6F%W97-XVk47Bjm=~G8GXLR{_(G4zXITi#CQF zZ|BRDZi!rRS_>OvEdH)MW|2WWGj1FpdEkYsFr5aQ$GQ`K*Jl1m;_ocGOhB~ADIv82 z#)Z|SP)&`c;cA~2@xwM*SV#V@Dlhva-KZc0<$|}#t?YS_`9OAbcUitbuc|O)!1yvV z!LbebT-k72iq)#pVGnkH?>$gAuX99dv=wc--ua`+Wlh~2wE$V$Y|DV1kn^R<8`qxc z=58eq=4zjrB`|)cy222Q$xd}7tD!xf_oBBqC8-ver$q$bQv`01EB2hNKvNbQB6C0A%<6 zNfbVDHc=Ql#tN$1#?mBdp)+7dQxMg?tbP9{=CC0mn_iiK^S^rp7M;>^ z`L-1m4(JK-#1+Xk`EG!vpIWD1Myj608kX%Bl>LA1Cpb<>uJ{d-Lpx55W^;)<9c>UI zq}Xu(cI>75-f(3H_c*bj2F@0tv#(;}X}dLuvd^CDRSZV9Vt+gOQO>+FILWX#z!@LE zgD+-zm;2#;)S$yBZRzkSk|2DMdgtzRB(@>q0S%UmByYIP${P)0|`M)h;3 z{I^}H7u)sm>LXR+*VDa*XL&%l9^tigV0jHpydESQMMs)hq&0g86DYgeh}v)%LXsCmfF`Iz3d>)u6C3a-5> zJ&$9><4>@wz$Oo>#qDCZb9ZKMuew{jX>-{&q&}u<%+>5^x70k`ziMcuBy10Z8fg^3 zZNG{yuaAz<%K{U>G0w1LeDVTflYe_QW2Z#*C)AeiR-R+~vEXzViz6!Cby*%K+YD8APqzcMi#k0x@Z2)|nA=TEQ#7pP5 zvNO48eY>RVix+*es*D(Xk7F27oCl?uTPbTP^fdf?r2B0=UmRXz%k^)bjnldM5jWLf zy*Bhsbz8FhKPh8H{!!mm1mIRY8b7jcH-%f*vBll*=Y@3pt)7^r_;I=0z9cz5lAAtZ z#4IGWRHb#SUkarzWYe)Kjt-7KfTCoUgKABFQ7y_q6_6hG>9HSYYC?toYhoP#Xe1mQ zWj9w~3j?I%4*&4;{D7>M!w87kh42$DtFyOdC6U+71rfr{mRji{@UGQP== z-Vs3St+qE7I45XE`jso1UZJo*_0*af4VA(8;FY$^;`+|^6#K`0 z@Zb;N_;R578{N0`cj^yINvnjrZM{QRirY~&-pd2R_WH%ljmgd%^F|DsuU)UkuS*a{ zViDAa)^Ot%;L7Dn^-L1;gkD|mVww&WY}Gie{!_X$0#Js zDBe-qwCNf zpKC7*vl0sWt^-GP8>voW&g6Yyp<5L>KNPZ0q~{kH!KTGQE-Y~%!+uu{_+wJKesO{i zPfDmwtr}FJJX_`&F9Lt7Wf!DMtpl5}(S?n%YWZh=u3&urdNV(Mm|>OtRk)UNP9g#W;;Dgl8<@`l)(^Rx1*pzcDw^Zu2)w+pr;xV`p! ztph;kg+Tt`=RZ5S+p}&EN{`MFG35ylqFx5Q;3eD2o1VEn=(~k90Y0D!smb(upg0hi+JNgXKTjg)Kri>QyBe+;bk(Pv0Py3gLmZ%GX zd7Rei@4NBI*vG{ClxWEb{;rmf2_34&a0UU8uhGyauMhLbRHw7FInjEP0OO2ccB2mK21-?gLRNdT z({cb=2hx2rc8*~Y(5`Tr$>)tD=;vdp27ggp&7cH8S|>uVhU4+Fc3$R>4w4*>Qg$2| zw9l3iLgYy|WwwhyP3c!-CpWvs#lLECW$vQUity!T_$dkL0?$;0gB`J^H z9j$_oj6`^%z_I`b*e^bsaj=Hy9uONxW9aGr@C#nvmZ;8e*4fe!K7We7tciom;Tm3z z5)g(+?-N@7_~bxue0Z19>|DX&SpYW!immwe?arM9+)}pTH&oVRCO5PGj?7Vun|sbu zIcFBjd(7ZUp*lnk^Msq^x`EeAXUf)hzAf^98q(g*mh~6p8vS#3UeKnv3z4-NR3a#n29URnd<(kiLi`BGcZ;303l8d_Otj=Z8@2^tPi+?r@$S3Dsv`HSzGdE|3 zoOH|{luS0EG!<)GsKL*HLPGdl-UY@BTe`>c@0G$XQ*wf{RN;fMaEXq$U+y(Ua+zBq z)P>SGUt-%|u{_}m#TU~C?5V#Ho7=(#Wj#corf}5c=lP(OPBhxJr$*rtkdoC@*rdwv zLO!Tg$Ou znVuv)S#;NuN?@g?n+S3cQetKmn`=qA%7T4qB2v zvvUUsWsD;LwTvmVS#d&bPLAYv zT<5-YFEo*3L%I{e6~1y0+M`)vp_eGq-J{;N0f|}zEG*d*W?^fDWocP8ytL>2Qs3_^ zOOONpC_vnPjQ|QfGU{DD7pV&Js%yiqx|9>Jn!?rV{Y9Oxl!_a?niIkXw(CFU%yc^0KVBSd&&!Q*^4vA4mSf; z0Ww+2fo?Th(EY;<)OldST!aCY;ZG;FvNN7Ir~vuA$}T`p)*kk@wPMZUgbVUF$$|2l z9Q$fO>12-SAMBM<{d4z$R`|O}jpnWRTL&hOV%(>T%xA{?v};w-12TCaLLe?68cf!C zh*wjE<5Q$sq$%hF^;>~HY)#isf1D2~@$;6ncUGb;^1k9rD3wu5#rV3xFFT-gByk_- zi^-r@U~iH-fqGZSF)6aK^9~p}qetcEF{lCHGQ=^+>nx&?%0@%`n7jF523vdEw(jDf zyGp|49Uyx6(5sl!$EsMum3u1BFMb9Sy~xSGV_4M068A9W58&(UUPt8paZgSQm6La$ zfB5O||8A|zyYHV})9CNv;6f?R>-p_Y-&%%teqa0YFBCH}_sD*II0K(?gZ)1?=`+3E z7&Z_Ldn|V8Vkv_amdvg(q$Z|M3Wf73H%ZRg20-ZY0=BS;VL9n(t`a<>YCMQ@yJ`fVeR1JE6wQ;)cw?73M;U=1%Wp`2;A z&^x2g{9J4wZL`uXcznQ0*?mS3AA?uud63I=`~%{y;SZ$tOlH!_~5X^Mq%xLf*40dUB%&xssh;O94r4JP5L-OOzxO7v9BoG^uu> z8}blBg&QZw1yp1mk*Xxa&Yf+047f_>`7er{>6-vhS)3C->y8?0_L!M|s#n4^6y@BY zTNnHO-NT6gDmptrzI_ne-938Saq!5!U$`1G`eS5LI7e+$qGqwqs3^ieWuZ;zT6L3T zpQz*cYz9aYWx4&vovv@%T4yY!xx&rvHr>GGDq||S0mtn=U}MUHrhfVy$LafNjq`{> z>LUtlfLJAEut!CWu3PwCLC*&JPP+v(!fMAk+zr8#W915nXsF?_{yOVW_Vurw7WGSF z93FHQbUk0N@e+Ah3E;X$)VA=DJC!Ask>NYuEKojg{C=Oy)od!WrqkWrODeq%J`#^_ z<$PN|-j5I&$sbrrUUqWnpWs%VuAf^PGhdz55dWqkWMt{=96?WPckf4sq#tCvZ}OMv z4xmG_ds;y&JdDVI)kHayFXT;5zZAET3&QflK+6;8GVs!;|Sciw)ob&oOX+{T{~q3Yp<>N^SpD*-@aqF&}~JMmTEQ?E)06p($!GRqy`3fIV?`$+SlBo0}}`9ZXX&Zy{w3^gQEYKQ)sCzL(ZtZL`;M}8Amo*%mL~< z?vOK78!OVNIpgYLB0W@X!5nwCQkq7mKj7>x!Uss^Da>YTVgqF{%%@{C?qnGDztK~uV1Y- zPi@k$Kw4Tvc-;Ga=e+OpT!RcGA)(li2C~M=Vlk}eP|Z%r=H@^vsRz_OxR$~si}LA} z^{gxgiwh}vRUTQ0{3nA}`+#GA*{|_5U02ujqUMQm<0?yy)|PWCzW$3}$I4&oMcAX^MnhZ^;fYabH3Zn;v=l6k#Y4W4o^wX+y! ztyHm2-j(os*x#z-cayDIs4_`4ofMO>godntZ)4vprbQ_VMDoI77mB_ia{Pcilj=K6 zcucPw>?&C;hEu&MR(H)6YXgHXC|*b~+zM_qY`ziPw&W{yHYJ(!a z)askb@Q%4BcG<1%O4|eG$hqxJXhd({w$kzjgWtd9gN5QMtCtx-jJ6#LOG zrlNHD*V3z^-)K{HPdiD{IghdxDJ0=)kUku>Oh-^wZ)s zdLT3qSw1d()+3gV9l+n;6=-7|K5iA~RUkc5+MC@%aB z{$4xzbe!MDMIc(SWg`Thva+%K_L&aON8Z+zqH$ zZ`!80so1x(l}8o=cKL3|sTrS4fZ{6b_;1@&r!(cBGmOk%P2SzW9Vl8$#)VT1C*t#7 zyyExk)c7(jvYj~?9PF!1j4!P@9HA#WWH2d`W)^v#J=&5FJngT_)rMupi@GKngezxZ zY$c^Ug%L1bqv39u&ElYnPO5gH=N?{p2;+dF0>B=`{bK7GggV&gJ)lq<1-2x}MUBjN z?9@tGySS@x=!6&x0<&?|?qbmhunv8XIvD}VSWesUv{e#g)#*%Zsp8M z)Cldh!;Zgk0iRh+sGT6LufQCTtZXPKsVD=D@q)wrE0XQHHW&AbnTqo3 zt?T6*NjrAb+xz%rWE0SPHoutilG0)`-XlGTaGjbEmAs8{#IbX$`yvg|RQGv@&^oB-*xKEbCHJF@b=<&E^E)C^5Fo9RLy*~1^pqR6+rt+p*J-bWYn8&9^mJV zEx%s2DmwE%?cjmX2vglGW@e^kzTt!1X?+HmDxK_Ww#h!&0_4ee<;G%fKCFO2d?mKn zuH`dYIkrZr`G=Zh`vU5J%mPfwBHXv>W~Y!kYt`r#gy1E-eyXr=dc@zlH6Z=tX;Nd^ zBfekGqA<_u-QlRvEtac`ehOb*4?-RYMp5NZZ@w3#-8z`Y-J_lHa6j7a!65`vFtA@( z?B4zTd>ka|nhI}PP#w%I;(NJQNfE5~S`?v{zHMI_-Pw?a>H1~|W$qkEETRoL6DsE} zvb8bsLvpT1Wbs*C3zp2yeLZvv@=x_)^90TZ&%i}bJYe_YZkH7IIkcc28(#xqhDD|j zXxw*qa^W!CtqS`$$+9{dKc}78<^w0dVjS?`DNVpR=l_ z;;M^W9)3?8|GFRlyFFsHdqJsB_+n|O7|a03leq@~E>=C=hq-GHC70?ZyWG%0VmgCw~Z#<3}gs90Z5enE- z#9#Ehg<2#R?mn35yWU;*@>U-bk2cveR43wsQ-D#EQXDpyy55+|1R=J7;yY#O$6w8^ zd<-|{+kjmNWhotV!Kk(fzYB_cZh8ku4WS%tkjBMKgc~Si`S72AxyH#LZ)iC~(Bq=)t)g+~n}s9*)r&qrjnw5W-i z`i;@sV5#Q7yFqfCIze`xl^OF(**LpdG=#X*PB}B4N9i3YE;{@pdb)zY2`ZwFIRsq= z{b?}BlZVKK-TV?s9BxNCHplmZm32^as}9@xp-?H3`7=-0dqPM8WTX~WP*7#<==rNo z*9~EfhFcCiY?ah(?ptfqXPce#LDgtF8hoFSaU&vE|3otLmYMo73}wKc32fQY%KaVk zmg;+XoxZ)eSC+Sikri4ueM38#sX&jqRn0eyOBi0mPAr)Vuw`ThpE&YMrK0k2EoMwL z!e4evAN^x?DiqK!N&7Q}olpM{nYuqLV4XsN-J3&!XakJ8%U*CQ+Y85>nEID!+4~ru zXY_jJ@Zyf*&>!bJ|4H0N{L)+q=dG+3%M5l%p=yav86-_JkGY3^qc6Sj70U}bhTq08 zx2n-u*{^mM$ciAl1SFFbFJ~X&6l{m_rXg^@*ps^h@@5vtepaG`-Ev4gpY1dch0&^l z)YuPjdsN1dFpBq)-(XsnI=?u7Bp*oyVy7?v@*+qU>DNUzoUrpn_E(c4(zlcbE9TqA z;gz*nI`6`qS6nBi6o@{1)g>D&^B^G_OaX@5vC$aUt#BH)r3QBA&KFZf$NI3e@-o51 zu|07ILSlcPtyWsg#iH~m{nwMmWRsSvh!6I*CTYEP zy>6)JXDpCWsXpbch+6LRNVbubwl>BF^@gsbiOI;^)iuHVc19Mmq9_M{)UUTs;LzkW zR_58JR_UifVy?R%uzl)HUmv}~O-x*TIst?0M#Bn?JVwUZaf^qpraQon4ueWljf#Lf zs1T%gS1G9|+2&4N@yid}ERAihAZfcgApda1Be$|xnLv6+`iM2;)kIomW5k>yVe0x0 zYl6FFf=1I>6sRS7n^c?3h3Yv9K&SkBrSReDSEW#kno88MQ`@X|#*XphRy( zB<|C5-1>3*6C(>`r2^#&M;d?)%z#c0T@UPUpBVk_cFr7T>+$9vay9g^7AMy^L~bp7 zHlxWsGPEoF&1ED4{U%Vo7nf`|0tOBDtZ=XbUBtkBxQ7g#Q3QC@c&^0#D<2$Fehfkp z`#M1KVq6RNy_r8SNa7V6nC4SEErvjDH8V3M-s{c`>tg26$^`x9owQs{!RPVpzfP3J z*WIIEEk(P*e4_(WB@36M0Yf0KmXZM_V4dXtEOHSpbn@@hg0KzaSwB~r#ZIbxOUiG( zoG;^@4Yzihei`mV>)8LMSlv9my0#43T37pinH>s>EXiD+cC^;@9=`Kb*JG@kpWK$Y z-R^=MEYAB6-1aywd*f*H#H`&Pye~W8meGx?^4*i!&(W2_3Z)u$_5c2n|GF8@QM)F! zmRVdC*xbP(ZqykbO^JiPUnQA+%znmH*C`nUZaF+sGG89U&XZe(kGt79yC<5+cu(#a z6Ig>2jPkfOMkWOqV)#;uS0y)o1s!Pu4`OA*h1I>*TF*BQp8&@xNGjC&&FjHS5|R?s z(5@7al%EvnZHzC^=TKde3Sq;AAriO#({h2?RFF&FDWT)+noM!w z>@9M)hm^5Q1aK>i=KN9YlvfAL%O5vK03Aa83*2=Li478a@XlMf`9hN9hi@^S_wf!z zPe;JLDSG|g4b-YAWSb_GKk{epowYCC%z78GeelJ&8x1#`oc+XWDqO9nBL;2K*&0}6 z0#I3IE9BX7cvfT+u|Q1nWSG1q7>*m*MfFOPPl5xy+}7%={l<0Whu8|we;g&9Q8K*{ zgeKdesQO<7Cx;7Ac6Yc+_X&l&yx{*$vebJo&3k44PA00A3gMuGUC+bN@)^&G;T}WS zr>x;V81ygUfhxq{-_xM7?o@TtT3v<+Xn~f$`3lbjF8Wlu8@CcZDJl0eCOJ($X>qZK z$&qT!n2@7mYYrzt-Qx!k#J1ATv{99^accW^@s5cx3fduwEaml~Qm2ACwZTm*vV5$) z2udq&;}C&k-aJ@Yw%WYKEC{*|&tEdH)X`*%YYX3(d)%gqnxLtkVq@_j(X(hGl)|l4 z-uA6_V$Fe&m4}57;#c;}$0xgT4D@1-NVaY~jAGuajra{j!gTjOp2pP!BGDTKWZFwA zLMalG@uWEBmSZuie%`BJ^J4}Ya0eAv|0t?!p_1OJsdu+4U6wwN&YBC{Gr5$grYv>> z)m6~eaqR8Z*t#`lZt&8x^+a3UcyVrc-)i8rylds;DrtU}c1|5(1RA>qh(muNGwGch271~FF?9v-}&`s)BGncv39N$mcueHlN{_6{0GsH)lSEp8pgl*kuLbnh zf^?6j+c{0E;N#IiVoG;b9QveItA*%>J=vvOLTf#79@k+@i@>?KR?Vub zts}$$wJ~)AOcQkA8uHoED?4aEwz1creGljE^N!O)|3SX4s%P$DrG)0~QZYLHir?BB zFxPIQcKK}aR-t5kWlLXFItO$J3)CNjKbsDbW)Qt8yoZ^Aou)`pe>g8BLRpl4w?J$)8y0&w1Ph7-4lO#xtDk)+8(!@}GOI+d z`4hoB6YXI47!S6DhyRo^b^#Y;PqBqee%xUJ8lD%K~fF7!ALM4_(mb8uC z{Yi_Ql!f%y3}6B}^8ss3k}%3f-)zffpZL{O&GFUDTyxL=8@Xv7T%P&MC4X|AWiqlI zN5cD?WCkyM>Ot7~)XhoEU3{Ql?B}i3JG)WI@KBO`=EJKGu#3~iE0-IFXb=V|de92v zkxMqQRe3xT|C06Q%D+OZ}{|NA!xg%i#@ItLzM`qSsN|IuIyBpbwsp4AB71VTu5)7g6Dr`A=sDQYfyg zF$-Dhct#XpIuMT3#Pl3f=(m;9+GEq}$2dDqKg+F490G9@eb>~O7Ag&NxR@PKbeT*c zhv2@?VaYaUbQObX*p3#9`^eu1%`yd%aq$e^5>BLdLzMMKrN!3 z4Tj-Ft>&>yHVrMm`-m%sIaw52QmYw}d-i-39)__ICY|S+fMPRo01ZCG--m!hP-w!Y z?=pTRtY~e^T2wsWHTWOUO6>+ub$scX7z??TXGvjJL%N@C!Zxug0mVNHR{9JWw)VqP zDL_E1sERDz31Sa0({G9tvqNB`e!OMl`mCC#q)S)Hvcs1Xd(ou}4 zFa+mTi*e3SDvtE$>%C`Xa>(q_Qf~YW_c5L3o}e|=Y)CEy_rc z>csY|i>gTO>8yC*jUQRRLi4UK5S2?H8Cqz$pHn+$`4c_@`%4Q9ya+;cBaMYLSX|CoD*HRt?ef z;*)Yi-?Th=$eKNa_9=iPJRA=s`r!zoyXFE0MzHv)6@fMB=ZkfMl-AFEK-Ti+RfEfM zc+P#evYX&E2n!Wy-g`i!LNP>pMhf)q+WpwG9h_pEdwLmt{Y#&vtvwWK;62=c9YiUx zXr-e`cJ4Fe%<$^bVm-@7U^r8*#%7JP@O#_zN?tGnM@o{()A0g(_cXVAe%>nayUjkR zf+A<$!atJLpyAPSn-|Et!g%N@N2Pk}PTsZ}uYqWJSjk>cjborW&}BY<@^qH&eX?%Q zo@la`%eDNBgvbgg!H=U?!)tOl3#OaZ;B6^Ra_cGGtKQ=g@iEbhG^X|0re^we`6=G$?vNK@lN%r@ z*|r|CX%`pxvfKcO+lFgyrNsL1WFx9KB>$f>J(XyxX(@cFEleY+jk+`lMu0O zHlER6RqBfgz`!?RlK2edw^@31d%quSuC_1(pTkd^k;$McPb|(T5DE+gN6#?UKi-cS zjoqmWR4&d0UL-!;N$A>nNWK?qVR_DZz*20Stk=Yx-ZdG^l!u@3+Rwo>4TsLWnA_VG zU)zH`1~K-3*}eXK_#F0vr;)Ai6c5N4HJz?V@1l?&rTA*@RePg%QEdMEQrZ29E=`fM zQPGfoLVotnximonyuZ;uucE3@JWL~N3suH@9_>)%t{_C(!a++NY)R!(>~j8cyNvKd zvA>JqMVzcv+HDuSZ}vSy(`Uo=>O`M;iE)rE7cHaf?Y6avH@2d0WH@( z_502CmTD4>`VC*6aPF5ZwlcS0J0ucxaN=;75u{sii2%bRHa6boZwL!$7OthWz8;MW zb;==6Pqw!kH*P`rJVE=P9z6HEO-9I-n($QLJhi%|P=h=!dczbebFyYslGDe<4Htt6EPg$LTeHLb>GjyIOl|FN z0WZEv9AitPvPkNOo%@}ioFL>Rq*mO{5akBtGfgiv@A#a#6~PP-af`b zg-(;nur4v$Y%oQWDpzB|5)p#bhVV7Qqg`?CbSVcyZTfv=Q`l(R);8n-AF#6G_AkMv z5pBh_YhI+H@n_3xuWJLJooDW1&(M@xjl1pU%RS3i`I%3^^$;=X#Xmb6GyM&@*{($* zImk3zIibNDyOBB&LDLj)J$7yV2-xVDyP*XrJQY{7yb4Nly-Wg4?l8ZxzZm$VA~B{-*2 zVJN;@d%BjJ`@i&@@3SS4LullqI1U&RMCq;f;F$St`b=y_Y-t37!r1q=J!8cNEMTNf zB;cF=@^DkC2DC$Z>%j;+PfH~n(fEP~59i zB@N^IRWTp)TjGj&OYP$1!f16*z{D-a$M;7^xh$tmf>YprnU$Z)A(T`oYSkMQ(QWEm z@6D*u^6S+8gt^xac5&Hv`CNGvM5Z*1cJ-ySqzfu*jyKq5mHE|{tVP5u447PBS1X5z zE2{Oj11=tgqWiZd@P^hJg$8SUIhjB|uY{3IBCf~2r3$;-gOsI`1+J{{%|S`osx-E8 z?x2Vev{_BE64R_=_85_G!a*c$ZIvquVqRpaJvnvl@~+d+UGyNPAYE2toQCN@t-yr<&gG4~e9nGOe|r+ZNbEP4kE55{id|R+lj6`TWB+y% zg0BHs$|+R=^ml?a*=$yb)WQ{jm}nTkZ66k~6>s4l*|-3}(F%UgwWZ24a7*W^41!_; zvho?vtN*f6j9T;1F3Pvw11*exp7(6(QRa+&JJ5^MXxD1o9iuoPe}-uDo5Bv9b-vYT zZyCyJ_7B=EyL==xRk;q;wRyD3b7-BQO5H^^P|B+)J((uj*<@2b^d)D@GukFV;RKuP zHpqO9Y1Kwif9h7|;#Qn<+$_Zv#o>?PDu^_Z@+{2>r*nlb3VyXTTa#ds=~N$BhgjkZ zCuIv+4??d?;8KBvFB$sik((Llz)a-Ym+3J(;ksr=OQ8W0PN7k9gik@;yPYt3#?A}_T0QF86-p5mM53MfTz?V|h1Nk#$xkgXn(qXlYxt8nsfc=f=- z2ID~6yj82plZF}iqM!UQ!BGt=8*>cK5EY)%X=|8ox(!U5fyOph!I2dp7MCwXs~)Wa zI4+HVCg=MlI4tkwHVn5?xbeF7vwXpo{wraB!59V7ObU>EL~`WWUa|H`sN68~uoMhX zC=z)HsEUAh2Aokq0|D86tM79Gcc^WlcTP%mBX}(AXJ9^7cQj>i?6jNVw>$EDlU-4p z2=o3TaBZG5OLAfq`qN@1U=Q>l)iUVBLV)|x05v26rQU+74poW(h zn_EAoy85she`y-Kl_cOCU&xK>|Acunfe@WgnD%Izb-tXHu)x|63xbm&aRwd$`M>zr z3&)V-@J zfbC9$LFhF~O!t3_6eus52rG)HUWIYBxtSd0L8-o5j4b_j+m6U>5lc!!jYNzE#fjZA z!1zmzZy?RsW6Jx2U?_pd7gby01~)l*_cO9fC4GmHzWrXmd%rplO5Oj+!7|5eOCxpm zSFfcR!yh?*N%=&Os@(4RSik_Nnum9v8%V%oy&fC*uKu&sw403N@80$?}<6$VzSzlLc1_8 zRP0zaY=zm(&!gVqfVj>q*t+Q*yxMIwTeyGD$}@7Z>?A#Lcar}(Ahr#;w>`jL+fjaklBvY|NfXd@X?a!z@VJeCYV}KyO~evN!Dx*P8QRH42uvFR3Z zm|O7CxNxg@mWFuh>+B1}OP)ELt3xRUI(i|L)MuM=+QOiSnLF5tbql7^5+?z@x~0jA zX(az+Qfd~0qKG#9jxT}c*Y=3R_*wDzsz+6ykGQYS3cbP8ThiV*MYyHswNaY8ytAK( zXr7gze#elb+N22SWqoZ_vzr&*F>>q|1{FPM{1$w|sjnn0$}(`f%`Nr;gKDbskFzD3Sn)x{TJbz>z5 zaO!@Owp2!LvUEG(r|v4to|5bQ)XAvv$6!Q&W~QeW@CfS*BrzM|W}_@ZY7nHErN-bH zDyp-;zm=><8Tpm#u{&2<=3?Ve1xM0~XzUiW&T!(+EHEHz%R9Wi`< z-4=QE!N8gaqZc4bqsEe7IOdh)xidRjFR%gHQc>M4&+T}NXLh3jK@)z&l6y{(t5nvI zF9QobGQ6)t-vxzieUd9iGZ%M`L2s6(tBFM{w`T2Df8KM9I{KY(3u3LNa z+wJoDH`6~n$1Pb+$d%yA{vM~3>&p2PC+v|t3ohRi_9a~|xOaQVq0feuxoCrmg?*=tDoXf)k*~mL3{BJaNaV zoPPaWwBAiLFnEjUUP;6(5N8yxf#PWfADViWnjBLwBgQaRm8}W$yCmkVJ<`=!ds8mK zxRQYZCe^4Lf&%07BFK`Cu{%w+f1EaOnLdn54?=NuW(llCQ>}E;ZwH6LZOKMMH_kXTQ1fdL~8UK zzYht2DgI@2?_j^qpONKcLSWeTc5O3t~kG;bynXHUT{&mJg#)a;JoKXQr^l`E#Yu zbOG=Xo{-^$dL7Ja4?KkrFE;PoQw6p@Oa8o5gXU;XkSh<*R{XDjgWW{smaJ9_HZO*A zA}aO3=kdcCCp$R(6Rwu*<`g`gEInJ@va;?5i73(To2tDcx`8#D%&B~9mX@1xlZC4M zRsA5u=>hv^6~UZ?%&PQ(2;7&;#>(I~mU^#kWDKk!MLwonSxV+*5Jn%Nq1zf_!8T?^ zMzpJ)_;h=l6OE?NeZ*H-x)3tFxj&|=PTSqs!xa#}K{G>tLOEPp#}HoP zl>8YqPOFmbu(Z7&jdtz=(D%pOc9$~x+FX}Wx!)Yo&rqo6Bq4TlQMPytYJ+JElF}-a ze?N!m-Ns?@&@(m5+i6jvo&xr-1;VRz5{CH=yhv*vwsCodxE#JXkW0(v`w1v`Zmr#^ zO%VO`BH2GEfU+*Q!?Z`uE02hzJLitd>+^}Q*l`R|=pqHOR2!z!gF7-<^=Jb*!`0?d z`x9y~xMbA0aYdN&l_BCR<;bhC%4bFHNb9CX?jKt670!&(N4p?PE)&F?Fz8dzKTlVK z`I@wE_r6g<c?-_|#Z5@HAJ(zs%O=;!)2ZlmW&sRsp!q?hWm%~n zRS`E_YUDYz%mSP1BS>wP?(4X*xicTql})X<7G-Dy>mC=* zs-RWZ=ql^JAW*0&_X;NgxGu)j14^dx`mujI+1d)^9RfBgRFTVKU@Z$*t{p#74b>PO z>M@*pu`Fq~fIrgihqJM@Otil%S(A$9=Qv_kqkPoCH4IjVl?srkq!L%5pZk4x|KW=c z07*w>FL5Ytb>B53j%zsbZ@*@0JNtQVmpq=6aCfJ{b%Hu}Ki-|p@tzj|Sn3|5+wp;T ztE#YZLm|UED`eRoM7k=v>H;aM{cnS{j@`%mK>uIDu{o$08`I{h-?c#S(_fMKDd4?l z#?{g*x4p)gOrTo?z`EIA^==R%`QjlgbG6XI3u}xB+$Oo+uPH(qC7DA7+M3%B{$nI6 zd^wpgCq25FYQ%dZZyB~-dmm(SAv5as!7QZ8#Ca05?LuCz@tgUpy(2T<)Wkw&I!_AF zR|8$hX*FXac)WBllkIN`g<$-+H+OU&q;%Do-LEnvL-`}6q- z@0k46tc9=C)y*=V*9ae5&sVGbCO^DcbwpyL`EKuLGs-7x?6R&nRF!}RQHT)2PwzI2pc6$>~kyqmp! zOeHj0dKa798AX4d{cvAYH%6Ma*=80V(odWU2n!*;>M+6sRro(8Z(b_gabEFxC$>X$ z(c_yC>@UVwlejDwI74`V%S^TH%qN>E=0msZE2?%eRVzw)!fapqnp;{Du?g(+$@T72 zWv4K;!iPu6tD5G)rD(^Fzv2-5lmifbu~W>GjHmZv@Rt-lZ9uB2a-s=;xaj(vjUVdLSqw++cZV|8$_u&vjSI481B&ieS z3u8>~t=3zWvVk<{bG#KFO?76k+!|Ej3-XRwA7|J*Q*{9v*geFE`vde^U@+x0I)=C$ z5s8mWb#vYiuNM_PcWH40>gGy}$L?%by!YN0&uYmU-)dUEy$g}M7eQ@`mUjBBB9w@3 zhUvHM1V$IUiG;LNnGj4oc4?gq^8Pb=L=T z!mxZ@lQPf1vz>qEOPO1oKr<&qt~T{QADS`@X2;$Ln(Ih2f8`Xt%q}h1ezSuX z#h^jQ>5jSP`D|@DM-3{xLTdIMQ5S0rui*5}+T4h4^JNDKwQsQ3dQ5MBE+ESn_rnRZ z11|Ruvy_3n2Y?&cS$Y-aGxDXoAAg08R!|qYfQU!K*E-)3u;TuLrX0((4#X`_B0pAd zlvC^IZiTKG*r5jhq3=fuSy=y?P~M|)9e{4^{(P84X)D+~VR4@x_PEI-4|RLQy;H5= zRX)89 zfv=^Xm+!O3^}e!kUwz>vpWX>=tZ(P?iiBRtei|Jh(@1KjVS|(RN1y>ztwlNQTf3Tp zt`mAWs_mdG)37%s{c_pqqt%e^;Z4t2VA0de)T zfB`e+t~ywjLK85UaP~iUmN*n}9UO~ybcvx0&9EcR$t3pXj(Ep3;M^w_sLdBmXxz5mdQm`NCF@ny4Gfo)&?uadUXvWh*i{?O^aj%0 zY*TZ2k9N3sqED%$>qi5nKuo1AE2&X9L!-AJ{SbX9Y(BJKcJ5_fFmR>nxuMwR-;~~} zTajA9X_~5$i>H}?Mv#PCbS}@wmiGjt#HdK)wy-RgtR=Lt5JR#3>o<>v9my^&S84H4 zrE{JVr5*kgzM_%VgZnUJ$PmR1o1agBikfrOH^(nO5@&ogbkfhv9RIn7&^UgB0~&{c zd$ot1h5F+Sk^LR&<6&%eV`=}~2p;aRIYP!en?Y2IkTv{_2j#|UN_I(25AdH@b zDt5gRS5sZ$pGd-QgDnaFwCE=8qjvPD4dMFSqxTRu`z5K1#b75?k6@Q#QG~ze;gI`; zTNL$%37kin5|JX$ay5|B3L)6vWa12<>RW7(}t#6X^_NxM|8 zF^h~s&GoRxalKi&S&SiQI?DU?(esFJESlt$GL}h35-}efQ?J6TFSe!#*Qu2aeLnRp zpj~aIpxaxPCw$}cz$kCw-j^T??Y2k9m=;&I zd2?goAWHs3qo1&FZza=kLi|URUp)Sp9Q(`^5TBFg&nnTP|NG_b*4foOJSHcICNGLR zKL*qE4qH~nowl*u7>YP^Ffee8^V;4PZX~t@t~oQm1}97Q`|{k<0rz}nN)r`$J~zq_S%15Y3irAP1sHB8 zKu)7-pSD{DAz)JHv4~}Vty~pn&xByJ%fsu*l%3&SRYoV6%b1c`YS+3u*cheZjgPbb zW{tFVUiSNh27ePsaF!W-(mny^RL3KW#0z$IZ)?HQ@vMX^63Cu4eXzRJGxLdcm($0g zC`(3ME>73{;mUT)I<^Ef_Dkiq1k;uCL3eRfy=d=yY`jUGXN+dgOR?j&twu}zco1pT z+h3xDuA+C;iU}r@Pqex!RB7qYo7)sy_;cWP{+eF14_0Gbf^W@T;GA2*I{Oi$c*?!S}6kA5HuI{(8Uy=YaqZcGb;dAwugzw3B(Xamok##Fln}hl^jDHio?VzhWpq>R0qc2enp47DwNb%p_q#A{Fz~{ z8C7>ENG^64Tr}ElZco=Yt(|4vboYp@ZT0>okpF)E{4rYYT>lNhz;JnSd7-C{N}g|< z=5%nB^@_O`?OlshA@U}#o1p%|nF1Nmwr=1rQhQ|~Nc;qy>k!D3M5hIIAoQS-H~?(& zO?I03UpNQye-u6ibV3Ovc_F|0|EPQJ8%2N| zJ%frr>|d(GcQ5YncA?v_w6^6IP>ZWR)h;WsIkVZx6{u`Q(`DSJxqpb4&Y$ z^-2G^Fj+JYIH-_{SP5W~EPX0QO&)71+8xBv^I0SU$=w&OF?PMOz@AmdI47~@q&|>^!v8X7ymsT(L+BXKeYN|cAeKAge#ty!8N&zms zTE0MXhj#a)Pq#29`OH1v+ouzQw7s` zqW4;oZ_KPo=EEovP(%s*=Qu zIRcpKhR#DwI&>?QjaxDbpj$`8$gfd6F0MfOZ9+L60l`{OrH*RdWtc&4w$R%x1l=b% zWQNd*w(=TN3Q;j=6pz473OPpAN8O?B)^CEfAyaV^_$LownOvCt+vA*Ao)*`8v(r?{ zO-K8lPpxWHyD!h*dMeG_G7tq^G$C1I-xSC;6g5MG*Q2}D=I$yGho>Nzh{YsBj4)Sz zdZK2@-_-j~{6yb3$yVU#pa;vozriN@ny4yY7k@4$Evi71Ggi{&?2oQjNCp4@ZOIq4 zEk*^)h420H-G`(L8rpjzZ27n=2aofQbkmcfZ)E@bFV-r>50({vd(XibE~D{Ruv2-t zO4uJ8+iQZ2p==5Ug*rA?|2B7sWv|_bav#Ma`12}KTm6ksC>Y>~Mh-+Bu;6tuY?$44! zv4c^Q#Bf&0Hjb;Mni4cMHNgf7gJ-NmHZ?=`!LP@X*DWM@mYIhonn5053UA z={3|9gk|dpufR;|SW05Or|$Q9mk;?a_W^UD-eQUvm$9MJ&m*OO66_8&)-UZmk9?J@ zYzX!wBwN%JWwlD_hyIQ{AJk&Q*Dz>5=Os@Pe{*WzTOD`dW#vJoYJA!k_Jd>f;pY|q zpLdqEG`5NUbJAgp?*o4|UtiZF5js8DLoVgxGyR(?)G;^;ac<5;Z-12c+^GGLE$<$B z+t4g$2v+x}8RQ1uTf?GvE)A6XFqu@e!SVIOmL*yC$RsU$Mzc-8+CZq7CDQXbemK}n zgK|VEx}JozVe5OUX;fUW5vSHso^ucCv88P!bV;R%ImVr${6Wl?>EUPGY{0~AR((OT zN=tWnyKITY9ozF7s_lh}S!B{! zIV%z5oc|75K4w}Z4OIWqE}RuB<$&;Hx!`Y?eQKDkTqLytG~`Z&o;M(+Qz%3x%LFEC zTQTvgskA7PKECvDR5DJhOx!ybx5ArwQ9Lem$!3dV_L5sL3tOuVXthWj;KZg<#15+6 zp~FPdqLhI^g40Obbv`m1ansQ{>o9Dg=`TDmHecYdEK)aPxM;Uy=&$2tq?rUkOl$7~ z#=%OhTRE~Yse4S7?~oLuqkv3J{N9TzG))`H3>{*2=mqYI+xnfvwNAoLA&sJl0b~FP zG7}ZvJ4~Uu_m9xM7t*~&i9iYB;73%iupse>`!DtNqs5v^U1) zvk^GCjqcotsz2dL&fVA41>ndV(hso|26r2`?@mYy+1+8N3eL$z9VhyX7{KU<0V8cT zEcEIHC1tkS8T!dx95^PSKU7Q8uG)bNc1C>67G z3m34xW!K)5VfP#c*V|@!nosfF&AOh>Oq{`hmuT%^f)Ly~hb%ks1Bw*MvxN6oBb5*x zqt6r!sctk^@nE;{u+-{fgn&|q)`qS-5@YmBV0@Sr*@tN?QK#AF8j(3Oz1973b5@de zTX$xj`lnHeycZj>QI0~}_L*mGiQ3NdXiuIqI` z0MiDqfW;g5off^Q%0W=j2+Dq*qz{E>emMKG`b-{e?Yi@|@y~+B8PU4_dQ7Ig+l_hm zBX&cbE%^!jtMP}hQqQhPnGmZ4TB@Fukx`!dvvn4lE!A|OaC#(MH1Qbe=Cp=>h}lEz z>1|Ex4JzY%p}d|dW&zJHOHWJ7r+<^W?}Ealo}G@@$0cp~e;z6}peyIBFT6=!9F_hx zI4Lx~6McTMUil?=dAqrL`0SbGOI>|O8c5B~)8#?eSXHszj-fWLQ^a*rjRq@2036Rs zcWA-tM&1z;A~z&Y?U??I2|Q2Vg`{;-*w)KSD=Ir_e z&v;N^>mCIOAV!2@7Fl^wWgB@E`1U-mLnB{OclX*(tLq)R$!`;EdijwkXxJe}c5?h~ z8NBN`L+3Vb9e7&<1C>#wQY2C(G^w|bLD$s(Nz9))=n3IIehhd1B7M~Oh%N-ISUqk0 z88E%5y+U z{Cv8Xh2daGovac9XLbB~VK_m*A8f&8Co0=Ub^8%Ffx1ios$R~agYh4ud{F%NbZlRi zxnEW1c4u91a~PgM0ME(`E} ztpP`>2cdMAkZ~Q>@|9DMBbI+E*t1$7MxR(1El^WvB$$nM+tZ(EK-zj|w*9j8qP(2m z^^AH$Ik^h`sP`E|Fb%$lbA6{ZTxd4E}g zdC;&$EL~OE5+yfcENboZYQefH5$4N7R+DB{bPq3CW_Sz|0lbM8O}a*BRV^%!C;yy^=k6dQfFOc5EvRqaG!&2AvYaX;HYjL__(@izc^xtZGHTW3Q?6^9edxci`M;Ic` zqr1~JRi9ot?@vMAxo(7F?^~HJ{a>|_{6Tibjew4>bbgEG-yO2jik#Vlf1}qKK!Oc? zHrn$$Z2F0rq4w1m1ubSCrD03H4Ya|c{ydUZk$W8fD)EVu(O2SvisqqF{TzvN)n`lf zb%7z1wYrvhdfQ1xJ$d5F3)xX)7~LiMXPBx9e`Z{ z+zZ(Hf{4bq@-Z5FXTOJqO&;bcyOqVK5Q_LjgUhhArIdNoNwOfXMoI2kI2y3+5$k6K zZ%S7S(bS5@LJw-0^MGwaEWU#{+(YHC#?N@XBGqUB1NEM{gUp~!5B%t6Q^Rx*d=dnp zEDH@o3j=e(LiCWy3NElOf;^4mmAg{Cu4o?{>7jF>3`?}Va|@}T5b>gExnbXX2d&8i zB2k(IvDc2wT&#v%k3=c z$)`7`8` z=A1$4<(?$pVW;*M{r2-f{#$qlXhUQ4p|!|M<@Lf*KKvLyj#QvH5B_7J=d^AfCC)qG zZFV)a)v#5d8$~mbIP9^sf)@Ol72@JSR zltG^V$SBjZ>Ry7beBN}|n7vACyLzu7FFNeZH$tfOrcu)-3Y}^-hK4s%IG4maTtiu! zVuMuH>1XQ_(rWy60q4=_FI@Bz*S0nKdJ2MKRtNc*+F7V=tXJcp0CkU16*;o+d&)Z z+XFh!UK#QI9gD+_I`((ZjYls3VnuF)<5GBp$^_H=w543r-mZ5aAj{|8GD@)fDFj8F zyLMN{k#s|(Ni&6KBodh%Udm0LIrhRQZTwsW<`w`{a{H)s3W`TJQ^TCn>dy#0C?73F z+P(7+P%TJ+O0uk2>8fe?s1}V1xmS0{DO=f#gil9W2Zz^xDVJlJL`p;(i6g|HKq}&Z4L-}j zzAB*h<`rT#bw%8OsJs+w5uR80_8lUhs2e$79T%@-cFKuAk zz#*yx$i`Urp+m(-;B1vLU#Ghes1-7>1VFfu8l^fHO!bmq$hKn&-pX)2iUtS=$i61x zW0Vsl+2%A#s_kMbGa$WZ#jv$(m;GQKQn;mX<+$LFz;ADFsN9js!V0MY1-Hnbg2)DZ zZy8-KMpV!zuGbYo+?y!4o^RZyK|laV!}0wX3#A*+uRqUPA2* ztnRK)xN|Ahop!D!(U*wYrp#~(4mBp=h!DPD=^$3V)N2T(vd*5Ur0>=(u6r#XAc03# zK;j0e5VX7r#a$E^yNSxE8^L=0g$bc#WJS;8vmSI;YMd&!JE!O?`zbKddTh09kf{Wq zF(=heI%g9(mWB-%K2cSCEsItEZaB_tf}{bURLp3toW@-hb4s5lJ6hGD4j5 zI-g)SqZPZ~Df>OA^7{rsE9<`DC|DFzkW;^syKM@2`UpKH)N|_b0EENlRkPSe`w65ouc1)+8+H6II0XKC~XnPI@J>SaY9Qd%<=gnu*SI}SFjrXub^!tM^z{`{x5U)FoiuhZhv!|aC z!ORYvu%Tl3HuJkZ; z=Ia-{wz-SOWv|fgW*^=_49-NB5q!1iWwvC3lrZYiptc#%zt%H70I8BL@`Xr=R{WmL z=S!W#gBrILfyp$^X|##93Ep4uV4ASF4ILj$n;-z;+GZ)3BY0gD%*PK;x1Lk^VW#Gy zkS@{mr*zQEig|uL1Fv`ug_BNi>q3k`v@EPniU?GN4$}NI)kyLnE^%0kk}11tXJUKb zVKRn9zOcN-zFRsVwugk<3f&Xa&pTXp30p0)LK{JZOCH5sa&tb5_}r?ODx+${Ku+R1 z7h-<#GrMvj&KE5+#DlwL@{ma<7i)5eyLLGuA_qK3xT^}E8LSl3 zQQVwz&K8XBJE8UzJAp*HM&rOeE!TyJxJc(kXBZX>2{(JZXW$1ZL_gfI;~6!340U3aApam-`Rm(XQHOid8?` z`*3f_;(*4QEkoGPM+e%$Y%)P={_S{B{R*|}Rla?*S_c*dQ^B&0Uy=^81dG@f+UnIK zD8x*|jNs6XgP~s*_iCk#7B5fcWsD)NK8b{<)jy;;tFhJ_RTiGqSTn`)UO(4=%}^A# zjTViOmfY8Kgv(J*If+)$Wkgi-j#a2kg8%L^%xxeG#T;|iC~O3_yF3OkDZsa6mcK*& z3H7wfY`HC50ClAKbcM4ciJWMBxt#u{nQTk>SypVBv0G)~alK{!ymRbAMcg5W;sR+F z6JQpgITJY&lcxPOXEEu9KEKYNe!HGE|7-7lIpw~htKtgbvQZPPJv z>Z2YWIC0HAR$g3JPnG1*yB8`uRs3lPo#EP)0-4Ca8ofeV#e?JXeW@MY&Bz#%e5~RWT8_Npy6eINnHq|*SBN;AN`E7^@uLLlr}oYxQsexl?e& z*naFCV(uKi#3u*9^fYbsA14-_EY(7!bF(;(DeOmU%Vl@Wi(>T%q;;4V=#gixcakc& zQUcOws?gFI)jPEVmi|-II%fia!A0t8ba!(wqqa+oVYP_rx>gNq^`d@^9ocHiZy2my zw)iMHS^?9V+hf((IKi-Z$+eiD{tMh?k^B}Dw2h@*P2NCy+udGMGTdp=uMioimgKeM zJigt6MYn+TpD6#Lu>v z?m6Bj&XEUGd|=MDn_7yH;FJGFTZeBc{P|`#(a8WjdtkO>*;|W)Oe{&DOtK#Zn^s_r z+Ti1cE$U_pG5YY(OmZa6w8q5rdfd@{W2@+d*;}gfmz?7Z z368!zk!MPShw00Yx{nQ`VJl-3yA?q9^OP*K{&*v6{Zg3XX+G7-(*(|fgqyRrj9F*Q z(R1rTbNVx%*V9d-?7nE!GN_ZQ#WL)ZN_Y;brkWGcO~5sjYFOJ&3W(qno#Q0^RNJhj zsnwk^4DkLII^6v~<(}cp?xUBbinz_J!?CfNCg=(p9eIEmkh2MNbh??GhCVU41gYM3 ziFjQ{7nO=3=Ahys5c~l}RGeGsI0g?8ssny&=qn~mY8ARkStQB&CaE2l8+Lgw^;R`hX#gtY!3M5-%#i9A4X6`Tr0?7ngEFV>3tl_0ZbOQ3BPwsiK zq^`CpTW2VM=xtDbj>Ef%Pw-`Ng(E=7Ez#YKKI1HPPi*z>%qpCfn5bAV^}1H6cITaV zxo_f-bkC7&xrPT=y)k?JSf@rSNN222g_0L;VsVZ80<4Y##Zl zYztGnS=x8Y9(dceZN5HG?wX--4j%!njF8%sbhGzB(ifJ(UW@W{kt^i=P)Wm`+vIMZ zAa~FXM6m$R_eCSswhL~-fqBf38@0rw;cRQu7*ycSTFq4XJ~%%P_k)&ACHUKd*O$wV zIjNJC-IS%Sl`&yH)sFO5=lhSZV~7|QvX#}MCQQ-@Q?MwxL^|7hZ7e4%QO8#>ei7}~ z^|}jfr57z_oK!jlytj<$rT66$GqFO#AU9D>)FYZLFY8SE8|j(n6tPnN0X4JfuZeI) zF%5a!=c~-?R_S!gqjmpq0fcKTARgWJrkT)Z>(*n9soh?=RY{3Q&7%L{zX^R2s_H=G zo0=ZiUD@Z}$)}gKJqN_^)pq`<&9z-K5Es2`e|A<+ur)^=Y&_+pLU5Yly42RZ#MZ?_ zb|}5!nNoN7)P~x|Yu+nACjC~{eiz9m`Et(e`)F^(ze;8vJOra7!mm(q+%{CLHDrSR zTi%UF+(Fj{VH<+9AO94;{=NQnTzP$U6?|rEw)ddai+v^4m&?aVUN>s);_b@vOjJ8i z<`9CL!SaWt|g0PN~=#LODGD=Lwf!_|ALXfqL`-xv>Cw{J~R z0m8nAEY<__3sD*ti*#`Z@QVeYJ8IIhv|A7END4 zI}|2$=v}J$E^&uEOSaB<+qp*z#Ja@4nsOQkYL(^PZ-AIf_jjAA%sJ+cdVGcwh;y+i z%a>BgIg^kbyf;IU0ON=~y)y$?12v9SbDj^nOTH1M#}xkJ0R?~bL5G#^Q}eVfKMapn zF7*WKqP+S2jA{9wxCQ^^_Ww&cCe~*|^!J4s7Ao1ekjxDsdg(a%VXqf7t4$Wg`$0N~ zpBkeNSe~yTWi`Q-6E z#h-s-Lt&~e*!W{cJl0Ws@xL+~+_?~S*{Nx80oBLor2LkyS%@jt@o=;6rSYw*;u3(|6~>j}J#IUp_!u4@kE79ZUk^oRS1kjf3Bd4-6gjM&LqeQqsS|IthGaC{G#wmfXO{Ch zJel1W=05FhjMXyM^=NXi8_Fs|$>f&w!1MM&Ay7+%CEc97nAgIy@X>rYYu|^X(`{X~ z%kiFgaER8$fQ!%CGq-M@O7cyjD43c9dfrJ8djG3}k&=LHLk|D+RfT+mubD4fF_&VI zTPfnBMBrN`goEpx#U8g3FK&_F{1@M} zuv{Ce8+1YcJ%-n&Pt|Ro;_e~xw!i3BjN)9HBxC)SRsO-5!v5sDho)DUXt4JMRMizD z1=5%G)xUh=q}JorR_jsOup(-$!Z*v^%b!1b2`D__A@q#;&%MW9a~tLT_cy2G=C*z! zcW8bdUqT9=QKlF#ToucG(Mh>3pwRqEjU!4J1EpO?5rpxgVv#OYY$f4|@4?4VeJK;a zt)v&6TpI#wm8+?0USG9RdjWhr2?RkyagqJii@f8_!9h)Ib>Z+R)a`bDS zLBU&73?*&TMXZe(CcxvtR436~r%i0jM0LC8EmV%;@Nf&v@p4B+Qha3KLXDl30H|3F z(y3|uuKT3Y3zQ0Tk9CWbb-C-3yWlpJHs%WQXMZ%dqo~)g*hie^iXFA^LIGOR70_wy z_z)|crD_VtfajG8Q?yMkytZDo&emn?IJbdFRf{Mf5(V20C^YXl63v8?RzC>fTtnCK zV@m7rZ0X{X<~Ck&s4&FODLNq*PV%v$0y$f&3ocVdifUVO%fZtA!5A!(NBqbd2!IZ# zD63gW9-Itp#7P+@`%eXNt8fDOsdgWi1TBKj&6KQM{5Ql5&fd~2;MFNHnj0tFi_ zgkCnnqCXSJTkC0@OK=RnLi}*vOZ~5t8mrEy0Nx*~05tVp58g%}IEYXi>M$E8bHBv% zf0-`fQ5!xC#zRsO(|1om>RAf*SIXc8V&yXp6R>r;*Ts1yPxr zZA#O&dq6G(N6e$~!m9nZRKC+!LaAO*-ADAfk`5`*rwWKUJGM7G zyX*=cyl%<|6L`VIt)}J-XYi2|@o@^1$1F$+IPSGA0$B9$mw5lAnq{X?8Iuef38<7qRVV5i` z*117d438yHFWTMHJ$Nq&9H*E(CE}J?*oA<~Y{Jex|L^~3c1?kKeBC{>itX({f+G?& zK$RO&oe{sCZASRkX-c^Kbr}LEu-km``45F|pF7y*<@!Eep6?%5&ng~MU9XB_mL4R$ zcjQ+SA8+mVcfT1hNSs!s%;k6KRC>M&kYm|TRIlunn$;Cts0`Vpx8*z$^f#Kk;HgICEhcU4ilYGTMtpyndLCJhG4)k$^j1F2{Amky=Z;?yl5&S?Y zl)|^4-A+%*kasxBj0Om1KSncQ`Oz1~tU~tDjfo|%Z*sb1(B!22fNDB9n4~q{D4Ms$ zS?eMUiHCm#fHh}XvMW`q$`%cv2*cn9I%PGjO1gH4%$>UyUw`Zlf);!nO2yt7s3kM?SboOvGHgGV=NFUJu z>OmQE)pOfIdJ2gd2~WE_m`(Z=*wh5+ozGQ&yw8c;8^S1!8t9(KTzdkQuzzHX1HcnQ zuoOCfR)p|y$deC*G8){rQb|BA>`)Y&4uPFo8;~IXrTXNc%l%+wRn@%3U4jNu+p@)c zD6Wcy`xjQCUsJk+5=-UMDvus5@uAzi={=d25d0pv!x*wDvg*qT{)cu!&Lv1@1t=y9G-D~hUk?;~WAvU9&K%Q1uC6+8mAoZKC^;hIllKb2j47q%cjLZ`< zx{lUHOn7^xyjeEybWa)8uFT7-AXl1d>gLPZ1HIEoL%&xctE1+lIz|afeR*`rwEc zALbDx%gq(F-@F{?_d*tpqW%eaAqV6G3*0fkrjLHiuH5<#qng+jc*#_Urgo1fO!FsU z#}zdQkm45n&vD#`+_=x@ zxEX;0F|}&t8`Pc2hkpT-D0}}0_qkxnd37EWr#FC%?2i9!Qy!7o-FIJ*c6e)9&mtrp z|4!=e_P62(le=aQ0=dAZi5eiKIZ52QpG)%SbB*Yt)?ch4{>N3e{8)bcVV_gujR9?n zcn3B?RROvqEtA|QI=1`|&YjyQ@ zT`KonYUW=CIX2Z}Eqem%X6!W4oP6&%D{&={qhg%^h}@z7dC`wLnaeroCJ;y2lwyKT zJ1nm^t5qn{L3)_snDw-icqB-(%tfime};V|rl{MgYop>e-yb)&IaVhoq*#0_RXZe8 z$~G3}ncs=z9D;(`4##xTU{TW&RC{K<51*PA@6(Q2c7EdjAT6~Zqn=m;+w-V2BdU1+ zW7DzL_meQy-XvI7H=*nidt1aEC(klh?1qr~Eo4s=*B2sKAM= zq~CS#R=?z(O}{(#8thd#PCiCo)bL;B#ZmQ$>OUu6ev9=_T_bx7PQK5~py&PPW;9HO z?6^aQwa|K>vB6@KAzG^}qjwZ%#V7ir(YQskWS`Zce{ZoocO)*xCE;7q$#7JBh=ktu zcilD*T`hy#0+&DHm%&mL$iUyv_A>7=N2%N^1azO1VwOea3X$J8d8wvPVTt)rCU9*J z!B9~{uvFB~Nbh&aTlE5W!kp&fQH`o1t_GZP-c1MwC4CkkAkZxAjt11LGRCdqRY z9gzeeXbgUuZ$drtcf6FTfCeSzfJj%${(Rb5b^Rx{V1zDupL1J&iMxIZHui|;q=c&7 zoh*(_krc6VJ$(jI$7iC1@LSqSio+%99Q^{{(d?)qg%k~^ijD`es(W55Aw<|s`0Jhb zR53OM-h5a*4ej~{DGxR3ajx7^qv;hIw-e25xCUKfsH@knLt zB-o0QB(&|-9uJw_kIIA8$)RcapmUL0o2r+AL{aoX(HioAU$=c@n`(duJg@_+ecHUT zVA|9l#!Jba;Tm6}heRup_lr7Bfp(m@hxbWV620$zusT^;Q1g~qdoGDo$31CJ?-^n| zQtdG_Xx$hv9-XxD$<;7&&#NAn?Mal~N9*Z{^kFRJ{kNmUoL@i(8cO97MhJjLg?l^$~@6XlS z=~NnZW?6umB%0L@H)d8`fr-b+Dx1AH&n*S&g-I z7Sc$CZY*o20Os>#*k0nzcrN0|fm7Z{c4e5A4K*I)k5hJ#2rAoXine1)fKanmJo8Q~ z51|lP0)M+^(jl!Z~08Jsjf*D6>o39ueFTN4oeDqWS^}AJQm7 zZtY+=v^%QUE>_=f98ROGZ5+OZ{FL)S!SxSB?M*J+%O6KbuVB=|cEP2`R(fK4lZ&j_ z7>Tyz6n9ePNU>{klp4(a71dHgv{72lUgE6t6{s)1R*r*qev&d zOKJ@)hlN*!qEE2DE48Gzk|>(DzL%yqos?t+3@k@wa7kX%2Z0}iY0kiwTm9I$SCbDp-Z#@=jR;b9HW zo+!Puki-iqP?_CF0NJ17&+yC)qGKu>+ar1|jH=0An$5w8aXt7U4xSwYM0)#PaMBMS zEonmAf{or~v+lP{TWd96$bKt2Q1H+pC98{+r6RvVs&zan!3J8{Xvj(^cUiqrY6M(D z#fSz7ctJ{n5Vxs@W!%|VQ;-l^LF<5;Kg?LF*qt@Cza?hTsbV4u3F+~Bgp<$Xe!OcI z!l{kU>WpobdTP@A+1g9&}qpmu7rxGBvq_&uz0BJpc z!M#Hp8eh{(;rtlYd2tMhE~4I2%5}Nz2tvHXm-g)!Cl{(Eca3L7*hU2t$nwa4pk|d$|-Ms9ew1$f@caqfW#1RjfUo;6tGSpzZ?+ff50~N9| zd@Co?kdH`y^>x_1FaWX+>4<;m6np4{mBaAXgPa5E;w19O5k62j^NA{A_GetRD36n1 z<_DKHa-WJlvOsxg7U@g0THdUDpi&$()kAB0>eA>1GhLL88Wci`K9ysmhi3C&SpG6q zN+hPbr7sYp`7IeT@zH`K-IHV=9#U*xaHQK@BnMtzC(~8N)|}3IMX)23Z-1L^gv~=rf#|ySIEAt1@A!m3b1Qb>q4LE=112t3`4&7WYuuLVi$Fk zT<0tE@=)P;(tP!T*)`xwTaJplmx0UWM?HJH+H9C&s-lCX0$a45Y7C;Pdvo}4a)6t} z-^Kgw=VG6rch?GpqJ}T(J_(m;^MKqvfMCk6TsP;D1z{+Ab1rPL%I{M7(e?(S4i zFdN4Da9u6-V7cbO%L8D~R)bSljSYiuEm!~q#UlqGwA~B8Qz|L8ei$A5gmWA0##GMY zPhFN)>vUL&+34>M$r6V?Hm7#G7`_XZyx$u!t_+Z#A#p)^(u(u(bZ583h%1)gKYL$5 zw2u`IRvAZF>Gzk`Yx`1AnuT+5TMoyYBiTTa)A_T6`OrlkZ*~>tPN(mj7_@+1p}Dvb z^itA&Q$p%=4E3xLvF>C#TqlXxrcDR=uXdgF+(dpnrid8#hgDflk8I?tgdE_j<)IrN zEZZvg)E>O)HU9ase^+Nuo);cB?b_QfC@-oI7Ym|=yglPeU&0)-HO~LX-)b#p+Dr8R zSN)46y!`8+o%+HU{nzxr%;x7Ado8lwi+HZp3UuKw! z79UDJRobb!o0p{TzQC*;R}lcdy*eYI(C7~T*!r7rvi%#HeMbz$*%Z}S9!mOH?p9Idq?v!YL zd`@I~?(_kwRn5QM+D>73c|u&uDo1KL-I%?peO*u>$x?Qm z_w&77t5U0MyQlnf6nt*azI(n`We> zkV%W=9`fFXJd?Mkx2aFe+Mmb2C zA}%b2#*_>SrK1xfx@~t{~mQ)c(U9 z(|?7xwP+EBkhrgi(ldbwL-#gImCpoFS9-(MT^3Q{<@5&-?($r?ekkpV(BYvH4Q zkoZ7}%b4PCsYLnt#o4qNj&nEf4mGKRuCf@}Qk;9;ufI4yL@rr0rGrawkccW z;gi~+)(E^poE&3GI9eLp-6Z}X(^!pL-|Pk`+tXH)(LS_{-hIiJN%1*h7O~uOPLMpT zgyajYU7*0eiaIHY(8sl21J>Um7O1+;gYP@vXPDb;%+Qv;E0&*}1a#c7D_4=%to;K( z;Z_dbDU2?Q1nc(q^vVfX4r@ORsGKZ{Xjsodj>Mq@B#VZjE4QRmu88i1Ebpz6XT|96 zV;EKQ>8i>tG{dB`xNaT^JzwW4xpqr&%qyP{P!10{$QRo3^b?><_QYo^v2Jb{U_w^E zu1etE%uu)C6c*gWyaW4usWEDtIyXr@+d+gjmRIKPFbG@DBwl`#z=A1h{gta#EBVI< zmUd^80^y9sXphG!iVsr4dl)=DJSEC;(1DS_?8)JzEpyWbRR2Jh8%YKigP1NcKaBlx zp`x~n@ohDToYcm>E3H_yoprE~=}}V!P|B6L85tMjRhFUuP~fsGo;H72x0f=grPYDA zf}smO5*m2N6Z7#w;j?fK#lY%{Lc38~WA|u6_io(d2_*})CWS@Mb*?p&irHk@bLg#@ z8VkANW(xCN-7E9u6wVS+I|nQWxGDtRIeJyX>P>^ zy^cx5uG@%vTu8FmDAbn44|uU#)7+>|a1!F9f)w0P_zlD33p-eF>Yf$bcs_1>TfWoG z>-X*Voh^2^PF^S_;XEKlVdI%oGiZfFsV$R1>K6f$CAeV8qo2NY3^k8bdOp$wq@HET zu>1XIp5}f1i7qDY7r?0wgw;q2UlF)+jhA!pN$R&sU)S=7cu~vtOw60^=6>Zi5Rb+H z<>%Cgvo7v%ma9TP3RNniCqZ6lvPycz} zUp*V(*F~$PPBQs_K*kA%Wahv3gZa;nqtj0(=mxR-pMS8YfBE?c^GmnpePUhRN~SaW z04tQljyq(t?~1GEY$;En&gX}?90dGks6(X-1rGD<*DI}AZD&cdkQ<$Fq@fm-0UcOh z%iQ%aZ{Zv2O|;B6!_BhN9@3wrzs3PhzJcYoA!xrec`0I-hoyT4Y_;O!@V%P(aCBXh zc+4vCG>Q$g%E;Z4O2s8!wa)AkzdvHS>!cD3*@t#Kr-td~!Zalk zrvk8Ti0X|QJ*C*C64VysAu8O>=Ja8Th7lR82Ls%a932Mf3!!ad;p|0CXCkxiN>1}?CK9Ak(-$3PNV-3){ z;QhiKz>m_e1dh3WToG{x`035f}70X@bTX3aTFFeSW8d>dG zz4TCXj#SuBcRQ6r>^I?cd>5akaIz|iQ5#=l&8#^p)FI(`G7F zhP+snf|b%j_vG7CY1WKe06gFei{dJt9h;+Be=jlUJjnJ9a#_jEl(eyHc7L%3yKS?o zJ-LxHXu22DG|z=C5NJT(97kFozSQ3`ZZoX(&1mjhPmtO!%NGTC@jedURr%&`1J_ym zb9z2AIuE5XI|zu4G62*T&Mz(~yas{JNxXVqY6?QQ8&|6ZWij=gG8?75BkLvnib)O+9+;5yZO>kJeV;Fte z(g^6Twz{x-D$l~TZt8`p$QoysSq_tCu>+940<|4XVJcAFGf6csA8AxP;+uf;veT8h zKl4waH3U5(G;o%aoW8p}+(R+ePluR*mkd-s2(nb@UUQ`A^2(DW4@c~=S8y7zch3Pg zQ^$yE#WgOcRhcR4i4D4b9TxjBsYV}UVnCrYVjV( zJ;)#Z8UYPa!kRSFq#D`7#h$%&gU? z)#cNB6PX#_J3aGx(9_jbSrPC1JokNFJih>D{BdPREehcD?#l7}QH(f6;vl3C{Y zbe42s7S_>&+n$Fl{P*iXowuT2+({%b$b;n~ej4yWLLcaBH}JL;E=kcU(p+Cxv$BRH zGFz{WdVrO#v!rS}pTjTw&T(UPg@er3egd(d5UUw5OEsCY3#l* zm2GxSWU0{;({h#(5Z|fwYI3qDMCztI%Hm^qn5=^GVpj6FQ*L$6``VpHy;WqYbEvz z=Lx-4*}AVDoNa6y-zDr${Td@{qnUenjAY|QnY?>attXSdSnXFrKQfF3q}jmE$0NGH zb_!6BZy-QA=Q#oimTmK-Ls%kEQ1&H|4=$XnC1DNy9|RW& zh5PGmAmvR5R~M4Zr^zmI?e5_IUCt6PH$UDlTZyIC^z03>87)TI;oZOH4qm@)wfr}k zl{vyk{hzv}CD}Ze0v*~^$lvV;0 z0+$Oud&T<9z`t;^T+h=WH&53a#115a!z_h37Q0$Qg|6 z$IbfJOEw7V4Qq#w@CJ-ADr;sG1nug2k>mW_Dj&@ZXeY+=IK)fQxA%!&zVAKWL;H<|ygCtQw7 zw@GC7zoQVumY5X{Sd7|UO>XGV3z%ya&R)0E5$cT(C~dMI{bh2n54cb``MH|SO(v9b zW%eOh>_+@;c74yOrC5yHBh9UZAWpg!hZfty7UH?cs;lECUB& zkIv^H@dDFbi1*0V*ghOIkcW!{9k>Q!t#X2wAAYk%B5mV>w>j$|aoPv}vgL$U2i%@O z$(l63sSES8SMtsI#N2`2u;T}d-bJP`pX{IT9~*ACD#FyfG`Mdhh4I2U5L;-1F9Uji zn}cD{Uakd-==+CDwIU;I{&b>ao(ScXpXuj8IRR~~z5&ui?U}aq@veCMuCS!oT~I12+YdMSDYO3VEGbyU z0qnM_#SX+6lX$qktX@~Ga`d^Ij{4kpr4kvTW zbM@{|VBF+2fjAkN^mAluX ztp|}3k6&cyVF`mf83|2LFgs}dD#k|=R@ssXdhzzo=3m;fzUA3$9TF|qi_8OF(TB;} zFZPO_&?>-Dr9YRXL7hf{Dn>LW&YBPHJwdl#O)GN4?efmh96{z)zmj^K=FS z8I3$gEx5J6_vI_t`~PRZGGh0cV`zKx_3x_#%~7m*algGf&I^w~6QN*3@(P>x-uTw% zi@l{HIM|!TuPbUeZ{iB$w{_9OPX;pxgnuvJm#K%lw)N1Ryo8%Dqb17nVR6U^QF>>dU4P8cp;jw`!>w){(Y*fHuS>B{kX6T^QiN{sF2+638g3^E zu@L&-!G5w~&bns~gJO82>7LD^H8H>e>;E2nChzGSL(F|DT=sS+QWRC_<6{j2G?IG; zd?kVzNt!NRKBbTqwj77JaX6M`P(8Fpg>%lHF{r ztKLuiBwq2w$qHHZq8t${k6;25a>BfnJ?R(P7i=57qfv1Y@Xy)9_kZJ2V{_sxcjW^Y z>-KUz_%L>y>XG>1moEL1?$RM5OMuRN0D%(XM;o|09l0s5J4LjH-qRSF%e!m%tVCaS z?UPONV>C}#?)zAC7t_3|H`H>&wZp7LGdcBev*`fp&igX%tSWMI_*tHTMSRhn zSoH+Lti_^Itor!sdG(5*FzH+^D92jYy@9J|Lih*eBF4xLd2{d&7m`Fyj_3TjIC5 zWKo4QCm1v;U5`%<*%(%CQWIaA5P zXOAL*J{G5Pw%U%&Hk`|KXzJ73S5Bo+4%W0PJfnArd}OZ)y%rWG3e7Fnld`IQ`EK2O z=S>cYhBeclLMLaoU5Rt=6gCD?dAG8kc)4}4!1IDwN1|9k$B9|x*Y zm!pN>nb#%rMF<9JX;aLI$Z5P=%BSc}^8*82o?`lxtN~UUoS4_G zr^ArAC&~wAKBY;fCnqC&_*q6S^RCv~0W*F-l_u#EzkUPE72#_0aw-V6w3V|e5Em9$ zakFF3qJlcV&kEP%y*$hgnp}okO)}%*L0&ofXMOIev!{V3VVjZ(qHm^IsGO{ zF~sR9RyWi)f_)zu`mV8%Ka`)GKJ;e?pA&>yHl=hJI>^c$0Rz* zs`>YNIWgAZC_`c5Aou?Kww9FdRbPFR-I;w+c%YW$bXdL|tuV$@(+`^m70KRiiOFir zmn#C-+y3byfAqL3rheQDrWG~&NM{<_q3Jj29nA6dFV@fRu-aEq2I-gx`ynS$I8pXx zpn-HMs}ThI^Lh(kJ@fYkdu~le9Ryrbm7nF`q92{??P_*Gevh5*;C6C}JsCa*XVUgJ zT~E)8cNc6-QNbjD4`H^x{=&*W9cK|Z5{3wNR%0iXD|4kzxe?yUv;%#SNe3o+6(Lw~3Y{h}aE}SaOXGP!MS+jfK3Y<13MQz;;YBf!LWdF@_uv;0(hx?|?~2 z{p{NF4%1xQ1MFFxqLz8|o1e#Y)Mpl!SfcQmhhAF{#koLZK9lRp>uC^H%Rl@ob?|6` zf4%D?1P=QMRLe`7c)l%Ux$yD8Tnv=QOv~Sg z?vJ6Ty`Mi~^Bj7zU6a&Kul-!eHYI;4SkG4>OHfr1E22!UA~<{|<+zM;ImbC*%^^8r ztAPD+9C|>5#{)#JF+n$_6nUH z9v1r#2fw$s@dCcc#U#uMQC#LlwYSx7pPy`NXJW468cMi4--XE?cpOtgzD9#K1bgy550^|i|JXAA)wW@?z+=IZY%Q7KaEGJxM`f&jL3koL=1}A z+#vheFhboedrNKz5ob!Iwd6o0W}<@vCG>KW4z zSv7)`<31^JSbzw+*x+$!HHrLnD64wLenC6dNqTx-ospf<#wfM^Wi_2!rp+XdH&1#W zo0ApFt^`e^x?*kGC&xFnrxqJV(#EB5$HP|Pw7LafX{J!x0+}@QJij7W^lZ_QyiEo8 zzLP2Lmg^%_;#vh!4xNNxl+;xcYe#w$kwI?-V7U=PQLE|PIKYx|P4 zBttQGZ7t7@ZI<0D#As-$4kQjNc45?GI@b%=d2e!%0FLuSiD%jG<2a**JFt9!8LO(< zUT;}Zj~Yo3p;`egZFjp0$xqkI*iAsW36_q$y=pqWf03kd9Yn!Y+s*&jp1!iF-t_&O zC}QXL(IwjJjq0-~r;+Gs>DqBUA_ySABf&#~m5MANWI1CLH9~J2i6i;j%_-MAE$W@< zH^-f=xFbOK)_jWrZp>rN?|YUthR%{s|Cutsi1B%kNH1{0=&YxRKgNCpCN>ZlW0d54 zTnkG#qwAdVlP3O47L6IA^ihiMO3thfo^Ab%v%=fkSC-ruf9t;e%?R2+-*%$8%p>o%^)~p!tIjj5+aHMDbG$P-WcPI0hiEiBQb=MgsI5NoV<@)U2sf{zIFkZMU zzKty26pC#h&f#{r@U30sH}jM|EL{IJ_H1vhAf_fij8CWdw&3JW5m0?YS(M&)x>tJ+ zk}a6-ZlqOVnse`$bzt$M&iwKB@F=}A&2tJM<|ovg$bfnqs5v(VhQYTPx7_U3^}FRM zrB^JpSK!J4ABV23xpi1^HU_2Btg1}2h-d5#Y>?G9F};rEQgvDw0ZCoYs(3EFx3lDQ zK4%2gjNF4RXGJ=qE9V)^SMxvQRIXq?&USsuqSIA4jH9wZN6JZ@2v>e#k-@nv;>8msGo!9ckxZ@_l5_oO>`JJU6ij`uoX(?^U zbIszdvblQI6wol1!NCVoKfK!%n~IrOn3& zxSQ|cd6;2eUxTuDJ-UH62jm1?Vg?V^@dlDGih8=_yK_t?Was|A@fJJqT{I4BJuL7} z^3kNxcZ^HI(S1b!pp@@_?(|#XBQOu{-_$D5PWlu^otqyLVY;n*d3LWca*h3c zmQndVgNj2W4_D^|0J^X2TR{^T@QKJgznNZZPu+k-iAHb9!dtl^jyJ5(HBzK{T886_ z#N<(9YD5b?j~E1w7^a|5jV6i_4wWh^?UOXMHk|}x?Tx=a(KGMU*b0TX1t z*D?|qIDvY(15Y~;Msyfm==Ep}ZpJJ)H5a0|XF?&Y*_bmv!P;>@L52113p`<;LMV^T zZK_D+vS_lk4pWV%a-cs4PAHnKBzq+-dgwjU11Bl&p%4CsrRZ*opOnQvOX2py_OU0A zg7mlzglxb?^E^GBbJ(nrA(%DdO5sZ17ePy=ph1EBrlN#k-{KJj6CM)s&W10|MyiY5 zUOX~*(pk{G;m#u6TYmOwU9?;?s%&9EHNsr6G8zw?$cnL>GAo*tQsA+&ZLzR{jx~m! zC;W%(`GEkU1DMU^>`bpinuSApJ8!|ZvQhfn6{9HIepvgu8-%@|Z9MSFhs8wpvQwz- z`lnfU)|_6yMn8?|1HpS%UGMFTl@rbt$WdkvDqHsq^+0wJ59##i>k!8lmRwfCI^Vtr zdPFUw)z8}d`}K{#Ds_qxOaZ(d(2rLx!w9#lZW(%4ibDm~CUq}DeE34d4`f?>R>r1s zp$gZtd8K_O{2Y(sk0wGL(Ovsvx(J2rKMiN1WdGOs^S~_yj07wrn?dy-GVpM&F#Qtr z@z~-O8Ksl6`UOxeV61 zeP(5@y^j)$4uNtfon+imToi(qmYqW~Ok$R9 zuhz~?Dz+wy8Bq78nFT!M$G$)%87kR3M?ze$`!0jd#`k_)p?{KJ@)ZH#e`cby?r*2p z`C+MHvz@u9(SFF*O(E)#(1!n1YV*Vc_6Dm@5P1+sKmw*3D<==wYM3*Y&4D~7~ptr+^?-3GX1l^BT&0yCEaYJNsbG*9|pq5@r zA70~wad}5{#kaR`UU!oBL-)P4gI$z1U(9_8!HI`2Goq>PDBDh8fSn-a|5?L1hGxxg zq-`@Y|KDYQj7#fcxV+f(?x8-GalkV_ zboQ}n?*;2gV5(RGVwlWgh*$F|D73)}S}5=Q&Dw@(p>pf8t?mnz(ggR{@2TsO`b!uY zPe_2>o8ivLNVl%5xxgMVU!wKCh4$;|9pWlQGdL8^N&&$Pdv2YK1Kb zg;S%)z#a#x7CvY&w!2^Mb2L_k5g~YT2TwrD^EbZZ85K7fjHTX9$4@bZ zpaPGrE+=DDeifdY8aMO{7(XT#Qdl?ss7#BJrZC zMtJZW|Pc3-T(J8b+}k;u|GwF@*ODai;sH*=&y}x@<|MN3F8|r`N^|! zZ6tD(&o!uABRB?Bf5kA=n@q@7GKVQI>_nd&|18TBS-%*UT)$XD9KD~<^AmVJ0PN)d znU<+1Pdk~VoE|6pl4IargISL8-og6k*s|TSe=Lv|liX~S>c+6*5k7A_ypxkJhR}O% zL2V29o^)K{HyRzfg|J`)%dQK~pEQ`YowwF&W{GH@1mBA5_dR{NBe zPQuv>R-v6Plq8jSaZ`5tEw6Tqw5RZhPxixmYi85LQxe%!!T1#Bt$hV{$#n1dkA4&Ro|IOG17fKm3a|B1y$fzIYDOo=*PHQqmsTE^>3f`4hkr1fbwek1f0REeo-< z<-P&7PnOugkKB){M`SAV|8h*efJr%`4V!95d&6#+MmftWWUMG&ewE8m zxQD<@(5_m3YwKDbX3T$f9k*~D*f`;MmN)dDjZ0MW(D&89>XZF6_rYDUMFaQc9yTsl zE|+@bg0{S>&Br~b1K8a5fty^=y`vYR7Ad?ni?fCK2(A1@vGYY2!3%%=Vht{B+y+Q_ zC1VX&?C=sU6#^5dCB`kh=JVA%1r=)R`s@MpI$2U3Hy()Z zX1QXE`l*ZF+v!T&Dl=4XR(@CW%SbEMEQu*)X2b`j+i;2Ef=BLtyVj%CwBM=}?@ElH zt}D9urv^8-_Qe{&?K^F>_AD~3#GJN_9YS1#z{l9h>!&==1l9bWD4Z?aU7>kWJfP^N zA6FYgjMG1FW%wR(D=Spm`_iMfb*9)ppIjZDnquYNe(x}6PXr;b2ieUV0DC+FEw3|9{l+`BV32jifFqMc+oZkkwdbRWa5F6%nsWFcnC zN_JsLtJL&f_!MKOCs01=(KpG491NRa1e=1f>^51fpr^YWq9{sUFZS{fHros=Hyb}h zH~MA{-pW-oi(ieNd}CIdhReOfoAD0;vGXvd=qA``UfEsT=iU&mA$-*D!H2j`(WX(Z z6q{rL(;#E1<@Ce9bW|rk0#u=atEc(h3PfqL6kKJKpW|V)Qx^b3{UbNOW#_LM4cG_O ze|_=n{EyRN6WgOnQ{>v*$)?-|y{5iWGXLu@(x319t8d(@j5z$1rsJhwCMYuOnU_!ipgg}_PdIHXrT%q|xl zIoJ=`T2RUzmwt6C#z%5IIRdw_d$8ga0@tcbm5~`{xdg?iC}Y0Hs@H|0$L{Y^hW*ge zs2`gCbvzE%I23#{28-n)zmS?G&qZs}Tiw`v9IFTi5;^~?=MB8DUPA3%@FuU1C#)if z@1`k@`3LL8U)7^Hqvrq0Ft)i9Qa+&mvy=}C8Y|bN-9@T>A7_UP;~M4@KQa*&;~((h zRy9wGPwf-^Q_&|I34p*ve5BoxnbzK4pV4Gm0NUVmd$dzv1#eDkwbNJIKl+Vw`nW|u zdar&bkH;`1xk|jvI`_CdE1}fb<2+*WNtWbly~du_ud0Ceep>zWSwUa!yf4>%#(elJ z2?|%4+CunfVfRTVdx6TKcl~L0@2zLLcb}oUm^aKs2y$1l?1nTW=in7ypwje4l{1jp zZJro5<_Qp!@CsdQ1aIBuR)L3ir+vp$?weh9k=^*x3K=x$kB!?2%%c8&oR-`~HRswu z@A4O6AQcW(CZE!Nht^;IEOtSyzmQvF0&%H+Pi7H7v zvOYYpcZAW}=M8z9^S$>EdswIt^56ZMaVI|^!G{={EbC^x91|zY@^=h$VIX+fdQ^)u zm2wR0ZaGU2xZD6euu>?!Wt?g{^rGtE9!J$XZdCLUJaKFYH}7kI@~9(mIz9G_``Zd1 zxT`x)IwOzOsqXy_nE;xw9|Bhb}7&LVaTTYWa(tk1XaCKnKj)(g?PKtxaa03vim! zZej@4X_69~k}QKQk=T`ymFlB1i+f@td^3GKEj~5@6H1-#C!+Ghh3K+hZ=<;N_o@Iov$5@8Hsezj_g^RdL+?;}~b(Pt7%s}67SUD;*ox*_y z@sai(Uli|iU%aJw7r%s@Ji%w9{!w>dR+*JS8H`cm>vs*+_3djjuJ~>c_za7G{b=ZK z$=_MEi>>ljncP3nyMw{0nEY8sOJn0ytegwTJq?JuGc9q5*>4ROBgVLXN`R$o~- zRkPHkZ+hvqa$L!n7hQb4U#7D%%Z6q8u7D`5RTD8CBqy(tO>$f9tg-uFFUnxn-1dt6 zqaIgx-{X>*TYdm6XONhgNhW(u9|r#X{D+l2KA!~C@r#UyXlR^-t zjh#f*ChhBn5jlx<-&I!1;wVJ``Lt{2l<9=T2w@c=Gs{`nEVGAeSuz{-)^AX3 z{!CH^=LTxM-&U~@5ww-HSKS(XGL=-!((Y_!f*BJsoOteD`0N_rG8%us!8JC6ie657 zR4b}FcU0lQCv=K)Qe$HwY$Wz^7iPNMsBgFZ^=?nBl!TTw9e(*ELr{_|zc5EOT7oT- z+}9_|{Rh%4V`||e!`K^JvGe5Sg~@6KZfSyORt#;(Yn(Yz&9Zr|M&}F#j{9zqsQNlU z5y#bP4K=GUg;8!|ZOfJ2kvCmrAM<>7n}g=UugJnDWr`wkEzY9FRDD?{{#n>v}47T&R8 z!esw+^V6X-nJWe2Q@HygzgRnHyaavT^VBr%8jW7kUxRh~U|(fzYKC`?{bf70d718| zLf1pK!S)s!!=- zE6kBb!`Iwt$?B;(4|g#Y>;V}zyqwO|xM*HQHYKleC1yWQsLRR&@`OaBWu84WqHX^n zPJr%~=jeuJ% z+1t%#Mjoh%!g#5tDMkVDQPfcw&QgH)_|v|5~+ zYA~x;$eI;)vl&r%;yv$4rGllTpV_4(s5HBUu(WHotY?tt_$jbXqAy_%qu|x>CYKLt zZjxuI^W^Ws#^d9?i6tb~6YaU4$*qgbI=4O=C2l@p204{33xlYz7lL(GUmIVNN>-mj z%on5IP*MeZp#`W}&*`70C$FArXDb#qBseTy#$tOx%|d+TAO4z~lhv>6*79ToTkP|^ zDMp|^#`kFJeXeMD?dkR8uxRTt^)lS`7Fn;kMcqota2}havMx%szkMpO<7!}&9oCYM zO}i+@c`wx88|9&!9tNMce}G!&_tmKqP|Kq~q}z>gm|=nJo1NKKV^|K2^-&?p*S1aC z%d+ozHTORZPpU2W%#Ttb46@$~sxMM}ZZkv1s#M2kc{dCbia}M@+~ts~YF;pH`pIyX z0z!K=H9__=hpt>Q%^6%v9yfETInlqmSrlH3>AP=Ftag}U5cZiLEbfYX?CG|sAGUsT zN1weyxC$N2#t(LzU4eJ^bMD4hyRdq^y+-RY=$Kl;FEmjL+|7@6btT$#k$7a()HgQee3#$IR(tsYbeto>Hm24>?Sy5+uB5K zhv9PFCPRnMow59kc;B+C&+XjjA9)zxueZ))>FXp{`ZpZk`FrQ&ES`!5G4j{z3|%}= z2L_uduxB+}t)b}>V52N;SOv9CAct)mNP)4IKlB1Rc|xdM?$(@L_ntlau`V70Kc43$ z{gc7aLOGW8F<_q3p!jCJM)M*Ll_1v2=Ri0VBz_r&h3^$9>L2W5Is0TmzhTU!EqHl7 zJ0md0`MmcUcJ%3O>BnbA^#_x`=FvUAH!_s64d+te@~jMrpu|@AI>1u4>%HUwznsWX z`JMIbdrbXFO#U14n#pTjt-Uy2Rvb}5Kk>-~MN8`l{Fl49nBSlDR2UxT z57Cx-#yvx^MQYDc)!F;5Myc0+243mt-2>~s{`d>F)V2Ek&AuJoE~r(e5lRKRoh>C_ z2jFkA(F&12+Z{;VCiocV*I{^j)NU(DXWRkN_q)%+oAP^RwtnVdzM|`7`Phg?%s9~L zKWNDc&zzkxwI&S^4U}H*2&5g2#)Zx>|)4Q zU`7}8PPQ0vKDLiV!k4Y`!0-godlQy#KS6ebc@?C1@xWG?R=URX1q*i`$=QXM0jV^1 ze$71m`hIhO;qztuNcY|ee@JWPjjiVDt+OC2IWXKetR=rs4RN!ZnR0xO-Z@8U3BZW| z>gwWmghzjxdr`Ejy&bk_-Y|ATi?ch?Lo$Oad8D<<#m=}*#wQ;(Fs zqfhvssB&05hNpmkCy!L>%$*DHS0hh~;^yqz=YMxl(!aFM)TxtFS-R-d*O{sY29a#q z?`P5KZ;bzo;YT!5s?pkVw>E9txbgMxd0eZsU{5NqH6`wZZg_C?vO^m;;2ZqEH`!KO zIa#oCxxn^jCPHL>|HIXWFFVP}iv3vsc6lT`vF^&ceQA&1u8;=AABB@g;q6#aw8^MS zQ_Jy#PSa^&+3lSkkSEuEm&*U$hGU7DaHpYic`~-YOn_@Xjik@&;=+5W*t7B**_kST z=FGzikOy*nMq;sgS}5H9k-IFn#Fa&!Iz@aKFCh{oZtVL75Xmw7VW#mOaST2`P_O`- zdxaZWy0DLuR>vsHArK8<9J-k&)-=ZI<;Sw7JmfC1v0wUbe-TUe)#md>y4aC3Kqnnw z;7NcqIj$>PLIPIFZpQ>h>F(miZX+!837Z*+<9qw4g7{p{%2=4nQrYqMDShVJu-ge7 zY?i7qceSIr1o20iw;Hs3&|JC~5%8YSt>EKi!9<%HtXCub{vRdkbES zDrq9c+dSaC;dBV)4KAjK9snKJqL6g?WN&|1D#iWrAY?X-rs>7~H!gnl?;jpV1PSZT zeYP+FF~iEg&m7O}(*anXrU<4Ely0;BcwggXS)H+AH9Yq5aTU4RtEZ6Ny}-g-Ba)HuB6b!=bjI9Y4gOvE0oKW$$h- z&b#zoW^yD9-hoj9i|m2io6-GA;UFGf;d;$__>b?6Wl;RU#J!CGG7(|2sE)xeN8}cf zmf$Nv=CbAkr0fvMa=1@}ba$lL>l9zRx3S;QObQ&UpdUMx#j6V{pIv>FcgbqGglg4( z>=x56#Vu~^O3qPucAlSiFjcL!2_j;Ay8;{|yZ1-8R z{}B5v#xFvx3fhjay7spPvYYUeb{klyI&m9_rYRX5=jRI~i@< zEG0(~^O(sSLGYiQC{>mN zC@jD{0Y{WqIU!%$pG#}d(G8*RS-NaoCwm`&lz?u6Gwy??FiNE{FuCe<*CBDEv5z2zi{yYpy+e3^yS1b z^JR2`)nzE^rIGvxgGjqNVZUQm=3X3vH`k@0_}xzn76&gNe&0G!LC7;>w)#8%PObSK zx@>1cgCHMsGG=^MK^xaSeq=AoQxDgt>C?yfKbh0}3Y6V02f<%P%qS5b9Z=2GC)=_@ zgq~e}hRbQoQ#tID&Toz&xo+F#Sz%W-tH_Sg^92wf(m<{RpgvvbD%<2mDI-i1S;wA? zN>|~Y3qb;%9_9EF6#a%|<4cWawg>k}M)=6gu$KREMvBqFYt@@T3L4?p>Gs|B#NS*- z^xISv3$`UN##S#hO@Hib>6$qn@HDE5}QXIUSm>ENI#HR8%dME&rW$EbR)_pEpuHBXn z8GsIG%w{+KrrsmeCMaTBO-{s=a3=PqSq?FFS4z#%AG^uz0=X{h>K3Bg4e2ox#f9pQ zE8nCtnM~OgFV_lc2~qfiJ-Z)rR4$q88eupVTh>&IC0-I@CKR{nk}y{lsYOsblM(4m zR*w$-M9gZ?rzeI+zQjWGm)H^7sIN0YID{+m0s?|UPdJoUq8;wFE;_SMPGI^wpEqQb z7>00QhU3O9pvO0hcU#RTu0Ituqvi?DUUY~@9XY_vrGK@`??>{K2puxs-KySYt$0k6 zaqqtDzfX!^`0gc=f*NauEew5KmHNSZ(7nwUN#JMOq>q{9!co5-r>9dxefv(N)!luF zDkoYgl19QbBk{LfcGkhwBRAeY_wz;dDErg3FZFZv(QV(EUf#PAg4UvC zD-`<5;U5m!^(RDsMt5hq`X-=n?9x}tNAPBENVCzpS`zYu^|A-u7B2NMzN%KNC)~tt zPO1HPtj*HQ?r4cViaV{6H6ri$cCPQpi7@=2N^yN1zITqCMlqQQdS#byWc$+AL6!G$ z&i@-(D%W*|2T8c=mA{cUu;I#Oi^DQaWx*>@V2|b6*%f{yY@A21Z45i*^LKZjzRb2- z&%^AbqU301AJyE}I^glDYyk(11f4SqxXzKcSAoB#m&o}r$R==*PDC`!##@Bz$W*3mi+s@s0q%9r^jxH&er}pag+BzVid`>LjhF@@P>hjr4I4ixbt5oadKF|`ML5;)1E{H z&F6_sT5CRFCX%12j~o5Uqb4vA+8%oJbjx$9$E;|3h=eExjU({KL=lfUN81@ zZn30uZD&&|NkvA5syHE~wzrH-5C6r&5~C=t2aW9=YvvI;JpPLpTrjeme;7!P^-AQe zPg4oU6D)apUX+wVSMLnh6rFgawZ|3AGWIog{d>6?8rnw)7|r{S)N;M*d0cBzHH;9! zp;X$w-beMv!Ak&jJ4aUd`~e_C1bRk_g^$}!{uf_ot4*qtiq0veE!!TWMSM{C;DanW zSc#v-WhT7+YhgOfOw##chBP~u+gt%F8ufpU)c22QlIufQda;vaJdKZ>;k+b;Y+s5! zGAv3k+%%dy_7~x1n8GA`$i^#9P++^r@ZuS@3kjl}(plaH5x2P}hj7!CeDWD2LF{>1 z#T(;lHfUBpXL&NEcg>8~W>4b_)oZ!39rv%`^ZMZIrf*n4u7|r{IM5~bT z(2tFtYv96LiCD!M|Oa$z9m%YX!8i`QKP;uAaRMPpdR&@sG0uyP^(nt`lMJy z`_EqEzdoigq&QT+sPEM4CLWfgPm9BA^Z>hXdZyG@<2nb__|qb}eRvEI?g9Dvu0ct6 zQVvF$KWlp_{sonFOl2O%o!z=U&uqppcElD~w!-W#evFf+-E!iC!%nH)n=xB>OH}ZJT~jf9*cbpF4K3M`&r)m!P#-s78DclaQLdkv=@;&xBg~>5A#IU=USExKFvcy3@E&J!gVUPNUQl+@0w((FZ$II=;C6lIJOi>gdj&H0 zO-I+YcOUM<`@GW$ zgAM@Rdf)&5_dC-NjF;38`*o1?>{S~IMvx!Tvb0VGh*|>xYb-?iZEyeqJa}myfcy1e z*Bo#6>Szf(PR0pym5-un1S&SQqfJ_xlI+_PxUA%o`@4g@oh}6zg<~dJRe*5dtQ|m< zmAqck8cQ?;GLCO%vjVb13V?w$L%19Sq+>WSVbBo}2NA}aXn%BwR*B+(IjAY58GRcw zGA(|nhqZj4iZdOlC|}je%d{O-tt}8J;OdefraLZgWg2#=5)o?|tfoK3D-8oTGBoSJ zbDU$OiSUB9tCuo@0$C=H5FjDeb^)z)r=?|wQYUIpNb4m#R0O6}v7!Sk$g>ru48by2 zmJ&2@t#)>dak8>?+Cpqieol#~T~jjGd?Vn+ajL|S_sYZR80 z3D)J8x8oq;KU55Ib{wrHm0UVi6IFW6$MtGIR{sPRj6bCwcY%?t+iVg@qK5OO(9>+e zQ#YU>O$wLmGu5G^5ztB5T9Z##joJ-tRDm>+EZlM7=TDYyFHmopO>Z>JA=`c z=qXL_szJAr0vj460Sm1FvBhAmqS^#(uHNQQHc01CUmsiz!NrCcHE7gXmdIP%JyEE@ zU>ZqOR*pD^9f@3c>IN;jE_VX%EL{b$8@*i6Np}!ku-zyW6q4*|74Mvgn#JB)mKU5z zs|?3gf@w<=DCKFruwjNYYA!6*_$5O5FvP1E9%(B31)~legbv$Aa0PT4C(4G^N;_nF zl$>x$U|2EOqk1T8sT_iq@ZA)EZ*+xKHl@#^{RA8~$@}|is~fK5^Ei(eQajVre4!S` z(pk-jEt7lVjuZ6`t^+tnuD3u+om@dmhLl|1SSu7sl3;SWGF+~}LRD^xQs;Bvb%blP z2+)=^if}$susp=f`jijVyY_wDE!uD2+{Vi8fK@(yM|6t zsdh`6w6N7A=A>YcL%gF^boGOdoDU6_lPjGRo8?jpvW_BX{RQ=49!~>S7lr9$ye$S$ z&%8`w7NTw7{1XybK5OeWlp_Xk&Sz>h7~pzyLhVsqmDjs_s1-d5wOKUV>+)dN5pa;D zC913id2O^fQLB*%RI=zx$`YH}2T`R;vzZ6|IU$VY>?hm%2glLJX;gk zU_&F*>^U3a&c$9SO&2TeE#pT1I1FOp1FjN}=8o*Sy07MBqM~CK*K;9(qLv;J6eulo zg2{`rF5BP;#0OSPgRZ?rb&FshyU{bIB|4kBT}GO1@OnR61jIin*s5zn4OUS|WuY@* znY(+OAd=}|GKkYhg=%?QKp{!E?Ddt&#Bs6R>u${9sTkoOBpO_R8Eql;R)$5&kw`*eWR$4S->mr@;ynD63{vI&Zxwp(NIns*MVz zYH3@Kv6^8rkk=`*rz+vhP#|Iw>3XUp@Bl?Es}}Wos!=^)vbO9-tHY>wbO>&YpDX|& zri`_9)Q}^GRdp%3!^i=7V^JyKMS!*sK;2suN4rr;UnFO{G&>@b z^>v7Bm{N*J{1B}ZpzVqZwcV063*uUGaf^tJ+R6){*?+a~G!h|ohwVo02!K;JY{DA= zw!tGB-UKN5P=OG)*J8>u{aEuk7%d4i1EMP*S`rGRr)QBOg|-Wlsynw@#9&FF9~Vo& zBcPFuSBku1s8Q8Cnb969mm^rVq|QM~p#JNiB6LpHs3p*pm%AUgrChac$6U=tas#;dS6TLvc;K(6{Rq zltRebnkHBxP32i|k`AQ>j)%0eVks=+E#0mNUHW@)B|g5XC40rr-rYL}OkRU$Z$ zIPA^EMo;zPm?Bou=FPz@k=%s3B`z$;F#bB-F9>prCs4(wt2s;&-iLI2 zo*^%OC6gUY$(aJ++YX=u|`8;Fe9_E zp|J-MTwjzGccK}s76Er?LeLJ=JqWGj#yi6S$Vaz0po`ClO(%(Cx^I@WX242B zX(tSLTWOXph;#Ol>LcHhL`m%f9J8yerB!&uxiF!(2>^Z(B8E|kN;BDW$PBOqiIgh_ zd3CbY0j{H($) z#|hK3J+&)99WzY%xf(>sGB$d@RTml?NLDQ7%1Yzuq6J85qOlFQaH>D!p_EXC z&u1u2ozRI+@h`-y0149Vc;_9BT(c}>wvTi?bt9d$i>wr-Xe+A9y)r8>oF`5=8QKsd zEk^f7qiA!dHKArE>mx_c%R#-l+!89zPKt=*CL~ofk!H^{u$M6Y5mb6MSX~6nrkXcJ zwQ;cppty^ZQ)$GZ$~Uf8E(^*=C_~XjhF5@?EWJC(8WJUuy3h=oEed6AoYes*e3a;_ z_fRQ;l95^|hAxm`DN&HhVD%8n+!qXIGTKoDt5h^iV0|rld*x0ws&5*K0BNjD#n(Eg zFwZJ_V+t5*fm&17T5qD>zCfD>4rZ~AwyV@aEt*y3C^_%|Qy5XsDnXS{3Y{064x&I8 zUb52JGb!-=(r(0xXh=Q{^|PIpyWf&94siY|lY2r6x8)enoXJKSgtkOHW$+BUWW63g zp62y}sTd6x8L3af6!7d&6-ai-2eMT@GMoY!CBsl=Nax+cQJp@SM@1^2nh-F#j5SEK z4BZSFi0VNq4Tx!YAE@c(plD)f_6z{xT4M!&ynSg-2oUho-5OR!B_^=ki$v54WxoN? zlRe7UmxBr_CDNj*9wqaAB;mocY}3*Pk_zyr7bSq4R*@a4_gkf8Zm4p&f^7-}iQBEZ zw&1g+nk>;ffr1zNhsm)R+HR1IDhXUAwOYN=?m!JLU5Qa`wSX^^!@B9PRq4W&mbIiQ ziwuH#Iz!i7Y@{ZH%6M~57~uvYaTf#xq=ayM0F(*hN)+26)52qSz(pm&iFdKa_vIcw zBgyuI_f7=$oJy2+bWLT*q+-?T8q~zyf{uc#nq+W`9LJSMLy_4eNFy7qp%Td1S_*Kg z(MGv0q)1U&-4JhKIE}!iN;?=83Ru0OM`5n!7*+H#BE5hItVdQ2I_^o3BITM^g&BskVtbQw@!&pXjRuu~!bLFn z;y8uZ*q$b@5-GuEeYYu1m%&j6h8YG2OdXCirc|aO+qcxmwN0Q4F_J{7y?4bV4UWsj z9$X3uCQZSi9#!!~J)=3EbRYwaLeRdnJFr*TOg>v5Fd7loLU~(bUtQBm#L9tVESDMY znW`N+In&BudcZ&iZC(#PuvH4lmcFODF*KhH@osm|%g1BJDW$Yu(wDM-kT=%|c?T4z zi6N)RkXjgVKomZzE~&ejwoYMJgP?=VXI4eHw!a?9E9*AAP_|P}NCMm4rdc z6~VcRk&@BFG^8x$z}g-G-3=9i`gImtj@g4+(FRJ>>Cqt>OmTch(MEVUo*K|$O`r!H zmSi6FJ2G4$xy8V&=gS1|pKS`& zpo!1|M~2akErO5{IZ4t2LA}MwrDMDSF#yb^BCzBWH!!@8Q`!@`rzPpB_`~*bsd$)= zLoqQ9xf>FE0!z{CkO7So<1VY&&9V|9*%gE59t$CsQAcUktz+T2i+%LNbw6NfE?l5`&UKmF>w`(O3`G zfdF1olHkbvyqORfOdVHL!etw6T;wS;!(lt!miK{`v<4vP2<5RP2u#!B2MB=2S_Mjb zrc^QZWV3v&)&rQcazr?FBFX{B#|&*z<8`i%GHV=pfGp7#iq4>Jp{6+Fvh32;nBdqe z&eT2&4EAuLSTzanI1x5J`mI*dE)TDu#d>TRy7+AhP$%719XUiUUzp zD3^hx4A5xWiyfgtsI;kD9COaq)R)S7r2g(}peLAuQZMoCEfq)d-x%n;Y;^RQZBrGX?xPHP={R@|p->S|6QnWixj zkTZA$@zTks7aDnbB_tN?->3QkbuF>+*aUD0t%ea3zsq z0B0ykKZyvY(p)xtVk-3oS*U?nZSvkDVKh>oD-0R{Akk{E`rJl!t|AS!5oxil4$&o0 z%~n_iq$}3-&5|;>;3~k9YAIh@x3-4<0#ThZ{R-}oWpFIiqZfH%hG@&A&4YCLm)}FPu!E9c95Cwj?CParc}&qd;pr1 z#$X)xN$KP0lhVk{S+;9_N%i%)?bFl>RD zMnhASnh)zRAnw&#k|ZpOc7O=_v81}_Yy$ETi41zup&Ljb0hiwk*9{7}ZH0@Z!Gl8K z>F8x5WW3V^*yy?$BJfFjlbF!R6Lw`5FqxHIYeun^s)pm*M1d@iDn;ukkfCB7$WaAb zL;%n#GW2qww%VbZm4?8@(JHciB2A`bQ*=Y&qU1Cl>nB7eT5FcK)fg@ZIb=CR8V44+ zKa~MQDP04_M+QJX4oBf4VajI!5gsclDMr&%%MzrZ=fTW+zzHK~LA6b8n*td}{I}i* z?Q#f$u7Z(z>9PlAkr&G1(KorP^6C23Yoo$9ZoGTe7X7Mt^n%N24PSg5liDRc-Rdg$ zzZh+kS7zRP{^dWNo^si4D5jJ@{r}z8pPpa*{izk_^tGAUKbw2~YgaUXZMXj0*PbIU zUjEi|SAPFR*;g(veRX+k?$zIV{r~+df(7I|7Y$0@3tTq zf+oQDXK?>s2Ezb`AB-=8@jrtBoPL1Z13_gl@?gw@aRZF);c(ah^E+U;!PkET=7->Y ze+FjIrWyVK%z7}uS{br}`47PSHkjW414ssd$pC`9V0;IRXTZlk1G5Fp?}7OnV3vdN zYw+*4!1zNjesf!DFu=S2pZoAvV7?9B_!n?nW8mKtV2HunKLxWHj62}{(_sEb zR^K-ZswKb0D8pC2_pN}WkG|6S*0Wzs{GRaV`ujhf68di#_Wyu6MS1JFv8v_Uu|n+5 z*zGSpbOc)ez4EZa4gCM&_Dn!M6YzA)ItER*fA=r`tRrZD=d!c;eg=b7=6c|#j(1-z ztZk|n_1<~$+FNst8!|S>Cu3>UX}9ElVR`bdQAO>P45&@;WN}KMp8r!U-dPw*v;+6)s+&}?;Z_|j{Wtq{O*hr z0uqyOtS@a{5VS-7y>515ntZ#`p5tUq#qe&>^|mE&JW zIIWNSl^iO+K@Rp6YWBes_4_NP(0khg)Ft)riNcCrW5vU0U`h%CA5Q zYv35{t_`!FA%S0WWc&IxtK#y##dCT7*)d0n9q(38e3rpFpaq0-o5)d0(>r^vd%oo| z8`mxSMZc-CTAkc_*p$vN^-umv=d^a7-u7PY$8+-Kn&nTg(eI}4ZuOQAc}J=oUlL2! z+Je{T9*H~ZFBA$$ph||T-FPeUb+Zh6r=kAl{U(&&#)!Wx5oa5zuQ8q#x!)K%9euje zLeX$wdty{gI?tRNutMEWU%*V#U&~sJdD5$HZY#PIbPT7&!#}d162GGf)(VM1+$aRj z+f8LHnxQK8m!raaw>mk;XgzZxF6FY8`P$V|RCqPept4Q%&{xq*HH6K_2Uoj`Tr^NnAB+hci*MI*FT9Uk%QxR>pVAm*7qMZZ0zTC@30u#M*hfL z)bEV`r2YV#9*G~Eo;G*h>7t)+esbTo`;VG`I(~AI_1LoHttF;-;b`UP<)TX(Es4sl z41NgA>{=P&ZmT|;4pB4og%3YjH{5I=-vtk#rg{GH$ZJ$M+0qI#r6+R1&3sYp zn0iBUyknhw@pvrcyT&C#f$~ytzjgtR(%kEyCp$Tc$g!-ylSm%uzqQwicJYeU`vuV% zu_gKmPnvh+0^E>m^BCHzor-LH0Q$}Aa(b0(0C5VW7wtVrUP#N#k90afl4a$ZOt}k< z%I8#QLX}%0S>mTb$lb?R9&siHqAAS`S26W7Q@BG(0{lTbM`Qn`sOjLe^#e=3d z#{QksnxYI3PoeR_FE0ExxO^A>3jg?bzlXGYf;9bFxjOHf{k!}kudK&?1EK8);1g!B zy6c%m^Xn^M!~d1o4?!&F*z{Z?5o#q>oAZkaDsWyaeii$|8>3Ot%$}9W*N<0(t~oF9 zuPX}r%ROI>&VohT=}C=VVtn=FLTJXmbn)V+G1Ty{hr_{llPMeb+5<`Z{MSaVoVlP< zg3Y`q^ywF$h3JCPD{nnrx37LA?~WFP^{LW2JLx1o5?N12pI^TbdFG0Cyb55o8*BgF zes5|BNH8a=#~*5kuH@{`a1`b2d# zAl^;bN>Btqug+w4dt)3)5hiuFCe;aR*gd8PyXcTPGFr=^uP?nZEPU682ATSs?EfiSG?@l>r**A*VXog) z*{ey#4@}$N?O?ZN9FEpk_qg-z%BSB^PxPxl`*+pTm#0!a*m$s2>F84{jGiyg7KN*W z`E=$Yd%8!$)As+`URsRo{-L5_UmxTS;dHp7?e>?ztr_TJZx7MLY7lAqtOV?FDI#(C$pRC~MncU#@u2p?tYlQI4cQWI@>P?iV zO`<23?|we|%ZKE%|LI&A;DA}l56=YC_XH~4INrPC`116^-_^cXNLUUot&rOXfAh`S zF@3D&eXcmaR6si`Mm=s;{skpE`H@9AuJmR;f3}(bKZ2Wa(fXw=2`MgawSVa!%X~y_ z%=3)hK>bYR{1_h;XTGy_dOXEl3FvLl!~BSSWcq*L&F{AcsZexq?e!XH$|5*QjH*P9 z@y+ed$he z70x(Tjr9xW`I}7S9zdY}<@?+h6Z~RkS(jtjcGj>bomn&K`AisiluYRC-IqG^W0PsQ zJ$f11owG>HBRi!8&E97BimDE@cCNRlsnDpYa@d=e7Wm-pPzk!q<#ecSg59AO`#=8W z-CWlqMy5wgWZH0_siqQ$>uWFH&VB0q@wnub+0*ZRT6`uf z*`u`SjssIKb#o`K%kGh`QkL|2?#4TbuMd9~|8|<&)V?h*+g0ynKCwWQrE%fePfv2c zC8H8-p!AD*^YMQid58*6PsgKEQhE3*GNNFr_BMp0T}ZDw*hsw$mN15wu$-m)3bCKt zB)LQptNgvc+->)Rk^p|Y~!}VeGKj8E8&6z%Q2GL@+ zEK(H;Pi&oV41IZ*RAx9<5Z!)m9{qS&o2~!wV#rq4?&4uTY~e=+zJ}U?8koc;10s`>VelKr((zP>R{OR7-?CYpX;lOyO!bEk`O81%@gfOX!2!=} zQe!O`J8oG1rjdW}0hesojq$O>LuK{DonSGsWKLSM%1+Kw-829B z34h%9hX>F~ajp4rQwR_w&V%I-9fgNqD`XR;mA#vit&vV?qxOlj=`?lJFmuTMZ?;{n zF~X!qu*1KTvOhof?9AFZi7jyJ6Qz49l9}XJnd74w=+&e9BK4cyt8)W&%&}Y%wEJpz z)S}Fv7ws8*meH@5Ex-3r2(J?wDbSGdMw>h+GDcBgK{>!9tKbnt&E7eu6R%<1TT6SMk5PF|eE1AQK)>sYa{%5?N?JV`Mr@+(^u2 z_&nBX8*&OKOjw-XNaNW-JXz+|BJD88i7?gLbM472*+Qft>S}9hRA!uV9c7{qZc6x5 z_AGT=GE|tG@QgW7px-8M(WsA_*yUEV1<6J_*C&7a@U9)W84AgtA|a&wXX5-Yv zvO`F zK;1Ibd_s!bF^CnHkm;Co66~bMk>bfEM$8n%>gvY4O5#yY;_9ER-Xh_V={r;Rk7jRD zCO>x6d9D~*E3m8NYNJ#$ZA^C3CTVqQRg@2$bw9MYHgXHIp?wjHTi-)xdLZw5$kZr)VvAUML-Cte7lb(WN<)WD)8?2<6l}_YmV0oJEAjev^yQEgG67!6~{I&(ixMc0i?3=lLB$1n(cw# z_BiLsHx4^>rjiHP=IW{I{tg*3Ye1PK>&~krgb{ITk;USUWGAQf-Y3!T0^vgs}4PMK_@UdSPQtA$JE+V zG9MHq_W*0HGkI3-587?+_SM;oI&e1FZNv6#d`t?B4?7=o=pNB<*_)C&fo##Vr&EQp z51D}s9IPNE9ZRoX6u*ayEIm%e5W}N^O(ecBW>EDyr8ASLgI623bG7e<4ZSep+L|}q z_W$`IvXPJ`{Oj|w#k4Vu_?RxCfHq1qr@QxG8B_mN;rk~>T}&ytbsBi`eYy0^#txBu za(+z{c1HE3BLh#QRkU^N?|<04VV&i-Vx}UwaHp*;|I0z{-rIui<-=q;evS8s6)T#b z^IM_MB>N}+ANqV^xzzT7dEXl()wy9pt}5=GaB4+w5VDlr$;k>=ZC+oyT`pAs_?LBk33p1R@1KRpx?v_qO;xdKx*4PRnp_lyr^l?5s@ETgolsgM&j7#`0I~T zg2^j|@G!Lz&)loqRvz6G-n&NWF zbxAchjfNaUdMfc;%^ZKA&bH3*_@1++j%gH{i=A(=v^~p<&YdPjNnC6G^w?Dwq>kyz z_f=yC9Xhe~uwyelV`AJpc;J8+i%m`}E-JlJ$glV)RkUOu? zAIl}STDqTJl@%(j;%oUXP91kX9P+YKox^fRVzpnEoX+NEnTqo>>}Vhvl8sr@Vn8_e z>zVMiXp!t4S@S@DAW%5s*1=vXblF?K&9Zi@K3Aj+x6(OtB%amBvzNiCBQiL-NV7PC zM`ZjdL*c7qZo6m=euLqMmc^`A6sQ1~ZQNItoXOggqrtNak`xg<6RDn#%++KU!yv7z z3j>0*QaN!)_ci8xI}TMv0cUJ zS~oxIZPki#@n#k(4usxpSe4wn*T!nTrv-Z@$L%Vs)>)3NOVx5hA%dV{k6Ncjw=$T{ zQo?$&T@S2mUC8?L9~A;H7PblD+k#~(4!5HM4+>2`5SS5oNjNvgv!smdsTRpZt8o@mq+>aERO$?7ZM=sAQB z!7>L|7pI57Xh?<#4dC@egY^ps?u)5hd74|c3i=8NOoJaAB2!}qfy5pyV>zX~d3l13wK=gD*O`W{!i+Vgv9YwHqQ)DB)TSPyEBpl+ z^b}*B6L@LWTvT(z(^R8xC`7N{1J=JG^kGxsI;-E~?VjDkPw!=2Tb0GX?(lz%oz!aA z!-3ANo<=g-_hGnHl%|(1qmX<98tbT{UnIZ$uH9%;dSAq4N?$WpIBiHkd|5_qh3&5$6Wurkxy6#%NW*AU4w$E7Rlp{K0-u*!D@R)_cQ@VKAv=VQs`&g0OL zyF^qoAwLt2ph>I}4n*UQKJS-wBUi&pu)8l44%|BZ1K74ujEIiCvJ2GhgSlX?vze@9 zYELbP>Ee3oR*ED*&L!A6uLNl8(CMxvR_Yu*{IY{UA1w<(A9rk%jY{Q)V=+4a6}#*S zXe2TfF;S~o^H9Rm5veK-B4wWO*2sk9u(m6lo4zZ>Khv?q3G5x~L#xDGTBR8WC?J-b zSBlp|tyo$Y>8ow6xU_PsDc5%@eSthu%Hr3_-VERJcV|*C_KSfS8xP$nk~VlCFEfvY zDR5#BxIDO}fvYldaAue3U%0*7!;YGrXre!ho;dfST#d&H>{a~GCGNV!nXV!;8x_h} zK18QD<3_f3MXuKGk#xCVPgL8)$6-(XsAx9zhFqyx&pfFLbUUBckFxcnsOaOaV!Jy+ z$pO!}kNPImrt1Rn>>O8YE?f>I?Zf(Kd6ax>p9^5FtKjs~b|jiY54skIEIR5?lr#Dr zDi;lp-!vbCm}Rtl2qiG`{)jn<3{X%6h}y&oQTD-%dC_VTGx+z%t09wq#P1bnJwu}d zsHhFc`AejJ$AiA3;OCAMzCJVqlUk2t^8N3O$g+Ilk{_%9Ko0gGiagI<6}!wLB_TRG z-h5nswy0V8>M@ty*r-GM=;HOuY|1Do_Lj`vQxb2>4}jEEGK5YAhNiAD-hA7j366}^W1;aP zzX-P|Lt2s68o964jpYX&WMJdtt5U1aYd=&55~23O?Cz;JRoi|1{L{~JQmgpsczKvJ zQeBs{Z#|z};JV;Rqr)Nw)j`#&J`p6h_Jm8K(3q1tCzBn7IY&JZ^{>p{Y)UKfV)J0c z1p(qJ_4+RaTi(jM^g#Tgr`SE{s_nxj^;5$U+twKri3hDIOD^LwFLm*Zz2rKUA9)B=Z>tcwr${zz}DJhvisBto|(+_tPj9l~V9*yml3 zD$>UNx_rl`neUD(7rrrW8>K3LD9FSg(+XtR z+xd+AW-n4NZ#nMPo}!QCR(-GRcq_)NzclZwjmDh;GcJY!n{B-?S!h^wEzcZ$=@nx! z`WTU)PmRCn`1qT8eVpxGe6gh+?J&Wexx;H`$y3X7inC|D(C5u=Uo10BY~r)dHztYz z7>Nm~iPE*!gv#uZ?dggEH@X^pK&ve|2A~nLxZ&%C~DE?Z){*YNTAdiD8c(xYLy`M@Mls9J4BCKy>JD$0UBQGU?SHx4}o z)13m5tyslGBv~1ux$1%zzux-0+z(hy>oM~HK3xplyZ%_SZE$>pSby67&uYWy#u57$ zvo{af$I`TU>HCU8YS~up zr@5hUfwfbg?VWpvy!1+#pUmc5+A9fEHS^$s@(lHKbNK1w01%XXusgvGMWe-Cnt8nW z%F*D%r9R(XOekMk?*>JA!-KT8^oz@a^?$<>>8X-cLq@MG-u)jz67Rd5`T!gZBZr zhGr&AHtCOH(Pn3%(DdP-Kwp{T4-JOB&-M+`<{U4xG2-P@zy9{y9ASAXed@({B479SJxGmUKLFW08HcG-2OMZh5h-l?(ElE=!h|S-P2!v(d%)| zKA8W;@#-2KDj&LoXH|P!QrBg9<>5=7>msc#H~!3_O4xD#=!{GK+{tgfEbhN2FDv&y zgFN59{IslXPmaBszQ=)=@oY;ZCzWQk2=K;-1_}m^1cJ&l;;2$U#vHuZy3o5Tosh!-4#(4wj7RxY)TO*uKl_&-=)o3D+^L@hV=Q=F~ zpXi+w?)5lJyVodiz7KTb3nQv^q#s-mbrc2Wv|2-JdF#I_Jk~t8BrusZq~uvn)2bM* z&n`oa5fOIB%J+piS^GxCIps+&d`&xJ4L0S^j$V05=2TxZKHq(8s~0&-_03MRaOTTP z`&?eF9ijU#At~<+f=qe37`q%ciwYyxx!3Ii!O&CC2~nX)%x#**Qr!S@6aH%h?d2Qw z0}sFP-UAWi9fiktHm{q+-iak%5qK}6lQ!M85?u)?^MqhQrhVqIu-!G%iy$6jly_&$ zjaK;ag#*vM>>B&KbN@ss=6XXaA*0K!FDau7)CXs&!rfJ${8~vV9cjNqpY1(InLt*- zr#{Zv6)%r^P z-elQLV%L~2XXSUcW?q*l;K#SK37~yM^@iLTR#NyACAS%s{Bwa{LI3IJcSj(0zZLYd zr<1`ok;ymh)k{YQPy1C@H@{Uqy00LG8?eqPhy?HD*a^1sW=+t8I@fL<@5R|Oe7fYm z|JS$gOZL057an#ig5-c!K&4$^P7(+)M zW?;<_=x{Jueg0|X=zh|y#w7uBy9YrR2TEg2CtqoRRI)~F&dhP7#Nlx&H{JcS8x@{o0N2;Q!rac^ph z>mQ~`A~r8R*(UJND}fVE9zQ$NDPA{Q4ZpMLlP75@XI5-4OiqDB6XThCY|M>2D` z}m@~Jz z_ur5AAY~37B)?EAq)zguv_L;=w;<*ZI7}9O`9HYm0&q%f0Da{5rN`20=~i@d%$_v6 z%FSMrR?>l>O30lsU(M7`j(bjA8eVS+>j%HU-W3*v3cR(gTi~a%xv8U9jF`2aMu+O3 ztQ=hdbr#pUn1kd++SwrhV03EGpku61}Y%u4?8aNxHdzE@e6+X`1Qin`zNt9nS3NVzg`da*H z;joOC_dD$3g^Em$o0^?^I|%Cgs2I%{_CbR7Qlf4$VQp5)Y?6wOAw|gsk__PIpQ)*{ zv;A46e3fmqN9e9DkG1!J?rG7GE>_Z|aengZ!D#O6#L48SNG2FI6n{(2NKUJ^2kwkU ztzjL%y5_Uo@)BDRFVmH#mzKA~%E)5_2U#S8+D&_hb!SC4OB0TtkKxJ9R zi)Xi|J#;$6){c!APajd`)x9d~ZX{=RG+hjAl2em%{Gu}YqT<$-;s;{@+@okM&DlVo zHP(GxTCfR@m)|)7YjVN<_`^5(Y5&ZlgdVEB*F7tndVl|;W;ng{B=G960LY-8Y`cEeRnw9I`#HTbF=v%OyIJs&l|E)R**uuxSE~P21ij#CfjaD)FEtwO(#SG} zTiS@@=MS&-=czeTuc%ObkQp=t9wBHg+DOvU)wOt|XG|$@4L~B7(?M=*XqRmm+-bT% zy5%KQO|U4{k7X;Un2;HZeyEg1bi5x=wuHx`c&ks_*k;q!+vCjBdWYM_TJQvXR2Va+ z;dX!MS}$FbrLj~>+xSUa-+#2+!;8QWx^DL-2D*z6lfQ(I1`kg90%W_2ZhVq79jQy_ zCX{RbZX?=z$}3PjvU7gQe^RMMJGJej9m(Z@4Sy1^_C<}STgPxx8_cQ`w(KLQ;`x4i z-8V)A!5x-6R};i9drt=f-BFc*a~sp%L*Y}{PcD6-j`Cu&G{mzeGrn^-q({MJuR4Y3> zf!Ya;!RhEnfwel+SpZH2B-G1~%gI66%vEe_Qf&jIz46f^5L4q7e@S#JhL_;jsOHy% zgpp%`ZVf5LsmQ1Vwv^fo_(n}@64t9D0_MF;t8m_2v?GFA5bPpOc=kVZ!IdZ&uv6xo81z2x!KT1-w}Vuvo!k%^xrE>pC$_fIXb_NX_ptC=@0r zA#N3!T1Svk`HBE>udH^;X+aCCd1#I?c3YgGqV20hFJSTGf$w%zKtNZmq3x`sc1R?s z`;!mOgopwuu#JD%|<|E3HbT<9?$=pOv??WgR;J@rKuNmQ$jKxkuAt}fm}_A>8-EIe`lGoeWZ zUIE`~N>f+RknqNiw12%m(%>J(E`)y=T>i=(>KYYZ%{#JrZ{vcA_%Bo#zWDUs$CaAW zt`<#wf?b(CzEKN{cQy`7ruAE7+J-m#?`N4$^L~ZaLmt2%e75tebx*09`BBwZ_PO3| zmEJR{BRl?|)YgQ?&+qt=g4!m`j;=_*Lr1Nmb9QtaYcJ~unn@FChsGkl`0~rEr;;1fqO+xe z%5^n^#$-~ZC&3U*SYK{-HF~r%Z;fcwhgSYuB0p64%`yLIkluIAb>`bw;&R~Qaa7f& zFFbRZJ~Mhv6`pjyF{~4kD_OO*CpC+z;%+bh``>D^N79N>*{|*URhBL+;;mxY)k#P2 z051&qy+VoQV zNQ{~avUxqMNMxjwfOy~0j5d@@?#UwA@4&Yn&gl=TYXF6z{qy9S1Xk8xE7)iS&qb(ROc`N8D&v?Emu*Wdy@N->d+!5*Kp0@-C%^^X=Xvk@y7)-CE{0(2 zn!7CWa31_Z1U{nz=IR#MdUc6y$E}PW_3IUYR#G&JumKmd``sWv|62BGahCA+@XoEh_|c1V z70DoR;e77qk=b2XxHMBu+}#x<@mwcDinuodXBut6xtFvhW4`#(+?T!dJsi}VPU9=> z90Z^A8nuX?9ryH|7F{6A5Wa`E0_qQ@+bMg4&+uH7j%5y*k_o%dC;*7W36>16UQ^Fg z&B842*F|o0qfE9T&2kVOo5)+HcZz$f;}x5VelEYk{5upX6MW_$Vo!YXa1)o^1M$1{ zQB!ua*j!_`FunW-vL713ShR$CG3JsiqrKKT*k*G-O2YQh@z=OL6$OqUg+qv&F6fK2 zE!Tf`g)@aSQKI;M1QUv~*&VuPCg!}^Rn%yi@1-~35KpbWl7 z58=NTEt>iRsj{Kk$(Izu@1R48N%!RPFv1h5r>KPsaJlQPod}xce~S#RAOtIQ-1lRPE< z0GOAVH`z1ZyCSeMQ{+{;=Pz~{->Or=BeL@JF)dFpDb4V}0@yeV>#y{q^osJP z>~Fi$QMr5m7<%d4t8FE5gNs84o|AqlIX0ud^|hU)tVLGa{@^K-pN$&7=$T4{j4rw4 z1Xqa`KJVyg%#7q2mvR1Bh>H-e48M}vx_7U(6gjxGuw#A2RD(`L0+HsU$4;+Z!!q;) zjbFF`Rd0fOr+mh>`;E1cj~QIhb6rPb_=c>R-|%x;;{F!%%W!CaadMl4Xvmj1Nc?ael^u3Yvx4tIA1XR?Gyeoy&@DDv74hdY0Yl=AP7DY=+Qo>o$`Y zcT?v7T~)x8nVY#WESJB16#fJM>Rd-SZJ3~3)TuoPrS(;Uf9!2OkvYEn?3pRKQ>-2w zi+1ZzYiypo=xp%U^FWz|xRIRhD7Bx4o}IMw=B-H8HR@oz(f=Ia=L)5zZI{6drYdx% z{t(S_e1`YPhc=#gkWOBVGA`w@YRt?k)UFj|=TS#n25(T zO^UzJCb<%;OpzsSyHwdWodHlxRmZ1QHR^rtSCGT|PwCc{e{O_~MM|XnIgiV#*aVKDR{t9lr@hqNv$=8PdEs{r({E3C z1Lpf_%F~swOYAjI5G84dWq~UicdNWv(!63waj$FvH4*l8V9#u!6o%=SexTjPqq>R{X*?s8}F-}Uw5Ye zg)i3vo86scunr1UDe;I_KVcgXD9~Yc2V5Q)OQcFq8 zRc)=KxXO+TN4u2TzzZ*6osN~!AJ^$?aJihPuSP3)H^&mg!Zct0{j`u63yglZlWIB8 z+*zG=yDQQKd>{u^?&O zBvsmt^c2q}nXfR9S-H!qKF$6goEN4w>maNmx;e*SvdJD*BKyac%OlozaxIB+P+&lI z)^{^MR;{D}jFT}AHO6s4c@EaZ68M~9`|oY08tQxs`QI?J0Zcg-nZNe_uO@rFW4AD64V*9XkkjvZ6AReR}hSCSdi^@b-;b9Omz+P_t6eIz31 zGRg%P^CrgnUDsM|#hF(u(&F6O^ybllHtOH){apM76Z*Q)@s3g6(#F%kR%|N&o1^;c zAL5)2XM8q=v|r<_li8a=$=-K5M+fnh@;_N^tX?rL-38m6n84EIYD!l;T#;L0e>x;lm_$-zzcV+!F(wCj=Hk8Hgj8Nv_UoKG_ zsxVhC=!&#NAForxIcYAY=+VwiY0}Yy&zZ%NI&aRM4=lZBjj^^ZM!ZufoZEsNTjy?! zgyTQP(wl|BK2^?;Z#BCgKzvhYd#V~sy8oMJB(#>x_~JjvX`V0jVNvH*ep{)6Nlz>Q zu-fzHKuYm&Tn}u9-(yHp1WQzLKcne(y7T_I5?(viQ#@OqvHDAKAPk4~jm`-Qku7nR zpS>h^H-gpYa)|NUHI=?{nnAZm@smfsk*uJR{b1ue@l!NUnZ&8qpyTzqS$50p`&0g`pE#gLh{xsL(c(rX(Y~@=IAuw@9lE>U%u+j_ zGAnjYjcoB6;09b5|8QJ7VC&{B$iE$tC z*v0TR2ytL&sBv*P8w zuk=F-LRVb$235!8LlvzkpSs+Z@cNlWRrL4^w*YCG*veg4s>^YSA$cE#l{9KIE1Sp> zTocHzz1T1>|F9kx)&$p?M(huudp7`w3gT=Zn91hdQx4o0@GuwgdC&lAGSSc47$&w(( zMTx!=mxNb!Z=a9fJ8~xM2jxUu7OQ>)KWG2x9~r>!&JczAubxbN-c;W_6et!-*aOHC z6x?0u3vLmSGx7N+>C@Uo+CC!R&HoJG#h>pyGKv1n2Z^V>-$Y}~`q#VM*nBJBPv9FVO|^**34wu;ytQnn0>G@$*KB(ZmWV+1kVdDzzrG7%;W8#E&qwlHoD* zUY~A!#MAXb#io?13j*nuurZ)b^(YPf)VfC5)>)AtuS~OC*=!2pDd?jS#pB3r&-6Ey ztk*`o)9YpB)+ai7`8z-2968i8U#_@r3k0l8UD0Dqb{+pK>na~9{N2pT)TKSn!X$ZP zSi@&?mAsi7s{FMZ<3b~*`VOQRYx2a&3D)jlHvQHoS8%fi7JAqNOMb~AdguRE7iCs$ zvn%KB4_}s5dsC_hvh;oR0~c_y*rqdYl??~|B%J+8EuHyxO5&LCG|jA3DColhVZA+n zRGBycOKjiruvw0`i?`Ae|2LdA#haX@eju=e;pi!a4*k-13d`!}T~ZX~gNf(unCws+Lp|Gc9HN9*6zDPw^7aPmZQ8QIazX>*sg>t}&jVuK4tzaGMlzEf6F z7v0Tm*0iBx^L=>X4d~F%AF;#P6Y{y?ul>z`cRb%Klz;N>+*{cdu>DR(@lQ`_;v-Qg zhEGpwkN^FK8|NH#b{ws2m6ZJC7-@Ljtf1**lIsq7Peu6Tni?nt?-uC?0bLweV|fT;NrDNi|2$s8Rx9c7w0Cfu`U=_u1;rQa=@ zwGzy<_QWdU2;xRi(wF8?>X$Tib1=Ok5w zkl}BszF*QJ2^cO~$$%jTe$A8GpPn`3|$rN^E zlbtv&CtAtJ9!(_~S*lq3+a~+d>i&P0|Kn%OkBG4A*vC}O8e^q+k{Bwy@O?a1?mINy zZASg~wH8zRYc%M3S;C*w;!b(-Gz|glZkS9=Y$QEv;k&Y}Z$}P8BNQk1Rr5O1VXiDD zdsbd&drsfd{{3gnbG0att?LFRRlA9Bo64eRc&g~Eh(_qrsdvbcBCC){B&ShTldXYm zE^XOY_G&sThrlny(9@veSPK_r{ z$0Jm3TFNdTYf8AXCEkKtT)51WpVb|`4gG7bSEr0(s8yZte4HEN2--YEX=d^mbpXFvt>7PrxZ2C+sJz`lYerJuZK%SP)KXg+c9##df(Da(5c{(x$5Y68M$E zEO{}jJEAvc`YMi(ASY+CQwKA~!1{TRk99tqmi`f3HL83xv%^SmRg%fX1k4cWc#92u z05q)BKr7%G%ZgeaXpWVi__?&Kw;RJYd#+`jJs}l}w^a|hbh_5w=6wE@F zuc3;wQ89$>@>6PB#$_sPkZR#z8qi!eb+KVKXH|3T9!&}gNKEnHF|6E9;#P+QC07ga zk)JpC?+~`PIX!K4XoEtxSj$QyoMgSs4l@DMB`eln#VCf1{W^N7E}!GH#x2Vbl5g#N z1LnJwA;5~|^HQm0LOE!1Gs6-e=Jr=LSyV?|TZS@S4n^h(p2jS{Pb9Al(j^UVkw}ONfEEyDe|Nawof%4^qh|$w3@hZ2K1uK^ zA1Mm9@#rSMFK9&eLckZJDbx2{B@$a6mkF3ki93g0qsh38m*3IJ6*3n@3RBiDS4eHS zrEEC186S{)7jb!EQGLS5g_l|UKJQ9tn3YF^Z(AU9&+^W}5Jn?3C-$3Vuu|7UaVaH3 zAYo1Qz|L5ETgTx`XdG^x%8L@b5v}Bu(AL4|a?LwgniyuJN=O#UFQ++a4Xd2$`}c}* zZQ84SpH-Z-Vw&h-oD#i2%1XeD?EcbD>AzkC`bwwisUv2JPDL(Z#Klta6)sb~+6bQ<1pl3{ zYxi4^^U4oQ;~9|~Px*LE z&sH#Cw%+fRi?*Hd_HysXx%6tb)%oU-?bdCxPJZ`m#(Cz!7rVl!4}O@?HCOmBJ%Cd& zE?X*RN)qigt}Zk%jslQwKVt8}H_v`mUS0hoh>c>j&*?zrC0H;#dle+3@h-@i|^Ll_W zNrgL?D24ibB=D-ZwKPr`p_-pBG(vc-UHk%OhEfrW5iuK}F|WHQ3y(Ai9QV34$?;-F z-;0fO8uF|@Q4r|tSsqdqfNkkfQ4mxCFT+&*x=t5!a74q!`=?>*J$GuF%k(984s`k# zmM_~X@`=FtRF0t#s}s5;D^>#+fwymn`An{hzN60EBpb^Lt;786tx1b}XIId;NX}2= zQgCCG=a7k~)KuQ9CENq;v~8_8Wbere@llDj%Z7v{JIQR!g!&7{#dufbVyt(qZNYRw zK0YyTuc#P@?Kd|Y7RBv;Y$_=LJJ|USn^914D}$An7MzohnT4<(zlDPwp_bn+0^tgY z*~X*O^{%1&Q&)FS?3OE(ha($}D+gdI%{sDnB(7Tm#ejrOP7s~62R zTWh@78iGF64NFN?E|R<1ZLL+uxrSkWBHEBPw=iz0*bUXowTi0noP}~BVMLM{pQ3jm zPasY_Tjow%i2Ggk44yCNe4<>8X37A4HvpA!TNUSIhYH2aiL~w#&@5A*V6xf$2AfnR zG<`pZp9!9})49|_S(aKfuBAFb3`bKDDMt!|+@3@iHa9CTO8D$Zko)R6C{?leuu+ZV zeFm~{?h2@Q`@o!O*qg|HRO(E?$Q9v=c?7-bXGdsDGt!b=jAJp5pfKJw7|?4+C0kFM z6QP{OF=*?T#mWxK60#7DhzM3K3I&Eho~pX1m!E?MJ7%W&*CnZ1iiW}133fsE;gV5_ zfgQe$?Z6Q1}Y%yN30b)Y#%7TO>#79WYCC)r?s?A z0IiZkwaq8=M7nI`W~Y%v{8@mn2|$*n652<}=+cp^9DHxk-)^(F{aii|*z5&AsVLy` z&9QxIVbE0?;&&kmHxBB>x_*XHwA)1tLtFem$>>1UIf+9m!#y{ppZjQ%3$-s9)yY-$ z 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 RQudbv5 literal 0 HcmV?d00001 diff --git a/sd-card/config/dig-cont_0710_s3_q.tflite b/sd-card/config/dig-cont_0710_s3_q.tflite new file mode 100644 index 0000000000000000000000000000000000000000..e4e76b7abd9f9ee81e5e730de3e5f35e4cb09c08 GIT binary patch literal 323392 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 GIQ}y<}zKrKaQal61N^F+86=8Jv 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 literal 0 HcmV?d00001 diff --git a/sd-card/html/edit_alignment.html b/sd-card/html/edit_alignment.html index 944803c7e..0ba6b3876 100644 --- a/sd-card/html/edit_alignment.html +++ b/sd-card/html/edit_alignment.html @@ -1,9 +1,10 @@ - + + - Alignment markers - + Alignment markers + + + - + + + + @@ -89,7 +94,7 @@

-

Alignment Markers

+

Alignment Markers

CLICK HERE for usage description. More infos in documentation: Alignment @@ -112,480 +117,544 @@

Alignment Markers


- - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Marker: - - Filename:
x: dx:
y: dy:
Selected Image Area:Resulting Marker:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +
Marker: + + Filename:
x: dx:
y: dy:
Selected Image Area:Resulting Marker:
Reference Image: + +
- - - - - - + + + diff --git a/sd-card/html/edit_analog.html b/sd-card/html/edit_analog.html index 8f7dfcfe3..8b713dbb5 100644 --- a/sd-card/html/edit_analog.html +++ b/sd-card/html/edit_analog.html @@ -1,82 +1,15 @@ - + + Analog ROI - - + - + + + @@ -125,7 +58,6 @@

Analog ROI

- @@ -133,9 +65,11 @@

Analog ROI

+ + + + + + + @@ -199,10 +139,9 @@

Analog ROI


The following settings are only used for easier setup, they are not persisted on the device:
-
+


-
Number Sequence:
ROI:
Multiplier:
(only based on order) @@ -183,14 +120,17 @@

Analog ROI

x: Δx:
y: Δy:
@@ -212,22 +151,24 @@

Analog ROI

+ - - + +
Reference Image: + +
- - - - - + + + + + + @@ -43,9 +47,10 @@

Configuration - "Config.ini" Editor

- - - + + + + + + + + +
+
+
+

Configuration

@@ -252,227 +283,409 @@

Configuration

$TOOLTIP_TakeImage_RawImagesRetention - + - + Wait Before Taking Picture - Seconds + + $TOOLTIP_TakeImage_WaitBeforeTakingPicture + + + + + CamGainceiling + + + - $TOOLTIP_TakeImage_Demo + $TOOLTIP_TakeImage_CamGainceiling + + + + + Image Quality + + + + + $TOOLTIP_TakeImage_CamQuality - + - Wait Before Taking Picture + Brightness - Seconds + - $TOOLTIP_TakeImage_WaitBeforeTakingPicture + $TOOLTIP_TakeImage_CamBrightness - + - Brightness + Contrast - + - $TOOLTIP_TakeImage_Brightness + $TOOLTIP_TakeImage_CamContrast - + - Contrast + Saturation - + - $TOOLTIP_TakeImage_Contrast + $TOOLTIP_TakeImage_CamSaturation - + - Saturation + AutoSharpness - + - $TOOLTIP_TakeImage_Saturation + $TOOLTIP_TakeImage_CamAutoSharpness - + - Sharpness + Sharpness - + - $TOOLTIP_TakeImage_Sharpness + $TOOLTIP_TakeImage_CamSharpness - + - LED Intensity + SpecialEffect - + - $TOOLTIP_TakeImage_LEDIntensity + $TOOLTIP_TakeImage_CamSpecialEffect + + + + + White Balance Mode + + + + + $TOOLTIP_TakeImage_CamWbMode - + - Image Quality + White Balance - + - $TOOLTIP_TakeImage_ImageQuality + $TOOLTIP_TakeImage_CamAwb - + - Image Size + Auto White Balance - + + - $TOOLTIP_TakeImage_ImageSize + $TOOLTIP_TakeImage_CamAwbGain - + - Zoom + Auto-Exposure Control - + + - $TOOLTIP_TakeImage_Zoom + $TOOLTIP_TakeImage_CamAec - + - Zoom Mode + Auto-Exposure Control 2 - + + - $TOOLTIP_TakeImage_ZoomMode + $TOOLTIP_TakeImage_CamAec2 + + + + + Auto Exposure Level + + + + + $TOOLTIP_TakeImage_CamAeLevel + + + + + Auto Exposure Value + + + + + $TOOLTIP_TakeImage_CamAecValue - + + + Auto Gain + + + + + $TOOLTIP_TakeImage_CamAgc + + - Zoom Offset X + Gain Manuall Value - Pixel + - $TOOLTIP_TakeImage_ZoomOffsetX + $TOOLTIP_TakeImage_CamAgcGain - + + + Black Pixel Correction + + + + + $TOOLTIP_TakeImage_CamBpc + + + + + White Pixel Correction + + + + + $TOOLTIP_TakeImage_CamWpc + + - Zoom Offset Y + CamRawGma - Pixel + - $TOOLTIP_TakeImage_ZoomOffsetY + $TOOLTIP_TakeImage_CamRawGma - + + + Lens Correction + + + + + $TOOLTIP_TakeImage_CamLenc + + + + + Mirror Image + + + + + $TOOLTIP_TakeImage_CamHmirror + + + - Grayscale + Flip Image - + + - $TOOLTIP_TakeImage_Grayscale + $TOOLTIP_TakeImage_CamVflip - + - Negative + Downsize - + + - $TOOLTIP_TakeImage_Negative + $TOOLTIP_TakeImage_CamDcw + + + + + Denoise + + + + + $TOOLTIP_TakeImage_CamDenoise - + - Auto-exposure Control 2 + Zoom - + + - $TOOLTIP_TakeImage_Aec2 + $TOOLTIP_TakeImage_CamZoom - + - Auto Exposure Level + Zoom Size - + + + $TOOLTIP_TakeImage_CamZoomSize + + + + + Zoom Offset X + + + Pixel + + $TOOLTIP_TakeImage_CamZoomOffsetX + + + + + Zoom Offset Y - $TOOLTIP_TakeImage_AutoExposureLevel + + Pixel + + $TOOLTIP_TakeImage_CamZoomOffsetY - + + + LED Intensity + + + + + $TOOLTIP_TakeImage_LEDIntensity + + + - Fixed Exposure + - + + - $TOOLTIP_TakeImage_FixedExposure + $TOOLTIP_TakeImage_Demo @@ -480,7 +693,7 @@

Configuration

Alignment

- + Search Field X @@ -491,7 +704,7 @@

Configuration

$TOOLTIP_Alignment_SearchFieldX - + Search Field Y @@ -502,7 +715,7 @@

Configuration

$TOOLTIP_Alignment_SearchFieldY - + @@ -518,39 +731,13 @@

Configuration

$TOOLTIP_Alignment_AlignmentAlgo - - - Flip Image Size - - - - - $TOOLTIP_Alignment_FlipImageSize - - - - - Initial Mirror - - - - - $TOOLTIP_Alignment_InitialMirror - - - + Rotation angle - degree + degree $TOOLTIP_Alignment_InitialRotate @@ -663,13 +850,13 @@

@@ -688,8 +875,8 @@

$TOOLTIP_PostProcessing_CheckDigitIncreaseConsistency @@ -719,12 +906,12 @@

- - + + - - $TOOLTIP_PostProcessing_NUMBER.AnalogDigitalTransitionStart + $TOOLTIP_PostProcessing_NUMBER.AnalogToDigitTransitionStart @@ -782,32 +969,58 @@

+ + + + + + $TOOLTIP_PostProcessing_NUMBER.ChangeRateThreshold + + $TOOLTIP_PostProcessing_NUMBER.ExtendedResolution - + $TOOLTIP_PostProcessing_NUMBER.IgnoreLeadingNaN - - + + @@ -913,8 +1126,8 @@

$TOOLTIP_MQTT_RetainMessages @@ -935,8 +1148,8 @@

$TOOLTIP_MQTT_HomeassistantDiscovery @@ -1135,6 +1348,52 @@

$TOOLTIP_InfluxDBv2_NUMBER.Field + + + +

+ + +

+ + + + + + + + + + + + $TOOLTIP_Webhook_Uri + + + + + + + + + + + $TOOLTIP_Webhook_ApiKey + + + + + + + + + + + $TOOLTIP_Webhook_UploadImg + @@ -1445,6 +1704,8 @@

LED Color - - R - G + + + G - B + + + B - $TOOLTIP_GPIO_LEDColor @@ -1570,15 +1841,15 @@

$TOOLTIP_AutoTimer_AutoStart @@ -1659,8 +1930,8 @@

$TOOLTIP_System_CPUFrequency + + + Tooltip + + + + + + @@ -1788,9 +2071,9 @@

-1) { - if ((NUMBERS[_number] == undefined) || (NUMBERS[_number][_cat] == undefined) || (NUMBERS[_number][_cat][_name] == undefined)) { - return; - } + document.getElementById("Category_MQTT_enabled").checked = category["MQTT"]["enabled"]; + setVisible("MQTTItem", category["MQTT"]["enabled"]); - if (_optional) { - document.getElementById(_cat+"_"+_name+"_enabled").checked = NUMBERS[_number][_cat][_name]["enabled"]; - for (var j = 1; j <= anzpara; ++j) { - document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !NUMBERS[_number][_cat][_name]["enabled"]; - } - } - - document.getElementById(_cat+"_"+_name+"_text").style.color = "black" - setEnabled(_cat+"_"+_name, true); + document.getElementById("Category_GPIO_enabled").checked = category["GPIO"]["enabled"]; + setVisible("GPIO_item", category["GPIO"]["enabled"]); - for (var j = 1; j <= anzpara; ++j) { - let element = document.getElementById(_cat+"_"+_name+"_value"+j); - if (element.tagName.toLowerCase() == "select") { - var textToFind = NUMBERS[_number][_cat][_name]["value"+j]; - if (textToFind == undefined) { - continue; - } + document.getElementById("Category_InfluxDB_enabled").checked = category["InfluxDB"]["enabled"]; + setVisible("InfluxDBv1Item", category["InfluxDB"]["enabled"]); - _isFound = false; - element.selectedIndex = -1; - for (var i = 0; i < element.options.length; i++) { - if (element.options[i].value.toLowerCase() === textToFind.toLowerCase()) { - element.selectedIndex = i; - _isFound = true; - break; - } - } - if (!_isFound) { - _zw_txt = "In the selected field the value '" + textToFind + "' in the parameter '"; - _zw_txt = _zw_txt + _cat + "' in the field '" + _name + "' is invalid. PLEASE CHECK BEFORE SAVING!"; - firework.launch(_zw_txt, 'warning', 10000); - } - } - else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { - element.checked = NUMBERS[_number][_cat][_name]["value"+j] == "true"; - } - else { - element.value = NUMBERS[_number][_cat][_name]["value"+j]; - } - } - } - else { - if (_optional) { - document.getElementById(_cat+"_"+_name+"_enabled").checked = _param[_cat][_name]["enabled"]; - for (var j = 1; j <= anzpara; ++j) { - document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_param[_cat][_name]["enabled"]; - } - } - document.getElementById(_cat+"_"+_name+"_text").style.color = "black" - setEnabled(_cat+"_"+_name, true); + document.getElementById("Category_InfluxDBv2_enabled").checked = category["InfluxDBv2"]["enabled"]; + setVisible("InfluxDBv2Item", category["InfluxDBv2"]["enabled"]); - for (var j = 1; j <= anzpara; ++j) { - let element = document.getElementById(_cat+"_"+_name+"_value"+j); - if (element.tagName.toLowerCase() == "select") { - var textToFind = _param[_cat][_name]["value"+j]; - if (textToFind == undefined) { - continue; - } - - _isFound = false; - element.selectedIndex = -1; - for (var i = 0; i < element.options.length; i++) { - if (element.options[i].value.toLowerCase() === textToFind.toLowerCase()) { - element.selectedIndex = i; - _isFound = true; - break; - } - } - if (!_isFound) { - _zw_txt = "In the selected field the value '" + textToFind + "' in the section '"; - _zw_txt = _zw_txt + _cat + "' in the field '" + _name + "' is invalid. PLEASE CHECK BEFORE SAVING!"; - firework.launch(_zw_txt, 'warning', 10000); - } + document.getElementById("Category_Webhook_enabled").checked = category["Webhook"]["enabled"]; + setVisible("WebhookItem", category["Webhook"]["enabled"]); - } - else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { - element.checked = _param[_cat][_name]["value"+j] == "true"; - } - else { - element.value = _param[_cat][_name]["value"+j]; - } - } - } + WriteParameter(param, category, "TakeImage", "RawImagesLocation", true); + WriteParameter(param, category, "TakeImage", "RawImagesRetention", true); - ///////////////// am Ende, falls Kategorie als gesamtes nicht ausgewählt --> deaktivieren - if (_category[_cat]["enabled"] == false) { - if (_optional) { - document.getElementById(_cat+"_"+_name+"_enabled").disabled = true; - for (var j = 1; j <= anzpara; ++j) { - document.getElementById(_cat+"_"+_name+"_value"+j).disabled = true; - } - } - document.getElementById(_cat+"_"+_name+"_text").style="color: gray;" - setEnabled(_cat+"_"+_name, false); - } + WriteParameter(param, category, "TakeImage", "WaitBeforeTakingPicture", false); + WriteParameter(param, category, "TakeImage", "CamGainceiling", false); + WriteParameter(param, category, "TakeImage", "CamQuality", false); + WriteParameter(param, category, "TakeImage", "CamBrightness", false); + WriteParameter(param, category, "TakeImage", "CamContrast", false); + WriteParameter(param, category, "TakeImage", "CamSaturation", false); + WriteParameter(param, category, "TakeImage", "CamSharpness", false); + WriteParameter(param, category, "TakeImage", "CamAutoSharpness", false); + WriteParameter(param, category, "TakeImage", "CamSpecialEffect", false); + WriteParameter(param, category, "TakeImage", "CamWbMode", false); + WriteParameter(param, category, "TakeImage", "CamAwb", false); + WriteParameter(param, category, "TakeImage", "CamAwbGain", false); + WriteParameter(param, category, "TakeImage", "CamAec", false); + WriteParameter(param, category, "TakeImage", "CamAec2", false); + WriteParameter(param, category, "TakeImage", "CamAeLevel", false); + WriteParameter(param, category, "TakeImage", "CamAecValue", false); + WriteParameter(param, category, "TakeImage", "CamAgc", false); + WriteParameter(param, category, "TakeImage", "CamAgcGain", false); + WriteParameter(param, category, "TakeImage", "CamBpc", false); + WriteParameter(param, category, "TakeImage", "CamWpc", false); + WriteParameter(param, category, "TakeImage", "CamRawGma", false); + WriteParameter(param, category, "TakeImage", "CamLenc", false); + WriteParameter(param, category, "TakeImage", "CamHmirror", false); + WriteParameter(param, category, "TakeImage", "CamVflip", false); + WriteParameter(param, category, "TakeImage", "CamDcw", false); + WriteParameter(param, category, "TakeImage", "CamDenoise", false); + WriteParameter(param, category, "TakeImage", "CamZoom", false); + WriteParameter(param, category, "TakeImage", "CamZoomOffsetX", false); + WriteParameter(param, category, "TakeImage", "CamZoomOffsetY", false); + WriteParameter(param, category, "TakeImage", "CamZoomSize", false); + WriteParameter(param, category, "TakeImage", "LEDIntensity", false); + WriteParameter(param, category, "TakeImage", "Demo", false); + + WriteParameter(param, category, "Alignment", "SearchFieldX", false); + WriteParameter(param, category, "Alignment", "SearchFieldY", false); + WriteParameter(param, category, "Alignment", "AlignmentAlgo", true); + WriteParameter(param, category, "Alignment", "InitialRotate", false); - EnDisableItem(_category[_cat]["enabled"], _param, _category, _cat, _name, _optional, _number); -} + WriteParameter(param, category, "Digits", "CNNGoodThreshold", true); + WriteParameter(param, category, "Digits", "ROIImagesLocation", true); + WriteParameter(param, category, "Digits", "ROIImagesRetention", true); + + WriteParameter(param, category, "Analog", "ROIImagesLocation", true); + WriteParameter(param, category, "Analog", "ROIImagesRetention", true); + + WriteParameter(param, category, "PostProcessing", "PreValueUse", false); + WriteParameter(param, category, "PostProcessing", "PreValueAgeStartup", true); + WriteParameter(param, category, "PostProcessing", "ErrorMessage", false); + WriteParameter(param, category, "PostProcessing", "CheckDigitIncreaseConsistency", false); + WriteParameter(param, category, "MQTT", "Uri", true); + WriteParameter(param, category, "MQTT", "MainTopic", true); + WriteParameter(param, category, "MQTT", "ClientID", true); + WriteParameter(param, category, "MQTT", "user", true); + WriteParameter(param, category, "MQTT", "password", true); + WriteParameter(param, category, "MQTT", "RetainMessages", false); + WriteParameter(param, category, "MQTT", "HomeassistantDiscovery", false); + WriteParameter(param, category, "MQTT", "MeterType", true); + WriteParameter(param, category, "MQTT", "CACert", true); + WriteParameter(param, category, "MQTT", "ClientCert", true); + WriteParameter(param, category, "MQTT", "ClientKey", true); + + WriteParameter(param, category, "InfluxDB", "Uri", true); + WriteParameter(param, category, "InfluxDB", "Database", true); + // WriteParameter(param, category, "InfluxDB", "Measurement", true); + WriteParameter(param, category, "InfluxDB", "user", true); + WriteParameter(param, category, "InfluxDB", "password", true); + // WriteParameter(param, category, "InfluxDB", "Field", true); -function InvertEnableItem(_cat, _param) { - _zw = _cat + "_" + _param + "_enabled"; - _isOn = document.getElementById(_zw).checked; + WriteParameter(param, category, "InfluxDBv2", "Uri", true); + WriteParameter(param, category, "InfluxDBv2", "Bucket", true); + // WriteParameter(param, category, "InfluxDBv2", "Measurement", true); + WriteParameter(param, category, "InfluxDBv2", "Org", true); + WriteParameter(param, category, "InfluxDBv2", "Token", true); + // WriteParameter(param, category, "InfluxDBv2", "Field", true); - _color = "rgb(122, 122, 122)"; - - if (_isOn) { - _color = "black"; - } + WriteParameter(param, category, "Webhook", "Uri", true); + WriteParameter(param, category, "Webhook", "ApiKey", true); + WriteParameter(param, category, "Webhook", "UploadImg", true); - _zw = _cat + "_" + _param + "_text"; - document.getElementById(_zw).disabled = !_isOn; - document.getElementById(_zw).style.color = _color; + WriteParameter(param, category, "GPIO", "IO0", true); + WriteParameter(param, category, "GPIO", "IO1", true); + WriteParameter(param, category, "GPIO", "IO3", true); + WriteParameter(param, category, "GPIO", "IO4", true); + WriteParameter(param, category, "GPIO", "IO12", true); + WriteParameter(param, category, "GPIO", "IO13", true); + WriteParameter(param, category, "GPIO", "LEDType", false); + WriteParameter(param, category, "GPIO", "LEDNumbers", false); + WriteParameter(param, category, "GPIO", "LEDColor", false); - setEnabled(_cat + "_" + _param, _isOn); + WriteParameter(param, category, "AutoTimer", "AutoStart", false); + WriteParameter(param, category, "AutoTimer", "Interval", false); - for (var j = 1; j <= param[_cat][_param]["anzParam"]; ++j) { - document.getElementById(_cat+"_"+_param+"_value"+j).disabled = !_isOn; - document.getElementById(_cat+"_"+_param+"_value"+j).style.color = _color; - } + WriteParameter(param, category, "DataLogging", "DataLogActive", false); + WriteParameter(param, category, "DataLogging", "DataFilesRetention", false); + + WriteParameter(param, category, "Debug", "LogLevel", false); + WriteParameter(param, category, "Debug", "LogfilesRetention", false); + + WriteParameter(param, category, "System", "Tooltip", false); + WriteParameter(param, category, "System", "TimeZone", true); + WriteParameter(param, category, "System", "Hostname", true); + WriteParameter(param, category, "System", "TimeServer", true); + WriteParameter(param, category, "System", "RSSIThreshold", true); + WriteParameter(param, category, "System", "CPUFrequency", true); + + WriteModelFiles(); } +function WriteModelFiles() { + list_tflite = getTFLITEList(); -function setEnabled(className, enabled) { - _color = "rgb(122, 122, 122)"; - if (enabled) { - _color = "black"; + var _indexDig = document.getElementById("Digits_Model_value1"); + var _indexAna = document.getElementById("Analog_Model_value1"); + + while (_indexDig.length) { + _indexDig.remove(0); + } + + while (_indexAna.length) { + _indexAna.remove(0); } - let elements = document.getElementsByClassName(className); - for (i = 0; i < elements.length; i++) { - if (enabled) { - elements[i].classList.remove("disabled"); - } - else { - elements[i].classList.add("disabled"); + for (var i = 0; i < list_tflite.length; ++i) { + var optionDig = document.createElement("option"); + var optionAna = document.createElement("option"); + + var text = list_tflite[i].replace("/config/", ""); + + if (list_tflite[i].includes("/dig")) { // Its a digital file, only show in the digital list box + optionDig.text = text; + optionDig.value = list_tflite[i]; + _indexDig.add(optionDig); } - - let inputs = elements[i].getElementsByTagName("input"); - for (j = 0; j < inputs.length; j++) { - if (inputs[j].id.endsWith("_enabled")) { - continue; - } - - inputs[j].style.color = _color; - if (enabled) { - inputs[j].removeAttribute("disabled"); - } - else { - inputs[j].setAttribute("disabled", "disabled"); - } + else if (list_tflite[i].includes("/ana")) { // Its a digital file, only show in the analog list box + optionAna.text = text; + optionAna.value = list_tflite[i]; + _indexAna.add(optionAna); + } + else { // all other files, show in both list boxes + optionDig.text = text; + optionDig.value = list_tflite[i]; + _indexDig.add(optionDig); + + optionAna.text = text; + optionAna.value = list_tflite[i]; + _indexAna.add(optionAna); } } + + WriteParameter(param, category, "Analog", "Model", false); + WriteParameter(param, category, "Digits", "Model", false); } +function ReadParameterAll() { + category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked; + category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked; + category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked; + category["InfluxDB"]["enabled"] = document.getElementById("Category_InfluxDB_enabled").checked; + category["InfluxDBv2"]["enabled"] = document.getElementById("Category_InfluxDBv2_enabled").checked; + category["Webhook"]["enabled"] = document.getElementById("Category_Webhook_enabled").checked; + category["GPIO"]["enabled"] = document.getElementById("Category_GPIO_enabled").checked; -function setVisible(className, visible) { - let elements = document.getElementsByClassName(className); - for (i = 0; i < elements.length; i++) { - if (visible) { - elements[i].classList.remove("hidden"); - } - else { - elements[i].classList.add("hidden"); - } - } -} + ReadParameter(param, "TakeImage", "RawImagesLocation", true); + ReadParameter(param, "TakeImage", "RawImagesRetention", true); + ReadParameter(param, "TakeImage", "WaitBeforeTakingPicture", false); + ReadParameter(param, "TakeImage", "CamGainceiling", false); + ReadParameter(param, "TakeImage", "CamQuality", false); + ReadParameter(param, "TakeImage", "CamBrightness", false); + ReadParameter(param, "TakeImage", "CamContrast", false); + ReadParameter(param, "TakeImage", "CamSaturation", false); + ReadParameter(param, "TakeImage", "CamSharpness", false); + ReadParameter(param, "TakeImage", "CamAutoSharpness", false); + ReadParameter(param, "TakeImage", "CamSpecialEffect", false); + ReadParameter(param, "TakeImage", "CamWbMode", false); + ReadParameter(param, "TakeImage", "CamAwb", false); + ReadParameter(param, "TakeImage", "CamAwbGain", false); + ReadParameter(param, "TakeImage", "CamAec", false); + ReadParameter(param, "TakeImage", "CamAec2", false); + ReadParameter(param, "TakeImage", "CamAeLevel", false); + ReadParameter(param, "TakeImage", "CamAecValue", false); + ReadParameter(param, "TakeImage", "CamAgc", false); + ReadParameter(param, "TakeImage", "CamAgcGain", false); + ReadParameter(param, "TakeImage", "CamBpc", false); + ReadParameter(param, "TakeImage", "CamWpc", false); + ReadParameter(param, "TakeImage", "CamRawGma", false); + ReadParameter(param, "TakeImage", "CamLenc", false); + ReadParameter(param, "TakeImage", "CamHmirror", false); + ReadParameter(param, "TakeImage", "CamVflip", false); + ReadParameter(param, "TakeImage", "CamDcw", false); + ReadParameter(param, "TakeImage", "CamDenoise", false); + ReadParameter(param, "TakeImage", "CamZoom", false); + ReadParameter(param, "TakeImage", "CamZoomOffsetX", false); + ReadParameter(param, "TakeImage", "CamZoomOffsetY", false); + ReadParameter(param, "TakeImage", "CamZoomSize", false); + ReadParameter(param, "TakeImage", "LEDIntensity", false); + ReadParameter(param, "TakeImage", "Demo", false); + ReadParameter(param, "Alignment", "SearchFieldX", false); + ReadParameter(param, "Alignment", "SearchFieldY", false); + ReadParameter(param, "Alignment", "AlignmentAlgo", true); + ReadParameter(param, "Alignment", "InitialRotate", false); -function EnDisableItem(_status, _param, _category, _cat, _name, _optional, _number = -1) { - _status = _category[_cat]["enabled"]; + ReadParameter(param, "Digits", "Model", false); + ReadParameter(param, "Digits", "CNNGoodThreshold", true); + ReadParameter(param, "Digits", "ROIImagesLocation", true); + ReadParameter(param, "Digits", "ROIImagesRetention", true); - _color = "rgb(122, 122, 122)"; - if (_status) { - _color = "black"; - } + ReadParameter(param, "Analog", "Model", false); + ReadParameter(param, "Analog", "ROIImagesLocation", true); + ReadParameter(param, "Analog", "ROIImagesRetention", true); - if (_optional) { - document.getElementById(_cat+"_"+_name+"_enabled").disabled = !_status; - document.getElementById(_cat+"_"+_name+"_enabled").style.color = _color; - } + ReadParameter(param, "PostProcessing", "PreValueUse", false); + ReadParameter(param, "PostProcessing", "PreValueAgeStartup", true); + ReadParameter(param, "PostProcessing", "ErrorMessage", false); + ReadParameter(param, "PostProcessing", "CheckDigitIncreaseConsistency", false); - if (_number == -1) { - if (!_param[_cat][_name]["enabled"]) { - _status = false; - _color = "rgb(122, 122, 122)"; - } - } - else { - if (!NUMBERS[_number][_cat][_name]["enabled"]) { - _status = false; - _color = "rgb(122, 122, 122)"; - } - } + ReadParameter(param, "MQTT", "Uri", true); + ReadParameter(param, "MQTT", "MainTopic", true); + ReadParameter(param, "MQTT", "ClientID", true); + ReadParameter(param, "MQTT", "user", true); + ReadParameter(param, "MQTT", "password", true); + ReadParameter(param, "MQTT", "RetainMessages", false); + ReadParameter(param, "MQTT", "HomeassistantDiscovery", false); + ReadParameter(param, "MQTT", "MeterType", true); + ReadParameter(param, "MQTT", "CACert", true); + ReadParameter(param, "MQTT", "ClientCert", true); + ReadParameter(param, "MQTT", "ClientKey", true); - document.getElementById(_cat+"_"+_name+"_text").disabled = !_status; - document.getElementById(_cat+"_"+_name+"_text").style.color = _color; + ReadParameter(param, "InfluxDB", "Uri", true); + ReadParameter(param, "InfluxDB", "Database", true); + ReadParameter(param, "InfluxDB", "Measurement", true); + ReadParameter(param, "InfluxDB", "user", true); + ReadParameter(param, "InfluxDB", "password", true); - setEnabled(_cat+"_"+_name, _status); + ReadParameter(param, "InfluxDBv2", "Uri", true); + ReadParameter(param, "InfluxDBv2", "Bucket", true); + ReadParameter(param, "InfluxDBv2", "Measurement", true); + ReadParameter(param, "InfluxDBv2", "Org", true); + ReadParameter(param, "InfluxDBv2", "Token", true); + // ReadParameter(param, "InfluxDB", "Field", true); - for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { - document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_status; - document.getElementById(_cat+"_"+_name+"_value"+j).style.color = _color; - } + ReadParameter(param, "Webhook", "Uri", true); + ReadParameter(param, "Webhook", "ApiKey", true); + ReadParameter(param, "Webhook", "UploadImg", true); + + ReadParameter(param, "GPIO", "IO0", true); + ReadParameter(param, "GPIO", "IO1", true); + ReadParameter(param, "GPIO", "IO3", true); + ReadParameter(param, "GPIO", "IO4", true); + ReadParameter(param, "GPIO", "IO12", true); + ReadParameter(param, "GPIO", "IO13", true); + ReadParameter(param, "GPIO", "LEDType", false); + ReadParameter(param, "GPIO", "LEDNumbers", false); + ReadParameter(param, "GPIO", "LEDColor", false); + + // Folgende Zeilen sind für Abwärtskompatibität < v9.0.0 notwendig (manchmal parameter auskommentiert) + param["GPIO"]["LEDType"]["enabled"] = true; + param["GPIO"]["LEDNumbers"]["enabled"] = true; + param["GPIO"]["LEDColor"]["enabled"] = true; + param["GPIO"]["LEDType"]["found"] = true; + param["GPIO"]["LEDNumbers"]["found"] = true; + param["GPIO"]["LEDColor"]["found"] = true; + + ReadParameter(param, "AutoTimer", "AutoStart", false); + ReadParameter(param, "AutoTimer", "Interval", false); + + ReadParameter(param, "DataLogging", "DataLogActive", false); + ReadParameter(param, "DataLogging", "DataFilesRetention", false); + + ReadParameter(param, "Debug", "LogLevel", false); + ReadParameter(param, "Debug", "LogfilesRetention", false); + + ReadParameter(param, "System", "Tooltip", false); + ReadParameter(param, "System", "TimeZone", true); + ReadParameter(param, "System", "Hostname", true); + ReadParameter(param, "System", "TimeServer", true); + ReadParameter(param, "System", "RSSIThreshold", true); + ReadParameter(param, "System", "CPUFrequency", true); + + var sel = document.getElementById("Numbers_value1"); + UpdateInputIndividual(sel); + + // FormatDecimalValue(param, "PostProcessing", "MaxRateValue"); } +function UpdateAfterCategoryCheck() { + ReadParameterAll(); + category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked; + category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked; + category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked; + category["InfluxDB"]["enabled"] = document.getElementById("Category_InfluxDB_enabled").checked; + category["InfluxDBv2"]["enabled"] = document.getElementById("Category_InfluxDBv2_enabled").checked; + category["GPIO"]["enabled"] = document.getElementById("Category_GPIO_enabled").checked; + category["Webhook"]["enabled"] = document.getElementById("Category_Webhook_enabled").checked; -function ReadParameter(_param, _cat, _name, _optional, _number = -1) { - if (_number > -1) { - if (_cat == "Digits") { - _cat = "digit"; - } - - if (_cat == "Analog") { - _cat = "analog"; - } + UpdateInput(); + var sel = document.getElementById("Numbers_value1"); + UpdateInputIndividual(sel); +} - if ((NUMBERS[_number] == undefined) || (NUMBERS[_number][_cat] == undefined) || (NUMBERS[_number][_cat][_name] == undefined)) { - return; - } +function UpdateExpertModus() { + // var _style = 'display:none;'; + var _style_pur = 'none'; + var _hidden = true; + if (document.getElementById("ExpertModus_enabled").checked) { + // _style = ''; + _style_pur = ''; + _hidden = false; + document.getElementById("Button_Edit_Config_Raw").style.display = ""; + firework.launch("Expert view activated. Please use carefully", 'warning', 5000); + } + else { + document.getElementById("Button_Edit_Config_Raw").style.display = "none"; + } - if (_optional) { - NUMBERS[_number][_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked; - } + const expert = document.querySelectorAll(".expert"); + for (var i = 0; i < expert.length; i++) { + expert[i].style.display = _style_pur; + // document.getElementById(expert[i].id).style = _style; + } - for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { - let element = document.getElementById(_cat+"_"+_name+"_value"+j); - if (element.tagName.toLowerCase() == "select") { - NUMBERS[_number][_cat][_name]["value"+j] = element.selectedIndex > -1 ? element.options[element.selectedIndex].value : ""; - } - else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { - NUMBERS[_number][_cat][_name]["value"+j] = element.checked; - } - else { - if ((NUMBERS[_number][_cat][_name].checkRegExList != null) && (NUMBERS[_number][_cat][_name].checkRegExList[j-1] != null)) { - if (!element.value.match(NUMBERS[_cat][_name].checkRegExList[j-1])) { - element.classList.add("invalid-input"); - } - else { - element.classList.remove("invalid-input"); - } - } - NUMBERS[_number][_cat][_name]["value"+j] = element.value; - } + // Enable / Disable die Optionen in den Menues für die Auswahl. Falls kein Expertenmodus soll nur ein Wert (built-in-led oder externan-flash-ws281x) möglich sein + Array.from(document.querySelector("#GPIO_IO4_value1").options).forEach(function(option_element) { + if (option_element.value != "built-in-led") { + option_element.hidden = _hidden; } - } - else - { - if (_optional) { - _param[_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked; + }); + + Array.from(document.querySelector("#GPIO_IO12_value1").options).forEach(function(option_element) { + if (option_element.value != "external-flash-ws281x") { + option_element.hidden = _hidden; } + }); +} - for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { - let element = document.getElementById(_cat+"_"+_name+"_value"+j); - if (element.tagName.toLowerCase() == "select") { - _param[_cat][_name]["value"+j] = element.selectedIndex > -1 ? element.options[element.selectedIndex].value : ""; - } - else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { - _param[_cat][_name]["value"+j] = element.checked; - } - else { - if ((_param[_cat][_name].checkRegExList != null) && (_param[_cat][_name].checkRegExList[j-1] != null)) { - if (!element.value.match(_param[_cat][_name].checkRegExList[j-1])) { - element.classList.add("invalid-input"); - } - else { - element.classList.remove("invalid-input"); - } - } - _param[_cat][_name]["value"+j] = element.value; - } - } +function UpdateTooltipModus() { + var _style_pur = 'none'; + var _hidden = true; + + if (!document.getElementById("System_Tooltip_value1").selectedIndex) { + _style_pur = ''; + _hidden = false; + //firework.launch("Tooltip view activated.", 'warning', 5000); } -} + const tooltip = document.querySelectorAll(".tooltip"); + + for (var i = 0; i < tooltip.length; i++) { + tooltip[i].style.display = _style_pur; + } +} -function UpdateInputIndividual(sel) { - if (NUNBERSAkt != -1) { - ReadParameter(param, "PostProcessing", "DecimalShift", true, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "AnalogDigitalTransitionStart", true, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "MaxRateValue", true, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "MaxRateType", true, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "ExtendedResolution", false, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "IgnoreLeadingNaN", false, NUNBERSAkt); - ReadParameter(param, "PostProcessing", "AllowNegativeRates", false, NUNBERSAkt); - ReadParameter(param, "InfluxDB", "Field", true, NUNBERSAkt); - ReadParameter(param, "InfluxDBv2", "Field", true, NUNBERSAkt); - ReadParameter(param, "InfluxDB", "Measurement", true, NUNBERSAkt); - ReadParameter(param, "InfluxDBv2", "Measurement", true, NUNBERSAkt); +function saveTextAsFile() { + ReadParameterAll(); + if (document.getElementsByClassName("invalid-input").length > 0) { + firework.launch("Settings cannot be saved. Please check your entries!", 'danger', 30000); + return; } - // var sel = document.getElementById("Numbers_value1"); - NUNBERSAkt = sel.selectedIndex; - WriteParameter(param, category, "PostProcessing", "DecimalShift", true, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "AnalogDigitalTransitionStart", true, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "MaxRateValue", true, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "MaxRateType", true, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "ExtendedResolution", false, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "IgnoreLeadingNaN", false, NUNBERSAkt); - WriteParameter(param, category, "PostProcessing", "AllowNegativeRates", false, NUNBERSAkt); - WriteParameter(param, category, "InfluxDB", "Field", true, NUNBERSAkt); - WriteParameter(param, category, "InfluxDBv2", "Field", true, NUNBERSAkt); - WriteParameter(param, category, "InfluxDB", "Measurement", true, NUNBERSAkt); - WriteParameter(param, category, "InfluxDBv2", "Measurement", true, NUNBERSAkt); -} + if (confirm("Are you sure you want to save the configuration?")) { + ReadParameterAll(); + WriteConfigININew(); + SaveConfigToServer(domainname); + firework.launch('Configuration saved. It will get applied after the next reboot!', 'success', 5000); -function UpdateInput() { - document.getElementById("Category_Digits_enabled").checked = category["Digits"]["enabled"]; - setVisible("DigitItem", category["Digits"]["enabled"]); + if (changeCamValue == 1) { + camSettingsSet(); + firework.launch('You have changed the camera settings, so creating a new reference image and updating the alignment marks is mandatory!', 'success', 10000); + } + } +} - document.getElementById("Category_Analog_enabled").checked = category["Analog"]["enabled"]; - setVisible("AnalogItem", category["Analog"]["enabled"]); +function camSettingsSet(){ + document.getElementById("overlay").style.display = "block"; + document.getElementById("overlaytext").innerHTML = "Save Cam Settings..."; + + var _waitb_temp = document.getElementById("TakeImage_WaitBeforeTakingPicture_value1").value; - document.getElementById("Category_MQTT_enabled").checked = category["MQTT"]["enabled"]; - setVisible("MQTTItem", category["MQTT"]["enabled"]); + var _aecgc_temp = document.getElementById("TakeImage_CamGainceiling_value1").selectedIndex; + var _qual_temp = document.getElementById("TakeImage_CamQuality_value1").value; + + var _bri_temp = document.getElementById("TakeImage_CamBrightness_value1").value; + var _con_temp = document.getElementById("TakeImage_CamContrast_value1").value; + var _sat_temp = document.getElementById("TakeImage_CamSaturation_value1").value; + var _shp_temp = document.getElementById("TakeImage_CamSharpness_value1").value; + + var _ashp_temp = document.getElementById("TakeImage_CamAutoSharpness_value1").value; + if (_ashp_temp == '0') { + _ashp_temp = '1'; + } + else { + _ashp_temp = '0'; + } - document.getElementById("Category_GPIO_enabled").checked = category["GPIO"]["enabled"]; - setVisible("GPIO_item", category["GPIO"]["enabled"]); + var _spe_temp = document.getElementById("TakeImage_CamSpecialEffect_value1").selectedIndex; + var _wbm_temp = document.getElementById("TakeImage_CamWbMode_value1").selectedIndex; + + var _awb_temp = document.getElementById("TakeImage_CamAwb_value1").selectedIndex; + if (_awb_temp == '0') { + _awb_temp = '1'; + } + else { + _awb_temp = '0'; + } - document.getElementById("Category_InfluxDB_enabled").checked = category["InfluxDB"]["enabled"]; - setVisible("InfluxDBv1Item", category["InfluxDB"]["enabled"]); + var _awbg_temp = document.getElementById("TakeImage_CamAwbGain_value1").selectedIndex; + if (_awbg_temp == '0') { + _awbg_temp = '1'; + } + else { + _awbg_temp = '0'; + } - document.getElementById("Category_InfluxDBv2_enabled").checked = category["InfluxDBv2"]["enabled"]; - setVisible("InfluxDBv2Item", category["InfluxDBv2"]["enabled"]); + var _aec_temp = document.getElementById("TakeImage_CamAec_value1").selectedIndex; + if (_aec_temp == '0') { + _aec_temp = '1'; + } + else { + _aec_temp = '0'; + } + + var _aec2_temp = document.getElementById("TakeImage_CamAec2_value1").selectedIndex; + if (_aec2_temp == '0') { + _aec2_temp = '1'; + } + else { + _aec2_temp = '0'; + } + + var _ael_temp = document.getElementById("TakeImage_CamAeLevel_value1").value; + var _aecv_temp = document.getElementById("TakeImage_CamAecValue_value1").value; - WriteParameter(param, category, "TakeImage", "RawImagesLocation", true); - WriteParameter(param, category, "TakeImage", "RawImagesRetention", true); - WriteParameter(param, category, "TakeImage", "Demo", false); - WriteParameter(param, category, "TakeImage", "WaitBeforeTakingPicture", false); - WriteParameter(param, category, "TakeImage", "ImageQuality", false); - WriteParameter(param, category, "TakeImage", "Brightness", false); - WriteParameter(param, category, "TakeImage", "Contrast", false); - WriteParameter(param, category, "TakeImage", "Saturation", false); - WriteParameter(param, category, "TakeImage", "Sharpness", false); - WriteParameter(param, category, "TakeImage", "LEDIntensity", false); - WriteParameter(param, category, "TakeImage", "ImageSize", false); - WriteParameter(param, category, "TakeImage", "Zoom", false); - WriteParameter(param, category, "TakeImage", "ZoomMode", false); - WriteParameter(param, category, "TakeImage", "ZoomOffsetX", false); - WriteParameter(param, category, "TakeImage", "ZoomOffsetY", false); - WriteParameter(param, category, "TakeImage", "Grayscale", false); - WriteParameter(param, category, "TakeImage", "Negative", false); - WriteParameter(param, category, "TakeImage", "Aec2", false); - WriteParameter(param, category, "TakeImage", "AutoExposureLevel", false); - WriteParameter(param, category, "TakeImage", "FixedExposure", false); + var _agc_temp = document.getElementById("TakeImage_CamAgc_value1").selectedIndex; + if (_agc_temp == '0') { + _agc_temp = '1'; + } + else { + _agc_temp = '0'; + } + + var _agcg_temp = document.getElementById("TakeImage_CamAgcGain_value1").value; + + var _bpc_temp = document.getElementById("TakeImage_CamBpc_value1").selectedIndex; + if (_bpc_temp == '0') { + _bpc_temp = '1'; + } + else { + _bpc_temp = '0'; + } + + var _wpc_temp = document.getElementById("TakeImage_CamWpc_value1").selectedIndex; + if (_wpc_temp == '0') { + _wpc_temp = '1'; + } + else { + _wpc_temp = '0'; + } + + var _rgma_temp = document.getElementById("TakeImage_CamRawGma_value1").selectedIndex; + if (_rgma_temp == '0') { + _rgma_temp = '1'; + } + else { + _rgma_temp = '0'; + } + + var _lenc_temp = document.getElementById("TakeImage_CamLenc_value1").selectedIndex; + if (_lenc_temp == '0') { + _lenc_temp = '1'; + } + else { + _lenc_temp = '0'; + } - WriteParameter(param, category, "Alignment", "SearchFieldX", false); - WriteParameter(param, category, "Alignment", "SearchFieldY", false); - WriteParameter(param, category, "Alignment", "AlignmentAlgo", true); - WriteParameter(param, category, "Alignment", "FlipImageSize", false); - WriteParameter(param, category, "Alignment", "InitialMirror", false); - WriteParameter(param, category, "Alignment", "InitialRotate", false); + var _mirror_temp = document.getElementById("TakeImage_CamHmirror_value1").selectedIndex; + if (_mirror_temp == '0') { + _mirror_temp = '1'; + } + else { + _mirror_temp = '0'; + } + + var _flip_temp = document.getElementById("TakeImage_CamVflip_value1").selectedIndex; + if (_flip_temp == '0') { + _flip_temp = '1'; + } + else { + _flip_temp = '0'; + } + + var _dcw_temp = document.getElementById("TakeImage_CamDcw_value1").selectedIndex; + if (_dcw_temp == '0') { + _dcw_temp = '1'; + } + else { + _dcw_temp = '0'; + } - WriteParameter(param, category, "Digits", "CNNGoodThreshold", true); - WriteParameter(param, category, "Digits", "ROIImagesLocation", true); - WriteParameter(param, category, "Digits", "ROIImagesRetention", true); - - WriteParameter(param, category, "Analog", "ROIImagesLocation", true); - WriteParameter(param, category, "Analog", "ROIImagesRetention", true); - - WriteParameter(param, category, "PostProcessing", "PreValueUse", false); - WriteParameter(param, category, "PostProcessing", "PreValueAgeStartup", true); - // WriteParameter(param, category, "PostProcessing", "AllowNegativeRates", true); - WriteParameter(param, category, "PostProcessing", "ErrorMessage", false); - WriteParameter(param, category, "PostProcessing", "CheckDigitIncreaseConsistency", false); + var _denoise_temp = document.getElementById("TakeImage_CamDenoise_value1").value; - WriteParameter(param, category, "MQTT", "Uri", true); - WriteParameter(param, category, "MQTT", "MainTopic", true); - WriteParameter(param, category, "MQTT", "ClientID", true); - WriteParameter(param, category, "MQTT", "user", true); - WriteParameter(param, category, "MQTT", "password", true); - WriteParameter(param, category, "MQTT", "RetainMessages", false); - WriteParameter(param, category, "MQTT", "HomeassistantDiscovery", false); - WriteParameter(param, category, "MQTT", "MeterType", true); - WriteParameter(param, category, "MQTT", "CACert", true); - WriteParameter(param, category, "MQTT", "ClientCert", true); - WriteParameter(param, category, "MQTT", "ClientKey", true); - - WriteParameter(param, category, "InfluxDB", "Uri", true); - WriteParameter(param, category, "InfluxDB", "Database", true); - // WriteParameter(param, category, "InfluxDB", "Measurement", true); - WriteParameter(param, category, "InfluxDB", "user", true); - WriteParameter(param, category, "InfluxDB", "password", true); - // WriteParameter(param, category, "InfluxDB", "Field", true); + var _ledi_temp = document.getElementById("TakeImage_LEDIntensity_value1").value; - WriteParameter(param, category, "InfluxDBv2", "Uri", true); - WriteParameter(param, category, "InfluxDBv2", "Bucket", true); - // WriteParameter(param, category, "InfluxDBv2", "Measurement", true); - WriteParameter(param, category, "InfluxDBv2", "Org", true); - WriteParameter(param, category, "InfluxDBv2", "Token", true); - // WriteParameter(param, category, "InfluxDBv2", "Field", true); + var _zoom_temp = document.getElementById("TakeImage_CamZoom_value1").selectedIndex; + if (_zoom_temp == '0') { + _zoom_temp = '1'; + } + else { + _zoom_temp = '0'; + } - WriteParameter(param, category, "GPIO", "IO0", true); - WriteParameter(param, category, "GPIO", "IO1", true); - WriteParameter(param, category, "GPIO", "IO3", true); - WriteParameter(param, category, "GPIO", "IO4", true); - WriteParameter(param, category, "GPIO", "IO12", true); - WriteParameter(param, category, "GPIO", "IO13", true); - WriteParameter(param, category, "GPIO", "LEDType", false); - WriteParameter(param, category, "GPIO", "LEDNumbers", false); - WriteParameter(param, category, "GPIO", "LEDColor", false); + var _zoomx_temp = document.getElementById("TakeImage_CamZoomOffsetX_value1").value; + var _zoomy_temp = document.getElementById("TakeImage_CamZoomOffsetY_value1").value; + var _zooms_temp = document.getElementById("TakeImage_CamZoomSize_value1").value; + + var url = domainname + "/editflow?task=cam_settings"; + + if (domainname.length > 0){ + url = url + "&host=" + domainname; + } + + url = url + "&waitb=" + _waitb_temp + "&aecgc=" + _aecgc_temp + "&qual=" + _qual_temp; + url = url + "&bri=" + _bri_temp + "&con=" + _con_temp + "&sat=" + _sat_temp + "&shp=" + _shp_temp + "&ashp=" + _ashp_temp; + url = url + "&spe=" + _spe_temp + "&wbm=" + _wbm_temp + "&awb=" + _awb_temp + "&awbg=" + _awbg_temp; + url = url + "&aec=" + _aec_temp + "&aec2=" + _aec2_temp + "&ael=" + _ael_temp + "&aecv=" + _aecv_temp; + + url = url + "&agc=" + _agc_temp + "&agcg=" + _agcg_temp + "&bpc=" + _bpc_temp + "&wpc=" + _wpc_temp; + url = url + "&rgma=" + _rgma_temp + "&lenc=" + _lenc_temp + "&mirror=" + _mirror_temp + "&flip=" + _flip_temp; + url = url + "&dcw=" + _dcw_temp + "&den=" + _denoise_temp + "&ledi=" + _ledi_temp; + + if (_zoom_temp != '0') { + url = url + "&zoom=" + _zoom_temp + "&zooms=" + _zooms_temp; + url = url + "&zoomx=" + _zoomx_temp + "&zoomy=" + _zoomy_temp; + } + else { + url = url + "&zoom=0" + "&zooms=0" + "&zoomx=0" + "&zoomy=0"; + } - WriteParameter(param, category, "AutoTimer", "AutoStart", false); - WriteParameter(param, category, "AutoTimer", "Interval", false); + var durchlaufe = 0; - WriteParameter(param, category, "DataLogging", "DataLogActive", false); - WriteParameter(param, category, "DataLogging", "DataFilesRetention", false); + function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + async function task() { + while (true) { + var xhttp = new XMLHttpRequest(); + + if (durchlaufe > 10) { + document.getElementById("overlay").style.display = "none"; + firework.launch('Save Cam Settings aborted, timeout!', 'danger', 5000); + return; + } + + try { + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error){} + + if (xhttp.responseText == "CamSettingsSet") { + document.getElementById("overlay").style.display = "none"; + firework.launch('Cam Settings saved', 'success', 2000); + return; + } + else { + // Get status + var _xhttp = new XMLHttpRequest(); + durchlaufe = durchlaufe + 1; + + try { + _xhttp.open("GET", domainname + "/statusflow", false); + _xhttp.send(); + } + catch (error){} - WriteParameter(param, category, "Debug", "LogLevel", false); - WriteParameter(param, category, "Debug", "LogfilesRetention", false); + document.getElementById("overlaytext").innerHTML = "Device is busy, plase waiting...

Current step: " + _xhttp.responseText; + console.log("Device is busy, waiting 2s then checking again..."); + await sleep(2000); + } + } + } - WriteParameter(param, category, "System", "TimeZone", true); - WriteParameter(param, category, "System", "Hostname", true); - WriteParameter(param, category, "System", "TimeServer", true); - WriteParameter(param, category, "System", "RSSIThreshold", true); - WriteParameter(param, category, "System", "CPUFrequency", true); + setTimeout(function() { + // Delay so the overlay gets shown + task(); + }, 1); +} + +function doReboot() { + if (confirm("Are you sure you want to reboot?")) { + var stringota = domainname + "/reboot"; + window.location = stringota; + window.location.href = stringota; + window.location.assign(stringota); + window.location.replace(stringota); + } +} - WriteModelFiles(); +function FormatDecimalValue(_param, _cat, _name) { + for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { + var _val = _param[_cat][_name]["value"+j]; + _val = _val.replace(",", "."); + _param[_cat][_name]["value"+j] = _val; + } } +function editConfigRaw() { + if (confirm("Proceed to switch to raw edit mode? Unsaved changes will get lost")) { + var stringota = domainname + "/edit_config_raw.html?v=$COMMIT_HASH"; + window.location = stringota; + window.location.href = stringota; + window.location.assign(stringota); + window.location.replace(stringota); + } +} -function WriteModelFiles() { - list_tflite = getTFLITEList(); +function numberChanged() { + var sel = document.getElementById("Numbers_value1"); + _neu = sel.selectedIndex; + UpdateInputIndividual(sel); - var _indexDig = document.getElementById("Digits_Model_value1"); - var _indexAna = document.getElementById("Analog_Model_value1"); - - while (_indexDig.length) { - _indexDig.remove(0); - } - - while (_indexAna.length) { - _indexAna.remove(0); + var _selInflux = document.getElementById("NumbersInfluxDBv2_value1"); + if (_selInflux.selectedIndex != _neu) { + _selInflux.selectedIndex = _neu } +} + +function numberInfluxDBv2Changed() { + var sel = document.getElementById("NumbersInfluxDBv2_value1"); + _neu = sel.selectedIndex; + UpdateInputIndividual(sel); - for (var i = 0; i < list_tflite.length; ++i) { - var optionDig = document.createElement("option"); - var optionAna = document.createElement("option"); - - var text = list_tflite[i].replace("/config/", ""); - - if (list_tflite[i].includes("/dig")) { // Its a digital file, only show in the digital list box - optionDig.text = text; - optionDig.value = list_tflite[i]; - _indexDig.add(optionDig); - } - else if (list_tflite[i].includes("/ana")) { // Its a digital file, only show in the analog list box - optionAna.text = text; - optionAna.value = list_tflite[i]; - _indexAna.add(optionAna); - } - else { // all other files, show in both list boxes - optionDig.text = text; - optionDig.value = list_tflite[i]; - _indexDig.add(optionDig); - - optionAna.text = text; - optionAna.value = list_tflite[i]; - _indexAna.add(optionAna); - } + var _sel2 = document.getElementById("Numbers_value1"); + if (_sel2.selectedIndex != _neu) { + _sel2.selectedIndex = _neu } - WriteParameter(param, category, "Analog", "Model", false); - WriteParameter(param, category, "Digits", "Model", false); + var _sel3 = document.getElementById("NumbersInfluxDB_value1"); + if (_sel3.selectedIndex != _neu) { + _sel3.selectedIndex = _neu + } } - -function ReadParameterAll() { - category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked; - category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked; - category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked; - category["InfluxDB"]["enabled"] = document.getElementById("Category_InfluxDB_enabled").checked; - category["InfluxDBv2"]["enabled"] = document.getElementById("Category_InfluxDBv2_enabled").checked; - category["GPIO"]["enabled"] = document.getElementById("Category_GPIO_enabled").checked; +function numberInfluxDBChanged() { + var sel = document.getElementById("NumbersInfluxDB_value1"); + _neu = sel.selectedIndex; + UpdateInputIndividual(sel); - ReadParameter(param, "TakeImage", "RawImagesLocation", true); - ReadParameter(param, "TakeImage", "RawImagesRetention", true); - ReadParameter(param, "TakeImage", "Demo", false); - ReadParameter(param, "TakeImage", "WaitBeforeTakingPicture", false); - ReadParameter(param, "TakeImage", "ImageQuality", false); - ReadParameter(param, "TakeImage", "Brightness", false); - ReadParameter(param, "TakeImage", "Contrast", false); - ReadParameter(param, "TakeImage", "Saturation", false); - ReadParameter(param, "TakeImage", "Sharpness", false); - ReadParameter(param, "TakeImage", "LEDIntensity", false); - ReadParameter(param, "TakeImage", "ImageSize", false); - ReadParameter(param, "TakeImage", "Zoom", false); - ReadParameter(param, "TakeImage", "ZoomMode", false); - ReadParameter(param, "TakeImage", "ZoomOffsetX", false); - ReadParameter(param, "TakeImage", "ZoomOffsetY", false); - ReadParameter(param, "TakeImage", "Grayscale", false); - ReadParameter(param, "TakeImage", "Negative", false); - ReadParameter(param, "TakeImage", "Aec2", false); - ReadParameter(param, "TakeImage", "AutoExposureLevel", false); - ReadParameter(param, "TakeImage", "FixedExposure", false); + var _sel2 = document.getElementById("Numbers_value1"); + if (_sel2.selectedIndex != _neu) { + _sel2.selectedIndex = _neu + } - ReadParameter(param, "Alignment", "SearchFieldX", false); - ReadParameter(param, "Alignment", "SearchFieldY", false); - ReadParameter(param, "Alignment", "AlignmentAlgo", true); - ReadParameter(param, "Alignment", "FlipImageSize", false); - ReadParameter(param, "Alignment", "InitialMirror", false); - ReadParameter(param, "Alignment", "InitialRotate", false); + var _sel3 = document.getElementById("NumbersInfluxDBv2_value1"); + if (_sel3.selectedIndex != _neu) { + _sel3.selectedIndex = _neu + } +} - ReadParameter(param, "Digits", "Model", false); - ReadParameter(param, "Digits", "CNNGoodThreshold", true); - ReadParameter(param, "Digits", "ROIImagesLocation", true); - ReadParameter(param, "Digits", "ROIImagesRetention", true); +function getParameterByName(name, url = window.location.href) { + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), + results = regex.exec(url); - ReadParameter(param, "Analog", "Model", false); - ReadParameter(param, "Analog", "ROIImagesLocation", true); - ReadParameter(param, "Analog", "ROIImagesRetention", true); + if (!results) {return null;} + if (!results[2]) {return '';} + + return decodeURIComponent(results[2].replace(/\+/g, ' ')); +} - ReadParameter(param, "PostProcessing", "PreValueUse", false); - ReadParameter(param, "PostProcessing", "PreValueAgeStartup", true); - ReadParameter(param, "PostProcessing", "ErrorMessage", false); - ReadParameter(param, "PostProcessing", "CheckDigitIncreaseConsistency", false); +function InvertEnableItem(_cat, _param) { + _zw = _cat + "_" + _param + "_enabled"; + _isOn = document.getElementById(_zw).checked; - ReadParameter(param, "MQTT", "Uri", true); - ReadParameter(param, "MQTT", "MainTopic", true); - ReadParameter(param, "MQTT", "ClientID", true); - ReadParameter(param, "MQTT", "user", true); - ReadParameter(param, "MQTT", "password", true); - ReadParameter(param, "MQTT", "RetainMessages", false); - ReadParameter(param, "MQTT", "HomeassistantDiscovery", false); - ReadParameter(param, "MQTT", "MeterType", true); - ReadParameter(param, "MQTT", "CACert", true); - ReadParameter(param, "MQTT", "ClientCert", true); - ReadParameter(param, "MQTT", "ClientKey", true); + _color = "rgb(122, 122, 122)"; + + if (_isOn) { + _color = "black"; + } - ReadParameter(param, "InfluxDB", "Uri", true); - ReadParameter(param, "InfluxDB", "Database", true); - ReadParameter(param, "InfluxDB", "Measurement", true); - ReadParameter(param, "InfluxDB", "user", true); - ReadParameter(param, "InfluxDB", "password", true); + _zw = _cat + "_" + _param + "_text"; + document.getElementById(_zw).disabled = !_isOn; + document.getElementById(_zw).style.color = _color; - ReadParameter(param, "InfluxDBv2", "Uri", true); - ReadParameter(param, "InfluxDBv2", "Bucket", true); - ReadParameter(param, "InfluxDBv2", "Measurement", true); - ReadParameter(param, "InfluxDBv2", "Org", true); - ReadParameter(param, "InfluxDBv2", "Token", true); - // ReadParameter(param, "InfluxDB", "Field", true); + setEnabled(_cat + "_" + _param, _isOn); - ReadParameter(param, "GPIO", "IO0", true); - ReadParameter(param, "GPIO", "IO1", true); - ReadParameter(param, "GPIO", "IO3", true); - ReadParameter(param, "GPIO", "IO4", true); - ReadParameter(param, "GPIO", "IO12", true); - ReadParameter(param, "GPIO", "IO13", true); - ReadParameter(param, "GPIO", "LEDType", false); - ReadParameter(param, "GPIO", "LEDNumbers", false); - ReadParameter(param, "GPIO", "LEDColor", false); - // Folgende Zeilen sind für Abwärtskompatibität < v9.0.0 notwendig (manchmal parameter auskommentiert) - param["GPIO"]["LEDType"]["enabled"] = true; - param["GPIO"]["LEDNumbers"]["enabled"] = true; - param["GPIO"]["LEDColor"]["enabled"] = true; - param["GPIO"]["LEDType"]["found"] = true; - param["GPIO"]["LEDNumbers"]["found"] = true; - param["GPIO"]["LEDColor"]["found"] = true; + for (var j = 1; j <= param[_cat][_param]["anzParam"]; ++j) { + document.getElementById(_cat+"_"+_param+"_value"+j).disabled = !_isOn; + document.getElementById(_cat+"_"+_param+"_value"+j).style.color = _color; + } +} - ReadParameter(param, "AutoTimer", "AutoStart", false); - ReadParameter(param, "AutoTimer", "Interval", false); - - ReadParameter(param, "DataLogging", "DataLogActive", false); - ReadParameter(param, "DataLogging", "DataFilesRetention", false); +function setEnabled(className, enabled) { + _color = "rgb(122, 122, 122)"; + + if (enabled) { + _color = "black"; + } - ReadParameter(param, "Debug", "LogLevel", false); - ReadParameter(param, "Debug", "LogfilesRetention", false); + let elements = document.getElementsByClassName(className); + for (i = 0; i < elements.length; i++) { + if (enabled) { + elements[i].classList.remove("disabled"); + } + else { + elements[i].classList.add("disabled"); + } - ReadParameter(param, "System", "TimeZone", true); - ReadParameter(param, "System", "Hostname", true); - ReadParameter(param, "System", "TimeServer", true); - ReadParameter(param, "System", "RSSIThreshold", true); - ReadParameter(param, "System", "CPUFrequency", true); + let inputs = elements[i].getElementsByTagName("input"); + for (j = 0; j < inputs.length; j++) { + if (inputs[j].id.endsWith("_enabled")) { + continue; + } - var sel = document.getElementById("Numbers_value1"); - UpdateInputIndividual(sel); - - // FormatDecimalValue(param, "PostProcessing", "MaxRateValue"); + inputs[j].style.color = _color; + if (enabled) { + inputs[j].removeAttribute("disabled"); + } + else { + inputs[j].setAttribute("disabled", "disabled"); + } + } + } } - -function FormatDecimalValue(_param, _cat, _name) { - for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { - var _val = _param[_cat][_name]["value"+j]; - _val = _val.replace(",", "."); - _param[_cat][_name]["value"+j] = _val; +function setVisible(className, visible) { + let elements = document.getElementsByClassName(className); + + for (i = 0; i < elements.length; i++) { + if (visible) { + elements[i].classList.remove("hidden"); + } + else { + elements[i].classList.add("hidden"); + } } } +function EnDisableItem(_status, _param, _category, _cat, _name, _optional, _number = -1) { + // _status = _category[_cat]["enabled"]; -function UpdateAfterCategoryCheck() { - ReadParameterAll(); - category["Analog"]["enabled"] = document.getElementById("Category_Analog_enabled").checked; - category["Digits"]["enabled"] = document.getElementById("Category_Digits_enabled").checked; - category["MQTT"]["enabled"] = document.getElementById("Category_MQTT_enabled").checked; - category["InfluxDB"]["enabled"] = document.getElementById("Category_InfluxDB_enabled").checked; - category["InfluxDBv2"]["enabled"] = document.getElementById("Category_InfluxDBv2_enabled").checked; - category["GPIO"]["enabled"] = document.getElementById("Category_GPIO_enabled").checked; - - UpdateInput(); - var sel = document.getElementById("Numbers_value1"); - UpdateInputIndividual(sel); -} + _color = "rgb(122, 122, 122)"; + + if (_status) { + _color = "black"; + } + if (_optional) { + document.getElementById(_cat+"_"+_name+"_enabled").disabled = !_status; + document.getElementById(_cat+"_"+_name+"_enabled").style.color = _color; + } -function UpdateExpertModus() { - // var _style = 'display:none;'; - var _style_pur = 'none'; - var _hidden = true; - if (document.getElementById("ExpertModus_enabled").checked) { - // _style = ''; - _style_pur = ''; - _hidden = false; - document.getElementById("Button_Edit_Config_Raw").style.display = ""; - firework.launch("Expert view activated. Please use carefully", 'warning', 5000); + if (_number == -1) { + if (!_param[_cat][_name]["enabled"]) { + _status = false; + _color = "rgb(122, 122, 122)"; + } } else { - document.getElementById("Button_Edit_Config_Raw").style.display = "none"; + if (!NUMBERS[_number][_cat][_name]["enabled"]) { + _status = false; + _color = "rgb(122, 122, 122)"; + } } - const expert = document.querySelectorAll(".expert"); - for (var i = 0; i < expert.length; i++) { - expert[i].style.display = _style_pur; - // document.getElementById(expert[i].id).style = _style; + document.getElementById(_cat+"_"+_name+"_text").disabled = !_status; + document.getElementById(_cat+"_"+_name+"_text").style.color = _color; + + setEnabled(_cat+"_"+_name, _status); + + for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { + document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_status; + document.getElementById(_cat+"_"+_name+"_value"+j).style.color = _color; } +} - // Enable / Disable die Optionen in den Menues für die Auswahl. Falls kein Expertenmodus soll nur ein Wert (built-in-led oder externan-flash-ws281x) möglich sein - Array.from(document.querySelector("#GPIO_IO4_value1").options).forEach(function(option_element) { - if (option_element.value != "built-in-led") { - option_element.hidden = _hidden; +function ReadParameter(_param, _cat, _name, _optional, _number = -1) { + if (_number > -1) { + if (_cat == "Digits") { + _cat = "digit"; + } + + if (_cat == "Analog") { + _cat = "analog"; } - }); - Array.from(document.querySelector("#GPIO_IO12_value1").options).forEach(function(option_element) { - if (option_element.value != "external-flash-ws281x") { - option_element.hidden = _hidden; + if ((NUMBERS[_number] == undefined) || (NUMBERS[_number][_cat] == undefined) || (NUMBERS[_number][_cat][_name] == undefined)) { + return; } - }); -} + if (_optional) { + NUMBERS[_number][_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked; + } -function saveTextAsFile() { - ReadParameterAll(); - if (document.getElementsByClassName("invalid-input").length > 0) { - firework.launch("Settings cannot be saved. Please check your entries!", 'danger', 30000); - return; + for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { + let element = document.getElementById(_cat+"_"+_name+"_value"+j); + + if (element.tagName.toLowerCase() == "select") { + NUMBERS[_number][_cat][_name]["value"+j] = element.selectedIndex > -1 ? element.options[element.selectedIndex].value : ""; + } + else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { + NUMBERS[_number][_cat][_name]["value"+j] = element.checked; + } + else { + if ((NUMBERS[_number][_cat][_name].checkRegExList != null) && (NUMBERS[_number][_cat][_name].checkRegExList[j-1] != null)) { + if (!element.value.match(NUMBERS[_cat][_name].checkRegExList[j-1])) { + element.classList.add("invalid-input"); + } + else { + element.classList.remove("invalid-input"); + } + } + + NUMBERS[_number][_cat][_name]["value"+j] = element.value; + } + } } + else + { + if (_optional) { + _param[_cat][_name]["enabled"] = document.getElementById(_cat+"_"+_name+"_enabled").checked; + } - if (confirm("Are you sure you want to save the configuration?")) { - ReadParameterAll(); - WriteConfigININew(); - SaveConfigToServer(domainname); - - firework.launch('Configuration saved. It will get applied after the next reboot!', 'success', 5000); - - if (changeCamValue == 1) { - firework.launch('You have changed the camera settings, so creating a new reference image and updating the alignment marks is mandatory!', 'success', 10000); - } + for (var j = 1; j <= _param[_cat][_name]["anzParam"]; ++j) { + let element = document.getElementById(_cat+"_"+_name+"_value"+j); + + if (element.tagName.toLowerCase() == "select") { + _param[_cat][_name]["value"+j] = element.selectedIndex > -1 ? element.options[element.selectedIndex].value : ""; + } + else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { + _param[_cat][_name]["value"+j] = element.checked; + } + else { + if ((_param[_cat][_name].checkRegExList != null) && (_param[_cat][_name].checkRegExList[j-1] != null)) { + if (!element.value.match(_param[_cat][_name].checkRegExList[j-1])) { + element.classList.add("invalid-input"); + } + else { + element.classList.remove("invalid-input"); + } + } + + _param[_cat][_name]["value"+j] = element.value; + } + } } } - -function doReboot() { - if (confirm("Are you sure you want to reboot?")) { - var stringota = getDomainname() + "/reboot"; - window.location = stringota; - window.location.href = stringota; - window.location.assign(stringota); - window.location.replace(stringota); +function WriteParameter(_param, _category, _cat, _name, _optional, _number = -1) { + let anzpara; + try { + anzpara = _param[_cat][_name].anzParam; + } + catch (error) { + firework.launch("Parameter '" + _name + "' in category '" + _cat + "' is unknown!", 'danger', 30000); + return; } -} - -function editConfigRaw() { - if (confirm("Proceed to switch to raw edit mode? Unsaved changes will get lost")) { - var stringota = getDomainname() + "/edit_config_raw.html?v=$COMMIT_HASH"; - window.location = stringota; - window.location.href = stringota; - window.location.assign(stringota); - window.location.replace(stringota); - } -} + if (_number > -1) { + if ((NUMBERS[_number] == undefined) || (NUMBERS[_number][_cat] == undefined) || (NUMBERS[_number][_cat][_name] == undefined)) { + return; + } + if (_optional) { + document.getElementById(_cat+"_"+_name+"_enabled").checked = NUMBERS[_number][_cat][_name]["enabled"]; + + for (var j = 1; j <= anzpara; ++j) { + document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !NUMBERS[_number][_cat][_name]["enabled"]; + } + } + + document.getElementById(_cat+"_"+_name+"_text").style.color = "black" + setEnabled(_cat+"_"+_name, true); -function numberChanged() { - var sel = document.getElementById("Numbers_value1"); - _neu = sel.selectedIndex; - UpdateInputIndividual(sel); + for (var j = 1; j <= anzpara; ++j) { + let element = document.getElementById(_cat+"_"+_name+"_value"+j); + + if (element.tagName.toLowerCase() == "select") { + var textToFind = NUMBERS[_number][_cat][_name]["value"+j]; + + if (textToFind == undefined) { + continue; + } - var _selInflux = document.getElementById("NumbersInfluxDBv2_value1"); - if (_selInflux.selectedIndex != _neu) { - _selInflux.selectedIndex = _neu + _isFound = false; + element.selectedIndex = -1; + + for (var i = 0; i < element.options.length; i++) { + if (element.options[i].value.toLowerCase() === textToFind.toLowerCase()) { + element.selectedIndex = i; + _isFound = true; + break; + } + } + + if (!_isFound) { + _zw_txt = "In the selected field the value '" + textToFind + "' in the parameter '"; + _zw_txt = _zw_txt + _cat + "' in the field '" + _name + "' is invalid. PLEASE CHECK BEFORE SAVING!"; + firework.launch(_zw_txt, 'warning', 10000); + } + } + else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { + element.checked = NUMBERS[_number][_cat][_name]["value"+j] == "true"; + } + else { + element.value = NUMBERS[_number][_cat][_name]["value"+j]; + } + } } -} - - -function numberInfluxDBv2Changed() { - var sel = document.getElementById("NumbersInfluxDBv2_value1"); - _neu = sel.selectedIndex; - UpdateInputIndividual(sel); + else { + if (_optional) { + document.getElementById(_cat+"_"+_name+"_enabled").checked = _param[_cat][_name]["enabled"]; + + for (var j = 1; j <= anzpara; ++j) { + document.getElementById(_cat+"_"+_name+"_value"+j).disabled = !_param[_cat][_name]["enabled"]; + } + } + + document.getElementById(_cat+"_"+_name+"_text").style.color = "black" + setEnabled(_cat+"_"+_name, true); - var _sel2 = document.getElementById("Numbers_value1"); - if (_sel2.selectedIndex != _neu) { - _sel2.selectedIndex = _neu - } + for (var j = 1; j <= anzpara; ++j) { + let element = document.getElementById(_cat+"_"+_name+"_value"+j); + + if (element.tagName.toLowerCase() == "select") { + var textToFind = _param[_cat][_name]["value"+j]; + + if (textToFind == undefined) { + continue; + } + + _isFound = false; + element.selectedIndex = -1; + + for (var i = 0; i < element.options.length; i++) { + if (element.options[i].value.toLowerCase() === textToFind.toLowerCase()) { + element.selectedIndex = i; + _isFound = true; + break; + } + } + + if (!_isFound) { + _zw_txt = "In the selected field the value '" + textToFind + "' in the section '"; + _zw_txt = _zw_txt + _cat + "' in the field '" + _name + "' is invalid. PLEASE CHECK BEFORE SAVING!"; + firework.launch(_zw_txt, 'warning', 10000); + } - var _sel3 = document.getElementById("NumbersInfluxDB_value1"); - if (_sel3.selectedIndex != _neu) { - _sel3.selectedIndex = _neu + } + else if ((element.getAttribute("type") != null) && (element.getAttribute("type").toLowerCase() == "checkbox")) { + element.checked = _param[_cat][_name]["value"+j] == "true"; + } + else { + element.value = _param[_cat][_name]["value"+j]; + } + } } -} - -function numberInfluxDBChanged() { - var sel = document.getElementById("NumbersInfluxDB_value1"); - _neu = sel.selectedIndex; - UpdateInputIndividual(sel); - - var _sel2 = document.getElementById("Numbers_value1"); - if (_sel2.selectedIndex != _neu) { - _sel2.selectedIndex = _neu + ///////////////// am Ende, falls Kategorie als gesamtes nicht ausgewählt --> deaktivieren + if (_category[_cat]["enabled"] == false) { + if (_optional) { + document.getElementById(_cat+"_"+_name+"_enabled").disabled = true; + + for (var j = 1; j <= anzpara; ++j) { + document.getElementById(_cat+"_"+_name+"_value"+j).disabled = true; + } + } + + document.getElementById(_cat+"_"+_name+"_text").style="color: gray;" + setEnabled(_cat+"_"+_name, false); } - var _sel3 = document.getElementById("NumbersInfluxDBv2_value1"); - if (_sel3.selectedIndex != _neu) { - _sel3.selectedIndex = _neu - } + EnDisableItem(_category[_cat]["enabled"], _param, _category, _cat, _name, _optional, _number); } - /* hash #description open the details part of the page */ function openDescription() { if(window.location.hash) { var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character + if(hash == 'description') { document.getElementById("desc_details").open = true; document.getElementById("reboot").style.display = "none"; @@ -2641,6 +3238,5 @@

Digit ROI

} var _index = document.getElementById("index"); + while (_index.length){ _index.remove(0); } @@ -582,7 +553,7 @@

Digit ROI

if(window.location.hash) { var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character if(hash == 'description') { - document.getElementById("desc_details").open = true; + document.getElementById("desc_details").open = false; } } } @@ -590,14 +561,21 @@

Digit ROI

function init() { openDescription(); domainname = getDomainname(); - canvas.addEventListener('mousedown', mouseDown, false); - canvas.addEventListener('mouseup', mouseUp, false); - canvas.addEventListener('mousemove', mouseMove, false); - loadCanvas(domainname + "/fileserver/config/reference.jpg"); - loadConfig(domainname); + + if (!loadConfig(domainname)) { + firework.launch('Configuration could not be loaded! Please reload the page!', 'danger', 30000); + return; + } + ParseConfig(); param = getConfigParameters(); cofcat = getConfigCategory(); + + canvas.addEventListener('mousedown', mouseDown, false); + canvas.addEventListener('mouseup', mouseUp, false); + canvas.addEventListener('mousemove', mouseMove, false); + loadCanvas(domainname + "/fileserver/config/reference.jpg"); + UpdateNUMBERS(); /* Check if the ROIs are equidistant. Only if not, untick the checkbox */ @@ -717,6 +695,7 @@

Digit ROI

} erg = CreateNUMBER(_numbernew); + if (erg != "") { firework.launch(erg, 'danger', 30000); } @@ -844,14 +823,17 @@

Digit ROI

function mouseUp() { drag = false; + if (rect.w < 0) { rect.w = -rect.w rect.startX-=rect.w } + if (rect.h < 0) { rect.h = -rect.h rect.startY-=rect.h } + document.getElementById("refdx").value = rect.w; document.getElementById("refdy").value = rect.h; document.getElementById("refx").value = rect.startX; @@ -876,10 +858,12 @@

Digit ROI

} document.getElementById("refdx").value = rect.w; document.getElementById("refdy").value = rect.h; + draw(); } else { draw(); + var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); @@ -915,10 +899,10 @@

Digit ROI

rect.startX = document.getElementById("refx").value; rect.startY = document.getElementById("refy").value; - draw(); if (lockSpaceEquidistant) { makeX_SpaceEquidistant(); - } + } + draw(); } document.getElementById("saveroi").disabled = false; @@ -990,11 +974,13 @@

Digit ROI

_roialt= sel.options[sel.selectedIndex].text; var _roinew = prompt("Please enter a new name for the selected ROI", _roialt); + if (_roinew === null) { return; //break out of the function early because prompt was aborted } erg = RenameROI(_number, "digit", _roialt, _roinew); + if (erg != "") { firework.launch(erg, 'danger', 30000); } diff --git a/sd-card/html/edit_reference.html b/sd-card/html/edit_reference.html index 84efe305b..7716f40be 100644 --- a/sd-card/html/edit_reference.html +++ b/sd-card/html/edit_reference.html @@ -1,8 +1,9 @@ - + + - Reference Image and Camera Settings + Reference Image and Camera Settings diff --git a/sd-card/html/file_server.html b/sd-card/html/file_server.html index 591892667..564140868 100644 --- a/sd-card/html/file_server.html +++ b/sd-card/html/file_server.html @@ -1,9 +1,11 @@ - + + - + + @@ -78,221 +129,209 @@
- + + diff --git a/sd-card/html/readconfigcommon.js b/sd-card/html/readconfigcommon.js index 9be51c5c0..c417f1eec 100644 --- a/sd-card/html/readconfigcommon.js +++ b/sd-card/html/readconfigcommon.js @@ -1,11 +1,13 @@ function SaveConfigToServer(_domainname){ // leere Zeilen am Ende löschen var zw = config_split.length - 1; + while (config_split[zw] == "") { config_split.pop(); } var config_gesamt = ""; + for (var i = 0; i < config_split.length; ++i) { config_gesamt = config_gesamt + config_split[i] + "\n"; @@ -26,231 +28,232 @@ function UpdateConfig(zw, _index, _enhance, _domainname){ function createReader(file) { var image = new Image(); + reader.onload = function(evt) { var image = new Image(); + image.onload = function(evt) { var width = this.width; var height = this.height; - //alert (width); // will produce something like 198 }; + image.src = evt.target.result; }; + reader.readAsDataURL(file); } -function ZerlegeZeile(input, delimiter = " =\t\r") - { - var Output = Array(0); +function ZerlegeZeile(input, delimiter = " =\t\r") { + var Output = Array(0); // delimiter = " =,\t"; - /* The input can have multiple formats: - * - key = value - * - key = value1 value2 value3 ... - * - key value1 value2 value3 ... - * - * Examples: - * - ImageSize = VGA - * - IO0 = input disabled 10 false false - * - main.dig1 28 144 55 100 false - * - * This causes issues eg. if a password key has a whitespace or equal sign in its value. - * As a workaround and to not break any legacy usage, we enforce to only use the - * equal sign, if the key is "password" - */ - if (input.includes("password") || input.includes("Token")) { // Line contains a password, use the equal sign as the only delimiter and only split on first occurrence - var pos = input.indexOf("="); - delimiter = " \t\r" - Output.push(trim(input.substr(0, pos), delimiter)); - Output.push(trim(input.substr(pos +1, input.length), delimiter)); - } - else { // Legacy Mode - input = trim(input, delimiter); - var pos = findDelimiterPos(input, delimiter); - var token; - while (pos > -1) { - token = input.substr(0, pos); - token = trim(token, delimiter); - Output.push(token); - input = input.substr(pos+1, input.length); - input = trim(input, delimiter); - pos = findDelimiterPos(input, delimiter); - } - Output.push(input); - } + /* The input can have multiple formats: + * - key = value + * - key = value1 value2 value3 ... + * - key value1 value2 value3 ... + * + * Examples: + * - ImageSize = VGA + * - IO0 = input disabled 10 false false + * - main.dig1 28 144 55 100 false + * + * This causes issues eg. if a password key has a whitespace or equal sign in its value. + * As a workaround and to not break any legacy usage, we enforce to only use the + * equal sign, if the key is "password" + */ + if (input.includes("password") || input.includes("Token")) { // Line contains a password, use the equal sign as the only delimiter and only split on first occurrence + var pos = input.indexOf("="); + delimiter = " \t\r" + Output.push(trim(input.substr(0, pos), delimiter)); + Output.push(trim(input.substr(pos +1, input.length), delimiter)); + } + else { // Legacy Mode + input = trim(input, delimiter); + var pos = findDelimiterPos(input, delimiter); + var token; + + while (pos > -1) { + token = input.substr(0, pos); + token = trim(token, delimiter); + Output.push(token); + input = input.substr(pos+1, input.length); + input = trim(input, delimiter); + pos = findDelimiterPos(input, delimiter); + } + + Output.push(input); + } - return Output; - } + return Output; +} -function findDelimiterPos(input, delimiter) - { - var pos = -1; - var zw; - var akt_del; +function findDelimiterPos(input, delimiter) { + var pos = -1; + var zw; + var akt_del; - for (var anz = 0; anz < delimiter.length; ++anz) - { - akt_del = delimiter[anz]; - zw = input.indexOf(akt_del); - if (zw > -1) - { - if (pos > -1) - { - if (zw < pos) - pos = zw; - } - else - pos = zw; - } - } - return pos; - } + for (var anz = 0; anz < delimiter.length; ++anz) { + akt_del = delimiter[anz]; + zw = input.indexOf(akt_del); + + if (zw > -1) { + if (pos > -1) { + if (zw < pos) { + pos = zw; + } + } + else { + pos = zw; + } + } + } + + return pos; +} -function trim(istring, adddelimiter) - { - while ((istring.length > 0) && (adddelimiter.indexOf(istring[0]) >= 0)){ - istring = istring.substr(1, istring.length-1); - } +function trim(istring, adddelimiter) { + while ((istring.length > 0) && (adddelimiter.indexOf(istring[0]) >= 0)) { + istring = istring.substr(1, istring.length-1); + } - while ((istring.length > 0) && (adddelimiter.indexOf(istring[istring.length-1]) >= 0)){ - istring = istring.substr(0, istring.length-1); - } + while ((istring.length > 0) && (adddelimiter.indexOf(istring[istring.length-1]) >= 0)) { + istring = istring.substr(0, istring.length-1); + } - return istring; - } + return istring; +} -function getConfig() -{ - return config_gesamt; +function getConfig() { + return config_gesamt; } -function loadConfig(_domainname) -{ - var xhttp = new XMLHttpRequest(); - try { - url = _domainname + '/fileserver/config/config.ini'; - xhttp.open("GET", url, false); - xhttp.send(); - config_gesamt = xhttp.responseText; - config_gesamt = config_gesamt.replace("InitalRotate", "InitialRotate"); // Korrigiere Schreibfehler in config.ini !!!!! - } - catch (error) - { -// firework.launch('Deleting Config.ini failed!', 'danger', 30000); - } - return true; +function loadConfig(_domainname) { + var xhttp = new XMLHttpRequest(); + + try { + url = _domainname + '/fileserver/config/config.ini'; + xhttp.open("GET", url, false); + xhttp.send(); + config_gesamt = xhttp.responseText; + config_gesamt = config_gesamt.replace("InitalRotate", "InitialRotate"); // Korrigiere Schreibfehler in config.ini !!!!! + } catch (error) {} + + return true; } -function dataURLtoBlob(dataurl) -{ - var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); - while(n--){ - u8arr[n] = bstr.charCodeAt(n); - } - return new Blob([u8arr], {type:mime}); + + while(n--){ + u8arr[n] = bstr.charCodeAt(n); + } + + return new Blob([u8arr], {type:mime}); } -function FileCopyOnServer(_source, _target, _domainname = ""){ - url = _domainname + "/editflow?task=copy&in=" + _source + "&out=" + _target; - var xhttp = new XMLHttpRequest(); - try { - xhttp.open("GET", url, false); - xhttp.send(); } - catch (error) - { -// firework.launch('Deleting Config.ini failed!', 'danger', 30000); - } +function FileCopyOnServer(_source, _target, _domainname = "") { + url = _domainname + "/editflow?task=copy&in=" + _source + "&out=" + _target; + var xhttp = new XMLHttpRequest(); + + try { + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error) {} } -function FileDeleteOnServer(_filename, _domainname = ""){ - var xhttp = new XMLHttpRequest(); - var okay = false; +function FileDeleteOnServer(_filename, _domainname = "") { + var xhttp = new XMLHttpRequest(); + var okay = false; - xhttp.onreadystatechange = function() { - if (xhttp.readyState == 4) { - if (xhttp.status == 200) { - okay = true; - } else if (xhttp.status == 0) { -// firework.launch('Server closed the connection abruptly!', 'danger', 30000); -// location.reload() - } else { -// firework.launch('An error occured: ' + xhttp.responseText, 'danger', 30000); -// location.reload() - } - } - }; - try { - var url = _domainname + "/delete" + _filename; - xhttp.open("POST", url, false); - xhttp.send(); - } - catch (error) - { -// firework.launch('Deleting Config.ini failed!', 'danger', 30000); - } + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4) { + if (xhttp.status == 200) { + okay = true; + } + else if (xhttp.status == 0) { + // firework.launch('Server closed the connection abruptly!', 'danger', 30000); + // location.reload() + } + else { + // firework.launch('An error occured: ' + xhttp.responseText, 'danger', 30000); + // location.reload() + } + } + }; + + try { + var url = _domainname + "/delete" + _filename; + xhttp.open("POST", url, false); + xhttp.send(); + } catch (error) {} - return okay; + return okay; } -function FileSendContent(_content, _filename, _domainname = ""){ - var xhttp = new XMLHttpRequest(); - var okay = false; +function FileSendContent(_content, _filename, _domainname = "") { + var xhttp = new XMLHttpRequest(); + var okay = false; - xhttp.onreadystatechange = function() { - if (xhttp.readyState == 4) { - if (xhttp.status == 200) { - okay = true; - } else if (xhttp.status == 0) { + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4) { + if (xhttp.status == 200) { + okay = true; + } + else if (xhttp.status == 0) { firework.launch('Server closed the connection abruptly!', 'danger', 30000); - } else { + } + else { firework.launch('An error occured: ' + xhttp.responseText, 'danger', 30000); - } - } - }; + } + } + }; - try { - upload_path = _domainname + "/upload" + _filename; - xhttp.open("POST", upload_path, false); - xhttp.send(_content); - } - catch (error) - { -// firework.launch('Deleting Config.ini failed!', 'danger', 30000); - } + try { + upload_path = _domainname + "/upload" + _filename; + xhttp.open("POST", upload_path, false); + xhttp.send(_content); + } catch (error) {} + return okay; } function MakeRefImageZW(zw, _enhance, _domainname){ - var _filename = zw["name"].replace("/config/", "/img_tmp/"); + var _filename = zw["name"].replace("/config/", "/img_tmp/"); - var url = _domainname + "/editflow?task=cutref&in=/config/reference.jpg&out=" + _filename + "&x=" + zw["x"] + "&y=" + zw["y"] + "&dx=" + zw["dx"] + "&dy=" + zw["dy"]; + var url = _domainname + "/editflow?task=cutref&in=/config/reference.jpg&out=" + _filename + "&x=" + zw["x"] + "&y=" + zw["y"] + "&dx=" + zw["dx"] + "&dy=" + zw["dy"]; - if (_enhance == true){ - url = url + "&enhance=true"; - } + if (_enhance == true){ + url = url + "&enhance=true"; + } - var xhttp = new XMLHttpRequest(); + var xhttp = new XMLHttpRequest(); - try { - xhttp.open("GET", url, false); - xhttp.send(); - } catch (error){} + try { + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error){} - if (xhttp.responseText == "CutImage Done") { - firework.launch('Image Contrast got enhanced', 'success', 5000); - return true; - } - else { - return false; - } + if (xhttp.responseText == "CutImage Done") { + if (_enhance == true) { + firework.launch('Image Contrast got enhanced', 'success', 5000); + } + else { + firework.launch('Alignment Marker have been updated', 'success', 5000); + } + return true; + } + else { + return false; + } } diff --git a/sd-card/html/readconfigparam.js b/sd-card/html/readconfigparam.js index 641b94ec0..91bd1d7f4 100644 --- a/sd-card/html/readconfigparam.js +++ b/sd-card/html/readconfigparam.js @@ -8,706 +8,907 @@ var REFERENCES = new Array(0); function getNUMBERSList() { - _domainname = getDomainname(); - var namenumberslist = ""; - - var xhttp = new XMLHttpRequest(); - xhttp.addEventListener('load', function(event) { - if (xhttp.status >= 200 && xhttp.status < 300) { - namenumberslist = xhttp.responseText; - } else { - console.warn(request.statusText, request.responseText); - } - }); - - try { - url = _domainname + '/editflow?task=namenumbers'; - xhttp.open("GET", url, false); - xhttp.send(); - } - catch (error) - { -// alert("Loading Hostname failed"); - } - - namenumberslist = namenumberslist.split("\t"); -// namenumberslist.pop(); - - return namenumberslist; + _domainname = getDomainname(); + var namenumberslist = ""; + + var xhttp = new XMLHttpRequest(); + + xhttp.addEventListener('load', function(event) { + if (xhttp.status >= 200 && xhttp.status < 300) { + namenumberslist = xhttp.responseText; + } + else { + console.warn(request.statusText, request.responseText); + } + }); + + try { + url = _domainname + '/editflow?task=namenumbers'; + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error) {} + + namenumberslist = namenumberslist.split("\t"); + + return namenumberslist; } function getDATAList() { - _domainname = getDomainname(); - datalist = ""; - - var xhttp = new XMLHttpRequest(); - xhttp.addEventListener('load', function(event) { - if (xhttp.status >= 200 && xhttp.status < 300) { - datalist = xhttp.responseText; - } else { - console.warn(request.statusText, request.responseText); - } - }); - - try { - url = _domainname + '/editflow?task=data'; - xhttp.open("GET", url, false); - xhttp.send(); - } - catch (error) - { -// alert("Loading Hostname failed"); - } - - datalist = datalist.split("\t"); - datalist.pop(); - datalist.sort(); - - return datalist; + _domainname = getDomainname(); + datalist = ""; + + var xhttp = new XMLHttpRequest(); + + xhttp.addEventListener('load', function(event) { + if (xhttp.status >= 200 && xhttp.status < 300) { + datalist = xhttp.responseText; + } + else { + console.warn(request.statusText, request.responseText); + } + }); + + try { + url = _domainname + '/editflow?task=data'; + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error) {} + + datalist = datalist.split("\t"); + datalist.pop(); + datalist.sort(); + + return datalist; } function getTFLITEList() { - _domainname = getDomainname(); - tflitelist = ""; - - var xhttp = new XMLHttpRequest(); - xhttp.addEventListener('load', function(event) { - if (xhttp.status >= 200 && xhttp.status < 300) { - tflitelist = xhttp.responseText; - } else { - console.warn(request.statusText, request.responseText); - } - }); - - try { - url = _domainname + '/editflow?task=tflite'; - xhttp.open("GET", url, false); - xhttp.send(); - } - catch (error) - { -// alert("Loading Hostname failed"); - } - - tflitelist = tflitelist.split("\t"); - tflitelist.sort(); - - return tflitelist; + _domainname = getDomainname(); + tflitelist = ""; + + var xhttp = new XMLHttpRequest(); + + xhttp.addEventListener('load', function(event) { + if (xhttp.status >= 200 && xhttp.status < 300) { + tflitelist = xhttp.responseText; + } + else { + console.warn(request.statusText, request.responseText); + } + }); + + try { + url = _domainname + '/editflow?task=tflite'; + xhttp.open("GET", url, false); + xhttp.send(); + } catch (error) {} + + tflitelist = tflitelist.split("\t"); + tflitelist.sort(); + + return tflitelist; } function ParseConfig() { - config_split = config_gesamt.split("\n"); - var aktline = 0; - - param = new Object(); - category = new Object(); - - var catname = "TakeImage"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "RawImagesLocation"); - ParamAddValue(param, catname, "WaitBeforeTakingPicture"); - ParamAddValue(param, catname, "RawImagesRetention"); - ParamAddValue(param, catname, "Demo"); - ParamAddValue(param, catname, "Brightness"); - ParamAddValue(param, catname, "Contrast"); - ParamAddValue(param, catname, "Saturation"); - ParamAddValue(param, catname, "Sharpness"); - ParamAddValue(param, catname, "LEDIntensity"); - ParamAddValue(param, catname, "ImageQuality"); - ParamAddValue(param, catname, "ImageSize"); - ParamAddValue(param, catname, "Zoom"); - ParamAddValue(param, catname, "ZoomMode"); - ParamAddValue(param, catname, "ZoomOffsetX"); - ParamAddValue(param, catname, "ZoomOffsetY"); - ParamAddValue(param, catname, "Grayscale"); - ParamAddValue(param, catname, "Negative"); - ParamAddValue(param, catname, "Aec2"); - ParamAddValue(param, catname, "AutoExposureLevel"); - ParamAddValue(param, catname, "FixedExposure"); - - var catname = "Alignment"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "InitialRotate"); - ParamAddValue(param, catname, "InitialMirror"); - ParamAddValue(param, catname, "SearchFieldX"); - ParamAddValue(param, catname, "SearchFieldY"); - ParamAddValue(param, catname, "AlignmentAlgo"); - ParamAddValue(param, catname, "FlipImageSize"); - - var catname = "Digits"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "Model"); - ParamAddValue(param, catname, "CNNGoodThreshold", 1); - ParamAddValue(param, catname, "ROIImagesLocation"); - ParamAddValue(param, catname, "ROIImagesRetention"); - - var catname = "Analog"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "Model"); - ParamAddValue(param, catname, "ROIImagesLocation"); - ParamAddValue(param, catname, "ROIImagesRetention"); - - var catname = "PostProcessing"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "DecimalShift", 1, true); - ParamAddValue(param, catname, "AnalogDigitalTransitionStart", 1, true); - ParamAddValue(param, catname, "PreValueUse"); - ParamAddValue(param, catname, "PreValueAgeStartup"); - ParamAddValue(param, catname, "AllowNegativeRates", 1, true, "true"); - ParamAddValue(param, catname, "MaxRateValue", 1, true); - ParamAddValue(param, catname, "MaxRateType", 1, true); - ParamAddValue(param, catname, "ExtendedResolution", 1, true, "false"); - ParamAddValue(param, catname, "IgnoreLeadingNaN", 1, true, "false"); - ParamAddValue(param, catname, "ErrorMessage"); - ParamAddValue(param, catname, "CheckDigitIncreaseConsistency"); - - var catname = "MQTT"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "Uri"); - ParamAddValue(param, catname, "MainTopic", 1, false); - ParamAddValue(param, catname, "ClientID"); - ParamAddValue(param, catname, "user"); - ParamAddValue(param, catname, "password"); - ParamAddValue(param, catname, "RetainMessages"); - ParamAddValue(param, catname, "HomeassistantDiscovery"); - ParamAddValue(param, catname, "MeterType"); - ParamAddValue(param, catname, "CACert"); - ParamAddValue(param, catname, "ClientCert"); - ParamAddValue(param, catname, "ClientKey"); - - var catname = "InfluxDB"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "Uri"); - ParamAddValue(param, catname, "Database"); + config_split = config_gesamt.split("\n"); + var aktline = 0; + + param = new Object(); + category = new Object(); + + var catname = "TakeImage"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "RawImagesLocation"); + ParamAddValue(param, catname, "RawImagesRetention"); + ParamAddValue(param, catname, "WaitBeforeTakingPicture"); + ParamAddValue(param, catname, "CamGainceiling"); // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) + ParamAddValue(param, catname, "CamQuality"); // 0 - 63 + ParamAddValue(param, catname, "CamBrightness"); // (-2 to 2) - set brightness + ParamAddValue(param, catname, "CamContrast"); //-2 - 2 + ParamAddValue(param, catname, "CamSaturation"); //-2 - 2 + ParamAddValue(param, catname, "CamSharpness"); //-2 - 2 + ParamAddValue(param, catname, "CamAutoSharpness"); // (1 or 0) + ParamAddValue(param, catname, "CamSpecialEffect"); // 0 - 6 + ParamAddValue(param, catname, "CamWbMode"); // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) + ParamAddValue(param, catname, "CamAwb"); // white balance enable (0 or 1) + ParamAddValue(param, catname, "CamAwbGain"); // Auto White Balance enable (0 or 1) + ParamAddValue(param, catname, "CamAec"); // auto exposure off (1 or 0) + ParamAddValue(param, catname, "CamAec2"); // automatic exposure sensor (0 or 1) + ParamAddValue(param, catname, "CamAeLevel"); // auto exposure levels (-2 to 2) + ParamAddValue(param, catname, "CamAecValue"); // set exposure manually (0-1200) + ParamAddValue(param, catname, "CamAgc"); // auto gain off (1 or 0) + ParamAddValue(param, catname, "CamAgcGain"); // set gain manually (0 - 30) + ParamAddValue(param, catname, "CamBpc"); // black pixel correction + ParamAddValue(param, catname, "CamWpc"); // white pixel correction + ParamAddValue(param, catname, "CamRawGma"); // (1 or 0) + ParamAddValue(param, catname, "CamLenc"); // lens correction (1 or 0) + ParamAddValue(param, catname, "CamHmirror"); // (0 or 1) flip horizontally + ParamAddValue(param, catname, "CamVflip"); // Invert image (0 or 1) + ParamAddValue(param, catname, "CamDcw"); // downsize enable (1 or 0) + ParamAddValue(param, catname, "CamDenoise"); // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + ParamAddValue(param, catname, "CamZoom"); + ParamAddValue(param, catname, "CamZoomOffsetX"); + ParamAddValue(param, catname, "CamZoomOffsetY"); + ParamAddValue(param, catname, "CamZoomSize"); + ParamAddValue(param, catname, "LEDIntensity"); + ParamAddValue(param, catname, "Demo"); + + var catname = "Alignment"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "InitialRotate"); + ParamAddValue(param, catname, "SearchFieldX"); + ParamAddValue(param, catname, "SearchFieldY"); + ParamAddValue(param, catname, "AlignmentAlgo"); + + var catname = "Digits"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Model"); + ParamAddValue(param, catname, "CNNGoodThreshold", 1); + ParamAddValue(param, catname, "ROIImagesLocation"); + ParamAddValue(param, catname, "ROIImagesRetention"); + + var catname = "Analog"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Model"); + ParamAddValue(param, catname, "ROIImagesLocation"); + ParamAddValue(param, catname, "ROIImagesRetention"); + + var catname = "PostProcessing"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "DecimalShift", 1, true); + ParamAddValue(param, catname, "AnalogToDigitTransitionStart", 1, true, "9.2"); + ParamAddValue(param, catname, "ChangeRateThreshold", 1, true, "2"); + // ParamAddValue(param, catname, "PreValueUse", 1, true, "true"); + ParamAddValue(param, catname, "PreValueUse"); + ParamAddValue(param, catname, "PreValueAgeStartup"); + ParamAddValue(param, catname, "AllowNegativeRates", 1, true, "false"); + ParamAddValue(param, catname, "MaxRateValue", 1, true, "0.05"); + ParamAddValue(param, catname, "MaxRateType", 1, true); + ParamAddValue(param, catname, "ExtendedResolution", 1, true, "false"); + ParamAddValue(param, catname, "IgnoreLeadingNaN", 1, true, "false"); + // ParamAddValue(param, catname, "IgnoreAllNaN", 1, true, "false"); + ParamAddValue(param, catname, "ErrorMessage"); + ParamAddValue(param, catname, "CheckDigitIncreaseConsistency"); + + var catname = "MQTT"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Uri"); + ParamAddValue(param, catname, "MainTopic", 1, false); + ParamAddValue(param, catname, "ClientID"); + ParamAddValue(param, catname, "user"); + ParamAddValue(param, catname, "password"); + ParamAddValue(param, catname, "RetainMessages"); + ParamAddValue(param, catname, "HomeassistantDiscovery"); + ParamAddValue(param, catname, "MeterType"); + ParamAddValue(param, catname, "CACert"); + ParamAddValue(param, catname, "ClientCert"); + ParamAddValue(param, catname, "ClientKey"); + + var catname = "InfluxDB"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Uri"); + ParamAddValue(param, catname, "Database"); // ParamAddValue(param, catname, "Measurement"); - ParamAddValue(param, catname, "user"); - ParamAddValue(param, catname, "password"); - ParamAddValue(param, catname, "Measurement", 1, true); - ParamAddValue(param, catname, "Field", 1, true); - - var catname = "InfluxDBv2"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "Uri"); - ParamAddValue(param, catname, "Bucket"); + ParamAddValue(param, catname, "user"); + ParamAddValue(param, catname, "password"); + ParamAddValue(param, catname, "Measurement", 1, true); + ParamAddValue(param, catname, "Field", 1, true); + + var catname = "InfluxDBv2"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Uri"); + ParamAddValue(param, catname, "Bucket"); // ParamAddValue(param, catname, "Measurement"); - ParamAddValue(param, catname, "Org"); - ParamAddValue(param, catname, "Token"); - ParamAddValue(param, catname, "Measurement", 1, true); - ParamAddValue(param, catname, "Field", 1, true); - - var catname = "GPIO"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "IO0", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "IO1", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "IO3", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "IO4", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "IO12", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "IO13", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); - ParamAddValue(param, catname, "LEDType"); - ParamAddValue(param, catname, "LEDNumbers"); - ParamAddValue(param, catname, "LEDColor", 3); + ParamAddValue(param, catname, "Org"); + ParamAddValue(param, catname, "Token"); + ParamAddValue(param, catname, "Measurement", 1, true); + ParamAddValue(param, catname, "Field", 1, true); + + var catname = "Webhook"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Uri"); + ParamAddValue(param, catname, "ApiKey"); + ParamAddValue(param, catname, "UploadImg"); + + var catname = "GPIO"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "IO0", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "IO1", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "IO3", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "IO4", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "IO12", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "IO13", 6, false, "", [null, null, /^[0-9]*$/, null, null, /^[a-zA-Z0-9_-]*$/]); + ParamAddValue(param, catname, "LEDType"); + ParamAddValue(param, catname, "LEDNumbers"); + ParamAddValue(param, catname, "LEDColor", 3); // Default Values, um abwärtskompatiblität zu gewährleisten - param[catname]["LEDType"]["value1"] = "WS2812"; - param[catname]["LEDNumbers"]["value1"] = "2"; - param[catname]["LEDColor"]["value1"] = "50"; - param[catname]["LEDColor"]["value2"] = "50"; - param[catname]["LEDColor"]["value3"] = "50"; - - - var catname = "AutoTimer"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "AutoStart"); - ParamAddValue(param, catname, "Interval"); - - var catname = "DataLogging"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "DataLogActive"); - ParamAddValue(param, catname, "DataFilesRetention"); - - var catname = "Debug"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "LogLevel"); - ParamAddValue(param, catname, "LogfilesRetention"); - - var catname = "System"; - category[catname] = new Object(); - category[catname]["enabled"] = false; - category[catname]["found"] = false; - param[catname] = new Object(); - ParamAddValue(param, catname, "TimeZone"); - ParamAddValue(param, catname, "TimeServer"); - ParamAddValue(param, catname, "Hostname"); - ParamAddValue(param, catname, "RSSIThreshold"); - ParamAddValue(param, catname, "CPUFrequency"); - ParamAddValue(param, catname, "SetupMode"); + param[catname]["LEDType"]["value1"] = "WS2812"; + param[catname]["LEDNumbers"]["value1"] = "2"; + param[catname]["LEDColor"]["value1"] = "50"; + param[catname]["LEDColor"]["value2"] = "50"; + param[catname]["LEDColor"]["value3"] = "50"; + + var catname = "AutoTimer"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "AutoStart"); + ParamAddValue(param, catname, "Interval"); + + var catname = "DataLogging"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "DataLogActive"); + ParamAddValue(param, catname, "DataFilesRetention"); + + var catname = "Debug"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "LogLevel"); + ParamAddValue(param, catname, "LogfilesRetention"); + + var catname = "System"; + category[catname] = new Object(); + category[catname]["enabled"] = false; + category[catname]["found"] = false; + param[catname] = new Object(); + ParamAddValue(param, catname, "Tooltip"); + ParamAddValue(param, catname, "TimeZone"); + ParamAddValue(param, catname, "TimeServer"); + ParamAddValue(param, catname, "Hostname"); + ParamAddValue(param, catname, "RSSIThreshold"); + ParamAddValue(param, catname, "CPUFrequency"); + ParamAddValue(param, catname, "SetupMode"); - - while (aktline < config_split.length){ - for (var cat in category) { - zw = cat.toUpperCase(); - zw1 = "[" + zw + "]"; - zw2 = ";[" + zw + "]"; - if ((config_split[aktline].trim().toUpperCase() == zw1) || (config_split[aktline].trim().toUpperCase() == zw2)) { - if (config_split[aktline].trim().toUpperCase() == zw1) { - category[cat]["enabled"] = true; - } - category[cat]["found"] = true; - category[cat]["line"] = aktline; - aktline = ParseConfigParamAll(aktline, cat); - continue; - } - } - aktline++; - } - - // Make the downward compatiblity with DataLogging - if (category["DataLogging"]["found"] == false) - { - category["DataLogging"]["found"] = true; - category["DataLogging"]["enabled"] = true; - - param["DataLogging"]["DataLogActive"]["found"] = true; - param["DataLogging"]["DataLogActive"]["enabled"] = true; - param["DataLogging"]["DataLogActive"]["value1"] = "true"; + while (aktline < config_split.length){ + for (var cat in category) { + zw = cat.toUpperCase(); + zw1 = "[" + zw + "]"; + zw2 = ";[" + zw + "]"; + + if ((config_split[aktline].trim().toUpperCase() == zw1) || (config_split[aktline].trim().toUpperCase() == zw2)) { + if (config_split[aktline].trim().toUpperCase() == zw1) { + category[cat]["enabled"] = true; + } + + category[cat]["found"] = true; + category[cat]["line"] = aktline; + aktline = ParseConfigParamAll(aktline, cat); + continue; + } + } + + aktline++; + } + + // Make the downward compatiblity with DataLogging + if (category["DataLogging"]["found"] == false) { + category["DataLogging"]["found"] = true; + category["DataLogging"]["enabled"] = true; + + param["DataLogging"]["DataLogActive"]["found"] = true; + param["DataLogging"]["DataLogActive"]["enabled"] = true; + param["DataLogging"]["DataLogActive"]["value1"] = "true"; - param["DataLogging"]["DataFilesRetention"]["found"] = true; - param["DataLogging"]["DataFilesRetention"]["enabled"] = true; - param["DataLogging"]["DataFilesRetention"]["value1"] = "3"; - } - - if (category["DataLogging"]["enabled"] == false) - category["DataLogging"]["enabled"] = true - - if (param["DataLogging"]["DataLogActive"]["enabled"] == false && param["DataLogging"]["DataLogActive"]["value1"] == "") - { - param["DataLogging"]["DataLogActive"]["found"] = true; - param["DataLogging"]["DataLogActive"]["enabled"] = true; - param["DataLogging"]["DataLogActive"]["value1"] = "true"; - } - - if (param["DataLogging"]["DataFilesRetention"]["enabled"] == false && param["DataLogging"]["DataFilesRetention"]["value1"] == "") - { - param["DataLogging"]["DataFilesRetention"]["found"] = true; - param["DataLogging"]["DataFilesRetention"]["enabled"] = true; - param["DataLogging"]["DataFilesRetention"]["value1"] = "3"; - } - - // Downward compatibility: Create RSSIThreshold if not available - if (param["System"]["RSSIThreshold"]["found"] == false) - { - param["System"]["RSSIThreshold"]["found"] = true; - param["System"]["RSSIThreshold"]["enabled"] = false; - param["System"]["RSSIThreshold"]["value1"] = "0"; - } + param["DataLogging"]["DataFilesRetention"]["found"] = true; + param["DataLogging"]["DataFilesRetention"]["enabled"] = true; + param["DataLogging"]["DataFilesRetention"]["value1"] = "3"; + } + + if (category["DataLogging"]["enabled"] == false) { + category["DataLogging"]["enabled"] = true + } + + if (param["DataLogging"]["DataLogActive"]["enabled"] == false && param["DataLogging"]["DataLogActive"]["value1"] == "") { + param["DataLogging"]["DataLogActive"]["found"] = true; + param["DataLogging"]["DataLogActive"]["enabled"] = true; + param["DataLogging"]["DataLogActive"]["value1"] = "true"; + } + + if (param["DataLogging"]["DataFilesRetention"]["enabled"] == false && param["DataLogging"]["DataFilesRetention"]["value1"] == "") { + param["DataLogging"]["DataFilesRetention"]["found"] = true; + param["DataLogging"]["DataFilesRetention"]["enabled"] = true; + param["DataLogging"]["DataFilesRetention"]["value1"] = "3"; + } + + // Downward compatibility: Create RSSIThreshold if not available + if (param["System"]["RSSIThreshold"]["found"] == false) { + param["System"]["RSSIThreshold"]["found"] = true; + param["System"]["RSSIThreshold"]["enabled"] = false; + param["System"]["RSSIThreshold"]["value1"] = "0"; + } } -function ParamAddValue(param, _cat, _param, _anzParam = 1, _isNUMBER = false, _defaultValue = "", _checkRegExList = null){ - param[_cat][_param] = new Object(); - param[_cat][_param]["found"] = false; - param[_cat][_param]["enabled"] = false; - param[_cat][_param]["line"] = -1; - param[_cat][_param]["anzParam"] = _anzParam; - param[_cat][_param]["defaultValue"] = _defaultValue; - param[_cat][_param]["Numbers"] = _isNUMBER; - param[_cat][_param].checkRegExList = _checkRegExList; +function ParamAddValue(param, _cat, _param, _anzParam = 1, _isNUMBER = false, _defaultValue = "", _checkRegExList = null) { + param[_cat][_param] = new Object(); + param[_cat][_param]["found"] = false; + param[_cat][_param]["enabled"] = false; + param[_cat][_param]["line"] = -1; + param[_cat][_param]["anzParam"] = _anzParam; + param[_cat][_param]["defaultValue"] = _defaultValue; + param[_cat][_param]["Numbers"] = _isNUMBER; + param[_cat][_param].checkRegExList = _checkRegExList; }; -function ParseConfigParamAll(_aktline, _catname){ - ++_aktline; - - while ((_aktline < config_split.length) - && !(config_split[_aktline][0] == "[") - && !((config_split[_aktline][0] == ";") && (config_split[_aktline][1] == "["))) { - var _input = config_split[_aktline]; - let [isCom, input] = isCommented(_input); - var linesplit = ZerlegeZeile(input); - ParamExtractValueAll(param, linesplit, _catname, _aktline, isCom); - if (!isCom && (linesplit.length >= 5) && (_catname == 'Digits')) - ExtractROIs(input, "digit"); - if (!isCom && (linesplit.length >= 5) && (_catname == 'Analog')) - ExtractROIs(input, "analog"); - if (!isCom && (linesplit.length == 3) && (_catname == 'Alignment')) - { - _newref = new Object(); - _newref["name"] = linesplit[0]; - _newref["x"] = linesplit[1]; - _newref["y"] = linesplit[2]; - REFERENCES.push(_newref); - } - - ++_aktline; - } - return _aktline; + +function ParseConfigParamAll(_aktline, _catname) { + ++_aktline; + + while ((_aktline < config_split.length) && !(config_split[_aktline][0] == "[") && !((config_split[_aktline][0] == ";") && (config_split[_aktline][1] == "["))) { + var _input = config_split[_aktline]; + let [isCom, input] = isCommented(_input); + var linesplit = ZerlegeZeile(input); + ParamExtractValueAll(param, linesplit, _catname, _aktline, isCom); + + if (!isCom && (linesplit.length >= 5) && (_catname == 'Digits')) { + ExtractROIs(input, "digit"); + } + + if (!isCom && (linesplit.length >= 5) && (_catname == 'Analog')) { + ExtractROIs(input, "analog"); + } + + if (!isCom && (linesplit.length == 3) && (_catname == 'Alignment')) { + _newref = new Object(); + _newref["name"] = linesplit[0]; + _newref["x"] = linesplit[1]; + _newref["y"] = linesplit[2]; + REFERENCES.push(_newref); + } + + ++_aktline; + } + + return _aktline; } -function ParamExtractValue(_param, _linesplit, _catname, _paramname, _aktline, _iscom, _anzvalue = 1){ - if ((_linesplit[0].toUpperCase() == _paramname.toUpperCase()) && (_linesplit.length > _anzvalue)) - { - _param[_catname][_paramname]["found"] = true; - _param[_catname][_paramname]["enabled"] = !_iscom; - _param[_catname][_paramname]["line"] = _aktline; - _param[_catname][_paramname]["anzpara"] = _anzvalue; - for (var j = 1; j <= _anzvalue; ++j) { - _param[_catname][_paramname]["value"+j] = _linesplit[j]; - } - } + +function ParamExtractValue(_param, _linesplit, _catname, _paramname, _aktline, _iscom, _anzvalue = 1) { + if ((_linesplit[0].toUpperCase() == _paramname.toUpperCase()) && (_linesplit.length > _anzvalue)) { + _param[_catname][_paramname]["found"] = true; + _param[_catname][_paramname]["enabled"] = !_iscom; + _param[_catname][_paramname]["line"] = _aktline; + _param[_catname][_paramname]["anzpara"] = _anzvalue; + + for (var j = 1; j <= _anzvalue; ++j) { + _param[_catname][_paramname]["value"+j] = _linesplit[j]; + } + } } -function ParamExtractValueAll(_param, _linesplit, _catname, _aktline, _iscom){ - for (var paramname in _param[_catname]) { - _AktROI = "default"; - _AktPara = _linesplit[0]; - _pospunkt = _AktPara.indexOf ("."); - if (_pospunkt > -1) - { - _AktROI = _AktPara.substring(0, _pospunkt); - _AktPara = _AktPara.substring(_pospunkt+1); - } - if (_AktPara.toUpperCase() == paramname.toUpperCase()) - { - while (_linesplit.length <= _param[_catname][paramname]["anzParam"]) { - _linesplit.push(""); - } - - _param[_catname][paramname]["found"] = true; - _param[_catname][paramname]["enabled"] = !_iscom; - _param[_catname][paramname]["line"] = _aktline; - if (_param[_catname][paramname]["Numbers"] == true) // möglicher Multiusage - { - abc = getNUMBERS(_linesplit[0]); - abc[_catname][paramname] = new Object; - abc[_catname][paramname]["found"] = true; - abc[_catname][paramname]["enabled"] = !_iscom; + +function ParamExtractValueAll(_param, _linesplit, _catname, _aktline, _iscom) { + for (var paramname in _param[_catname]) { + _AktROI = "default"; + _AktPara = _linesplit[0]; + _pospunkt = _AktPara.indexOf ("."); + + if (_pospunkt > -1) { + _AktROI = _AktPara.substring(0, _pospunkt); + _AktPara = _AktPara.substring(_pospunkt+1); + } + + if (_AktPara.toUpperCase() == paramname.toUpperCase()) { + while (_linesplit.length <= _param[_catname][paramname]["anzParam"]) { + _linesplit.push(""); + } + + _param[_catname][paramname]["found"] = true; + _param[_catname][paramname]["enabled"] = !_iscom; + _param[_catname][paramname]["line"] = _aktline; + + if (_param[_catname][paramname]["Numbers"] == true) { // möglicher Multiusage + abc = getNUMBERS(_linesplit[0]); + abc[_catname][paramname] = new Object; + abc[_catname][paramname]["found"] = true; + abc[_catname][paramname]["enabled"] = !_iscom; - for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { - abc[_catname][paramname]["value"+j] = _linesplit[j]; - } - if (abc["name"] == "default") - { - for (_num in NUMBERS) // wert mit Default belegen - { - if (NUMBERS[_num][_catname][paramname]["found"] == false) - { - NUMBERS[_num][_catname][paramname]["found"] = true; - NUMBERS[_num][_catname][paramname]["enabled"] = !_iscom; - NUMBERS[_num][_catname][paramname]["line"] = _aktline; - for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { - NUMBERS[_num][_catname][paramname]["value"+j] = _linesplit[j]; - } - - } - } + for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { + abc[_catname][paramname]["value"+j] = _linesplit[j]; + } + + if (abc["name"] == "default") { + for (_num in NUMBERS) { // wert mit Default belegen + if (NUMBERS[_num][_catname][paramname]["found"] == false) { + NUMBERS[_num][_catname][paramname]["found"] = true; + NUMBERS[_num][_catname][paramname]["enabled"] = !_iscom; + NUMBERS[_num][_catname][paramname]["line"] = _aktline; + + for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { + NUMBERS[_num][_catname][paramname]["value"+j] = _linesplit[j]; + } + } } - } - else - { - _param[_catname][paramname]["found"] = true; - _param[_catname][paramname]["enabled"] = !_iscom; - _param[_catname][paramname]["line"] = _aktline; - for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { - _param[_catname][paramname]["value"+j] = _linesplit[j]; - } - } - } - } + } + } + else { + _param[_catname][paramname]["found"] = true; + _param[_catname][paramname]["enabled"] = !_iscom; + _param[_catname][paramname]["line"] = _aktline; + + for (var j = 1; j <= _param[_catname][paramname]["anzParam"]; ++j) { + _param[_catname][paramname]["value"+j] = _linesplit[j]; + } + } + } + } } + +function getCamConfig() { + ParseConfig(); + + param["System"]["Tooltip"]["enabled"] = true; + param["Alignment"]["InitialRotate"]["enabled"] = true; + + param["TakeImage"]["WaitBeforeTakingPicture"]["enabled"] = true; + param["TakeImage"]["CamGainceiling"]["enabled"] = true; // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128) + param["TakeImage"]["CamQuality"]["enabled"] = true; // 0 - 63 + param["TakeImage"]["CamBrightness"]["enabled"] = true; // (-2 to 2) - set brightness + param["TakeImage"]["CamContrast"]["enabled"] = true; //-2 - 2 + param["TakeImage"]["CamSaturation"]["enabled"] = true; //-2 - 2 + param["TakeImage"]["CamSharpness"]["enabled"] = true; //-2 - 2 + param["TakeImage"]["CamAutoSharpness"]["enabled"] = true; //(1 or 0) + param["TakeImage"]["CamSpecialEffect"]["enabled"] = true; // 0 - 6 + param["TakeImage"]["CamWbMode"]["enabled"] = true; // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home) + param["TakeImage"]["CamAwb"]["enabled"] = true; // white balance enable (0 or 1) + param["TakeImage"]["CamAwbGain"]["enabled"] = true; // Auto White Balance enable (0 or 1) + param["TakeImage"]["CamAec"]["enabled"] = true; // auto exposure off (1 or 0) + param["TakeImage"]["CamAec2"]["enabled"] = true; // automatic exposure sensor (0 or 1) + param["TakeImage"]["CamAeLevel"]["enabled"] = true; // auto exposure levels (-2 to 2) + param["TakeImage"]["CamAecValue"]["enabled"] = true; // set exposure manually (0-1200) + param["TakeImage"]["CamAgc"]["enabled"] = true; // auto gain off (1 or 0) + param["TakeImage"]["CamAgcGain"]["enabled"] = true; // set gain manually (0 - 30) + param["TakeImage"]["CamBpc"]["enabled"] = true; // black pixel correction + param["TakeImage"]["CamWpc"]["enabled"] = true; // white pixel correction + param["TakeImage"]["CamRawGma"]["enabled"] = true; // (1 or 0) + param["TakeImage"]["CamLenc"]["enabled"] = true; // lens correction (1 or 0) + param["TakeImage"]["CamHmirror"]["enabled"] = true; // (0 or 1) flip horizontally + param["TakeImage"]["CamVflip"]["enabled"] = true; // Invert image (0 or 1) + param["TakeImage"]["CamDcw"]["enabled"] = true; // downsize enable (1 or 0) + param["TakeImage"]["CamDenoise"]["enabled"] = true; // The OV2640 does not support it, OV3660 and OV5640 (0 to 8) + param["TakeImage"]["CamZoom"]["enabled"] = true; + param["TakeImage"]["CamZoomOffsetX"]["enabled"] = true; + param["TakeImage"]["CamZoomOffsetY"]["enabled"] = true; + param["TakeImage"]["CamZoomSize"]["enabled"] = true; + param["TakeImage"]["LEDIntensity"]["enabled"] = true; + + if (!param["System"]["Tooltip"]["found"]) { + param["System"]["Tooltip"]["found"] = true; + param["System"]["Tooltip"].value1 = 'true'; + } + + if (!param["Alignment"]["InitialRotate"]["found"]) { + param["Alignment"]["InitialRotate"]["found"] = true; + param["Alignment"]["InitialRotate"].value1 = 'false'; + } + + if (!param["TakeImage"]["WaitBeforeTakingPicture"]["found"]) { + param["TakeImage"]["WaitBeforeTakingPicture"]["found"] = true; + param["TakeImage"]["WaitBeforeTakingPicture"].value1 = '5'; + } + if (!param["TakeImage"]["CamGainceiling"]["found"]) { + param["TakeImage"]["CamGainceiling"]["found"] = true; + // param["TakeImage"]["CamGainceiling"].value1 = '2'; + param["TakeImage"]["CamGainceiling"].value1 = 'x8'; + } + if (!param["TakeImage"]["CamQuality"]["found"]) { + param["TakeImage"]["CamQuality"]["found"] = true; + param["TakeImage"]["CamQuality"].value1 = '10'; + } + if (!param["TakeImage"]["CamBrightness"]["found"]) { + param["TakeImage"]["CamBrightness"]["found"] = true; + param["TakeImage"]["CamBrightness"].value1 = '0'; + } + if (!param["TakeImage"]["CamContrast"]["found"]) { + param["TakeImage"]["CamContrast"]["found"] = true; + param["TakeImage"]["CamContrast"].value1 = '0'; + } + if (!param["TakeImage"]["CamSaturation"]["found"]) { + param["TakeImage"]["CamSaturation"]["found"] = true; + param["TakeImage"]["CamSaturation"].value1 = '0'; + } + if (!param["TakeImage"]["CamSharpness"]["found"]) { + param["TakeImage"]["CamSharpness"]["found"] = true; + param["TakeImage"]["CamSharpness"].value1 = '0'; + } + if (!param["TakeImage"]["CamAutoSharpness"]["found"]) { + param["TakeImage"]["CamAutoSharpness"]["found"] = true; + param["TakeImage"]["CamAutoSharpness"].value1 = 'false'; + } + if (!param["TakeImage"]["CamSpecialEffect"]["found"]) { + param["TakeImage"]["CamSpecialEffect"]["found"] = true; + param["TakeImage"]["CamSpecialEffect"].value1 = 'no_effect'; + } + if (!param["TakeImage"]["CamWbMode"]["found"]) { + param["TakeImage"]["CamWbMode"]["found"] = true; + param["TakeImage"]["CamWbMode"].value1 = 'auto'; + } + if (!param["TakeImage"]["CamAwb"]["found"]) { + param["TakeImage"]["CamAwb"]["found"] = true; + param["TakeImage"]["CamAwb"].value1 = 'true'; + } + if (!param["TakeImage"]["CamAwbGain"]["found"]) { + param["TakeImage"]["CamAwbGain"]["found"] = true; + param["TakeImage"]["CamAwbGain"].value1 = 'true'; + } + if (!param["TakeImage"]["CamAec"]["found"]) { + param["TakeImage"]["CamAec"]["found"] = true; + param["TakeImage"]["CamAec"].value1 = 'true'; + } + if (!param["TakeImage"]["CamAec2"]["found"]) { + param["TakeImage"]["CamAec2"]["found"] = true; + param["TakeImage"]["CamAec2"].value1 = 'true'; + } + if (!param["TakeImage"]["CamAeLevel"]["found"]) { + param["TakeImage"]["CamAeLevel"]["found"] = true; + param["TakeImage"]["CamAeLevel"].value1 = '2'; + } + if (!param["TakeImage"]["CamAecValue"]["found"]) { + param["TakeImage"]["CamAecValue"]["found"] = true; + param["TakeImage"]["CamAecValue"].value1 = '600'; + } + if (!param["TakeImage"]["CamAgc"]["found"]) { + param["TakeImage"]["CamAgc"]["found"] = true; + param["TakeImage"]["CamAgc"].value1 = 'true'; + } + if (!param["TakeImage"]["CamAgcGain"]["found"]) { + param["TakeImage"]["CamAgcGain"]["found"] = true; + param["TakeImage"]["CamAgcGain"].value1 = '8'; + } + if (!param["TakeImage"]["CamBpc"]["found"]) { + param["TakeImage"]["CamBpc"]["found"] = true; + param["TakeImage"]["CamBpc"].value1 = 'true'; + } + if (!param["TakeImage"]["CamWpc"]["found"]) { + param["TakeImage"]["CamWpc"]["found"] = true; + param["TakeImage"]["CamWpc"].value1 = 'true'; + } + if (!param["TakeImage"]["CamRawGma"]["found"]) { + param["TakeImage"]["CamRawGma"]["found"] = true; + param["TakeImage"]["CamRawGma"].value1 = 'true'; + } + if (!param["TakeImage"]["CamLenc"]["found"]) { + param["TakeImage"]["CamLenc"]["found"] = true; + param["TakeImage"]["CamLenc"].value1 = 'true'; + } + if (!param["TakeImage"]["CamHmirror"]["found"]) { + param["TakeImage"]["CamHmirror"]["found"] = true; + param["TakeImage"]["CamHmirror"].value1 = 'false'; + } + if (!param["TakeImage"]["CamVflip"]["found"]) { + param["TakeImage"]["CamVflip"]["found"] = true; + param["TakeImage"]["CamVflip"].value1 = 'false'; + } + if (!param["TakeImage"]["CamDcw"]["found"]) { + param["TakeImage"]["CamDcw"]["found"] = true; + param["TakeImage"]["CamDcw"].value1 = 'true'; + } + if (!param["TakeImage"]["CamDenoise"]["found"]) { + param["TakeImage"]["CamDenoise"]["found"] = true; + param["TakeImage"]["CamDenoise"].value1 = '0'; + } + if (!param["TakeImage"]["CamZoom"]["found"]) { + param["TakeImage"]["CamZoom"]["found"] = true; + param["TakeImage"]["CamZoom"].value1 = 'false'; + } + if (!param["TakeImage"]["CamZoomOffsetX"]["found"]) { + param["TakeImage"]["CamZoomOffsetX"]["found"] = true; + param["TakeImage"]["CamZoomOffsetX"].value1 = '0'; + } + if (!param["TakeImage"]["CamZoomOffsetY"]["found"]) { + param["TakeImage"]["CamZoomOffsetY"]["found"] = true; + param["TakeImage"]["CamZoomOffsetY"].value1 = '0'; + } + if (!param["TakeImage"]["CamZoomSize"]["found"]) { + param["TakeImage"]["CamZoomSize"]["found"] = true; + param["TakeImage"]["CamZoomSize"].value1 = '0'; + } + if (!param["TakeImage"]["LEDIntensity"]["found"]) { + param["TakeImage"]["LEDIntensity"]["found"] = true; + param["TakeImage"]["LEDIntensity"].value1 = '50'; + } + + return param; +} + + function getConfigParameters() { - return param; + return param; } -function WriteConfigININew() -{ - // Cleanup empty NUMBERS - for (var j = 0; j < NUMBERS.length; ++j) - { - if ((NUMBERS[j]["digit"].length + NUMBERS[j]["analog"].length) == 0) - { - NUMBERS.splice(j, 1); - } - } - - config_split = new Array(0); - - for (var cat in param) { - text = "[" + cat + "]"; - if (!category[cat]["enabled"]) { - text = ";" + text; - } - config_split.push(text); - - for (var name in param[cat]) { - if (param[cat][name]["Numbers"]) - { - for (_num in NUMBERS) - { - text = NUMBERS[_num]["name"] + "." + name; - - var text = text + " =" + +function WriteConfigININew() { + // Cleanup empty NUMBERS + for (var j = 0; j < NUMBERS.length; ++j) { + if ((NUMBERS[j]["digit"].length + NUMBERS[j]["analog"].length) == 0) { + NUMBERS.splice(j, 1); + } + } + + config_split = new Array(0); + + for (var cat in param) { + text = "[" + cat + "]"; + + if (!category[cat]["enabled"]) { + text = ";" + text; + } + + config_split.push(text); + + for (var name in param[cat]) { + if (param[cat][name]["Numbers"]) { + for (_num in NUMBERS) { + text = NUMBERS[_num]["name"] + "." + name; + + var text = text + " =" - for (var j = 1; j <= param[cat][name]["anzParam"]; ++j) { - if (!(typeof NUMBERS[_num][cat][name]["value"+j] == 'undefined')) - text = text + " " + NUMBERS[_num][cat][name]["value"+j]; - } - if (!NUMBERS[_num][cat][name]["enabled"]) { - text = ";" + text; - } - config_split.push(text); - } - } - else - { - var text = name + " =" - for (var j = 1; j <= param[cat][name]["anzParam"]; ++j) { - if (!(typeof param[cat][name]["value"+j] == 'undefined')) - text = text + " " + param[cat][name]["value"+j]; - } - if (!param[cat][name]["enabled"]) { - text = ";" + text; + if (!(typeof NUMBERS[_num][cat][name]["value"+j] == 'undefined')) { + text = text + " " + NUMBERS[_num][cat][name]["value"+j]; + } + } + + if (!NUMBERS[_num][cat][name]["enabled"]) { + text = ";" + text; } + config_split.push(text); - } - } - if (cat == "Digits") - { - for (var _roi in NUMBERS) - { - if (NUMBERS[_roi]["digit"].length > 0) - { - for (var _roiddet in NUMBERS[_roi]["digit"]) - { - text = NUMBERS[_roi]["name"] + "." + NUMBERS[_roi]["digit"][_roiddet]["name"]; - text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["x"]; - text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["y"]; - text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["dx"]; - text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["dy"]; - text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["CCW"]; - config_split.push(text); - } + } + } + else { + var text = name + " =" + + for (var j = 1; j <= param[cat][name]["anzParam"]; ++j) { + if (!(typeof param[cat][name]["value"+j] == 'undefined')) { + text = text + " " + param[cat][name]["value"+j]; } - } - } - if (cat == "Analog") - { - for (var _roi in NUMBERS) - { - if (NUMBERS[_roi]["analog"].length > 0) - { - for (var _roiddet in NUMBERS[_roi]["analog"]) - { - text = NUMBERS[_roi]["name"] + "." + NUMBERS[_roi]["analog"][_roiddet]["name"]; - text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["x"]; - text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["y"]; - text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["dx"]; - text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["dy"]; - text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["CCW"]; - config_split.push(text); - } + } + + if (!param[cat][name]["enabled"]) { + text = ";" + text; + } + + config_split.push(text); + } + } + + if (cat == "Digits") { + for (var _roi in NUMBERS) { + if (NUMBERS[_roi]["digit"].length > 0) { + for (var _roiddet in NUMBERS[_roi]["digit"]) { + text = NUMBERS[_roi]["name"] + "." + NUMBERS[_roi]["digit"][_roiddet]["name"]; + text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["x"]; + text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["y"]; + text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["dx"]; + text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["dy"]; + text = text + " " + NUMBERS[_roi]["digit"][_roiddet]["CCW"]; + config_split.push(text); } - } - } - if (cat == "Alignment") - { - for (var _roi in REFERENCES) - { - text = REFERENCES[_roi]["name"]; - text = text + " " + REFERENCES[_roi]["x"]; - text = text + " " + REFERENCES[_roi]["y"]; - config_split.push(text); - } - } - - config_split.push(""); - } + } + } + } + + if (cat == "Analog") { + for (var _roi in NUMBERS) { + if (NUMBERS[_roi]["analog"].length > 0) { + for (var _roiddet in NUMBERS[_roi]["analog"]) { + text = NUMBERS[_roi]["name"] + "." + NUMBERS[_roi]["analog"][_roiddet]["name"]; + text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["x"]; + text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["y"]; + text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["dx"]; + text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["dy"]; + text = text + " " + NUMBERS[_roi]["analog"][_roiddet]["CCW"]; + config_split.push(text); + } + } + } + } + + if (cat == "Alignment") { + for (var _roi in REFERENCES) { + text = REFERENCES[_roi]["name"]; + text = text + " " + REFERENCES[_roi]["x"]; + text = text + " " + REFERENCES[_roi]["y"]; + config_split.push(text); + } + } + + config_split.push(""); + } } -function isCommented(input) - { - let isComment = false; - if (input.charAt(0) == ';') { - isComment = true; - input = input.substr(1, input.length-1); - }; - return [isComment, input]; - } +function isCommented(input) { + let isComment = false; + + if (input.charAt(0) == ';') { + isComment = true; + input = input.substr(1, input.length-1); + } + + return [isComment, input]; +} + function SaveConfigToServer(_domainname){ - // leere Zeilen am Ende löschen - var zw = config_split.length - 1; - while (config_split[zw] == "") { - config_split.pop(); - } - - var config_gesamt = ""; - for (var i = 0; i < config_split.length; ++i) - { - config_gesamt = config_gesamt + config_split[i] + "\n"; - } - - FileDeleteOnServer("/config/config.ini", _domainname); - FileSendContent(config_gesamt, "/config/config.ini", _domainname); + // leere Zeilen am Ende löschen + var zw = config_split.length - 1; + + while (config_split[zw] == "") { + config_split.pop(); + } + + var config_gesamt = ""; + + for (var i = 0; i < config_split.length; ++i) + { + config_gesamt = config_gesamt + config_split[i] + "\n"; + } + + FileDeleteOnServer("/config/config.ini", _domainname); + FileSendContent(config_gesamt, "/config/config.ini", _domainname); } + function getConfig() { - return config_gesamt; - } + return config_gesamt; +} + function getConfigCategory() { - return category; + return category; } function ExtractROIs(_aktline, _type){ - var linesplit = ZerlegeZeile(_aktline); - abc = getNUMBERS(linesplit[0], _type); - abc["pos_ref"] = _aktline; - abc["x"] = linesplit[1]; - abc["y"] = linesplit[2]; - abc["dx"] = linesplit[3]; - abc["dy"] = linesplit[4]; - abc["ar"] = parseFloat(linesplit[3]) / parseFloat(linesplit[4]); - abc["CCW"] = "false"; - if (linesplit.length >= 6) - abc["CCW"] = linesplit[5]; + var linesplit = ZerlegeZeile(_aktline); + abc = getNUMBERS(linesplit[0], _type); + abc["pos_ref"] = _aktline; + abc["x"] = linesplit[1]; + abc["y"] = linesplit[2]; + abc["dx"] = linesplit[3]; + abc["dy"] = linesplit[4]; + abc["ar"] = parseFloat(linesplit[3]) / parseFloat(linesplit[4]); + abc["CCW"] = "false"; + + if (linesplit.length >= 6) { + abc["CCW"] = linesplit[5]; + } } -function getNUMBERS(_name, _type, _create = true) -{ - _pospunkt = _name.indexOf ("."); - if (_pospunkt > -1) - { - _digit = _name.substring(0, _pospunkt); - _roi = _name.substring(_pospunkt+1); - } - else - { - _digit = "default"; - _roi = _name; - } - - _ret = -1; - - for (i = 0; i < NUMBERS.length; ++i) - { - if (NUMBERS[i]["name"] == _digit) - _ret = NUMBERS[i]; - } - - if (!_create) // nicht gefunden und soll auch nicht erzeugt werden, ggf. geht eine NULL zurück - return _ret; - - if (_ret == -1) - { - _ret = new Object(); - _ret["name"] = _digit; - _ret['digit'] = new Array(); - _ret['analog'] = new Array(); - - for (_cat in param) - for (_param in param[_cat]) - if (param[_cat][_param]["Numbers"] == true){ - if (typeof _ret[_cat] == 'undefined') - _ret[_cat] = new Object(); - _ret[_cat][_param] = new Object(); - _ret[_cat][_param]["found"] = false; - _ret[_cat][_param]["enabled"] = false; - _ret[_cat][_param]["anzParam"] = param[_cat][_param]["anzParam"]; +function getNUMBERS(_name, _type, _create = true) { + _pospunkt = _name.indexOf ("."); + + if (_pospunkt > -1) { + _digit = _name.substring(0, _pospunkt); + _roi = _name.substring(_pospunkt+1); + } + else { + _digit = "default"; + _roi = _name; + } - } + _ret = -1; - NUMBERS.push(_ret); - } + for (i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _digit) { + _ret = NUMBERS[i]; + } + } - if (typeof _type == 'undefined') // muss schon existieren !!! - also erst nach Digits / Analog aufrufen + if (!_create) { // nicht gefunden und soll auch nicht erzeugt werden, ggf. geht eine NULL zurück return _ret; + } - neuroi = new Object(); - neuroi["name"] = _roi; - _ret[_type].push(neuroi); + if (_ret == -1) { + _ret = new Object(); + _ret["name"] = _digit; + _ret['digit'] = new Array(); + _ret['analog'] = new Array(); + + for (_cat in param) { + for (_param in param[_cat]) { + if (param[_cat][_param]["Numbers"] == true){ + if (typeof _ret[_cat] == 'undefined') { + _ret[_cat] = new Object(); + } + + _ret[_cat][_param] = new Object(); + _ret[_cat][_param]["found"] = false; + _ret[_cat][_param]["enabled"] = false; + _ret[_cat][_param]["anzParam"] = param[_cat][_param]["anzParam"]; + } + } + } + + NUMBERS.push(_ret); + } + if (typeof _type == 'undefined') { // muss schon existieren !!! - also erst nach Digits / Analog aufrufen + return _ret; + } - return neuroi; + neuroi = new Object(); + neuroi["name"] = _roi; + _ret[_type].push(neuroi); + return neuroi; } -function CopyReferenceToImgTmp(_domainname) -{ - for (index = 0; index < 2; ++index) - { - _filenamevon = REFERENCES[index]["name"]; - _filenamenach = _filenamevon.replace("/config/", "/img_tmp/"); - FileDeleteOnServer(_filenamenach, _domainname); - FileCopyOnServer(_filenamevon, _filenamenach, _domainname); +function CopyReferenceToImgTmp(_domainname) { + for (index = 0; index < 2; ++index) { + _filenamevon = REFERENCES[index]["name"]; + _filenamenach = _filenamevon.replace("/config/", "/img_tmp/"); + FileDeleteOnServer(_filenamenach, _domainname); + FileCopyOnServer(_filenamevon, _filenamenach, _domainname); - _filenamevon = _filenamevon.replace(".jpg", "_org.jpg"); - _filenamenach = _filenamenach.replace(".jpg", "_org.jpg"); - FileDeleteOnServer(_filenamenach, _domainname); - FileCopyOnServer(_filenamevon, _filenamenach, _domainname); - } + _filenamevon = _filenamevon.replace(".jpg", "_org.jpg"); + _filenamenach = _filenamenach.replace(".jpg", "_org.jpg"); + FileDeleteOnServer(_filenamenach, _domainname); + FileCopyOnServer(_filenamevon, _filenamenach, _domainname); + } } + function GetReferencesInfo(){ - return REFERENCES; + return REFERENCES; } function UpdateConfigReferences(_domainname){ - for (var index = 0; index < 2; ++index) - { - _filenamenach = REFERENCES[index]["name"]; - _filenamevon = _filenamenach.replace("/config/", "/img_tmp/"); - FileDeleteOnServer(_filenamenach, _domainname); - FileCopyOnServer(_filenamevon, _filenamenach, _domainname); + for (var index = 0; index < 2; ++index) { + _filenamenach = REFERENCES[index]["name"]; + _filenamevon = _filenamenach.replace("/config/", "/img_tmp/"); + FileDeleteOnServer(_filenamenach, _domainname); + FileCopyOnServer(_filenamevon, _filenamenach, _domainname); - _filenamenach = _filenamenach.replace(".jpg", "_org.jpg"); - _filenamevon = _filenamevon.replace(".jpg", "_org.jpg"); - FileDeleteOnServer(_filenamenach, _domainname); - FileCopyOnServer(_filenamevon, _filenamenach, _domainname); - } + _filenamenach = _filenamenach.replace(".jpg", "_org.jpg"); + _filenamevon = _filenamevon.replace(".jpg", "_org.jpg"); + FileDeleteOnServer(_filenamenach, _domainname); + FileCopyOnServer(_filenamevon, _filenamenach, _domainname); + } } @@ -740,186 +941,217 @@ function getNUMBERInfo(){ return NUMBERS; } + function RenameNUMBER(_alt, _neu){ - if ((_neu.indexOf(".") >= 0) || (_neu.indexOf(",") >= 0) || - (_neu.indexOf(" ") >= 0) || (_neu.indexOf("\"") >= 0)) - { - return "Number sequence name must not contain , . \" or a space"; - } - - index = -1; - found = false; - for (i = 0; i < NUMBERS.length; ++i) { - if (NUMBERS[i]["name"] == _alt) - index = i; - if (NUMBERS[i]["name"] == _neu) - found = true; - } - - if (found) - return "Number sequence name is already existing, please choose another name"; - - NUMBERS[index]["name"] = _neu; + if ((_neu.indexOf(".") >= 0) || (_neu.indexOf(",") >= 0) || (_neu.indexOf(" ") >= 0) || (_neu.indexOf("\"") >= 0)) { + return "Number sequence name must not contain , . \" or a space"; + } + + index = -1; + found = false; + + for (i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _alt) { + index = i; + } + + if (NUMBERS[i]["name"] == _neu) { + found = true; + } + } + + if (found) { + return "Number sequence name is already existing, please choose another name"; + } + + NUMBERS[index]["name"] = _neu; - return ""; + return ""; } + function DeleteNUMBER(_delete){ - if (NUMBERS.length == 1) - return "One number sequence is mandatory. Therefore this cannot be deleted" + if (NUMBERS.length == 1) { + return "One number sequence is mandatory. Therefore this cannot be deleted" + } + index = -1; + + for (i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _delete) { + index = i; + } + } - index = -1; - for (i = 0; i < NUMBERS.length; ++i) { - if (NUMBERS[i]["name"] == _delete) - index = i; - } - - if (index > -1) { - NUMBERS.splice(index, 1); - } + if (index > -1) { + NUMBERS.splice(index, 1); + } - return ""; + return ""; } + function CreateNUMBER(_numbernew){ - found = false; - for (i = 0; i < NUMBERS.length; ++i) { - if (NUMBERS[i]["name"] == _numbernew) - found = true; - } - - if (found) - return "Number sequence name is already existing, please choose another name"; - - _ret = new Object(); - _ret["name"] = _numbernew; - _ret['digit'] = new Array(); - _ret['analog'] = new Array(); - - for (_cat in param) - for (_param in param[_cat]) - if (param[_cat][_param]["Numbers"] == true) - { - if (typeof (_ret[_cat]) === "undefined") - { - _ret[_cat] = new Object(); - } - _ret[_cat][_param] = new Object(); - if (param[_cat][_param]["defaultValue"] === "") - { - _ret[_cat][_param]["found"] = false; - _ret[_cat][_param]["enabled"] = false; - } - else - { - _ret[_cat][_param]["found"] = true; - _ret[_cat][_param]["enabled"] = true; - _ret[_cat][_param]["value1"] = param[_cat][_param]["defaultValue"]; + found = false; + + for (i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _numbernew) { + found = true; + } + } - } - _ret[_cat][_param]["anzParam"] = param[_cat][_param]["anzParam"]; + if (found) { + return "Number sequence name is already existing, please choose another name"; + } - } + _ret = new Object(); + _ret["name"] = _numbernew; + _ret['digit'] = new Array(); + _ret['analog'] = new Array(); + + for (_cat in param) { + for (_param in param[_cat]) { + if (param[_cat][_param]["Numbers"] == true) { + if (typeof (_ret[_cat]) === "undefined") { + _ret[_cat] = new Object(); + } + + _ret[_cat][_param] = new Object(); + + if (param[_cat][_param]["defaultValue"] === "") { + _ret[_cat][_param]["found"] = false; + _ret[_cat][_param]["enabled"] = false; + } + else { + _ret[_cat][_param]["found"] = true; + _ret[_cat][_param]["enabled"] = true; + _ret[_cat][_param]["value1"] = param[_cat][_param]["defaultValue"]; + + } + + _ret[_cat][_param]["anzParam"] = param[_cat][_param]["anzParam"]; + } + } + } - NUMBERS.push(_ret); - return ""; + NUMBERS.push(_ret); + return ""; } function getROIInfo(_typeROI, _number){ - index = -1; - for (var i = 0; i < NUMBERS.length; ++i) - if (NUMBERS[i]["name"] == _number) - index = i; - - if (index != -1) - return NUMBERS[index][_typeROI]; - else - return ""; + index = -1; + + for (var i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _number) { + index = i; + } + } + + if (index != -1) { + return NUMBERS[index][_typeROI]; + } + else { + return ""; + } } function RenameROI(_number, _type, _alt, _neu){ - if ((_neu.includes("=")) || (_neu.includes(".")) || (_neu.includes(":")) || - (_neu.includes(",")) || (_neu.includes(";")) || (_neu.includes(" ")) || - (_neu.includes("\""))) - { - return "ROI name must not contain . : , ; = \" or space"; - } - - index = -1; - found = false; - _indexnumber = -1; - for (j = 0; j < NUMBERS.length; ++j) - if (NUMBERS[j]["name"] == _number) - _indexnumber = j; - - if (_indexnumber == -1) - return "Number sequence not existing. ROI cannot be renamed" - - for (i = 0; i < NUMBERS[_indexnumber][_type].length; ++i) { - if (NUMBERS[_indexnumber][_type][i]["name"] == _alt) - index = i; - if (NUMBERS[_indexnumber][_type][i]["name"] == _neu) - found = true; - } - - if (found) - return "ROI name is already existing, please choose another name"; - - NUMBERS[_indexnumber][_type][index]["name"] = _neu; + if ((_neu.includes("=")) || (_neu.includes(".")) || (_neu.includes(":")) || (_neu.includes(",")) || (_neu.includes(";")) || (_neu.includes(" ")) || (_neu.includes("\""))) { + return "ROI name must not contain . : , ; = \" or space"; + } + + index = -1; + found = false; + _indexnumber = -1; + + for (j = 0; j < NUMBERS.length; ++j) { + if (NUMBERS[j]["name"] == _number) { + _indexnumber = j; + } + } + + if (_indexnumber == -1) { + return "Number sequence not existing. ROI cannot be renamed" + } + + for (i = 0; i < NUMBERS[_indexnumber][_type].length; ++i) { + if (NUMBERS[_indexnumber][_type][i]["name"] == _alt) { + index = i; + } + + if (NUMBERS[_indexnumber][_type][i]["name"] == _neu) { + found = true; + } + } + + if (found) { + return "ROI name is already existing, please choose another name"; + } + + NUMBERS[_indexnumber][_type][index]["name"] = _neu; - return ""; + return ""; } -function DeleteNUMBER(_delte){ - if (NUMBERS.length == 1) - return "The last number cannot be deleted" - - index = -1; - for (i = 0; i < NUMBERS.length; ++i) { - if (NUMBERS[i]["name"] == _delte) - index = i; - } +function DeleteNUMBER(_delte) { + if (NUMBERS.length == 1) { + return "The last number cannot be deleted" + } + + index = -1; + + for (i = 0; i < NUMBERS.length; ++i) { + if (NUMBERS[i]["name"] == _delte) { + index = i; + } + } - if (index > -1) { - NUMBERS.splice(index, 1); - } + if (index > -1) { + NUMBERS.splice(index, 1); + } - return ""; + return ""; } function CreateROI(_number, _type, _pos, _roinew, _x, _y, _dx, _dy, _CCW){ - _indexnumber = -1; - for (j = 0; j < NUMBERS.length; ++j) - if (NUMBERS[j]["name"] == _number) - _indexnumber = j; - - if (_indexnumber == -1) - return "Number sequence not existing. ROI cannot be created" - - found = false; - for (i = 0; i < NUMBERS[_indexnumber][_type].length; ++i) { - if (NUMBERS[_indexnumber][_type][i]["name"] == _roinew) - found = true; - } - - if (found) - return "ROI name is already existing, please choose another name"; - - _ret = new Object(); - _ret["name"] = _roinew; - _ret["x"] = _x; - _ret["y"] = _y; - _ret["dx"] = _dx; - _ret["dy"] = _dy; - _ret["ar"] = _dx / _dy; - _ret["CCW"] = _CCW; - - NUMBERS[_indexnumber][_type].splice(_pos+1, 0, _ret); - - return ""; + _indexnumber = -1; + + for (j = 0; j < NUMBERS.length; ++j) { + if (NUMBERS[j]["name"] == _number) { + _indexnumber = j; + } + } + + if (_indexnumber == -1) { + return "Number sequence not existing. ROI cannot be created" + } + + found = false; + + for (i = 0; i < NUMBERS[_indexnumber][_type].length; ++i) { + if (NUMBERS[_indexnumber][_type][i]["name"] == _roinew) { + found = true; + } + } + + if (found) { + return "ROI name is already existing, please choose another name"; + } + + _ret = new Object(); + _ret["name"] = _roinew; + _ret["x"] = _x; + _ret["y"] = _y; + _ret["dx"] = _dx; + _ret["dy"] = _dy; + _ret["ar"] = _dx / _dy; + _ret["CCW"] = _CCW; + + NUMBERS[_indexnumber][_type].splice(_pos+1, 0, _ret); + + return ""; } diff --git a/sd-card/html/setup.html b/sd-card/html/setup.html index 3c94bf9ba..a51c6ffa8 100644 --- a/sd-card/html/setup.html +++ b/sd-card/html/setup.html @@ -71,7 +71,7 @@

Digitizer - AI on the edge - Initial setup

-

An ESP32 all inclusive neural network recognition system for meter digitalization

+

An ESP32 all inclusive neural network recognition system for meter Digitization

;K0v4RvAm==KheMK@jBma#_D&U30B+Gi_~u z&6W6ElE%Nz94ukx*FK9jVg@@Fv%!kxIs#hAs>HOoJvc^i?vF#?>-O!l=G;I%ulf9+ z?I+8}I&=qZL^5B0B$Q_@rSCgr<*VxV74p@<`Yo9pOwZvvcw$iO!~9b<{MUeJZO(+= z$w>FSq3G?3v`)VK;=p#;@7{ro1K*@0J@Hu0!GYKM{BxCdu7Yd+rkC`S0PpOZFKH>@$VY?4oj-*YYeEW4`1V;uQ|nAU#o9d{RvMG z{XAo1eZ!_6`quS*^pg@E1o;2%qMy3wPQV96p88XX9{P?a-Srnn-476Ls_S?8IO^Z- z`7mHyc5(pE3Cp*!y(b3cerCB7u<(qiq(7;J69joK<#|hKXSF|3`*|*ark5VY)a%5Z zgNAPfV^K)?xq!944zUM#@G0}){*2eX5M=%f%kcMB^5i4)ukARRc;NWI`9o-~uLBY^ z{9D8Md7TTvnb&|kZ(I8_2jzK0$$D}8J6j+K$~USxn_~JdraPhEQ{TynwDZT1H<~(xuT1BQ_E2+ttY2*>Rk#>1)pqmrp$T#LkYB_Hq-TmNC zy4GbC8MnsM{`}RHI`UUC?b%Ba3)YhBOPi>1$2`jZd;w)e&Y+@Nt0}qiw=`w%HoDq& zJhh&-p3c5nL_4p?(_2@QL33*0(hKpF@>>#ZAN@6TnHNuKL)THAUF`$Ubem5p6SK)F zZ!YzSok|UNZJ=70W>J~-Gi5x%ZLW?eJf5(f)UiZ|^piWK_qi7`cugL`AsFcx{NTsW z8`WOiXR=ZL?uQ^4AhXeN(Z6k$Xtn#OICH#E>F~cpJ74x*^;@J}kOy%M~5o zs$}pO=3-b?`?jdP{DC<1S}Q|Pi*sW1;CuXrO z{;)XLyow&|yO@#t zrwGaXk7xrMXvVdYd(7U5&f^)|EzG)}ua2k66O%HY<|2>pGkfFtpp@9aXBf}Ruc?8i z%0H(JfBxMLK_1V|SWDOPFZ+Db?DULh8PCh}w~psQU=(IuuV)>3Jg<%zK_1U@t^D~n z>md2^i^JdD0_+FVrp=?D|Md&$x6h}q8Z4*jK@({3S4+ry+Hv|J>pPm_5KBKFT0%2V zhSNVbZK91U7Sa3<;)o_JrWu82snXpT8Xr83ZoRaDTzgEUxq;tMx6Sdi>%nCDcQ58 zt=+eV(hI+(i(U!z`kmSIk5{Hs`(9(I-?DG$bjkwicVR8XZ;Yp;sz1gG02Of(%1G1*eyoy$PwY&_J~%4kBYhPuMpCK z17gRiDu(5`TSW7`^`fu$LGkZZvxIN%A7WfYnrQp=uOfT$esQY3i(!4$wW9WaFt*pv z6cKAyichL;68W9BiSY}66!{%zixb~$6My~lrl_%Usrde6b;GvhJ4H(TPok*aZ(`1) zEyC%?pTwj#zlsTqmWtmWq>HNWtrZV9o)vG+$q;_~ei3u7q=vHajN&WVSkT%;zj~iD+Y~R%)wbE~*+nprw>Yf#% z&F){t`yO+|o{V(Sy~;|lY(bhx8gR_cczvt9tP>6M}Ov4zsNMI8V!u3-I}mNrMCVH=MFO z@d&28X@NY}EfnAiW39Y&I1K{OU2|~YeAkjSbw@d+ZBMzB^}u`|M+6!8oyrRM+R;{# zSC#`S_MUhXN`1>pAzQkR&$=??HbK-H>FJQW%-W^;t_B`8M_HH#%cay&=rfgyekWks zOq0QNxLw)iU?IO_#rbR(NBK{A2XvGv>T|r55fW+&Ge(;&Ar&odg-48xw%~0Zrp0u1 zfJ%#PnFz!IV}L;bzt_X-SgaSYinv*UbnZ>sm(s1%+nP*QOHAx`Y)x` BW^@1m literal 0 HcmV?d00001 diff --git a/sd-card/config/dig-class11_1701_s2.tflite b/sd-card/config/dig-class11_1701_s2.tflite new file mode 100644 index 0000000000000000000000000000000000000000..7dd74d445784bb5fa501f353f5fb93b89bf031b9 GIT binary patch literal 356488 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%0DZ1 zP(KIvCo5CQ-mCn)uie5fG7r!Eks_H1^I)CVU5JlZhs)=@fLUv|Vg$>84@)$d{x?-- zJ<5m~8CRh0Uukgtl?%m-5}5TR!WEv&xR8-fkT|m#%51Me!1_W^t|;S9-({#;v>yh) z?dKAj-Duu|#_J!2ZeGw19qxPbN36ZF6Oz;m@TB0pe^J$jYMB+VvLS=|79@azw=(6= z3}6=8pj!v-!g!0eOuIn@o*d#$u*5tAiue8}f_j2yyj8Hbk(w~xVeT1A-uP~{$ zkw2>BM#EH7*pP*FP;7l2m#m7w&F>Ou-Mu;V=|>;;Am9lGbSa|$t&ueDZ!ZQb{s!N< z?v$=G7L2XdL1Ug8vmZB^RwZ2#wdyRz3!E5wPDcuN>>C8H_w zkHXpI-&;d8_^d_q4I@FKcNo!GRlF~FA~%JOqFw!w_)Rhg=jzWQr8Tznna0c+*Pj**HvoBfD|u6IZn*AF<~iucF4|mFucZyLumK>K5X2sdc0i zxfM>26^WM%`S!_8Gw9=QD^i#dNa>0eY*;-H3qI;WBTdEH@I`=KOW<{(KX3QjldT+( z!iNj2u$PPPV%1g~a(}%SX2m~+8_u8jakVz$=#Ez2%V!sKe!T*l7bT&|gdwyiU4v-~ zeY!q_V*Js(3g&F_ho|Mk@ZYI}AYm;*E7XF((?10+l@`GDqvP@Nr7e*8cnY^URgF!b zT!Pzcl(EKj24G$WG`I+?)?O`^AbW`-T-U*}yv5{fCdYP{qQD(oMx~EaX|-7b>Ag7* zdRK1Yov8Js^&^)>mK{Nvl|`^euN+2PoyWAo=Fr)5v1nO2fkIjZC+^ukXgKv5&Z(Ta z?tN_#8aL0TS5mFwGHL@}ukPfZD4Xy;4hQMY(>);lFCD*#Y&ie;67n1rj?+3iU`P0k zvY}OH;FD7ZU%JMJ`e$B-`ZbS5es_KGAsm8-TaB=3?Ky6?OEfm^UCXAtoryCuGobFj zTNs#?i9YA|Ke3%r)EpgG}~adbGZ?z|0nR@ zLJwocxfm9=%AI8{(xxFdu5tsFX7LKYj$?Rz2)wiChw9i;bbF@3wZ;!5`=8T!qj8yd zYVJg?(Zm^(B&B&x?*KN~N!XG4oDgkqD5V9vbYXk@HYPsu4AShQne7KR+HE&n*ztA1 zAg>eXyz&ONDWsCI)EZVYHx?g$S;6(CMv0Al0;r7iY1d_Qdiu};hnNa(sJ(VLT5St? z4{Ybl=iTP7*Bpg$pLjIeVFSa4{KFBK7D4=>LcSn)GkpJ6g+Fo>X_Z_u_WkaH>^FD8 zTfkhk{#Iitf2Y$5!&1(wVgsIfcY*Ia^$uOLz7^m5oN^ef&qmEfT5Rp|O6fGmC*vZ&U(oZeC;-0S{?GDpc#HOaB5cMGw;Y!d!d zav__ZnK1UmKC$z&7El`=1rt6F<27XFf$QfZxTHns2l(${-R99O>rgXiuNzHPlP8L; zFIVH1&inM=w6guu7O@AC;@H++Oa^b>SY<)8XkN@&Tb#)^+y5S)0 z`eg%mPhWw{xr1=D&nIqJUKE-f%49|oMKpP!vB2iCq=~PTAxe7#OYbveofG%4tsY(A zF=RZulCqkn1f7PgjAmTrutV^XB(jM?36$$|L%9FG0Qw_)DD|usdAcLaQ&6MzLnqOd zMom&_yvOg<3ZTFaMQT_S&w3_Q;TBnA7W>YgZCIbnW}nOlO{qFKd3`4v_uqOZu}g{S zT4dQX-z@fbw;Jsi7*orf-;m3?4V=wQ&4U98Gv=NEwASiyJHd665Kyb~|DONdnVzlCL*GNdl;C_1!%7^@sl zc-Jd~8>aTNG9 ziS1iyMmi>IVP5VqRxB$9S$|!ZM zBMen(1YMbRSlBg<4Vtos?R%>Pb>A}3PwoKxyqS#IZ{Bc~i>{*KUIR8VXBfpTj3vo) zXZRGS7}zJf9gGA&v30;KFt+`{m%|Wtd}S9u>Cs54a_-<7M!bQnvONg0&9L>+Hw;)W zM;dJz@N>ZkV7?A?S@HzF6iL%Ok3jD4c)@9;uF0gr{^E2yZMv7*0CImvQQMw(=$JE- zw94;5nDSFR{4bdsx@07~5V?gV&6S~DQTgEQeiFp*EvP?Gs(exFec0Joj~1bm$-YK` zu70Tyhg6u;xwx%(;8I(a1C*zg0UAqy;}~cgqmStfJ3&<5?Nlv%WJ{x5BjqVjEr`6CYpF_lgOw#4`ZZCLjd(+(Wr<$5mg zmQ}@A(sBTHxL3lrYgv$$I+Z=GevNY?9I?63jHN!9LE}NVli4OicqR=8>m7uV@)m4u z!6Q_Zna<`HZ-ldhlW?obPu~9d33xMG$iV$dpiLL^;a~DE+VMop9gr9N;)}0Bq05l+ zGb3NZuLECrU2j>zne-SgPjjT(v3W4;lnz~QzDPmt7Oc%`44xk|5y##*LTaBQ@%FOk z(6T&=ZEDB>i|8au(D{jLXLyi%hd<}ldYae1`-eaHx|2F*rE(Q}Ov;lB&Dm4oOno6O zj}C=~qtdr_UU$Q_lyS3^eMFC-*j3vZ8~;cn!}Fq<~Zeb z0%^T!;-82YvFfyMBApo%slYA^6I^(*jqAef^7FWT%u(F^{tkAWDa1yX%VHDRs~Ed& zDtX=)*fe#D@HOu=EXy!w|(ZcQ3cH$y*na!=e|cSDwR(k4VAmgXYN2Ov32Psx*7}OcqwYkZ!wu zLf<@C4+VwT zd}zy#!OP>{gYEn{dKbSDW)%JABmW#ivoHRvjXMf!#BrRO&T?v5HyJN~4PI-qfd z2PRG&Ok)iWFz-h;IKOTV7iBz`-IqEBb5c9_-v(1zajFijEly;oKdfftpTVyZdrtFl zj>T1(Jp7sG&Wr-TU~zYv_4$XweRZ7!KwUI0teTF_bqV~?i`p#odNdq6VO@fVUB{d)FFlZqbp~5>vP}4 zem4Tp!ss?81VqD|GqbTOCka*_JOUlF)A8pZZ;5`09=8<(C9CkZ+PP}eI%eZ|w zxLX#FwH^kP3BoH+Bxs511>SL1ExKyeBOO`3@fB zJvbZR3;rf`eLEc6^8{aLfWX&0&i%L+1_c4pT+RI5ctr5)wk#jYTjviEb-M(@vT8Sh zi*AqaxA}2$Udf!^maA}a!b*@de2JUucf&BvCBh>cNLIh~pet>zkf(Xf>lYso%S|xD z;oD=t_2>jBF-YN3UyQ`XWzje^*8wYL$N<|`fSYH=LAuvLoHi$vAJkgJuStB(DR1vV z`KwL%=#MF0QP;+2H#BgP{vdE0t_b}?r#;2B3AY;0#g0)j(P?r3KOx`?rq*;W+_84Hs$R*rw zw=Db`_XeBCOoDF%Wx&OK4F7i95Gej3jk3-g`0N4S@xKX`{DTK$L`8Ka_%gW<>%SjF z!#<(=YjO>biMF8OjP0<^J{r3Y+(UI=3pAIOAeXQ(-fW31-@0N5)sGzmww+R3?tN<% zOO?>i>Lp_;mPa7Z!Mpq>{m&=ctaP1`lUfGEd+AM)$)&R58;BG!IbxQAvEotkHIDO zIC%0F@$Ddp04OO&lZ;UEQe(~dU4_!3xLZhU@#|< z*IpLM*Jt$NZTr`#TfCo}mY*VCcuEEb+{@uw#|j>_jkCFU>-Bj1Sr;FoWr>A{TexNV z`MjU0G_4bQClhXkW5YL7ydxS!?Aw*ag+&VfsC_}$cvTvsj?96toGou;D~%s4Z$Xst1N6K6 z3j1%r;6`6LAk3#t_~iCX&MWE%AELS+6(k0uN9tu5qaDobKO}OkHMe2k(rbLsveC4& z#*$U+eZ)6J3OkbM?{IOn0@E)fxHJ2n=d#bl41Hf9CY?|Cufp+dc>Y?>p~Bo=ZORus4&&W-Wq` z)qebs&Ky{q$)Q163iT^mV@TCq_$^-qn}nTPx}GL#g|A`>jkcUi*)hN`|FB@wL&|;8 z4DWpiG`dSjw^m@fXjhV9jtX^J*yGqWw_#UrJNCSBq!MAanmkhgW})k0I^J zbka)+52s6#ZgUjtUcL?EuIf<1hg9r(8BC*IT*T)Oeh3+=zqmo_8dua+Ox^x%5OH!O zAFLWqYr~}J#qvPfXK)oo(t~izwd1hi?n>^O-EFQjSduMFFvT}8jw&Waiwl&-vB-QW z)R`R#?_>v)_qAr+Ha3}TEKNY^Z8vx~bc=Q?Md81x&NwqAamqf!3~Cvk3zEz2X_ZwR zoz$AfhDx~z4yqW4Pw}RvJ9EHyK@sVlTuaZCgWyA|EPqOVD(m%I!@^UqU{*(>n7frk zaaZO6pR=Bf)Y1XOinQ&r6xcF%Ts>Nv8M=+2#b8ZyKb@s2(JlNQqerKq3Z4k=pw%0O zlHXTu~dU^KQ?j&B=w-3&A#lwV^!neUJirJq#%C4_hVOK6z z3H+%N?2(+!eD}Wt8&Nzwp1hT>@nbOf{YcQl#qg*0Cj=HGV(YMC@EnrO7AUWQ|MWLQ zlRC$)9_YX;52vy{=hv}W>*r$n{&{TO9%c5f{s-{wo7uRGnM{uBdDbm)Q<#sm>Cl^H07eO-3FgDa^{vYV z$K^A~vVM%>n8NxcY}=~PHcUK(62CA#EMm`Av*OxT=Q)pjMmkFE3-n` zjqm1+s}s7;TWsLirU9fWN&B33)eMwGDAZpcJ^)r$@T7JA&Z6y+2R@eEthPj(>$2;Bp+f^ zNI$+>ng?sy2tLs69@jZ_3-igAVBOg+Of+;owe+kOT+naf!H@xL8_B_# zK7gG1L7eM@Q8e3NA`AYZL~$GsFI@E5sdJuq%3q0nvX5eI&cGtyEvDE_V!kC(=p6|8 z_dLN9cr<@H4V=0a%ezbP>})sM>wFb;ERV4*3v>DKmj}u9k_4-62p8Cm#k9%)4o00d z#1fxJm>x5Pb#!c@q@Jm0pyvoazt7`3O-HhjS%yQxdieMmA36O@d!`jq#``z$W$`}- zlH}4X+9%%tify|5B~>%#{CNcWKR2XAD>Le{5_m*8%gL%)7tFs{v&Vi)ly(qku!9|> zq!yB4@>vY(m1b2YNg&mqN6(e=;bG!0ba1t&tdRp~pnEI69fMR90o$i)p;;?bFNr=TP)q!oyy8RQebz^Obqx>Q(z8R(-F&! z7=PvhSlE1r`azb=>yLLm;VJB>X&S{fmhpR{M?jXb7yjoaV#gXYaY=g^>)9&!k^==+kj4p2ORk~ZqkC9s zn-S~yHj}Q%-+={}_E2?MAC^3OLvqQFN&NFHq%OTgB{>I4>6%peyt*LDwwGWFrfp=c zt%N%c9)P7&qWDL{qOQlkT~D7*C*x%AOSs_aXngv81DWZsg0-U`aHX$?(5E#r)D>6H z*I7-(Ac4=KxM3x6l}_XX-Q2@z8fYsuj8v<_$!brb*!9cc^6>gU=o%Y^xT~Lj6&oe*PGv< ztuT;jghjFnuRqX}Y0Xqe-G=mfU*0a-fIamwX6~V}Y~F96(diP*f3gd1UVV}ah+tHE zBOaB6-gQkG=npI!IX1z#jn-5aB&b^#pZ8r(V7wthua~H@zxDPiL z9K(0k0dTr14llksOY#=aNV%d0>lzk$ z^H^3|8&0p{oycvxGJAYe@Z`Q4!9vXCM5X>SX~TS1Tvj2>e=jX*uJQ?xIMEN?=}Azu zeGiOP(INZlbYA7C6mHGQhCnxSanms#P87;9j?y?A<4kB->%vewkry)8*kfZvo$<-+ z#()Aor@u`6eA_rCI^YW%G^;^H=PbWjg#)Rzzu;T!ylKk!z4%L$_VTr&%Q#JUGi!Sq z4U?ipEO5dn>mxt6;gxrHz;^f^knFkv2Lg7ms9n!t)V^3+Xw8Gw?RY%Aa<9MvssXov zTlo3F4S^5voSz>Nga_vA0n_1uEJ5JEhQ8X&em*xFbgYUKZs6N_|nIAI6Te31395Mzw=2x-c-mT)SP5JcY zsSYd1E#zXxdxFa0)og0^Gx8Ttp|2CdspPsZXK{8pMM>GS=VM2cWMdp#YnRG~rC5~v zkGc=vy2IJ?85|WnyTU?xtyzB0LE#KHmyvoBlTbbc%jb?{sh)*!aDWHvJtJg94c%zl zE-@|$i08avB&&_hg;JLZ%71bSw5M zpb)>fU*^NCli13Vfvm_Nf{prY0MmNs!Yl=4<{+pX&lw;ed-fNa_}=F=J{EFA1b(}6 zKq5{pJ`CD^ip;*(lW7@+!t=2CSSu;TZe8w%Vat}Xvu62alfQ zN{4Hrw%=0jTKx)$)=BvvN$35S1e!+qb^bUzblL z`y*p${|r?)*gg!tt0>b$i|v@}=xL3ey0q({ z7U$P87|yI21*to}lc>IFB%nH)ewpkJhoX|n4f&CDQbRhO{!JP_=nrQ`Nj>~e(FAg# za~9p*KZtlg>>!S}5Ao-&-xpnr)u6X@?y~&a687&vzOY7XQu!QB`ZcJSDLpiT&4rRA zc4s1yU3Hdi%t>IZZ~^NO&ZjmwlD^GV2i@B%N&PZodQ+G&D-VeyMZ1KoRl-%ex%dD* z_dAH_*A=sMj$1+Ac`oN}ok7?8G?1IRvUGD$B)7h#p5OA}5lj4>#ZKqcF}?0wps8!= z;g7lWf#4qBY4?v^og53JHG5chh7*-ef5@foC}D|4g=Yda8hx!pQ#Pypax$^G^YqGt^M%ERv zjTPB^w_6h1wNjge>Yt>;7p4*Isvsu&wVU{yT0|8}t=Q$*k4!(bnv{vmxE0HfQkx&D ztk35Jw_`Np>|T6gt8)j#xAD1b#;OO*DPDzb%l4*|g|1=KcfpUeTbCQ>y%C0;cH`Mu zUvA{I6q4nt0N=bvk~zL5toXbPeEzS4Or6(2*460J{_p-YK5IVQSzjpd0xD^J?iZqV zv5CL&%#QC2yG*)fou(!4^NFX68@c*e0=$pfFo*fm;k?m#a@19hB`lo?)fp$LD8X5z zps7YySk!Un!fWA+t-zYlok7Qr{>tkK?`r4GmHf@$x7n&k+iCU73dT*)roG_`w6!vp zHogxa_l`ehuAzr$ri>b$y`zLQ$L%4dA@k^K#|tz$FW6o(yO4wn+?K+R$L!@c34A=C zPL?G&0yG-7lS`6U>A%47MEq?jePDQiANsR_eJ_k*hVtXt%~eY5n&l_bNOrMpn+;*x zRvD1m6A6O?JGsGctf_-!B;DvQMfB)kGE|rWHwj&vV4bxvy!|`(Llj2>hzfXXz9oxB z%q3^H`LMS_f230|C&yPWXO6Q<_`O%xGEspsTl`j;7K)yb8*7Fz_ZUY~Ie!tm^|)G` ze4(AZz8cLM?o_kiwMAs*xF#~G-JSBXexli5D|w&uS-kPDS7b_J9Ibb|&30aIW*U-4 zAg{5A+E}=<8AWHwm-mCHu1^&45#}wYl%v4fSDx`niNss2lPqiUCzqJOemJ+3me!1+ zqLmIXc>N0|F>*ag-x5F`DhVg?71HcR+7W8S`3au9K9cTQ4uu*=;gP4%ZQUNnH3rTH zKCYQ}asS2quI}aB7H2?XO*EbI)*rNOQs_F5MCw&u%(p+aV#Pi7P_lCz)gs zR_N4y9dAopKgz+auMR}|ppdIMo<`0@)RLhYcjyc^54Kscn?&E>SeAJL{eBOL)lq3q z;%yhZVjvF*dljkg{&+IyYa*>TO(VTN!H`__m%a6{CExt*sBZK)NC-yqvPEFH@63m# z%T99b>kp6@`#y21c6#)EIurffZVYp`I#YkMj|BanlYxc^k#wdlJj#^?r5_RWuih9k z?%6mPJw=xCA_F+ExRPwil;_4qeIcSH|A?K5BY&ypYCk%xZLLN_DbOhe`=|Xg$IygPjrQfqe!P{$3cJ-J-!s{Sb|o0sdAIL&y$4v zd)aUCF4(vJF5hC1$!Ay$r;$zd|NMezOiI^v@hLEWuGn8B#MU_Ukn_NzW-AK%QU zbJyJ@X%EkHHuw5jbNxf6e^3@ik6FrAR|eAc6DQM^CL`IfrVY$`LoqYf5R=H77DhwL zn2**Dm@}+`+*Q7Iz(b1ByYE2wJ*`NuWGHiyg7e?x1&`}sHe+=m z$qVkM-wuvuoBb?VfNTJ-(%}!jm#@QOw*_$LPb*8>_>;?=cb-plCZx^{-FyO480N0O)> z1^K08;8Ar0$xfQc2efF=ao>0+59h?d`tMm8n1k0@5P__lFRS8o&SZv3x%Pyto#cz zzx05-Pf`>RJ{Q=NA{lOzuQ%AmYQflj$n-15vP){`Va4A*YErI8e~g#ny5?RK_EN=Q z_w@=fTsD<-+bGgm`wN-BkiD&vQ>N=9(&?N9uSw(SXtpKHK(zSw96Ema2Ufj6i!Bv} zGCg5k^1N+G8$CI;TH+a5q3gv%hTXooEPj*wq@%&pNgM84W`*4u5e4wnI5?2 zL5AG1f{K#syp_o%;&SIFYnR^ykBYna#V7m3iRX*?9oLW3?CIK^?cDD|j&L&jK0Afo zE=b@<+uvd*_#1r4wMgPxJe1B6m`2Wa!k)GGhv->-29&ZIzH@XZ->ftRrnTxq`-0(M z>GqZ>s*d5UKOf*%Bpj?+>rhK9GbEt=i3@!ust_C$X=KOydqnK)L?qpV=>=OeesEJU z4f@x?P1illUtE*PPEH#IOAmh}ZfmWHdYuk++`FF)(|bvdO2*V2h>jt9jvXT65WoJjiI66p8Jd&&nmt=xO1O;o@N}PSvME;1Jv*aji$dwEsVHZ`eI<$d)m5Z-W&a zeQgdmwv@2@tpTJzHyO_5`B76tC1%J+v3~DD&UfZ3*1exX-RGTrMx}V%ZtV*Ssj)o}c*OGCP609(UoRxGcVrGdpZflrJXnd!-0DX&=v)NNBL*uU?AE z*eUK>tpoXQ|35z4*^sU38P1kh4I|w#huGBxk=z`o7fd_oCR^IPlO>iDLgLNIyUqc& zUC2xC4SC9T%rxe;<_ONC1yMvH`xB=d_=au#vV&izu!GGFxXj!wGKuPFvSi3M@?paTPIb!}mR>xYJaU=Ham#Yp{ljnA zDXV>4Z~H$^e^d-J2)@GXM>~=e*iL*$e&cr69^tHe{&Blqg}dBO zH`umI9z^NE0nSx#FQ2ltka*nMC2|>el~u2igri0}B;nabc5OpB+od#2@FAu<5 zqP+?bCGcK07)X$^cHsYoX0gj1O>AHwfrQAv=RMC@68kC3$)}$$*f+g{OuyqXx8>$& z5`CtE={;XVmb^_OpN9-$JA5NpdBjlm_TDq*t=7b>u8iU?)1CaVN%{Pmh7_{Mv|IG+ z_*hbZO@X}L;xAg-txK{$T@kwny&M%Po!LJ10kq&nF0uHDoMnR}yQ;2qrcnUy^65&t-qy z#p0^%S$}RQKY7$X;=81tjrR&;Cyeg1$}#u(&^eN<$>2NNrCrL(?mMyW{w$VZyNk&^ zk0$4p9oWSpOZHCbHm9aNml$mldI@DGxz1BDqMgl0ncAc|WXkSbKBudlBgfPE`TqXw z{-}Ly%+b{>*;kbxy6PG`$Y=9@u8Dkc-dr+x?YoRGj5`nIwQ@(Wq5r4Bd!)lAZ$@Y??6!HewIpG08<|Aa-G>?YhwdHDQwI48lf zc&k7uCav6#dVp73&u?ggpy(|CvbPg%c8p6r! zeDaulUSq5ur+#}bi7iRyxU${c;oC{v0U>)9cj5t?)VZBsJaZvaxz)?v(DWe1TWp!( z;f2ItK$WF?4&qf?6p4JMIbSd$i7dKeM#8n;@Fj_!eDuaQT(?4^?M(G%K2oMrbjz4a**|mwz9Ss8O2ivxh27Pst>YelCN;TnZz-kMadAFWB}EC2VZ9z?K~7 zVjo_}&`Rwz_$vL5iG&%N+an9QLYA?fJ(-ZG9mA^``oa0sWE$d_&F0#6i~RJ;;KHee z@a&>CHMH#_J?Vdl-ouf6&Ed6l+UmJ1JeDU(!)VN-pPn*8z4;yA7EWjA>~=CeOv} zrE^1gxV1NwPL(Yb4;OlEBOGUo)@xm2b$@}+74?$LF^y0t1Pjh+@22NkI{D}M*T~w+ z7`pamzre))K)tH1Xk}@U;9Ux5I{I(9v2RUj?~GvaT^a##cLo03n(fqd)dGmINrgM9 zjbvm0QzG|aHSaXy9F4MG1XE6jFwx$fu%K@xHSW~o0(N(kM|T#{^zKrqbW9|w4@`*P zOrFLoyk|#7eiKKVk0(3+bEOLIU&-S7a`I!(2X-oN23aFK--nh|vR;QB>}TXSQe4o> z%AQSSBSV}B+9=bgxXUDe);q56Z4kuu4TFOY-JErS1|<*5U`T)zT@%Z(i&~|Gg(@)e zKyY=;h@=Gy?Oe~x3h-W&#jbgV!_!#7sk54AE36D?aK13UqgpBrPA;!0e(PLVUX^XR4n`9M4(Nscoz10quS8X08@# zxH*J&FBnCqEjA;kYKT`YFE+gWv1{~-H{%uP@vCSoT!f6G)Rxrq8Ee5)8m$l z=uF)@Haq$#{rKUb=-kiBniG1t5a!%Mz7}YTH|HDj(=bu+jh+Idii=#-@^J7tyO|l@ z&0*VCYQceKF*r(Iq*CAKf%5EfdhVLGe2m7mA4-m-`mc+Z9NVzt5(x% zdQk#PTbb?@FNNQU%Cx0&2MJD%CwijyG*$R54_ZwkIH86N&ACLz&2J*hBb9i)uER{` zTRz+P%>m4hG{WN@*I`VsG~g4#5AsCV_m0;Pdrx`^UBYK))lK5eBl6(Lph$NAWjkBc zcf(#@M+%nso+iEWa&(h01I|$xU@3OKOfh~dO}Z;deJ6k7MwM@-Q{pwn`Ni4vi6|4A zm5RuKlO5;MEVz{p$w1(dD#O4ZT{EA+TC7|(`8QA#@50V z(;09`Glm^3xX$~k6pPYFHL~^f+2sCU+CzdDk3HiO7TwWtV ze>jffuB!fF+dr-+b;d)f$IV)jpOnl+=mwDQgCb##8zDzWtP?4&@q$r?7SNegM+*9` zl8V9){Qc(VoZqc;ARk*tBs8nUPA0!t;~6=4)LKf1?Fb{U+eD-?jo2^0>CdL=$k2*d zEjpI7gN!mQnse$lnbIu5uaxT{dtU#BlKNSY`%RK6--rJh<4Op4%!l@L1bQaY;& z?&rMbS2NKyOLosynpzc%fU(Q6;LXr*?!!54Vm4(Gte)^g^g^Ws4n*2Rz5Gd1ab*~> z%Dc<8e!s?k^(rxaufu%fsSs|u^j+KVZyzArR)w5JY5vWKvpX`UtBzkUd~pL@)Twp6mk>w0;cig5NLCKVnUR+E1!_QY+99+)KwU5QC6 z;nncHR4LDoPo4git=Aq)W0P7q%kiV(+2)gkoBlErei;H+THVE8mwV2IcLkAoyhKi%QHxaOhcM`Ep%03%ka(d^7t$bUK;4*ZrE?y*M@!%Z7luHZ1&nsJLTzkczu zph$KkR&aUh+d%UiD@Yp|0ejD_V~4bU5s4-dX{`;V0S?aesi(H+ncGtOTNe1kE&h=( z?*<_gdw?H5e=tAB;u8yeA#|#4_mQs2m-)mDPnP&whTIF0VO=zV4a}((nNB{%u;c|@ zyy^!#j%(P0)(*`)ovxHqqWY5}eM~vXU+( z;2TbGsx$tw@{$WouhWl?d)~xX*gmPb_GKPz9kQ8M_0fcrOJ~znT88A*_cLtI@&MXc z_>4FlOe2~%-;jl;|B&Syr?c1J8pzo7UUZXL0B5%*igh0>Auc=q;H|t6Tg#|XXEIRVG8uz;*GSqdJP%1cobDKKSV$KPb05Bi)e+w z89X>=6jfJEAXjJ2qH68$$-=L`G{`iYYD-AcpZ*)D@gPd&wY_Lc)OnIQ(wJ_Y9!2AQ zmeRqVFS+g2)#Tll2=POoWLBE#K|@#YocAq_(2v`m6Z7%{!3QvguyOa8%a%HJHDenrouCYM ziTS*nku|kk<4uc3ji8YN3sYOcpPlf3$E$9+!IBQh!f}2ylOHgnhJk;`hH^vjbqc2T zk#V%Bb0+zsr%ey;tLE_i5bET1pJ_Cu^G$<=S^oeus_aJp90ig+&XC-6h7X?OOCB}96w|eJoUwHtf54-VHMjU7n_arHO{AeRBHa<;` z)qbI?mlo0C?*nP*!L8tBU&|hNKNX4EW(vK*3SvJ>p1!kaVR?r;`LZ)hVer&pv@_rs zAG>@kyJqDGBlOO24|@bZ-rk>V`OimU%fEx6?8;thZfHlAe^^B`p9jF&=K=%r?g-d; zz|sCT+Oh3svQ+-VIyx#ilG-_X(Z%h_WFUHpSWkX7t!^2?)*i0mG-~&9Y26;MSeVT% z3BAIyn=HuJc?xu6@FY?76;=9U$_Y;XvkXLR^5;8xECiQP7i)>pQaD`9hKx*s1~CyJfZF6Arh|rkcD~L@be)&4yTiwO}2=o0bE$7LDb?M~4@IUkV3d zxYa$PVEBj0bXc&!DZ8LBY%v6ejNqCk3PXjUOu^$~M)Xda!KvP1uynKq0l7^i>*r7Q zbL1mtX|;{&{GoKDlM7w?Cxg)~EoAi)XL_A82E&5MME+?Rc@ZPfgzi{^s^kyh{4|J! zCr9$)wPQyEb`2|sm{HubA zrzR22Y!ez>#Z%J3)NxP#-Knb0FZIpK;aRm)gLH}+~!N#8`eMBwAU zZK))79%q>T(Iz&rN>;cdCUkzoUlvf~Mt)}<{>?e7cEnZmIw-nz7u zbcZFAEvJ?<*O@x>!%Hourk%saPj;ZI1va|$IU8=>G-KLk$-&atLN552h<0cE<{MUQ zhV4}b^k3s*@zurl+`YI?e%JZ|BC;}~n)mD3oMU0!o3s5SH8fseY{kI>p<6dDWCP1Q zBL#}P<3Z8u6jSUu2xEOrq2IBYOI6=OhX`H4^5Ot$l4(lp5}uIgpYy47sw`EhE9F)V zk)#G5u23;U9wuEiqG=h$q*Z$q4e~GKLh7RVLX$FfaJD9~*}9tjnvlv}Q1ql$54O=A z<|TaDTw(4VU=HfHCE!`x3vSO)HLmkmJhydUfN*EqMI?L1({Cf(V6J%#eAv8~cho+@ z?=378xK)M_Cx4UcY8}e#J>6i~yj0p{HG=9IucJjOQ{m}(OV}dZn-4S?LDLg~53wkV z8?3|IH9-fywNBy6Rt~V8xiV0=e*#z?dq#|RaYFA{oz8Hc&7v2C zLEwem;57FOJ6XIB##x&Ptjxw5n{&1hq9g-LjD*~C-v%;zd=2^8UC8zSjwJ81N=W2r z5Ayt221`|2Mz)X55(j3lqW`k%$(FP6Bz?+MTBGSsD;`*q;#W(lqP`F7aw=nmPK0xe zE*9O`SI3>aKA4`(y2K|qmodNZisZblCRLd*pSIiE(E6rCvZ7g?o-QdT>h=2MVO1%a z5?Sux`!I zY_04`_QS-K9X-B`8V9@5vl+;Sf0LsZmPm8U<*zfB)yrYqgg999=>${DxG$EPt_m;h z)nMgkdH8*L30N0J5FeF!q-1(5OJ1%-_m{>|$qoa@rPry{aZW+?rg z8$yb#-^Tz<2H$qs51^) zGa@0jNuQT6Y2|cRXc16Sq=xU(nfZ)9lIDC2CLXI}W;Vqv$0d{ z+I5!mb2Qr}Fu2#LPJ=fo_OPevIJvV?n0d}zO&d23hjB&LP}RB#s<*j9mcZiPsGI@? zSChC2&!4lx`!3Ae{|USPdo+X@2;F6cJYr#_NL8-JvG5i4^y;SM_e?Pc^9pF-@~bm?KUV*1-|B<;;2^wV!C>Q~;x z&;3=$SMQBv=6jA1g(0EzV0k7D9WWt_u1UgK4PlnmFRTMS9Cuqz4gy9jXC(;%o>KfRwf&qaeCr@bYTY;nB$I;D?GuZnUHRfII$|80gqlpU&!~?X0Y^vN% z_O$;XA+Nr0&ytr3+1hN_q8}?%ZW-$0zb?&a*ByPRwOz@5GbMhi-Gt;jwIW zNIA>*9|gholgWz;4fI8S{oWUsXV)&9&fz-Yur5 zcZ^@VVhOog($DP?@JZlo_KuO1e%%%1h4PB|^|=3YIgAH0G{?3~7RXXcP)kGe@&RV~-{=_4th zY00k0c{A&p6mt1S8?loJp!w~ZbhMEqRT^ACWv(8kpH-Y_Wn@0RIoXkRX{!TmnG8*4 zrA*aGaEl+>&;QFEDPE@w#Cfl<=lFSxYZNPkd`1SyteOcy0^RRHl^EP6CPCB{ed1^$ z2R+w1L5t6 zaZ|`r7FaqAA=4Nmzh~n5Cn9%174P59!&k%z7dL01)cXr?^s)xxr(kr|7=`0+^+IIRCh-tiDR?vQ z3oIFwD|ibw!iw4IctleNL%e3ev$<8?-daeq`I;)jH+V+6~Btk@tB^JRx*k3Xfj>}14LDE*t2tNr< z#$v&xp^ud&8JHIK5DEm&`%-xqeC6;2((2W*_tJQLHAEBHyx$PGY&dRyWRK^R;-Pt} z3~ao=gv}b%42PHG;8E2Aw7O&k3pU%KoM$0K+{`0`gBIY%V0m2Y7>NDPXJVYpHVj{9 zfqffB;rdTfs3^>cA9yLFRf!DBHJyY5_pDL&iaTD3amKyBMqvE)LAYY~eq5Zp4~GZ8 z0VC~BVPAL@ziA#uDl-k6PxwK3`XllzL4@n`*JALS5%}SdAvjKyBGV7-##ilm;9i%B z@yVXRAC<@a9Kjp4bT+PhdJ;Y;>_HdX#) z|J_aHz5fk>)qfOEXf0y{p(oMfNd;)WoC5Z93NXd!oxn-|4FTas*jIg&HGVh1+u>yp zFY1R2j}*YMG6?Z^8JOS5W!3v$@cZv9!=7~=(7j2RHyg}CJKf`O@AG2R>%RkwekHK) zInvk^GePLj`(bmjH2#YD1X>pL@Q&)@Oxq#2@tQwsj`%>{-@gO~75l-@q7ZNEh2f{h zP{>qV0i3}a$Z*oeYj1`B-TeDd<=O{M^S7~~eRqYKYXtuJSH!hEPJ`iIF1RC62Hi$S zK*jAxqPk07C}lGb=WodYxfKAqKI_?+71OZZMh+wN0&$r|CR|ELB=4L%;rETDIMpf) zr!OvpTq4gEd29+Vu$nJN>m%yll;rMFSIb3O<4(_R`FfVv8=B^gu7;+Ihqut0r`&FP(Cj8iivvBDv zNj#a>2`bC{K~!K3$K@knw0#rU2A0D)#~ol0E!ecgFWE`!aGa&R8LK+XQGbdIDsLZ- zW?G+kewZZQxZexLZNjap(_(ymHVHobGJyF`@o;bUX~@i;jmj=g_^YS|>}7mm;-x@H zdS?Sy12pi*=Pa1|Y!tTDd85|sQV9Al9Tr8}K(^O%CR<^GtDe+>wqrh1Y+J_3_MCzr zOTI$DN)8wM55f~l^U! z`UF^i@d&OAE+q{sL>RPM1Isk^v7^@q`&NI2k9!K><%tYDfBym08(xEO^{p6~c$e4Q zpURF#jlqVXP0%DO!tZe>;oz4SaQ2uK)=3qDY`P(7RX@#c7p}x8eOnA6bFrXT9p}_9 zg-d}BaJnELe){Xsbq&*B{8pMrNMb2TvZ&!SQ8<{4S#z7&J`%^|x&-r8S(w-Q%61)|Y7FO<^^!!FMWxbo^= zJT|=?a%28N%31^1`&S1Y{Nr)kn?>j}91BZW!#Lc&D*@OAs zI6uP|`#-#Z{Q1q`KY0LZu2z5p_XHju$Yv_>c1X({;KX)wIIdgEG@W~3&$KfzUnLT1 zZB0@6rz#E;eCl?Oe!!)#%klBzXxyn@%3STb;cnhe2-~gC+ZayGaM-I;>`{gXzB@b)Q}5Nn=hW5s5Ely1s}-KL55^sbX2K_-i+9}9Sm0$F!0g6R zpk#6m?wHKRu_@-Dz0na5`y1hTgG)jVa16TK$pFs!C_I%s10QcK#28_o+MO>Ala|ay zxw^?vad98^{&B&Za(dXgA%@L67lXCKCg8*(Cv>$nfy526nDRIif4J)5l)yOrK06oP z{xd<*JS%MaoIqL@XJfx^5;I@81aIjEvv=RpgdR}<+Uy#Gau~Qx3_g@>lyK)B-Hv8e^I~I7)+7efOnTNTfG*GP8 z0&?;Tu{Qr9l$y_mOIPGr07zl;5ita+Yk`-n0bVW`hi0i^*y>dc=BmkUI$jE*I=6zmE}-%>oUygh=MeSZfM#V3frP0nD1l* zoRJs{a!-qS z=(RNlR9{~NwYrBO{;&#il%i3#JR175XJBhX4=9W{4|CkFL*0!mm=^E}^6WJ5Ziq47 z*|`rFc^crwRq@#C=73v9wz7`~9$*?-#!U&C!-een4|~+>q494cy#6nRIlZ~gUaKF3 z{VnG}V||`r;@l37v>IwI4Z--@H2k%VVwFr5=yXRRCE2K>rhtbV9x`Lye(u*IJ6tg5 zG%A{&6r5^vu}6sXJNGTeKQbJi9sCI9G>yUY&FT2B?ldIcj>a-kF}68s^4(eUP&wWS zn?mHU|L+i#t{RH_b24Ce&Tb?P(_vA2KH&J>@Z|PB_B$vKD;u|C_EH6WGW0+Em@^np zEz-wBMmu1e_%~Dase{_;U|cTjBXrCSFk3kq=VeHu?{jsuu_=NV6DydL=RYXXX@wfi zd|YZQhrWMLz(V^-OsIbfSw@3U#UKSe{50@b!Bu#$Di-oaslu?vDOfu08mI>WGfa=f z`R%WOAAJ+7ex5@=g#wU~Jq=%m9)WB3W3WOt5nLS05QCPX#6c50efa>4J6nL|$J$`m z+!j!OKMXyrTj2bd5x7S+h>e_k0`ppK!rE_1xM92v_W5e!Y#SZ4yZV&5{C5~Ws+eJ( z!dsF&(FF%x`3V=2F0%=#Jb3^28rrI3U`N>?oKZ0z!{ogn%n5Le?_dvSZ7H9j^t0Ht$_aZ}1AB4Z58cQ!4=9gV9Yv-Uj~zcd`9-u#6XGv#nhtN{$3xCZ3UEJT;13b5Yi z9r((B1$Q+Q%qcO%5Q~e@Wq29FEfO#&M+6lnb6Ba~06ce>!`ypAa7g7!47_~;)W*c2 z_LPPAX5cHt1=p~%EE3avByj`%1G#$RNJn2ie14XLUsXJ?JYpYf{`N>;~yN?_%cyoRZR0FJw z!n~$^7%4DPuC^}%+ow-qP;xAO+S~vZ$~QS(;aM3abPg8(@j;_cgYbJ=66i}^2MghO z8#3t#*4jkFt3|q4bwV9uKgr_vdHs1cQjC<8*;+eZLc;VqWaOvG5 z+<+~@h+JD7x9u<}tt*Gy;h{5uivXE{Qn;c(nS2_Ohqhieu*hc$G}p!e zm-Gml?{6YortZbV;Y#S^G!E~C>=*jop{RPK6y)D7#t-j$;J@LT_*rKix{fx*{fhZG z=GJlWziW!=MT}yUV-I(ir6Au3lG|t;WxPnV7SHwk1luxgZ3RDYb_jb zP@ov(Rl7lBhzWjL`3f=<0`d2m{dg|%H!ORb0q)}yVNdE&wAL68za%@MHM9`6ZI{Bq zkc%FNwNPc55r)YmBe;2^O5O=5i9UsMPrC};hDlhG>yML-0#Ul)EJT}*LxY~}uw-Q} zR@Kx(kclFOy48{v`xdyA{1LpRUbBJY5%4Ep8Fzh<$02i~&~tl>;AXMM0zW6zcxys( zM>t^KpHj4Pc1NdTL%ipn0MjyipreO}6Z(qiUS@_(DKD9q)j~}3jYLkh{sTRXFvkmjl*y1V)!3Gn$;=EERB()L zobwy9QzYTh9X0qAD~CTP2jbwuE-)V+4RQIgkX6+L>K=^E(R~iXD=t9xe;Hu4I2P|7 zor15YxZ=3Phv0I-6x%M1L(g{t-}^^2u86H7%b$e9onOLl;4{FF-1-;JFG|AC)`#Jj zi6<@=am>eC78Ai7^VO0d z2%?r1;AgNN$24t+=*R@z@wNv7tT>GC8;oqUHLl&T5ARv*fkUUJqmJh<2%WTD*fR+G ztil-F(Pe;wACB3Ft;8yuKP+JSB)0eOWLUR-J6h^C2^lj(d@^Mwsz*uT*_crLHV}kW zs^$?b@)bm z82$W}hxG!%++Z}gsM?~&fy+QthrsN22l$BMW|qTm#QjrZ;l_V2plyf- z+&!v~FSg0CzkkipBX|r}RR?0L?R^*!)(w5~hd=q&94*H9fz-Dm_T{@eSa;guvxQzuMug8CvwV(=(PdP*C5dH{_gx~!> zIH@rOJ4dg@Xu)-LX#Yl>MRjnYL@0iIItGkyN#jhP1^9SsE>uP9B8^l)pMSMb9d->G zyO*MPUj?Zw-2k(tr=t1GK(PLF5Pm+gL!U84V87iL-9iq5@tL*Y{@xEG3S2PQGZdRn zoP*eh=u!g>e&TWb{LYsABS(y+Tg#3Tyh*0gkcicvF~JEHjQocb9Cev&aCyn|j#p6OHmV zvS|O-6pP0NL;HaU&~G=x?MA(9hLizHD(A6SBNxn;3PRm!9N!VRg=_V7hEanQ;gfV2 zs%2HD|^Q4@8|%t8Aez<$PAv9IACzqQrzVB83M-0;kJ_|=seL7 zPv`SsuqqB(o*u;cjyo_bpcSetOW|#L8FtSVX2_e=K;nxbXq=6~#%E)3VTw1(?b?f0 zN$I5Z!43?4Hv!8vCWDO9cOeH~#hN5v!OwHQSn9)NATCoTA)N`r9Fd^O(_}OpehBW} z$-x?}lkllc9!-N1@b}J88?#@INZyntCGmSgFe-yOz$D)qB4rHIP$EPDMg0uZ09Qkz{ ztdZ+t2mdMIsJa4l%*z6|)3SJ>*&hv`j>qTTKM*M% zAn#&oU`Cw@o}Ic37f0sdnVmE6-q#7ZuW1{~Eqn-N=1(Ab0t#oBGzfaM7H{=dL$`#m zmR|^ft&!?z9u)$g-%Dd_nFnT^jRdcTjTk;J7Po6`2Ji0;kaz9}o8`O+r|eTg=a(^H z`SP8>;(iQHN$zlGVgnqzQEp$5td0BU%3{o&`PiZ&i7$U`fV|bI;LwtX)8iE272g3{ zO5@P=ybD>G(hl#j1f8#%;E$#@;4F87&4|lzCg?EMU(m*ZAG5&4^&^-&=%e47bX=k^ z3s1<@!b@=>BtKY!cK>7PyyLNczdx?BQYfRH21%r7DDL;UC{682Q+sGCr6D^zJ4DJ# z!zPLQea@Altx_t5qNJsdXeh1k`}cVK{^HO3ao_j*zRq>dc|D&qyve|F7}~?8-a1R^uLn`YPYpgOcqt#fy{1GV&7L267R@c1 zRrszyjNMoL*%O&gxN#gQ-U*)G!U-o$jm zd6HCbuS>S1sa;p`Zv|87N#qOa^YaKbxvNmqpfUK$=PHhh2!>ul36!TS=1&)n;&weX zxn06^D$F^;Cz%}JI!$LWe*RBdHfaGLmvWyD{@F#U(-;r3Tg}Tm?ZXW%RWwwiFaKaa zfz%7a#26QC;f?!g>PXwhht0c6NyW>#cSr`l4w^y!W&P;sPB-52x{@9JxtdlSnZ)f* zF5_d5x$$2+e4vIe4@Je2~ z#2iyX0(cM4X1sJ^Jue#W&3ng&@stx`)V)~Bg4q4Q-hBu0_t6vhmQ9z*=)NJh7cY^y zvKO~sAgAW=qkL3>El*omNopPKqFT>aw7RE0{}i1-Q(l~Cxfx?AV((c_=N*%SHC%*CHc`o6+ddyr}wLg>Ie7{e5 z1x|eOPGzZ&pv7&%q*=|ozI^I!8Sfvuk>WRH(49$vbR%4yXDlkGsirZc5r3YRE96VF z#&)`FIGlHx!Lf3<2Cs~;i;Jny zcOW0*qRSV&^yL@Ke0kyhTR1#;6+Mcc$#rjcrB^L|u|Ua_%3q(Op((w%`XhC&f8`p9 zVj!J&GU9nJSMa>A&msEt7qTsGkvMOi`Qzfp)J5uxw@N>|N=4z^Gi58^KiY%eFRG+Y zg9C8L#1b^F(B)gxwRmH4Fkf(S77ae}T6#7TsZ;n${!TH1-X$3Gt*TmN#Pn$KnPfbx zmB_v3YjVpctH_T@9_u&#s8DAQsvXtj#YQ73xUP_nFBSN5eaY$7B7OHB{GqTsPoBK? z4*i=`k5=QCk;Ald@Cfl^?KH0a=mjNctmiJ*bNLdRy*S5e6JPYvl6MqM zLAXCvmdb3E5fKft^6+r>8&G?xs!5rno?Yk88P13&nB4=Ef7;0Z^HV6OFe zTIXxUkE}jP9` z?kV+rZd}vkvW+5loIHykY2CtOlU7ms%0e>uJ(ia#4ChC>WYFGjnUss2x#;IlC-MWh z|7UZ4J*<%L@(JL9^Q@@-gaP-vHk_;X&cT1@?$RfF5B|{fgD}e0oxgH(@~3dKIIeM2jjxkt z{Co9eyyKQ9e{fHecPpFDhx&zaF+z>UduvLw-a9m`ej=|;NhPGI6sys+sscW{u-(BmJ-sK$ryX_-RRN980t7tG%_6Di1-@$Cc8@!R?; zyzH->N;BrsUnyS_DY5Uy-T6RMuZ-c%&)o2?hd1ALU@~8RX#nqKQ%ufg-u$hdbZ34a z%O_MPQ+9Bq)Qca@E87Jrmt#-8HeZ1u?{nx%Rz0bfU!+I=kwWIA07{v-k>8jzf$#6K zfV+(SM0?t1^Z#fe92HY|v-}E4CQ)bvU%Sfw`k3%*}T3l z<9j|N@VjxUyjQI)pLlIN-;rX+tRi6kiZ%x8;g23t|0Cuxbq?UP?>`;xzH|aFcK6|L-<;q}Lmxo2RtW9dYtH{Q#qfb| z6uFas7S(Fh(W5?pXqJmQKc!YggRgsX8+9ArSZ+-NKP>0TyXSG!q@mQ*9>}$J4dD~Q zOzHkwO$z%h6Q8{g;mcjBsk-$(shsrT@4_Q6W@kQak^UF;2l14K0{XUW3-8G8OXoF? zi366&xUMv}$;a`0saYn4S1WKE-3@%i_ir>|UlsK~o^&f~gXDTk6(v!yD5#aLdcn z`MtqD{LzN>oCUm~C!vFRq(>zG-Zq*~cf7zY9}nRhQ~mkY?4R`U#3PzKI)?8}8qX(& z&EnrG%gF!Q7;bQVKHhOY#x2*V@Z_acq~1w-wjz_s#W9iFEIz>BjaA@FW3SNY$yH<) z@rdm92Ji|UUw(YTF)lVK^W4Dwd`4DJp6qyzhGm|YTpD4-{qEA-&^A;aewr7BWs=pl zepIk#J^#-on}6S$LE9F`Q2uu>UNB=V<&KQz|6B&ba)i_~{K&opzESfGdAuCK)xK2``#z9A)662<{+tdv zl~Ul#r94z6fUAWz(h0*@dOEO5_|xwcUFr3lwAbg6zLYns*B;Kz@13SGo3>C^r_Cf} zx$#Atqj=J)BL3XXir*SGn6!UhBz_={HY=Z?h0dk)Y0OEgzAvY~Ueox`>K%OTZ71F~ zDuf0eU(A*B{J3I74ebo_eP%HZY2pJ|G=3x8TRkmJZ6eD~m?y!GoF`rfF)4dPA^#F_I`n?yqW1$@Y&46d5( z#f!79(C$s`LW}Dz9{Gk-w7!(@`!<#jk5%N;c5=$|-$p7Gt!SCA##b6_=j+CWag#Vt zZdmWa=hrXdGlu;ZH9JXv{r2&!j+wY`^%TBJrp4C`TEbPjByo9|GhH~mlfONv!gqvK zK-0~1a#y@SRh`0k%_dcT^syn&)IKfocs@{Om#I8s{yED2aFS;jrP1c6v*ocCwIm!n z!ULuJ>KMtlzA@)0k6)a?M~olA2iWgGr%nER+G*)S&U{LZJ1lv(iNmq$Q)#cuT$BHK z7Ri^|Nxk)o74&qK3-w&!#J%or<=bj<@#Rx3?*8c>ZQ3}QCsp2{FQ$9=rox>(VAft9 zVwA+^?sw!~+b8gjvlaAA>m2vc3nE9Ge3Fkm$+cIefZOFre*N!L;k$OLXs~D{8NR8Y z77u}^f1AZsjxOY~)w+D+`2sp(@s4`*-o*RO%%m@?T}Wg0Bz|69+5x%xk{T;4=#RHF zJJV9&#u^eAecu-WPdbTr25a#L6W>!W%OG~5Eeyk7^y2oWC)mNYjnv*Sj~BJ=qgCE7 zsmm{I-tXi>ZZPB{&MaRI?)1MDD=)|LE_oEwEYpC{vH~r_; zpV#ekr2lTVQDELkR6O|xyG8ZlVQTuEhIHlqG)mF!hQvQYTZ+1@OW!ZpsN%oQ{7;k;*RaT- z{kfH$t` z&(kE1itNxpsy(5_d-Rsm(_;&HC&y~im>}gof{c0go%i&})|{`(Jd>sa=P`K3 zB>vvt1r?`W!P96&3MaqO=!Ouo_#)#Mz>x1c^n&g!_>F`5FQ&6K=c!!UpK*S?nRguW zpeLDQxl>4YuDZ5>3eQdE!$MOqApRUH4w?+_uP@~>_RLBkfSQ z&*OtiCdxOuCD4=g(|Km69d!6qZ$2Z#2LrXd>GYGmG_tu5*HRzA+a>1YTCYmMjNg%X zH)=e3#Sfa_`yD0k(~_)9i|OPTmlBm#Cj9Y&JeoLs1KoMLh^wU;QB4`AvzCL|&>KnO zAIkx}Ex&+T#}DMAXRFctCH@rs^CQ{))}c6$zPv}TzjS@`3sico#$BE#;GCb8qN%jk zq4YtK*X=q=Y2A`x#YD;PDrDiUx}*5i>>qv08X?uA7hrlzJVh6uA=TnCSxpy_utJk@z7+4v8-ZuvvqoU25O4 zB4=4+w%!*$b!!7W=<8l*!jt`lx;9m$~xYi7tCt7FBz4GK={!u!t$51*wgFA zFiT<|U25;kFxN&bdb=C$^c*G|xNj@-I(Pzi^DliMKLah>S^yB14rtl+`DaOliPwEoc z?@^;LvLitj<@Oj_x=g|Mho-S!tFs{5(Hm!fZINx9d|15Ypo4J>o(R|cpM#3zc!_V6 zvN1+}Fm+)%obIxU^w)ldQ^!`aFZ*=h(-VQWt5rygerKwhfnelRW@_D_Ml|Aaj!y6OGH&&T_lHUJj0_N(mf_1FS zhSaAOZ0N#^XjA0KGWLYBx_$Rp%ycvH>jpjQyzeNLo;!joe15>?KOSP4kqYfSy1MNS182Uby~l4W;LG5ksb*#^_G&wChDzR&V$R-0M4V z!2WdfZa66Xvb@T=_tqub_F6n0qhamd(2p+7Xof3w!BF!g7l(<{X@WyP;olE?*wu6f zdHFB!FzZQUT0`(<+hrKLXp=Bg)0Z*p85EHoD7gf*z*^IZEz<1?aq92j*24qne8-R- zO#LASweDr2lx1Bp=K}D9v&Ggum*K*o8gZe-bRXhu$n2snL8ioeHCIW6z4BL(@iLJX z^_RHZN5)a1TNiR1xd`8B_F|ESNuo#da_D(99owsKu%C;fK=t5A8rAKh_~FL}A-u5- zoPKnJ39#e@Gv6&igx3;tV0VzJUdmR$2&99FMWoNucpj!W*r zPRI*UO^d;=V@A-Nq$sb;(V-7zEjYvW5qvms7hm;l7DwN?gdWpB;I4ueQK70u)F>!N zrBG=fy?qjE(_acTgYJROx?C&?(|{E@kA&^v6|yfCA!5;&G89LZicGIr9(txiKGXQP zu&w(VcJS6LcxMzX1YLKBpu@HB=(+;ai~1)Ttek=qruU#xzl`a5K@yDpGg~|)m8RW0 z9AVetcQC?t0vo$H3x}oWK-G#&Wb+5o-yF%a=`tUOB!3c}Iz;h3Ou{vXlHtdW9HDIM zdNy|CBo=qkldg<^C-j?w6ALwnrd9MY%LsL`Uh?*1;akWGx+#l4xW-0K8W6S4#XluefSfqSDWS5OCU2 zXl;6g7kA%>1lM};v86sc+xINKzc@>#P}nH8AM(Zl#Xafo7F8D4^C_<15DxWa&+x~8 zgV{l&V^(vHwF=9}eUT-cHo@>`!?2@LVuz3)L|*O8o`go>PG4_9#q1|)I+;-WwXxWD z%?K;JCCJ&_f5L=}=8}(p$3V)x-x&T^GNWZoqL89!7;F(KTbH&EeNTr%=LO!-eCM`& z^+<2Twi4ml0BMJN!y)W7pb#pn)Sz;AZ&Eu@DlDoUNc*-JuoSxr@j~`!p}&~|d#7hi zJxoI3=lM?J^cCvhDtQ;S6l^0KSsC=xlCncFo~Y2H4&4Xez{N_x;92czYPq@t9&MhA zuf}adhevHP9IgR+^}n$oDpPzE`&aIx^ zn-_mRiAo(4p-WU6j?CymhktsZ(Y9b*TNxoJ?Y2Y3j5j!3riI>aK_x~SfkHQjVRX1L z7cV&n2#1)Ld~3%nS>SOM(CQJ6Ig=N|u+jT*seNy;_-zGb>GY@6o2ehmx!&4 zOfb1EA3aP4kY;8SC_2Q!T=6y@TOER>y9WvPei+axqbMwu$BE5%k7CFEE*NW6jQ3po zm8@CZ4Whjdu=i&#W9YOE^o1>xfASBRkYAF3vAH>T14dzqTocs|y(#e3dMtb@x(Al58!I=6_m006DS_L1*T~i#kAegWVqA` z_7C@=k$NG*wBQHeyY4GQH#LC&_dF~LX%PE-S7PUfHsY!!#;iSlCcamj54M&FOO?;E zN8^VHzGmLS*G>n-W4|ov$hsH8ou3Do{jE!Av-mb%?RkvtFHd4#*5>r+YayohnTU#R zoyD-Oedzm)r}(eI8=p?qW0}vcQul8yqUz66vZz@}%=gF;=zIGXh74E1y&Xqs%bP-0 zy#6g*_?iK?o{RXg-4UDzFJ&>^PchwV1>#03Wg8a$6eAOS*_K}2;JeZu=8+mNHhdtc za}I}f(2ffvZt$HoB@mGtB^)j+r^olF!j~&MVDXzC%x+{i__iibXwsJB<)VqS;DL&` zxHbf?8rR9}A4jvOKsf~;p1{uePGj2!k0bLx8);~dP&Q;%G)pbug3HnkFi_WCs(U4F z);z|VFL2mDYz}LS^}2VGyo$z9zjzHB55-f=~^a8aAO zd}%>Nts0nVq0fGXR0$VCE1`1Aaf;8gWrJ$Y!CTc(a?aO=r~}Eu+g5@3dz3+`yC*xe z<2(B`qCd0vRVKW*$pVM+M$9?n$;vN>z_0t$q4FwFq(>cO<~Xp0zjRpVVpE#!Jf1W# z56s{8fCK6&XfkUCJ6KVNFW$e0ny+8vLpnx4?t?E_C%M3;t@Rau1-wE(Y3_Ei>m0## zaR95fnggcXn3C(dLe}yCQ0^E&dkv+&_kiv;b`Gq#uZsr`WU{UYE`rV{sh>T? z6KnLIU|!k<)E?qTab*o?k|x0MD-~3(5JX?bhr)l3gQ>5YDlI#|ms%Ugq0OxmLO0C` zY*g}PYSVd%eZt4mvsfcGC$1+B_;CPJD!U6;WogI`HR9EQfADOYB@G?$3gsz9SSGm@ zj;&M$9ZdyT@jFT$bn+UEijRSRepN!dV>@>3v<+%5{wK^xND^*dcnbF??Vx#gbn$iH zc$vp)fxbNJ%j&0giQ9V)1@&b8V20SRV>nxB3+!87z?hJMq`T}t9G^FsZLFC{ zRNS9U$-E&f9UnrP-#l=|=Ne(zkzBMtdm8LEctJ%|5iahGcsc9={CyTAz3xSj0=7xh*sH`EEtuek!e(hgSnR-B_r72x= zlnYPpy0dX6oh2{UW%emVQ>eP=jyEob36{^dvCZ|Jn0ZJgbk@2~;TIIiVSlSw+$912 z>`JFMqkM$sn8#xK2xE35M#|f$8o_pXjBxYaWcXbtl2N6qgsGg!YL6(>ur0;t^{X#a zIlGXx&Ag944K*=wdps32ShL*IZ?L!7QfW8Wo$-`$G(Bw>ZCKTZRyx-~(;ovCX{S!I zBi)#S!A43yXMs*(s`P7bjo|ZGnK^Cy3V%9_VE$qU&GFnX@;PSg?%wU9)wmj2xZo+M zJdtMh*|%ZjRW}&$c{{As?@aUe6vN?Dt&rL13CE}1#BqnDdx@+E8}loG6;^D4MV^|h zi@ONBEu_p-mqO8M$_&u0Jpy$Bus>*pjft_#mDSn@tvLsBOb`% z#b0yilQD{^kBp$R@z+3QK!C8w`v}n)_#&XsLf#o{U2iC=X`MJDtYSo55aM8H?Zzr zCi-b>3aUXvWSYzSvlG*NWWwJJq0QBd?fraH;=2aoh=YEpG;I!i823q*aW@Hun6`sQ z)hyilOhZ;9+dv~TeIeuIIe3-QgoZ}NLRQ~496Cjbyd_T6Lp4_@yI&>L%>Mx@b2bW) zZOpQ&MPZWBB$jZ6>IDb3){WlWrUp)ecD<`G1 z_X3oc%tWi_c7oDbM{#RXn8cX-fnHNXFrGho z&mD$Yj9{6YYlOaiR*tI^H_Yhd-&4w z1NKhwEOCcWaP8Fv99ul8qjEbt;=2j!%G9XWrr}gDc?6c0OcS>oJ{H;rcV#9n`lPI} zmSFctMqx^9R>Trn-~630a`9-G{`nkeM9;y>$)PY|%qE(lwTyaptY;@abK!PFFQI3K z0ezeD3X{zwKSIYv^cb!ws@SiS*!K2Rp5p-)QAL;#`V8}L4#urFqu|l3UUcfhXDFS} z0fQR{;_fMkD@tkS{x}1#^bD({lBD~Jr1_q8_ zMdPQ&Y(uHEOK;N&hF(!54gG8wQS2jIIy{nUR$8+(4K>N}=Z=xfJwfw;11>zVPWZY+ z8E!230%c222^oqG_|*Rv?pT+>cDYJ-1NSdts--~7&yT>1xU`aPP2H`zDA`0srw>r{oS;uYbh?-MMJG-n&VC!?L622KuEW>IGh z@X3I)uzUR_7*kUuzOnfvKdr7TJU;9tn)vO)e*gN?&#N)0zP~RUpO+_kIG@KMq5lc@ zw^|8Xw<=<5$Ybn#M1eAQ`eUBtGy14_O)OrTBN&7OI8QwRa>+e?(0R4|SbLNFxo2mz zS@0gbUKR=YBlg0clo8mJYJrcQ`U@jZS6a<~l8WxzSBtm1XUY3V`{24BBJO$86MLFf zm3;fH%ECtM1Fz;3*gq)(-(+9JR*5NZZsCe<35xV!oIjfFe+=ioeHQD?t_jM8UGa+R z1I*rCAhb4=!AsNrwCIIDR7MVgj(|9EP3RTq6Ld{N(xu_BeM*!wYYz$u9WwXKli+G< z3f7J}u&~k%rVTzTaUD0nd!yO#Dg7^`#QWoRzbnFgGes6^Wz1fU883U0oF>zezYubr zqadg?Lp<*CANmSoK+D_(H+40G!J6(Urc4uTLu2vUn{t`uz8$z*Z=A5{;%{Nd4tH_I z785+$e;RCle-keC?2J8*oWUX1ufzk@9A3V&#!veX2{s$HLgXT{&k-lA>q2@$TmHSdVh?t^PX42x5^md zfS=@zX!$E-W-GD8v;nd@_ho|hyKF(T}Q@bK6_*piV6Rz@>rqt^@* z+G=8jhtu@%+SxpaS!#&W%qPJe*Jb#5oGb2nI#SjxNEM=T^dXoRK|hO7`Hy4Ppx`u3 zFm&GynC3w7Yi4b1(DZ!R=~U(zGX7p%;a>!yn>VQ)@hP^8}bUCBT7Wj|IKkiNc2}J@~e= z37Ezn{I6dI4Cy}}Umq+L-uhdi+U!P})@=vy)2>Ot%iGaqG9F_7{4 zHMs3agyUz%LbT*5eXV>*u>T#1wJp1`#ySo?KdwY=tiaqiD{*G9Hk_FwrB)nO)`T;@^d#GB&d}d53P%_&1m})?;d5;o?)-jF+&QfTi+80! z;N%F|!qlZ${i6}H9`1*iO>wBOCkuK?-)$G|ARJxUhF?ne3Hxf}B$mxN@Qe(>q<7bG z%%vhY6nh$v!hc{L&R~C=bf5BT7QeNdz@Rd1agfP0un&pG+iBBa`uB5q()Nt-ZRZv6 z+pjHoW4o}{H3?uW^(CsmC!)g6RB#HDb`Sf6Vxr?`T%uf!%~tzm{jE1)wC4-KtiBqf zH>u+hrB|}eSJJUpsn{bn9U41T;e*0YxLHeAjPibpl-&!~ zxt#|S;~>Z=nG4->!-Vjza(Q8H3U0e1u>v!G;Efl0;PpxYf8Gkli%pF}L0KYdJy;2~ zv%FBup9{M0gJFY40AA9K#r5WQVOLHneC`R8GFc-Uw zI|$Z6XNCFp7r@x1-0JPhQKI_G5irHo3{zIM%UYKN;8i6R`4zLFa4Y`2aKz;whQ$37 z&to;{cS}M0Ij7)qUI_kFiU#B2Y;@LH1P=pzVB#al4Inbs70QF}2!Aif!|B6aAs{XnIti+RgQ^eMwVf3sXn;7L zoO-k&=pE|+?87Gcvc_yECE4dO==WLt))0&O>R=v&hvj=ezGH{ceUxTXnCu`S}Xh+xr0@ind-=>V6;9Y&{RRuG~53l|OXfY)m_ z0ed?G{9|o#QCqOY%-?}4N-V|W2G?=j~2RyQ3H=o*(Ptk5NX0t)Gd4X@FJ>BJXZo*2p&Di*O4!9UK;P?DK_}pOx zd2G2Uv`>g-R*%L2+akxu(?8>~Nl);j)+<4N@hes@dfQLzzV{utA6rM`$_7BXM<65)34#lG2ieCK1@=;5 z0w~1H5!ITvlJ?H7k_R_|ZdmJ6vhG9dZ4n4}&*`xRef~;z{hI)e}v==rM(IFZfzphps*L zQu%>u%+Sb}{0th*VsHywTY5=Me6WWpMoPZKSR zne(!Pa;leHgpYVOSK&EQ9R6^ zc3TUsQ*(q=g~9C9k{9xuTF>y(ejoO0UOZLbSp#1nMNGxJu+a6GbUxn_Y@Sak>3go3 zoEtaO<V!zPCa5!06|Hu9a1`t@i6Gsa-!FJ;g`j7W!Ukq-e(W93* zbJ=_fc=&|ny*Y|T+s!~rzlJG1tQ4HSRIv?<`oV&51(Hn}h+QRC$bNJmT7yK(Xh!B zQDF?q)2FZlCu2)ym2?r#gbkJB!cqxk^#y$r_kml@G5DcATD-Dy5@tGi!L`ng5WO)H z`u-jWv6q^K$-CT;yp-tR*ae{T>mqt*Nw@5meXytNd71m6VoZrqp`LrX5IRMYT%1iC z#-D>fX8l;+m4`yauS5twDfJ!BO~goKL09)jJ@qv>UdyyZGuI(3b zk8Bh!&{_z;<~PIhhQqMaO_kx(z053nGV8iQ!MbDO6n4+U4wBmf@%yn2bX2i~9KQzR z&v8L8weSooG^}RVU96d%g_LW&F0j+7{m66CKK8G7D4dxVfy(!v3p*F-q1!kaoBhm0 znhOOSdz|oUlrotVonR~cyO8zmjZ`1t!`3YAM#J1I@I-MwHb%75 zJjEuwe$54U{JbnSXpV+mkJQ1wvNFI$XF!2g+St+1u<%u=nI>7S!Mm`HmuF4SEep zidM|QeLhoFJq?Ff^dQrQHla9u5=KWH2GLi64ZEttiY6Ro1%(Q%zM~KhcRTL70IFC#C)E3kh0{yn)|#IdTwZkQMzYwsDrZ1rLhS##w~$~uEUu} zWD)LZ*JDc#DzeYV3Ru_fQ7}XC8l0Z?8%^%s5H20tOtBGPFzt9VMp#cXa@$<=z0hgPZ6rbrDA2HWL>wzks736@dQMF`&I=0T$_efz)pfEMR&bI@&J> z~%T-ZLNe9}C0glfFz?q{F@k&Vn5e+>wvd!%@0QR2%mKB2{xBciR{k2g|W8 z|EBOS?2>q-bw6AG{36)BdIP?joW%um{|W}xxnhV)4%JS+2PH<1%%evHG|r8Kz6Wh# z=uAuMm}kH={ra+$H~YkQvn0pgf6k(Qd#p6u2@|eFII^V6UD%VQAu#6CAy)B1kKKKj z06v=k|7ezT!BHwa2Piq&Ryxpt^}IG^hsIBmfoPQ z%RHH#`)U?z*NK*AeZhihx$O1l8*Gqn8Cy8dik()hMiu`q)(1-KV4Lz?h8y~@k5Uca za4|&G`R72=_?vDz-4*w&Re%j|*FcvHQ+c;Y1vF|}g?gWE!ngEa*rDbP+CMU&f0tO< zE0Hw=sO~-zF&1h`VK<;Q7@L(1DXAsFsmJegqstX{woYCqxYgyi)6^QzFOv9>Fero4u&{r-L?tFBl zjl*48=C41Xvgjn4EzHG#pOv9`?lp2+?I`(fHNb0lytJ$O81)8O;OWFw%s1>7yyisi0w`LY4ixLYW;rXD7z z`+eZVsIFA$yMcAuyAhYYe{n+K2S{Q0i7FfS@;b8OzQS4e ztu$BI&RSM4U{2?J+3({rm?51RS8Ufa#jp7o$Y#Q_gc)p$eUY$B7LE(sQ?UADJubdK z1a$s}vZn>(*bg`=^(bZu|6D&>P3sj4cec!wxyxm&LQ4dN^*h+K0%u&l*N`>5Ur$fe zM$`9vFPPVh(`ex`475>XyYG)>OW&;)OeDXo#eq0>{l#$dvX*8tV}fD->o~lSdJRtG zI0;j2{y^p8b?_pfM0~PIi{;%_VaK%nSn!D$Va4&@(6A^S=lxpA=4>tyoGo92{NH5q zE$+jfshhG54;M1!%rD|;G?(Up{lV#JsI1GeSJ2-%TppM?BX{tFWK9TB;7002jbP1SMX~Ni^*Wkm7TG+R~TId)&0eWSd zihl||2{|t&gZ-^K(5^RSgVQo)vgN75bL~y=w);&8zFdY$UfbE{>BnhZhb0^S>;hXc zD;$d_?Z&zL?xA=8Z}9iNH%DGgsG<4*;MYR*()Ks&C z=VmOk z>0DEK`TaQ7$9%`zt$}d5ry^4uvXy3>>A})%M`N*yF7-b!lZ9KxqiytaJQ-k*f%-kz zuugr*)N2vxo(y4gv^H8rMoNzEQ(sxghjZ-YUCBS#rbjOq&!N0)5qNfT1kAJ=N0aS~ zC_rT*-qN^C*Cg+W)uv`K>ERS=8Zd%&34SbW3?9N-)V4q$19O&n>j$py+<-5G)4|l| zE}Z&v7B+55q%{q@QGM4ljGAfPIMH!1Sv>VtdI7mOV-GUF>`Sk%m=bsOlIo|5kw@`DDmhCxDJ$ zIR(87^>JG54O!o29okajD{+r*2w|6h!slnn@bQWR8+ufceH#(TdWAQZJip|{;;O?T z?t>9)H;KWBK^%X5T9dSo>;Acz0%v zm^h<|Y2A|1?qlBUiq&S;a;p^1jH$+(#VhGQRV{X@bUGfM)**EN{6$>5J%Sdby%n=Q znz5BZ-I?-WZJhq31c!XB2Yut?SP^$#upM>|!q2RMXG3p6nc65kcs~K=zer~jKlliy zl8@+f>26#T*oPTUZ-ORYskiO>1afVI#7oMv@m+p`&~?*jI;oh7dqyhLk`+O)(O|r| zcR#RG9uqL9k3M7uU&8wuVQlibNV(?ji@3$q3=6(0F@ zEOJ7R8bk8il#6dfZJa%NA|08v5r4cd#)Id-e*EU4}#?fy03xlMN#mp z*%MF2l;D~_4@K97ci>igAwKWjL#%rkElk-|AdeXog7!BC;G^Tdu%aaaU#7*0ZwyMX zy4pkRd$<WBos_uSles>I9=iL`y2d;p>kDo)<;U_5gIpNd`4`n6I zYefr7KT$O$0h23SAZcqd?z1?KA-_6=^Oea$_J+LTA(kUalC{d ztrBqPrzg17WRx&5?6Y8`az$(#)fw{A&V#p367=X5hj>N~r%n#SdytNyLF=K5p$`O` zofVH-REqxBa&dAGPw~SZJJ@r28Lt0+7IL2tLFtK~hFL*Le6jir&$V)QnP$4ZCqwA)FSw|3_ zR@W9=uQHq*&;_=&O3d=H5rXGlv~;_8A6E{G$7?DkI5hY*1W3Ew&(3EF7su>{?PoGz z{J26i{Z@%rJ?L*_x+Agyf;~NG!YaRLIp&*B=f zYSomIsOVSl%bCQMCHryW?Pub6zsq>}=Xh{c83R@u*R$WtM%|7)3@r5s&SJi?g+#FVQTg1X<=+GhSsgRnH1UqJAu%b(W;92wy za$^WTeRg8e?W*iX@1t=2N+h0Y2*m_-HMaTPi2qS^-VZ(fUmUMcXh?f1EmVZic;9nU zQbIx$*+j$okdcI@BBjzmMVg{Cwchuu}hY9Rp>=Sp~JKhrFj!ouoo*hRLZAZw*A~Bf`kE@fJ|b|9HpV#ECl%_i>m@)1IBU^*LT^$GTcHnOg)OH>sp!h&_F+yc&l>j|{r z`$w11pM^Fke|sj|KRFuHcP?O+P2XY6f`0t`-#*kh63r*byHG^YS1#b-S-x6-1cts5 zc=}yw{B_my7}#};lACNXX~{jx-1wbc`8I>M{B(=5-m5bUpGaI@H5;>Zm1xJozcf-O z6FhQ1!RI|+=)O-q+nVpp-u-c43d^kVtGOhrypcc=YcpBev$wP}ZVKkCNMs8S|A2y& zYp~Ns44RV_xby)VvAgvie0yGrkimn$b`O-l+(}6n7>z5|#P>1n;^b`u@W7oV=r(GP z=+`n`TsP%3y3YQ^4HF61v(SP&{XPt9G~98^)dXxe+CgPuws7&*Yw^QwE2fZDz@^Iw zf5*s~Tz)(vagPF8fEYI2mqnWO734D}LiM*-u=uz+ZJsNKYZBtQ{Ikj23=h@nQrG=d zultK^CR($~-)|x5`FU`3oP*1C%g|bJ9j>)95V#Bl^qVhq75%n>qnBcsm+up}H-9_V zQx}9MUn7n2vW8aWw=}Rq0~2E^V48|6dttwmdOqs${hNaD{=%JHk4__G!(URKQ~_$Y zW5GgeJon&sHXSw7M$PV3O!`L_E-jVEP|G=@uF80B_uHS8+F$`I2Kyqem1p_p8hBe{ zKHYpG#=1`jQ1W>R7=6{}Pb@UyR``w)jUAE?o2?C*rf~=rxHrLpORLFvj}NbQ?jYJX z775JRDD(+D#{28I)5VTobjEczQ&BUe7;6byez8-S=_g~&iD;yM`glfDL`xp2q3ru` zd@{is<||sF-DVYRx_z43R(P>OwI;An`~eoRC%|rTCVY3c#Fr)axqaQ2@WI@Rxae0j z*!TH@7VY7KX*Sqo7{bwoPPk|KL3nt1I251?|0GBO9dnPHMKIR~AN129N4hMO009kLYSFmRj|3|f^WFd3>i?B@iEIOC7!*Eo^nTV0BBwFkw9 zMRheQq*B#ccLyP6nJhHJZKJD1{GP&eayL-ADT#KjN3kH`Cm< zt#tUgA?SQQD!5|>S4!F+vREyLpm~U_UW|sX=!OOPF|=0hoOM!#5sQudkFqyp*TU74 z+@?4m{HMGb)Sm5zmE+e@#g7E)RV$^4z%VkJe1#t;?LqU?4#0!`!!de;vS`nPc796q zeOgx03!C0NC@;;0zq=*T(m9;@x13?}Gj@?#hy;6_u7Rbd zA)L0lIm)FuVzx&UC_T%A-mWmH)YpeO&(bhES)Tn<48sH04zh&jUARgnnVEgduz8g? zlnoH}72Nu({Q4Y!kUu&Pw{F+N6OQL8B}(X)jn@@&J#jc`&j>vAD;GvSz6|U9^jNm5 z8#X7s=lg54d5`{jYI`0?HU1)sd!UbR*E(Q}Y%#4izs7s^rUC5s5Lu2f#(L{a0=-v! z^TARW5T8Zg0-V`M*+_<4@=TVACzRWW#{ z_c9Fpk_sQufPee#BK52qz&cU{6XVP3L79jVPkr&I62WU`*XXO2hL8A5h*uNijJ7jgUD zX?*ZVRTdm(#nb5^n#JGZHVOnS{CmgOkNOX+mMJ)1;c z#%EAv^l7pQwMWk;T z`lTME#iv8qxGa=>Y*Uw?MrS{Nt=^Ut% zt!9f?UqBC)7z_yMg-=H-ajH!jwEsQNCfzT?U%lx#!1W8~xoi(iR}4X)8-wBQCR-?O znTu7c?J-!(lk1C{hW0PD_+x(~u)n04=Cn5O<3ZrxUQQ*C6mvWzw*V)MR>Mn+XXDe` zOW{kT20uP^1U}Yy#}__z#4vFLVDBh&i2eoZ!IpEMEX+?cl_9}qAu3q}&{U_}VuNA7 zp{HXiF0fdL>zw^y)!a$=Ip7_LGUkDdz)RgQyudxIPsX!9+N{%n==;WL%ovUF`qCt9 zk2YuXm0U6YQNL(+JJ5w)QRpiA1H;bPu))(6+1@R~Fj@5=42_$@2I~3Z`I-mfy9W$} zOnwgi7=DRD>i1LA=j{+xDaN9{I}mgsf`3(H1%HerSnh-n+uyEIj@PXH7`f|=sJJ5+3zmB z9Q^K^1ktHUu=MGC%GzNemb^0r!=ENX(~E&L%gQkJLu@MaJHOpi9(K9soNeC(Q zE~HJ4l5FV?RSax$VKc(iZ08ll!91HTF7&fJ4(^R+kFRQh-&cA3IbaZ*G1q`y8DWat zGas1gA;~7JI07coB3A9x!CAXiP=#w8*RVkae*38L9&u&DGe;J_o)3r8xqJ}16<*;-Gru;g@FS_Upzf29V zW!_-i@p=>ZO){c$cQ?Us7iSi?a|PvsGm1woqhtp={JFN2tCuf^kBW0)USu|-IwQ1l zJ_pqr8qoA9m3S9D?#$@`rZrZX?#W5B#U)eliPKKDb9;ff#w8dV%4frV`}u5Ykuz5- z@W7o(~weO-@6!> ziGM@NGI>0fn~c40{pqUPcs50Fbexd=By`*;fos!BFx+nkI&K^IqfcyEwW&Wi3HuSX zrZ^a!u7Ledg6Po4cy8&aeE!X1XMSIz(79;!ftzlr%y$0g3_IL1LAq@mcpnMj{|LXi z)xtM$S5Ai5qHPv?=;_TV4h=#(FCnvXY9Fhxv*Pb)J7G)vaJJlK6q8I3gCQje+(wNJ zbnxkVQa6a@{J#~`h>$~^ta}^Sxd-saWXh;7-~?}BC(Ej12Q$-+-)Q6ZPTJx-mb*B> zL+AyyfVL6+wu;s>(C&ic|L{R0Iqi`cPS<6!?F!F}|56|=gf z$NsZw=XIaeitUd#!Qr{c4gUL1G$#2e^Kf*PvE`WPCNPcsa`0A85f|R{9KQ5BVMyR0!pcZ~;|eFtbM{65 z3DRt3qcohzpUFz~jn#R`%c@EV-eLlG_~lNZVPcWd4P( z{=S8*%I?D@*$SF*NSoXIrV!Xx8$28FO}w+D26oIg#^ak-BJVR2ZS)LK^uPcWP0Hy` zak;1^SRO>Th6r7RjbN!JxIkxwq4mzYFg0QbHjKIq>H_a}J6DRe-JM3E6FW$>;h$*5 zN5*aZbcq`|;RE@y0Vw^k{RP2It?dDh{ zbORd;U8?nJN4TYRr(mc1Wn8bZhrS5>(U|$(Fu**NC2J3disgrJ-1=^q{Wk!8Pke{> z;bIt5C*+sbBhE{SDZr62YNF@d0CujQ6=s!2*X#KG|*P} zKTNtX19rTX;3Q>(QAg;5eKCS#>xOhu;|z5!sy_$6?X6;~^LkaE;99G+PuDya+DT`I%9+I^a(R2{(M1{UMPk~8*SO6 zCDY;1-V5~1^)sga`vTU9IXGkLK^&LU2@~5AaN)jY_!$+>X2d>(?yel{n>h~me;CZ3 zKN}~4TjLqG+KAjAB;lalG2Dvk8Z5Z!j?6b2uXpxwnhSbGRHMVXZ+CJRpId_Vx)l2A z(!vcNc>}CsP54ktf3*8^6)e`u(vF=+Ft|&Xy~-Obp0)iXNUTy~XY$sufTkuW(H(~# z0#7|u<{^y__Tx2XpW)qZ2h-2QWPmd8!&U?V0 z@iAa3K@}i=Yed#d-*A6UtFa`{PCD#phVi+zyz-2%;Cmwwr>c*@pc#^=^wkXSi7(Qp zk!NUP?Mxb+6o~H}wczhRp|ddhD-3vR2iJ0MbEUzR@N-cw(A>FDf42q=PcuBRWF}Pn zb`k}yR;tqzS5nCP$v8}W1@~+@30pN2K~HoNRCeXjjzbJ)XKTQOwF^bND@?>Mre~v8 z!AE#wQV1V&v{1so16Eip!;;)NqD>#51? z3HeP`9kkn<&l#HC!Rwn-h*DheX0aXj`L-F##2m&8r)H4fkXT^(BiYaUYG`@>9$AJt zQP7Ej{J4#hIOLf>w%j(sk%hCsY2;Y+EDHit=OVE5Q4l9t&8Ngm&bX#Bi1}&1CAo8v zN29~I@5*&bT zGwSi~Lk9UPCbNt&Z(s_afc1ws&VGkF?weczDbHfyz>&M)X`lvoe;Z&(XAbE7y~ib~ z&wx|EOtI^{2eP|AXs$s7E>k|h9*1or$NA@Y!@8v)btVkG2lm5MJt1p-@DWHH+>I`^ zmQ1&5rbxbZHJ%@1i?PLiw6wyIzo;0=Wa0+k+*u9qwbcwYpum_`A&FKaWWU$_a5?hF$nbAiM8|IgU51PY`FdjzN@UlvndnM-|ryW-k60|v*ob( z(Rkb>aCCaNL-30JQMlK&5z|VJV&LDsI9K?lUMOQhnp*Z~a4(ND-5i5GJCxCB>s?;_ ztQYf?OVN46C5)J9M*9ti!DDGTv3S=4X4Ex~?)hs{g8Bof5q5RYrtAWJsRyVxdn*hq zO~UOb592;N4Kn|Gng4AqZ}&M$3qo6tK$ZGtbocp6lP}8R8_^wZ-RmK!@}mMqhCPKP zTmHbz=MQ1jt`QI&bOPSW6yfS(H@uyBkvpF8K>mbEMZ`?iI_mhpy+dpC&P2sz1aJa`S6`Ns5G-37}nTS+%Jm~L%RXDS>1as6YB z*wE!?!Atu-h30oq>BW9}=DC>_m1g4FcrRK#unnBQE3vJc0zmrKOx%`NLJ5Bra7U6g zio;J(aDF@N%5p`{s~6hkhT@qq`l#h5Pjw!VZ0nwq>TS{+*rs4Z7VbNT8=KqAdz^5g z-n4b>+aFK1a&tKC5ZH;KX2LGiyahUyTgVhpa)KY3E^R#F_$NH+RboeqR zr7?)&qHoX;>n&LFAqtY z{7%)MIr^~v8YZu*7tcM|1T$h%!9ll>X8lv+OuaAhn>wvw!KcsAmh??vdE+_z`P12> z12Pz}W*>{~i6<^}JlsjtVyk;@LBeAp-!}9dgugn68#TK5fPXz;vHd+)t>MC4csuNF z$%jl~0`0T;1ApY^Rl4aWMVE&g!&>I579q-i zCwLG(D$!W=Hh%Q?a>$UiprqNUkS64zCf1$gbk|C9`3mlM+G8fggib{XnO|J|sYog- ztD$Gk$u#HSFfNQ$az>TqJnp&xm)>jQ>S%dzhhOkKe?HN!d;HumMZEM`pS?2EfcGg< zxb06B_x+SUdOcc1L*!I2NhqXq;7{>>&xgT!7k?1xh#l4mQp&Z3jx;@&tX`NBq<~D}}SqDx~Lbc*gGx3p0yHEgN07+%<_C zvz-I^%fAT&)IqP!5l81_lG0wG`)*F2pk8RF$EMxTb>ISREE){E|Lx9|PRm%y)L+Zs4u@I{W2=OTlRS>q*-xE))_C=WA^$FA zJzF_Lo$v6zz+2jx<2FxQGIBSB(nc{pAsPI9?Jb`q_ytC$&*D=`N?)=B% za`Q3!`WCh*ag4y$q;dY6BcMK0h9zw4g~a(WBFPbzV4fh)o*vBLdseCAg^CKXiCP7& z{dN)7#b4m2uBfLVZ%wpnkj2M^BiO<^9r`r!2b2cMp>=CEs7Ymlx4II#N?2iXjs}DI zTKvN62S|U05m|kZK&9W(*bo(U{`M0acI${c)cZfQZIdyErPdj+SA8tIHPD7Fc>J9E z^EaIy5Bf!4#wkMBt`w$TokjWW$(-l$GjKTsh3mj zlLMRBJy$*Sj^4^f+nVw-gqi=kKfe6T>q^|gMUvR-ejc}N-9i4;LG$jrQwT2)!m0=y zf`Tc54T0*bM`6>PH2NoMhS$~$ZTT7Y)W0TAoZFlM&Xwxqa;KSV&N@dWygcpe`y!gz zU`4HX1_o3X(ImHKaz0v4mTk*8k+m)bZqI~p{t&q@DJQG09dKNZ(fsSWF!%6t{-*g$ z8X0t+-uRt?kz3`V%;X;zuUtwd#&1YVx|B3GxRd2`fgf5i6iS=s(&axd=*mS+a$a$q zg5C09_>Ej4V{gt+du$AQ2mBC^kt?RI?BkryxHBTl0f#8{Zw37*7MxbqTKq)i%iz7D zn*Tk%gqQqrjht#lG)*{f>1_ST@t2pu>QH_1R$0vri7um%sC-zgah)DZed0%sz0DV& zXQaE{4J7xU1xM~O#m+FNGqVDq!)u!2;N`J~kSj*bg? z&GEMK)Zf=Z?X%CoK>bqkQETHqm*-GZ-$t0bv;od|7t)tU;Ub+A;j~*}4Bd%Hf!&MS z3Cd4VccU3K2;Yc_ZE~UsgZil`;1=c9)I;^ZWG-xD5u~=dfk{L!DW+8u`}&L@CNOe~ zKTRdONA<8?@S&M3@uQNs8a^Y^f&8K(L8VUcmTdpSJ!tsMZ8{pppEK8_#;Z#Fjy^XM z)DHCKLL~fp5(in@7f5!wh>j>O2P>6*5MW>jZ^kX;u1z{i+Zv|Os$vChLq{Y8nLVTx zVrN?NY9>gJSWD@RnWUi_PL}emG=93g=yPd2P0GwBv#N4RmY&b`X_bTKp2={oG6^nx zKh1?jRddGj)iA@ShP0=6^42*eG|e`hnB!sYp{E0{du}!z8xsL}a(l@`?jqgYwonu* zX$U@761mOR*Pyz81wY}bum>v+0}DqneH>>?b9TpwhSqm-N&TgqHYW>RGlqnFW(n7^co#@Kjh2#)ClRlnPq|(H@z&>Qt-N_*k|Dl&_?HuGsoB2AU&>3Q%=(%ThFu{)CaM)R2vW}M5nERcco zN06-dU$F@>%cA1_;c)xxLnsVSB;kgqHBZ&y>#Y#bag^lOhkWFV1}O4(2OgzMHWuP{ zXPm)dg)}?uaR54XO<_@7FLYaG!{ZJ)=Am!_yiAKp=9oHLBJiC#X(8m){*OdiQ5e5d zQ{eyK(Oc~xn4+Krb${&moiDDD#>n&d;Y>37*)~+z1rVer=~ByuDB4_Lfv=p+sjK%K z7f_c2$6b)U8W#;&-CnFCMUBM`{{&BQ~IBD^r^=jP2x|VNBCF=&+wh-nEI?Z^zSI)#Kt4g?=meDL^e+>UfUvHtF^aP;VKE zdd_C-#Iil&gh%IWll*P*bKWGn{B1V=mY&L7Hg2G~!LeeWCEqDaCV}})UxWiX^x3+T zcj1Fa7PsY~S>OHr&a4*CN9<}lv@f81J3g{RFlTSC1@`e=fp1U4aJ+h-;LHg)j ze*~Jky=c}NF{y5TMY->{|jjsbl>SKC5^(czu&cNjVvmSQo=fon0n$t&3rJ zzBk&nWihc+B|r6X6rT0=q}ksqVCeM25TAUJll5H6XBHc?#-UD}^!5idWvJka_!&m; zQ%Y&VhgdE&A%lLU>VnVtv$mHM>qM&`jAK(4KO^34HQO5zge&$JvQbmdLi`3JW-#a- zOl;kbWA&%Ni%-`7f5t=0Z6zEv`Z|0$eUE#Yw-F-)Kf}C}k$7uei>M-N0%T9`BG>q% z@KPp%$?V}_%xzh?av_?9wePddo?yxA8n0z{LOc1fD)-pv=ntaAun=y%sSkUy^#aVC z>A*%jl7=N~29rue3hwQ+r%(Bs^g*kDb1~EAd`B_9%yb?`+LgiB=$TYd(MrD$Y=efq zSzNu2F`c`a&0V=TkV&Op6Y{fXL z$rNT>AVar)SaPZ1-LP0*37+Y@vnNLRpmyP^?bo^;l(LP(q`9$>9&;trj)4TTuV)eJ=qE~H-CV#wELu# zm5%K>O<2_O@Z&Wf1vrD4{psl zD{igX$SJyg$KMl{v%@3SkeSySIQu&fq+{QRk{%UOjJgJsSbGw-WqjeKss~fY(Q$Om zel(uE>xwHw*9tEERm^R3J*5|zz``9OaH&(lslU=Gf{$SKIs?n+zu@;ZD0g(}i8dYiQMkHDpp?%$|EZf=@Qy zsQ30MjXk-9veNwF$N5{_xQxljep<4!sT{=)kwA%_TCnq9Md1PG>8EBYg&jFVHm?J4 zQePxLHaGKlIK5*gprfxqq5T#wfV zwrFN31=wf+-qL56g!%r$VKTI88Aq%9lW6(TJ>2HQRs89kDOCG(5Q`M}yT!)#=ZKe)d$-O7_ zu~rc3^qp%q6W-C<@8El}EZa8b8rOMD273Z}ZToa;sIK}jTRhbseF9wZMQa!wk(~pr zyExS8ROHv;9q#DjQD77|MQ{NhqN!4Au_!WUva+k@}MK3hUwG~1c`rB@k3t%-R)3ge4Us#tFf?SWfK*1U|l%0Hkv`H`IQ_uqmybvRoZ{~kkLjzzPUhv1x=3bHLH z1m{@^WUm~??C&O%+q*Cj;T~`ZzXBV+?ZFjx$4K<|ASB(m19M(H6g^)l$;PF{vlNxX zT*HkgaJg0wWdk%>d);1eEHgo$DF!Tm)&uy_GmdT0l!wZ`iL|UF<&};inzW43{ z_I^|z6GiODGj$zliEb*NyBr3faS+RonnJ;*LhHpGQsU~&lVY#+%i#Tz7>X!WVKRo#xobMf{M5le`P_XMK)U`IzS|@? z5m!s%bl2PDIQ9)h`bo1Xo0ai}kT0+mFlArMw zOb14>gr~D;#($D*;;|myKJgx$bPObkAyx2tqaORW(E((RBnaQ$ry-I%0=uQAvPI7; zDaz6j4vu^Us{2yOwA&k{PEDo_Fr1J4UM=)HgyK(aX;!pN0(0lN3%rkJZS!d@>=gV^ z-%Q4e15<36`!7FSr@LO zmr?cMBzUhW3)=0MxnFJ9Da%-ce>H9(bNDZUzMWeNjn{d;Z%YHep;#Nn=kAA+O&eI0 zTms2Gm1G(&ZFIXjiJ#jOF7Yg8rZUTe_6f1kSfAenHmyM3K1*6z4C*I;aln0ovZM2pff&|2xJPc2jG_D!|;GY4($8yK4dQ# z2}N74!h!3DVe)VZ&a2}f%4;u0`;E^y^>CNvz*GLfqe3~FS%M(A12*<)>TfxYF87>|<0I5ob z9_du!)}eOzF6Sg1Em_Yce^5cQ;8056For#^*WiCdDZ}gHD$-H^!<(6S(A=*U*lYL+ zLgWsRo77OYp-&gJG_(Z|VlpK5FF-AwTDl_qFYUt@foroOt_+I?)n_mG(e)0jbK+xy z&hLD(u_3w$@5IUfY0$khhVWqFf3(6!g`M~oLutEn#mbF&obj_coYF@FoM1Q^><9gW zLgfU$ae)D34fmqs4s)sHh9+5@{SADdHXOKL0>dmzf5(@brr zTgglR7==fiCa*_M!d$tLO5`(O`m(peGqWBP+%w?oC~4%zIza8ODp6(kBk&CO$7NM> zQRmWR)c^g1rn0@FF82aROb&sYNL$u9dA!fQ6 z;EUhI{D|rkr2aettlllchnlPD(1vhUqX5=j8wa7@mC^L7sgJLi#lz|IUhv|g1DZc7 z;o~J7fVl|%VjoYcIT^prDyJsPI8nhI>lYV3E_!G~+@@cd{g?%+E+5c%EVV9PeK zcg+VHo88V^DHy_kqgG?~nlw(1o5mfSvj|74jpn><{jvGcK<>t0YtC=T7JSfPhw_6L zf&we1yyfFD>$D+yRx{!p0zf_dS?#7%B0M?YA4OqVc(UjgCpy2IS|3)?#Hoes{D|MQ zrOX9Kvn%|z`O&aEZ2=bBAL9c)RB_@AC$=%e0q^J6aywW0@HcX> z*!UzK_nT|*>3Sh>LQRIHhQ5H3$Ik45op3YA`FB(1jKAbw>B=+6i zMXB?m_;95}{1NAd+A^8YcCQ)&CC7`7&wR&cy_*6{lSjk)hYRT^U&Frc*aQ6+Iw7sB zl=ei8qAD*pWa0I6Q{XIjE1h9;IyzX0z`-^-WJ7H7Q06l1BD7Df(L*3JASfo*{Bu0FUhma+&b>Z!gF-lbsva?^IO?{ zo(#wBU{4&X*~{DGm{P(@ye=1n$2yZSs@V+-N4~&)8>(^V%1kc%Z4GWdKALI$&ZAkO z4)na|I_KjnSczNvs6I%GQaXQge?7M1Ii^e~SC75HQTVn)f$g^MrgakQdFL}DaA3hz zE+A7HPl*r17Hw0pYkr1|}~Xvzo`+a=#}IfJz2Fy!YA znzQx@|EXF7(lL$&DOt1CYpy|h=OmW;>IS&aABR~xCSkO$A)D1^$=#io#DzTn0-DN8 zNqx&G9H;jcUT=?t@{Tc>qjQ_zQ)Z0iUSlE40BG4}UmV`KPL#DI97c_b0T(wlY;WfI z0f#1or%x`t>Ryajdsp)__LqT2YCl|FZo9J-1)s)%(`Q^xLAOf z+7is|)-gysc7~rN15{}vuzXTdyj|Hov@o5H@@|(%|MhRtmQ5M_-uv;Su5QUvv;3h= zp$K{tT(H}$qIS_yEebHnf#n&Wx#10=P`Cae{gP?t+g?dx)#t6ekN0Mf4txo71G~AF z3)5JFViw(BnL{ZXjIsFLKRTQ0&OV(ULoa8Em{Z;vmhd=_{nXZ_%3Db!F|!dS>3o79 z15d1~z6O^i)Y1L>4Di@pLkCyHabxz2V4>F~XnE?!v(NxsnlDKsk9^{rPXkl6{ztx@ zZfJLWw`g6Qv9*GOKF&(W)!hz6wibfDxz_`3=@5 zZ|7#``@%LmMz+<9$os7cEl*(JReKL4_S&HJ{C{w|!3v(NJ5F?|o3xjjftJrjY7g23 zKRfcpZ)^{Pb3Dg320rDljgDnAGrOQf*#CLjd2v+kz1g?JL3l>PWCzky+fUC&h55rVEBvmhz^7gey*JaCb5);Mb*7fcd~)jO^g* zP3ORc-D(1(e2X2sx1VHA#d`^x`cM#KZQrG4QCyTpR)`FeWfIdx2UgR_X^WtHQzZJU)QNNaZD{L|O?Wui z6XFI970oY7gYP+S$hlCH=H)$tCWl4zV$n6SO6Z_X&o;2D@?RnQTQw=W_rT`Wa_mZX z6TOp&;1{fvXE&w`UA}90(IiDv+>o$@yPz9K>_`D+4Y)$mno%tL#~n^({BXMFE{oeg z6mS+}R#WSeT=H9B!;I7@@}eJuE{;ve4=*c$xQA}rW?!CvV^))YZ@`xL~zqullM@fvlfAD zw_F(f5;7qFrOgp=$G>nlVGqt*Qw9!4PV)J|V%rCoAB)6W4`be53)ppi9`v1C&wu?L zg%i||^BwAy;FWWY5l7BO_y zQ|XeqSY&ok@WU;moF^LCV^%;8<44g&;T?Ws=n*Qe+r=DCokFRH$LRP6!4>E+kk!5} z#2cp<(YJ10924ZlW(w@ms8h}Snb)ym=gQSMTYU-SSXi-xf4AYPp&xm-t_G4`0(84z z7##ULlipz`#9F)1axd4=X5urkYA+?Q$NQ6Q2QlX#0;;u+xL^9XWV9LGPRmUBQ46U`k zHvu9`_ECyM9Q#kYkz?Y^&>DFPLUYadN3*u!ueecQHbV!$n4RR$Emj5Rph6l@p}>Y7 z`OS?g*TVo)1|K#qM`h1q3K2M;EB9^i^Sh<6eHnmm*hFX?ZV!$p7&MN0&Z&L!qNrcO zJjtg6o*XsA!i;p#x%7_@(a40HV~5E|+68~FJ;5iY7ea%60c3ZYLWF58&9He4d($OZ zX+ScsmN|g_P1IoJ^O8l6U#l<;-N&$VN)e@KyYdka?a<&|Ho3jYq_T2$#!`A5V0 zX;hYmkWEOy(Klo0*fAla(_cqEM(d!yfxu2v8{Y=prt4Dauu5hQ_8jo1*$2eDN7X|Z zZ?TefzWqT@=DY{Jcn7>DcYs?iWOT1aP6ex^Vp=>|4)?r0#N`N?TmQ$2Bs}tXvMb}H zU*}Tb-U3klRWAPQ8bU*FCe>bftAm>h%f-q`*ZF)3XFt9wi^EGo#Lls<{N;18xW;lj zzj|ymlwH{jK9B!n%{%gG%+!tG_~8K8qm%|W?s6D%CWZfa;t8+&LrT=p7R>*Cd7YeY ztiX_d7aAe(uKSfb>CdOdxV5f?KhkoVuOB{!4ej_sO-q!)e^4wZbVlRCyOZ!>OfUp+op$g+BHZCe$X~ucV$TDv(G`Pes*zoVmHBdP_0xTH-F3uMIpyLdH5`E8hPq?DUYz!R1smaY6c#Uu z!fA6)fTgE5t{!THF=G|+o3SbC>4|Ciu4p>Zdy2dBU?DeZ%3gBcZj9r)^uu zYHr=rG5nO46HxbiC38458e*5|;l9Q5pvupQb^VW`^YF{@{o;57r8HE^igrXL73sOp zDYM83NrRG=GQUP4(k^WkDlL^&(Ln3D&m|)X87(prl93fz3BUXI7xYqI&vUMGKA-pd zPAMnoUE&!@1c*U zThvJ1G6CurtHS;E)8IAeJ~d@+0wrDv_f7JJ6E2sktrst#!>ZjPUujqV!JY-2=N?8s zY?pwcnGbH>*#Obkud>wTdE`h6c=tjUyi$D)HD;=?;m|^AV>o50A>m=<63}j5N z9CSa%P+wj+i0jVKha7WUy=yJ?9V(@E*D`M4*f7wYv==R^tEkg%6dJ!b0oi$y=ooiO zw6IIq^+~Nm$A5Q0e$iW+*ms4@D&~Rbg&^+ZIWsia4lvqDkF!g>Mp^s_ zwY;7mX4t~vsuR>9Rsfw83);EtK8-=ZX0th$rg7IQUU2=lvRKNh*Wk3{ zK3xCO$!(Zh%8X5O@l~S^$<_y=&;2d5R6k1a3=M@H0{c(N`w?%s^&xbQzfoy$CyO2{ z41t4W4x2uV=3?@KaOR_aIQ)AtuAM9}a~I2l^f?i!4V=Li*;{f&ZRcsW>T-<8T*+Fu z+=1YwA?*040fINW6ldvQ=Kph<%8!R)`0!y2?z9|*S7tj^%Vy*X9*Vix6yyrw`64Fj za;J5Z&hb|k7Q^$gVRSxdHr%-Q929cL(3o5G@VP4!-=?eviAFcNr816|CM>|)SLd_L zec^B?@dacB^irwR0LU1n&1;p;z-w^_#IVZ}o(?>VU4b$}PV_X;)b((4NHEE1+Ox{> z2U+@~42=437WcS&A8QgRQ+!|qU9+=h-+2ZaMauNK$%v1BJr5_wABBZ}1rV6?fjnR9 z^7e=1QQoB=W?VeX{kl09h4d1CJNP+!{*7qMwnLzFxeiYC?8pCtt*VQi)`-XT*`fLt zM;uC8pf++LzR{Zu$2A?$)v}#jm_Aqq>oY~GGMqT&I<4qD15Y(mJrynq*NYtCtW-EG8869M_zRB2)noAQ zUpLXYMb{v_ITS~pIEXq9&v+xP*%Sx1(0yeL`0X2u0WU4Fb*wOxwItB!(jGF9$c3q$ zDdcqf5=ex^qwJ0vF153j`_i0>(-TT)_RDwt;aLZ1T*U&srLTm17VN#$7Bf1yp}dnuY`2(G~9J=)^9c}=|g=zqM_1AD@K$Eo+W3MLK#7~}2)N2U~U z1?$!`xqoLHNgvb1)5od7D`ZDgsx!a1d~hl$-~ z6j8SUM&;_T0VjuYN{3aDkMzWpy=H7;UxvV}aVN_I$Km|k>Ac$%%@Wm{mz%@zpVRZ4d^%aXy2wdm^`%(EpdXw2RO z*!VY%R(2J^rk3-N|7$2ZW=C_$(*7dcX8=t&m0fXH2kyaZkh!h~TQ0cM6~(gZ*ENd# zu{3pBZ1W9*W=&?j+Xenf!c0^QFNWpkUh`YUGB_}NAodD8-dnG|r#-B)3!ejWEp{w;TJtQ;Q+nhTze93y&yGx3#2tG~*@%C`^!vGex`vuet z^%Zs(FDZ29EdIeF9lEcSK)&+5Q*tI8dOTrQTGIwMml}j-NQXF zH^qTg)i7w^7<@KB4~)}J^S7G5^O0Y9%-fg84bi<0URFcER`(J=z|{oJ#IjiI#jy!q z!DN*8k8(`J_-Ms;8ayzOJ)BocF_*`&gljf9aO^Pt>Cgh0{&x_R4J@W9vS)}#J-m2v zG^;ZRWlNPe;W&$#%x?844DoQKnlq!p|J`x$l8ZoP_EWZpiatt`j||{4!pEy)CJs_aFBUFv=zU&Rtrb}1+kk#=kwj$ zS%ULKV2A&!gF`d&aRW;vt=oGz&11eS zOE;f2d*pzJLoMrAc2*=LC22+TcA;A|n+Y-mYq!g-bmhtm7*TbDOd5-E)~qE=t=klH zQfHx-(m3w$kjeNm!I}LtctXBtM5FtD!#B^FtbL&zTx1Vu>{%7a>D$4gr28P~P=|0M zmO_J3)z$;v7jSmo1K@|iE9rErCjIa#ey?OPTNzbOoy)bkcWp_cuEwRXq{W1Kh8}=% z&$q&|QA@Z}Pd{_oeLwk~qieWhVHM(}Tzy;`7)?>N(yaViA$=eD3NrBmtTsLYKVdRO zhxU`o`T$y7R?6?cR0oB}hv8hN0G5*tK*2zG%a)5M?(9!+l+Gcyn`6kQK9)}I7H$&q z)9GKqQSp;k)44S(uaal+c8c*B0bAY0oY(YvJ~yY6-=p?`^Lm8XY81pWzc%jBKC63qZ39M+~!%cVE52B@JwEU?d!io8m>Cb#A!II-!6P|w)XSI z`aD%jMnY2KXMp%j_`WxpCCxTuD^H!k!sF{nY3*(P^P%Hxx=4Xm^cg~xsx`|u4(49G zF=amU-a@Bx0rl@rCAMbObJsp=nl0mzkSuA78OBi!9i+0J!!Z_n^bYYn(o7TL6Nj<*|1vd}yN6S+X zTub3~nZRNEXiYJO%UJQ`a8QuSh6arjV7)_?UAZ@&HeEf0o{oz!$-jst&ay`XY-Zp8 zxqz$AChYq(4>cW5aasa9BWY_h#P~|HSgWb@EO`(%&-%_e1f+8^+9tSqYzBVLS&dtY zI^pLzPsV>3g{rCrbfF;)>DEBXGWrT0e>aIsw-@vFsz14|2u-{nEJK`i7ma%iiv(^&TdPxKhFj(K#%b z(7dOG3rkM{9q&?-x|GA(_!xTdb{tF36Sy+lc{+JxFq=K^6fP`0g8>##Ky!lv{P<2AG(5Y6y zpZ|C=o-+*s7Di*~00qiby9_g)DPsY<#`_H)&K?W0)zF7_38J-N1+(v%DK z{pU!>{ioQs@&whS-yz4%Pr0@G+r%q`9Dj|#`c8G*DX0;C!UGajuly0trY!jl3JWsn zwrU=DH_5PiPe+n-+$Q)cJK(PRH`sPs%m;1~-cgGz$nx?Xs*+8llxoKNSZ`*B@(;6? z5=MqgBvH~;a4ebqfzV0vbTK0vVm%JCu3{rd)DGe|bvQDc@00ky%lxqLKTmwlDPzeT zbEbE{RB)_JCAYQt@MNJQEZet-tuN{4f8G5KSJkYTm2n~PKCj83QXMDMte_*E!_ZjB z0Qr0orj)G6F%|ekLT&l!-n=`5nOo1H1l?Gyk{ZjV-1f#C)fAESm|*NV=uY|8!`a|F&X9M^ z5F;K=0;NF{Y0k1CctiOEDWnc&u{(#u-NVB<@u6E_cDRrqCMS*C>U>yAgelv5e;*sz zTLleg4}*8fbqp{nM9)8WA#X)3>bV)R*VnRPu0j+UZkWJw4X0x7;n5IWFu*3iEFM?3 z%21W36nl4eIf+XSlhnYURFK#U#v!RJPALb{H7;1UPf}+d*`DW*@VCIF4(H2a@-g#r4Wuaaa5uco z;PTZo5E?y$eO@RJsixzZ|CmyKjl*yHH&L7HJ_sF^GC9;;F`hoQjiZ-xt~A18iD=8% z*I=WYLurlENHKd1Sxb4c@JV|BTxP@lZgHl(g23c1enMwHdcY#F9h*KQ2aUvAV26VWCWY5f z&l(Xo;I=J%Nb*7VVNP71+h9CBGnZDbOhTN0ltnn`;=+JAsCPPs?YX)X7hn*IM(8pA z(G}}h@W+e8u98RHH0&?FS$$ADm8mFH2+Rm)%y_AVfr}4PR8b;ZE9{8pfjRibex^;Y zbLq*$E=shYfb%=EX|tgoTcQ_2+3$pm&L~slt)y7*<2W!lAVnsI?$&yhuGk(w9pCNl z0^7(%;`@d7!9`h?6(lx;gWYX9aVVuK)n_fPQoIieURHuYJ{%vp-`@0OR=LyK>DVI z?8*@dob*VNom@DV^w;LV(Ql^g+=n7iNREZSHqA6yxr*EL+Y6$?eOQaYW_4C9gYqD2<f9GY2vyS3@$T3d+m71VQuNnDd>fxHhtoJNV`) zXJFAn%hUJa_cNDhi@PZo{O&4T?2o5ZAp_99=OsVZ{ruC2R-konM0Ox+-X;`Uy%#MDgjqgYf3B4o)uF7I#PXf$I4nuvzqw zwB0ALI<*y~vgHej8V|!B``IkVF$iyb*-tli-+?Kw^hIm0d-4Z*E!jlHF)Z}LJlwle zntnZKhp?$Z1^4Fyqc_++g$p zLX)+j{ELw9Grz&!mH_yy&H^XrRjfGBo1Y3{bXZ%+WZX?6YyYWqU#ExW9(#i-pGr_F z@DO@U`@%c?>VxKc$xN+8(dN&uWVCUf!in?Cc)x6po!qyGRbO8NDDfN2Z(hUKNjdcF zF|wCZI;?k}kk`{PA=$x1i-C zKQ`k9?V10SHy!MaAM>QaWeDTrPR`_RuCd{B#Ro}!^LV(GolOG=~F>ll3PJQ)5 zu>F@6?Q-lSYmfQ3e&hjAGPwu??p`734f?phP7U`iv=z@ZKEzu@Kjjo&2s2_?IaK8* zz(t)~;*tA`;rfW5SXnp=^>#~hRVtPc-PlhR<(XWU&M2Z&Z~1`{FL{N68t&p!4f?+M zH2pg#%w0H{Hk`c&rgtuYeu5Osh@Ov{eHUQdCP#L|@h|w-%5yg6gV?2?!aNf95!A1r z5GNh@Bo4b-Ot+kz;Y8(R)^equldP1q-Xl>-mKI4g-mHn=+QCEM?(d{wm&Rqk7{C(d z%>d=oA$-u6HC)Cte>m1TiamEgjVw#ivQ>9zSSoOFI=Feghec!eHMPX>qWoF4Suq!zI&j+|v*w9__stXO7>3 z+qP@LflUGzbE*PXn+y}!Q%3k;P!?}vK89(@rO+0m1oGJVnER9*%5_Z6!nJJ^S?&Qw z#i4%qp;=XMYFYE=-+pH1{mLk@GM*kDC;)SbQLrL&6(3>zgHtNZ_Zv1hB{)yctd z{rq|^K5Pnm{jUeSkCt&G^j$G+WE2?;AI9pX#tFT(yC8e86FR)7vpp3_n0@FJ$$y^; z4Gkk`?;w4cHf|e}3*N~cb4$gw7fT>q_A&)Ot->K1VQjN-TUae{a*NDlu(!#BT=gof z{}cFK-?X;DySj<2&j-A>WhNh-7xRYC(pk2j@4_dGub!&f-oZ&;U-j~O4b<$9-J?1_< z9Ji9ay>t-0vPRQzbtgV`VG)X&5-G@G2?hwRk*bk*X|eQr%-r=GT(l2D&XO+Lv__3x zpL|X{FKiI=7T78>A-4slLnl#^EUx0#Lq%sMK3zT-M@zV(+O%Tyd>Ki8PZV%r-Bg_P zCKS+5pT#|&1@l9M`6W}tUobxfv5DX5-t%>2`)(0#lUq!)9uLBEPP^HV$&HW{9D?63 z_6zyalejgkgiYGg$VvwrQ|kO?{=3N(N@*C$QalBo|Bq;P;Y%X!{Cf{wOowwx=5?ZC zogetBU7D#ptHc-1_h4MUCThslaMe*`*&}`razPKlXmS?##~BkpM2}?_sDe||GSTmh zD=<#47IqaK2Aet8eVGjD-O^rS-V#!P_YK|lesSOn2yA+dUjp4w?1nAw= zOMjgr@Q%fKSo)+1%!N!x!A3RqUhN`n3CyB-@xN)8Q4XJ+c7~Vr%!8vV74i2YRm_R1 zhr2~)Y{p}G_H)^M%q|bb*K7Vzg-HYV?eq)l0ds^mtMe1EDpG_FMO`e^*$2L*izzt9 z70S=5;QO;`X#K;9&pOM~gp~_WE0gES5;bW1i}f%xBZT_b8ZyTd&g{;IA#6(JO91y` zicL4i@#Ya+{a;tqC|}EVoE8{GZf7azv^@91UV*E49Yz~IM3L3~4e%#uWK* znv?E|-%T5eA0CfpuS#1)Y(x=uHjKeKfiaQ0Y98c#jo5$zKe^(hd@yKBQ;~Rl>=&+j|?)t#3oE67?Ggm-cg?gHtCI|8f^C2@>5$8v^ zu@w*HAU!Yu+$J`2C#yqXS=A(_c&Y>*R$H-q$1a2XlUBN(brfbL&&6{-tB?X-QKWP& z9ol))y7SuzSmwlY7RqPD%3Xc9D0?0S-mt$z25Yv|>)`E=Av z3^upE&?~w_!R-dZ4f`<)7jC*&-m!xIJhX$h zsY}V>d?cIMXGIyiL~Q7#5`v*uVf?yjq^r3VokDH#u~8OLj}!ZRY%bouc?$~$*Kv&( zGq7U)c>E@NfgG0KVM_MHNj7~jI8RB(j{laSZNLOH$@XNIyXQcXpCak?-@tq09Prcy zCA6^p%BlQ!hf@m_*kr~nT+#aL^y7pz_hrLbsLVBE$=3v*m!~_{U%d|rt`GR=W);je z3Z?rRuc5SZI`m}j!>!Kt+@AP8Zd1c-EMgZpQ^j`fvqS+qnROfLE=5t|yRpI!J&18j zHJE3O95{8wvhfuUaku7e^ql0wu6Gr&>%aUVaP%azR-cTfc|tHQC+eNwlX&)m-bMo#O9xiWpeF7T)=~q0A5iO~H29=K%z^q?O*{ICrxZ;H_<{w$iE_!{W z5ZkM;%1nag+>C+|vj(uUKds@ykZH8|{#@}9KV{teHH&S0u|(K~o4{AiKKRG{F>%Id zs^x#e+xf|0-KLCkAc<^Ew=q=2l(ekQrey_vK2Z6 zZ#zwJtBbIIU0lOQZ#pOBk?rC6M+?-I9Lt`I0zmn48aF8a6z_H4p3TnAqnG!Z;808< zXZpYqQ)2$|&?m{Hh40LUg|LgaHxI?xe`Qo1F z;1eDE^sxsHcbCBHOeH#Fk;Zs^1@zhO#OgBzh9KL-zHOFcN!>AEyfvEQzKsDL<;^g^ zXCFJX)|oPFC7E)B;48g76gr+QLMyqA^t~>Y^X|9i-?7mYX3!@tIcUiG)*YgcTZ7o@ zIa$=TeF*ALQ(!SdVCU`27&3)J|_h*`$Xv1h>FXDQgzSu>HmIyuO z&;5&V?&Z6}_eUIczjlR}(((AsejJ}`;Ec@+5^%n+r*M0|3+mekvxZY;{E~mxqQJH& zoTlV}VLgYr>xPA}E6NZZUkCF)KYZeb#yHa|hl~8_N0CfkoW%W;TL>2xMbNsP$-Ie5 zJWYw#BL~AUDhhZ<%61bl)W?+1Z=H@M72CLXjt8-1$)-a=?e4&354(9Jh znPmcV-8@H3LjPp&gC?>)s{_6n+pv0)4gT2EPl5Z+;^Ao`FiBUVj|-GgdiD_*5qgqh zHRGYbSRZ7*Zsc>Sb3lMCu zO2~5SfYF)t^!;s*^;{2StQ4Cuo&Vx-W}6pxrcua%k5~jf4vA3ouN1tGOTzu{sn)L& zHggx2UgEk0E`YwKrs!1FWQ^##7j-i$rD^$40vo{(lxFsz;W1p-8IxHJEczz)&GZ3B|f=t&V5o;U*I zH~HembF#QJ>ngXxTNk<}W2!~vKSM@h#x)(f5L!X0w&|jy z3uE#0<}F|IR+Y4qn&Gv9G|t>B3OY;Ml(l)*gTrxK+|`v$=L&{l?+bOIQ+|a$T=9b59}KS7X7RD3m$LDz$1~G; z9WW>a*z;8*@#64}wEt-@Jv(j4zB;$S5~C&PZGTBDv1K(%t+PNU!HMzTONLYkl&M;Yo{=-J1uaDJn} zstd><>wCjE)z(M!=9VyjIi0n>7I}gjpjb!Ft3pU4pg{bk{vi!qxe?}W^rru!jmTr5 z6l;)Zpm?KS+~INU{Ha0?7QBz4rg1yq%voi~F!iF{QRAuXTb@W*UWs~cFCev3V?o=u zgN%|saLJdnA>ag(W3@jxez`_*jS+$;eHUzsd`2~2*Ngdvq5MRj3#7d649)rJ4sF@- zU@~2u8`}1bn>fK2ydCl&Qd1uK9$LcScelkCf8L;~WLGNLJV|)}w$bKT2RPcXlG`Np zo0E-Ig`B3xWZ&07-Krda?|~tFiV1;72A8-6{3HIi=1hTkS`TA5eaP5<8M4!T#BXXY z(;5wPa!x)-vmzJrzxanBX`N9KxI7Qm+J?f=EybXB>I{7jXrm~pL0r~l4>;KFM1fs; zw8lM%Ha~M0`Fgi<$@Wcj(S8^`n2<~pF6Z&9e+fRT;qi1qc+d8yXM^`C{OE=h2)5Xp&&KN}J&g;Cr4Nb=uu61L3}dOgN_ z$!3NXOiABEVXv>y-4((tkb4+hdy~nf?;c>-pw)qrCkFTjLn-8`jf)5tR<-cML3K1#VR$|Q2!4&HNSW~~;< zl%Lf^-}0`|&W>MX<2IYt2R(&LRl)4#`%1CfZcUc&TgdcsG+Bt;W3g%AdFYB;hM8Ap z^Q%ob+AF-b2fpDkYxQjK+5ZdjOk*hZ`BNyg5xkMYO*Awqg^T-EMTb0Yk^74+Y@gX( z-Z0;l{WKIqviC;5?)xWtt~M9H*r%ay)LAw;C7elEYcXB9X4o2|hVK?^6(3t8gX7QY zv(XWY*cC*&!t|V(!6m8=aZz?<98Z=t#85Hf2BG%d&ina60nQjBT2B zQRr7Sz;lgnq(IvAA6sxaM31^9WF8IYU2lPZe!&u)=l>()B<|7bV;|Qwk1@ac1!= zCg8|#-J~Ym8VB;ejN5Gqp<9J4Xtf3GGL6GApIagFiver~S6Dx42Yuf-nvK(|tPYe0 zcJ%pXcJho0eoF#em3)9L3^1XOr?!Fddr9_DHyBG#SVL6FcwDLW4@#%JgZLMpcnL!v zni6n}^rtAG<0*UMl+EF|TPvie7f|^6Of!cB8yv>1pzJ!t9 zgHn-J|3gR`F2Up%o~M_$Ti{^WIcf?x23I=-4&fVU`rrqd`W3xy7qR@!fuy9T{OsZC8 z+xbL3Y42<-{&$cWC@x{{JK|t>N*u-L+z~w=62mEv|4fCds#vp9iK68zSggq>?){Zn z?5#{aZK!FdpHo7p%WNtQk{krL+n#Y%+tg^ht`FO>r=$8vZa3_>r3tB{F7lnY9wwyT z;D4B_pkRw62ic8OBejHS=a0hzvjluNbr|hEu!mjND5L2+&ch{s9?MI%g#|M-arUn} zq^UHQE=9RRU0WpU+P9v$?XrWt);n0o4!D)Xv^vjoFJ!$^@zk<^c zc0wAOeGl^wGc2)g?+N&^qzZ(@1IsND;U1Gt`t$n@=H;g24IziRv&aE1m04qFkugr1 zev0P)$fwW0uTJ~k{*{Uj3Qm%dgP4A^4ph5n!GPKyxb1xzbbopQs|5C0`-{QQ{m>cR z%E#mJnn3t+wiULz-J;~iWSA%JhDuKG`@M`|zP8HrJYfslp+1hE?4rTGsC*GEk}*aM zkYKy+8{*@kT5#HWIk&U3lE3g$c>f0q45frnS~dI+6lPuI@^74@rHW7aY3G(eOTW-d zDpX@1FZ$y9MOEZkAj?Mh90$V*74&+n8d$n+hKLW+Xzmh$5>`j)_@@XE>s4^~(*<6Z zkncEo;gqPPHd&nUYz*00YvINpxy-9C8_o=O!Y}Vr;gHW=(rUG-QWI{dCq_7d)zqDk zaC~-V z2#$EGie-Cu!qgi<^rcb)_he_1#3VQNWcFB=dt@W6d!#^ln;r0YV=RomvJ%u+`iYh~ zjKWU`6wrU#HBo8m3;yKmA*{9TJ=dghjvSn&aPr#+aC@)}17BvXX%K`an<7B(LnC;7 zEhID7U|h%=_(AU)x%h5%D7!xk#zf3vf%o6@6Fv5`J(^p@Tkm`Ullz0|iQ9PcSeV8> zx`pGV!Y1-60jBv#fw>BAJ;{Ry>CV(da+et^(%F9xcI>;yi>eos^2BRk*HeiS{$kLq z*T9EzRy3;XH@7NlKZPv&L4lSlnb`(C-Wvcy9MnZGDt6Gem;GQmHIxMmRpVoA;wZw; zmJjeN;rnLoV;{ZMS(V8;_WaI9d{n~V`Lbqu;9|+`T4jiqbuIk#{Z;%vMSC__;uE)E zU+{B_{&v1V&pOKgOLy&DXXSZAiu!t}I)PuP+#>9{f>lT5ZayYM?y$IgVlV=Ak zw`2DWD;Q^)h@CPIXqqUy5}fuiLxJBqPg=-dJT0bhq5Jg0+?*Tt*^KsXZsQN^_ytDT z$)&5dk|iu-mQ&SPYrPA!RjT5|jluj9iwC%UNj&ni*J9%4W!ND%ht+d`Xko(y;s5Y= z@g8Az8gVQI7jLiTXSGD5&Q)J_8fHLG*J%*X-9`Zib49T)*0xO>Xn1Lu#ubNWT(W z=ea@D-BK7G<00hz9&+Q~tD>K2IJd&Rm*h&G(K2x)D0r^LyQ=N<*1H%BK0k)QhZ>yR zz0I)L=NkNZu7_-U2^fu(5}Z;}v_sAmT(aum>XDm}d*&PWQ@fvzWL@T-4T*vHUza&a zp%?4EWf*Nc=+5Q*x{deG(;=+ z{)H4#wh%|}Sqsj0%wS=;3naCwaNlPOcOccNpy@S=R+|)%W!xL?>&l;;mHb9n;iiH* zMz=uj_egyIvX+{9+ZNTp4|KW# zeP2B}`yKXN_tovNvM(QYcSvIYq^V>&=^EVh>*X>{-@`ZAmyp1DvyZQqqc*9NiV|@e zTjQ8smk)OLl)_IH8=9DAhj(53_v6Wr7td_b&>Hbzu^_B zNi4yQ^8m{wm$OEp!*xl$5FRAz;e}I2@LbkO@XbqvFDnf2xr#fe-Mb+;U5s%+(4y+E zFXb?A=_2-Wr3{n`z18$@DX2ZNfYV%D4u#{sz_F8N>__h>usv*od%xSlpAQ1AKlB(B ze_aLpt~;VdyU<&g?gh1jjeH#Auq7uFJ!CRy*+Vl_+&GZk@hYGe;}D!&6~q3y4n-;H ziB%TnJ)Do6HtoKthdJU+7~=m>n9YXMn2dI)e|nNcS4P3crzHMhE5?gc6_|c~2F+hI zPI$X{F(=P3dSuZdHnoeUFPT1Iz0VBiSCq3c7e7MyT0M9>s)6^p^G^Jx;x~}$F=}rA zB+k=u0iz8wp|@`^rdz5&^5znH7dubryWZd~mum<)mJ{^yjTRev)ETWTd-$>CBJ907 znueL|VK>ef@cMh3>1FM;>iYY2aMaa@dMX+zKg|*69B2oXq4wg#!yMV}UoPy{>9?@* zkuMh8MX_W^hUua^bi4m0ZML3-L0jI#xWDV@-_bLop7Vw5#6VpZyDSPF7KKo^eg-rq z_`}AgQZ#g3#6D)6rC{%0{I&54_|I_z#{QW|YZ9+O+PoyRJ0in&c-O)DAP(h*cyLdQ z>O}`UP0?cHPQnHb)nB%wli4HASb7yIdiBuClQnR|AdY<7jad5gUoh>k5v$&%D6(i8 z!7yFu`aZD%ri^G-w?%BNMSRwRi=6A*?d)=*E2%kTvRU1i#8cW+*vO(BbQKck;o1b6 z+(}XXgl19*I7toPC0R*@H`STxa6V&aqE=xnrCOe*ie3b-riT=6CChs5$8yPlodKfvx8{X*5|N& z;6vK&dx(t2$%{YGOR)zZ3~St1<1T>>e!gKA{x{wf-))GYPtkj+rs)qCkt~NH#z{;A zWbt|X8dlgTd}sU5VDSe|!X4#uQq_5dJ9T_uf8J2GzatA4hfZhOLuLtiM>Vm9WdS#` z>pb21a{#!x+v&@S6m&hcib>39!o6E~I=DIkUj+Z=_r=Y|`i;TR{o)u@cz%PhHJ#M% zJ%G(z`H%k19Sm2$tCMDy02ztYLbXi>wEDOdT6M<2iWk>KZ1)s4FsPd}O7!_lpTi-t z>MqRKGMVWHj{#Aj12UZ;Q9|KCT9qU(bg-q+Q8@}_JfxVkQ!4-cq#~|V4;2lrVem># z$U#*bqvt*gFl^BfovU4m&a181hq5YMzi&RBzZpp$Z-(IgiLYVu;la$jS)J|8ljK)^ z`3!ak;-NGu5^Wpr)6_9~oMMZ>k}TiBwg`E?X*Sw?@1{K@Y1$(Cwa)<|LCfY|)+Y#f zwiSj;{Q@7#4mv(u0Zp1X)D*H7omLMhy{&<}D0q*5 zPIw20cFV9SjX$aBvNk_+_iUEYUBV<6SmEsGbk1nPdA?Ml6mDwqaD3tw{>aXU+>uog zZ2G;Y;>g=EaQ4wK=IM2li?C|K$H@k;aO?na)6-Yn`eq9XHtK>6qH@^s<_vH5)(UIP zJD}qj;pp2&>|2ANw&5E|)H7Z*Ut$mz`f^N1&y>@!Rb*ePmkRgA!}!ot2L|~(2cvZ< zi0=gNR)Z>7Jr}wu%S}W%6?Q0fPMT@2J|*14>mV=Di!Q8a=I&;nWeXk+W-w<8>`uA~ zT@v4^_CP~bsGY#0D1ODq1_TNDi5>9%#{`^svjwmDU4(Aa$9V0e_G^8S=owV&_C3_{KLPAQ`J?~EEY9yRuDej$Il|`DzL2rP8?edN;K^S7xgF=d&VH$@6*PcSw3m z9p@Y52jpJ`R&kPedrbj*)hP#7)<5y#Jqcz#e+62%CeR3_o#1(70KZhS2e!w2r$?WR zF#Bx|U3)YVN;@pzj>181oXR<|ned$cJTw7pS0)35_%h`-38w6pMR(;>>5t-Yw&w6k zbj;fXZo4dKkMBI}KXHym$*mV3HrvcAO^&xMvOfXEQp0HEV>LF?`2_!7Hjx>t`|@E? z1E5CJ8KgdD@{Kun=zh#mpv}i|T*wlH6@@shMjdxlnxfReQ+)k@`5>(p#{Hd`LBWSK zDM@7k&f5J3#@Tehl58y&HsBVNyf{eJkM%LN_Zc|mf8ix7zQ6ta$gIj-)Qy$2{Z_ zt6yYr!86Cw(G&6D=;v9KPb-hWlGmd#9^Hq zxvp#bXqbW_hTt)}JE)11cdB4ju?OJHw^SP3lgJjHf6fnkyiQ!NEO>H`97N@j6DT}2 z4xD=LLqbUjD&G7By3Li;xkLx0pT~gNt8|#_mx2%UFM@=kCAu!PMa>2i2owk6jVs88 z=}v&JDnlST+JS1%C}GFZHAF|xiWYx94_E4E!H#N0-f+QgF6G{BeshEbUYX<@4NsG zm=3Aea@p%c>h!|tvJhueWJ(G*(524~&AU!=CnoCP2RUyn*%-i=dzOjL&;G=1Gce_f zO?zPG4STL@#$UR$GMu+qHW_xT$pFhD)w*>i=fJCc8O$5#g%+Oo=}xf}p0zaMN4XRb zANo>MUVW4^w|z#LhyL&zQW7CntctreGsWr6rp)MoBULKvkg9c`3IMz+o@yZ9fFzlTrdp>t$Pf8 z*L`r|J#848sRF0MSHM>9gSe+5gw~hbA@iv#F!b0=HX%6+U*5N7W3dJdBh8pwgCaY6 z(+isasfZltKIhy9Fj7_E$=R4g^nZ;opl~6+)yaU^?w9=6uw%64*j6kW(M{(zO@PdW zn&?!R37IENaZ^O8_^M^tr2B# zLFk^68RCz72e`2rqara`KNzGBZ%135Ch`pzW_tD#81Q=ncQN}Glt1jJoL6VL+27W& z^01BEf`{s?BhG@?Nu0G-no$5VD2ButDHamGK&mLs_VSG`&eU$9A9FjlWXQ@w!=e$hfA8 z@9djTT2dL*th)jC9Ipet1?iM&XpN0G5Au%JMv%@~W#$-G4)M-&+0d+3=nqGxtNsgC z|H;P@ed;VvZW9d(--}ZWhBDi*XJqSUi!P?N@L$9>^w6$_0bN#1Wm`YZ+!Tch+9TMG z^To91)pfihQP0|TJ_a2>PiCDy57ixH@K@_85R)rud~FB&gF{)GqXx=3MAPA?72GLh zSzKH=NIdscEw|#~7tyoMdax-Q#&kYSg4DJMQDVn%G#R#x`|;!_sa{^o*-Mz9Q;MXW zy}sau+7Ls); zB)r*Ag;<>F(!!3f6=AYUHf?fsqQB2qGKH~j+|loQaaZOzR{Pq5qLyyJ!d%Ahs~rS~ z#*aiVr4aZ(5BJG@X}gv`@!XT`4s4mNHN1Z^6sBgh((4zBIQ_E*?wIAxHvf1>jn!Vb zRk-8137u+_PK2Pg;HA4Tzl`#C&c^+^A^12b5kII8!iH|-w^zN!33*fS`=5*Gxx0CfpVBbbEMG3hV*p^5%`Wmhec&@ z0h&thhR-Xc@SyxJzH@<)KY8PgAEQ2VD?j{)KX6rKQxl4x7u|!LAWJZH zv%~5gCgi}7N_JUG#L zj1sH2gMGwETsboh_G}-=Dw;C!b>(3A8yZjf>hARN`U<9U-IP;*S&6Bk?r1YV4f=v3 zDOXbP1q;0256^CkRB06`%`HRGej7}zoIn)5hj+M!<^3xFd^9it!{_# zzcyN8XPPGNlTGCg$9uxxl%1&meHI=y7t>yCG3EW624;>AAxu03#o{Ztb5#<0h2(P{ z5%J*o`XEl6FoCWPKEWBSEW*6W16kVmbR3o#kKdQh!@e48*zWWKChbsU{)LO+B825sMWa&O*l!SN3#(0HkDu%f1( zFkh1;d3KOfqBK(wZ-cbPJ(QI?3bQ|z^L?ie;Dg;axWT^{z-j|&^m8u;r4z^*ng+m{ zvQU^=Rz+IfRiOGq(AKl;;IKzMx^w}&UuK8B-fFx7&S%pSke>oHhx9du`LcvX2D-3j6&vdAFMxAf9H}+T8;7XrLYDg)vi>`p z-+uNCwY^3b48-L)gWONV3@wuZIAu?|wx2+1~_h zXD0oF0D+ZyfYoGNfyRruG-{eI>+mzgxxKgGY?d4x+cXA#O7DmJElyw?V8haFRq)V; zIBr4bKd}TqhRys>&}{DhhQ@ij#lNy6=)|=-xXAAUo%wzoJ}UnKig2l>_^t^oxt~~w>>W=47+rxQq z&*C;MTT%ph!9r$X-&xkQ$`A#>1N*S*7k$2N36s~9!;i7@oXfUR_`=)@ReaS!F?1*Q zsXY_L_ImuJIohynQ!Xr8H;*$hPX|NgNW)C?D{3zU>riD_U%V&_XIxnlCZ9ECpbx=pSs6w7WrJ9#R~TH|-0g44? ziO+2t?kStfh2AQK&EE*L3p)69HlY~n?v69}mvVlqVqw%}X{Kos#?7b-1FKdC%J};f zRQ8xN)hv4$vC~NSK8%n=kHGPO&~G|Nj!br|;uF8MT_u&TRU|& z+vm4~sfT#7n)*_bxspfMGEdb-S6!o%qA-$@JOp~jH`A?!Ml|e6E5F7`4M%U2VER6# zw#uD5==}aTs@sr5zaGi6Z+oR-S>hbr-DH3go{8x2S)1v^8Q`HA30R$M2nI_Q@iAdG zXtZYtRc&#`v$&kKy2?@>#X#$>U0hXy5(}=}eE)bkG3X zVUFOtcptfyXhQh&0W42zrQrJ?3MN|<`7QJ9@O?uk?cW-VncD>|T;?uaxU7T*7d3F4 zmoz`hx)+8U&tmhWyZLkRmEyf?j&i-#c+OgdIyZ8eeL-EqQjGZ5+;aemo9EdY*LLZWX<4UBp@<&vRe5C9zLRn(V$!0}R~|1#_ZOQRP?@Y@t6Q zIl1K8pLbJ#wuci=kxF9~FA_%&}1n^(LW?mzj< zpNKNTQvb0maLak<3zcDecVzQV3>M?sJdR$kR>S9Ko`L!%0^^OL{GudToGM;|k$RJb z{<$0|(hrB@mu&F7suF&*8NjgUGL?PeMH|n3rQtVR=!oZ2I+m)A|0W&98#RazU#qgE zQOC(_Y!7XcKZ&dSzwm1+gK=+=H}RgS6lQRVpY_L%oy%^9I&fvnMrp7&VbFXqv^G5JauaxDjr;jGt~N^ajGnu{F1<+ zjOAEg{ubQov@kC)jn!^eMWN*#8yD$P{j54j{Okx)hmyI4XJ_yYNrK1At%vV;#$m+i zLGZUUlb@n|o<0fl7C;IxxSQ68x!%z(e6!3>G{Zue)RYJ>ZSTW|CO`hX(CIX0;b5FKp^$QV@<7+JmMSWm(9Bo^ zrG0(4EPW9aUR}ZJHbm3Luq&{9vA|v2G#nDQSEJqA8@SVX4K9ECf+kFnKqG%n;0@2A z>-tsP_ruQI`vvCM6VlD~Y1(k>b#K$g+?6c&m?Apd6tTJHJNbHv4k(-FDE{eVjVr86 zz(@ZxkzNB_n*0HtZ$AY=j!Ari??0|}za#m~ZG(Uf@sPS856fO(CP+=j8|ow2-I{fH zcR)T#D%}@dZF?lJ;-111e}PY*(!@WwvW4>q4MvRx2e@-5t)M%=m(nIbhV~;_{MQ0A zY!Um?%{CXj{J;{8|Ez-{bGo@la&m0$nIrsL=Na4%FkWfLo0eE4qN439Rx z@%L5HbBzKtr^8?_uwtGM8p6&Dyb31a8}OB3BJv#>7{wY%97(l&*ah;WH5b|2B^0*P}3`U zvafX%RSPbmO<8C7?!qV-pusR~Mgw`=5}wTk>Co5{hQ9eL*!H7gu>8>wJU{3tPS-M^ z$(~8<)z5?Qx7+{?zWpMZYY#}@*`00pqkz3%-oWRb^VqgwYN-Fh9aE$;kedwXGpm*+ z_vZ1ptct{CvE>l^ZY=iotHbq-LtJ3|F5%uc6(+|Fh6g&~xN)fgsY(u@m&XS(i}pH}<={*kpR@zXBbmKoK7 zHJ8hte>TCAiU_)X%!RpSs?nxh4qUZXBugnP0j0$6oNl@&?CRRd`My5Pj69v$$ihP~ z#e6T@{#ba&w!|`R7f0Z|Oeid0k!hL>xp2#`;JAGfs-LQ-2V0!*{l_{io^%?q+ZEf# z=c1XA1KM{!mVX7!RA#8doK~j^o{d4Qt*;E)4j&fQ$^=?}TLtadM3{9ni`|*vhVOS6 zVM2~KL_JR83uYF8a-t3ENqH%fUh;*$Na=&Zu8W{Q{VWZAqQtHqFTpLBqcHb(D5}g) z7abhdf{oMT@!Og(KBZzZ#R<=*%A6n=aC;V=k&|T`TVn9-*CgiJH3nkF>oOhLIjrZ! zLrDB|2i|P21#k0SzURY5Dz)@xsm%lNNy%c?_O6dgQ{>2e!9~cPbDFk0-UPc288kRh z&2%2U=F~l-uyNm3JZ+kfmAeb^&iAwUtn5Cllv2Yr5rh>oa6_D5R51Q3#iZ6XNxx5x&bH&XN2 zS|>l=eUcRoYcgP#LgwdR@Z71)vhN(kEREy*@0b=* z{Uby4(-86z!?h^%ST6f|dkU+b(a(veG*SG}C>W+C1LcdvBv%nk?@k&pE92{^`0oX$ zH|`)suTO!Tz#>jQTpKGgeuGK^hXHJ&Cz8lRwXTmi^M{P)aNo)YW(5H_kVy@^IO=XK3$B~>!d#Y!%Shb1RHcSg{hpF z!Q6tBsLOpZn{1j!!N;b-i|dhi_Rd}!WyqoTrlGjDVK|vtjlo}T$Hh%LSN-h2z*GwSw=5HvO+3Q=NZV6) zUA+<7s@?HHMi=m1?}Y9~UHrbIj_wXv3yc1mQRhb$bR1*I=3Xh~-``B6qUdcT%L=&S zK0zN_9R^+Q&-i)8#kgj?4)R;oarMnt@O#frG)ar3hRHYKu7s{=bc8Y*eN<-Cl+2(u z=_ri(V}oW6PAn$C8K0YJGm{gmaK)0PEM(Rja#kyYCtIt@cTFk0kJ4jTK2 zaTJDLT!`W3E9jnf0%uh&yXlt{lo`cGZCJ=G60<#8B#3f|k zCl#>@OcXEEYq|!VTZ^D0y9sn=$>7|1a!A5C(0u?1OqWppM06w`jT!=ek)1Hd?-nT= z_d{Ts9_+H2%(aglh&R**;E*OQ-m7~GrPYjK@pVe9$lyO%aC;(MiMdK27upLfz1d># z9T)f!W%}q~vN;tMvzB=J&<;e9UVIXhGOFQyq4c z&t+=Q<8hO?kqS~3&|EVZ=Cj=RCnGtoc0npVD^?L_cpk*I70PVEM@hEt(JCGv~P+Qcl2gHoh*)IRU=~|@km<&DE-@)<}_Mk*W*{%eNPFu7yS`CTRx!3!ZCQ! z%@vj=$TQM$$1dOBy!qdcNy`RRD!VhMI%>HUkh3pmxXL>4X@@Sjnc_U z^yak@!s9MbEnUZ14=blhqc>sM@?3JN7>s=n{g`xf0sMVFo}DyT2Q67yRwea|j@*dC zAt!aAGy5A>b43KZ~40`<%@@#MZ*vR2jqT$#vWvpGBfd1%B+&CBl(Yg)PgB!TKP1I$@=YqhbsxBW)v|5UnTm437>RdhOLD9-jCNb=`3aqSFm=A_XD>mLdn#Hz(;Z5@ac=ZAA<#&Q&1o=HVl z%`nvX2B*>VgnBMb752fU(62lTU;O8Vp62(iaVt@!;j|^gOkK84@!^3ch?=W07P=ZzM z{09nQf#C8d7JY=Stus4EQbfNb%v`R*8r}U-p)#A3_He`QFM0I#@=H*z$cLnxD^cx_ z&;<|~hSLM%Sc1PId^=wS3m+7r%lxa{#49>8WfH~5zk z;b@&7N+-@$pqWGwINVT#Fk>mZg$JkOx~75foWBK!a#b+RF_%eQKZxhf?!fue<6PodvO?hqx%zv&QM|&8Oms^!C2MwrA+aF2X^G2 zfw1L3^LvK!WnxP_`LGdAES*3R!_#=P)OaXb^AMVH!+C!hch;C6PNil(Y}boWHfF+V z=A;Gu;p(TnuVD+MI@ zHlL7;?9mMD(B!CUdnCJZa|!z-@ZW8BxUiPy4E{pmCvMoqbtHL6>U^Wm8a#068~3qb z5n0W$MqWDwSF|_4h*lN0bjmHdGW-_A1^?#1+4{qlZRbgDdK_IlX2h7*5IkPegkzqJ zB5&(2l>KHnt~5G8%R)l1*xrI|b$Lh24}=Oig(0YM(TM(T-U&5HmZ-Wn1`UdNnlwg+ zbvWe#*E)r+|8i#u6Jw}0GY0m%2!}koQn*;Ki6sqt$%#uFsqx5KHtdU{=;yOc(lVM( z&$$@dJpMR2AIj(dScK4ojVqW(@k8##m8X13`URfPQDxzgx?sEdE_^c6#4oPWa7Vd- z^>;aQKL<>qH)}N5{bODjEBeEmEUba^S8tL>zzKTmHy1}taTR>IOVLfY9&QetLVHa! zXh?uPKFcYgvezZZa^}Keq3cKCDR6_E-1xTsrA$9PnN-iTP>bDlim^3h%j@Ov-2RO? z>~=ZC88PyC;fbOuJIuT>n19zN+(DbF=%M;q{>I>$;Qg1`x@#M-xOM$7H{&5K?hVD$ z7onh6@X_sU76So4fhg7k2g zhYsuxt%N7F>hQy&2Hw}1!l-&F+8S?*6-zeZX(2oNW5#Xh+8{&2UJanH+(az%umgN- zPwPx{;Ox94+BWYFXuB>&=RrkOTP|?)wx{B!ht{|~$N)!k`gJ53F1ofB#MxVp;Og!XSgLA-J2t!lrR4+J#aAQP z_zP>;B*iTLLQp%6)icMHrvg~NPaNdE@U?!`6e3-N<>TIjx5;4P{r?cx-(Aj?w{#mvdw*(9lM})lQ3(hyv_KqK1 zZOmjGv}imge?90`Gg3vDugifDTF-v7LZ$i6;+>>vu~9#yt3#ZDBN&B z@giYf^K%$CD(D8FjW=jU9if7ZT(o~5hANQ@`N!|&&{E)oSNYV7b>eQ&*fHm^*>E_o zV`q!+-IbsvYCQftw*)i}`!e0}haf-YJN&08^tuKW*Q*Ld?5^^zc!|~D|p>4<`9Gq#w z=LEKK1D6cN>zb1w=yelZ4jc%pr%qyH&yQulln?QX9vy%`FJ<7Ur6MHS>ahXY@hCsI zh-Po8wcZn^!km2%(ej;}v1HRz3Og8yjh2JSX6|c}+KKR@Se@N1ju1D5$kF3ne?%eW zCuxnwRou2K2$yx`)`?RSMfX3+(aT@ESpDc&2)Wk)+oLsEU|uYLeLyU`cF7MjH_l>b z{)WT!iP9t^ctlsmvD2G;!?0%iO3K`Qwby%;Wy!Z`8f@@M31n!!6?h~f{- zFN95cY1H|x1+;pN;BbdM9?3RDooivRu=%}MvgI=j$d2Gr_m@#Xhyq5QD24NX_G13< zJpS43lkiaBaZi2tmD0vo;4b%DBF!IyXZy6UCT~yR5Y`E$BE zMTQI<3%F$#$<({*0T()yIZX1uOF|jbHbp&iSwZQaWr|H@)6LvsK45OWA@VovCB>#aj zST}z+*Rwl7w5vab?TfRb2UarZX!sHColwGWp1PM_nxRT&rXMs)yVvs^ILZq_Dlt77MPl(#!o@aqX#iI`035OZg#iV@}Jn zu$`}HeuOFeKPG2v+bXv6bskxyD4ZWAHc*1?%9pcJ9#a*=+TqGJfJd2_|+< zV&klO>P#b^(!WJMWK}X2y084@RDUpN%bft@6g261oj%tP@c=T%s4!jMWY}Su#_|() zaofJHfK3?oQB-XZ94P_>EgKYRLW^8AOZJvV0HuN5C zXgB3o-H_wF9+|P*o6o`I)!}SKnmq=G%CThSrEn(yGHqYw4~c43IH`U;TfY4le<`g5 z_QX`PB3#QW#m`~pM+5lFFM>(c%L5clBH5#^!_eY60<`mit%hmP{n40grsc982`L<1 zJXc&4r2zVo9-Q!TD6kdyw@HVD>}5XI*t`MhkLt8vDTZlH?-prElu{6kf@(QS*8e9O z4<8FbjgvAcmR^P?KbrB*+vPB6(?I^n>2z#U)nQLv@4zs%`nv3ktMJQCV4*I-s51E| z`;Rzu6`!FaI$8%C|MTAy>+PeSM^|V=@ItB>C5tZ8QXw=r2*C3%IW6_&O`Me2*>z*sdHM)> z?q5Y~Rv6VCPaTM5YNi-mCvaj%PDG)OhkR32=z(IZjVOe%49n2)&R?{4#!84 z%kfXv9=PW=heg(p#FKyb1q^+;2c#F(D}WG8?=7b9m8J z4J`UQfK1e**w=Osn5mt@r`BJjI)ei=sGx~{EZ>bytp;>xQw^kqo}fmJ!^i|-c=)R{ zoDoz9!IzY|_Px>iiO{lvsrq6v`p!Y6yxi{f659+g$VIGw}4p6M8#lJhd%t zrl-+US$(Jv%ZZtReiOfojbp8CXPfFH>|cxHM;Tyn9LF?diumI14P5qPdG!90%7z&B z!^h}DG-0+LQ<$<6mJE6X3w<=8bM7{%Zdk!gn|{*b?4ww@xf8vlKZ&AmXkq)-d$c@R zpXB2@=;yB(Zm#Af{^8yww0u+!{r4>we(zJ~2TmSFuRMkb|MNLmx9%5zW2YCzn@fq5 z!}rtCpNF8H=}}hDLkbhlhq130b6SeR%FrB7?~(>{k5;MUZml>7E)Rw$+S$}{=Plpo z{fw4Yo}q8&9*d4VF=G1j|I)4*pJ|Q5UKagL9-Wp1lbYjnsuc_U_2sW9Z%+)pQCG(< zgC{h4j<7Dq=r9e1K)N&OHowiok}mF^jDNi?a3#~m4@V0i&u1w5E||g>ddgy>`8qa4 z{|WS+F{k|1XXxW!Qx>$oomUksrrz6H#NBTsarc-=_N-t6ez+-cJ;xhk-K1KG|0Y4( zRe!?Md@oT`%xv)|$vqq>T_9_fwW1Moyx8r?9LnA~m0#pyjOA}$)9Q-^C(H#eUb7-< zZ0)AATY{mYY6<=I3ubnA3&<;Z87%mzj~;^me1Yc+uJ}I(?!xYJm>0I3lK%u_+`n0T ziRU~#KT6>FJND9^gVY*&YF+E7lSv2=VYApXHieqLauJN z4|AKQfOf77X4n6QnJ)!x$vTx!>~w&&TNVReR^s0JE0a$BEl}9=kn;9UW?%NKWlz>A zQ9b8{mriHG+RX!*`r~|lov=6T5qwblhYw>xW-ll@b_AA;3}K_r6w%1IJg~l@%*x&l zf?~;&)S>@_O3_9*|1?t2>O-))U6!)nO~J7;Q6kMZU8Hv>1%Gs$q1SKzQDk(zxH3}E zKK7la<{WqWx(Jwu$50x4^FFN#%7JfL6)h%=ybq1dMV#ih}Efb%aS4|;vPV?psUEumXjY`sYiN<^7(4gpEdOk^- zZAx?C&L$is$4xz4QMv@p4mY5{OiQ*o*MYrzNhGBiOy5kJI5~mMFgQj5cV0XOex5B9 z_gjI}wH{3mbRP3D-tFWgE5Y8&ub};fom{Dl2>gZIdwT4AXuq8S#fD>`SY3sa+x(7t zuK03Rf%16QVlV$UdNuwiFr_CCM`P!nc~JE$h?}J}fGTeVvD@V{S;y&UTBrUD_>}?h zg)0}>jT#tyuZ1ru9f{*zu8URsqc|U7HoryCxUUol{l&h2ILDkb08?h5*)&D6&+p-9 znI{o{UKw}pOM}Upk}UqfctG9+BNI60HY^K_4pzd%$Ni9QaY9_(XAZf$Wgsa$oYg#g z%^UWvf+JStB0b|WvEHJ0u=w6TNMDjq{qAx&%Q!}C_Q?g9)fu=~?|?~y2SjzlN%7{y zrMOgaCZ_v!!-uiEv8Aw;3f2s?v;Q^_vv;Or?^O$WZ!`s#`vzmkX=0Ee3HokZbG+) zZ>}LquFb^*&%80B+zs2-^w7RIZ!E}OgmdQ;d^MhnZ?a|aPMrmkcf0b-%B#6w zl@fLr#o3U)W)U_xY{#HGPB5U&5{*I@ahpWQl^83J^V}t^Lacoqjfk+f4z+r|B^y@B;JYH?rTb@q{s z0G*~#mJ_!Qmt_y2g*zqfGKxG|z=TTnrOOQWsFu_6>C5ri)cHt3&iG&VV3hGQfy)9Z z;`5evZuiqgG)?IF)p;uPa+&f%$4LRi6&qlUh6LQbevGWU`#Bx)WlWRNV@>I2ag=`q zs|re@vsn{x;foMVDLD&&Ui87B5P`ex-j0bEl3+4dEJQ~n70 z7b=VEJwn9p-Vfo+&w2FyZXP^68_n|)rC>8v0;Z+p6I93H=bmGjOl z#yH|X?+uh7eUTDm46woFEh!!me6p);anRe@7}+`>CAZDN*WOR3s5EEb+PX~6ZjwB9 zN<0Exlek|13cyXuiJHoV?(irz>DfdY~T2#7eH@b~IEG~8xq5hT{E>aYW9|Vu) z7S%lXq&*2&hvb9KdLK+aZHFGO&A`yA5}V}}pzQfsm|7VjcFW;FJNY%tl()ssZvy{* zodY%;Zsig!nz*T#>+mZbfX)oYO_VCb1+up>t7;OC**_mW=2zp*xsG@ydLB+0)B+vt zJy0=RnCmF#V&wFb@FX}6r%(R?y((4Y=xhOBt{#KCVIfW76aY zaK%56S18VcrJnvEGxsp0CZ>UGg21q=*TWY+%f!cX{He))8XNK^gSXN-47L;FSU;Wu z+x9zTkiLw*PWNG!4TrJ0uAT<54JdkV$6%bmwe8zYl7G)~-FxG0k8Qm|?SAfzcbLfh z7JjGVuX32+IT+NOm%;nkDfn&QZ;(7Th>bgtL8Ed51f6z1-qH4fJNAO_!C@4;dsQ9{ z&w0?Ef*#OGGNHhoez;NP5u!z`6{a+C7apvj z4}#zHdd~~6&lg&__m%UJkGr`^$7)e=`FHUCa}Lj6`bow!9ML6hI+~6=ivBO!Xzi8b z^k=y{UU8a;J;6PEYU*83`XPf`$LxSl7L)Pn8x59d@Ra1E;&6D@a2PjyGYh<-&K`BN z@mUQi}-NZ8Ns?fyZH^E2p))+W68`8&Qk`Utn#U4dyY z^Ko0(G>|p+f*0|}V0eHnCPuD>${cGfoHZFo89TF8z5%TLoDF;(7tQ^fc#D!;CGco~ z6j~Tv1-{jlKX&t&kWI z$0ak&J$)ZMZ=|61$3LKc$yo3q*yAK&HX2sDmz^Fx2T$qM)AdjpOp7VvU%LjtuQo|G z_4RRzEc*y4aUmGeGYk);DME@*F3lW$A0!@B(%7d51Rm&Oe7!!7%l8Puf0BFa-i1U% zX=@IrbIlp{HvHxmpBMO}TQ~9N7K-8RTsblp81GwTZ-B$oU^16H#C7amfZv1}$SR*% z_;}cK=5bsTx;z$f$L!T$g|BX*sJ#KFVC&DS3nPP_%hS0d?0bUzoA)(G)O46%RHUXT!2 z@(Z1V@mbR-xTX?CMrDA1sx8_02O;FOESWP&vx1Je0?OHt4x!l=I65|wKD|CcKb)hn zHZhM6nnEH!)q|ivDiz9a7g9sTJ1)~9kdpLbAize0^zLfGN8C;Br|YS%`T!m9{Zl8I z;zM6As(_*V99U_vpTF4V4;rV7X!3{AQ+9bvaI4QBrSZ)W&+v!+Cs=EO_} zV>T^yDg%%Giu@AeGWfHgg*w%yamP%u!1Ui(aC(Bd1Bx;-cH!^7W7Skf0{e%sNg-FFR2E9DCBN^rZjl zyZPJK;z7E}iH^y}(qN-VIy!O?-Q|`EoQ6!A`fnNeNeP`U14F5F#0ff7B_ZZky4q^x ze4;45Xo%lX&i#?ngCj8)p?O<4)!b{P&1;8qOLLy{r$@^3X{ifH#%>&}l`SB@2Qpl1 zhyyInl?1~JGF+a|IIioVJFM2qqFawcN$pSwnQ>h-MLm+AXI4ZvE$&n8>-Y4i8KJlT zC*O8Fmp?OkA1$=r&p)*Y2Q!m9pfPL<@9^#rcP}iLo3{ND6fbK4o9A~a)Jzpl`&7X4 z0o`0+dlsCzEObH+PvoCm+Y9ycmvKNlNxEE_=32hx_{!~+w$lyTPgK*&!2dCH9)3Bt zQ5E5aba6k zxm|XPso>ObuC~8PEbTvmjPM7=_dTKZty>}ROevXOe@HuHmy+GK3$){T6j`S1qnA%h zVUY(92UO}I%|f0UCzwL?<-0XwyiN#Nf<_wgrHy;jBSQ|Sr*K2nl6Xy1Qu{@rGCG$0KHj1}+D~~U5uoG`q?C9NQf8*m5iM&{4vB^v z9=9p<%{3bS)e1_Nd?Kf~2Kug}%5B!Fq{wB_y!lRh`c#n3%{tr1C8<1shmp&0)#gF` z^VoWDkZala3q7Dhnicwht{UoyUf}?Cyl4x{`aGH) zSQG-k&s^nR6>fyL;zoR~u!R30IT3DWDB#gOo0!|XhY&u%gN%+ufSJY{-uy=~Y|A;o zzTN+iyPGnOU-!+4AMp4a7*-KmColMfh2Jov332d#n*l7o5G{P?UP0beIjHPVq4d!r zy85yQX828JTO_Q=x}$;rkZk~6D=qLw%row0b~3yhBoDgDU2st*3u2VU;>ih$?BIS~ z{He2z9dVAKc?ZhGwT%tjPM7J>YM;*@wk-iiK8|-0`WR39kp`3>hJ~O1Kw4le$viFq z++8Bh>DI)r!9`qKbBd@Sv_a(Sx}A%S52abUEfBh+l&_u|#O6h7LVe%`Zpy1ISm`Uc zanj<+ZpT+L|M?xVhD(CpY+qKbIUhJn5LgKDu;u#+I^-=d&2QeN*7Ko!>XKHFZn_6u zA-6!<@jK+KxlZlRRN$kJz(SELg_qOinOWw1O5NE?ynP^Zp8kMLEgkXwfx&dWQgDcQ zuY~+I1JbHNEa;H|pLNQ(d2I|8tUU&3eTi=M6!MqU_tebP;W zi^q??%I6NB$0jbBz_0IF#EM6b0~4!1T#>ar-(Bj#nmZg(XDZ@|8UEN1HI5m)m-Otrn+re`J-!2L*<}Be&9Cwq*z5^D#oxpy7d;!b+GTG3*0=KrS zR+x7*q5sK2*a+&dvEPav7f;5(1?8N`?+X;S1zUKxw&!5J{JPalTtxkafe zru_RLZMgd47 z%z+be+xWUU5`q_72@-oBg3U`Sy8qi6n(Rhm@bPgh&3X*CB(0yboGpzzq=kH_*>j4O z{*PO<;t{=(4deLSBRJvfJh(n-iI5$;4j~>25c*RC{ay@ZXK&Y&N2nZ)hO;zX649e0 zjS{0H*zqYk+}t2N7G*jHhgT#BTm;sTV_H6jy#klsA zH4WTlHbl83J5>A?H!+r-Oun#TE z@VnTSRkb}}W!ntVp{|%6cwGz5YSY+%eIu~0e-L&W)zUkCW2Q0348MFfW7py zgatdEQgwzRdp`C&I_FpM1~MCP@RfKR_f7Ddx^4yuiCj2&OnBXuMzZ|CD=@`17HtB@ zL4fyH{-?x8Zmsk)3YQR^4*v6?-1scN-ZKF1CTie77ftS-axIMWip1dha?W7uBhfEP z<^H4&$KL3P`1Sc|QgilV*A0G(BB$K|O*J0wx-#&W$b{{6J#^^1EuP-eApC8?oxM)T ztx8RU^5GjX(=CCUT^Wb9c|)-&ZYn#bK7t*5-^oX|Tw<>m=F{;JGq5%F3P~&-PhlHh z;O?{0P%8MsSA3G^gS<4^ww;PXCP9J?-!7bozS(eJ6y5Nj%}jJtaTK0uV{xNw6C@i4 zau=T^W7qzA-hNOX6;#cFBeB{np>Z3`wK$Dmqb$)QE(2bE`^WuAE+zfZRoqIUFLi>c zqq{b^8^rJfVi1vvY~PBN}=zmAlupkk|tWewH?)S!>6@9nS`Eo0~3b zYZF*lQwBl(qRZlz&u+ZIZEuhqe}!(n%^=kg+vu0qZ9aSda;SJ!FP!5h(d|TEfjyp1 zntn?;xsv7L+K&(D-TUX19>sITX_sk>Ts7A-C7+kSb5h{qIYZgyQ&9F#8KjnqX;%7V zvUyrh!EdY~S^2G<_V`=$yyhN(>wW&tNNqmw)k88|*2I;p8Vg%*xA3m+o}#|Xg`_ww zf{W@1;NE!3u=#$rqT9{4Xy?*ma5J}}1$&fW)y{e_v&_FJj`+@hp0^hMY3vs7m|M=# z=>%vxsZR@P>xj)y1BDxHbgJ<#sZ@3HCbOz*yyC~%pMp*2UAUL}dC)UROc7f>Y4-CSkW@DSyov%y>%W~ep{0YyTbt0q+*s-> zPJ;T*7`pJs>qj_{pz@ie}mnhxa0fx+UvU{;w##`%tLYI+#S{>-C4Di>*R zLnL=i^%zX&Bj8nu0o;1FQs{piq5L&vpyHd!?Kg|y7U|!n=n3~|rPf8bpT3x$tE*F^ z-Vtz}aF^s>Hq$nt>pb<=20BG+$;)aPcl+Z-(e8+Ja5h2C{rM#>*~p*L1AX~Z>7V$< zrSc@lbh)|Oe`(F9P#WhT_%4pL^BFCvVE4R2BoTdG$V)%sD&O7bp1k#fcc$g!|1urs zs5R3S#U#M@3DkS7L;QE*1E@&LgLv;E{@kDiP?gxhhuaUObMGYJ>l-ybsO%5->DysA z+!x333eB`ZJso0~r$O(9g;X^A3e{@wqsT{3VZo$W-m@nL-ab!*ObK7Qcx?h5mdfU0 zEnH~Z_878QH3k%Kuu7sesKU?;bdTqix)lD{Uu6&y_$0@X@xD-A1Nqr62IOrh!!`e@)l2Kz;8=^ zNUKz*mL7YtowOyl+Q*7JT95)RKYsH%_pZ=yA)jr2IE<>NR*H2Kx@c090)zz=agR=Z z5z2Kqv-hndc-QugV!FpDiMg|T zc3BraA$r?k-lcIWQ@{cB;lISc?*E}Lp>WBk;40y~8eH{y6Xtgxgl7Beu-NV#*sS@= zAJ8bHgU#!iJbzretC2TYR13V&Q^~awc#o0Oux?@MII+9`eV|X8siN^GX2bP6-NFpY2VZ$7u=DlW zSZC~9FnHP3U?aB#jqzH}->oxWqtef~5mHJgg(8#DPJzasimV2VTEpI|zn(d_l! zF8C7P18y&pP{VaP+;x}27uS_hQv4IJ(MWoPnCV4(I?JO$5BU|qc(*#yq~}a%f_PaoMgJxph^pc9>LY< z<&577r2Sf&`a>Wi*a&YwJK9P&53Yo7+#UPOce)eJA(EZ2I$*rLpKkY;>XOFw4!_yOYL5Za6Sy5-ro!VHkhKY%)r#1{#BrAL#%c4be1a!ar`qs(-w*j?g_Vtb~M+rx5j}2D{}oxLb07TYt;o zh?j*pGP0X1eVoHv?rebhbqbVU>BfQ{*^#6$=2nmx9;C7&Tu;29Z&9ENe3 z0>@-jGIw}9um+1|tla4tw5n)8)b>C|HJN-@tT{EzTSa&MHbUq9N=`aAmAfNZ0_Juf z>5Aae4ZdkeIo>rmB<%xzJnIcNl!ZOOv1rgpXrY z7ay=c0Ak^8s_^m?{?fY+%SQY1uAe($-VaY?OZJgsqnc<9yH0j>*Fi1T6)b*fg5>Uf z01bja?1U1U1Z_q0!L{O^H=$@yG>MY;s({gIb6lIp_{T*GSfLk*iUM_5BqkEegcjt})oH^N^2;h^O`jRi-I$UT#c_rdA78aA;5$ z9Ef8uSaONjE6t1^y`2dG&!*$U+BTT|{w{>BE9agZABCrbhEaXt6x!bMm%`Cdn%&8YK=U0FFf}>`qrZLzW&fG*{y{oKOC&Pk zyom?19AMZTcN7V`_4SQ)u+b)q-`3l~4HcI_nJeLQA$#)1-U*FOWZ9;gD|CL94T?40 zS-F2W|Lx{{mOJ4V#j`6wH-1^w+3dH-cTm^3&6LuKn>=4eg!+xiSV@SK5~?tXaM zDgq}PUWKPB2SI;GBHnx72i@14aKvt5@7Uvo9g+rY#UOPyvBT}*S<5I+`iLaGupdZm<;J-D z{0S-$ILlHx-hghwtXWToclAAlkQ;?cBdXA6r6!4W7NDz;cRC@ppROfWP?vitIGAq3 z;GI%<^6V|J>%E4h;RD&s&R^WO;CswJJp(^Zx`2b#CQ;s6KiuIGO9AuW!A~IvS;9rZ z)lm}6Pc8-4#yc{-Z60`d@(ad}RzOUFB1^e>UaYRRk2WrLWM?a*L}4E}>}i_F9ke$l}+GR<@^%df~WX+^ZTgr zbvhfne<;S^y8*jo=2KfZ4_}ub=ko?|+`GmxO!dtmyzsc1s|fT)y+eP%-m3sCp8bHp zhxVLXU@m*TSP}E~6vLX@Q10G5eT?=jMb81#`P;kygQ*dJp>eSilbJjLYQANHyqP2o zb*_Oo6Q1FA*ZBj7A}m#^>a-)`ETXazwQZ0ZS=s4s|rC5jCdTl85c{);u)zOtj$~<@BVlI zmi6KEYGV@rcC{fM9~%mp_A>bU$65R&nhb+KDB`w#hJ1^0ogG^|0Fotxuv20_G)E@W zcwugT?7~3arB{MY9ahIp7^8xkf4aDqPD`3~Etc~gd60BXchmE)2lzI*bojn;EA8EJ z1ouu-!DSz3;bz%RXw(w2>>g>Loz(;;;qmBwyI7?D*^4u|kWbkq2cS}W5vxBm5>2!! zxUnIFncBRmEPGfoCC{!!-wF4j_e>J{m~3MBHXphLrpkg zPQBj&rcYE^#jacm4HK9bf2BdH<0XGOOis8*tmnP;WZ8+CcR_cGJz8I>sY#8!z(&s# zv#oDBNapJ)=(aS*lAHug_|r^tO3uP!$BDE$@jTzYP?^7>GzaBhts;FUn88~LLBre; zKI-|>?jtdzJ;akjL-Z&qz5`5N#F32sPfCk5<9gJjSklJN(03q-y64)nfY5*B{YIaL z4WEXgrxei3!VFu5v%>6-G5BQJVKQfB+^v5SBt#O>VckDCIXwsV%+-bffmb{^eJ>l) zeSn`P9fR&C(zx?}YJyiW6@2FI!<6bd;?0Sb(Esx|E)-oQ>6cBERi=XC-fliZp#bh( ztAay6jVb4oC(ieK%N;n~E!th|g(F7~;<}%S;F@Eu=rubW zypC0$qT$`}JrFl?G2D{5M1ebx!_1(wbURcQ8b96RRomC&_e{b0o-aYm%5T#X&sn&7 ze+FpoDyEc>iL@hWJr-`Sr`u=!anxo%h~54Pb}n6l#>e;3$+rz~qECxwAX6umYAkJ_o(7DxtqI4RZInLF}AS zZ1N*zmK5^>w~P)J^__RXMY6>h6l}~5{1}PXpMDb^JN=E1csZQCi&w*OvE%Vx=qnoh zNRln=ImCCaOoR>5NuZp00H=K$35^l6h5OWUXg%eLrxgSijJy@|J+>6*MyjxXoo;w@ zX%}4Il}}2T1LJ0y(1j;Pc%egJNymK_8>t#opx9MlVGF*5>(g=b^BG{Wzmf(o{mIRK zx)YD~gz}cRgJFYCCoFYqFWaHDWOH-8G7Jfhgn?09Zz z;0ZD+`2sH{FQZXK46c6GL7zA3lQaJm6>6!A1TeF&{~c4MA%X0v6&S?|%4K>i;$pKiL25tXW@ ziX1}P=!m~AM&+;IHcr0=ZOI$Z!Q>{~X&Wgj(q+e z;9PHu!O~QXIVxzg@g^bcr9**Guzx}7CSUmBMQ>r&qqqF2!A97lx{J;Rf3!Pu&l8nL zj%S$<2#i|_pjugu6|?*NM2%B)ZvA8NcDH_ryETMw6PO;+s%ze(eb0`<9<2PKpDDQJCpU?ZxLU7I-YFo%At5r0KT8RiEX;E zk6s9O$PIV|oHO2YaSvkY>vDOlzp96JCi~b}fiJOJ`Y%VL1THIgjg51Rpr{w^?0}R# zWZ0h}$K{P+HP0LO;1`J7-3G6Wg0Lk#nOzo`!e<3m+SQqEsLa+0nW?|D_S|G|SWFiWO_v_sb^gP9Ac(Ttr2IDg1zSU8r6>ePx*M#vsbsV_p` zRsX1_H5%+xvthnXD{u3eaa#?i3I2gJmU>hTyBs)>S%kuVXADZbN~bIB?`T!hKK!HT z#wN-cV0&B{twu>wS!+; zyI_<&LP*9U&=|iCJvDOq-I@jbeC0H3ecK7Ah8f@_{RPZn%X3I6TZm@)Unx#@16*GH zg?GxiNXdPbv}?{0_AuumP5RPGLw>Yj+wz4_^Xnay{<(qe!oKfYPc^`v9wQ zW%5>KutlMqj`;}tPt8Db^HxP0Ud-=5z*C!xh?|u;AND$4#EA3-q_WivKOdgXOxLyx z&JQc7Z{H4P(_1JjbR_uyN#*;hYq^u7r?AsCTc~>9bvRV1fo=_JsZij})L&QvYCj{v z&_@Qc|K@QULw-|o@~n*)e)}b6h5Lxr(@%B958-T*p6ZH)Ly*^6;o?F}>r5u@9q#vs8y7i#C;` zcmGPn-|CZi@1X`L|1Sipeq>X^EoFSRR+X9dN(xR#MI0jG3z<(`n9D6SEbo3mjUNj@ zd+~hwCvaN(hKaeervq@Yem;ETgqa?7iENE#vJt}`!P@`2?Pgt+g1%;b%=KubLlv`7 zaX~4>PjJWSdJ0f+sT~%d{!4jFlAvwkA?XMZoanIyyTvO1VCw1@OR2Eg)QRnBrp64qM{$I!j`^oBbNV}$IXLEjowv)zsj zvmzm7R5rIp;Hk9FKP33c@R#vdu(20h29Hlrjgvl%4c5US z?%cee1S4@d5f4}qZ1d!cf+M=>b6~f zrKo?Zz_nCw5_QNp<6@89^!7{=ucbT)=Ni9<;1Azv$;VE(u`3(|H8y1a)W(!mIZ&l{ zlq)RigWOHR%xYGjE4HdYi@oaUk2~*vl51WfG()Ms;Uaxlmvs`3>6E0tY z!uV90@@ENGc|(UqRB5A6aS(-6490z{n)#gY{F?E?b6#2fI5dk_kam?7hV9$UCzf1+ z{dK1?KPiyw)am5s9N!1g>$gJi;#p!%DiF@E3$VU^82%1rz_E*QFdBz zuiWEg4z_bQZ?^MVlV8Dd33c$fw1WzM^i#8gHS;hgYJc4*un(ni{Rm-K^QVj7wq+#V z{cjVNm^hN_j*nC?PGFO&M7Xc4PpDx|U}?%R^sqS@OaAPJ1Zgua>^AXr?udU*UnFsR z1^!$&m4aiMz-VkZE$I3~pD!!31ECcx`%(cWzZ!ycyB5Yw$%Lb=&HTwyWqP#s5DUtD zD_+rbj-)*Xu*0fHnTAIK%Fo@$f+7RZYey*S+H;!j*I9vVmnk)UI|BL2W%Sv9C?AzP z!G3Vt1qk@M2~*_u(OA~aP1{pWY8i=;I8%?AK61svQ+2f1{4WjZiiKk<#{cIC7BUr#`7cL!G;SmN*B(5f2;klcZQJD-qr+1 ztUbVdlLf2%G!YUGZpIH?Qq28m34gLT73y!lU_)}ZlmGU^I7lUxOQ;ZB5aMqn_f<>_ zulwTZW9^s_n2O^YEb&vH&?WrJDU(9gji&gmrrFStF&jLW50Q{~w{nR5CyXrTR*;%IhFcu&=74K7-) zirRNwFkAis9!+cIMUy6iseza~xBdde=PB81f0+Xl7DS==>k;tJ9?ZHA4HWo7Ik>fC z3hL%rK%J=-%6JYy`$#MLnJ|Mq+;~K#Q_$knO_h&=X^f%`n;z_h!}?|U_Pt-ZQ%i^7 zns8m5=@SVLHp`H4T?DK<;Ri|lX4uu1$%zFw-?Nd!aav<9tvnY>oP{^U#EinunxB+9 zu$XH*9mhQ{b!OA&?V(+ddufZL6`mQn5c9*^;N&l9^ic@H40~HBc@sraIp^SfgFN=; z8BvI-A+xn97jmX%XmGiRfA{)1eiaC^YSZO$!F40>m9>M_`PG1p$=tQQNu({Kj;+In z;qYlE&?e}GP@iP3B5F{R@6b2_UV!-pcE(?@U z5Wlb%!zf1==3Ws?u?yDG5dAc9dtw-AiW6DiO%pD+=Q6)+RRm^*PD5R3sZrnzbi|vd_<9V`in$>wRAAQRggn+us0t3-7?K?s!tro5CM>FAZy# zhEQjo6c)XHQ1j;YXg=@bJxIUhhlhucfe(ixY}>< zx6f+g{!@*j?Jtz6`o}0Xrq>J08r-NqB$1Q~vQZ&Y2A3C<(q(CXw)jOn-|gYUWO~-) zZoy|YdQ>88P74(F6RynmQv%y*xP;OLmVNBKD6vJ5AB#;O!CfwN!)F{5D;1yMTssCr zUy%}IZrw#yvy|BG;WF^3X&3t=oYDRqxJaHCbU~^27)!oB4gVW1u!(nlCxVx-@rNnu z7Dd89^S@lsSUKkH^MH1&-ps9D$w2fnjqeZJn^&BWL$B&wR*^750qSYo@}Bc`Loxja%oeX(XjCY zJ$!GEUUPf7#5FbWRQ?)?rU=|ti;>*5aCf}0y@i^G#FMyx41XrZ2uH5|&gI7vC7-gz zCu4mmn@eI}RHic}2U{S|%N9$v$(5i>Gnll$O zB1U0Kv@yT@MXFEwyP5yt`?AZ?tSsq5 zEAKBAW_C~MceWy%C(`0a?ssMPhaCs=4G}QH-IE2$T4L9Nf$-+#Quf1#pvrdwNjq!c zaL;DW?u;4y+B=(VJ@^8wXIfE{r-4|@bp#)AHypXFRvOVi2A$HZn89UT?7y!F)!9RE zYW_6##d|a7->^;Kuo|-!Y&5G`FUvMyCk-4mg+*0$!N;A4L=`q66nYt;{8TuuIMmBk z*r}mf!BkpyLmIjM1>muF8rGdw#DE)aY$ksgX1G1Db+KAR?&%f0>6ZDlb<}d&ab&${ z?jd~Gf&;#}Qw6nK;`!SKWz=l{f&W~xjFMLgzStHecI{{aUaVfq!m8q6 zO<6W~Y2Qt{QKbt#I~cDnoVz|Xj-XR>A3?5VBY!SV14?|?;ERDPgszW}>vm=|qrVz% zPSqo(5fAkxir7Bdoqlht7JdF&%ij?_Al0oOVCja}baGoumCK(eV0Z93y|WukS@#8> ztjSV=3pI{q2tD6riIFTSsR3FB^4!dhXE5N7rg%Y;1Ku;J;SDXG!@^>pgA5O&sT2YL6;DP&f!1zcGw1jt>1*rH1Q*Q%l1bxC1I zbMX~F^h`yKwDV{1=JH^@vJ?)om4_R>XLz6OrtHEWW7K9tIrjmVVT1D&)@wVKc16jv z(p3dCeO(?o{t9QyUun}~V;wfYED+Dg6~U{;J5clBBFwfN$&`0KhuR^1yp7HzG&NOb zPxhRnJx|?ntVBx9;W~5tcuW;H2NhDHK@x5gypyS&n{b?HJufyfX7Onv<{q018ml|S z3uQ|w#mR?d4GX8We-)XMtvZ_!e~j+_8$jysj3dar z{`)b%`bw6-^`A~3UrNHy4-TTZTpijFT}k1aC-L@sok3mZHSGPDK#PPOUT=d2rCpqh z!>`)l_&XrlzGwvuetm)d?FofKE`?l^#;`#7PoaVO|M;wkSg1B#&-Rb4;%Woj*|Bsx))X$xci<0SdH*VR z-`9)FFo{H$8zEpMct|&xcGTSamxb(y!0>MhXSdF};P~uEbSSr*pWzfjX9dROf{+dP z;gKpkE%+e@-c16h(&w}?&u3!S!QdvL@$Su}`@fpM#1p;X%w%mt3*6!wfZH39qh zSc=B{cumRYpTqv8YtY4d8a{QNj0qetsb_zo(zuxMI-lV4z;Z|{lgDS-v+;ZC2QVp4 zVOd92VBYe-aNe_6a9Qnzm0m-^)blVK9HYbD-n%NYj$28k!T-^cpVF8da1`r0Uz1jL z1fJK+rk$q;GQZA80HIsinfHsh4?o6}wM{3?UU*b&u}au?+4JDEEQKCSeZ}7j{0tt6 z_1tK;E;?6|$`8_e$9b$Mhgm;>#YxG)U;l$J<-<9M1YLff&H`A>eAww9J=~UI7r_0+ z87_bMXeOcP!GG73p^@>^nA=J_px$VZxVn+&kUh3 zMv8rl9Si-*IZ!xN1(!l~&B2%nY_3Khd|If0@w+a5B^u2yq>FXAlsakwM3pSW`FY={MaP?)VQUU;Djy(Un5j%F`U1nRE)j9J z_VOKmonZQ>7*i92==|l&ynCNDCG;Ht4-b8qAiNe?F@8j~y(|m&z$_{d`TAAqGgs-IgM$Wz>A{?Z9ozSeHjlSEK z@nKmCY=yAHjZM(OD1RwdpKOfkM;Fm5mq{#A$_RGI$*`P(QrLbmO>_=N(6n!}*xQBP ztWD@U;tO>gm@trST6Y@`ZkfcShh$>Lxn3}Oe27lydeiN$I!=FU54rBS!MQpgfGPQx zVE*d`uyc4RCZ4=RTiab>eVZed@Q>({a|+qtn8Z}t9}++J9n~pqAk{}EFsogGf!}D@ zIPof3hwRyW@q`Z#d&hHe7gZtsxV-h$8OLg`yzqU zUdb?aEzKY0#U5+guqhVWxb?ypx}o4lqg{&G4TJIclAlUSnLNB+l8BRC8o^kYDHqO@ z!D$WEbkU`WpXgcuzCHu6_UHpJ6c}DbqDt;j)lLZMxeGDJUc$V^ z4U|6^vKc2I)cEGlgsK@UIkz!kVAW#Eie1;kZ&?SpE1N*1#p(5j!IxNB-XXSr?-&Gj@D=d`!L*W=;Dt)IlYOn0#^#SB__HkH-uF2XdtLjMgu z3r#9U(9>82mazg~;?pMXh4Wr`)qEe?2W^FpU4uyS%YJf?>IJ9ni_B@fKP~OBf%PX3 zKu7guPVdWnnqoJd9^L&3@)bny-gfbRw@sNtgddB%J7kJ0zYLMwNfgQ_+ke@Rsz$%)Q`BkbSRKYKyL*KT(AdQ~=B;FZQsmhv?-K5pp*36oaXIZ# zaKW#l7CIJn1A-jfAa(yByc@d@idrW#8;xcPc`+Z+X*ON55`pCD685}C3aY;}^BXS9 zq1A$Ska01FmGm!TvmC6&Q-1f5>Fp(WO5lei8fH?OwFqrAggnBuWPaDiU>0s6@FF>X z8hLFC-Z`ly^t)1dPpk6~aLs}{y!AZ%E!s${^VhJrBQtUFfo{61aFs?)*~tIAYsYq* z{DqB=w?g;UO#)v5LFU_AniiZ3ug;s$ZtF-e-dq8m@@g3ORtFnhFYuY~K0ws8c$gfl z2QFP+@XPBdIMf}7%frlQ#nFSJVNGFpGfoFKUXf%M9v%ztr$6SqrjEeyDQCHYF>`5j zSR-WA3mKzZbD2qEUCllPA-81U$*i^tZt}mS^xo(u-+FHlX1vzHJBJ70$E~_7{@ECM zeXW^$ty)fx@h6lApM%k*Vs6B*oBSltJIwl@3JXo=NoDyF`uXG}ZzX5Rz1<;6UY~wJ zpy0Q7DKkWPE;m7&>kqDQ!&lhn=tSZDp(y>njB^(5KVOr)U~se_S9&Ov9l0OPmPfp* z8SU!C9jOe)xmn{OPV|_UJN6HhZ|t&qrJtK2F8&+TJUIg28&6P0w=RsCYt6mepha6`H1Vfp7R!cF?i#>8hv^HjsKG9M6w4XdAU}C zucPnNgX2^1Mb&5O-08=58K%>OYJvB6I~EE*Tx5Y$cj9k8k&HzBT>hpUE{E+F9H@6i zTVnFbYKsmmH1H++xO;Fe=_G9Kcc8WUM;SA+#cKEO5a#`vD^;?gx3A;*{L7ANM$az4Oq#S>OSs$zhK49e%+4b$nla3mE+;xHt}52^>6C_9w@Xr^bG6 zOiv!I+yk86V?EsMQwz}vJ)F6;3-#1Qk!<`uDoFZ5xfTz(z@-A0J@XO_S$>9pwQ(ga zG|*)`PJg3mnkKVm}_JHn^PuedB7gRK8wY?uZ zIyr+3IZ5_w*E>29K9-q{O=X&Y&(Q|GZjxJZf^3E!rScgAMBdGfwAAT3SDoZSbs_4c zbs?IbnXe?*iG!Fyy)m=TosCi{@^oT&CvQ_RhL!zzOkd-ID6@SE>yI2s%k$h>f&U0x z?-~If<{9jjuOdiQ9AKM<=0b7YXINqQ7&iH?!-W49^F6<(Q;^MRu=r#ty^f zY3=miS|@yL=udh_7jnfLOjylSBkcDuVB`A+u-T(!F=%@XYY1=RhiU-cfAd{5e3K0O zt*MBVD%|Bg{(!!&f@s%m6W+7IlfoWE(T{6BG}XWWN5%9D&bovSb;f-MawRPsXJF5wJ#O z1$Z1&q<8Cu|7qq(QqP!1yTeD(66ZA7Hz}KZ9q!Zg3}-Clz6pMV@pN(C3D9>+g-v;a z&v5@FbW}bnW_n0gaS;M*)tdaT_auq3+`YL8p9WwaR!y1t96M=Yfw`I>ku zp@;(g*0IZr9`c3Rt-^kE8k?P;1v2Gp**@iAtS)CTUP^upFPe;5t8fNeIoX>wK6DT= z)q}CT!fwr3<9cqf5__vG8%YW86VynV>Y+#RM% zALN%7UgvIKje)XiF9?(D7dLP8AvJ-WSbY)LL(Yn2f0dv*_s`tK*R@36BjHWa4O-KZ z$QdgLyRBypT>bMgP$aP8B5iG0{gY=<6e@|fR(}BA<$_kP8GkQP*x|2EhuqO?NvXHB zX47<69R1Xg((CR)K)(_Dx8N2RvHp|Y*+KR~UPXiIO0ua2Q$=6z-hro&7ckvfEBT^a zp*yutiwZKeq3%($$aUj2T5+q8*e!1^>8vA27G%S~We=hD=ulJ~T0+)3E?9cIleSLx z6&T3tN#V{zenpis`eavvR{jy+I>Q>xZcM~)TZS|9+Yz*3-e0h>Sk6ld=d8;dtzk=Eac8dCV%+f;bU-%}mkE6?)tAdLLU=w7IVHu< zudpEf2^+Y$TuCOws;OyCvdHMyX)KvyfR#xy?C7r z0@r_9$|BhL(Uz9jNa3OXrlQt>9Qf6s2thOgw}p3bTk^_;EdM&p=SQM=$OiUmbqnX7 z77f$Rn__g!Xh=*-hu8g!Ng`w%oBcK!-&+X$6NA(I?VeBl4RN_>XYPYeC(i88ciOF0{1d)Dz%egRu}uZ znLp-H&k9NQ?N13T8{Z23v!BC`gQHk~>P^geE--iMg_%{|BDicf0P7~&;I~!pA*5pn zy^hRcdp}L16Dnq)b!Z?i>urH|{zur@rlIJ1Z592Hcu(iYN79q(IQVWd9lK)oGUpdt zm|_|RPeD?1%9x~L9h<2_Mwjv7eyRZ(lA5u04H5RVlmft8-nzu9@2E?&O` z5=(4gxs(dRJ#+D|=t+!n29viIVluPjpD@#Jb8}8iO2U~(6ZyScQep2{(MxCy}fDGuUcfjhFIgvYLBCnSY)u-S#oZ zk$11+O2c{(uP#8ddwG~QI|H3g9pp)WFpc9Ybr*a)Dy+3X|G|n92Ryzgm;MFJ!R1j&0;^&TzD>3hcHIU-7WX_x zFI|rg7rL!8%Jblho)TM`@*n(M5{CLq(lPIbIp{s|LYs<%_-Xn+l>e(q3r_gJqJ%h< zE82_Mtqu62GmG=H*1%SUvvBTvD(|yao2kFvjL#Q%Vx3(XH|Dtt2H7SFyH9g=>)R=M zetRgs8zzBO%X2_6SeG-p9F1|mo2lr?Hhlfonl|iHK&>+Yc)_|B2X6}IkGv1S{Iq?T z8u^6gZm`1@R_pMwl_R=Vmxy(KoJ8HA)38*ei9r?0xMR^y7!xrce@W+HZb2jl`W&V+ zSDL_5${J-O_F!<06X+LRz`qUu;RAuS=QVpMs$6Kn2H$Lasc(R*-tNKzi@Ttx_yGnk zFht235&t{jGMYK~!JAtza7d#v?)@XioRH@v`tJgMxqb$?;FW zrCKe|eS)pCB6?_G+VO>v*sP3@ki&P;y*{cZL^zh z`X9idmjbX<@K`M^+DV^!m2Ju=U*hGZ--G?>Fz{(Fr46-XV7vcxDoT#Qn`3Mc7T=k@a&%HMsW7nR=l&yzAZ>9}aE?j}* z+P7ikkT0U3x49S~WQS81CE(}R0?)QG8m(&PQ1g{~n14AIE$_+D#)C5aY!{(dJD^_R zK8+Mrp5{oY@Er_XYtBNwr380Iy^x11!n80B5Bnxyb?b5{6Xv|9;`a-z{1i~Tat50F zqqyFmhw)~4Dk#(p!Pq6Ah;SUZPb)`%^%^QU+6Kce9AeL;H&LXP8?4?M$|v8HM=9BR z{QeUwxbiSNT;QpKiXH#K@`wYZ_S%OTy*Y*svbGqUDaW=iaEB!|ar~Q%P59n?BMl5s zKxGR}RuHv_UpZZ1b494}>(aO4r&+To#Nh@%_UQ%63z^K)^Hfp()hOnnC9tw%EvazZ zL^jYqhCjCUG{m17f{A|5$(>Wj<6{Cb(@_<-_3nWmrvB`#tv>rHu@C)YlA*SKIlFiK z0US0v3q$-Kp+b92-FW{p>)X;RS$fY5Shp<>P8sf|4P9%f*3*`yIsSt@(-7|VdpC|x zG()T}#E?y)+@+*}_+eQKU%fk)UV5Ce?hk8(M4ja@rL6TTMiyPz7y7&?&V$cr{R<~Q&#D?6V=Wb za4KdNOvXtM!+T%w8~iFo4?=e1*P?7;2VTw{t189T0#nX)k_Q;xnT30{wg~L7%Md?B zA2TNSa4Wv9eg+#Q*Vcp_lJspduz8nqS`)SaqQ^EGZIu_pD}Jc5|6%VA!z*RPPs~)u~d}o1uZagI%z}z6avWobd7nRdA1s!OVlFP_i?Und+V5 zZvIXM*Ixh{+m~VK?oe}0Pj9x(90 z@VAb5Q^Ai0Ul-;k56|+ohtK2t{xr~?eV!k9Fo{dvAOi0r*65LKNX9)=u-sn@^)_3w zI|!U z^+#W56S<&+o&<)7w&6I|M*}~avbWh$VmCJfR{k`HS8r6Fm3A0jb^PZ=rAFCUWx zDf9HLgFUfA6q2hX3L<(}ML&;EUKr#6poP+h8m z*$WrJ)XS})6X(lT%vZ&Dxn`O_=NovI_0o(hN8x3>8Y|CHM>YHBb?3iE;WH;CJlLFo zj|S+V;hyR2SiKsH4URyi4H{^id#6^XrWY1p;!xL$__P@Ts4Qeo)W;(p3u+TD*Imxu z%=N*Um8cE^SlPKM!5B_Ooz#~0#dYi9|firW-yZAFFW$>A%NdCghv#g3AH67!|k`XMC>_m5L-t=6w?vzG5m=#9o5bE-6~$ zF0c(fvS|A+B{r#JGTNA|XY*D%p;}c0eNh#5BC<Lb9N#XK)?s>W3 z2omP=GyV&%9lkgOvqp@ifo5tL^Z6DviGA4hkQlIZj%1^x6fy7pE?T?KjNM&)0Nii? zg#Gs#$oIl4Jhz%-501A&ciSI2;e3@oS0rQZnNI$oRodrcVeYciv|{%lUkdkVgCicTD; zf&Fd=;6F(zwo$f?OSzE(Co{spyXh*r8lMGjPzg8SyfJu=-;Z)?mto!GEF3ve1An&6 zr-WC#;Hk1a{@yl~uaC^6Tyi7NrzT8RZW*fOTVd}r4_umL1)58wNYhu~M?`K!p9lJU z+!PC3xs>rA>PDi?>2`iy>MK5ZODk;2MezJMOgJ~Ei!YBcW0SLw(0wIWcCVuxY{m-n zT}NSm+Pi`h3|c=8pxlB4 zrl1qVUp)2%aN9WSo6=A5|6W4tGX?Ay=9^rvHM{v=4E);(IA^+W<_Nt^KlcPMn+x+{ z=zVFH;#Zb`h=a+rVSHvlW;ir7fIi{jEfBl-Ad4S}IEjjitpr`dqc9Qhk4lfjkvu=J5u6-3xdYcr{QRAS{KYmIf&570* z8Vh0U(OC$_%OUCTXc`&lh z23S=U*)E;QXKveoz5VSJw}iv!J8PJc-rc&i4OQHgCnsrbgFJ3=OM|N(CYTf2%3VBK z57*7a+__=C%xl?hE^Xm)&bW3WEvZ+eK|l6ko9qhqG~pEga$!1j7Ch!$1SMw z(5>vRi6-@*<1urcIX>LeK_{D{IrH&>n5VCa(|@OP{*xEN)Y%fyq;`w6XIP*MD2O+9 zjbm2b<5^uxH{G4%&BSDkPK$%UIdYTui;y9n_ej`5R>;v-#bfZRtp~cIJlUCn-vx$z z4Zrkv8dvOalk#+h8EwJ=a6I}D-YH~RU#Sd-p_5&3=O#ULu5X2(s&SzA^f@J^Gjg(1 zhqbL!Ah&l5NU!<~8@}Cxw{G94N&5p?0N``M7xLzCmEds{Tv+3sA?^W(#WE@Ic(b37 z5t_qaQ`Mp^la_E<Er9(%gdYHq_!5%j>1NuwDADa8+jxJ}LMO zYj0np#`YqZk={+qB6hHzX*Hx0@(LcmH^Ec4#-l~pC>*jBXk&~%Y`Jq9rbKUNTZOLF z7g>F(TeF$FY39Zs*;Ndo+aqvQ@J+r;CmqlJm;g^yhj6>Ds-t;F1Kk{|i7MVpaQHJz zp$|^t`4>|#q$UWCVH*Yr&Tdzc-z|JTcZ zx!(rmqmyCm=y=%PQ_cRH{gj_wv5)LCqG{;*>##9I0@B^2an`7*%=knkdzkkVD)rOR zKw})v`;^YaG7qf=rJu&#gB-EG-j*%y7PvjNW+WRFf=51kvDuzeV69#gsm02Yb8rH) z`e_G~kBYD)?=K}*WpmQ!9y4=;SeVy%n*X{mge3)!rHC!L;GtM4^6IeRS_W;PbHlE} z=FF3HS?e#=rn_QA^fSB^*v)y4JP2L-S~R057a!gliJ}}`_UYUaCgrRE{u6${=E+AO z^kx>OxnCrWmVSQOl0ops@fJVjatXQDR+GF#9$Y!*2l}5H#P6){gZ0c97-nKgeAO4x z+qYx+pTexO*Yh`D?)`-yJy(71U_)&5nUngEMY#aTu6r8xX*U-G^ zA?(Mg>1@HJ3@CY$fCWdc!)Wh;U?O~d>7vJ^q?<`SY%=@SI*K&siddVl`(M)`%v9SO zcxSN^uByI33#Q(H2l~D^L(YNAbsNiaxpDl!l1xfFmdt2Bk5l&hvyeCEpj60i{gafY zWI^w^_wO)#<@SKu`qJRBY76jRtw8?xWspn?7PDqkoR{NFYr+?SL)8F$Zhr(*4+%a` z{bNuf9I~xF%@9&w^Abu5aAjg1?u(m@XTP2WySP;pv0K=gt1QK5)kU;6#-6&|2Eu@A zp_pzo9imbq`9#fUz_oZ|rOF-gkXU`#-gkgoU9g9gIyI5^(?=LL6*H%gphcoWl2{yr zIe${f^pzqSIp3z263#3f#G5+D$HC_?Vn5a>3(?u9q zxB{DIz946A0B}|tgnm;v{=DkUMt$1|o9=4ELSc4V+;<(k&4=UNZ$`{zL_3_iDa$u% zYM{4kAXbf)r&L2va(Le@F#e?RX~P(N@qPt*ypcvTS6LkQWH7tpVuY{XS+J#+r(tWL z3hJsg(d6eQXe(a{^df`bAnyhR(QBySwGn!3AIYL?<(aC>4Tv3P0ypR?OcgpB=Xb6K z16hBR@%QEmt{sK7jg!!SUN}1^mCj#Ux}Fbfuz;xCX_&f825o1Yg_qffD6s4+-0t(i zo%O@;)O!ZY`!nH;l^S~DZVbtqiZYu{LHTi>{*5(b4+Bo3tyvA+kF>xSvGrfLv4Q_4IT5e2A~KNehnA$dL&W;J zV!B*DhSGct_y%oHERXbpNps%|4g`Dl>OdwOmQ-bi@^Sn~{R{lLDFtGST01!1@D@HF znT1;nq}havh1B@;p}ri;n%<_z+kwgTqyk}SaX5C1`Uy@`&0;ups$vV^i}Sa4$? zUvhsK`X9=r(2_j*Jbej&pl1cvhX$gzdM+I36LOrxQ@GK8QpwBUEc__92W)#tLsLq~ z!Nf_tFFOYo9g~HEACWlHewa%eH`~Ug@@%gY7PXbL+H1C=r(u?%3m7KW?uUYG6iAO z`*{Nu`6Ft(Me?!3HTm;K?VOr~EN$6P#DDbk~^0myXU6dc-cw zu)?0c-H~R4@6^#ZFP&(>U+b65=z-I|22W5iTw`JTJlc#boC-3{0B4#1`EGol88`{n$>iRqc{ zrKYK)abVDn+F;iM*kvh!*)c6t^z}3BTwBfMj26SijaSI{ax?U5CJO%fSr8m<$uAkD zh5GCjEZJKM5(8~9?tweANHs$Hl4mgWtrpwN%cqpZLPQix1HQ^leP@zr7EI* zYYzUOi}C-fxwFz@8Jnv)qZ8m}puQ`B!Cd@;xZ#~hgs_xx93gS#e4TgyWC zz8vVKX3qV{Bi{9M9UYT$6})%8>_W6B+&B4;pCBj4Wu3dg{nU47xijq8u}(W76Lts2 zwPn+D;}pui=SKq_Kk;+7&1H61E@K%c@Q!iIP_MV*&2PyvY6@#438@hZPF2 z(sTywxP6v$Jvf`m>5aubd_N4@?uXGy_KL+gY{`9) zsTIok{i=dLBOWqtRM2Cg8$CcG1&&_Rqq>Ph*%B#zVqL=S?`jlR6>$tkZ&t*~@5hMB zx-(#Ktibyk}qw7CJpjq`3pwue z2();S#SHt(@z@_q8tM9SYj^f>zIcKxT1d3+S}g^KCxcIO zB3yXe$Gr-)^W-|jOB7K4nJ{6mRmiWOHj9nDKN}YabI5(qOSl)6 z{rt+<1QsH=q$>x6^TPsHWAE+dRFf|_%2a=Vk$4{WbdkWR%1A=R@f;JkD&a|m8{EU- zRNQmH(OPa%EdDV%0XK&*4C?*NUkjJSvR4miQW(&)BZsMEqqb;D^=EY5xs~ZGUJ3~x z3_yKkgE;Y~&`;sSr1I`8uQkP#?d5z}$e;zBT(CL>Dcpx<<-c^SM}d2HY8CkE97Aa{ zfoVR}hYh%B#7Dwh%)h(}t%Wo6YJAIi*eplW&5d~YP!bF;(Sh~8Z@9;|qERWi5iXg$ zfZ6R@c)+Tk(r5etgZwIPeBcsXw{aHX(;RI3V}{3P1yK9VVc3v!pAHT>&2bqQ9FS72H1Ef0h6vC z5cc`gao9aM+_xrEK0d zTd^q$XQ=au5gQyk4<)u|LCoJXGzW*U&WZr$t<(tzI(DH)+A%D46Vd*VztAD|A2*}- zH_2$zS<%6;qk3Srwzz|AFs9X8CVY6n5q)((I6OShf8CT6CzeWjgX~#e!9M`ML`# z$r0&VS97&Cf3e&-4e#U#_qJ|<@3HZNsP|6_*JNtKyao5@_Gk%^cb`SYC%tGmv&8kQ z<)F?_hvWo*o3+O~F007}u6nuQ?dfW$+FV8z`Ed|E+?@aG8i@{luV}h(E@~F$8wZku zpk02hkj=Kk8*|EF{L9B+vU&!EH5ZG2)|Eo_<6_#jxs9vvQ^qshiKLXU55BCQh$BUg zR6p~PXvTMG66}L;UdX@~rCHNQ(;{&CCC%sl)MiQEji6{3kE8leQM zx|=-^c0LE+t%Swj!|76!GVdyRA6%oS!5)PkE}?ThgykyJnX&8Xk&y!iZSjSw2_~3k zV!&>+y`kNQGwJ;e2%+JEsY&{lV8_d!Dv#`&65S@wWhh}jukaaBly4X(3CX4ZG&oM4;n2A`kT^Wys zg~Ov`#%MF?HT8Vv=;$6rcGFIqHbf6%k)AgNwuTC`Z_28@{xFa!_G63uu5}LOy?+G^LrD!@sZV(X4$u-#Bd&42g`QtCwS0>K{3Lu4Rn9FXGu` z%fawA#hx7)Y{cGmZenY4OMo-TWE(%9W_k%B_;&Lewj}SWwa#C4Fk1MUm)s|0co$!T z^pk0DTbOaQC)u&)Zwg$nx5QPK?YNaklo$;)M(>VPQcrXw`N`90sKB?2 zO8rjTG$V0%kTRSO(q`MH263hylUZ5ZOKP8a8xyrAlJ4(b7%aC5JMt|+$)|zhMy|mM z!Ey0QE(hOO2D3NOtrRs=36rhV(Q%vsZf$jh1B*0q(~ifYNA?e(eya>BY@CPU;+4#E zmMp$*9l>1E*J9DevpCW+9}FX=alh-gU@kmG#j85B^57*}oZUqq0uC|7dHJ}$coa?> zJP1SX`Jj)qEICZsOh-#TKy8tb&1>4v%v#gPO>T{7?mR2fykXCkwqK!)k3RUs&z_eO z_1CqJmm+Hl63%?d)IKSepL*>a96lX~=43_Q8Okg+%z{mKnS?4EZSh|HRR}s~2y)xs zlFxD{W>;v$R$7gst*)a{$+2D^ zp<}aE9I@*jIW5khDseh#$XAnLQUMp*rcE>kv<8iAF4?=?zGc_)>8T+%tLJaPhnA!EAx!n#OX>N##7ZTG=0=@cro4+r<*51 zUz`=(Vq^J*$79&*GqxCSBkI6`ME|<461y)xUTH6LkIQw3$m? z`2Lw}i)Igbi)W+xmE)Y>)@=TB>=&A+*2ah5Hs@K{7s?LSWo?T`;QeuVaOvI=@U+Wi z65pP4^F@VhOqvmk`XhlWJHv3KL>QSwT;acuaA2K_wnDwzROb13JR9t{i4{vku;D3N zDQ!*?zc}O!oqjORdTfmr`%wP@wA60UA)l+%wlJ94mVF?-l?!ob!ErEFz0GY7(*olT zckX@lDysY#Cn`GSOQhr9 z$v=5xj6*&Lpu(pxe)rO6oYWx`O#R-?Hx_I2ZT9^TYW9xu|I_9#4Rhs6edX}brYI_& zHUgsNdoaZdBiZkz0!d5A6kd)s;aEyKe_&*b(0wwX!WJiHxHgPm;C2N@2)B+6vDs)T zT>w}8nrQTmA?SXt8y>4%A}whJ9PW3M{}Lj&$O{z3`E|1NS1+2a&z*;-G_Qy&_sjDi zN7+#7=JQrT9!AjZJAr#`CXbJ<|E6=3!|_2-G}gS*L^uX*Zr-Bc1u1-~v=d%>aS2Y|SOs@}SmU5oB5u9!Ziwa=;E^-h5MfZn zZ_Plq!t^Yx_{O2rSYNnoGZWnQ{v^|IP1f6;1*aPi!G+D1XteM?%^&*&c4R!JFIyt{ zo;8Ii6>5s?&LqxZzX60TS}vZs?lKwW&4%ccXW^{JTY(AQz%Aak0)`1apf$h7q11p{ z{^_QA{^K(v!Cmhqd_Gmc=y(@u_b-CjqOW2d9WUBb>&V~IGs3;&-jMT%UhvzS25W3z z(OZEJGCZ=D1eX9`JZu*x74M-16HdYhr4!=AOTLm-Y!RI2Zi9)(A^!BQ`Al)qCPx1H zkoe&dsk{D1PM^l2TIYR!Rh|k|b$_GIkt2Ac1xx7PFci zIY)1X$)RETL0FT16{a6J2mRwkY}tPeT;o*gn90^*OjHKA06wO@mPzYDjjt0XC|KGV7Xnh?hNxO8v&x8$UU5-zz2S_Xv!Q46d7V zUFXhw`PoyEnl#vijYhfZn^YhFg+gyegPx&1JAZBxr}}!z)gaLo4A-8Zy}iO|rCcXUz*38F-v-{J74yY)OF+ z9}PKMyFfP9kw?Wgd9v!&5@vrY_-&FTTPb;nG9<2u9@)9$kl(iOdG;u__@$e`3h1Et zE*Hdy>fBl(=R8`R%st)NPoAdR@qX=1@#f8^$V&eQH@xL0f5Ib{rp+!+u>xFxC|GcHej3cz44}23yu37DL888px&Z~e4J`6UTmMs@~t!2+Jcvm-Y6!+ zwKiyKC%AyS0#N)|k?o!P6E3-E;`yAl6sepl3Vk(*cEA<-son!&JW$Rg5*mW`uh)jIVFa}Pz%rhDU-`VLmDsS2DYAD zgV*MMht+cgK1gRE$$QL%ZGmSg&UFH>{k9ss0#ZaTsv2m(D0lv&^Fc}un^Jehb}Z_o z3Hyz@q3pKaN-$bB7AFTBg8RBP@XnzK{>_!AD`k~@VpI?dE771p_t%ttB?iu!?xwa4 zXDOpSnM;a8C|`aMZ7BqvKRdy1FsXxo)6NLqc7g+}^8^n%33`F|^4#%Du$}WdIfU(Mq zo{X=d?)*@e8PN(Uk4{muLyB_nFoQHqyD``kh1B{g$O_v}Uy62XnY1c$h z$xG&sjeXBmLl(|Fvj>I@thR3RnZVaC=g>$~pI!N+$a1=!*_>DoaxTmQ5669AsxbhQ zu6R@Vo%!rYzJl;<{h~(tWEuVPDg{(G!wRS%;AY~^ZO`E8pM8|0P(c-TM%=zu!3BGy8>BSX@>4Pm zaM!df*jcfeQk0#bCpC;;ujtHTMh~U$=k{_g?UDk|@j17tDp&O4tuAifs)lQCE@SHl z|K$`Wy@wh#A933?PW13(BEEjPk9pQbu>A4%b^r8z*s`<(@FgN04kQx9*Y1a+(pRFt zS$ly~O8^gh;d9h48K&qAX8v0@!MRq!>m=jEf{e7u!&DkV#*bxV7jMMRu~t};VkrtV zpCs&Dq}cw*c0O}Q6IRv#fTyDdu^OWoNRj$RHQAo5e*Ye^kb=U@g$t=~X)UWNdja;U z&*9dpCES(>b+$TsFq3bvLGAM*sLM3v2d`=5iq8MyMh3faab|9K;?Wt>sVsu~9@+5r z-UX6S&%ofbm$2#ZY8*QuiYg|=VBd|gf+x@bu1j`8ezYW~s&^P>+z-Y4!iR9-QUUAA z_{N#teFohdr$TGfObWU-fvobR$?@2A9JMwal`XgM^QOLp`D6+XI;op52tDxxVelXiTn(H_gK_Q>|sjbR^+}lmT`1UgPYfy;8=TUp8@uoU^RxuS_|5^*)21PoutAb>d z<}uf`pD1J50QS%BB=kz^!n*q7aAw$c?3#TGcJ_Iq<<}}+o$bPXO&VN5T`_;BS%%%N z4aFV4S7C#iKAS}y;?T#L@P2y{WL$X+1-@1^=HOQ9dtZbHGzUYaX9n&_lVSrW)G{;c z9N7DBAv!Hl!{-y!czM&UFw9h*Es**It9~m(zI`^u1n6QxhXd86JgRe4UkIpd#Qky# zgMWWRM0)dWY4X%Zbvxd@qKd$5xOzPi4~P^nqdFYshZtePNyZPVlwr!btI>UOI=vsF z&gD&;gH84OY2TF|Zu=!&*0W~}uW~Pep3gr{qSb}4T#~WaZ5327y&OE2E@e8UZkQ@x z%3m7r8$K^Lp~1}~ag>n56paam#Tp~%y!s=k)z7PYckwP{uMvv}m@Gx@X&I>Kv4NNN z6X8p(1#CjdSoB?ckepRS+`}jx);%MK8*uI}%nJMkajv%n4#aCQ%!(m_u#D9amw372 zK4`Yw0?$?qW^TnJux*`?k$C06*3Das_s{MC(X>fe)chXgTOC{7d|3&Ns>bM2!W+^L^`z@ki%`!m{ub(opa_f|ca>k}jFbfckq ztR7o$oB%uZd|=(mRm`&8N4OU!VobRiMr@bI!_QBW!*eCN;(DDnNLZmo<`XJgR?G5A z1K6k#8Te;3wk zBE#RPZ^rMd0!gp)I(3+BLs8c@PW#yqays#qk|TGM<>o}%QfP*^Ob*b|g(CX+&K8dy zRYAL(`!Hzh0QRM=i<{;l_~n)3;6ME;>REjNgBnIKT?+-2;;xdS`WZM}EXF;JuSL4A zTzRoh3{7c0C%O{sz%r-gz@39furR_DW+m@H#lSl8@u9`EIaNZ)_%JG#DifQOxj_Aa z2BAlk0vnevPC`ibbTrj)XhHv~CghAMjzy z*YauqToV>Nbtl;VxB@n3Oi25A8GLj+EOsJ++yM*7%Z3ojT>Ez??9Rsii*?Qnz#UbpaB&K< z`7?(@x_%>>``E#@3SFGDD<0hwUvbOF3(nIU8_D;$A73{ukp5F~2j3)Fe7n7um+Q)f zCiPTQb$$l!7GrV$>PIzRrhb_yvnK#_()@JP9>Q_rN~YF-#&yhCM3`!d!NgcdR@GxwH3kE0-iuexNo2H`AT4;K?VlI{NYnRO~tgBX{c+j z$TV-q)D7%A!97zrO%guQ;P`tOTpP0Bk;!TZ&LHR=Un-^ApT&}EN)Y| z1`cmuihAn|`Qhtr3{Ad&B0=42@LDo%_;pk0P`(vIsGsD*t>;0 z`P^(JuocOG$r%%vQ*fMY=WC*j(_C#mJUo%VN-7^!`0_I_~KW!Xmddqdsi6I$csaOYpxeK zejfCx`!grme}bgAccOJqVz}tdGVJVs2{8GsB%3r&39srez_pK^Fg`DzjZ{2D&yx>v zXT1RLPVeJA-vzVGbT^XV^98@!UP`#`!e+L3aoI~e*!rLyFj_{74OyQEwcE?7MLnBL z2dsynH$pdYoeIY85sVVap5op$#`wJ%}3Ji1br>#_Exu_=mUot7^ zPKW60%Vb*d-2qPqJ_M;hv!J|2*d1Kd6yIqQ3BE`XC`F~y660*F>{p}?lTmoo`w?ia zn88nT*1{cgMv`WI8N6RxLMc~u*yg!=*;boE7`3pUDizgm$^=z5ddN_$I;TwAXYGe6 zZ>C_bRy6ajy9TB+XOMmD0~(rIPcasOR3syCY|_oxte3Z7_t9)_t9AuwL`vbtvS$MC z{Q(U(D2AZU5KMoN%>D7Mq3GGi(Ol^X?`3?JOONF+eb9Asl2T^%XEOP+fnl)6`U^yl zXs5SdV%at4Mr&U2Hea1>k6FgCyzU$o(btsI+$x9f^l_pV$#*{jpTGq)#QF_9$<{{g z085I@^kl3uuRef%NE4&edNFt4NNr*T|u zegWD3(cybeJ*JG3TW~bL8{$8iGfOjNmT!;+?-S4QQAP9M{o*fht$II27%vr_&~62} z&Ca~FrUZsQcZ6y8HK8t70s2MeaBW%+6wZtSrxtrIJmWY`=yl`&YFAQIdk`Fm{#&(>P`yp-IQM)hPdO2vw?Qg51iTWD~g$R$05i=j1kMYQ4!M|01y_MlSGHm zRjQnW1?~;>{Iv&azfGaecPUo3O_J=Ra3=YZc$oD3jM<1~&GcuGH=BKX2K3FWMz4sQ zwfDWVxI3E!V*kb*$|$bpzld}pM|u`J?=~CW)HOn~p#m8tad9>^xN764lS$<8ZVsuW3FN-(9+*qFP_oZK$W)t1>W}Kk<#HX= z-Qp>s-3QiJ70~M&!ZSX8CDj@WIkZwO)VU!$sg{J z`catr^CQLo5wb4B!*F-ca$(-*z=nD9pkA;HQofea73(YtK9|e|N@ig3CMiZEODL)6 zFrBda!1kR(@2}ZpG<*+~S8IWTRvMor67DYE_GCO) z2hOe?DE?7qh@r!RY3bQ2$n0GV^RpYcy?yIZ^KKl!&`=)pM{eZ`j}GDgs&>}(o>#`y zk(X(Zhc-NL?xc>x+h~iPkgv6U43=N~P`#FMnNl-p#LeL#I%y7Wzb4S`kOXi#Hw~P& z3Um5nzVP>5C4Vm36tB-&1TH6c(uIS)ob7c6Lv|mALqk)z$<+#YD^#DUb28vH=Q_8t z#RVsC9*-v1&Zz#AD&fWjf%-P(z4_g$kP$nC~r$mf{8pB))KmHmL_IAJ$cfoCN zcmO^6x&>|L@59VuQ^=ob3r*9r;ip>!Z{+YDzNoF^R=(E^ zUt?gsjU+2cx&gKqM&sEVYPj5`+E~)pj9Waq!}pVdVnFFr4fz?CP|7;pKi` zausIhz0YI?r;ja_oNME3(xh>)X#zdI7fCbjeuX*Hx?#g$b<{LDN)sfGQc2)?Jl64q zW-R;0-S14KrT(+=zn?sATr053h4*=?>26s5p#tJ{glw9|b@-g@#4Tzu;%3z!$Bxmf zL2=I|S_*e)p2SV~Hq(QT$gZGG$5mj`tw8oTX&C1}bRQ=5HFM-3@GK97fp?SOfx#=H zz2^kJbloXlb7Gy~g^a)oQ9hn7J3xjpA%bJF4VcU@*t^UO6$gKY!uEI=Df}Ozx2*z` zqEf2ZXU+V+Er9zW?r>^tF|Dh-4RZpA;T}-Ig`ElfiYJONcBvztO}Ge`?B}6!@E|xm zZZ4PVSp<{srU`STEYaL;E#%-aiT*vZz}WcrRH2ZD-i^1I#`~A-c1#6WKUPFT;q04M zA%#nGJ3znZD(H`D`u z5*F+b&VezjJ<#Xf13J)I$_2mP1PSTcEVr?MsXocW+l>+Eo3ijMK17(IqoP8EDcIR{W`jucxAPdK0A z9I{t<&#R6##HGhIm}7%0K3J&1o;^v246PfSZHw?OHJD&09;1i@2fc^%V`3Vx=?z@7 zoWxRxNpYhy>-m{rX6|N4(YC3*(_u~^CaKl{K&>vUN6 z-#)UOXNuf14y{ghL1=9bM2vq5MO%;HXIhGX3iVJle7D$XY&Lv(4s^_34l@!ASbnw~ z7Hupbv;RJEZE{k0Ol}CST+|751%JuWVm+o$(1X$Y*5EpUalzX1C`{!!FO_OV8G%z# zBe0C(s~&N!*LR?4{9kUkR}d|o($R)!0USZas`-}YZByf&QD`ed_VV4eF#jO+8F}a4PT(Fl9P4LJC z4e6zL`1Cm_$bLj2oMxnbDMD&VT+G)W=2| zxYnDvsZr2kcnRyGJz2G`I-A%#24|aE<2!yQ`I{u+w}f{1G*Y9LgtN}&afuPiGhl*J-los*_be`;GUHev}%){*&Lrk9_#2w_VllnG3}5rf}ySN2I$6gmDjT;L7AB4S(tS-C!t5CESjWMM| zg)X{{V(VSR%r?p&odZYUs@Z|!<(_(6x92cS@X8R_BlkEp&*h)uRug? z1H8LA91qLs;JTtP>hnpVuf{3t`tw7qca9{p4_u0(Nr&KQg$^4ZQ%F}2XH!-8H2O7T z0lKV+WeU$y>0gmAUiD0-x>#%4-)f8{DVf;lbrjlEA6J-N8VFWv`XH$-jM<;erQh)b z*;x&DZpoT*cqN=MBAd$L)R}8!GUgg|>&|08)z9)L7j1%})8CMxgFlTAO`x2<|Ip-j z9;{W$grZ@eVe^0!sB|F%9*0JO;^H>$%HN6XVAT(PXnrX8wbsBGeN{H@{RWbFTx|;&a6&4oOK;)qn6eE1a?pO z@!y<)T91(KRA*7XYaFb~_zSQ6`?(;A`3Q>5P<{Fu?7h?vRaZvRm5nu`+P5Py@triR z9)A~tyzMcdK?6C<3!JQt6P~WjWN#w{y_0n1ODVVXrh;10Y3)%TP&~>>} z`C>=|S7UpDk`10yO7vp&A|!m191Oj@QQW+m9B4OQ;Jsb4N4p#qRM9Wgq#Yugl1){{eZe_JPc+O=Ol! zr1aK}d#w17N<0;z(8L!)CThdOkLLx6Oe_?H%g~38$Nc4njkIEB8UNvB8fXb~c)9gL zj`70+(vQuc`mW(%o2&$LuGLU;Sp-dFM?mRyH#fH6G&QDPfOOSjp)-Ae2KC3#;6d43 zsC1l_I)aP{i#DnN3H%v-pzXtu*FhK5YN- z02Xz-(1N+|$%CvQUnT|~_bbz|z%wvPNAO1eN)qN+>*$46G)xM=M~x-N>CDA4&N^~B zt-X^5AByLJ?N?oqPv!>F%2*8dk6O|3*iYQBe{!(s*-=Q7O%VHOF9ZKcH))imGYzt} zflXQ(6x(o`W;Qlczs*`Y%OZH6^7G`qw^npEK85d{7{lxC(uSwUsv+uJAt^UauM{b+ zq_(sOQi=XR6EYOZ?o>5gv{*s%HlwM#=Mg_}e-Ecw{fs{B{6h_8owQV#V{}dPrmE0N z>WNboH`IhdbEiJHwDh_7`le1=cQvSI1qe9M5gkwxWYoa@>}^((p-jJ`|$VSVx$uS4xqpe9djBA$IZ8v=jqjY5@-7-yeM2tym@aV)J!md-iSELP1wReyVpei(sxMA%;EOccjPzrAcRSG zklNunWMIr_C)rTVP(%7r5KFrj7>H6rRcMGpH=l7o1$OG(rGl#?XuaM;axWD+jk-0w zZNM3@5PVPPs&_+)`U3p8sSmQ89N5_|1^O|gnZgdnaqc|_;j@e~&T#ZZ*KyebudWI2 zhPQG%DlBn&i!+y~dmbOQm6A%*a_lwI!yDTh$Sdt9C5_a0kY(hu|T{VvyMf>_RtcHnjeQcBh4U8X$hJ|nzG-nxA^4XqkR3) z!?<}x7@iW%!m0CDqp?Pw$i_k7^O=j`uw@YDRK}6`_*zW+)GR*wDjyaL_blZQ4LmRX zf-?-s1` zG)zjwn^%{h<+6(~^JOCVJ#rOxuFjAdC68^-=itiqdE9ZIv8eXM1O4Xjqbn;FaoFJo z2=+USubfU$-}-z}k3l*aCXWnd^RK*2mMjTJyjd| z75s3PKduJfOo}7R-YIyXJd85WnxL$WBJ;B=f_|sxsM&G{k|eg{-H;Y^8zlTrj~HS% z=Fy32Z3vf;!Y}P=_)`Bm6nb0YJym&uiBwGZ%NJdr=0HsI5J>p*8ETH-0Qauj-0kzN z@G7+(&wu&`^Y>nWBe!%?nfNn5BUi%guyNKrMV(I|19i6yc!G zAN**OQ|KeTi@zx8O8xH>Vc=RTdUik-rJASXhef*RCfbglU&rE>p)!2T!5|ts-JCm- z_67b0hoQd62oGQcTzs<$l{Q7=5uL*zU8sh&+IoEUwOA}VZj5P_A!xZEj5GC7z+poS zNatP&*YGA9-?{&ReW6mEL!i))R0=}%s=NHAS)&-gOBQ!2&gUN6?*l8D16ZwZ!W}-K zkHfWoz|#{U0`Eu!qVZ1RxYTAiBi9P^cG=*&3>Vy%u@r7a$l>dQB0L`SgF7E{6QUNH z;t%_NH1;SJ4`|58c^c-p&wDQC;CvFtE;$SOlUG8};YHLTKEjWgkU?}m1nnhs@&4RC zxNs41Pv>`7dL#|6Gj$C3u?J(vhO*iIk{Fj*3(ezNVb+XL3|eG_pN4EkU4=E6XJwD! zRTC-rNC4Jo2~Mv{4U~9iirZT?=}}T8|IIZKHsvMqvxgn!6O4m!F>frK<7Tm#wi-Ba z@&H&`t6}#q^8F~q?coK23KZL|^xhg6DUS(Btb(Fm7lp zeM`(>rl|^8@VgM&!^ew@bBE(q-!PW>YdIYGXbzK%j>EYxp13dDK-h0f3GZrcK394u zpT4J&zd7b98jm{0do_4L;$J%~(&W+eWC*VA-iqeZ(J-Pd7MtF$XVYvLOrJ6W9|%1( z8-pQm?ax_GCFLRQX?}`P!d%gPjVrffKnW)?@){K-Ss|w|30Lbr#!;)Z@x=^*5Ak9G zK2#pZw7)*(#<_=~^aM#3966uW3qPc7Bad@l8iB%|PoJrbEQNLDz3^6GWPO-1oSgf% zV7l*QyffwrS2r;di>eIlVjteHHQmq#smGTwesU?=s)q9=gLYt<<5iX|?D8k<+Xcm5 zZm3mw6=tTs;cgopBTeT3TzRa7U-xJV7}yGK@!Ihi2UWBdsbS5%z$jT{zHRiCg@>cWDK`rP!l8^P{19Z6LFQ_A`-0`&Ahb( z@T=4_@Jdb={2kk|cESR3J}L{EZ>_NyQovlcfZWQbV3&~^OVnI|M}S3q?K6W#??6U?l!Pe7>sIaNpL^2!^Zu04ec4e3-b27uyYM`!2i0YP>I(i zn7c!jUD~=Dm!|fT%7mZ%s59k4zW)w2-tx!XXCgQkya=CK3w*mb`dnbIIs5DN4tfkz z>FdKweBac`%wAUD6c=2E9?x-bZ-gf%n4h!@(rDs}XDI_&M&MhuEL?qMA{}E50>dGe z+D;^a!R8~BzA2P$vfRU5=At9+bTWdJG;>tZmF9jNn1_~qXW_ZO5|+Jv!}Yy;Ppz+%IIEz1fi*Ld zJ(?tq{pV-#1;=N=YuWQ$$h}6+aYY~R7ns98uPvnQ;U&x zZ?o7vMwydYGYKcizku%GSLAugjolYnT+NfYf!=k-S1-X`fpP20cG{JZhD#>t=zqb+ z*3tO+rV5i2cCqKn)a{pgpJN~PCE+CVM{wc5FYd~;4D#L503T;w`V z6FGVq**F;HS6G20eg<~>Ja~<1A%(|*FuO|zdv@AzW9PBs zSrhJg`_hE@+gRLxKFrTa=n-U$!H=p^>~rujyglI=HzK2vQsU#GXj(Wos9_Yk-j`x0 zqAD3IosHI6erWkI5c@($k;1e!aNXJlucf-uoW4=i-6`zX&dtSIUrkn}7JwZNOK{?^ zahP{L1M~jPqkX~0VMb>W&OEye^V-We&rJhy=O{@U^j{jD&x}Wx^*^cZsV4fEjl>c4 z54qi|V<2M30ko@%N6U3X1@`q6dJ7-H>v}cOPVrMESxy^6Ti0#EIyXsl5HfDNWY5vu#x0OrAIE#$O2Y}! z$0_ET9u_AxvorcaPUVd|GYL4xwJ4Zlq+z7EbBP`pZpx&Qi5IywmrUWHqzMb>Zc%K@ z5vbj2%XGdDhS3!VDD}YtPIaFuEEkl*H&@&y-`4l=XNLpWUM~XQ-T}#Chc&??5-^FqBdW_%X$tRcZ|Z! zwl`2}Jq0iL-KMwqq{Ok&8|k-vD}Ic32hZsN5WGN56ne}E3+r{@>EayVEcc_#V@-DD zdn*3EYK&)YBx25}Z`^W$TXtlr1Z-^Fg`&ekzPhdy7Ft{4^*yn;X|Xc4e-QjLb`hk} zJdoVC&Stg!N!;x(A=r554^dh`l)cnL>&>h2TwmhQqXTF2mMMZwa zudi@sZVSlTHA8A+ILv);ld^SB!zaN(B^tY;(*50j9A3E(%yL8dx{@`R#a~0aTdMf) z&VM}DP=)e79{6nhJ{Xdwi&@X8ZB-iAa|I`3nW9y9m#vB%~U(Q>p4^@EIQqrk8)xUgtdKJ;w>(-4Xhj z4|6zM{gH5Wy}%{5`ws&Q9GK$Lv;4Q^`NIOfC9J(11Lu|pko%B9?8kXKJYJj%6NgKKiiZS+rVD4|sDEH~ z;Sb!E9*57(EJd}apTMfUo9V(3Gq~54M3J9Aa6vyTD7St;Y+6~!+aJ6Nk=ZBt0bN@- zlWrM^zHPuCO0Ap*K0?-#8U%*K?e(|ldx|B> z4Sgfp=`;ubJWl1Tzbb>N?=bjv!~sPbwU9UG9RHwb6sC9H6OS1C7k z`21c>|J=n}4_3zV4R=I2;gj%wj4w$RE=L#pZg4$d$RGD9WjdwHQ7o;8)o;wve*0|9 zy7@_PpMT&bj~8$czozj&`nF@-d1*oJbdok-w!^09XGs2TCx3GJY5q*D;Je#0il1eh zivErS;lVT6+;!dDRA)o*oTJAs{qtor*2sWPa~}P^f0^$-smlyP`pM5JkV1uBnVdo* z@4D(JBwLNbJpXrGU_~rDRhWUNw7v-6txP!j=M`7ppGN%$YPeY!^60K<68W7Ld<}an zS-=SqOHehy{L#PojH@HiYgQrL_e>|N^y_rLP?jCzEHHKb2AXHQA0x(mfkzAduu^&n zst+gvi@A<4O>n&??^j@bdVO#`G+aFH$SM5uZ6QT3%m$AXXJ(!~8{@NLan!9oI;n0* zbJ3BMJ#UDGNiSF3s?S}R5)3Buu8BUcGQgIAaTM@+CLMY5gZA!u%8y*x0e@vx*?-Mb zY4l4|UOh?|!%C);LqR^Q+SLhWbF(-z1fn=lN!L z;ja|fxD)2CMaO<&W~m^{qJrPS&r23if6*E@tT_rrnh{(geuTsFC*X~Sp0MxLVI#tl zAWK6HTaVqM5o%#*H^c*G8$T7Y{0-DTR_L94x(W+h?Ks7_6Que60l3N!Xa6=Da%mcs z@YVSk6+e+fd9|L($@au)4tqoug%b&HKc*u87mz!p08Abnq2VeAsc^O$ZmUtim&aXc zUW>5rh>>C;6_K!H*laA79?G589v}+1F2e`B8%>E;229HAEVNYBid&z1f%sju=-Ql( zbk8YA^ycna@!3eE-lto*T(d36DUD|DTlSNqLKJr2FM+h8R`}GA0}|7ZL6$R#&o63% z-Hy{i@4^mrpY;Q>FaG75DzvHpa}M;JX#ja)Z}vELp2+mB6C@U=Q@M&~g-!VuKDdd& zt)FvQc&$6xmZn0p=X|*GOqCp;71E>)rTqLocOXimi+A1JE3W$QG`ybSf*5PYMo(^{ zsY{)x@ZbRUy~Bdd3Q(oh!{a#fOP<{GS5^G|7wh?}1;w-kTf{ZDUc$9@ADDhZi+eWb z3j`mkgk>>z`B&c(XnE#%_Txqe*H9$p%@(ZTc0bulzc<(ktU(2E`k{duD*HgHECzy` zXW*HOPdU@{FWmCA8#zDs0@4}a2_+el?3IPKNMXk$Tvw+F4aJkeC^?qD_Iwp9pE4fu znv8H&Po(&AvjsS@ZnAiFT-=b|OAmewL+|!7zApVY+3A+zwfV+y`R;cpzt9ZE)iq%D z+lX#2@rR=tO;9~Ahbxku&fSeKs$5cVmAFm5lzduXimmm6b$@axGExU^W}D(Csd(Hg zoJqo08`G75N5I=9!ktPreuBO%XWsG>_TS!s9mTDroZ-Tpy{?n2Vi=S7vkPYAog@RR zRB$n$C2(?7Adiz}MdJ!YQE%PRy6hE5<{Pq9-R*2)*DlD_I4JN&|ro-m8Fkn zkt6FsLdYF&RL_9He_Xkd=`UdS$9dcwg(Dak@t!%zSgOH{OKhV z#kW=ru}{C7fqJ{AvW+$}$S1sjExLN}+0$KoN?P)2L}VVnHOL9~dWC@I+9T|iO+4#3 z5yi~Kk04UbpJ^ElrlA5zCNnb~<@RoY$GLS}jie0Je;&riMNVb|L?fVi`$_osAcH-d zzX2~4jG)euo3ZXzE3-jZ!JUWpp(J3GX z|AFtZ6t3r=A-Yd`1f3oppv9^opwgMW5&2W{5Df}ys0Z8b37nkZ?6Phezzp;S*Pe0; ztC6u|avhE|^mhm?-et>*9&AE;lT7~Mha#qYy?O}H5*WaC=P3B93|=l#!y$^cbWx_B7G}=Fv-zQH zeDY6li?Bs*sycfZdV+6AH)7S(+M)42$6B_{<?~Nl-fd);dnjpJ9Ke&q%p%hrhuKQQk#D;xPJKK(AKS-y&&j2@ zWwl_Fq>Vf5glz3WSN7Xr7t+Dc!nbWSs?}++J&Km}YG()Z%ce3jVZQe6k~{4@(Fx~1 zWV3<4IcOVk7sAW~*tm8{Rv);P<<~#0#6x0sPOAv#Mc*cI+hTYvDdf!32BYW5_pm?i zE7v{k8odx71-IpgL>>aevgw2}oEAIt8CBu*`VE1Ea}J9bGoCq27|pVCrm}5Ca?ms_ zfq6JoLHm{&d}CNPlgS;*X8uT|?Eh|Xx1GH4$1`1&PP+^H|0<)o%Xl=eI0_efPq6XJ zrP%@7qi|*D6)q*rpFO^B0ugTUOmBrY^YoIm>(zY3#mv0}k6qWX-k+Jg!>BXZ_G$yn z5#B+2wr7FXtl2`ZAOX#8?8WV~k3iXy-&|pv3G0y*X1U-B_J<>xs>My%wNYT_%nuX& z_+ttQr$m^3*G{;{9zvN81DYZDF{YL2b7^1xz=bELp`odijvcBY1MOn=_hu0d{aZ_m zuIu8f*c5!9zlnQStO;|Zx3fFtf`{feKgSL zjHeBz;WjTSD&{fTJRnHC=RaSOhGL{{W6DX*g+BHS`1~@LgH=?UoMS$oZON z3%=Vrs+n<=pE2nSA35bX$*=E+oZ2B^_HYs|@2Um=i}n0Qh4=8nOc`B=$AN;61o!mE ze-JQsG7Em6Nspwyz-{k|+}yJ=7}WY3=8o7&NfFI-w$>jSKfi`og9UzenFTqF{tb;q zvuT^uXgqEmPu@oXKRv%lw^G;P*$o=pKG~a`%%=;y{rq1vbJ9n)%t8rWyU&8m{mE>J zjWzd}XE1ryW0CrX_n;8H7S1&HkfG};^g1QM#BY=!Z|`)PseFj}JxpZB28g+nxBL05 zpQ|Y|dpz`8oM1KHn#`iggDmy-QpELXq_x6=TUq;zn>+J0N6#OSVS6kWZ$1k$HKXuT zn;7Ccrn99I?LwEdL2RwkHB}Q zbkXXmCTZ?4r`^L_;f&52Jdpbo<~p5+$aAAeK30`xmK@^(CM{>liFT;mG6zl$AB&yB zF7u>QwkX{}$n_@MQs|yuI=ZY;$fet`r@>2L;*?1&(xZ~DbWg&6%9SA1cZ_7;q+vOy(vL`K(;(cxy`KO3A_lJe8sSD23*7zD z0*y1J@Wl5rIw9PRkM7IltT!ZcnF(L`7WuWXd}%K!j&KII{d4d@+)liDV!24ur5%!Y z%HXuRH2&INOHp=uAuNqNh)aZh{gZXa$g(D$3`4^?7mE{AQX2z4`bQZ>VY%pYI-Zjt z>Pff7puY_VdtGfvQ_fsu4x6j34Pa1ow8Sk15U{f`Qw??RFIA!skZC}fGN z5ilFJzHWfHL4*(T73t~dYZT+^M>2tqD6@7ROXHC3_DdEUuzS!Ly9I`Lg|JnPGjYAZ za+5f?lhhoqfJ3l612^2V-97A@EwXM%XF(^G=c{U}pGBFlrvjN?gxlU}_Us?jDJquF~Ao1xL`3m&4Cx z$?(DMC3(tP2wV)|**Lcz8@)qCaCaQHL3TX(zTd(}&r^VoExBCbFc~&EdH{Res))ua zw`rY)DbowwFZ8@ez}o#KLSkh$U67haTYHqm|E!L{ta~HLs_+5_cU;hJ!DqTTZ6*3V z{{Tfbci`L2J}CL8g<2=iaA~Ti&>bd0w|o*k8TbU2UDkopps8qk=M@YdQv)(_hiJ3R zXeO~`8P&(u@521` z@9Dpr6Y1?%8GIY7&Po$F98!6ejw$ctU)6_*=1VUHQ=jh`d{4x(Grh#ksm*BIlW$ih zYsu!R?cg*UGa=pj5}Wy+R{U@h_%Bqo=Gfo**`3C71MdT0@T9_${UrBQbW(}A1{FnYL~<>nt0uZ&e-9u_)Ozu%opD{lvdk!AFu zTj&SBBeJ}=pCYP$!zo0Dv-?^7>Xp#$JrIsd7_;Fc zEb)qI7?`hBpv(H|kbJ?1xi4yg=@RlxQef$hFSe#uAsTq}{VHrKt)ZUaL-^L$81}4D zqVImmC~>NiaAG198yTZgsgNPwQv?UzxKO|kfaVGEENFlp)W&^-$HqxeFUrPcLltdT zs5wxDV=2E+AzFOk%5`e`ETWF?W*REH24j1Y$o%w>2y&VL^VCvw4A zXDGE5DlxjCT`>)H}1d=eYQpJ6D zJYc)wM;f4KhK~}%@UTxSY}+JDOuDDW6nG+H@3KfxpLoIx^wkJf#V!j&hp zxgCQt*<_hm(td4?zIV5x@+C+7d?cFIZPUgvZ4)smrhrPe8}J4eJE%E#AldDVprVuE zwDp2EdimwS???RpRyqR(i-@)(TY57%W+*-^l;4Dt#t2{jon5WAJLM- zH=)PP485{)!9n&sBq*6MAN3=Yx91>cIlCda?W6tMm2j~C6z)agV0O=Z6TazhfTDE) zH1W(Hh_I6u?-*==79p8b)U}Y!>5ai)%P`!GC)w}qrVwvz!{Y7op}sPh^4_<=cR6c} zXurl>H@jlLY#D{ePsLenCb)E*5)I0<0j1fRxLj=nR@7~PW#!R$%=RzL{P|vRgbspu z{dur&fHcEh?I^Kjw|J%g5$-}LC-{z!VZ~raF!61q2)R3)(%e*%+^$HkXJl|2o7ZuD z;>&`UYY>Z{IUdg3v7rIW7SPOE;&vZy6Ylp8Xg}dS%`vZmH{1d2m!5%x`;S25-kW^q z2pwwwBMCp8bhrhJ6qw1j?c^9D^pZX!-uzjHY>JYYv|k$Nm>ht|;jiKIdx3p6Er7S4 zCdHDU1>gfYj*_F!ked&Wk2VjW@R7|hKFyWJ{J8=KC6h^J>STDo_PuEE8c%3Gu1vSG zTEHbNlfQj#4Zd2cOjA-6AiQ7#7jjK_R=bobn`W>-rKd1+?`jtE)0^*AM=TnhNk_jA zWvg1s_+!rRxZ|@NV5he$^jQ_rcJ&rGGByl${1&>$8+T(_Za&Ny|GYB!*K6>6Sx8Hh zVrbW-tyFqp1n$f=9g}2xb!2Albbz?@C^S2Nj#_C*v^uZlMpUf@E{ zd$U>MzmPcO5G@g{=GTTS#%YPq=xE&_E+p_U+_4Ym$~3a*uHrNtb9^|<^D|?AJQLWy zbwk9TomR6>sW|HLz75j@E|BEb)vS4R1}v+nfv?{sNZWZR|8jxAiXj=6C^Hbr`HB5( z593THC!%$3`C*L#TAyx( z9%pdCx=WC7O%AukCh)n@HDtja(l>#7xIu8NJ5{>z*5L!lpdpYS+EIi0XZ8y`*2Ch@ z9kpC!OC7ww_Xi$^M1tPwn{dSC7k@yvjVvofI5Yh(e6Q8UbE`@)rv4u-`6Ia8)CGpP z!CAWbtc!oI)+yvyPlHjQ4ss*(Nad*s_+mL^`T9|U+C&y&5`hM{sp61RH#aFm9(_z3 z>GVtkwk$LZwjGWl>2Lb5d}s?e$`nHA`mZ!ERF3to8Ai`{t;fnWyTI?IBwju`3iY$p zVd{!M73aS$fxfv*(OkH~w;Bm^@R1WBt6(z5r)!D_MDE3PrTLst8lz5JI z0@(L>{>9NqVmsh$$tjY%Sm^sVz3tF*9e>p(G!ddT8@J(4znKN zT-^IRiTnK18K)g6V-xkSQF2QM1&?SEPj3E4%gc$Goc4gBQyiK3(8Z`+jzf`+ka{)cIkQ%qzu4!3*W=<>)mWj<_NphCqGkt zRumf^^n*6`ouMIq`uKW9K7URp5dS#7W$78hJ^x=1yV|gvY?FK7lSMWhG22LbDvO!R z_Xxp_I2yl6ufpF`PQjbv4d}Qn28UgHMfo#tR0a-Tf+uT}*sQbx<>oKz@ag&msP@Z+ zRSAp+wfJx3v$%ky&IiH!54NbWG88{*3E#>SC+SgtBsi|@p2iW9~6hN zthfyDecwcvFNWjWA#Q4n1$!8hdB!pqTPusq$KMa>#U z8}y{uDwhpdc($La2XDgu$;uSmql-tb--p(`C!iPFCmNb}jdJd_iwcVSMXT@SQ1s#u zW^0vz_a29^mFhj*W}SK#a^xYcNi7t0E1EF>nn)ZxemcDHG({_;M_kj>o0PUi5;Gr1 zk%LPF`z?5UB;DV@p951^@BC$CRj!MckAsBo*(Ut*(hXO23DomwU(zpI0UgaI=+-kA zx(c?kj48ToZO2~HNE-o;aZ#|S<1saQ4yM7$%Itga-%1C6OHkQ4OEk^a5_R891@#O0 zU~4jo9)<@}W$q<@*TJ2z=cg3@sSq4``%T47rwzH~vt{wm3j@6Bl**64B!*`d*P+0E z4cz~-n%vC&vD$}$iR2m@G2Q?yPQQdWzbJwCZow~aHpY&@j`Ux^G5Tt-lPRV~)5u94 zFtR(0TBfeyZiLK+m|i{SQ9-FWheiDjX$jDTNn?zQcvM?qj~ulK8DQZ&qBMQKRAzoC@w;wg+`Ai2+I!v zHMw)#0k^N5a@aZ?ub)KT5f?zaTLLD&-Hd7LCZVC#9X?O+=A9Iu1-%>;d0rGcjrnHi zu{Mn)(@#*al`|%C!)ajudzg`8MN?-D6Y?N3XtPD=#0ETsqOe{*>+U65v~w)WId8$A zwH!>2Uv5Cw>EWG` zT&2NQjn}~Mz3HTKY$n#d@g(+bAAfRF2}Rr!She3S($JQPd_k9y*!f%nI(!k+yI1wx z#!r&0&n6#Ek33EHZwbz)Gf2h**0a>|iTLF3ZdB6KM8&^l;N4(LZwFVvu$lgR->^w| zy4wM5Mb2#D+DUB65tr=r78h#Nyy+O z`J=2;%?hF{TWIR5I>;#>!KPgr$5cLD<}3GC!C0AtaOd3!sw;oSJ>t_qyg!In&>xN3 zAx3J$|1Ux2IrQw^>KVYGi#3apCD zLHGLq=-$Ew^sUkXFFQxWV68qlHa3wD3R1^)SxT_jH46qRDdFPH)38lqnZS6P2__r5 zVbGLEl`8rLw5hoiQ|}FC<<$Z7drA~U75OsnOLO6~kn`RrFgh~s1mWL6e~L*ifiD$$ z2v=hTcDgFI6-_Q!y+%N6ho-SMvD)Ov=4W;BDO`QNU)lR_Ip_sfwY? z(axBfY{Lb70OXxC+0B=W>9;{3ovnh}Ic|{C&(WOsDl~u4Wm+9L0I&GBS5EG9;AnOjZ+}c*@J~$>f64hP9`^kiXPBjmZr0Ll)Qy#JTf>b{JFE`f;|;_T3rz?F_4b8Dx*N!U z$P@l+)l{Y%x`3WG+oHqni@eR5qp;Dt1QrkPhuy~ko~MZ6qVpm;^mHX=`CWwFJ1)T` z%UKlb{atXzHK3>M1Mxg%eONp30+-%<8>Z|`BZFs$QRC-EbQfjv2fl@Y#-@2pd#&IW z^*k;rw@ss!HLFlH`6R5Du%|bfo+x$Mi2soLixXGH0sGzzjn|6dxVTRAqVNgSOpf6E zLseLa;6g2ue#`$dkH!yrV`!w%kJ$G_jjfEZ#C-z>)7Wn#*boB+-espIwTeweTRwJ! zRZb+8#VD|G^4IyQ_p>Nm^%dDRO~&mbv&4GiMqs*xHY4LPY*4~OkOqXyjL?Cq2{ zy#Td9Eo5h6;Im``bT2f*ZpoW4xqCP|`p2=VvQvCT=X>C%cZo^@is-dALUOt}`#OIl zt@Lo^UN4-)_EjANALXrV*p4VRq)wPg^>pyBF1Emm3=4M9<{^%9EU9oWzkowPf@W0T z!J8}1@Xv%#{F6vE!QZ|Om)#d;Eph{~pg{09(PcjFjBuA-l}E`(h@P$-#hk^0o5wqa z9h=~coB1a=;MWAEps2ywD%s=p89Qm^I$c~Qqsx>_+?dSe32f`{x0T7pDd_mPiMAi_ z1gXbDj(p#ITs6>-LVsA}(y>#)<%KEstv$_;do+S+h3VoV=R+_}(uS>CaKqMd?|kUN z7^uq|PhLS*kb6p=w?8?SQWMHR*JLq1cy*kPDBkC%Z;oakXLZupd}Y*3?BsMyKJe!f zkK!3;fg9wjfj5nu*xU1l@Tf)+l%9;Eoxcd2KE^Q9lOEz9RiW^v6o;Gq++DcQD zMpEdriO_tu8(B&QeyqL-->yByl9MvnT)Gi;0{-LX*Bh`7vnZw_(?w(YMzGt11~Ks` zc{WN-;5~2DX9r9@A#GwFZFuR8Q?(+Y!c5rVZCPVilIoAPMgqSydm6cXFu~>8SGY0b zAA+jp5;)=ZnlE2HAG|bM$tywd?0WLB!zPR6eDwx5pSzUvq!fl`jA!+7+FX6d15m5E z0Ye)~xo)GOyy0x&UU9UFn_L;eX?^%d>w*-;TNJN}+mBqMKHiMMfgY4_#^RS2Q#ZA#3?A5(;&eC%dEqjGPN> zdax49HPtWIHk#nCRf(iqw;xjLq?n0Szxcawt~GtV0M3qoL<2Ie6MWGDIgd(MGFFSW zm=9qy%?t!{f&qSLzX6NdCZWSbJFxy)$4_;;AaGB=a?4)iaq%jP*h@WKHX|?=KJ>+q z;q+oYcc}%_Q4@>4H1DM=){{9oUI+D$hrpy)wRXR+Y@)lR>O2=G@F{+p^L|C+sN_f> zUTI08Ll=fI)jlP>;xP=M1HUz zYm$g%46{S^*&n$s$vV)IRL1-LkD>Tm9634JK#5KSwNH$|UDr;~i&2-s$6Xapeea+z z>bBw`_=U^Xcj2y1KaJlVJTSKW1oWK#_&)J05Ta7jP*I5ng+eNcWc9h{O+=;0h_V$TWM@SD?(hE|{qwoweb0Hlo=-?H9>RYP zbi>6y?&z>?9c~$w&&dhC9HpNH^dmWp_5FU!VSO7H@jHUP{PSQ>3lp$| zBDnN<17{+G_+d#ID6E{zMa<8DT!ka#)N%-R-PgyRjk9Qs(s))sCP92tVix)c*Qv?k zU1-!&h_k}}(2jdycz)Owp%)qp(mts;{ZKg;z0ILMEumw3LzsDWx^d;(ozVAZI#iub zCF{B%DEg^J@7=XP`?4d(37ISREf0vP%mUY)ifxz7g(rt>A$9aukUOiu9@jsC=rzM&)qZ=N z_|*g_V;U~0dBVj{m<`fn$K%rD>p0OaM_f2x4ZoiX0+KEUx5?Wn*3+J?+ULh4cBJ5j zO;^DtVJth~DzIT}R#D!DYOW`6Jl6a-9#<$k(Z2_JIP`_F;PZ>)mwW%Dz&u$xmOqv= zO}S2eD@H=|sWY&(TMa9Nw2%!@LZ9_>amp_hdh+!icQLpXr0;x(G&LD=oqd73lCzQC z#|Q8_XD-6ucdl%5`V|n#N6<0z`{HXOc9VObG0WpM$Y+g?uV zLNaLI4Z}6Jw(~A0O<~-%9k{yh0zGY9k8;mv!-M}6*=>_hcKiECW~@Dl>&qWRimm$i zYLzFL$o~<^SbE~mnd6>8ti{`t*1E)##>G60vKx&4hpNG4CbC(7 zm$BAy;k=9N7l9ek0aINWC>@MsSq^QqGwc8~KlY?IRvGkWg$uUcTMb_hC{c~;8CoLY zgfMm=sV|d&smWJ49gp+mF?tW@GQ*yJja<)WZx{S6nvAFaV(|6`59m})$Gz{X(B;ex z+Al5a?whBencoyR)XKx8L8rwFrn-|!%Xdi9Tf}0Xo`f(5CW<$V=iGM;z#-QDIQ)q! zzO~-~-_y0AusGPR)S(t9sQ{gL63#NEjV+DR6hTpjEHblzOxec)J(;{ zP9-3QK-@c3%q#wI#Oq4>?AoGW+@9z{&ld`g?YTdw^I8|Za6bv^+s;!&rySSh?T99N zA!so<0ne-nLVFyCU!GcX3KwNqhPo-dySNlo_jgiK+->Ms+`xZ5_ztAc=TnYz4JCJ- zfD4t9|&;5`o=22<3C*8k`BBYo=kULm!Zwq z0$h`)jFs1eL@Q2kC?S_Y5)(49^^+rxxw4xM-ZaA@a}+Q;u*+Ht<@O9Co#R*df1aIipYCJHvF)%vqZA;>9cwa;QS#e1 zd>Xq9A4+e36U(P~PWtjQc-;n+~jbh&k z*XgltsGTe(mlulIqB#;9Ju;|&v;wLwQ^)Lt0eGQ)5I(mZK|2>3g7vzHByAYp>w4dw1~Jmo+gcd^`RKDZ`;wQUt?H`H#9%?6J%c{Nx%93ZD|W z&Dr%9j`~XKoJ+ejs|q~D zOPLKtE8lUDx~hm0giccG?OHZqbs(PEnZkR_cZSgmw%|u^Ym^Adf$W`0VxOUo*r0y` z!p6r@gVk&rRT<8OjT(!+hCd-`p%%v9kO7+`-gt3bIfeeRN2^3H6m3$(b8@BdQs}rS zNU5MkdJUFIe22Hg4xqNVH-3T~{^X#)OGw!l;UH)uedFFqYOoW3{jf`EzxP`gnYkG?I&Ti*qLs-Zj{9dVaF z$MO*O)&Z3}dPLtOR*|XxEKF>83vO49Md$6tqf@RPniUQMI6Mx9zZ)x@6^gMdcp|JB zdIY~spFw>76WkMGg6~vPgbvqg8loV)bKks#dz-x2%y9yryyq2Z)))6?R!G}e|Nj0yT=RX>-c)d6- z{^1Mm&W1SJ&SmoM3C01fYGd7+*<^=RYc5g0)7KRP`j6v|9bx zKaFs9A#4gn<(=m5%8iDjqxZu+Eg_#bQ5DUry6L9sIhv$X$2a!m^U)VSz@F5x{E6dH zv~#2Zdr`a|U^zW`Gk`J{pP=05ecYo5&9px(ovWzVz-^mU znEb*f2om=9j`KB9eatle*~yV~IpP8fl9mLow-q?`!5#1!v;U1Tbp#wvQvddLo znB^5mCLQD01%X35KFA4&ni#;Mc@FIO-z1bYQ-i**k!-+QTby`2gq;}`$l0hJhRsIB z@aS0_1nrR!vU?0lHz$ZcZ@&ieibzYg34S!86XE`91ozkEIO|fDz?(-E*+%0A&~Wo$ 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⁡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