From b89f3a273683aac7f4e164bec66c8c28825e70b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9A=D1=83=D1=82?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BE=D0=B9?= Date: Tue, 10 Sep 2024 21:37:50 +0300 Subject: [PATCH] comment --- WebSocket3Aqva/BTimer.ino | 208 +++++ WebSocket3Aqva/JSON.ino | 128 +++ WebSocket3Aqva/SD.ino | 183 ++++ WebSocket3Aqva/SDUl.ino | 94 +++ WebSocket3Aqva/SDdat.ino | 77 ++ WebSocket3Aqva/SDkom.ino | 273 ++++++ WebSocket3Aqva/SaveSD.ino | 18 + WebSocket3Aqva/Sdread.ino | 308 +++++++ WebSocket3Aqva/TtmeDate.ino | 35 + WebSocket3Aqva/WebSocket3Aqva.ino | 793 ++++++++++++++++++ WebSocket3Aqva/WiFi.ino | 30 + WebSocket3Aqva/data/akva.html | 140 ++++ WebSocket3Aqva/data/akva1.html | 159 ++++ WebSocket3Aqva/data/akva2.html | 160 ++++ WebSocket3Aqva/data/akva3.html | 160 ++++ WebSocket3Aqva/data/akvadat.html | 170 ++++ WebSocket3Aqva/data/akvagraf.html | 236 ++++++ .../data/android-chrome-192x192.png | Bin 0 -> 16648 bytes .../data/android-chrome-512x512.png | Bin 0 -> 79916 bytes WebSocket3Aqva/data/apple-touch-icon.png | Bin 0 -> 15012 bytes WebSocket3Aqva/data/favicon-16x16.png | Bin 0 -> 775 bytes WebSocket3Aqva/data/favicon-32x32.png | Bin 0 -> 1310 bytes WebSocket3Aqva/data/favicon.ico | Bin 0 -> 7406 bytes WebSocket3Aqva/data/fon.jpg | Bin 0 -> 50947 bytes WebSocket3Aqva/data/index.html | 228 +++++ WebSocket3Aqva/data/inform.html | 230 +++++ WebSocket3Aqva/data/inform1.html | 227 +++++ WebSocket3Aqva/data/inform2.html | 229 +++++ WebSocket3Aqva/data/inform3.html | 228 +++++ WebSocket3Aqva/data/inform4.html | 226 +++++ WebSocket3Aqva/data/inform5.html | 227 +++++ WebSocket3Aqva/data/inform6.html | 157 ++++ WebSocket3Aqva/data/inform8.html | 151 ++++ WebSocket3Aqva/data/informtabl.html | 164 ++++ WebSocket3Aqva/data/informtabl1.html | 166 ++++ WebSocket3Aqva/data/informtabl2.html | 162 ++++ WebSocket3Aqva/data/informtabl3.html | 161 ++++ WebSocket3Aqva/data/informtabl4.html | 162 ++++ WebSocket3Aqva/data/informtabl5.html | 163 ++++ WebSocket3Aqva/data/mstile-150x150.png | Bin 0 -> 11333 bytes WebSocket3Aqva/data/setting.html | 478 +++++++++++ WebSocket3Aqva/data/style.css | 320 +++++++ WebSocket3Aqva/data/timer.html | 289 +++++++ WebSocket3Aqva/data/upravlenie.html | 192 +++++ WebSocket3Aqva/data/upravlenie1.html | 109 +++ WebSocket3Aqva/nrf.ino | 68 ++ WebSocket3Aqva/ntp.ino | 140 ++++ WebSocket3Aqva/outconvert.ino | 74 ++ WebSocket3Aqva/parsmsg.ino | 394 +++++++++ WebSocket3Aqva/processor.ino | 60 ++ WebSocket3Aqva/servertime.ino | 30 + WebSocket3Aqva/timer.ino | 41 + WebSocket3Aqva/timerconvert.ino | 195 +++++ WebSocket3Aqva/web.ino | 69 ++ WebSocket3Aqva/wrpin.ino | 6 + esp327nrfSDWDT3/JSstring.ino | 129 +++ esp327nrfSDWDT3/SD.ino | 183 ++++ esp327nrfSDWDT3/SDDat.ino | 117 +++ esp327nrfSDWDT3/SDKom.ino | 207 +++++ esp327nrfSDWDT3/SDUL1.ino | 94 +++ esp327nrfSDWDT3/WIFI.ino | 27 + .../data/android-chrome-192x192.png | Bin 0 -> 16648 bytes .../data/android-chrome-512x512.png | Bin 0 -> 79916 bytes esp327nrfSDWDT3/data/apple-touch-icon.png | Bin 0 -> 15012 bytes esp327nrfSDWDT3/data/favicon-16x16.png | Bin 0 -> 775 bytes esp327nrfSDWDT3/data/favicon-32x32.png | Bin 0 -> 1310 bytes esp327nrfSDWDT3/data/favicon.ico | Bin 0 -> 7406 bytes esp327nrfSDWDT3/data/fon.jpg | Bin 0 -> 131060 bytes esp327nrfSDWDT3/data/imajes/Thumbs.db | Bin 0 -> 8192 bytes esp327nrfSDWDT3/data/imajes/browserconfig.xml | 9 + esp327nrfSDWDT3/data/imajes/favicon-16x16.png | Bin 0 -> 775 bytes esp327nrfSDWDT3/data/imajes/favicon-32x32.png | Bin 0 -> 1310 bytes esp327nrfSDWDT3/data/imajes/favicon.ico | Bin 0 -> 7406 bytes .../data/imajes/mstile-150x150.png | Bin 0 -> 11333 bytes esp327nrfSDWDT3/data/imajes/off.png | Bin 0 -> 266 bytes esp327nrfSDWDT3/data/imajes/on.png | Bin 0 -> 266 bytes .../data/imajes/safari-pinned-tab.svg | 85 ++ esp327nrfSDWDT3/data/imajes/site.webmanifest | 19 + esp327nrfSDWDT3/data/index.html | 239 ++++++ esp327nrfSDWDT3/data/inform.html | 161 ++++ esp327nrfSDWDT3/data/inform1.html | 162 ++++ esp327nrfSDWDT3/data/inform2.html | 160 ++++ esp327nrfSDWDT3/data/inform3.html | 161 ++++ esp327nrfSDWDT3/data/inform4.html | 162 ++++ esp327nrfSDWDT3/data/inform5.html | 162 ++++ esp327nrfSDWDT3/data/inform6.html | 161 ++++ esp327nrfSDWDT3/data/inform7.html | 161 ++++ esp327nrfSDWDT3/data/mstile-150x150.png | Bin 0 -> 11333 bytes esp327nrfSDWDT3/data/off.png | Bin 0 -> 266 bytes esp327nrfSDWDT3/data/on.png | Bin 0 -> 266 bytes esp327nrfSDWDT3/data/setting.html | 58 ++ esp327nrfSDWDT3/data/style.css | 205 +++++ esp327nrfSDWDT3/data/upravlenie.html | 122 +++ esp327nrfSDWDT3/esp327nrfSDWDT3.ino | 634 ++++++++++++++ esp327nrfSDWDT3/event.ino | 24 + esp327nrfSDWDT3/nrf.ino | 54 ++ esp327nrfSDWDT3/ntp.ino | 95 +++ esp327nrfSDWDT3/parsmsg.ino | 352 ++++++++ esp327nrfSDWDT3/savedata.ino | 183 ++++ esp327nrfSDWDT3/time.ino | 30 + esp327nrfSDWDT3/timer.ino | 39 + play5.ino | 428 ---------- 102 files changed, 12713 insertions(+), 428 deletions(-) create mode 100644 WebSocket3Aqva/BTimer.ino create mode 100644 WebSocket3Aqva/JSON.ino create mode 100644 WebSocket3Aqva/SD.ino create mode 100644 WebSocket3Aqva/SDUl.ino create mode 100644 WebSocket3Aqva/SDdat.ino create mode 100644 WebSocket3Aqva/SDkom.ino create mode 100644 WebSocket3Aqva/SaveSD.ino create mode 100644 WebSocket3Aqva/Sdread.ino create mode 100644 WebSocket3Aqva/TtmeDate.ino create mode 100644 WebSocket3Aqva/WebSocket3Aqva.ino create mode 100644 WebSocket3Aqva/WiFi.ino create mode 100644 WebSocket3Aqva/data/akva.html create mode 100644 WebSocket3Aqva/data/akva1.html create mode 100644 WebSocket3Aqva/data/akva2.html create mode 100644 WebSocket3Aqva/data/akva3.html create mode 100644 WebSocket3Aqva/data/akvadat.html create mode 100644 WebSocket3Aqva/data/akvagraf.html create mode 100644 WebSocket3Aqva/data/android-chrome-192x192.png create mode 100644 WebSocket3Aqva/data/android-chrome-512x512.png create mode 100644 WebSocket3Aqva/data/apple-touch-icon.png create mode 100644 WebSocket3Aqva/data/favicon-16x16.png create mode 100644 WebSocket3Aqva/data/favicon-32x32.png create mode 100644 WebSocket3Aqva/data/favicon.ico create mode 100644 WebSocket3Aqva/data/fon.jpg create mode 100644 WebSocket3Aqva/data/index.html create mode 100644 WebSocket3Aqva/data/inform.html create mode 100644 WebSocket3Aqva/data/inform1.html create mode 100644 WebSocket3Aqva/data/inform2.html create mode 100644 WebSocket3Aqva/data/inform3.html create mode 100644 WebSocket3Aqva/data/inform4.html create mode 100644 WebSocket3Aqva/data/inform5.html create mode 100644 WebSocket3Aqva/data/inform6.html create mode 100644 WebSocket3Aqva/data/inform8.html create mode 100644 WebSocket3Aqva/data/informtabl.html create mode 100644 WebSocket3Aqva/data/informtabl1.html create mode 100644 WebSocket3Aqva/data/informtabl2.html create mode 100644 WebSocket3Aqva/data/informtabl3.html create mode 100644 WebSocket3Aqva/data/informtabl4.html create mode 100644 WebSocket3Aqva/data/informtabl5.html create mode 100644 WebSocket3Aqva/data/mstile-150x150.png create mode 100644 WebSocket3Aqva/data/setting.html create mode 100644 WebSocket3Aqva/data/style.css create mode 100644 WebSocket3Aqva/data/timer.html create mode 100644 WebSocket3Aqva/data/upravlenie.html create mode 100644 WebSocket3Aqva/data/upravlenie1.html create mode 100644 WebSocket3Aqva/nrf.ino create mode 100644 WebSocket3Aqva/ntp.ino create mode 100644 WebSocket3Aqva/outconvert.ino create mode 100644 WebSocket3Aqva/parsmsg.ino create mode 100644 WebSocket3Aqva/processor.ino create mode 100644 WebSocket3Aqva/servertime.ino create mode 100644 WebSocket3Aqva/timer.ino create mode 100644 WebSocket3Aqva/timerconvert.ino create mode 100644 WebSocket3Aqva/web.ino create mode 100644 WebSocket3Aqva/wrpin.ino create mode 100644 esp327nrfSDWDT3/JSstring.ino create mode 100644 esp327nrfSDWDT3/SD.ino create mode 100644 esp327nrfSDWDT3/SDDat.ino create mode 100644 esp327nrfSDWDT3/SDKom.ino create mode 100644 esp327nrfSDWDT3/SDUL1.ino create mode 100644 esp327nrfSDWDT3/WIFI.ino create mode 100644 esp327nrfSDWDT3/data/android-chrome-192x192.png create mode 100644 esp327nrfSDWDT3/data/android-chrome-512x512.png create mode 100644 esp327nrfSDWDT3/data/apple-touch-icon.png create mode 100644 esp327nrfSDWDT3/data/favicon-16x16.png create mode 100644 esp327nrfSDWDT3/data/favicon-32x32.png create mode 100644 esp327nrfSDWDT3/data/favicon.ico create mode 100644 esp327nrfSDWDT3/data/fon.jpg create mode 100644 esp327nrfSDWDT3/data/imajes/Thumbs.db create mode 100644 esp327nrfSDWDT3/data/imajes/browserconfig.xml create mode 100644 esp327nrfSDWDT3/data/imajes/favicon-16x16.png create mode 100644 esp327nrfSDWDT3/data/imajes/favicon-32x32.png create mode 100644 esp327nrfSDWDT3/data/imajes/favicon.ico create mode 100644 esp327nrfSDWDT3/data/imajes/mstile-150x150.png create mode 100644 esp327nrfSDWDT3/data/imajes/off.png create mode 100644 esp327nrfSDWDT3/data/imajes/on.png create mode 100644 esp327nrfSDWDT3/data/imajes/safari-pinned-tab.svg create mode 100644 esp327nrfSDWDT3/data/imajes/site.webmanifest create mode 100644 esp327nrfSDWDT3/data/index.html create mode 100644 esp327nrfSDWDT3/data/inform.html create mode 100644 esp327nrfSDWDT3/data/inform1.html create mode 100644 esp327nrfSDWDT3/data/inform2.html create mode 100644 esp327nrfSDWDT3/data/inform3.html create mode 100644 esp327nrfSDWDT3/data/inform4.html create mode 100644 esp327nrfSDWDT3/data/inform5.html create mode 100644 esp327nrfSDWDT3/data/inform6.html create mode 100644 esp327nrfSDWDT3/data/inform7.html create mode 100644 esp327nrfSDWDT3/data/mstile-150x150.png create mode 100644 esp327nrfSDWDT3/data/off.png create mode 100644 esp327nrfSDWDT3/data/on.png create mode 100644 esp327nrfSDWDT3/data/setting.html create mode 100644 esp327nrfSDWDT3/data/style.css create mode 100644 esp327nrfSDWDT3/data/upravlenie.html create mode 100644 esp327nrfSDWDT3/esp327nrfSDWDT3.ino create mode 100644 esp327nrfSDWDT3/event.ino create mode 100644 esp327nrfSDWDT3/nrf.ino create mode 100644 esp327nrfSDWDT3/ntp.ino create mode 100644 esp327nrfSDWDT3/parsmsg.ino create mode 100644 esp327nrfSDWDT3/savedata.ino create mode 100644 esp327nrfSDWDT3/time.ino create mode 100644 esp327nrfSDWDT3/timer.ino delete mode 100644 play5.ino diff --git a/WebSocket3Aqva/BTimer.ino b/WebSocket3Aqva/BTimer.ino new file mode 100644 index 0000000..51c7a36 --- /dev/null +++ b/WebSocket3Aqva/BTimer.ino @@ -0,0 +1,208 @@ +void btime() +{ + // bool lastate; + current_time = hour1 * 60 + min1; + Serial.println(current_time); + // state1 = main_log(BTimer1, state1); //______________________Обработка каналов управления суточных таймеров реального времени (каналы 1 - 3) + Serial.print("BTimer1 [0]:"); + Serial.println(BTimer1 [0]); + Serial.print("BTimer2 [0]:"); + Serial.println(BTimer2 [0]); + Serial.print("BTimer3 [0]:"); + Serial.println(BTimer3 [0]); + //*******************************3************************************************************ + switch (BTimer3[0]) { + case 0: + state3=0; + if(gpioTimer3[0]==1) + {digitalWrite(4, 0); + gpio[0]=0; + } + if(gpioTimer3[1]==1) + {digitalWrite(26, 0); + gpio[1]=0; + } + if(gpioTimer3[2]==1) + {digitalWrite(27, 0); + gpio[2]=0; + } + break; + case 1: + state3=1; + if(gpioTimer3[0]==1) + {digitalWrite(4, 1); + gpio[0]=1; + } + if(gpioTimer3[1]==1) + {digitalWrite(26, 1); + gpio[1]=1; + } + if(gpioTimer3[2]==1) + {digitalWrite(27, 1); + gpio[2]=1; + } + break; + case 2: + state3 = main_log(BTimer3, state3); + if(gpioTimer3[0]==1) + {digitalWrite(4, state3); + gpio[0]=state3; + } + if(gpioTimer3[1]==1) + {digitalWrite(26, state3); + gpio[1]=state3; + } + if(gpioTimer3[2]==1) + {digitalWrite(27, state3); + gpio[2]=state3; + } + break; + case 3: + break; + } + + //****************************2*************************************************************** + + switch (BTimer2[0]) { + case 0: + state2=0; + if(gpioTimer2[0]==1) + {digitalWrite(4, 0); + gpio[0]=0; + } + if(gpioTimer2[1]==1) + {digitalWrite(26, 0); + gpio[1]=0; + } + if(gpioTimer2[2]==1) + {digitalWrite(27, 0); + gpio[2]=0; + } + break; + case 1: + state2=1; + if(gpioTimer2[0]==1) + {digitalWrite(4, 1); + gpio[0]=1; + } + if(gpioTimer2[1]==1) + {digitalWrite(26, 1); + gpio[1]=1; + } + if(gpioTimer2[2]==1) + {digitalWrite(27, 1); + gpio[2]=1; + } + break; + case 2: + state2 = main_log(BTimer2, state2); + if(gpioTimer2[0]==1) + {digitalWrite(4, state2); + gpio[0]=state2; + } + if(gpioTimer2[1]==1) + {digitalWrite(26, state2); + gpio[1]=state2; + } + if(gpioTimer2[2]==1) + {digitalWrite(27, state2); + gpio[2]=state2; + } + break; + case 3: + break; + } + //******************************1-приоритет**************************************************************** + + switch (BTimer1 [0]) { + case 0: + state1=0; + if(gpioTimer1 [0]==1) + {digitalWrite(4, 0); + gpio[0]=0; + } + if(gpioTimer1 [1]==1) + {digitalWrite(26, 0); + gpio[1]=0; + } + if(gpioTimer1 [2]==1) + {digitalWrite(27, 0); + gpio[2]=0; + } + break; + case 1: + state1=1; + if(gpioTimer1 [0]==1) + {digitalWrite(4, 1); + gpio[0]=1; + } + if(gpioTimer1 [1]==1) + {digitalWrite(26, 1); + gpio[1]=1; + } + if(gpioTimer1 [2]==1) + {digitalWrite(27, 1); + gpio[2]=1; + } + break; + case 2: + // lastate=state1; + state1 = main_log(BTimer1, state1); + if(gpioTimer1[0]==1) + {digitalWrite(4, state1); + gpio[0]=state1; + } + if(gpioTimer1[1]==1) + {digitalWrite(26, state1); + gpio[1]=state1; + } + if(gpioTimer1[2]==1) + {digitalWrite(27, state1); + gpio[2]=state1; + } + + break; + case 3: + break; + } + + Serial.print("Timer1:"); + Serial.println(state1); + Serial.print("Timer2:"); + Serial.println(state2); + Serial.print("Timer3:"); + Serial.println(state3); + Serial.print("Gpio4:"); + Serial.println(digitalRead(4)); + Serial.print("Gpio26:"); + Serial.println(digitalRead(26)); + Serial.print("Gpio27:"); + Serial.println(digitalRead(27)); + writepin(); + JSstringOut();//преобразуем состояние выходов gpio[3] в JSON + webSocket.textAll(jsonStringout);// выводим всем клиентам w/s + +} + +bool main_log (uint16_t* timeMassive, bool cur_state) { // Основная фунция расчета состояния каналов суточных таймеров реального времени + uint16_t j = 1440; + uint8_t i = 0; + uint8_t n = 0; + for ( i = 1; i < 11; i++) { //___________________________Ищем в массиве таймеров элемент соответсвующий текущему времени c значением не равным 1440 (означает неактивно, отображается "--:--") + if ((timeMassive [i] == current_time) && (timeMassive [i] != 1440)) { + j = timeMassive [i]; + } + } + if (j == 1440)return (cur_state); //_______________________Если не нашли оставляем состояние канала без изменений + i = 0; + for ( i = 1; i < 11; i++) { + if ((j == timeMassive [i]) && (timeMassive [i] != 1440)) { + n = i; + } + } + i = 0; + if ((n % 2) == 0) { //____________________________________Четные таймеры выключают (LOW) + return (LOW); + } + else return (HIGH); //____________________________________Нечетные таймеры включают (HIGH) +} diff --git a/WebSocket3Aqva/JSON.ino b/WebSocket3Aqva/JSON.ino new file mode 100644 index 0000000..53bd490 --- /dev/null +++ b/WebSocket3Aqva/JSON.ino @@ -0,0 +1,128 @@ +void JSstringK() +{ delay(0); +String id2="2"; + board2["id"] =id2; + board2["tkom1"] = tkom1; + board2["hkom1"] = hkom1; + board2["batkom1"] = batkom1; + board2["timekom1"] = timekom1; + board2["tkom2"] = tkom2; + board2["hkom2"] = hkom2; + board2["batkom2"] = batkom2; + board2["timekom2"] = timekom2; + board2["tkor"] = tkor; + board2["hkor"] = hkor; + board2["batkor"] = batkor; + board2["timekor"] = timekor; + board2["tbal"] = tbal; + board2["hbal"] = hbal; + board2["batbal"] = batbal; + board2["timebal"] = timebal; + board2["tul1"] = tul1; + board2["hul1"] = hul1; + board2["osv1"] = osv1; + board2["timeul1"] = timeul1; +jsonString2 = JSON.stringify(board2); + Serial.println (jsonString2); +} + + +void JSstringU() +{delay(0); +String id0="0"; + board["id"] =id0; + +if(flread==0) +{ + board["temperature"] =ts; +// t1 = incomingReadings.temp; + board["humidity"] =hs; //значение считаное с SD + board["tim2"] = tim2; + +} + else + {//float t1=12.456787; + board["temperature"] =t1; + // board["temperature"] =incomingReadings.temp; +//float h1=77.456787; + board["humidity"] =h1;//принятое значение +// board["humidity"] =incomingReadings.hum; + if(min1<10) + { + board["tim2"] = String(hour1)+":0"+String(min1); + } + else + { + board["tim2"] =String(hour1)+":"+String(min1); + } + } + //******************** + board["batz"] = batz; + board["tim3"] = tim3; + //***************** + board["dataserv"] = dataserv; + board["timeserv"] = timeserv; + Serial.println("timeJS"); + Serial.println(EpochTime); + + board["munthserv"] = munthserv; + board["weekserv"] = weekserv; + board["timev"] = timev; + board["EpochTime"] = EpochTime; + + // jsonString = JSON.stringify(board); + jsonString = JSON.stringify(board);//{"id":"2","temperature":9.6733450317382812,"humidity":50.41815185546875,"tim2":"12:02","dataserv":"12","timeserv":"15:30","munthserv":"январь",weekserv:"среда"} + // events.send(jsonString.c_str(), "new_readings", millis());//обновление веба текущая температура + Serial.println (jsonString); +} + +void JSstringAkva()// 0-выкл 1-вкл gpio[3]={0,0,0} +{if(akva==1) +{ String id="akva"; + board5["id"] =id; + board5["tempakv1"] =takva1; + board5["light1"] =String(lightakv); + board5["timakv1"] =timeakva; + if(fanak1==0) + {fan1="OFF"; + } + else + { + fan1="ON"; + } + board5["fan1"] =fan1; + board5["tempakv2"] =takva2; + board5["light2"] =String(lightakv); + board5["timakv2"] =timeakva; + if(fanak2==0) + {fan2="OFF"; + } + else + { + fan2="ON"; + } + board5["fan2"] =fan2; + board5["tempakv3"] =takva3; + board5["light3"] =String(lightakv); + board5["timakv3"] =timeakva; + if(fanak3==0) + {fan3="OFF"; + } + else + { + fan3="ON"; + } + board5["fan3"] =fan3; + + jsonStringakva = JSON.stringify(board5); +} + //jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + Serial.println(jsonStringakva); +} +void JSstringOut()// 0-выкл 1-вкл gpio[3]={0,0,0} +{String id="out"; + board4["id"] =id; + board4["out1"] = String(gpio[0])+String(gpio[1])+String(gpio[2])+String(gpio[3]); + jsonStringout = JSON.stringify(board4);//jsonStringout= "{"id":"out","out1":"1011"}"; + Serial.println(jsonStringout); +} diff --git a/WebSocket3Aqva/SD.ino b/WebSocket3Aqva/SD.ino new file mode 100644 index 0000000..8a5bc0b --- /dev/null +++ b/WebSocket3Aqva/SD.ino @@ -0,0 +1,183 @@ +void sdlist() +{ + //listDir(SD, "/", 0); + //listDir(SD, "/", 0); + //delay(100); +// createDir(SD, "/mydir");//создать директорию (папку) +// delay(100); +// listDir(SD, "/", 0); +// delay(100); +// removeDir(SD, "/mydir"); + //delay(100); +// listDir(SD, "/", 2); +// delay(100); +// writeFile(SD, "/hello.txt", "Hello "); +// delay(100); +// appendFile(SD, "/hello.txt", "World!\n"); +// delay(100); +// readFile(SD, "/hello.txt"); + // deleteFile(SD, "/foo.txt"); +// renameFile(SD, "/hello.txt", "/foo.txt"); + // readFile(SD, "/foo.txt"); +// testFileIO(SD, "/test.txt"); + // Serial.printf("Total space: %lluMB\n", SD.totalBytes() / (1024 * 1024)); + // Serial.printf("Used space: %lluMB\n", SD.usedBytes() / (1024 * 1024)); +} + + +void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ + Serial.printf("Listing directory: %s\n", dirname); + + File root = fs.open(dirname); + if(!root){ + Serial.println("Failed to open directory"); + return; + } + if(!root.isDirectory()){ + Serial.println("Not a directory"); + return; + } + + File file = root.openNextFile(); + while(file){ + if(file.isDirectory()){ + Serial.print(" DIR : "); + Serial.println(file.name()); + if(levels){ + listDir(fs, file.name(), levels -1); + } + } else { + Serial.print(" FILE: "); + Serial.print(file.name()); + Serial.print(" SIZE: "); + Serial.println(file.size()); + } + file = root.openNextFile(); + } +} + +void createDir(fs::FS &fs, const char * path){ + // Serial.printf("Creating Dir: %s\n", path); + if(fs.mkdir(path)){ + Serial.println("Dir created"); + } else { + Serial.println("no dir"); + } +} + +void removeDir(fs::FS &fs, const char * path){ + Serial.printf("Removing Dir: %s\n", path); + if(fs.rmdir(path)){ + Serial.println("Dir removed"); + } else { + Serial.println("rmdir failed"); + } +} + +void readFile(fs::FS &fs, const char * path){ + Serial.printf("Reading file: %s\n", path); + + File file = fs.open(path); + if(!file){ + Serial.println("Failed to open file for reading"); + return; + } + + Serial.print("Read from file: "); + while(file.available()){ + Serial.write(file.read()); + } + file.close(); +} + +void writeFile(fs::FS &fs, const char * path, const char * message){ + Serial.printf("Writing file: %s\n", path); + + File file = fs.open(path, FILE_WRITE); + if(!file){ + Serial.println("Failed to open file for writing"); + return; + } + if(file.print(message)){ + Serial.println("File written"); + } else { + Serial.println("Write failed"); + } + file.close(); +} + +void appendFile(fs::FS &fs, const char * path, const char * message){ + Serial.printf("Appending to file: %s\n", path); + + File file = fs.open(path, FILE_APPEND); + if(!file){ + Serial.println("Failed to open file for appending"); + return; + } + if(file.print(message)){ + Serial.println("Message appended"); + } else { + Serial.println("Append failed"); + } + file.close(); +} + +void renameFile(fs::FS &fs, const char * path1, const char * path2){ + Serial.printf("Renaming file %s to %s\n", path1, path2); + if (fs.rename(path1, path2)) { + Serial.println("File renamed"); + } else { + Serial.println("Rename failed"); + } +} + +void deleteFile(fs::FS &fs, const char * path){ + Serial.printf("Deleting file: %s\n", path); + if(fs.remove(path)){ + Serial.println("File deleted"); + } else { + Serial.println("Delete failed"); + } +} + +void testFileIO(fs::FS &fs, const char * path){ + File file = fs.open(path); + static uint8_t buf[512]; + size_t len = 0; + uint32_t start = millis(); + uint32_t end = start; + if(file){ + len = file.size(); + size_t flen = len; + start = millis(); + while(len){ + size_t toRead = len; + if(toRead > 512){ + toRead = 512; + } + file.read(buf, toRead); + len -= toRead; + } + end = millis() - start; + Serial.printf("%u bytes read for %u ms\n", flen, end); + file.close(); + } else { + Serial.println("Failed to open file for reading"); + } + + + file = fs.open(path, FILE_WRITE); + if(!file){ + Serial.println("Failed to open file for writing"); + return; + } + + size_t i; + start = millis(); + for(i=0; i<2048; i++){ + file.write(buf, 512); + } + end = millis() - start; + Serial.printf("%u bytes written for %u ms\n", 2048 * 512, end); + file.close(); +} diff --git a/WebSocket3Aqva/SDUl.ino b/WebSocket3Aqva/SDUl.ino new file mode 100644 index 0000000..3e72280 --- /dev/null +++ b/WebSocket3Aqva/SDUl.ino @@ -0,0 +1,94 @@ +void saveul() +{ +nt=0;//сброс номера температ датчика + + +int q=0; +if((hour1<1)&&(min1<20))timev=0;//до 00:20 сброс timev-врмя записи на флеш улица восто приходят каждые 3 мин а зап каждые 20 мин + + if(timev+20 +#define WDT_TIMEOUT 30 +#include +#include +#include "ESPAsyncWebSrv.h" +#include +#include "SPI.h" +#include +#include +#include "NTPClient.h" +#include "WiFiUdp.h" +#include + +#include "FS.h" +#include "SD.h" +#include +UnixTime stamp(0); // указать GMT (3 для Москвы) +// Define deep sleep options +String dataMessage; +// Define NTP Client to get time +WiFiUDP ntpUDP; +NTPClient timeClient(ntpUDP); +#include "RTClib.h" +RTC_DS3231 rtc; +#include "nRF24L01.h" +#include "RF24.h" +#include + +RCSwitch mySwitch = RCSwitch(); + +char msg[16]; +//RF24 radio(12, 14, 26, 25, 27); +//RF24 radio(27, 26, 32, 33, 25);//server (ce,csn,sck,miso,mosi)esp32 +//gpio19 +RF24 radio(17, 16, 32, 33, 25);//server (ce,csn,sck,miso,mosi)esp32 + +const uint64_t pip = 0x02E423E4E2LL; +SPIClass sdSPI(HSPI); +File myFile; + +const char* ssid = "VOVA-47"; +const char* password = "vovak26102003"; + +const int LED_PIN = 2; + +AsyncWebServer server(80); +AsyncWebSocket webSocket("/ws"); + +int ledState = LOW; +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Задайте свой статический IP-адрес +IPAddress local_IP(192, 168, 1, 115); +// Укажите IP-адрес шлюза +IPAddress gateway(192, 168, 1, 1); + +IPAddress subnet(255, 255, 0, 0); +IPAddress primaryDNS(8, 8, 8, 8); // опционально +IPAddress secondaryDNS(8, 8, 4, 4); // опционально + + +//**************************************************************************** +// ntp +int countTimeWas; +int countVal; +int countVal1; +String formattedDate; +String formattedTime; +String dayStamp; +String timeStamp; +String timerweek="{\"id\":\"week\",\"timer1_week\":\"0111100\",\"timer2_week\":\"1000011\",\"timer3_week\":\"0101010\"}"; +bool tweek; // флаг обновления строки timerweek для записи на SD +String timerdata="{\"timer1\":[\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\"],\"timer2\":[\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\"],\"timer3\":[\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\",\"00:00\"]}";//данные с таймеров +bool tdat=0;// флаг обновления строки timerdat для записи на SD +String timerout="{\"id\":\"tout\",\"t1\":\"011\",\"t2\":\"100\",\"t3\":\"010\"}";//подключние таймеров т1 т2 и т3 к выходам gpio4,gpio26,gpio27 +bool tout=0;// флаг обновления строки timerout для записи на SD +bool ntp_on=0; +//**************************JSON*************************************************** +JSONVar board; +JSONVar board1; +JSONVar board2; +JSONVar board3; +JSONVar board4; +JSONVar board5; + +//String jsonString="{\"id\":\"0\",\"temperature\":\"9.67\",\"humidity\":50.41815185546875,\"tim2\":\"10:10\",\"tim3\":\"11:11\",\"dataserv\":\"12\",\"timeserv\":\"15:30\",\"munthserv\":\"январь\",\"weekserv\":\"среда\"}"; +String jsonString="{\"id\":\"0\",\"temperature\":9.6757548,\"humidity\":50.41815185546875,\"tim2\":\"10:10\",\"tim3\":\"11:11\",\"dataserv\":\"12\",\"munthserv\":\"январь\",\"weekserv\":\"среда\"}"; +String jsonString1; +String jsonString2="{\"id\":\"2\",\"tkom1\":\"20.0\",\"hkom1\":\"30.0\",\"batkom1\":\"4.10\",\"timekom1\":\"07:08\",\"tkom2\":\"20.5\",\"hkom2\":\"80.5\",\"batkom2\":\"3.95\",\"timekom2\":\"15:15\",\"tkor\":\"23.5\",\"hkor\":\"90.5\",\"batkor\":\"3.75\",\"timekor\":\"13:13\",\"tbal\":\"13.5\",\"hbal\":\"80.5\",\"batbal\":\"3.45\",\"timebal\":\"11:11\",\"tul1\":\"7.3\",\"hul1\":\"75.5\",\"osv1\":\"50\",\"timeul1\":\"12:12\"}"; +String jsonStringout= "{\"id\":\"out\",\"out1\":\"1011\"}";// 0-выкл 1-вкл вых1 вых2 вых3 таймер(работаем по кнопкам или по таймеру +String jsonString77="{\"Time\":\"0:17\",\"temperatura\":\"19.73 C\",\"humidity\":\"73.59 %\"}\n{\"Time\":\"0:37\",\"temperatura\":\"19.65 C\",\"humidity\":\"74.34 %\"}\n{\"Time\":\"0:57\",\"temperatura\":\"19.57 C\",\"humidity\":\"74.99 %\"}"; +String jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; +//String jsonString77="{\"id\":\"77\",\"Time\":\"21:23\",\"temperatura\":\"8.88 C\",\"humidity\":\"90.97 %\"}\n"; +//String jsonString78="{\"id\":\"77\",\"data\":\'\"Time\":\"21:23\",\"temperatura\":\"8.88 C\",\"humidity\":\"90.97 %\"\'}"; +//{"timer1":["00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00"],"timer2":["00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00"],"timer3":["00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00","00:00"]} +//String jsonString7="{\"id\":\"week\",\"timer1_week\":\"0111100\",\"timer2_week\":\"1000011\",\"timer3_week\":\"0101010\"}"; +//**************************************************************************** +int idcon=0;// ID соединения +//************************************************************************************************* +char* strd[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"}; + char* strm[] = {"январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"}; + char* strweek[] = {"воскресенье","понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"}; + int nt=0;//номер термометра + int nti=0;//номер термометра для сайта + int temperature1=10; + String ts; + String hs; +String t1; + String h1; + String t10;//время работы сервера + String tim3;// время от нтп сервера при приходе данных с NOW + String tim2;//время получ от устройства NOW + String batz;//заря бат термометра ул запад + String munthserv;//месяц + String weekserv;//день недели + String timer1;//таймер1 + String timer2;//таймер2 + int timerbut1=0; + int timerbut2=0; +bool tbut1=0;//флаг таймера1 +bool tbut2=0;//флаг таймера2 +bool res = 0;//флаг разрешения сброса +int timebut=0;// подсчет времени по таймерам + +String tkom1;//температура +String hkom1;//влажность +String batkom1; +String timekom1;//время прихода данных комната1 + +String tkom2; +String hkom2; +String batkom2; +String timekom2; + +String tkor; +String hkor; +String batkor; +String timekor; + +String tbal; +String hbal; +String batbal; +String timebal; + +String timeul1; +String tul1; +String hul1; +String osv1; + +String takva1; +String takva2; +String takva3; +String timeakva; +String light; +String fan1; +String fan2; +String fan3; +bool fanak1; +bool fanak2; +bool fanak3; +int lightakv=80; +bool akva=0;//флаг прихода дааных с акваконрол + +int ct1=0;//счетчик пропуска данные каждые 3 минуты записываем каждые 20 те 7 пропусков +int wreset=0;//счетчик времени сброса esp(1 раз в 8 часов) + String out1;//выход1 gpio4 + String out2;//выход2 gpio26 + String out3;//выход3 gpio27 + int tweekday=1;//день недели для таймеров + int time17=0; +int hour1=10; +int min1=7; +int sek=0; +int year1; +int month1; +int data1; +int hk=0;//часы для исключения повтора записи данных +int mk=0;//минуты +int hb=0;//часы для исключения повтора записи данных +int mb=0;//минуты +int hkr=0;//часы для исключения повтора записи данных +int mkr=0;//минуты +int timev=0;//для пропуска 20 минут +//String timev1;//для записи на флэш при сбросе +bool outdata=0;//флаг обновления состояния выходов +boolean fdata=0;//флаг обновления данных темп и влажн +int fobnov=1;//флаг обновления данных темп и влажн +String timeserv;//время сервера +String dataserv;//дата +int v=0; +int v1=0; +long EpochTime=0; + int ind=0; + + String strdat;//накопленые в памяти данные по темп и влажность передаваемые клиенту + String tempdat;// +int ftdata=0;//флаг запроса данных темп и влажн +int fping=0;// флаг для задержки отр данных на страницу inform +int wright=0; +bool flread=0; + char* strden[] = {"/01","/02","/03","/04","/05","/06","/07","/08","/09","/10","/11","/12","/13","/14","/15","/16","/17","/18","/19","/20","/21","/22","/23","/24","/25","/26","/27","/28","/29","/30","/31"}; + char* strmen[] = {"/JAN","/FEBR","/MARCH","/APRIL","/MAY","/JUNE","/JULY","/AUG","/SEPT","/OCT","/NOV","/DEC"}; + char* stryen[] = {"/2014","/2015","/2016","/2017","/D-2018","/D-2019","/D-2020","/D-2021","/D-2022","/D-2023","/D-2024","/D-2025","/D-2026","/D-2027","/D-2028","/D-2029","/D-2030","/D-2031","/D-2032","D-2033","/D-2034","/D-2035"}; + char* strdaten[] = {"/T1.txt","/T2.txt","/T3.txt","/T4.txt","/T5.txt","/T6.txt","/T7.txt","/T8.txt","/T9.txt","/T10.txt"}; +//************************************************************ +//************************************************************ +hw_timer_t * timer = NULL; +volatile SemaphoreHandle_t timerSemaphore; +portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; +volatile uint32_t isrCounter = 0; +volatile uint32_t lastIsrAt = 0; + char *time_buf; +//***************************************************************************** + +// Structure example to receive data +// Must match the sender structure +typedef struct struct_message { + int id; + float temp; + float hum; + unsigned int readingId; + unsigned int bat; +} struct_message; +int volt11; +struct_message incomingReadings; +//****************************************Timer Budilnik***************************************************************************************************************************************************************************************** +int minuta;//счетчик минут для проверки времени сработки будильников +uint16_t BTimer1 [11] = {2, 390, 450, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}; // массивы всех таймеров для суточных каналов (1 - 4) 0-й элемент отвечает за состояние канала (1 - вкл/ 0 - выкл/ 2 - авто)) +uint16_t BTimer2 [11] = {2, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}; // остальное время в минутах (нечетные элементы - таймеры включения, четные - выключения) +uint16_t BTimer3 [11] = {2, 380, 450, 1080, 1410, 1440, 1440, 1440, 1440, 1440, 1440}; // время 1440 отображается на экране как "--:--", это неактивное значение, для основной логики пустая ячейка означает что таймер не задан +uint16_t weekTimer1 [7]={0,0,0,0,0,0,0};//недельные установки t1 +uint16_t weekTimer2 [7]={0,0,0,0,0,0,0};//недельные установки t2 +uint16_t weekTimer3 [7]={0,0,0,0,0,0,0};//недельные установки t3 +uint16_t gpioTimer1 [3]={1,0,0};//выходы подкл к таймеру {gpio 4, gpio 26, gpio 27} {1,0,0} подкл 4 +uint16_t gpioTimer2 [3]={1,0,0};//выходы подкл к таймеру {gpio 4, gpio 26, gpio 27} {0,0,0} откл все +uint16_t gpioTimer3 [3]={0,0,0};//выходы подкл к таймеру {gpio 4, gpio 26, gpio 27}{1,1,1} подкл все +uint16_t gpio[4]={0,0,0,1};//выходы состояние {gpio 4, gpio 26, gpio 27, timer}{1,1,1,1} timer определяет работу выходов по таймеру=1 или кнопки =0 +bool state1 = 0; //_________________Переменные состояния каналов(вкл/выкл) +bool state2 = 0; +bool state3 = 0; +uint16_t current_time = 0 ; //_______Текущее время в минутах (для основных расчетов) +//********************************************************************************************* +const char* PARAM_INPUT_1 = "output";//Gpio +const char* PARAM_INPUT_2 = "state"; //состояние выхода +const char* PARAM_INPUT = "value"; + +const int output = 4; +const int output1 = 26; +const int output2 = 27; +String ledout; +void IRAM_ATTR onTimer(); +//*********************************************************** +void OnDataRecv(const uint8_t * mac_addr, const uint8_t *incomingData, int len) { + // Copies the sender mac address to a string + char macStr[18]; + Serial.print("Packet received from: "); + snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x", + mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); + Serial.println(macStr); + memcpy(&incomingReadings, incomingData, sizeof(incomingReadings)); + + Serial.printf("Board ID %u: %u bytes\n", incomingReadings.id, len); + Serial.printf("t value: %4.2f \n", incomingReadings.temp); + t1 = incomingReadings.temp; + Serial.printf("h value: %4.2f \n", incomingReadings.hum); + h1=incomingReadings.hum; + Serial.printf("readingID value: %d \n", incomingReadings.readingId); + int tim11 =incomingReadings.readingId; + hour1=tim11/100; + min1=tim11%100; + volt11 =incomingReadings.bat;//заряд батареи + Serial.printf("bat value: %d \n", incomingReadings.bat); + + +batz=volt11/100; +batz+=","; +batz+=volt11%100; + + Serial.println(batz); + //tim3=timeserv; + //получаем из int incomingReadings= 1530 строку 15:30 + + tim3=incomingReadings.readingId/100; + tim3+=":"; + if(incomingReadings.readingId%100<10)tim3+="0"; + + tim3+=incomingReadings.readingId%100; +//JSONстрока формирование + ntphome(); + flread=1; +JSstringU(); + savedata(); + flread=1; +}//OnDataRecv + + //**************************************************************************** +//**************************************************************************************************************************************************************************************************************************************************** +//подпрогр Действия вебсекета +void handleWebSocketEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { + switch (type) { + case WS_EVT_DISCONNECT://[3] Disconnected! откл соединения + Serial.printf("[%u] Disconnected!\n", client->id()); + idcon--; + break; + + case WS_EVT_CONNECT://[4] Connected from 192.168.1.108 подключение + { + IPAddress ip = client->remoteIP();//адрес подкл объкта + Serial.printf("[%u] Connected from %d.%d.%d.%d\n", client->id(), ip[0], ip[1], ip[2], ip[3]); + idcon++; + client->text(jsonString);//отправка дата месяц неделя + client->text(jsonString2);//отправка темп и влажности в комнатах + String countUpdate2 = "{\"label3\":\"count2\",\"value\":\"" + String(timeserv) + "\"}";//отправка строковой переменной + String countUpdate = "{\"label3\":\"count\",\"value\":\"" + String(t10) + "\"}";//отправка строковой переменной время раб сервера + client->text(countUpdate2);//отправка NTP времени timeserv + client->text(countUpdate);//отправка время раб сервера t10 + if (ftdata==1)//пришел запрос табл данных /inform1 запад + {ftdata=0; + nti=1; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==2)//пришел запрос табл данных /inform К1 + {ftdata=0; + nti=4; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==3)//пришел запрос табл данных /inform k2 + {ftdata=0; + nti=3; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==5)//пришел запрос табл данных /inform балкон + {ftdata=0; + nti=2; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==4)//пришел запрос табл данных /inform корридор + {ftdata=0; + nti=5; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==10)//пришел запрос табл данных /inform восток + {ftdata=0; + nti=0; + readdata(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр inform + } + if (ftdata==6)//пришел запрос табл данных кухня + {ftdata=0; + // nti=6; + // readdata(); + // client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу на стр + } + if (ftdata==12)//пришел запрос /setting передача значений таймера + {ftdata=0; + client->text(timerweek);//таймер дни недели + Serial.println(timerweek); + + client->text(timerdata);//timerout + Serial.println(timerdata); + + client->text(timerout);//timerout + Serial.println(timerout); + } + + if (ftdata==8)//пришел запрос управления upravlenie.html + {ftdata=0; + JSstringOut(); + client->text(jsonStringout);// {"id":"out","out1":"1011"} отправляем состояние выходов + //Serial.println(jsonStringout); + } + if (ftdata==7)//пришел запрос управления akva.html + {ftdata=0; + JSstringAkva(); + client->text(jsonStringakva);//jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + Serial.println(jsonStringakva); + } + + if (ftdata==15)//пришел запрос управления akva1.html + {ftdata=0; + JSstringAkva(); + client->text(jsonStringakva);//jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + // Serial.println(jsonStringakva); + readakva(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу + } + if (ftdata==16)//пришел запрос управления akva1.html + {ftdata=0; + JSstringAkva(); + client->text(jsonStringakva);//jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + // Serial.println(jsonStringakva); + readakva(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу + } + if (ftdata==17)//пришел запрос управления akva1.html + {ftdata=0; + JSstringAkva(); + client->text(jsonStringakva);//jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + //Serial.println(jsonStringakva); + readakva(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу + } + if (ftdata==18)//пришел запрос управления akva1.html + {ftdata=0; + // JSstringAkva(); + // client->text(jsonStringakva);//jsonStringakva="{\"id\":\"akva\",\"tempakv1\":\"20,1\",\"light1\":\"80 %\",\"timakv1\":\"12.31\",\"fan1\":\"OFF\",\"tempakv2\":\"20,2\",\"light2\":\"82 %\",\"timakv2\":\"12.32\",\"fan2\":\"OFF\",\"tempakv3\":\"20,3\",\"light3\":\"83 %\",\"timakv3\":\"12.33\",\"fan3\":\"OFF\"}"; + //Serial.println(jsonStringakva); + readakva(); + client->text(strdat.c_str());//отправка суточных данных данных из карты памяти в таблицу + } + + } + break; + + case WS_EVT_DATA: + { + AwsFrameInfo *info = (AwsFrameInfo*)arg; + if (info->final && info->index == 0 && info->len == len && info->opcode == WS_TEXT) { + data[len] = '\0'; + String payload = String((char*)data); + + Serial.printf("[%u] Received: %s\n", client->id(), payload.c_str()); + + if (payload == "toggle") {//если пришло toggle + + }else{ //{"id":"week","timer1_week":"0111100","timer2_week":"1000011","timer3_week":"0101010"} + String js = payload.substring(1,11);//"id":"week" вырезаем нужные данные {"ido":"4","out":1} + // Serial.println(js); + if((js[1] = 'i')&&(js[6]=='w')) + {timerweek=payload; + tweek=1; + } + if((js[1] = 'i')&&(js[6]=='t'))// "id":"tout","t1":"100","t2":"010","t3":"001" + {timerout=payload; + Serial.println(timerout); + tweek=1; + } + if((js[1] = 't')&&(js[6]=='1'))//{"timer1":["08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00"],"timer2":["09:30","10:30","11:30","12:30","13:30","14:30","15:30","16:30","17:30","18:30"],"timer3":["10:15","11:15","12:15","13:15","14:15","15:15","16:15","17:15","18:15","19:15"]} + {timerdata=payload; + //Serial.println(timerdata); + tdat=1;//флаг разрешения парсинга строки и ее записи на SD + } + // Serial.println(js); + if((js[1] = 'i')&&(js[3]=='o'))//{"ido":"4","out":"1"} переключение выхода + {ledout=payload; + //Serial.println(ledout); + outconvert();// получен данные преобразуем в массив gpio[4]={0,0,0,1} + JSstringOut();//преобразуем состояние выходов gpio[4]={0,0,0,1} в JSON {"id":"out","out1":"1011"} + webSocket.textAll(jsonStringout);// выводим всем клиентам w/s + btime(); + } + } + + + + } + } + break; + } +} + + +void setup() { + pinMode(2, OUTPUT); + pinMode(4, OUTPUT); + digitalWrite(4, LOW); + pinMode(26, OUTPUT); + digitalWrite(26, LOW); + pinMode(27, OUTPUT); + digitalWrite(27, LOW); + pinMode(5, OUTPUT); + digitalWrite(5, LOW); + pinMode(19, OUTPUT); + digitalWrite(19, HIGH); + delay(500); +digitalWrite(19, LOW); + + Serial.begin(115200); + //pinMode(LED_PIN, OUTPUT); + rtc.begin(); + + // digitalWrite(2, LOW); + digitalWrite(2, HIGH); + Serial.println(WiFi.macAddress()); + + sdSPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS); + if (!SD.begin(SD_CS, sdSPI)) + { + // if(!SD.begin()){ + Serial.println("Mounting card mount failed"); + // return; + } + + + +uint8_t cardType = SD.cardType(); +if(cardType == CARD_NONE){ + Serial.println("No SD card attached"); + //return; + } + uint64_t cardSize = SD.cardSize() / (1024 * 1024); + Serial.printf("SD Card Size: %lluMB\n", cardSize); + + +if(!SPIFFS.begin()){ + Serial.println("An Error has occurred while mounting SPIFFS"); + //return; + } + + + Nrfsetup(); +//settimer();//таймер отсчета времени настр на 5 сек + WiFisetup(); + timeClient.begin(); + + timeClient.setTimeOffset(10800); + + +// ntp();//NTP init +/*current_time = hour1 * 60 + min1; +for (int i = 0; i <= 1439; i++) { + if (current_time > 1439) current_time = 0; + state1 = main_log(BTimer1, state1); + state2 = main_log(BTimer2, state2); + state3 = main_log(BTimer3, state3); +// state4 = main_log(Timer4, state4); + current_time++; +} +btime(); +*/ +timedate(); + Sdreaddata(); + Sdread(); + mySwitch.enableTransmit(22); + //mySwitch.send("000000000001010100010011"); + //mySwitch.send("000000000001010100010001"); + esp_now_register_recv_cb(OnDataRecv); + + + //*******************server****************************************************************** +// server.on("/", HTTP_GET, handleRoot); +server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/index.html"); + }); + server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/index.html"); + }); + // Route to load style.css file + server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/style.css", "text/css"); + }); + server.on("/fon.jpg", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/fon.jpg"); + }); +//***************************************************************************************************** +server.on("/upravlenie.html", HTTP_GET, [](AsyncWebServerRequest *request){ + fobnov=1; + ftdata=8; + request->send(SPIFFS, "/upravlenie.html", String(), false, processor); + }); + + //**************************************************************************************************************** + server.on("/setting.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=12; + request->send(SPIFFS, "/setting.html"); + }); + server.on("/inform.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=10; + request->send(SPIFFS, "/inform.html"); + }); + server.on("/informtabl.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=10; + request->send(SPIFFS, "/informtabl.html"); + }); + + server.on("/inform1.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=1; + request->send(SPIFFS, "/inform1.html"); + }); + server.on("/informtabl1.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=1; + request->send(SPIFFS, "/informtabl1.html"); + }); + + server.on("/inform2.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=2; + request->send(SPIFFS, "/inform2.html"); + }); + server.on("/informtabl2.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=2; + request->send(SPIFFS, "/informtabl2.html"); + }); + server.on("/inform3.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=3; + request->send(SPIFFS, "/inform3.html"); + }); + server.on("/informtabl3.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=3; + request->send(SPIFFS, "/informtabl3.html"); + }); + server.on("/inform4.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=4; + request->send(SPIFFS, "/inform4.html"); + }); + server.on("/informtabl4.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=4; + request->send(SPIFFS, "/informtabl4.html"); + }); + server.on("/inform5.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=5; + request->send(SPIFFS, "/inform5.html"); + }); + server.on("/informtabl5.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=5; + request->send(SPIFFS, "/informtabl5.html"); + }); + server.on("/inform6.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=6; + request->send(SPIFFS, "/inform6.html"); + }); + server.on("/informtabl6.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=6; + request->send(SPIFFS, "/informtabl6.html"); + }); + + server.on("/akva1.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=15; + request->send(SPIFFS, "/akva1.html"); + }); + + server.on("/akva2.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=16; + request->send(SPIFFS, "/akva2.html"); + }); + server.on("/akva3.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=17; + request->send(SPIFFS, "/akva3.html"); + }); + server.on("/akvadat.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=18; + request->send(SPIFFS, "/akvadat.html"); + }); + server.on("/akvagraf.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=18; + request->send(SPIFFS, "/akvagraf.html"); + }); + server.on("/timer.html", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/timer.html", String(), false, processor); + }); + server.on("/akva.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=7; + request->send(SPIFFS, "/akva.html"); + }); + + server.on("/favicon.ico", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/favicon.ico"); + }); + server.on("/favicon-32x32.png", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/favicon-32x32.png"); + }); + server.on("/favicon-16x16.png", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/favicon-16x16.png"); + }); +//******************************************************************************************************** +JSstringU(); +JSstringK(); + server.addHandler(&webSocket); + webSocket.onEvent(handleWebSocketEvent); + + server.begin(); + esp_task_wdt_init(WDT_TIMEOUT, true); //включить панику, чтобы ESP32 перезапустился + esp_task_wdt_add(NULL); //добавить текущий поток в WDT watch + +} + + + + + + + +void loop() { + + // Send data to browser, increasing number every second. + if (millis() - countTimeWas >= 1000) { + countTimeWas = millis(); + countVal++;//cчетчик до перезапуска сервера + countVal1++; + v++; + v1++; + if (idcon>0)// если есть подключения + { String countUpdate1 = "{\"label3\":\"count1\",\"value\":" + String(countVal1) + "}";//отправка числовой переменной + webSocket.textAll(countUpdate1);//обновление ws + if((tdat==1)||(tweek==1))//есть новые данные для установок таймера + {timerconvert(); + gpio[3]=1;//управление выходами передаем таймеру + writeFile(SD, "/timerd.txt", timerdata.c_str());//записываем в этот файл значения для таймера + writeFile(SD, "/week.txt", timerweek.c_str());//записываем в этот файл значения недельного таймера + writeFile(SD, "/tdout.txt", timerout.c_str());//записываем в этот файл значения выходов к кот подкл таймер + //timerout= {"id":"tout","t1":"100","t2":"010","t3":"001"} + } + } + + + // Serial.println(countUpdate1); + + + + if (v1>3600) {//60min- + delay(0); + sdsave();// записываем на СД необходимые данные + delay(0); + ntp();//считываем время + v1=0;//обнуляем счетчик =3600с + delay(0); + } +//**************20sek******************************* + if (v>19){//20sek + JSstringU(); + JSstringK(); + JSstringOut(); + + + if((ntp_on==0)&&(idcon==0)) + {if((hour1==8)&&(min1==15))ntp();//синхронизация времени с NTP + + if((hour1==8)&&(min1>18)) ntp_on==1; //если NTP не отвечает прекращаем до следующего дня + } + + + + + if((res==1)&&(idcon==0))//idcon=0 клиентов нет + { + sdsave();// записываем на СД необходимые данные + ESP.restart(); //перезагрузка сервака + } + + res=0; + ntphome();//считываем время с esp32 + nrf(); //проверяем не приш ли данные на NRF + Serial.print ("idcon="); + Serial.println (idcon); + v=0;//обнуляем счетчик 4*5=20с + delay(0); + vrem();//время работы сайта + btime();//проверка сработки таймеров + + + if (idcon>0)// если есть подключения + { webSocket.textAll(jsonString);//{"id":"0","temperature":12.456787109375,"humidity":77.456787109375,"tim2":"18:15","ti + Serial.println(jsonString); + webSocket.textAll(jsonString2);//{"id":"2","tkom1":"20.0","hkom1":"30.0","batkom1":"4.10","timekom1" + Serial.println(jsonString2); + + String countUpdate = "{\"label3\":\"count\",\"value\":\"" + String(t10) + "\"}";//отправка строковой переменной время раб сервера + webSocket.textAll(countUpdate); + Serial.println(countUpdate); + delay(0); + String countUpdate2 = "{\"label3\":\"count2\",\"value\":\"" + String(timeserv) + "\"}";//отправка строковой переменной врем NTP + webSocket.textAll(countUpdate2); + Serial.println(countUpdate2); + } + } +//**************20sek end******************************* + + if((countVal>3600*2)&&(idcon==0))//прошло более 2 часов и нет подкл клиентов + { if(hour1!=3)res=1;//разрешение на перезагрузку сервака + + } + + + + + + } + esp_task_wdt_reset();//reset WDT сброс вотчдога +} diff --git a/WebSocket3Aqva/WiFi.ino b/WebSocket3Aqva/WiFi.ino new file mode 100644 index 0000000..c0ba0f1 --- /dev/null +++ b/WebSocket3Aqva/WiFi.ino @@ -0,0 +1,30 @@ +void WiFisetup() +{ + // Set the device as a Station and Soft Access Point simultaneously + + if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) { + Serial.println("STA Failed to configure"); + } + WiFi.mode(WIFI_AP_STA); + // Set device as a Wi-Fi Station + WiFi.begin(ssid, password); + digitalWrite(2, LOW); // светодиод погашен + + while (WiFi.status() != WL_CONNECTED) { + delay(1000); + Serial.println("Setting as a Wi-Fi Station.."); + } + digitalWrite(2, HIGH); // светодиод горит + + Serial.print("Station IP Address: "); + Serial.println(WiFi.localIP()); + Serial.print("Wi-Fi Channel: "); + Serial.println(WiFi.channel()); + + // Init ESP-NOW + if (esp_now_init() != ESP_OK) { + Serial.println("Error initializing ESP-NOW"); + return; + } + +} diff --git a/WebSocket3Aqva/data/akva.html b/WebSocket3Aqva/data/akva.html new file mode 100644 index 0000000..efaecc0 --- /dev/null +++ b/WebSocket3Aqva/data/akva.html @@ -0,0 +1,140 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Аквариум 1

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+ + +

Аквариум 2

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+ + +

Аквариум 3

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+
+

+ +
+ Время работы сервера: + 0:00 +

Count:0:00

+
+ + + +
+ +
+ + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/akva1.html b/WebSocket3Aqva/data/akva1.html new file mode 100644 index 0000000..6ddc178 --- /dev/null +++ b/WebSocket3Aqva/data/akva1.html @@ -0,0 +1,159 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + +
+ +
+

Аквариум 1

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+
................................................... +
+
+ таблица данных за сутки +
+ + + + + + + + + + + + + + + +
  Time  temperatura  light  fan
+ + +
+

+
+
+ + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/akva2.html b/WebSocket3Aqva/data/akva2.html new file mode 100644 index 0000000..05f7457 --- /dev/null +++ b/WebSocket3Aqva/data/akva2.html @@ -0,0 +1,160 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + +
+ +
+

Аквариум 2

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+
................................................... +
+
+ таблица данных за сутки +
+ + + + + + + + + + + + + + + + +
  Time  temperatura  light  fan
+
+ +
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/akva3.html b/WebSocket3Aqva/data/akva3.html new file mode 100644 index 0000000..6ae3557 --- /dev/null +++ b/WebSocket3Aqva/data/akva3.html @@ -0,0 +1,160 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + +
+ +
+

Аквариум 3

+
+
+

TEMPERATURE

°C

light

+
+
+

FAN

Time

+
+
+
................................................... +
+
+ таблица данных за сутки +
+ + + + + + + + + + + + + + + + +
  Time  temperatura  light  fan
+
+ +
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/akvadat.html b/WebSocket3Aqva/data/akvadat.html new file mode 100644 index 0000000..2eb0435 --- /dev/null +++ b/WebSocket3Aqva/data/akvadat.html @@ -0,0 +1,170 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + +
+ +
+

Аквариум

+ + + +
+ таблица данных за сутки +
+
................................................... +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  Time  temperatura1  temperatura2  temperatura3  light1  light2  light3  fan1  fan2  fan3
+ + +
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/akvagraf.html b/WebSocket3Aqva/data/akvagraf.html new file mode 100644 index 0000000..f89f800 --- /dev/null +++ b/WebSocket3Aqva/data/akvagraf.html @@ -0,0 +1,236 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Аквариум

+ + +

+

+

+ +

+

+

+
+ +
+ + + + +
+

+
+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/android-chrome-192x192.png b/WebSocket3Aqva/data/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f57d8514e6696efd5ecbdbe4b7273d9485d03e69 GIT binary patch literal 16648 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 RN&z`X4X|7|#Fz literal 0 HcmV?d00001 diff --git a/WebSocket3Aqva/data/apple-touch-icon.png b/WebSocket3Aqva/data/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..824530570ae5a1f3206560cb91f9659b0ae08fbe GIT binary patch literal 15012 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 S$#g2v3IQw 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�|0h8Uh%d-5U@^Le3O6s{&8xrJnOiv*Dw}*c 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 + + + + + + + + + + +

+ + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform.html b/WebSocket3Aqva/data/inform.html new file mode 100644 index 0000000..eef6bac --- /dev/null +++ b/WebSocket3Aqva/data/inform.html @@ -0,0 +1,230 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(запад)

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+ + + +
+ +
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform1.html b/WebSocket3Aqva/data/inform1.html new file mode 100644 index 0000000..87bc5ca --- /dev/null +++ b/WebSocket3Aqva/data/inform1.html @@ -0,0 +1,227 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+ + + + +
+

+
+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform2.html b/WebSocket3Aqva/data/inform2.html new file mode 100644 index 0000000..2d77d3c --- /dev/null +++ b/WebSocket3Aqva/data/inform2.html @@ -0,0 +1,229 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + + +
+ +
+

Комната1

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+ + + + +
+
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform3.html b/WebSocket3Aqva/data/inform3.html new file mode 100644 index 0000000..cb454cd --- /dev/null +++ b/WebSocket3Aqva/data/inform3.html @@ -0,0 +1,228 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Комната2

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+
+
+

+
+ + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform4.html b/WebSocket3Aqva/data/inform4.html new file mode 100644 index 0000000..7a6d5ba --- /dev/null +++ b/WebSocket3Aqva/data/inform4.html @@ -0,0 +1,226 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Коридор

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+
+
+

+
+ + + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform5.html b/WebSocket3Aqva/data/inform5.html new file mode 100644 index 0000000..98b0933 --- /dev/null +++ b/WebSocket3Aqva/data/inform5.html @@ -0,0 +1,227 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Балкон

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+

+

+ +

+

+

+
+ +
+
+
+

+
+ + + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform6.html b/WebSocket3Aqva/data/inform6.html new file mode 100644 index 0000000..1eaf986 --- /dev/null +++ b/WebSocket3Aqva/data/inform6.html @@ -0,0 +1,157 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Кухня

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/inform8.html b/WebSocket3Aqva/data/inform8.html new file mode 100644 index 0000000..6ab72a0 --- /dev/null +++ b/WebSocket3Aqva/data/inform8.html @@ -0,0 +1,151 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl.html b/WebSocket3Aqva/data/informtabl.html new file mode 100644 index 0000000..f03786c --- /dev/null +++ b/WebSocket3Aqva/data/informtabl.html @@ -0,0 +1,164 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(запад)

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+ +
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+ +
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl1.html b/WebSocket3Aqva/data/informtabl1.html new file mode 100644 index 0000000..4be36e4 --- /dev/null +++ b/WebSocket3Aqva/data/informtabl1.html @@ -0,0 +1,166 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + + +
+ +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+

+ +
................................................... +
+ +
+ + таблица температуры за сутки + +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl2.html b/WebSocket3Aqva/data/informtabl2.html new file mode 100644 index 0000000..1f9ed16 --- /dev/null +++ b/WebSocket3Aqva/data/informtabl2.html @@ -0,0 +1,162 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Комната1

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+ +

+ +
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl3.html b/WebSocket3Aqva/data/informtabl3.html new file mode 100644 index 0000000..573c695 --- /dev/null +++ b/WebSocket3Aqva/data/informtabl3.html @@ -0,0 +1,161 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Комната2

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+ +
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl4.html b/WebSocket3Aqva/data/informtabl4.html new file mode 100644 index 0000000..2c2de89 --- /dev/null +++ b/WebSocket3Aqva/data/informtabl4.html @@ -0,0 +1,162 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Коридор

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+ +
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/informtabl5.html b/WebSocket3Aqva/data/informtabl5.html new file mode 100644 index 0000000..f5fc450 --- /dev/null +++ b/WebSocket3Aqva/data/informtabl5.html @@ -0,0 +1,163 @@ + + + + +Информация + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Балкон

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

+ +
................................................... +
+
+ таблица температуры за сутки +
+ + + + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ + + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/mstile-150x150.png b/WebSocket3Aqva/data/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8550b9e569c4a4f631aa8a9137af2f8e9567c7 GIT binary patch literal 11333 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 + + + + + + + + + + +
+ +
+

ESP-Настройки таймера

+
+ + + + + +
+ + +
+ +
+

Таймер 1

+ +
    + +
    + + + + + + + +
    + +
  • on_1
  • +
  • off_1
  • +
  • on_2
  • +
  • off_2
  • +
  • on_3
  • +
  • off_3
  • +
  • on_4
  • +
  • off_4
  • +
  • on_5
  • +
  • off_5
  • + +
    + + + +
    +
+
+
+ + +
+

Таймер 2

+ +
    + +
    + + + + + + + +
    +
  • on_1
  • +
  • off_1
  • +
  • on_2
  • +
  • off_2
  • +
  • on_3
  • +
  • off_3
  • +
  • on_4
  • +
  • off_4
  • +
  • on_5
  • +
  • off_5
  • +
    + + + +
    +
+
+
+ + +
+

Таймер 3

+ +
    +
    + + + + + + + +
    + +
  • on_1
  • +
  • off_1
  • +
  • on_2
  • +
  • off_2
  • +
  • on_3
  • +
  • off_3
  • +
  • on_4
  • +
  • off_4
  • +
  • on_5
  • +
  • off_5
  • +
    + + + +
    +
+
+
+
+ +
+

+

+

+
+
+ Время работы сервера: + 0:00 +

Count:0:00

+
+ +
+

+

+

+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/WebSocket3Aqva/data/style.css b/WebSocket3Aqva/data/style.css new file mode 100644 index 0000000..177c32a --- /dev/null +++ b/WebSocket3Aqva/data/style.css @@ -0,0 +1,320 @@ +@charset "utf-8"; + + html {font-family: Arial; display: inline-block; text-align: center;} +body { + background-color: #C9C6C5; + color: #FFFFFF; + font-family: Arial, sans-serif; + font-size: 14px; + width: 100%; + margin-top: 5px; + background-image: url(fon.jpg); + position: static; + margin-left: 0px; +} + a{ + color: #FFFFFF; + margin-left: 17px; + } + a:visited { + color: #FFFFFF; /* Цвет посещенных ссылок */ + text-decoration: none; + margin-left: 17px; + } + a:active { + color: #A7F095; /* Цвет активных ссылок */ + margin-left: 17px; + } + a:hover { + color: #AFDAF4; /* Цвет ссылок при наведении мыши*/ + margin-left: 17px; + } +button { + padding: 10px 20px; + font: inherit; + transition: color 0s linear 2s; +} + +button:active { + color: #047F44; + transition-delay: 0s; +} + + +#header { + background: #F5DEB3; + width: 100%; +} + +#container { + background-color: #FFFFFF; + margin-right: auto; + margin-left: auto; + margin-bottom: auto; + text-align: center; + width: 80%; + height: 84px; + margin-top: 7px; + padding-top: 1px; +} + +#nav + { + background-color: #2F4468; + width: 100%; + color: #FFFFFF; + font-size: small; + margin-left: -18px; + margin-top: -3px; +} +#nav1 + { + background-color: #2F4468; + width: 100%; + color: #110FF8; + font-size: small; + margin-top: 64px; + margin-right: 64px; + margin-bottom: 64px; + margin-left: 64px; +} + + +#sidebar { + background-color: #8CA2AF; + float: left; + width: 20%; + position: static; + margin-top: -1px; + height: 420px; + min-width: 0px; +} + +#content { + background-color: #F8E6C1; + float: right; + width: 80%; + color: #14437A; + margin-top: -2px; + opacity: 0.91; +} +#content1 { + background-color: #F8E6C1; + width: 80%; + color: #14437A; + margin-right: auto; + margin-left: auto; + opacity: 0.91; + +} + +#clear { + clear: both; +} + +#footer { + background: #00BFFF; + width: 100%; + height: 40px; +} + + .topnav { + overflow: hidden; + background-color: #2f4468; + color: white; + font-size: 1.7rem; + height: 65px; + line-height: 3px; + +} +.top{ + overflow: hidden; + background-color: #8CA2AF; + color: white; + width: 100%; + +} +.top1{ + overflow: hidden; + background-color: #8CA2AF; + color: white; + width: 10%; + +} +.top2{ + overflow: hidden; + background-color: #B59D69; + color: white; + width: 100%; + +} + + .card.temperature { color: #fd7e14; } + .card.humidity { color: #1b78e2; } +.card.but { color: #3F97E8; } + + + .card { + background-color: #F9F9F7; + box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); +} + .cards { + max-width: 901px; + margin-right: auto; + margin-left: auto; + display: grid; + grid-gap: 2rem; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + min-height: 133px; +} + .reading { + font-size: 2.8rem; + +} + + + #navigation2 { + font-size: small; + color: #3E73A7; + float: left; + border-top-width: thick; + padding-left: 20px; +} +#navigation1 { + font-size: small; + color: #FFFFFF; + float: left; + border-top-width: thick; + padding-left: 20px; +} + + .times{ + font-size: xx-large; + margin-top: -50px; + background-color: #2F4468; + color: #FFFFFF; + height: 57px; + line-height: 56px; + } + .manth{ + color: #02087C; + margin-top: 0px; + background-color: #EF7320; + height: 2pc; + font-size: large; + padding-top: 2px; + opacity: 1; + line-height: 3%; + } +.servertime { + margin-top: 37px; +} +.data{ + color: #2F4468; + background-color: #FFFFFF; + margin-top: -93px; + height: 146px; + font-size: 92px; + line-height: 97px; +} +.week{ + color: #000006; + margin-top: -91px; + background-color: #EF7320; + height: 2pc; + font-size: large; + line-height: 30px; + +} +.levnav{ + font-size: large; + color: #FFFFFF; + margin-top: 5px; + margin-left: 25px; + line-height: 11px; + margin-right: 31px; + text-decoration: none; + text-align: left; + +} +#containerinf { + background-color: #B59D69; + margin-right: auto; + margin-left: auto; + margin-bottom: auto; + text-align: center; + width: 80%; + height: 84px; + margin-top: 7px; + padding-top: 1px; + opacity: 1; +} +#contentinfo { + background-color: #ECD9B1; + width: 100%; + color: #14437A; + margin-top: -2px; + opacity: 0.83; +} +.contentgraf { + background-color: #FFFFFF; + width: 100%; + color: #14437A; + margin-top: -2px; + +} +#tablinfo{ + background-color: #ECD9B1; + width: 35%; + color: #14437A; + margin-top: 11px; + opacity: 0.83; + text-align: center; + margin-right: auto; + margin-left: auto; + +} + .switch { + position: relative; + display: inline-block; + width: 120px; + height: 68px} + .switch input {display: none} + .slider { + position: absolute; + top: 0; + left: 0; + right: 0; bottom: 0; + background-color: #F0D2A8; + border-radius: 34px} + .slider:before { + position: absolute; + content: ""; + height: 52px; + width: 52px; + left: 8px; + bottom: 8px; + background-color: #fff; + -webkit-transition: .4s; + transition: .4s; + border-radius: 68px} + input:checked+.slider {background-color: #2196F3} + input:checked+.slider:before {-webkit-transform: translateX(52px); + -ms-transform: translateX(52px); transform: translateX(52px)} +.slider2 { -webkit-appearance: none; margin: 14px; width: 360px; height: 15px; background: #EAD7AF; + outline: none; -webkit-transition: .2s; transition: opacity .2s;} +.slider2::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 35px; height: 35px; background: #003249; cursor: pointer;} +.slider2::-moz-range-thumb { width: 15px; height: 35px; background: #003249; cursor: pointer; } +input[type=time] { + border: #01094B; + + color: #01094B; + padding: 2px; + margin: 3px; + font-size: 22px; + font-family: helvetica; + width: 93px; +} + + + diff --git a/WebSocket3Aqva/data/timer.html b/WebSocket3Aqva/data/timer.html new file mode 100644 index 0000000..3195800 --- /dev/null +++ b/WebSocket3Aqva/data/timer.html @@ -0,0 +1,289 @@ + + + + + ESP-NOW DASHBOARD + + + + + + + + + + + + +
+
+

ESP-Домашний сервер

%dataserv%

+ + + + + + +
+ + +
+
+

Таймер

+
+ + +
+

%timer1% минут

+

+ %BUTTONPLACEHOLDER1% +
+ +
+

%timer2% минут

+

+ %BUTTONPLACEHOLDER2% +
+ +
+ %BUTTONPLACEHOLDER3% +
+
+ %BUTTONPLACEHOLDER4% +
+ +
+ + + +
+

+

+

+
+
+
+ +
+ + 0:00 +
+ + +
+

+

+

+
+ +
+ + + + + + + + diff --git a/WebSocket3Aqva/data/upravlenie.html b/WebSocket3Aqva/data/upravlenie.html new file mode 100644 index 0000000..2832aeb --- /dev/null +++ b/WebSocket3Aqva/data/upravlenie.html @@ -0,0 +1,192 @@ + + + + + ESP-NOW DASHBOARD + + + + + + + + + + + + +
+
+

ESP-Домашний сервер

%dataserv%

+ + + + + + +
+ + +
+
+

Управление

+
+
+

TEMPERATURE

°C

Time

+
+
+

HUMIDITY

%

Time

+
+
+ %BUTTONPLACEHOLDER1% +
+ +
+ %BUTTONPLACEHOLDER2% +
+ +
+ %BUTTONPLACEHOLDER3% +
+
+ %BUTTONPLACEHOLDER4% +
+ +
+ + + +
+

+

+

+
+
+
+ +
+ + 0:00 +
+ + +
+

+

+

+
+ +
+ + + + + + + + diff --git a/WebSocket3Aqva/data/upravlenie1.html b/WebSocket3Aqva/data/upravlenie1.html new file mode 100644 index 0000000..53a1b7d --- /dev/null +++ b/WebSocket3Aqva/data/upravlenie1.html @@ -0,0 +1,109 @@ + + + + + ESP-NOW DASHBOARD + + + + + + + + + + + + +
+
+

ESP-Домашний сервер

%dataserv%

+ + + + + + +
+ + +
+
+

Управление

+
+
+

TEMPERATURE

°C

Time

+
+
+

HUMIDITY

%

Time

+
+ + +
+ + + +
+

+

+

+
+
+
+ +
+
+

+

+

+
+
+
+
+ +
+ + 0:00 +
+ + +
+

+

+

+
+ +
+ + + + + + + + diff --git a/WebSocket3Aqva/nrf.ino b/WebSocket3Aqva/nrf.ino new file mode 100644 index 0000000..86b60df --- /dev/null +++ b/WebSocket3Aqva/nrf.ino @@ -0,0 +1,68 @@ +void Nrfsetup() +{ + if (! radio.begin()) + { + // if(!SD.begin()){ + Serial.println("Radio is failed"); + // return; + } +else +{ + Serial.println("Radio begin"); +} + radio.setChannel(100); + radio.setPayloadSize(16);//должно быть16 + radio.setAddressWidth(5); + radio.setAutoAck( 0 ,false); + radio.setCRCLength(RF24_CRC_16); + radio.setDataRate(RF24_2MBPS); + radio.openReadingPipe(0,pip); + radio.startListening(); +} + +void nrf() +{ + if (radio.available()){ + radio.read(msg,16); + esp_task_wdt_reset();//reset WDT + Serial.println(msg); + parsmsg(); + delay(0); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(0); + JSstringK();//создаем строку для сайта + delay(0); + + + if(nt==2){saveul();}//t9 T2 + if(nt==3){savebalk();}//t1 T3 + if(nt==4){savek2();}//t2 T4 + if(nt==5){savek1();}//t3 T5 + if(nt==7){savekor();}//t5 T6 + if(nt==9){saveakva();}//t7 T7 + delay(0); + if (radio.available()){radio.read(msg,16);} + } + //t1+138c347v524h5 балкон + //t2+243c401v528h моя комната +// t3+230c357v469h зал +// t5+230c357v469h коридор +//9d+088h866s00v улица восток +//t7+247c251c243c024 t1 t2 t3 akva + +delay(0); + +} diff --git a/WebSocket3Aqva/ntp.ino b/WebSocket3Aqva/ntp.ino new file mode 100644 index 0000000..13a37ac --- /dev/null +++ b/WebSocket3Aqva/ntp.ino @@ -0,0 +1,140 @@ +void ntp() + { + // while(!timeClient.update()) { + // timeClient.forceUpdate(); + //} + Serial.println("NTP"); +ntp_on=0; +if(!timeClient.update()) { + for(int i=0; i<2 && !timeClient.update(); i++) + {timeClient.forceUpdate(); + if(i<1)//проверка подкл к NTP + {ntp_on=1; + } + else + { + ntp_on=0; + } + } + } + else{ + ntp_on=1; + } + + +//если подкл +if(ntp_on==1) + { // The formattedDate comes with the following format: + // 2018-05-28T16:00:13Z + // We need to extract date and time + // formattedDate = timeClient.getFormattedDate(); + formattedTime =timeClient.getFormattedTime(); + Serial.println(formattedTime); + Serial.println("NTP3"); +// getDay +//getHours +//getMinutes +//getSeconds +//getFormattedTime +// formattedDate =timeClient.getFormattedDate(); + // int splitT = formattedDate.indexOf("T"); +// dayStamp = formattedDate.substring(0, splitT); +// Serial.println(timeClient.getDay()); + + // Extract time + // timeStamp = formattedDate.substring(splitT+1, formattedDate.length()-1); +// Serial.println("ntp"); +// Serial.println(timeClient.getEpochTime()); + stamp.getDateTime(timeClient.getEpochTime()); +EpochTime=timeClient.getEpochTime(); + Serial.println(EpochTime); + // забираем вот так +// Serial.println(stamp.year); + Serial.println(stamp.month); + Serial.println(stamp.day); + // Serial.println(stamp.hour); + // Serial.println(stamp.minute); + // Serial.println(stamp.second); + Serial.println(stamp.dayOfWeek); + timeserv=formatTimeDigits(stamp.hour,stamp.minute); + Serial.println("time"); + Serial.println(timeserv); + //dataserv=formatDateDigits(stamp.day, stamp.month, stamp.year); + //***************************Из ntp в ds 3231************************************ + DateTime now = rtc.now(); +if((stamp.day==now.day())&&(stamp.hour==now.hour())) +{ rtc.adjust(DateTime(stamp.year,stamp.month, stamp.day, stamp.hour,stamp.minute,stamp.second)); + Serial.println("NTP time write"); +} + +hour1=stamp.hour; +min1=stamp.minute; + + dataserv=stamp.day; + munthserv=strm[stamp.month-1] ; + weekserv=strweek[stamp.dayOfWeek]; +// tweekday=stamp.dayOfWeek;//1-7 +//Serial.println(timeserv); +//Serial.println(dataserv); + } +else +{Serial.println("NTP not c0nnect");//EpochTime=10983 3:03:03 + //EpochTime=EpochTime;//если NTP не ответил читаем EpochTime с СД карты +} + +} + +char *formatTimeDigits(int hour, int minute) +{ +char *time_str = new char[5]; +time_str[0] = '0' + (hour / 10); +time_str[1] = '0' + (hour % 10); +time_str[2] = ':'; +time_str[3] = '0' + (minute / 10); +time_str[4] = '0' + (minute % 10); +time_str[5] = '\0'; + +return time_str; +} + +char *formatDateDigits(int date, int mounth, int year) +{ +char *date_str = new char[9]; + +date_str[1] = '0' + (date % 10); +date_str[2] = '/'; +date_str[0] = '0' + (date / 10); +date_str[3] = '0' + (mounth / 10); +date_str[4] = '0' + (mounth % 10); +date_str[5] = '/'; +date_str[6] = '0' + ((year % 100) / 10); +date_str[7] = '0' + (year % 10); +date_str[8] = '\0'; + +return date_str; +} + +void ntphome() +{DateTime now = rtc.now(); + // stamp.getDateTime(timeClient.getEpochTime()); + // timeserv=formatTimeDigits(stamp.hour,stamp.minute); + timeserv=formatTimeDigits(now.hour(),now.minute()); + // hour1=stamp.hour; + hour1=now.hour(); +//min1=stamp.minute; +min1=now.minute(); + +// dataserv=formatDateDigits(stamp.day, stamp.month, stamp.year); + //dataserv=stamp.day; + dataserv=now.day(); + data1=now.day(); + munthserv=strm[now.month()-1] ; + + weekserv=strweek[now.dayOfTheWeek()]; + + tweekday=now.dayOfTheWeek(); +month1=now.month(); + year1=now.year(); + Serial.println("time"); + Serial.println(timeserv); +} diff --git a/WebSocket3Aqva/outconvert.ino b/WebSocket3Aqva/outconvert.ino new file mode 100644 index 0000000..157016e --- /dev/null +++ b/WebSocket3Aqva/outconvert.ino @@ -0,0 +1,74 @@ +void outconvert() +{ int led; + bool outl; + int j=0; + for (int i = 0; i < ledout.length() ; i++) {//перебираем строку данных {"ido":"4","out":"1"} + + if (ledout[i]==':') + {j++; + if (j==1)//первое : + { if (ledout[i+3]!='\"') + { + led=int(ledout[i+2] - '0')*10+int(ledout[i+3] - '0'); + } + else + { led=int(ledout[i+2] - '0'); + } + } + if (j==2)//второе : + {outl=int(ledout[i+2] - '0'); + } + } + + + } + + switch (led) { + case 4: + + state1=outl; + gpio[0]=outl; + gpio[3]=0; + break; + case 26: + state2=outl; + gpio[1]=outl; + gpio[3]=0; + // BTimer2[0]=3; + break; + case 27: + state3=outl; + gpio[2]=outl; + gpio[3]=0; + // BTimer3[0]=3; + break; + case 55: + //таймер или кнопки + //state1=outl; + gpio[3]=outl; + + break; + } + if( gpio[3]==0)//1-управление выходами через таймер 0- через кнопки + { BTimer1[0]=3; + BTimer2[0]=3; + BTimer3[0]=3; + } + else + { + BTimer1[0]=2; + BTimer2[0]=2; + BTimer3[0]=2; + btime(); + } + digitalWrite(led, outl); + Serial.print(state1); + Serial.print(state2); + Serial.println(state3); + Serial.print("led"); + Serial.print(led); + Serial.print(":"); + Serial.println(outl); + + } + diff --git a/WebSocket3Aqva/parsmsg.ino b/WebSocket3Aqva/parsmsg.ino new file mode 100644 index 0000000..917725f --- /dev/null +++ b/WebSocket3Aqva/parsmsg.ino @@ -0,0 +1,394 @@ + +void parsmsg() +{ +//int tkom1=0;//температура +//int hkom1=0;//влажность +//int batkom1=0; +//String timekom1;//время прихода данных комната1 + +//int tkom2=0; +//int hkom2=0; +//int batkom2=0; +//String timekom2; + +//int tkor=0; +//int hkor=0; +//int batkor=0; +//String timekor; + +//int tbal=0; +//int hbal=0; +//int batbal=0; +//String timebal; + +//String timebal; + //t1+138c347v524h5 балкон + //t2+243c401v528h моя комната +// t3+230c357v469h зал +// t5+230c357v469h коридор +//9d+088h866s00v улица восток +//timeul1 +//tul1 +//hul1 +//osv1 +//char msg[16];принятое сообщение +int tdat;//температура +int hdat;//влажность +int vdat;//напряж батареи датчика +int zndat; +int osv; + char token9[] = "9d";//улица + char token11[] = "t1";//датчики + char token12[] = "t2";//датчики + char token13[] = "t3";//датчики + char token14[] = "t4";//датчики + char token15[] = "t5";//датчики + char token17[] = "t7";//датчики akva + + int n=0; + int p=0; + boolean chet=0; +char c ; + delay(0); +//*************************** +Serial.println (msg); +for (int j=0 ; j<15 ;j++) +{ c=msg[j];//принятая с премника перемнная + + + if (p==9) + { if (c==token9[1]){p=99;}//данные с ул датчика восток + else{ + p=0;} + } + if (p==101)//cравнение второго символа на соответствие t 1 + { if (c==token11[1]){p=111;} + + } + if (p==101)//cравнение второго символа на соответствие t 2 + { if (c==token12[1]){p=112;} + + } + if (p==101)//cравнение второго символа на соответствие t 3 + { if (c==token13[1]){p=113;} + + } + if (p==101)//cравнение второго символа на соответствие t 4 + { if (c==token14[1]){p=114;} + + } + if (p==101)//cравнение второго символа на соответствие t 4 + { if (c==token17[1]){p=117;} + + } + if (p==101)//cравнение второго символа на соответствие t 5 + { if (c==token15[1]){p=115;} + else{ + p=0;} + } + //************************************************* + delay(0); + if (p==99) + {// myFile.print(c);//d+237h895s05v + nt=2; + timeul1=timeserv;//время получения данных + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=2;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5){ + tdat=(c-48)+tdat; + + if(zndat==1){tul1="-"+String (tdat/10)+"."+String (tdat%10); //температура знак -230 -23.0 + } + else + {tul1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + } + if (n==7){hdat=(c-48)*100;}//влажность + if (n==8){hdat=(c-48)*10+hdat;} + if (n==9){ + hdat=(c-48)+hdat; + hul1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + if (n==11){osv=10*(c-48);}//освещенность + if (n==12) + {osv=osv+(c-48); + if(osv>99){osv=99;} + osv1=String (osv)+"%"; + }//sun + // hourdu=t.hour;//время прихода данных час + // mindu=t.min;//мин + + } + //***************************************** + delay(0); + //*****************датчики температуры переносные*********************** +//************************T1**************************************************** + if (p==111) //выделение данных из принятой строки + { timebal=timeserv;//время получения данных + nt=3; +//byte ntdat;номер датчика +//byte zndat;знак температуры 0+ +//int tdat;температура +//int hdat;влажность +//int vdat;напряж батареи датчика + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tbal=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batbal=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hbal=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } + delay(0); +//**************************************** T2 + if (p==112) //выделение данных из принятой строки + {timekom2=timeserv;//время получения данных + nt=4; + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkom2=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkom2=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkom2=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } + delay(0); + //**************************************** + //**************************************** T3 + if (p==113) //выделение данных из принятой строки + {// myFile.print(c);//t2+103c375v299h9 + nt=5; + timekom1=timeserv;//время получения данных + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkom1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkom1=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkom1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } +//**************************************** T4 **************************** + /* if (p==114) //выделение данных из принятой строки + {// myFile.print(c);//t1+103c375v299h9 + ntdat=4; + if(chet==0) + { if( hourd4==t.hour) + {fh=1; + } + else + {fh=0; + } + chet=1; + } + hourd4=t.hour; + mind4=t.min; +//byte ntdat;номер датчика +//byte zndat;знак температуры 0+ +//int tdat;температура +//int hdat;влажность +//int vdat;напряж батареи датчика + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + for (int u =22 ; u >= 0; u = u--) + { + t4[u+1]=t4[u]; + } + if(zndat==1)//- + {t14=tdat+1000; + t4[0]=t14; + } + else + {t14=tdat; + t4[0]=t14; + } + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + bat[3]=vdat; + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + for (int u =22 ; u >= 0; u = u--) + { + h4[u+1]=h4[u]; + } + h4[0]=hdat; + + } + if (n==13) + {hdat=(c-48)+hdat; + h14=hdat; + } + + }*/ + delay(0); + //**************************************** T5 + if (p==115) //выделение данных из принятой строки + {// myFile.print(c);//t2+103c375v299h9 + timekor=timeserv;//время получения данных + nt=7; + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkor=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkor=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkor=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } + delay(0); +//******************************************************************************* + //**************************************** T7 + if (p==117) //выделение данных из принятой строки + {// myFile.print(c);//t7+247c251c243c024 + timeakva=timeserv;//время получения данных + nt=9;// номер терм для сайта + n++; + if (n==3) {tdat=(c-48)*100;} //температура t1 + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + takva1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//t2 + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + takva2=String (vdat/10)+"."+String (vdat%10);//t2 + } + if (n==11){hdat=(c-48)*100;}//t3 + if (n==12){hdat=(c-48)*10+hdat;} + if (n==13) + {hdat=(c-48)+hdat; + takva3=String (hdat/10)+"."+String (hdat%10);//t3 + + } + + + } + delay(0); +//******************************************************************************* + +if ((c==token9[0])&&(p==0)){p=9;} +if ((c==token11[0])&&(p==0)){p=101;}//cравнение первого символа на соответствие t +}//for +//************************************************* + + +}//void pars diff --git a/WebSocket3Aqva/processor.ino b/WebSocket3Aqva/processor.ino new file mode 100644 index 0000000..4e6495e --- /dev/null +++ b/WebSocket3Aqva/processor.ino @@ -0,0 +1,60 @@ +String processor(const String& var){ + //Serial.println(var); + if(var == "BUTTONPLACEHOLDER1"){//вставка на странице(если в HTML нашли BUTTONPLACEHOLDER1 то вставляем кнопки) + String buttons =""; + //отправка значения состояния перключателей checked- включен ""-выключен + buttons+= "

Выход 1

"; + + return buttons; + } + if(var == "BUTTONPLACEHOLDER2"){//вставка на странице(если в HTML нашли BUTTONPLACEHOLDER2 то вставляем кнопки) + String buttons =""; + //отправка значения состояния перключателей checked- включен ""-выключен + + buttons += "

Выход 2

"; + + return buttons; + } + if(var == "BUTTONPLACEHOLDER3"){//вставка на странице(если в HTML нашли BUTTONPLACEHOLDER3 то вставляем кнопки) + String buttons =""; + //отправка значения состояния перключателей checked- включен ""-выключен + + buttons += "

Выход 3

"; + return buttons; + } + if(var == "BUTTONPLACEHOLDER4"){//вставка на странице(если в HTML нашли BUTTONPLACEHOLDER4 то вставляем кнопки) + String buttons =""; + //отправка значения состояния перключателей checked- включен ""-выключен + //кнопка таймера (если вкл то выходы работают по таймерам если нет то по кнопке + buttons += "

Таймер

"; + return buttons; + } + if(var == "BUTTON"){//вставка на странице(если в HTML нашли BUTTON то вставляем кнопки) + String buttons =""; + //отправка значения состояния перключателей checked- включен ""-выключен + buttons+= "

Output - GPIO 4

"; + buttons += "

Output - GPIO 26

"; + buttons += "

Output - GPIO 27

"; + return buttons; + } + return String(); +} + +//************************************************ + +String outputState(int out){ + if(digitalRead(out)){ + return "checked"; + } + else { + return ""; + } +} +String outputState55(int out){ + if(gpio[3]==1){ + return "checked"; + } + else { + return ""; + } +} diff --git a/WebSocket3Aqva/servertime.ino b/WebSocket3Aqva/servertime.ino new file mode 100644 index 0000000..f09c84d --- /dev/null +++ b/WebSocket3Aqva/servertime.ino @@ -0,0 +1,30 @@ +void vrem()//время работы сервера +{ + +int time17 = millis()/1000; +delay(0); +if (time17/60/60<10) { Serial.print ("0"); } +Serial.print (time17/60/60); +Serial.print (":"); +if (time17/60%60<10) { Serial.print ("0"); } +Serial.print ((time17/60)%60); +Serial.print (":"); +if (time17%60<10) { Serial.print ("0"); } +Serial.println (time17%60); +delay(0); +String q1=String(time17/60/60, DEC); +delay(0); +String q2=String((time17/60)%60, DEC); +delay(0); +String q3=String(time17%60, DEC); +delay(0); +if ((time17/60)%60<10) + { + t10=String(time17/60/60, DEC)+":"+"0"+String((time17/60)%60, DEC); + } + else + {t10=String(time17/60/60, DEC)+":"+String((time17/60)%60, DEC); + } + delay(0); +//t10 =q1+":"+q2+":"+q3 ; +} diff --git a/WebSocket3Aqva/timer.ino b/WebSocket3Aqva/timer.ino new file mode 100644 index 0000000..38bf1a2 --- /dev/null +++ b/WebSocket3Aqva/timer.ino @@ -0,0 +1,41 @@ +void settimer() { + + +/* LED pin */ +//int led = 14; +/* LED state */ +//volatile byte state = LOW; + // Use 1st timer of 4 (counted from zero). + // Set 80 divider for prescaler (see ESP32 Technical Reference Manual for more + // info). + timer = timerBegin(2, 80, true); + + /* Attach onTimer function to our timer */ + // timerAttachInterrupt(timer, &onTimer, true); + timerAttachInterrupt(timer, &onTimer, true); + /* Set alarm to call onTimer function every second 1 tick is 1us + => 1 second is 1000000us */ + /* Repeat the alarm (third parameter) */ + timerAlarmWrite(timer, 5000000, true); + /* Start an alarm */ + timerAlarmEnable(timer); + // Serial.println("start timer"); + +} + +void IRAM_ATTR onTimer() +{ + EpochTime=EpochTime+5; + esp_task_wdt_reset();//reset WDT +//Serial.print("EpochTime="); + //Serial.println(EpochTime); + // Increment the counter and set the time of ISR +// portENTER_CRITICAL_ISR(&timerMux); +// isrCounter++; +// lastIsrAt = millis(); +// portEXIT_CRITICAL_ISR(&timerMux); + // Give a semaphore that we can check in the loop +// xSemaphoreGiveFromISR(timerSemaphore, NULL); + // It is safe to use digitalRead/Write here if you want to toggle an output + +} diff --git a/WebSocket3Aqva/timerconvert.ino b/WebSocket3Aqva/timerconvert.ino new file mode 100644 index 0000000..1218b85 --- /dev/null +++ b/WebSocket3Aqva/timerconvert.ino @@ -0,0 +1,195 @@ +void timerconvert() +{ //timerout= {"id":"tout","t1":"100","t2":"010","t3":"001"} подкл таймеров по выходов + //String timerdata + //{"timer1":["01:00","09:00","10:00","11:00","","","","","",""],"timer2":[ +// String timerweek={"id":"week","timer1_week":"0111100","timer2_week":"1000011","timer3_week":"0101010"}; + //(str[1] = 't') + //uint16_t BTimer1 [11] = {3, 390, 450, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}; // массивы всех таймеров для суточных каналов (1 - 4) 0-й элемент отвечает за состояние канала (1 - вкл/ 0 - выкл/ 2 - авто)) + if (timerdata.startsWith("{\"timer1"))//парсим "timer1":["01 + {tdat=0; + int timer=0;//номер таймера + //int index =1;// индекс массива таймера + // Serial.println("timer"); + // Serial.println(timerdata.length()); + // Serial.println(timerdata[12]); + for (int i = 0; i < timerdata.length() ; i++) {//перебираем строку данных + + if (timerdata[i]=='[') + {timer++; + //******************************************************************** + if (timer==1) + {i=i+2; + for (int j = 1; j < 11 ; j++){ + if (timerdata[i]!='\"') + { + BTimer1 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0'))); + i=i+8; + //Serial.println(BTimer1 [j]); + } + else + {i=i+3; + BTimer1 [j]=1440;//время неустановлено + } + // Serial.println(timerdata[i]); + + } + + } + //****************************************************************************** + if (timer==2) + {i=i+2; + for (int j = 1; j < 11 ; j++){ + + if (timerdata[i]!='\"') + { + BTimer2 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0'))); + i=i+8; + //Serial.println(BTimer1 [j]); + } + else + {i=i+3; + BTimer2 [j]=1440; + } + // Serial.println(timerdata[i]); + + } + + } + if (timer==3) + {i=i+2; + for (int j = 1; j < 11 ; j++){ + if (timerdata[i]!='\"') + { + BTimer3 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0'))); + i=i+8; + //Serial.println(BTimer1 [j]); + } + else + {i=i+3; + BTimer3 [j]=1440; + } + // Serial.println(timerdata[i]); + + } + // Serial.println(" "); + // for(int a = 0; a < 11; a++) + // { Serial.print(BTimer3[a]); + // } + // Serial.println(" "); + } + } + + } + + } + + + //****************************************************************************************** + if (timerweek.startsWith("{\"id\":\"week"))//парсим {"id":"week","timer1_week":"0111100" + {tweek=0; + int timer=0;//номер таймера + // Serial.println("week"); + // Serial.println(timerweek.length()); + for (int i = 0; i < timerweek.length() ; i++) {//перебираем строку данных + if (timerweek[i]==':') + {timer++; + if (timer==2)//данные таймера1 идут после вторых двоеточий + {i=i+2; + for (int j = 0; j < 7 ; j++){ + weekTimer1 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]= + } + } + if (timer==3) + {i=i+2; + for (int j = 0; j < 7 ; j++){ + weekTimer2 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]= + } + } + if (timer==4) + {i=i+2; + for (int j = 0; j < 7 ; j++){ + weekTimer3 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]= + } + Serial.print("weekTimer3"); + for(int a = 0; a < 7; a++) + { Serial.print(weekTimer3[a]); + } + Serial.println(""); + //Serial.println(""); + // Serial.print("tweekday"); + //Serial.println(tweekday); + } + } + } + } + // weekTimer1 [7]={0,0,0,0,0,0,0};//недельные установки t1 + if(weekTimer1 [tweekday-1]==1) + {BTimer1 [0]=2;//управляем таймером + }else + { + BTimer1 [0]=3;//управляем кнопками + } + if(weekTimer2 [tweekday-1]==1) + {BTimer2 [0]=2;//управляем таймером + }else + { + BTimer2 [0]=3;//управляем кнопками + } + if(weekTimer3 [tweekday-1]==1) + {BTimer3 [0]=2;//управляем таймером + }else + { + BTimer3 [0]=3;//управляем кнопками + } + Serial.print("BTimer1 [0]:"); + Serial.println(BTimer1 [0]); + Serial.print("BTimer2 [0]:"); + Serial.println(BTimer2 [0]); + Serial.print("BTimer3 [0]:"); + Serial.println(BTimer3 [0]); + //****************************************************************************************** + if (timerout.startsWith("{\"id\":\"tout"))//парсим timerout= {"id":"tout","t1":"100","t2":"010","t3":"001"} подкл таймеров по выходов + {//tuot=0; + int timer=0;//номер таймера + // Serial.println("timerout"); + // Serial.println(timerout.length()); + for (int i = 0; i < timerout.length() ; i++) {//перебираем строку данных + if (timerout[i]==':') + {timer++; + if (timer==2)//данные таймера1 идут после вторых двоеточий + {i=i+2; + for (int j = 0; j < 3 ; j++){ + gpioTimer1[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer1 [3]={1,0,0}; + } + } + if (timer==3) + {i=i+2; + for (int j = 0; j < 3 ; j++){ + gpioTimer2[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer2 [3]={1,1,0}; + } + } + if (timer==4) + {i=i+2; + for (int j = 0; j < 3 ; j++){ + gpioTimer3[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer3 [3]={1,1,0}; + } + Serial.println(""); + Serial.print("gpioTimer1"); + for(int a = 0; a < 3; a++) + { Serial.print(gpioTimer1[a]); + } + Serial.println(""); + } + } + } + } + current_time = hour1 * 60 + min1;//настройка выходов в соот с таймерами + for (int i = 0; i <= 1439; i++) { + if (current_time > 1439) current_time = 0; + state1 = main_log(BTimer1, state1); + state2 = main_log(BTimer2, state2); + state3 = main_log(BTimer3, state3); + current_time++; + } + btime(); +} diff --git a/WebSocket3Aqva/web.ino b/WebSocket3Aqva/web.ino new file mode 100644 index 0000000..4f939ae --- /dev/null +++ b/WebSocket3Aqva/web.ino @@ -0,0 +1,69 @@ +// Correct led start state. Changed all new led bits to prefix new... +void handleRoot(AsyncWebServerRequest *request) { + +request->send(200, "text/html", R"HTML( + + + + + +

ESP32 Websocket Example - Client to Server

+

With LED status update.

+ +

LED Status:

+ +

LED Status:

+

Count:0:00

+

Count:0:00

+

+
+ + + + +)HTML"); +} // END OF void handleRoot(AsyncWebServerRequest *request) diff --git a/WebSocket3Aqva/wrpin.ino b/WebSocket3Aqva/wrpin.ino new file mode 100644 index 0000000..9b9998f --- /dev/null +++ b/WebSocket3Aqva/wrpin.ino @@ -0,0 +1,6 @@ +void writepin() +{delay(50); + digitalWrite(5, HIGH); +delay(10); + digitalWrite(5, LOW); +} diff --git a/esp327nrfSDWDT3/JSstring.ino b/esp327nrfSDWDT3/JSstring.ino new file mode 100644 index 0000000..4250f0b --- /dev/null +++ b/esp327nrfSDWDT3/JSstring.ino @@ -0,0 +1,129 @@ +void JSstringU() +{ + board["id"] = incomingReadings.id; + +if(flread==0) +{ + board["temperature"] =ts; +// t1 = incomingReadings.temp; + board["humidity"] =hs; + board["tim2"] = tim2; + flread=1; +} + else + {board["temperature"] =incomingReadings.temp; +// t1 = incomingReadings.temp; + board["humidity"] =incomingReadings.hum; + if(min1<10) + { + board["tim2"] = String(hour1)+":0"+String(min1); + } + else + { + board["tim2"] =String(hour1)+":"+String(min1); + } + } + + + board["tim3"] = tim3; + board["dataserv"] = dataserv; + board["timeserv"] = timeserv; + board["munthserv"] = munthserv; + board["weekserv"] = weekserv; + board["timev"] = timev; + + // jsonString = JSON.stringify(board); + jsonString = JSON.stringify(board);//{"id":2,"temperature":9.6733450317382812,"humidity":50.41815185546875,"tim2":"12:02","dataserv":"12","timeserv":"15:30","munthserv":"январь",weekserv:"среда"} + // events.send(jsonString.c_str(), "new_readings", millis());//обновление веба текущая температура + Serial.println (jsonString); + + if(wright>360)//запись на sd каждые 30 минут 60*30/5 каждый тик 5сек +{String String2=jsonString2+"\n"; +//appendFile(SD, "/thkom.txt", String2.c_str());//добавление на инфы в файл + writeFile(SD, "/thkom1.txt", jsonString2.c_str());//записываем в этот файл последние данные для счит после сброса + writeFile(SD, "/thku1.txt", jsonString.c_str());//записываем в этот файл последние данные NOW для счит после сброса + +//wright=0; +} +} + + +void JSstringK() +{ board2["tkom1"] = tkom1; + board2["hkom1"] = hkom1; + board2["batkom1"] = batkom1; + board2["timekom1"] = timekom1; + board2["tkom2"] = tkom2; + board2["hkom2"] = hkom2; + board2["batkom2"] = batkom2; + board2["timekom2"] = timekom2; + board2["tkor"] = tkor; + board2["hkor"] = hkor; + board2["batkor"] = batkor; + board2["timekor"] = timekor; + board2["tbal"] = tbal; + board2["hbal"] = hbal; + board2["batbal"] = batbal; + board2["timebal"] = timebal; + board2["tul1"] = tul1; + board2["hul1"] = hul1; + board2["osv1"] = osv1; + board2["timeul1"] = timeul1; +jsonString2 = JSON.stringify(board2); + Serial.println (jsonString2); +//"new_datatemp" +//events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба +// writeFile(SD, "/thkom.txt", jsonString2.c_str()); + + + + + + + + + + + + + + + +if(wright>360)//запись на sd каждые 30 минут 60*30/5 каждый тик 5сек +{esp_task_wdt_reset();//reset WDT + board["temperature"] =incomingReadings.temp; +// t1 = incomingReadings.temp; + board["humidity"] =incomingReadings.hum; + if(min1<10) + { + board["tim2"] = String(hour1)+":0"+String(min1); + } + else + { + board["tim2"] =String(hour1)+":"+String(min1); + } + + + + board["tim3"] = tim3; + board["dataserv"] = dataserv; + board["timeserv"] = timeserv; + board["munthserv"] = munthserv; + board["weekserv"] = weekserv; + board["timev"] = timev; + + // jsonString = JSON.stringify(board); + jsonString = JSON.stringify(board); + + + + + String String2=jsonString2+"\n"; + esp_task_wdt_reset();//reset WDT +//appendFile(SD, "/thkom.txt", String2.c_str());//добавление на инфы в файл + writeFile(SD, "/thkom1.txt", jsonString2.c_str());//записываем в этот файл последние данные для счит после сброса + writeFile(SD, "/thku1.txt", jsonString.c_str());//записываем в этот файл последние данные NOW для счит после сброса + ESP.restart(); +wright=0; +} +} diff --git a/esp327nrfSDWDT3/SD.ino b/esp327nrfSDWDT3/SD.ino new file mode 100644 index 0000000..8a5bc0b --- /dev/null +++ b/esp327nrfSDWDT3/SD.ino @@ -0,0 +1,183 @@ +void sdlist() +{ + //listDir(SD, "/", 0); + //listDir(SD, "/", 0); + //delay(100); +// createDir(SD, "/mydir");//создать директорию (папку) +// delay(100); +// listDir(SD, "/", 0); +// delay(100); +// removeDir(SD, "/mydir"); + //delay(100); +// listDir(SD, "/", 2); +// delay(100); +// writeFile(SD, "/hello.txt", "Hello "); +// delay(100); +// appendFile(SD, "/hello.txt", "World!\n"); +// delay(100); +// readFile(SD, "/hello.txt"); + // deleteFile(SD, "/foo.txt"); +// renameFile(SD, "/hello.txt", "/foo.txt"); + // readFile(SD, "/foo.txt"); +// testFileIO(SD, "/test.txt"); + // Serial.printf("Total space: %lluMB\n", SD.totalBytes() / (1024 * 1024)); + // Serial.printf("Used space: %lluMB\n", SD.usedBytes() / (1024 * 1024)); +} + + +void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ + Serial.printf("Listing directory: %s\n", dirname); + + File root = fs.open(dirname); + if(!root){ + Serial.println("Failed to open directory"); + return; + } + if(!root.isDirectory()){ + Serial.println("Not a directory"); + return; + } + + File file = root.openNextFile(); + while(file){ + if(file.isDirectory()){ + Serial.print(" DIR : "); + Serial.println(file.name()); + if(levels){ + listDir(fs, file.name(), levels -1); + } + } else { + Serial.print(" FILE: "); + Serial.print(file.name()); + Serial.print(" SIZE: "); + Serial.println(file.size()); + } + file = root.openNextFile(); + } +} + +void createDir(fs::FS &fs, const char * path){ + // Serial.printf("Creating Dir: %s\n", path); + if(fs.mkdir(path)){ + Serial.println("Dir created"); + } else { + Serial.println("no dir"); + } +} + +void removeDir(fs::FS &fs, const char * path){ + Serial.printf("Removing Dir: %s\n", path); + if(fs.rmdir(path)){ + Serial.println("Dir removed"); + } else { + Serial.println("rmdir failed"); + } +} + +void readFile(fs::FS &fs, const char * path){ + Serial.printf("Reading file: %s\n", path); + + File file = fs.open(path); + if(!file){ + Serial.println("Failed to open file for reading"); + return; + } + + Serial.print("Read from file: "); + while(file.available()){ + Serial.write(file.read()); + } + file.close(); +} + +void writeFile(fs::FS &fs, const char * path, const char * message){ + Serial.printf("Writing file: %s\n", path); + + File file = fs.open(path, FILE_WRITE); + if(!file){ + Serial.println("Failed to open file for writing"); + return; + } + if(file.print(message)){ + Serial.println("File written"); + } else { + Serial.println("Write failed"); + } + file.close(); +} + +void appendFile(fs::FS &fs, const char * path, const char * message){ + Serial.printf("Appending to file: %s\n", path); + + File file = fs.open(path, FILE_APPEND); + if(!file){ + Serial.println("Failed to open file for appending"); + return; + } + if(file.print(message)){ + Serial.println("Message appended"); + } else { + Serial.println("Append failed"); + } + file.close(); +} + +void renameFile(fs::FS &fs, const char * path1, const char * path2){ + Serial.printf("Renaming file %s to %s\n", path1, path2); + if (fs.rename(path1, path2)) { + Serial.println("File renamed"); + } else { + Serial.println("Rename failed"); + } +} + +void deleteFile(fs::FS &fs, const char * path){ + Serial.printf("Deleting file: %s\n", path); + if(fs.remove(path)){ + Serial.println("File deleted"); + } else { + Serial.println("Delete failed"); + } +} + +void testFileIO(fs::FS &fs, const char * path){ + File file = fs.open(path); + static uint8_t buf[512]; + size_t len = 0; + uint32_t start = millis(); + uint32_t end = start; + if(file){ + len = file.size(); + size_t flen = len; + start = millis(); + while(len){ + size_t toRead = len; + if(toRead > 512){ + toRead = 512; + } + file.read(buf, toRead); + len -= toRead; + } + end = millis() - start; + Serial.printf("%u bytes read for %u ms\n", flen, end); + file.close(); + } else { + Serial.println("Failed to open file for reading"); + } + + + file = fs.open(path, FILE_WRITE); + if(!file){ + Serial.println("Failed to open file for writing"); + return; + } + + size_t i; + start = millis(); + for(i=0; i<2048; i++){ + file.write(buf, 512); + } + end = millis() - start; + Serial.printf("%u bytes written for %u ms\n", 2048 * 512, end); + file.close(); +} diff --git a/esp327nrfSDWDT3/SDDat.ino b/esp327nrfSDWDT3/SDDat.ino new file mode 100644 index 0000000..ced373f --- /dev/null +++ b/esp327nrfSDWDT3/SDDat.ino @@ -0,0 +1,117 @@ +void savedata() +{ + +JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(t1)+" C"; +boardat["humidity"] = String(h1)+" %"; +tempdat = JSON.stringify(boardat); + Serial.println (tempdat); + esp_task_wdt_reset();//reset WDT +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, +tempdat=tempdat+"\n"; + +//myFile = SD.open("/07.txt",FILE_WRITE); + // myFile = SD.open("/TEMPUL/28.txt", FILE_APPEND);//открываем файл в режиме добавления данных + // myFile = SD.open("/TEMPUL/2022/FEB/27.txt", FILE_APPEND);//открываем файл в режиме добавления данных + +// Serial.println ("open07"); +// myFile.print(tempdat+"\n"); +// myFile.close(); + //Serial.println (stamp.year); +//************************************************************************************************************************************************************************************************************************************ + Serial.println ("name2"); +// String name1="/TEMPUL"+ stryen[stamp.year-2014]+strmen[stamp.month-1]+strden[stamp.day-1]; +// Serial.println (name2); +createDir(SD, "/TEMPUL"); +String name1="/TEMPUL"+ String(stryen[stamp.year-2014]);//2022 + char Buf[50]; + name1.toCharArray(Buf, 50); + Serial.println (Buf); +createDir(SD, Buf); + name1=name1+String(strmen[stamp.month-1]);//FEB + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + name1=name1+String(strden[stamp.day-1]);//27 + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + + name1=name1+String(strdaten[0]);// + name1.toCharArray(Buf, 50); +//createDir(SD, "/TEMPUL/2022/FEB/27"); +// name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[0]); + Serial.println (Buf); +appendFile(SD,Buf,tempdat.c_str());//добавление на инфы в файл + +/* +//test = strcat(name1,name2); +String name1=strcat("/TEMPUL", stryen[stamp.year-2014]); +String name2=strcat(strmen[stamp.month-1], strd[stamp.day-1]); + +//+strm[stamp.month-1]+strd[stamp.day-1]; + + String name1="/TEMPUL"+ stry[stamp.year-2014]+strm[stamp.month-1]+strd[stamp.day-1]; + Serial.println (name2); +char Buf[50]; + name1.toCharArray(Buf, 50); +createDir(SD, Buf); + +name1=name1+ name2+strdaten[0]; + Serial.println (name1); +name1.toCharArray(Buf, 50); +*/ + +//**************************************************** +} + + + +void readdata() +{ + //**************************************************** +String name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[nti]); + char Buf[50]; +name1.toCharArray(Buf, 50); + + myFile = SD.open(Buf, FILE_READ); + while(myFile.available()) { + Serial.write(myFile.read()); + } + Serial.println(" "); + // Узнаем размер файла: + Serial.print("File size: "); + // "Размер файла: " + Serial.println(myFile.size()); + myFile.close(); + +strdat=""; + + Serial.println("/TEMPUL/D-2022/FEBR/27/T1.txt"); + myFile = SD.open(Buf, FILE_READ); + while(myFile.available()) { + strdat+=char(myFile.read()); + } + myFile.close(); + + esp_task_wdt_reset();//reset WDT + + + board1["tdata"] = strdat; + board1["dataserv"] = dataserv; + board1["timeserv"] = timeserv; +jsonString1 = JSON.stringify(board1); + // Serial.println (jsonString1); + // Serial.println ("strdat="); + //Serial.println (strdat); + + // events.send(tempdat.c_str(), "readings", millis());//обновление веба + // events.send(strdat.c_str(), "readings", millis());//обновление веба +} diff --git a/esp327nrfSDWDT3/SDKom.ino b/esp327nrfSDWDT3/SDKom.ino new file mode 100644 index 0000000..f7d3b67 --- /dev/null +++ b/esp327nrfSDWDT3/SDKom.ino @@ -0,0 +1,207 @@ +void savebalk() +{ +boolean q=0; + if((hb==hour1)&&( mb==min1)){q=1;} + hb=hour1; + mb=min1; + if(q==0) + { +JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(tbal)+" C"; +boardat["humidity"] = String(hbal)+" %"; +tempdat = JSON.stringify(boardat); + Serial.println (tempdat); + esp_task_wdt_reset();//reset WDT +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, +tempdat=tempdat+"\n"; + + Serial.println ("name2"); +// String name1="/TEMPUL"+ stryen[stamp.year-2014]+strmen[stamp.month-1]+strden[stamp.day-1]; +// Serial.println (name2); +createDir(SD, "/TEMPUL"); +String name1="/TEMPUL"+ String(stryen[stamp.year-2014]);//2022 + char Buf[50]; + name1.toCharArray(Buf, 50); + Serial.println (Buf); +createDir(SD, Buf); + name1=name1+String(strmen[stamp.month-1]);//FEB + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + name1=name1+String(strden[stamp.day-1]);//27 + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + + name1=name1+String(strdaten[2]);// + name1.toCharArray(Buf, 50); +//createDir(SD, "/TEMPUL/2022/FEB/27"); +// name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[0]); + Serial.println (Buf); +appendFile(SD,Buf,tempdat.c_str());//добавление на инфы в файл + } +} +//*************************K2***************************************************************** + + +void savek2() +{ + +JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(tkom2)+" C"; +boardat["humidity"] = String(hkom2)+" %"; +tempdat = JSON.stringify(boardat); + Serial.println (tempdat); + esp_task_wdt_reset();//reset WDT +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, +tempdat=tempdat+"\n"; + + Serial.println ("name2"); +// String name1="/TEMPUL"+ stryen[stamp.year-2014]+strmen[stamp.month-1]+strden[stamp.day-1]; +// Serial.println (name2); +createDir(SD, "/TEMPUL"); +String name1="/TEMPUL"+ String(stryen[stamp.year-2014]);//2022 + char Buf[50]; + name1.toCharArray(Buf, 50); + Serial.println (Buf); +createDir(SD, Buf); + name1=name1+String(strmen[stamp.month-1]);//FEB + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + name1=name1+String(strden[stamp.day-1]);//27 + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + + name1=name1+String(strdaten[3]);// + name1.toCharArray(Buf, 50); +//createDir(SD, "/TEMPUL/2022/FEB/27"); +// name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[0]); + Serial.println (Buf); +appendFile(SD,Buf,tempdat.c_str());//добавление на инфы в файл + +} + +//**************************K1**************************************************************** + + +void savek1() +{ + boolean q=0; + if((hk==hour1)&&( mk==min1)){q=1;} + hk=hour1; + mk=min1; + if(q==0) + { +JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(tkom1)+" C"; +boardat["humidity"] = String(hkom1)+" %"; +tempdat = JSON.stringify(boardat); + Serial.println (tempdat); + esp_task_wdt_reset();//reset WDT +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, +tempdat=tempdat+"\n"; + + Serial.println ("name2"); +// String name1="/TEMPUL"+ stryen[stamp.year-2014]+strmen[stamp.month-1]+strden[stamp.day-1]; +// Serial.println (name2); +createDir(SD, "/TEMPUL"); +String name1="/TEMPUL"+ String(stryen[stamp.year-2014]);//2022 + char Buf[50]; + name1.toCharArray(Buf, 50); + Serial.println (Buf); +createDir(SD, Buf); + name1=name1+String(strmen[stamp.month-1]);//FEB + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + name1=name1+String(strden[stamp.day-1]);//27 + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + + name1=name1+String(strdaten[4]);// + name1.toCharArray(Buf, 50); +//createDir(SD, "/TEMPUL/2022/FEB/27"); +// name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[0]); + Serial.println (Buf); +appendFile(SD,Buf,tempdat.c_str());//добавление на инфы в файл + } +} + + +//*********************kor********************************************************************* + + +void savekor() +{ + boolean q=0; + if((hkr==hour1)&&( mkr==min1)){q=1;} + hkr=hour1; + mkr=min1; + if(q==0) + { +JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(tkor)+" C"; +boardat["humidity"] = String(hkor)+" %"; +tempdat = JSON.stringify(boardat); + Serial.println (tempdat); + esp_task_wdt_reset();//reset WDT +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, +tempdat=tempdat+"\n"; + + Serial.println ("name2"); +// String name1="/TEMPUL"+ stryen[stamp.year-2014]+strmen[stamp.month-1]+strden[stamp.day-1]; +// Serial.println (name2); +createDir(SD, "/TEMPUL"); +String name1="/TEMPUL"+ String(stryen[stamp.year-2014]);//2022 + char Buf[50]; + name1.toCharArray(Buf, 50); + Serial.println (Buf); +createDir(SD, Buf); + name1=name1+String(strmen[stamp.month-1]);//FEB + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + name1=name1+String(strden[stamp.day-1]);//27 + name1.toCharArray(Buf, 50); + Serial.println (Buf); + createDir(SD, Buf); + + name1=name1+String(strdaten[5]);// + name1.toCharArray(Buf, 50); +//createDir(SD, "/TEMPUL/2022/FEB/27"); +// name1="/TEMPUL"+ String(stryen[stamp.year-2014])+String(strmen[stamp.month-1])+String(strden[stamp.day-1])+String(strdaten[0]); + Serial.println (Buf); +appendFile(SD,Buf,tempdat.c_str());//добавление на инфы в файл + } +} diff --git a/esp327nrfSDWDT3/SDUL1.ino b/esp327nrfSDWDT3/SDUL1.ino new file mode 100644 index 0000000..7e887e5 --- /dev/null +++ b/esp327nrfSDWDT3/SDUL1.ino @@ -0,0 +1,94 @@ +void saveul() +{ +nt=0;//сброс номера температ датчика + + +int q=0; +if((hour1<1)&&(min1<20))timev=0;//до 00:20 сброс timev-врмя записи на флеш улица восто приходят каждые 3 мин а зап каждые 20 мин + + if(timev+20>TkMHh}yL<1h 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 RN&z`X4X|7|#Fz literal 0 HcmV?d00001 diff --git a/esp327nrfSDWDT3/data/apple-touch-icon.png b/esp327nrfSDWDT3/data/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..824530570ae5a1f3206560cb91f9659b0ae08fbe GIT binary patch literal 15012 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 S$#g2v3IQw zJ~-v`;TfL~PW`Zd@~b|Z*Hb(`?&*DAA^u_CgqIVYUQTfOuy?|TJw0#Uyjj0~!|J+- zd!>?diu_KMXdWriTTtYEuS{xQk?*k*o#Q1s_e!O1-MU#)Sm5K~9_Hm-9AXpf<&qg_ zmlj|j>g62b<&quU+?GP@$JG|`!F}XG#9Nb zm%F8s`e`ogUG@x<>=-87e>pPa!~Q8^bNrKcb(9~PQFdth+c}{x`)qdIKfUwbsdr0~ z-%Rs*J=Nn#iGKOv8QbojC_g;?^P#CPCpe}D*nc@R<@@DL-!886@$i^e^ zX_+~x3MG{VsS2qTnQ07MAd*V~3``8TOiax!%q-2!41mDI(!|mz5y-Fr@qob4z`)oL zNE!jz=3o&6Ly$ZYFflhv1445yvt%<3M0;=MVlWgGV0FFE@6 zdatjXgsB8O!{TZ#&d6VvJKlZ;%Ove87zFk_sow*;|oci=Q|8dEZ_ZNAu{Wh#gwLQG2 z?(!b{%DfNajJvj}`F~rkX)$}xjsN0O?icbJGIG*@Nlq1%9qGAOi ztxKh~Y84kMwzwBXK~x@8@reZtNI+y!1nt}q5O^TIe*NBG&iDN?=iD>roVjz)oS6xL z49LNhDS%uFz9RwH0)U~Rw66qEjnCB8d;2j80Go9ICZY^ZfdvR+o`jTpndDcdw`~{n zIo$fA3l5&Y2e*+QLjJg>25JzdYir?deHW}b`5f*c=ktRhe*Z&YtbYm<5mgOcV2+&Q zJ{#V=c?%vM-r(-*2AV7DVDXV=h(|cji2_Hzc+gob0=-pr;Dl}atu-(!UaZyIDL0Nh4T7tv_UtVz26Dv5V_YjqCUA`5&Z*LBBn=wi~GKSnD4|; zRCE#46KWwA+ZxE-y}00k5I48L(cA5i_R9<0zX8&b-+a;qc7bSn?br>+ai5uWLfp;FWZT;vwfN5N;GF7AB*_ie^~FX5ie5Qp&aoDH4` z)+#DE?F7im$^mEOc7bc5xm%<5tdU6Wwo!s@bh|{ACL3n!E9YU z#OFQ$@2_=m4Ybi=F~lM~J-EQ(&cXF~z*=qsu812oUGQUBJKRJbnEecnW1GE839dgp zjq7%S=@+#SAP5FN!ff4Bpd+|xkHLJyQ!rj~1gVD2St_?eHUl;}-#TsSV(cd?s=?|3w2X0f78>RF~m* zwdUcx^+kKQ<6i&%ui1NwzL@v0=IV-!x_2@IS|^_iDwS>q7|W@Pr-v6(e`ShE3ycG9 zC~X%sYYq_WZ))-zf8J>+SaX0RF6k_!hTIaXeUmP*JW|oPZzTEiF~x%P&nAnvTqrE; z+$vT(;4CPPt!T^|PF@teLwl+Tt?Zb5UU{ZfA$3w_xne|o8O?p#nd)FszZQKBGrLW5 zD7RlG&+_hWvA^!t-WGk`{+XfotmK!sDNA?Tnf1x_a+~E<8nvw)a;e_B`$B`rvpE1c zXBQd>@2{I#O6IiIYE&(+A2`EbMMEe|$zF*_5uPG&3Y!E{gb4_t#`pdMDoWu{6yJxpGf63d@1IA=s>@CFfsZgj5T zG_gVH%MBhol}u}HS{Boi^-%wY+@!!0Ih^;PHEDX$BW+QLTHKdg|)MSqAs(UTs8{JNOSyyctu+lRdG^-SMeOzw|pq;mVn zQSF)iNv}PNNNU!KANIWzt<^}sT#-BAB5z2T|NY-fC^VFJIUsjs9y@(eyw8W6H}CjG z>HnG6d!D04KF{WRCFis6JU_l+f&MZR6>8X@ba>)${*ttx@Rxt1zgXN*HXVD!(|v$H znh$bEp1IdMe>CwtGS+m(_KM1BC-i^9_kFLwCy-A}tE||*g1Aq#DI7xoVegZqg48C- zeZrw=6Zc77^FDs{(pHHdUgS&S(F=@6Go$XOOpwN-$i8@VmxxC;1D408 znceQCl-pf>@vf~c`iXr@H^#dzjCY%c#ygxK3Vx(L)ty!rFRzI4luEVAEYFjT8!?{d z=VN@Yki=_}c+0ni)Xptp()@Hmam@Kf{&4X+Uo)%G_K2k*4fBCp9fj1663hqIU_S8k z@bNugns2Z%-(X_CagnL5E@K>UQ)!z(=j7mbmG=7cnWLD`yc)+nTC_gYspi_?d}dHG z^s)1Qw*XP68X`VH^w+8K*y$r_ol4~J%a$jAc|tMlxtJ)aUnq&y;Ewq>k%N0=G(yJ3 z7qAO)`d$a@M$XS_0yhp9>#jC%PF94>i%H;w-wu>O62yKC2M@@!F zSR-va{~RokI|O_RtaK5$a`}>)n2p?FdxNBAazswl>z=!x0T=~pLwm`%IF+?J~S7h~lxsUv#1^zY*1oe`UuZmiXn-AUE zitb|+tETO1Bpr}4RTqok&}l4Xoq1lYaiPKUS-ipHJeGT)(j2~_|DL&=Xo#D4&jEs|1AWDYB zWP~&I8H{iSm5M(MeP%d=Ns^JSFmntOi8hFcCyFz10VCD1kqa2u({r}zCuco;z*rDD zR@KPYh2`lN&SZM4gIPa;x;K*8Wc*OqG+;)Cf&=JsNXHoV%U& z!rI4(zw2UyOT#`axFg@zG@0;pe-OqsLFN*72XUh&tSS>LQN6 zj`yNUB7=$3k|k#QSDz`(lGK-S=j5} z@;*i}3*Y(o-*%Dw#f6AG1^;4~D<>)&`ebm4{YDnYAy6Unr+A3OPRZaT%@pMg9vX+WAm?)1MBhN51W5|yg zr)&Z=in1D=VTi<_t0_}x3I%FSkWbZsSHd`OTX*ZP_lr zefu`~ZQFM2RNS>==kA@`w(Z)pYqyfJii*m1g}wXsDDP8LR#9I65E)sp&qleea&lXh zcWm3C{QvnT{Ri5;MHVFo$;xO#8+Oac?v|0ZLKzWMpMGY?NL9)nIEpSPyO7EvI<+)P+q-&Q~^T-cUC9<5}*OBNr>*sJL|fI(qu* z&AVIW_w3!bUsdavwhm19jG>Y7?eXVDRVY*!aZc)btE{acP;$Tj8$?*4D=*1IGD(-u`D`|BrF)2IJbWaii?U&FkZm z*$@rxvb#6R9X_>5@q+W_D>sxh4gT1oeDPUs<(sWXPP_b4xq7ope$UY}KeZOuhxYHt z{@)Gk?*Ffm{a*w7zsEHQZI_h+Cr@@a1c!L}LavxNNYWck&e=h9ozCfrW)*fhmP{CI z6mq#zs125>le4v`5G$Eixp63!Y%k=lRoQge+fc=foP$=%YY>dvO8si?T12@ck2fHj z%bBHHdB~Y1Dc+ISp}ObGZM9N{oLiD$H}AO45Z6r1{mqhKcRGJi$W|U3oWVMRoU*Ce zosE>F$dgWLjtCg{9~}zWd^@$v3Q~5qx^Trx+1>nqU$FmDbIkKMd+KtRd{N6p@u|zj zY@((sTVTFhhZ;(qqfN+U>R!w9Kj&}0LCZc7Y@%y|*jQXl(sgD)Bm+|mq-7p)YaH8{ z8RcB{)WzBf47?53;_I<>)|RN6Yi}z?>~jFP;lKT?#or6I}{zQD!_l zdf+f(yWn9<$8lCn#^0$ov|0Yt##dhx8=ktDJld6SD}{9XMlz((T-mjE3ZFc;8Vu== zlm|cPIy<}V{e80lT1CYL`Go+_WjiUPavpvhbFTkfOv(2VILBWAulMev9trnjVnw%P zKTVhqvBXJln|cbG2zTYs}8c3fhl3BZkLdVnZ#%0((6(P`-kXB z`wc0S+fQcusx;N6iBAP07eqB|H-3HA?q2_ENIos2P}P7>2~kZ*B)mPP{7Ltda%NX8 z)>_#6#p1`-u*3 ztJ5?H_cLAx1Y#Cd*gLEhBZc1E3}CO*SphjWR-dNpx|PO;tRPpqtAC~kNOaeBx*XB` zz}P*_vhLtoYwe^;AvuHWL~}Wf1y>mN=A8~===vfx-G6Yd#nnz1bO|_eOD;=vhFc;d zoayPIqEgI~{LSueW)?Tj^gvo>=}3t@v>uV07&?@iLy<;FIx;=ZAi|YhryFp}2q; zhfNc?2$JGcCrwMi%!q>nUnknFXnpxpVbCk@o^w*Dc|DXBVoJ0xVK{MQPEU~(`Xzr5 z-Y~=#*iP!rC7LatmO}OR%W11uF{=mde{qU1!T8BCifzniaCjZQb=v%0%y&tjGUm4+ zS9A`gwGZ&g{>E{bc~fvg2Ha&ulM*>MYFwwYCh8sn!nswq=1!ZmbxnnqaBiVS0tlly z<*pZaJ|uDs;Y8(DR zzoy~MD6EU7Znnp@OeGT*E##Kcy9EqvDeXmcS(wA+Wi3CQj1M-3F@YX@qgeHZp%)># zlY_5yyU+R^A!d#TAI|i1zdw-`*mO=WnaDnKIHSVC_>;$9%|4e(#*S>Y?7LL**5UGB z9qx+3bB`bUD>)paZ8heHoH|zQ51h5DHJ_XVZ2HKbEg`^pFWd#6=vHR2hsK3 zE9xzG4St_ciW(Hxg#`%o91i-#drou*AimZ%eT(N|J{WtoekHht}cI*4iqF)3k=9DPo1<7Br`FZWs_y2b88QusUAjh{er`O z=H7hv*&~*`QquUj)1Fd0apVPzelyDo13Nrrs&O4>1WK**tsT)pEz8)#(BilZLQ1>n z%+1HeRphGDm@}by#4WYXRRsgq3=?xjvVERE1|~D*hFli2QzBQB(S!``Co zY>rc(%d;zP3Haq5^0NC{~zV`_@$QN)a+qX`Ym`4hTgx=w&A(kN1n4{sit8>YinhF z$y-yj?Pd0yQJ4rdpmcbe$GDyHZf#9hPX??*%UlMZH3I@Wd5{F zb=!Keu;lLFo;xFjI6eC2J3#o6%++ATa|^lChr-vE2}$tT&@^#cg%t=NkY{I7^&}me zxXA{K34a=5?yHiT8se!_R%YU2@jRV{=>5fdAM4feS1@hmTrxNqvi*UJV{iB)Cth~- z+h<)#-9(ZQ#wxP(!7+-kOL)~+-QLBNc!f%#f!P@ozthPhW|^-t^je3N^r*iY+~@{) zwt)4v<#f-Py~`1w$kjujqBr)Jtzt)?k}7mBz}MtBd@bxV`j5!uS47$2XM_1edKU-9 z&sXaT{HUESd3{~a4p1F-jCSyYdv7^?2S4a)^?U_L0?WNi%Ob61RWF^wcLtxyxCGo& z7eRuv1C>w@N}Pg~irfyWv*f*sxv6?KX$Ks?F$EkbQ{5BXc`2j?IXD)jWOFXa(w`<_ z7nw9CjfI~2>0N)#u@Bl44QgSxUfkkp4 zltDPJ>BsRUaCE3$XvWDaMAsGPsy`kBNDZKm&N@)uaF8e_>1uh{2JJ%I21y*eY=ee$Hqf6V z2VCX~d;i$Uz@{{^Jz-1f%PK2nYVHL^H1kOSld0#JzE!)o^&pYB`y)9$A?si{x~L^k zu&0VxFaOxqXL>-)PFE7r&oNUDKJix3y_I$9p~bc%d4!v_htmUutRsDRvr5A=W)o^` z9jsAY*>Zs$U*az$RbR8G0N$X&RN5_Ek6$?cvQ|<#cN}MgmFQN5r1yl3;<XsBbPvb#_NVUPDo zdVi!XobAu{9b-#BIp?!Fc0zp*D+Juu%a?cLCGJ z3W@l**?okx^J5(WSC#9qMCmtA9B)mkhNcRcMV3^?tz-Z*%j#`D1KjHDq8a=ko6GoO zofnij&9cX}ZYjhyUXf543a_$Amuhny1AT{ zC{nM-4Pu1ZIRiABj>P$IvIrvbi{d9dQuHyMP#U5n7*bYWtF{zW9aqb3WURKIlo{A8eVx)!mPaDY%{0rJ2_L zS_+Y4T5QTsNuj_;Z4I$mn>{_khNe8qd&yEr!!rr{hwt%PLH4$wtoX>(Zh}P5|3D@A zt<7;ttn9m2la&3n=;uSX>snhjk&g3bO%}r7_a^|I;j!6Pw_?oi$vxu}RQ^rF+=&bnRL1(ffBrTo?9p+=@M%zE|P<%C>}~q|hUOZ_4gx z!62FDvh7s4Y#oXGHhH|2qkwiuLlm**uPk%L3(6{J(IU zoulSBaM5+e2}(o`T+}*yX9tl>$xd{asVYG1*7YG>dtzA}<&=obk@Z)D^`LecJt3WB z;N||B%Vh@#bnp&YIS#lUHN0}7?5`?#5OBZ6Go;IW&$B-N z?{tEYh-c9Fx^KNXLRNhB<3yqj05#RuuBx%G;VLegh8`#=O$fof`$ zv&rk}z7_>9o#d<18c6B5*XmHO=%w>UC+mH$Z0KGP#4pNQ@H?d06I zn#@tPEfr__lYEAZwL(Kn&Xy2z>B3&i)(VPNO-;i|PQ6$AxIO*&BM+lp9M7iIU=mZ~ zUSgb0rYOFPcdkPXnTGfy+&?Kg=Bi{Zv?A+p-w!)+Nk<`jx6ub=Vp#xnc ze#f6>h8oTu4Bwdj;dZ$*V0I#vt5ZMV51Oc6*R@}QbL0*(V~c8&2I_vC@#vF_ZT3B? zgA0tPN1RX=TK5#Ox!a^38EYe8zjY9^m!yzFoZD@GyRcvdEh#iLswL3t3e`WPHKS_5?Sy0hpuaJqXeONcQfIjDJ*kl#tT}D zG|IXlJB`pOd8i=dhElTJZC$4&@;WkHfD_Ip!MN)%UT)L>hWYBI9nlzkR}Lt zB72)!RhE^hV$mNDiEHr;9e^;9h?nY#fK>y`ib~m%d7TPmsG?1w#m{uz60W+gxPhv# z8%7+jWtpq2pzhVO(7CT@m%?m*Q%)HyJ$g>}LkF=f=k5t&8fIgkSQaJAbLsCtr*m~^8oz(LQHW^S?3w(T^F_(@&F0wx=>R#3fLOn2|6+Wx|JYWW`A!9Z1e@Q3Vsc zi8>03Z|fwOu!Sggr?2axzQp3+xJCpP1s4kezr~UNL)LO2>=c4nz@@w~I)UGA|0!0t zFrPe)mGG{ImekEi?w|0cTyuVDJ=9RWg7VrZ?)4e)IWuaR9}u#oJ^V495NTI9f_$|a zw3aNw5&oG;4O()u8PlKJ+w$!T`HY?K=`r|&HT`6s!$rA(?i!3?E#@c&;9(6u?OS&x zYwjz1>D7g0Z~&72X6_K|HLJHgf3URqQAjvq%uM(CsoT%r*6o1@g#^Z+`rIVEF#UuPQ1-V@W+=42K9=?o zBn7!P(TZdf0E;1w4<-T@aI+!dAbzRJ-5{@nW7!g9GisWvPTnRsu~c&de7KkCrKU$UVMZL`b9|c=`lH`# zn~0QrCI|B&=v|EH#1iUWY3DiIe6G5iu&kxrOmHkqjosi~%Hs4COL!QV_xq&ywIo2O zb3Z!(!kv;YqkF9=XlBVtRw6cm6+4zZR04_|`;@Bw|@7hkvJw!a1Ni)`rNN0c=k|2K%O8`1) zGBYj(hPv}LnGTYP%SWBwcDkn=B!wMz^Qn$G$2LjQo1^9*=S8V)!Z8yZ-11(S*uMxh z?wt;uwP<%MG(GSSdMU~oKz{ZZ5W@lJ=kkka*IPfh?BlK{gSykITu_D7OE;MsPDdB{ zOdnn61r|V1_dr-JJ&rCaqUOU#O8t)%o;p0xLVo3M=TL59JM-Au8A+)+?yrC>^63Mx zrJUQrh1Oui4z7&Rn(jfM>p*-V(bc%?G6Z0f69m4a2PG%x@n8ZoffX*$n8sf>-B&@V zWs&vbX563k2Y%w~*?!D+VmYuJCGwB(;TKM>#jjPg+{1alVR*2t*OH#_;#w6sc>oVQ z;r5L|+I~c)mf)Z|0?dNfm0CMr?K7C;VXWm!@+S z*(&12eIRM!pnx?UA#o5=Pq$zi_n&#Rxv+PhN5zdBFwf{cHwT^{+;z28TJ4>2~e(DvbOFiPJgc zZ&a|JRB%h=M3!0oUjF$KUSNgxYMK-}%#%XpmoD3mJexx&3QO=+aYVuM@#3)Div0W= zALALt@tO1fWjg@Tsz(l+Mtpquu{eONiE2n1(CrO#G@E&xA2_1D1{cYbL&;ipx5*8- zFz^vKg>O0*o)Vs~hNw>%vmJYz4dO^CGZOL%6-^(LJ@XHEB^kqaS>MjP#AU|gzTP)- zzL`1C5;L?kB97?aF35YQXjS9ySx2~{($O+7nsiMvRu*viU8SCd-?5IG-N_B!1sshN zaTj~hZzOuJnTDVCIGBy1g$Lj2g$~dcK-LOgjcqmV+kLbFHOOuth=iZ`eJ%Hyp?d;f zUyh>@N#t=tHif<#`*VieA$ec@0K<8=mnel+=P}0T@uMa&W=frBG}MCD+7{{zYdB!{ zCDVxicKBM22|sCUzg;_q=qvRc>~@zz7g~^G$faId-t1s@W_Ze*v$MEBA?qyqOtBP# z-6$5d6~#Sw?V7NZthw(@9F0AQ6rdILvxYJdDgPX*v}yq)DN;-q(b_USP6i@1r-=DCJ{@Js(U; zq4tKQrb0qm{8}OhJ`jB8_7XIT?wZUU)OuzngE~TnTTqZk5aj z5`y&kUJ^lpq#Lz+IQV{|TTfqs z`LhP47Pl+-Er3wYI{rspn3CR7iXEXFq9gKc#awKOaC*6TStdyR2@iFQilt2+%Ea#k zDiWF{={+^_^gmkBg&cwIUR?NE%YP1VoX>p)`gYNz%ni zqUa-GSh|l!mK%1C|NUqQeKsDss&b=8;ulO{_;wu@Ge3#h--^O=g=cK(!^PPTTaRu9 z6d~tM;W_5ISk79XNIL77WAKC3V@i^qtP^l{pnr)7$}M;u!9c0&1mv30zcj=?ccxnP z0jN^xBIR|Fkf&lRcWOF!dV{VGF7OxXUm>w^`j8)BE)K#(bKnK{;~@2>=c8VAqN6Y= z*ocC;AFv4d?v3?z7MmK5WT7liH3t_Mp}P z=4FA7%fMF~Uin%6@$X58(fFB}+IIJf!vgipupPUTo6N2}C2IvZ$QSft&%?C>ys2ww z(WXSpBZq$#C~3D#A(>(qjg;gTBI3xTK`C>brZMMwoaxt_kg!^EL?fcuw(V6ydlLyo zPpXM$>hsf?;)YHsl*R|PrNd9w9`=V*M$d>V@li$dy0pBx!DPp#U#XpgRuhj zhDTwss9)SmE1jzuKxtj(WBGl}vM#@j{v4$Vyu7<2#HglW_Okg?uu`_DaMd|)#u+ha zL;jC2-XkUIHl6c;WtE2>J(BkPC+zwfFS`;uIq>C`HXq*TwM8iLTy!vYVe))jeBiE0 z1o_pw`p>@zx?v$`OMJ+i?87mUWfv!xZAej;Gr}GlFosH!iN%kT29vAF9+m?jPGnpy zjDLw41%j#QsQRGk@mk9DvuA#HTM>W9j^$OdV>U)_pag7j8%g zU_kD1p&1)Mr8|2xcs166wEs$>vXaxLkRR*&T#u`y9t&*V70?a9>j?JM?myfYK3^K) z-c+4PI^V+*cl0*KXYy?6vuTpfmS*w~<>MLF)ofZNkgGWr!&W{Xh`8>wQ*RQ}^kK_w zqN8j5i`P#BN8ukZACnSASBkVpy24#WfE{E0E19z`t^>*QYY5!ME%sZU*DbvU(U*#v zyZyAeX@C{lIzFu=Ct=!*bs94fS&GjkNTm3Lkv5fmf~DWVr$t#M z>D5*nUHqvw<~d9V4M+rHFvNo5 z`FJ*=-mQWq-ihG{x9SV?D}I|h!GtwVv&?tm!glg@T(|&uVX%4XI+nyUDyQNaTh`p; z*AxSgjW)mS^?^5{d9;j`4}bE2@O^6 zoN)Eca=>lfzwVH`IdZ3PVKTb`<7;HGi*scv(=x%ji+4=H1?}rT531o>O?voe= zApit#Hn;;YB6ySsc^Eh}1Uc}uosy&u7US@zrZ;F8x{iP)xNwGg@)+&V1JH1CGXY<- ztr>E#k1lGOK-^zI`$G=&@e1A5M^fm>X3>Ub6^rXJ!xX!(%;b z+ucf;c=m~~qvupxvY$=%u0G5%Llm5W8-|`m?M04&CWXqQPVd~!K5^U+*V5u0A`djR z!DAFYaz9=vJNGdjaqYKWOD)ak@0Q&CKf`CX`pEvzt7eCue?nnPZl^6OX&3hey|P&9 zy_s+-Q9h32e$WhY4Yu4{=kUmRU)txZXG0rsUu*F*wX_C8zNv@h(E3tTPws%Op(de( zW(;I~l)QGkGXrxfdD(*YsV3blct~j9XjIqf!G|w`0!^s#+9g`l@>42!vC{X|eu)-y z>&Pon@@2`4^4GAumx_0obpwY~eVK#G< z-?_c(yhRw{zbON6if-GX2+df$td$a7B;Pozu)p()u2)DO;XhHrx*$n0t(h5@SQc04 zPgqf}6e06Qd{2_)k_Qx7onmowt5>(16!H_+l;-Y#_DiHS6hh26dObY=kk%*eE5})L zaQ*PeeBgRO+o0$*uqTzjwL(E#PuNG(~sscemy_JbcO#zOK;3Rb(^rIN7>j_ z<_gGDNKS#Nt_Ox7^;QG#M-+bC~ifW#iZ~-)z__BnhTksjeQNt)uq3Mc}|5& zY|1uAMNphI4Gt{Far-lJDdoSNA|`NvVAJJuDlz%Dc`gvA2hfZFgC|5WaqVmNx|8Lq z`*6PlNW8ShuO0w>W+dRsIUWqFrKf;sMi1E&o^uE+mB;yE`yTNn95LTMdSIzy{V6bS zb#}k);3;{S5Gc;$rFNQm0gNbyj!YwLNGES~8X9mIaHQmK$iYVO54PvWqgeFt2?C!+|M@#W$Vsc8L6~mQPd}fj zuR3{jpx!IGldty`<6V2n*^l+#4iEw8$Qu~7_)hGPOL=b2!qs%6ieW)t;|`;d?t#kC zvU)n?5YIA5M9Pd!$7yPpJh_68(`*5Y3ktdz=+j_qf(X z$MNi3UT1$lVl@H0oB9xihcgos=Z(koKaJ{v3KU)ka;C5_?3d5Y18pMh_-(9*82Z`)`a5L#EXQc-W!_MAPHZ1$nay%WCC}* zgX?PCW19nzxnJ{X{4Io4G9?{Z3<21D2=q4PY(mZI^HA0mLBMq{+JG)Jb#Usv1BA{& z=s^Dk9+sg25ck!yc}iji}+-5wioJc00jo^#4_V7vo^feqO|Qk#{gGnXsfydH=&|b@(dKKFF~us4cG$gH z`WZr%l|nwP%woW1MAOhjqBK<4LxLy0IvIIiqB^GJ%MyX4RmUNu(}+E6rpt2n>(2dB z=pza~T=wW(=jy>Lw~P6#_mX+@QM_>=5CLEIUw9Q8UaAIP6+IHKO?TFqh9{Q(#wHx;(q|Q=oTj zNrRg-J*;PTJ^GU;K4%i9Rrks1`#Z0#VM{$|BbJuiU2Vhd@N>P1&&O$76~6F}e-%~B zd^r!NWy6z}nDZMj-deQr;+qRR3WP%SC7 z$YIn&SAH>?ao{~tDPLncJ5>E9cA%=MS7bVNP<`Vg*CYkC>q7cOiU55>U((@At01(I zg-=>C3rFH-r#z1=d^8=f9F53tVP3t&J(o(aLuOTHUGUX=NavKyL?HKh%+3J( zmo1n9$UaAdw`Ol*o=4J#MiBi*{gqag;q%(xW`NqtG9---WnvUO2QHL*ux>wq`HcEp z{LqgdZefk#>A1?`1S*rt zYy>9(rN--(b=SK`He1QzhH2D4OF_w%qeI zkD$;gXF z_nufcU*w%`w(x$RECFf-W!+tQuIVP^1#)_R6Y+3raE?3Z-N@Um`&J9y?j{JD*=8E1 zxUo2853X_tnP1XvQB?~(d);?|?z@e8*83xdh;1)`WCc31CNB6B!W14xJTbej^5(l99{`%KpYQ|%bDhJOUHW^%DMV6ifk9)= z4f}9Lq_Woa0DB^ETeixB3i*_0xdRv<2{_uB9>~EE9aEfaXeAlGwXSuXd&LC6Bq~8j zHvUNRnPe?hd?Y2Gs?*_T1`Z2YLf#Iuq(9B66lWLE0(Lxg@F2&NFyJCkt98!H$6R;l zsA@LrW3-=nkMig;5_3k29>)|gLSWXX&fg8eYEP7Kyi^Buear?KxQEX)Re{|@g9<~b zT>$cx^RBS9i#O;vH}#YX$t}GF3Tr(jiei4wPMj1P@1X!B*u3p0q4kN{+lKJmz!G2a zlR<*fQCqFFRV87ux7-?`m7&iM>5tzwa6vnPr(iS?FpTGCYlYD@(bPM{n1atSuSc-a zM9gkc=}{^wQGGS9oxLa&30vxuK4D?2xq{O6=yB-yjNj`aLicvup7j@g9Gnb{LH zA0y7(h~B<y&Cv7 zyP%-aZCgDr&$rkXu$D^chPd+t#q&BWebLd33&Y}}Z}ioY@p$9gXoR{PDVI5am{9$u zCPf7^R^F{4H+{;wXmC#!5CEz%l4E~2r@eY|cX#o80f(TE#27S)Y<_kA-Bp)(hD?eb ze!ol@>zQ06Cxq|LPw-$KeZFevt-adqb6e>hTCqIB;WsH1^Q6jkAx`G!hr1}rKQH0> zzlO9xCyS^JsfC=Bv@HK4!pExgKQxp}np7jYC+?mfxEwzQra)EoP(b=_v=C?tx&0T$ z#6}<9dA;`fU9&c^Pa#F?8~Mg82*-pp=WMM2pT}S$8Nuw^jsoE{AT^gYhGX0GK)YqZ zpCWpEu5FYhi8G@8D>CJJ)eGk26F8@25sw&1K?|bLi7p1YCoikF`m1(LCcXgLd4WOc zKd@>ip1DDizfsj+JBzXtaEa_~^6TZMoC`UnnK@kK)Ka2LpEztx#{kIBQc-Sic_o^E z;!^Mhq{1arxyPB2F45n5qp;bp792n1R8|;&;+O0%91x+DnV~=rguG(2cuJr(uf{Eo zjm>hu5P3{U8d<#}>QL3^XE(K<4Cy|vVIpRusmBJq4Zj)2B9r{%6pCzwGX! z6We?Wu<9b8+5M`PnRqoeJ|ZBCRWj9#__h1P!4Qmo!orY2p?CNOjgbeH-ehmG@#^r^ z%LJZSS}bye4v1$>=@k>vkyQn|nABI1C$4rP>S8!2uh!Nfo6nS0Dz+Fe_RqKDV~uMP7^g@3T!vQ$3uM;e^=*OrvBJKe$kEH*L_Qz#V=~7~KZ1 zq5j#VH(B<$tn9nCXf5s;ffa@^26ElX=S7=`p4ZO^&^C40AC;i2OX?);zH(;_zPAV# zP%LqMaD&H%#t`2NpbMa%hTP$}$$*&e(|10scy_PC`DMlueIzC`mM+>s+dW(;CisM;Uhn|BvCG&n#`HmLrwG+MgMK{gJ@RQ-e=xSKc$zPq$v%qb z?!2X+=a!7rh1)Qk!2> zID=Y=k2hg#wMb=marrI%3FUDbv~-HMQ0Qa_Ea0 zVPbGdtC&q_v?uV8lKERVv(CRe@tlvksw`%^o&fEaZeOXNNp-LTt)7E~Tz7l|KLqUo zP84BPCBRFYMZxU8k=Ee#jdk4`;D=&|+Ay2dTB{{@BHWBYTfrU!?#*i{WO^WX|Ngb% zyAI)eqwcco+@+&?W8-gU7u0u+_N2min-cY1C780k3|wVAd1kj&-MCQ5W`_^eO@KDp zMomFWSMrqix64*>&)=5@A^G9+X3t{BiotWXzR*9N)M_n zcp^TM`EA2xridYXAR0{E<=FIy%4YFFdxSCZgx53P*=+(xa**f)+d<69F3Vde51CIJ zJbNVgB_XeFxF<|Cl8YE|oY@+qATfdU{Iz4Qp_eRBG#i>^gzr{}IA zUAIOfXP@(h=igL40RRLAoXm{~P`}$f_dT~Te%>5K%fpWo#!8b9vitXXrad^4V(o9d z9~E3*?0Yhk>g`=8s`BBDd!{|9sNj8axQIC+`6QtX_mA61#4#_5yYD62DRlgv-DMT? zr0%^P$4uW$537d@{|096`~D*BFPXF!(rwhLqkQ#*!ox@YrixirN#8!}P%=2?J6Wj7 zjErT}rNV+Qzhwj$aT*fvy+Bcrfz!R0(r-M(0*uN$xI(Dq_Ghl57u*aFOn(1k*%a=t zyk@Z<=!?owC{@!nXo!7HZW?RWp#<88HuPIc4htRsesXMH7$r*SSC>L(=dtzPqLCA+ zL%0$e<<&gP*In~Q!AW31$bE_IKYflqQj+W)H*!7;K5-A#JMg`1g48t2_qW6iKDphy z>KIHcPf#0cLc)1|wXl!*W5OQ2jXVa0~Rr+v+ z)2hxBJ#U-IPZKf1bmKU(t`rigOsZD2mjJ@+4dQ)F2w%bRI`64Q4|3IN+*1b84Z~A_ z(L}m5zI5T|$E2yZ6dZNK7!TKeA4yL%n=j96GBMZKWLi?iz%xbw0Lcy=91Qf z_l1AnYM_3X@M5qZw(zun#nDa(y&JqM(iJaM5(dhJw*5U1e>5F`J}1nKU-+&^80+oT ziC@q@?=PGo3{fxC!bwr(9|Xl|sU0SduFdaMn;a0i@zUeOnO+ME!!C87jbY`dznbA! z>#!5Iv!^TCn*sLvs#VI`8WNOOf*2zE!6gY^8hhgjyS$D0P03=J*?YC=areG|epsO| zdB7W=?3yGJ-r`ImnwkAP`rhyCwZOE%qgbO(p5u@YeOR)m;&gp|AgK>Epd0r%lkl|i z*kY({vSI~Lm>Ss)w^KG_M+BgQF>$2D-OyyB1Ez67*ZIDghuTgqBLrB|F;mI72cZA{ z#Rdv)y$a{O*ko!2l<%TRLru`oH_YCPdwTUlGa5(QT}aYIjd1w8^}cc|5-NilcFeC7 zmhj^(nw$W0(0>lyQXlJ?2Hz!X{5?=6QeVeBeR^x#Jmzh$ zZ%|#o^-33^QwtE+>%s#X%Ww6ClWD&Ro*D#}xSB>+Tmc?j{1%`tWcW?5=u4rKKw)N` zxwZM!l%p_MJEQq9*TEE|r7v*dWG+D=hy%8`L0~E0+TEelA?cm>&H52kw;In9uS?x* zja6%I2YGQ!#rM?%y)BAc_O>Sy{?HwBB__sBrmiJUmIztGp0=p6=4$(xOWDEqhl?Ah zi%7Q|os*3_o$YygJ-&!$zj=oTF`t&)iny#-1*h8q^iljvbx&tYsXM;rlSMQ9Zh>7E z@4(xM<5+4hp34Q=uT~+r_%TPmiwQ~qT-clL>4{yVf>Bi`w_bB_>gjZ9?7O2pXgpWi z;n#XLJ~5bo_Wt;uC}8uPDAz(EzI@)+$kxsbTtwfEyC{AsI`|Wndcw4z@8n(~`6z}z z9QS^4+e+tRV4`UHj6e!imBH(Smf&JOpVpG9Sl|jnJyvK~hbZr|w?2xhp$%Q8ix#8A zK+OEdj29;W`;K>?$zPWcq)-q+u-X!q2#iwg4vfOA`fokFL|?DW!f0&savbm8!WUsW zttDF?^xtJfPUzoT!DvXB*(Vn}vy|8V23@xVL39G&nZVlSi;OAt!O%HV;Ce#$fHmX( zynQ$0j=}f)%|D+Tnyl?y2rm?Lh}q@K`uw8hG$B`D4Ro0jDHQrhf^!z>YQcM*rO_EXL=OXhNSDsjmMR2OsKHy2?X6j8N#mne|)$o8pQk#p`2b=QM za4bm=>m?Xui3cZ}0I#ui*daE@pC=m>i}xOrP>I!F=+wxURa7}d;1ZIO8g4*51}Q?TD}8LpUGM< zc`Y~OGg#*i2l=>S#|Qx|<*EQ~x|0;rE|`ueLp**Q`!O1X)`k+KLc7;q82I)Fl*6B| z*pp|F_UXFI)HRFVSfX$>XXcN@+vH|MB6FMoWVR`mXF?#W{1){EXa*r2hb?QF?IT1Y zYmwQtrzZ7gw@Q*Pue2}seR!EUKWnxx-m~0kQVTc$R^#Wi5=%T>r>u)Bl;XUKCU*Ln zEy8;ZJ@4-gb`5upyW~QNXID<>zv!&J?;ArH$&+9tvvHuEv{F9wHGw}JA%zg@7^jlx zkax&V_-R{FOGiX|IJ^BsUTcLiol_7v+xfFY-76{?{pg))R^L=oH)fUF5GfSG8-ag5 zc~Gb(E-5a)+!nJEnWdR-Mo2-iob@?-C5i>v&6S6R5tx8wLN9`R-T*)*UQ;q^?qGzP z{wuG`gJ$I8bb4i~{xG~07{!d}&1Qyral5}L(q{+d} z|LiDa74&||=?7BIc`r~1xgk4Hp?pU=i_#|8+T z5`stzfC{sA5DxwDmZZ7KXC0qpbEMF{8ql{o0OvHofBuFQtYCx-FN-sE1^EXG5^J8I zrlNc<0VdLHjL>ZFy|3no%%kx^lF$@`_2FdmF{c^9~>BX2&MwJg@M zs>-^&bcbKxL}OJ5pgYHPRgqmkDSqJ81BkQ}YvV@=pE)hvGK`8w1>%1?ZZG-#))F<~Oor!&&H5fwYGJ#b<6&DKN6N_|C z_gAjl(jC)|%-b&t=qlEU+YEmD7H^GZ z9$YLYNKV!sS6p_evb(OY#=tZ-NB1`P@6O#9C!?D}Zq*3wp-+Knc~}cRzm^7ETYd2w zLZ{5cKIYH$_Y!@v5MjnDB6N0xBU1t{F1#a!=1*8i;?WYZE1|kZK_Ez$h+SNRAVM(v z`cMjJ5$L_hUrP}2AAt>q!KqdkSZyQMdVfD!c06`vPFT~m8a-izt*({;u`+DXNXljrejHKIUZbq zd)>GVu2gmGI5&&^Stv@37IidE2xcEe6vh}<^v@Db!CfdgWlXikBb7SC+UEv@hzkG< z>_szI5*9Zv1~pula1_A=Nk*rIQYmiu_#C`TdgCbe0J{a&6q1=4qT^F5dWMw%X;S2K z1)QmY^V`Ocv~bAcsp2TtF1-iML03&@Y!?dlb+0-GN_NkqhN6c6IHRNdB)gj}Bm@9L zTSD>>X{&l2E2qwxy*m7|pnk}a&J{=U(r}5}GUza_EO3py=7_?JRJ2Fws_gDg&<(l`5hYZNha@z0YWkdM5DuU zIlYO@e{W}>H)v~OE$D}jJdz0Vg{V$3$gC|v+(DB+iOA|s5JaGD3v+e?K1CKUTY(;^ zpv^k?Lc$7&Tfgs}l1}lmL*cou&luR%f#EJbVT=@}UgCxCr){;gJ$|I87{wefPN_W# zE~ZYmx-2`31Vq4vH#Kr%wc;mXBj|_-V!u3E44~p-+!8oX+k8=@tRb}vU1zYy$et62 zQ_)~5;mabUC6f08ieLlQs$2v!7cH>Y(jgT6w`&&NE2gbNL$D)-B{jlr37 z`hTYV{{Fw$@3pUX#xc&E^PK1TT;8Ae=l$eoWkkvz4cEy7(ZjRaFA2jt(o0yd4(rOJ z;M$|Gj#>53>qhlH^EcKJ8Zw;91rpX)|NHnXBeo1i)3Hp*Y<}0^@_OHz@b)T#xRx0L zaoAAHj<65A|I}!v%sLY*CSEa(adGq}IiCe~D#BacQXdFZHjaPg#Ddt!4T$m6AJdUoRo^y-vcvh*wMe z7`XE{r7r&FBUh*{YW|vq-IUGTtdpg|2lB;ZG(;}!K-#E^8lso^8+K)IN!RtYA&$Q}M;3+G zRwb+-*mo2>^dLU!LHx+;-81*MRpp#6*|UZ!2_J6F{!DNp@vwR5M*ek-rJ^ly$tkfr z!Y+qON9(@y>yCt9p;pvMD65&Y*>=Tc4c0_?L^wl{9X;M|yV$JOC(Yq}dI>H4+^((U zd%O~WlK@h3ZvL9Fd*^2L=?KO6cWZf>AWtC1r%h}l80@L5giZnTxgpVf*dP@ECI?n@ z`&*YA#GvC4VWlfx^T^$;Pt>ILNRZt<^?QZVZQ%|Xv7&Ro@qJ^^2jQdwKjj9Cw?s`* z#Lh&6@S!wwOl0PciS~Mar#7(jFrC3Mb~#z*HKjd&=zX3n6CZWkmU#G(dVf1EHRv_7 z^Pk~*lH>3t=HftniBpq_>(1t0^4Qr_YV&`Dd6S&0dmqHdePxA+u9NR&9b=a$A~}`5 z&XG`y^8EE4X;^Ik;iBg(Q8Qjl92YtI_#J=M<#A00!G@W!3MWB0Mx3A@*i9@U%OK}n z?bMk*z`~gTF0_z{Z_juRmPiZJ^kcFbKWcXuC4LS4@K!oJ1y(2ttq8GkbgC`knn*sdhhh2M%CaUO`m5K4H$>N2DMY1Fsl#hSvyMZ-i6g#& zTQX)BIVZgI-w;UZ9Max=0Zp#2(bN(5eH4d3kQOE^6Ly{EAg_#I>cu|Cv$rK)3U^yd zaQFaWkzXOR-J3CM$;K~Q(brQ}1*)0#nn8%tv)O;F?l@W5SmvJd;LYKE6Fax%+}LLn zC5t6J+P8BZW|&?6@MhnYcki9`cr<#-6VY`~M}BVBR$JZ~mIGeO(%SPmaw{U+qc5`7CbvX5Ye9$0gl~eJ_ot6bWg@8j?Ky3^vu-5SBS?Kb%F!R!M~5CJ ztW1)WiDjaV=@I(5cUaActJk0$EFP2cP3hURL}HA|Y-)F$d01G>3{wA)fXF&=l#?Er zj$Bln&wbW<&>Fx+Fic;=Rk|q+iDC`1OGh)4*YZ`#Apwa%&PnA$s{>BfYq!FtUF)J)LvC z>~}f62@#9&SLyI9_P$b|l8a>+GMgaeRfl)S_r}ypjmJH&8_A2nJzhC#gS=AhVa)$z zj4#Z#6cLtpnop5*o77*Lt;aW63nlZUpX`14DP;CsoqMilpmX+GIFot}!kTG`X@ zKex0FpzqJn2C@zLVSreXsrcOOZ%Q{)hgb`SSMTe)HBFq|KTVupDuiD+c*=hZ-65HS zvtcB&v=dQT=2P>!jl>?M_Y~YU8_r~#2oGX&6hxpqVR-e_?J^jx8vothF(!V|;mYiS zYkHCnSL6mCP{tNVaqX0|%zFk|AOCl3F+BYD zcrb&WMRxknuc>lQ=9ZN zTk#X~uZewoLYZgbB7O}7DEkXXcx?v-cZ9?>ss%eB5<+nC*-IsAqV1HQ-`7FVxpMt* z=3af!+Fq>5XeKAc{hN|y9M(~Ce$SpX4G%iIYu_V9>!xn+L$b3nhz4yKjM2u4RxwM; z*T9oCRS$TeoXS*|h1l&K_~DzA42XMbSed73LaarD zky3_jT39^lJ?l?um0R^>N}Uh*uGaJHoYL^0YbxKq24Skkaw;^xFzK&LlDH_R*dHBw z=HflwUS|5qkti*BDAUI)g>n*23yXj{SnqXss$Zm1ZPwfWjwxz#>CNYfJ;kwH>r-jS ziqZY=g1S@0j;i)2zbUPNrNE>f&H6f(5F)sHO3jF}i7-P)W5V(Sf8c#0-nWaxpBvg) zw(o^PqeHk#=gb^3e2qr?rZgRibZ5CQ@#!fR0NW(AJmeL>+_uc;6@OCe(vlmD-orU2 zebJ^-uY~7}+ibEhR1th|t_!c0l>6a|NW?|!kRV!GA*lP1h$p0l#@$4|NQoc$TE)mC zVmIG;f+!DjgwhDZ@6hLc8zJb})Sb6=ZU@}rFt_zKR{J&)H-qT^qL0_c7F@HjU{vgV zJ4B|dGwfEWk0-FlTK9@7E0YnKOCeuXHVGGRAE$timP5=u>)pt3egSJ7@H_Oxl zmaMumK6ot>9CM!zkv}Og`#-$UPJeoT;+{&D1&hN3-2&50n2<1icFfHdY@b`^~7-LDOH(W-R^Hn)&Tq5?Az{CAxJsmJ)Az1TJtzkO)nW6HS1H49_q>` z?tQAQjk(PQDyDRwo-Q?3>tP)RpWNh38sxO;*W z3Y?I}x1kik55*>zwG?HYl!U&F`oNR576JFI1F4(6bEfR{4Ju@U5WE){BF`d?u;J1% zZ5g1wNUczV8WJ2Y@D8wBzZh(@3Y)gy7ZiksQWn2Io|3h|!`Q>*mXaUz?4MWwZKNre ze^nH+27X8cv9XjVi)|DQ;{R5I(kTNO#cm4qpWDz-6D1oQw0L1eF`^8l^tkH9G;B>v zNgvrxZ?`_rTT>qcf&g@AynmMaK)UXfyT!2zgvs^xSQj6B$hek0sfa%!`{MA>B1~or zb%0lt_^^L|yO;)sSYZ-Go@H$O5=4hg3iJj!O+Kvs`!`d`7}5_JpXd;l1{R%YfQYH8 zqC2|gWv#uPKg!v!b+Ol37l+giNe`L1_72Njts)#@j<#2oTY;>cR@ z)GH_pa6Fp~PG9BrpN-2i%I9&xE?Q{Ja5}f}yvr)}6p=b6F1JF}oUv$~VwRyi`U=q2BcV zeAG|YV*1KuG~d4`I9H4%NrLs53Rq{Z03C#sx>X5mC#YW?eViHi#4@Rmu(9LeW3K_ zZQ|Vg-XG8bsOdZ!=ru4=UK%$4H-t#XHUL30t48=`h#}+AUqA}08Zt-64j}_-tbpN} z8al>F9sQx@0u}GQr2dzBm<{wAF(hf1)?F7|NWrmlZL`)ImyB;X7p4W3RLB8bkk%HH zf5KXF_+ZrHz8hgmZnX49LpN!Lp@w7^`Oo;gDbSZ7i!SL$b_IK(NI#2NzYVRr;y8Qm z5B3<1+Aj~Ym_q98vgs&`b#bar1!=a+PE$>KSpKE4Aiw>;!m(CApV??)vntk6jTF;W zwsjMC)7QG0V~0!)+at7Riz5zpAl{U=@PpgEMQM%A0-@P1G1Q9Eh7+Ktcbra z5p$Z4oy;z zP%yJXAhOrrAbxg@A#FKq(E`;{tFNM)r^Nqd?W(Y!jM&Kr#$t0i`Cj%DVt72Hm+J1P z!)j12&=ZTmEN|GhyR?TEDfeiIPM*b7Apdgr{`Jf&(h7bRk+=EKfX8dClX2hC}8{b$}$hNgl zAuqhATg3s%=jVp^Y}y$OiSn6tla$*>Kil)I>6YcC#m&8udUA1Wx7Hl-lNYq8)7~V0?z;DSF=v6j z6R}GyQ^%^ZIT4{Iz#6h~8klKA_swb|UB2Bzd`HWKg`}PFMV`nc^PAGW{N(u4d;@EB zhw%=_Lbk3qZA@%fCf?d0GYb_phWWX1g{(ei!Z74ac(`|mp{C|to0wG+52A->r#GWJ zdrMH_SnJool^oDQI`G&=@IV4oV5b+yrl=Qlyvy1MtoT4K7f}l&W!gjr`_w*>8O9r; z{^@1)0b=8icrWx2tyd1nNOT1oGPDL28=A8S)XL>c4>ITd_7Fb1TU+eh%(mM<8bb+r zFUVR7^wmkq>cKHIL#Z7iz*QjFked)ycxPHk5_^Yd1FDpbKjihNdhBBUG_CYaDfUrr zig>D7)}my(K__uwD&q%qTLzry^44_9rUA>xOWq%Y2Il4JdHpFVQ-wDDc31S)R3_X~ zg60mfbtrU0X;54qF9sC>(?!uXxzI|o>=#HXsJBjoipq+*m@L_x*qgVv{JgR+U&cFF zVSTm1O+!8+ghsDb0T}0ZR_g50bZqpCFL~~ZbM~XF6)FU7g$lEUbgLaGt>q4DQmuOS zb+9}P7%a0=TtEh!=3+pur>DS!}rLojES` z^-mXFQkwbewDf#R{y^r;B9x*vq|FpoIIfzmucwYI=y(7g|F!icR`wmh)VtI7w!p{J zi4XZ81{uaqdqYZ6AhmVJ9lKvcP-w;I z4~-X2nVsi*jPpOy|2ovBU}bLwP19}Fc)D@}!iSLxB-WRxFU9s(fTKQ4F0;w#AXLVhu4Lfx1$ zdwMTcTLpAF$8~6(qq0m_*A^WRkJ69b^+r|?u9r0gtwRg$NwfK3-&tUQaXz+Dh{T+R z)%`JhP;mY>UaXB@u{UN1fQ|0$7JvWI{C3nUbLq+=ITH+%XGZeB*850gH}5UWZ|F(O zszcy8fpI0ZZ>LU+;SJ{a_%JAuD7uDj4Al^OM@=cqIUcK}$4 z)@x*V^4y-fn7MA=U?#Y|2f|Ot{31s%WscN*{@jW~U?WpUV$OG(ks8clR8wf|apc*_ zFZjWowwWqkiEG6ZQZyC`Aod)dbG z*V9MlK#zE*KG<-;ST47E%p*^<(Sq^|>_PSM^>15}73?t}mAyH<2AYik!cBqKBc#|~ z!Zt|GdI-lKBs!RcO}0Km2T#sxAlcb;ab{R(!>R}x3?9}>@aYxXjiqGa;J1}u0iC6v~wtJ?m2Z?URe{f#VsVm9xahVNr z%QCH;&^=P>ymI26tt z@p(`K6iyQc&+~sdIrQvep|P$3vL60>K`?zB@TjuQkbN;c)1GqSMi@V#7_FySRpFnJ zfae6NiJPkTHzgNb&AT48I))D2+6u0oo=mzKr_o~QM<_G&)6Ly!0Ad<;IuzQ+Cn~A$ z1rK88&6O>om-Swf^gnx%jqkQLJegNz3UZyc~jqMgV z^)13hQs2ty`f13lPxP&n@_f|*KZ4d9DwV^i2;M3mKFdgu4zuN}nitB#IJ*RmjcWsI*+ z5Rl?tU1Aw;vM_oYM*gx_eOcX^qPLm-W1Z#EW?-y~93DJcr1l0do|gAWe_uOsbVwiH z5f7r5ZU>-_I!u`{e#mKlhHw?6@I?}hYe7UGZ*%3g1-Jy5So9olre1T1Ec793^E>K*^;JxdAT zK_Tqy-IM#DSI5oXM_CXBCGoHsQtb2Ii4FHe*SQ6*>oR_PMXzCxpRfaf`_ju%z%1!Y z;oG&Co(x#vFZbU^ZiH#n$&H&h_#Wq3@)z^|xL08&gXP?Hz?R@M;|r;lH;TR~tz;hk z3Qyy13L@jasb{}FmT*}EmmZ>o2~9!ZC^ykoUZA$3r{_k7w3dObk=nY8Ghis%=nA4#RYjL@JjRia8UQzdlkOzE z&xOJJ{=4C&tF-Ao_TlDy=kZrzkuDZJMOYJ3?o!%A@6IUbYu%yEzuV9VEk0li9YTKeUI2N?={cP0H*41S#5a{MQn~^#vlxxm`Z@CLU z=S96znf)7WD0YOg-3)$2`VyI5RwYDP&(_H=Iv{Ne;SP28->mvSo`fV_L!6L;xy)GY z%Bz$t20F7q7ppx5q6WV@ z8kZvFRDBh`wm3BNB5jG`IlPcJD4g6F0icIIu@&p!rya%K#Hc=o?$!Y`V8Dou$ zyj$(W6QIS8OYI^f3;bY-*&yW(t5|GhNPuvuR|$PjfNn|{YmMlXS??j^k7*hj`;e-V zW*zvWsuG*LuUWObB&ssdp?WJM$3x?lPZablBC`8fM-t`8gI!x^m<1}@^LA8!+@TyE zZ5*(evMwHfP(834+?gUl$krzDQnYK%IZ(7~=(U!6jDUjs^q=M#@MUj3OTr?lV-!py zzwfV%Zf(hsb&4nSMN!$XFp>%$5u0?0o?}VRxtm!Uf`;xi5E^nOhO);**Rx#DS8ryS z%{M;+ti^1;m9uBNI%)`fYs@xc7W`WFlfpSjTsn{S@-%oHak^9bEF1fpZCuEWi+lz> z+yOw9@?Z?w07lKhWyMV9e+u*bY1*CVywGg^Hzg%h)INf>Pzl=5 zb`V^gc3k_IhvsYP9plPyHOBO?|LAQCKeo>^22?~}q-0^Lj@RsOH(X^7mX0Co+sb_B zphVH-f_xTVo8M8S+ijnB#w1778RA+>l;oq?E`CnN9g)o>&eShQMxj4#d6A44gD77} zJ%HqSue*I=cnVADDm?3qhK#gNwq7?mTbx%v*?U1K?B{$_TJ5wtrnva{J4(7G5S_1w z;FE2{nU%*o7=+%lHu(HVEZD7fLS^gv^4yEL*|qR6kb1CqH*>0M4;#S#0OD?rKO&*2 zwhv{Vz0dtvE|kf@e^*kv8yt@81Jqs@#eJzo`5<4r|Gu#-Ls9b0+U6_GjPB5S)Qk;e z#x@Sq_0hCP5GdQ&jBc^iX_6ok3V6_t9Iu|%WWU_3o4~8Iu*DK9&1e!0GCD>u%?Nk| z#VDD#T|%+B^*P)=#nXQ*d?;(5$t1CUO@>g6iHP2t-wx~>N*pC_?dY@Jbgr}a7TsFN zG-|0?#giYahCnWe)X=$ZK9C*}9s2Hu=ni{zRGb6zy4td1k`T zb4SEM8I!I^55U=(hf;_5Yrl$oL%t~mj^sA?y_Z(I9>$xS6+c(UF`c|uZ;LJ5&xVl^ zWD4xmM@8mM1^p}|u@|~wRvsCwM=#EsSg~u)Dlol%(!V>}SV1XyYpL@Xw?#tZm17hG z%4=8&8W_zUkp(NwDv%ms?fKBE_q&lbXJ#ZSb&LAZKv+glpV=*p*+VP~-k=FSAZn}r z43B^}yk5H&KRddk7noRolTbjiP57siwimN&QN0+QqVPHD3^EW@v~y#6+kJIechpur z_C;PoS@DENLGz2kVB@{(B(H^@cm%NBZ}0GP2`*?J6@Ewz1&*-g9|4Ko#}IL-=RIL} z4iTll(U+aiAWGQyyDV>dlK#_3W3QR}d%r0ygnzRocU|X>$3fN_8s~~2-;_4xm~>Jn zm~Tsw+~3IeB_&00*C(v`7jl1fh9gY&8*rR(NBR0OV@BFCU|MxpM`G|Q@VR5{_BzU^ z|C^Hge)foo;F}V*D!H(&?Bwpubu-(K7SH&@+0RCu*~kfbhLn>hU2zl<8`gLiCFwT@ zpKacr6M{69l|s`?XmAwr8Ka$a#cT5mCxv%=3Srp3OwZlyjTViN=fIWUeg75G)X3tt zGKS~AXUM6S#xb47uR3AwPRy6jG^~S5V3wkU<}t}+nHV0gcmt^5oZO@jG zpULY!zKcd)?aM3|phY!+i-^jt>?gt%+A1o0z2K%BbV8t7HXXP`r*%#j8-fyrjQ96b zxE-VqR@vQc!AQgDcBq*(pPrycz8B+LbSJ?dz}Q!h1|vns+VQRca`r6iw<*UX*ZT2= z;)6cjniqq?QJW{iy7q49fD=Q^a2C8Y?;(@!LN0gnWy`uOu)J)fp`Zwx(A)SX!pfml zJXr(e@+GJn9l|4fp?ES4>Xo|W7ojsec$(+D*Yf<-%2r==TqijjlI5m+W%Z`^lE&J9T@A~g?nnnE$89k7$YOBM&^7~tMCgnH7tT;n^w8v zua`(Eg?WWoN?Q$mluBtci}26Q>ei9?v=uPxT9ax|*E)SVZN^$6p9DS+R2kh~0>25K zsz8_SvC9+P9e9O>MR)>npb-&sJ!dwtgjUu}6?mJX zm~L(!yF51brElr}rFjf#{m^M9mQ)t3lWQc~WnR3n@KCujopd{&wNCDhx+8Sy5&ap}`;YAYt40XIANqH-a7=&RZ%! z^KfdGd_`<~4XuYU5Lvdw`FD9L7yvg_;rXYVMJ_ZNMAJYNh|lTUcb9Sxbt85~X5O8G znMW9ASVzs$QZD&LYm7R_1g_{cg64aN(>24X7lMtuxKo+}Y3hR&`diPZn^-w+*x+aJ zEQ$ZXDc!T3gX^_06Bv@#Yn+eiBi${5D;h4HwnW9V(p@8dG8wgvoD@OYbEEb&c85Ki zamkA^%N^a>1gaz?vgeM5az&x_s2^B`b-1ZRff@shPgrYHg&dic?%dvse9ktuZtBCDg9VTpuSiaC(9z?zjZ>YCC3O&L@cd{E#GKJ5fO5&9e=h1GIqq6)-mZa=Ie|FhGy`5%c*0f)SKaocPGF&E%IKXk4)|r zIqTwwj6il*h+m-x=}Y-j)J^L6AsCzI)8?r;_@)9@AjE$&;FGffjRX3dz@b@8E8kaperHo21K$+qGjFMORQZyBY;KUFUo@yyJZ_()>d`ih zBQLmbT~C>W_volfIB5RdeN2tmolI=ypsc^|q--z)+YWpzZ80xX#>R&DfwGQg(fO;? zDSLd1d~dai>bo$5hj#*0~|Q zqr@f%sEZ7cl(wUhtLo<+^z6+&n{AM5em}7%^msq92ae*SC$*S{zv^{)6)yc+i+Xom z4Ihg4WtWGhEM`;)>`wE%N*syQg)V;E-5ceYoBU?}|&4{BhBxM8mR2vh4GLjs}cWKYV?|5u_-2Q`H^ z{IVI|BJHPib3fs0$8amH*wF$;&72<2_?*#eF%@%~JZ+!yp_GuFl#m%ZT7+>$@n#p| zFs@!Q%s(XduHDAoONkx{^e)@MLhooZ5h@PN^6j3K!>FvaLQ3h?mOG=2SgId2{di(G z#_#L=t68Ud{3gN*^zToljPevTxCU#xN1Yzlf&a-fM_cogZxjjZ4pj(r&h%qI-O_K=PW%s@)_C`^v?fWA<)jk62~C#QF*dDJ|0V)67({(#|X4Xk8)o{ z`{5G2;rN9RE|M=g`_j1GVV8b414}9{Hk~@_cCg)yRGOPoNP3oAy5dMua_Cd3YRg*s z_pLmX+PD%(U(1jD+(N;sz+9!J0~DH@^yZ(BlPmRc;t-%Z3TAxNJY?qK0u%M6l9t&k z#z^QhX%r-B&!8+1vA{F?`8GMyj=T`gkUl(!JB7wLl^$A9D`e_qPEy8@FSQKWnbj6M z{Mop@rK0pJMo6%DK8a2LaQIh#I!i6(&T3&4(=jx*Q<4n6)|3aXMxX^S^k&h>}9j(B-ydXu{y3DQ8F{^{N|-?>`Hu1 zv*AfsdzYb~(%i|PKHd~9FuoU$cbV$2>NM@|Gb=NDP!=5u51^{V*H`ElIoakDcxsYn+M854N4x9#&c(+Mu+)>uIaene zzRnr7x;Kt^@3~wx8ID=x=5JQ-7BN|wi+;WDVeF|Oj%btb_dZ@m3A>{hh>Jk*{V{tL zTWjy>H)%-m{uLR>-E@F^ly(k47kt*LYduZKYaejfZ44}W*tn9d9T{Z!O^K5U4qG$} zm#di*|4qpmnITn8&?K`YL*hJCNaiS%uso?w$vo5fX&s(;(u>;CU^~BHD8WZt&I?F|S zEUDa>G$npvvQ{Fsk}+_U-NRa_;t47pd}C;Ym>O>qgEzl_nci{w|cgu^TY&GD#=`#6z; zFR^XW0l#W>z#{J7^{_A!#v(fotAzmO9G4X#4PdyaKgq4uZB`wl zbf=Ju4=na5nxI~)vP0iO!fBet&8opWXxcMcN&Tm3FmQrVm(#|7++EkzYwEO?vEAun z@vQ{bTV>r*76Y~j%jX;kI?qb{I>$?mu*@UR{ih&kyPoiSdw^lD<)3krNmVoZ+-4x> z>Y#NJTVduGumb}(zWqB(tf@a3bwtrl$zdkw&wb5DyzOvXV(u4trFv)ZUSb;`n>r!j!Cw-0 zLe@mRq##AWToC9)omwIvcOVvM$&;}-^*)U}kuTm*H2McqBC!+t7b0^Pui=hAO^&Uw(k4`=^Jj#(sJ%Ra)=GE+~il@v7!Yd{D2(1g3~ zQN=Ve$?!0i0<>k_GeEo&4@QsXx5((MW4tQ9$ObDquD-@v_{VOZmN6=NJUB^L zUSV=0K^V<_7m0UBGT62g%aFInwZUj@;o;&}%+z1q?S)T6V|36b5Iv-~PqoEr-zlS> z&fsBeqXtQ(BA+F(*8~k9Z3Dq=L}@LPEq8Vb{3u|YiFAMdfqB0PWQ3rUzWI4|_%48= z^*c5v`{5rQwaD1Lf_(AD0l}8%ot}ZYr=d){OINead0+5`)niT36_f>$X_DhwkR^WU zA$DbDf)a%{pinuas>H9BSzPnh%T@n^Y`mW#@1}|&PG4zni2@95(zo}G6Ck;C%ekgU z7iDW7Th2j-5?UDf_nqa+B@npLFP&x^Af--gA(_P&R9mw(LFwp-dS)VyM@6Wb%CiJb=3P7Qq|P9`|i#A+T8#Z|9ZbaHtYL4 z9bs#oeRYSn4mTa5q01uYO~fF72ZwuM5)j56fOBkC><$4IPk+@nrKk2S_c24l#~S>W zlwnJrZsDC}KMx%+_=$pR6%e%NRY33{0^dh?r9Hn+zBucrEVJIVHE3I=@4v5)FBg;J zL88Z~*UUZh6zQ?^2P@>`STV6!J;>xc_^z&$~enr9Jd+An2a~u48T|MWB zC857Z$f!KSYg-t>@qVYfDLEY}$9NCCtL{Tg{=)lpePXFRlkQS4m=X6pUZHy?q?)RR9m4*5kO@aKI?975?eVbx4sXc|5NQgS}+-xH}xYP@$fKZyN z;L9!6szsh?w6r$LCC7`&)6=}Q@NU0aPlSw5Yf`_*_B`F7D=$c!F+vl)t9OOh%eGA- zO{;xQZSSl_S<4)aJHQRB0F1&nBxQr&gq1_{$z1W7LQUY;7F|wySYC5hMivNwaS^ z*P&4V&XB5#BA^7jj8JZn7JBP(u6Bk?mZ|yl4=yQ4v2F7v-900Q#a|p4a->DrosrLn zpaV?N5PfdFV2AqBX{y=p(mPp5HK`6?qJSX^T!$GDpF=|WBP7_muC88M>lhP5)79a< zM)rBH_(1O+xj^%{^UjV|@mYq*jla_s-ep5GM2Sj<3P!Ll_# z)b0rJTO{5Dr6OSV{((z>Cc4!T!W0X;YxdIPqQCa3rFi|_+1=W@tq5}8n*~2;KE_Rq zPE5mY5a-lszvEJRJ5A+r@mkd}dQzBwQ(Ei3U7Q!sc7a#c1W_g(pGIBv*Cz^k%by(m zZq;WjbKV+HXarJc$#If>>Va}21?JF3?A=oH?1Ce>9osg(v} zy>xzZ^p`i54YGM!wO}+bE>^w7x=v0V>UfhNprm(v4$@uuk2V}oF^YU8{@`m}5M@}@ zAoD3G%X8*Ww(SY@%T0aoq5pJYyM7l}f2Cjdp(&A0@*MB1>z-qA5lB6?dwuhHE^f{E z<857aFu~5zjMP{RoiQVG#(vyg(IoeFy`9j8l|yW8Ru5tAueKrRe}Pm<%N%y{jG>6f zD1;XSW*Y!v>E%GUkyH@>8DUp;u(6QP=GjXSl$=!rB~5wqSCu%GtVTOr^8N;?Wzff29iPL6ZUMf zP&zp63)>EWknxd1Y6vfAdE3Uj4`ROeeV)(Qib`L?_<0^<(fs8B`J0TXNAHz!Im}&V z?qX_}?tvyQQOq~8bSE8WC8up+_!hBP&Z20U$P$&h)?wcC!;AS^7aq7KHyn}hiLKdz zGX2Rq#~k!?k-r3f5KeXo-NNO2qH21^j=@rete^MOH>JH`sfX@kU%{iNS3Ro$c>y>B`s0((fd>QEKMx0T@QO4cDnzwH^S_Ke zR5Q~&394@ypbmQ!n9`DYuKC0IDtV|AEsQuZ!{R9H$5g8;QZ>}Jw36J%Y6roLKFf8O*FDII{yTZ&(&SlVuYAIUY3K z6mB{D^C=BScknKxlEEp_1?XL)KQap)iLBRjttY;BNju```dx{LdYv3is8+wgCNytv zmb4V92PFF8X@ftwFa%OpcdQ94DYcKBl%rsEUv6BqjrgT!n}E})Eg2A6Prvx9o%kO4 zM0I{&)OsTqNlBxBD9z~GlF$nrnHy$aNLRLF%$%;-8nCbU=;{S*5e3_v065CH?!o9B}%okm%C%ljR)LFx5THHU&0S`GHZ*7mk#HR!K$_&YsyeOn$THcsPTb*H0Q)(> zP351#yNXJygU!WbqAP4qcpSj9392<*Z$}*VlKmkem$m$Cahh%1#c??(pvYOSuR7iA zI_`m-eBjyufbyYLkp+=?s^`4gza9^8S2?K{>`MXV`!OMEs`G;iY*1{f67ghF2q^=C zQogBOyjkeIT8WLXLPqvLrm84}=TGf^{8KO$D$Dj6NqI>Xj!8OD5vD*#6iWFM^7x+%sQ?rY-!6!*ZL)P(COcl{9Hq8EOSzO%4<6>w2@eN ze_}5pK3W8NAvq)36B_4SJ!+0yKDxlJxb!RT@MY|L`sAiyY?e0=rFOvzBT)T|OZ#$` zyNuuWDv~S+8z_xtpyDdV0pJS%9oC%X#n5b9#QlJz3elA={roe3->WV4X)tuwb+?rZ zM_Y~zMfQT*3opJ@XGHGdA1`YT2MghJ2Ty#~72LL`S@lL);oPvn8Cppft-%%Rc$LuE zpZ0cR`kF?0)TD^X*7C0R%R}m@o7J+5Z}#pwZ9QRVbHg~>*IHTZ&|sdOa+H069guP! zHc2W|w1kEa;|uH#(8nyO?+Gn6x!utFxeb)JP50oKA&zP8tnb139pjd!fMS z0*^ui&nKbn`(g5ekOV#18Gx_v3t&$;c=KdL#QbjHp^By7`&?`Uq)GA$?OL{k&c8r4 zA{d@)+Z{P9P$QR?l$87bD^=1f*OjR<|9_^%XFFh8I6zIxF%k1=OTKWi9sdPF`;p^f z@Ow!gOHInMU9R-NgShQ=RyaNV-5m}Hy|v%!_f+#wI`HQ?oeshs4T+Lg8m~YjI4AFx z`s$(eRq|_D2v~)7-PPTNQsLaf4^XxSxOzbCIv`BBobd$F?5#NcNgCwUS4W}rjLdIn zrB;6^NKS`lBfakjHl2KE1*G_IN=+${^F(C8HKYOAVNsk5@9i`OM0$GsK<{tNYtRh| zPQZr*VDd?tG7f+6L$)!}WomvK)j~djHj0&8&BgQa)zaqQ!7yip`Vs*|UX-fhAHCXp z3&%+)@ycX8bnR`R*%B>ZRo#nmbtD&4(i8;Fn3Z2aXYP?TiKWZc-W~DYLM`(jo8ze- z2M&2f*|v~R9_iRZJ^|X;rU#`}n(14})UD*iUYwQmmAN>8N<8@O-dOhj`C!u3Lxlq!*DM1h2Xx`+IHdjoS%+}&Z=b09w}=B0 zmxym;GLGaRWSr2)J#VXBi1MvNu+i6M zowFH;v`DR9^TNh=PvB7llO+YI)0cV8--jm!JEW%qmO`4u-w$9{-+cFX^eFImp5Ba! zS=L3QrQF-yOyTaF|8;jFUH{o}bqVb%QWYUzd|B5XxWfPnFl3pr>H%3ANSYOG!5GrZ zvRVd0GGA|H9b{`M*)gOI^x*K}4z40)L?+)v(=NvLjt=-1b2-# z#BcnpJ?~qP>ixwpM#L#I>c8#OFM*iG`FMk5l13qi9<6D-Ez_O+r1kj(FpF- z3Ow532)l&)lq0cyEU?{B*)B-QoBI@-)Rs6$|FCBz%zdTeyh@#^QrLJTtpRtJ? zIKT}%Aozcf=cg=I_9#k?ldrnE92TPtDmfEF5OlR1#fE~~|!oE4sv(osGkWl%C<3@hogu2>W9uO+odD zMayzw&gZ~NyQ~4&%XdfT$QH2m$6F|2l67c}?METNI>8yp84sfeK#C2{*|Wi%xd(PQ z`YUhub}gSXyO@bK1?-S{UIwgJ!C8&0^P!@q`=bVRYsG>L_Ut@8`6|ATOk5}bb@TA& zZ1u3oLUH+2+uqCz7lWL&gS%vFM{L7{U zZH7lS#WXyU>^^LP7E}zcr`0fe`6>ExLTA@L?v%djfSGlRQ14>X^>@{ioA+edhY#u| z6oW@>DJb8R)E3Hz=DTzB1iSkNevv@Izk4)J^-h9%{7}?=XTx_aGg+6aHadKA%8ODV zV^Q!$4pk3KD;E2BR~-o^4LdtEzMdLOS{MXIyx^KKNYb8e(OXR%&i4DIy6U3=zgb2l zxnr-rx}645qwHyNDVjKJ=9QhKcdHrZ*RuumV{V$ilC(CkrAP8JWrUN-Q-yvCe=>SQ z{dAna`~tWjv0+%Q=7Uu2`8F=ZMf9Y#VhG|Pg?=&oc$|Fgw+Wxx+-}3aGsHs)dT1Q% z6U&d;bIS}ur|1fWt9<~jwtV9EeQb3f9}Ez@8B*YEDEdmES7g8M&cyMkHF>0rJ5vxb z$_TQ^-R)tAcur1pBw4oZob2bKu{2;9VF_C-JANPMzY~rVW|UVDt6BYm&EwOB)rqm? z#ucp_)O7D=o-;k9P|FBfUm=hEmtVi~RduHGX1L-ZK&dZCHG(P8QqkMD6MiVGYu43& zwlFb-*;&Omj>k!z z&JQ^om95KKQi_{KQfS?SDraF9>Kb@)V-wKr;B$xXfqI`NIYw*8#lVHl{+8J*b%0|+ zV@pik-b$0xtnr8;ojRY-y*vSMp0fk?k^_7uB>oTF#^(DGlg%F8D$;)~8Zf3hmX}MkESePi73)*s1 z-jyRyY(im82jLEdXraiGPq0i=(f^e0|Di?3mB@w@M`MCQHRT0hEG16Jiy>zf@3U!m z;TL=nBgeyV&v-P^pkA})Hq57DFyG4aZGhKNLx6ocY9E1t6EBkvBwYZ53*qvQ>5kfO z*%FEvqsy1YFAhfJaW&U9uw;aac)ZD z809`j)fbbZ9|B5U{t<`kz;nJ)QL`7ukUgz=ZcMGx44AEB1`Sm#l+e+j)(M z+Em764JEO*8*0W2-%FP#iixOmGI{RvKRX(5LKae4(a$hbMgd}LZ_P`iL-$vG><;17 zriqFZIK^~p%kQ_n8~lo}=Nlko%%spnw)(pDg|Kp*z8`QQ_GFYL^v{oJ&)sEbo)X49 zOLG$YcQn0x2DGF5;Fy9+^DrZaS5N1(a;_#uXiMqMBPrx%jD zMQ!AJB`E>bv1{f)PA^RA0bhwjr%)*2?nGW|-HljSGu5 zEusK|NIgg23Ql<}E#)`2A*hLVn)PD=oT1Dqz(Bt#rSRM|m;HiV((^i`JeFD5D&E@~ zW7N4?XKH!Ov-FDIv}1#4$9bJ+Di6h>PmR{i67J+l*#0tI&?w)rHSpllm8Cer1AH=U zv#eLu6`OdP{ai5#v3sOA_5?1J*cH{3FF{-2i@yFQl-M%l=sJx1c!O`Eo(r#@_TI<= z5SZ!e-Jn6Nwl*2(rbS>d*-KBr?u$|RCld{j%16L(1X4(^m!iZ>hk^OW3MRIQj601I zKjvIh5i~p+jG`c$4o*KgsVX|k?G&99VECh5A)Y$;vM8RuED^A>?CX%=;$~UGZts-k zPqEs2{kW+IINIchF-2*)6-vuL+9M(x3*kI>+mDXQWh_-p<`DZ5vIclJ^Emo{bz@ON z_P?mEbsce>09Y=d@pm6Y{eMh-c~n#97p=8}RjXDIsT0%z5fD;Epb8{y6;Ti)Lzp2I zWF|yq9>T3wML{5ZvOfvW;^JU7AkHWsxuQw39GeTt4v zEBC`cq;YRL7})wI7v$-aOw}g}<6m4=D>*xEwpik@H`A%T=!i8DHmzeCv*7QmWz(X{ zl^oFkwTZuTnyY@_t1pCRTu^=cm>ij71ap%Y!R; z1;aufSi8#q3{xf9`W!qmescY}A_t39n^j>DjCamFhByJ!c<{W_qciAI?BSs%MFfWh z-T;V)RoZ^gW&J(T>jh5Hhdc`rN-4&(KGMries;H%DD%u|qOPe7#0I&}s!}ksLd{Ht zEPTNHDXV@UrdL%<+L9+4kN&>q&A4$IxN$m;tkt?Dyt4ey`a#4`?iBv-hQEJO23MER zh~;03vXQp_Bv$_ozuM&;&q0(rsZzeZ19(@PS0yG_73Aw;M&jq%Fl1};XkJ8TAAZ5! zanP9*v3Jny`zd!>29+-D4wqBVZBUYykBeDnFFsjmF$*esFk zaSIfK2f&+txp)b>?`%W*2(Zr@`*MxQmkMD88qqyq+mvB)aPWl zc9)!58Ng-;+&LaL{adxTt00b;=08bXj)X>vHdJOx?W9rcN+`9&SWdqAv(bQMt74FwQOIY#PjpB7 z>0LUN?5UHCKB}<}Pwp)No!dKn);U|)R^XgG!!CnNLM?Tod^qqGLc zsA6FyDH6ARl|1?aEaXn+L;nQ)^~G>`4=dVUf|4-Q7q#1aK&ZT6(Z`a>IUs*tkvdL~+E-WqQvqJ?#Mgtf!;)gn z=%efP!llF-^(g1%0F1<*x=`M_^?XK4Lp zz_;+VcGhx>={fNG<3bCwW;@azu0DWL*Ub%8qduoSY-`F;mCfeGO;yLUYQ+x6l9xDE zd1&~w1I#idp|K950(A7LWafM4T9E&?ImdwxQ;RjA;a)Ao+r^Z-K^#-RoY?WoK4F7@ zE2zk)f7=;Iy8v*qA^XP*x~>=2G3&DR#gh5Q(&}iRHgccx=G`x_WNon~`_hG2JDM-m zG~`J-FooRUsc6YfRJfToPUja4KmWcgR*XxyhwCi0`t3(^X~s(y*l)8jljEHet-!Af^0OS7hwZ4s&ctEHLVpY!M0r9{H zIcBWGx~i&WjWHpwTDGcM>wNMmC*jzJ;&eVh+y^X)61LTks+b!^>CigUWn<3Nf&rS1 znDzl$Va2!MycN(p%;;JoPPTFKJJ~t?taT3Jjn#Oy^{Sy#u~ttN%_ZUtW2K{oTic~O z{Trr+X)5lsi0O>Sx0Y1dH|snMOOSDaS{VTS#G3))Zg2&=Dggm0tS0_hg7DJ1gI|h9 zcyT3ZEo-KPA6t1mj%1kN^}8pS7exd3CExVIPCJyX9m-t?cD$4Htw7-HO-#n{Na_mn@Mdn?ExpX@Qhi|*ObBP@LGyjr>+S5z#pH8P)%Xe)c7Bav# z{qJA>4#!`LQu=EXaPLA-N&V6`Ou@i^YraYv6+imdfj>;u*A5u$gc^R^p3m%AukuYd z>;hMEWkcFfqeNqe6xe@Rn{B}NKodFuf^)NH{T8DH^0DPK-e`T-ZD@80HV4H}X@Mfd z8HV4WD&L*4f%>+HmbT@DjIr*M8099#+z)}DNPAc86Jt8stEKk97g@|PAB(5J$~e4m zZU}#I&&^9q8uAluWRpbUYC+Oj$3V?gckAejlWv*n8NT)lIMF#@;GpVIR{SKfMiV33aHjuV9?*uUQtTkr9-XF}zqBwwv zap=(q8EjVM3@r`ZLAJb3MGpb{(0%B0#pyses??Nv$l=5?Y4G-9YE|m^)DSBX{u1Ny9syofYa+j)Ji1Yz-IM6e7FxWwND+o z&bBhgSLCgu)nDnIf&M83=hq(GQ|n-ahHP4IA2vi6=pd2{<_2A}*(Qt9xNj1R0u0kr z&l{ZrevCJesZqLNKje?y!F@mNc{LhRs$m-ol3WzSl9%b{qAxV9d@!9Jm~>ZJg~w3J zXa10a$2*)LmKlBaK}@BP^RlH&8?kgS+AlSNx=?Rbixt?odcAi7Y2>(e9+mIUz#T_m z+jBoK;Uq-zf0Kt7f0!sOTA_*-s6rg+kv2+x*ZqIlBTX@@$o+SN!P%lSvZ5u_NI{5I zVj*;$Y>Bww?f^pwS$c6UPavcC$hTxX`?k#&BO0)zCk-iT;8UF(E z^CPVME1EXuzibi=+JaIiYAiTx8=^YE5ZeVzu`ldt18_<~gPH!|9rDNw6BG#6vxiz5 z&SJw0i??n9brV#J8~O588ZenXCwZ`Z@OVRx9TH_gisbW(g9MGQ@G-s@rEIUzWn;?O=BH zd~03Yy8TXAF^f;z`@b)Xh|f0}%SBLwB@pIOm2pw)$T7(u`R51zALtn`Bhrn2qj=8+ z+tkX*ezJPt73@v8#we9_v+7_?ZOF*PNliGAoU3)gG#A^>PjucIK^(^?oEnswB%Kez zOO52z)%hDj{7ZEe%r*SBm^-wuAKsxh?n+O{8qg?Jj^n|BjWLjTK_4! zY}4vJH%mqGTsl^fUFR8JaCnF3VFB2JU)jnYN^X9{Eatg&F_33o>&s$>#34>gSbJ?1 zjk>yDsQ}E1qc1$Y`Ch!{6{bqvBAGP|4e++2Mn{2yX{XcU2=v-+9x9ExsD1kR{*t#t zmxe0g0gmsPpz5&(?@nB$Bbwu*ZMj?VFq5K4__#_b3Q$)vF;~#hPYG9b&Xq?R0_;;j zo4T(CBCTdu%?rL9SA+c2kD0oALT&`~$SbY8zXMw+KGFayxheSmS+(klh8QD{x(H&$ zhu^b>OMOaZU3u=BawdQqVvA98JkV06gWSnK^_9wrnRi2Mrs5pft2bNmb3mMo6idJT z*kgOfNWSFnX_h<&?7S)@1)A-bqBanA*+?h<(w#157rM;5%};8?{KA`!%#$whJ;(hom)b6(F-htTGLX=2O?ur>; zj@`M&Xz+$J?HiL~%*m)bALABq(d^nwmdzj)Wd@&Qjg-B6s2LgvFK3#8Ud+-eq>xY+ zlXa+102cQg5Kt%NgJmk8A1O^vfaA8VB}IpE*-}v5nE?6J0w;b)3Z{dlZ@YEhK5ebk zV#p8hdoHnr33NjmN`&2L9fH1?84a}AA0h|sV9sDWs5_i*$*}~v^Br|*ug%mg>pXp5 z#d1-QtrY9pw_4l^$?qJ_A^zl4cScc8MK(y%XuWaVQ)|^uipOEQWLiSk-iT}-vi`g; z?p1Gkgpn^t;ay+I1?FGlWmY_D>Zm;!G)_+!myVywVaT_Go`=)v{p862rH&Nja4%hr zTJK`P*k*UH^qsrO4hyqf+GbpDiAH#f=KlE9|8-waQg^K#qn+GxET34kp)mW|GN(jC zIpR^@x}o(Xuy{D6`kx0O6EIPqw3SH!V9EuvA@8y+DaKb1}G^SSH^b>>tesFBNh zo2anqwJuSk4E$%_J8)lDmO)$aJTL6kYEZX2^BZ64oUV(N_72%Zb(hu!u1NtvcHj1k zbUR{a&2C{niuKe1@|B1EDS`{O(0q1bR%U^8g=rLO#qOfqK--Bf4d_bC4?AydGICTj zKTZgsYATxJF)QY!4eC~+r0QM^ZhaBL1;?hTi9CGP2k8p*tMjjC20XN;o*3G5uA}Ca zNH0%y4SPQb@QqnifP@XsXH|D))t&1+&Qk?{YHWkixy6xZh8KEU8@RODC?yxvQ`Hf= z=f}>SKfzA>-A8wMp?s9@T0XTEz^A~Bx63hZUf--X&?f{G>A0ds>{w}o(G-a6HCAqE zVle+d@$PsGD@|ZDT#wau>Z}Z7XQg0Pq9`!R=_W5EfWeddReG5fVc5!0m1Mf{oB9m+ z-Spl@DG-X>Sly+d?&+jF`LZ^D+1<0FKFdlVrdUuR7##fOzCQDTAiV!jF~m9}r_OT< zO}IWhFDF9H8B~}4;89v+uIb-3k3K+btr+SO(tHDOLtAA@tg7N?CfuX>sdKn0Xr-3~ zT&6TkO->ZQ&t&x|Bi!{E=sXC47xPPLn02n;Uz}?7)J4^( z2Etfk8~EoUTFiwE(}Ml3u5=yERA3+G`K=EmT4bw-7C}PRhI*@b%vDd7H;Ji`lN*x}tN9 z>vfo1(mKrVPPaW-(?t#UfhA$$DH7;H8XOrY=Piu{6%w*iL%4is!e6$9EU>7r#TMkL2Uw0` z&YI|c-gda<%r#YR=y0&PwxWxFhPqHO*!Au+A?DU%x_HxK{&PlpZ0K98ZtpOLU8{1) z94m(==+_rjlg1m|&>b$HBZ<(4^p>&AFbR(Z%Kvd$tQUe}DYz?s9r~y9^sr&(MMOo* z4E?Iy&Ul?Gx;K2Sj#c5jTdJ__bpnl39n^5?|F86*KYdOY`PBf^l&YE@R+rqr8fRh( z0?=-%A9xy-s=<4#%c4cyp;Ku;b-0V>n#JoHjCb%BBxV&42&X>L0IBo)?lkJs_G%EP zHao{(zE1N0e4Z+Py2P41q5jU9sQ7vwtVH)g)#DOuM~sdt0sb&c+0b^)+T58O^5!sA``M-aIu&+P*hw3 zWZlA}ymnkFJbqwCvw+#B_Sc@q44_t~zF>E$y7p6skNh6=$qEZpay7seJOx+P1}z_JU;2s3;uik~ZnFZ=o zwTcf;9)P^fGB^oVS*Kyd;`;-Hqtbj9-#;{ttqn1)Ev2J>ZIjsW!TXH>Lm?c2y3QUc zKH?OBd}{@&h<@mR{_2;FgD(KGFaod!AW}e-Z!9KtRBWP3fGmO8XZiG{@O3{XTcFEQ z0H={2sY2{a$QCb^R@D8O_<}q~V#QLpQI`%2!8og;g15xZE$R^W6xpOlh0Y$62~p}+@CG7YsjYDNo4uf>uZExgt)iwnBMIGs(`5>S-b zRfc?-lsCB!jdVYtzGL3(-8js(Q+AmrhYvZcOy)%GRq+r}jGRyYo<+&U} zy`SC$l)`Xht16$K{COd7QIO9TF3=roS$>T;9L(Yu!}}2DCMM=???Zb%&kk?!x=mIU zUurTjao5U{9U0V0pTAH>GW*^kmb7;U$UHTKEt!+03h;*rap9E|;#w*7jaX;!tO>{g z-a9tFlvj=bcECdM5k-3a9;QcUIOt+7y8p8l#D1C{UJPF2#;yei=GH)P;v+G2^_p;V zmsGP~8Q}qr(;PXm7-?OL9wzijT+$Me%)ltA3*l8IYf)3G%?By|FyUp!S#${Y<0MxF zsshR@3cmI?g{-l}KWh^}$#W;pM^Pu2EEl`3yJGhteY^Q%;H`SPP(T$sUR)RZ_7#SW zNze>IP{U?ULU^;&9Qb25+uaA0hoP4o4lB?B3zQq65n!^)3P4Tn2w9yWe#C_nh^liy zbW0uSel6S|+u|^~^A&t;FVFuX)BlKlv=d9T23H6MkWhOW*o(Ydblh;~@d|k+W3G@K zMSbt;*W%Nmz8$^EEZ2glQcD~XQqD2ap>Y4%EvyXw4eF}; zs&+GVI7AkZaU+ZP0KMZ5yaSG8-P53j#r{(ND#0-)0W&I3ZmgxiJcc&J!d|2ZWyKQy z{0wETD3i6A&WE-%Q5W|HtWvK) z?Xfh+$9wjtb?T2DH!E?)Q(ZkalE2Ed;qoTI;t#Y z=oMEUozLt&3T497o0aQVN!V-m?}oHxqd|jBFo%PYN{Xn&da%$&MUaL_GP@POOqkEP*go6|{jsUBNj*>q9*A ze*x=)f+^eHC9epK{J5_F$ zsthjR6$dfBsGVpbShk;SEqaO)7$3fqvaol1`PaFu1_$s^{ll9L+6N5!N+Y}&Z`n#O zBVR?hb5#|Cob)v}I1H);d^qfPF=y``bf-YzI9jjy0cjQ(YDVa+9T- zsHOK;!5>AlzO#xMvQBGXQ}#iCBZ%rCh@igsboNpHO1crWa;WUdXTN8oE#~Dt?%2GD zch0Nq!VyiNYvf`}sZKt1$=`CwGW~3^ zW-<0+xOrA+5i}GY#Hfl;+`qc9W@~0_uzap}P1zwBxt=CCi(jlNy+&E+&AVZr+uQ$U&-X z9>fgYq;OHN4W`2v@^g9#wSte8k7K-CeT==3eUvKH>kweZ_Vx9!K6l|2;DfB1uc8?f zCHAj0;S>k&eP3(aOirGreST?gQlG~FBFRJMi?%eLz~px(+QKkqd7_~ILWOSHgazhd zei_;}Ujs5$92~5pZ`RC;$ZQ<9k0pO1Tt@I1>5sXkwc(6K2M50#=&fl?$|_x*t853j%ME%v;#W$iUKW$bC?SnOLS{{^X*A*l z)k~%jL(zNWr-4(nefwJOEktOflj zD0{~#8}a=Dn&%s}{r6Jt&;JbUq6B)3rtTT)+lA`6!SECAzP-&%Y5B>{N+4GYV9hTp zDbI3#Ox8X9<3|z)lyrx@#B(Npa`QsfJ32K580Sk=Xz^6G=xDf=jvMA6hreAcj2IM<~e6SzmyV3a-^$kv0 zI8cRb>HXOmyvCVask%65MOo`F1%UB-8{`kXtNvOa$ANzvRRP(EtV8MpW83s<6+wp+ z&r*lf@7Dj-7-kPzhwtQn@{5}KYxppTDeB=pBtanfd)JNZt0V$v)Wdq)F@^d3^?;1K z?5^6Je!c97JPdBPe#l|?0BQ9?{Wg^ueWEEW5-AN zt$-`gEqvP;thf~u9!&Rb_tKkm(!~cegA{YvYDm;lc6MC#fx$Lnv-{6(_G^=3mu=^f zV@mciC5_i)YeT5KBEKSObMP-Ksbu}OdOOM)V)KseL0MFbx`bJOV^XW#Ik3zvRj4M6e<+bg?+P#V>n&P%$*p2uEIY7ttNv{aL)4!Rx1b z6-=<0%-1FSMgM8(a?wEZxAB+!vZ= zG?c!#`2*~UJPosdov}zmg@hct{2i!QxJ9<_svF@O%nvcp^p#0xomN+&Lm$k@vV{^VUP~?{$zV!xU zDlzZ^AM}WdVEm4&F!n7-Sh8YfmP-KOGAVOzEWR+3A71oP+zMnZ+c@-HeF+z4n?^>r z(pRIKeu;?tZE1X;20q=9^;%My2Nlx~iZrUb<3I6c=T9`YhAWp1j3(8dUU4+;Q;RFi{%Z>` z)9nk`?Yd(Vm@hu+16-|s%Kt$4Ot4)6+MiF@%Yd?h2V+-p8v7-sNpG!{162Jx6_cfQ zQLP;6e;rtH%F{6QT5LVE?BsvUoeFv}H7qj!oAMj*#j@>HXxO^3aO+;;TL1dikMpv^ zNa1g%uK++v>|eW!omlH2KQ4j(Kf;xzE{Fle>Yrbdv@t^8jm;oC@PUSg^=OGZX5A;G zFzv^Em}oH6on@ywgIcyUQ87aTwzJO<0d7TV=4JD;z4t^%LmVtZFkd=mRoj^`m=RV5 zzi<4biA$c~M~R_@z@=D=Kz-L-cRPp2Ina&0FA5YL(@CJN^PJ1Ev)mjr(pBin>S8T4 zQCE?!0dk3dxvx~sPCPO^Y*~Sq{JY^Od%?lHv6j7?M=F?`E59IITKLFpw3vHmpC%Cg z)SstjYlhfys_gm-^an- zi}u(RjjT0OHrHOADi{(I>7HpzJI>dL&`*R!ZMNr*Ot~sZrk|7TUkrGJLWf{%$ncjQ zaHCD|b431ih<}^f&oDTKHqAB1-0_cNP?cT|ect`Y4<(>7h+1L9 zF#ZxCu3C5CPt06@%lF}%lq|63K{)*D%3|}Dpn#{ginypHH~{W6c8cxWg#rhd;_ zO?Z{9>F9Mnq5D@iGzqZ>p{o_}dMAxvyB(0{)jI&4(ojb$?IVr_={RxYzZ=@c1iDcs zc$Ig3yw~5|iK|%}*Gf_IOyiXV4RXr9Ri#b+k9*;KO+8!v#76`7LLpE771ebP3)XeMrZj=W0LOI~NKg^h>#Iy|NrnmJ( zF1`7|O0KS9rq4U8ZKg_Lz(QSb^sDY<#vFCgbQObC_`J(+_glT$3;O!dQ<{tp=4i2I)RB0S?=Y7}|1q<+CfD=*)wL3XvYu6&3{R>_LpRn4~1kU8TieYUn;=gv*YIXCc*??#r^|`#K zKP%>xEtl#{{hZ_)i^YcdtdEAtD=YMn@4LDS?yDVeZiNT;3)$Di4NP^yU^dJf1`VzN_m}r}+;0 zvEErzex(?}Ef-<3w1J<1JXG>G50#PWlm+PU)Hn7@U5`E9z)u`jM{8>zJ{FMFKTSPw z=U~Y(rY~Jc6zgj~8E)`6QL!!HWpCr=)s`WG3jGul^9pY)Wc)o9kttVntQ|aP#~2c` zI^mHd`)qZM8oIoCs3ONkPxJ3-{Dx3tuc~yoiGdEiBd*KKbulv2C48Y)mOY6tD0@kp zp$G$Z6{!kWi1Do34e39HcO*(z^jc`U2YGu@E3wWkHiq#N_Ue^BcWt^g$i#f!*UrL> zX+#jR8~RFqkf16IaV!gOD%bB?67r-vJy+u1Di^~1 zcZt3a=O^WlG)ECdm^0=Mxo7a$?w_b|qB9r$uFtkaXy`B1!z zVzL)lMs_(BWJIVC^-4N{qtGLY}SV{oXengPzLNs#s(hffvS5_WK`M7@W4oCgrHnqRoK*qhRP_>)nUI)rWAbYq*lx(D#?<6VEvQG z3WmNVZC223K>0^>13xsISTb+UhtQu|8)8O$pp|`I(epJ$etFYj_JiV!;c(ss7Ecz? z`_8UN&9~`oz2~njHv5siH7N(2FB%#j{&&NU#eN5O*xI*J>9`a!g*AEAIJwPc=oTr~@Ffm1i z*~WkA2`!duV#YB$oFhDDK4Z%(;RDQ0mQTifgTn$eCrOBRQ-2uhXpj`;G@rLrI^qCI ztbcT<*zEFm=BZD!E?V5&Pc_A?9-xI95Cpzx%%c0KTaZ}~C_^i>$*eO_uzu^0*v}$^iy}Q-n{73$r!?Uyb zVECu5QqM3%Uw$qM9AbDjBLcfP$AI>5Qa;`&i2Zm%Hv38cI8vsr-2Mk<^UQ~r>Rv+9 z%fZt6Lbri}L`b@m_Pj4v5F-gLaeeov^hD5brZpAla9J&4AL8Z!J$Fymikzw&<~5Al zV@cVw@ND20{L+^>Ptbi)Xgfe3gkMxCQzGu~G-z&35g(mT5XwUbr=2M)X*;oEp_i=2 zp-(W>{6j}f+QT!eem1K~$+EE0ttiR5#R(07MOWq7R)|`Rn1{%gmxEJI;;DAskS5@*0W29(hPhnGh#BuU! zH>L(29?L|&b-<3FC|abRSdHqs+82|=G>LaV3ffGs7@+IHUtDVbQClvarhLzmPS5t3 zn2(*7>qk)1`O{G7Y?ZWrr^}a z0vz>aPe^U(lli;VIc5s#di>0`1YWCaIQ;6@Ks}A&k9xRI%H%i?VB(PM?8?>vHN4=U zpAb6nDfToFEP1}h< zuJzYS0sQjIt9GX~KZN8~Lx$blUGYF&Eq(NBg2%L8;GeKT?xnJB7$IgeV&7mMm^iGc z$WFm{3Ee%#pvpeV<&Dx@ysCh1cnV#PCRQrv<4jZ9eKWR6<4Oz~&^XxZ@yAXbP+J6d z!Jxf)$Z=SFu@dwD+OsU3XClI9KX)~zm<&bn_CcbURAE{0KkB%N`zK08pK^J1(Qz2fdyCA}T|64PTT9Vd>TFD!7*!r!S&^RgT_813FnSMR#51@W!=KaVL) zyM=SJz|FOqpsYB^Ex~o1pbQ<-Paz-uJMU4rBky~TFm~EsWwG(@X~oFh7hcGmrGrqY z`vQM7(s~d03vjs^gZwM-rBsmZP#*I#+PxbuyB3>9_3|1I703_oJp-~#QzH-Aq|}G0 z3>>>9r}-)?+R|$@a1r&*ghYhX>G*2Ko)drk%H^_IMN3)TjhFI#r7RnlG`qf791ySf z1CMk>fV~tk!F)1Eg9gly`LL$R6t@{bVXlz4P5(eQ@ab~!E|C>))oC~xm;d3bOMo!0 z8MQ$xjhJuhu}%yFh6j7VUGkge{I4l}37BD;$w1YjjK%2$v%oz4FEcT}%T*FfS!*~7 z%yur5B-1hfeR=8q2e9)a#C+~`zBhzekUoRusZM16!tR5hNd}PJPC$c4Bu3qMq3)I4 zReVX&`lfFKBrO`m&)VcXMSPxrO~O@!O8|uDBL4=)+7QHlzLf}828qvDqt54`(S?!U zb_@CI#*z+2bmSuR$-w5X{m>xLl2K*N`n^;H;)T#$nk$R_`{85xwzdln8W*xo=mMLr z0gI<<6{mDH)LX4Jhe7Z8@wRgjBsQB=D9D~9n?a?>(w;xLKv14rx5#h$g)Ri!{}qEy z&PPe*L=YY}&`G;(Hj&bGy$WF7w zuy?V}o zRwzJg;r;MW!Jh4TD)Pdv7#?R~@EM1ayit2tW*keBWJZq7`qagH5J&6ebe!aVPzbNc zfhYo{!h-#sn;EJ`6t=WJo(g|q8rdE{THog&m2$M0aB8*9;z}+fwV`T`j{%y*pGw{A zy9c{R_RSw(V7>W$e=}on?@(hv`%dMBhLgnoiVV#}*!@@A@XiL?$ubC6k_QB0RolPkmK0Ox0d*jND$;niS2D$Qj(DNy zZ7#Y6GS#X~ufvGf>Dr~YP!3kxt6Quhr7F)sDS8MV*q^tg{<8h*L<8_-H?C|rGs)dy zC=6dDK&jbFP@ZNQ-|sc({5iA)UY_7Sd;r*J zEV;qSpc>iJ#Y^Cfqo!t=Td6zDU_f>c6aYoF}k{`Jrls@AL!B ze9>n3*OIG7#tUA+5!}GDOGz<4jHy-hTZ47nYacC%WAAi zI=jdG*@ugii4p8lCJ_$JPDTdTpsaO_#3kAm0GMf0pEpEC6USkR^@v-Iq6JZ3ajq>MFnqA7%c$*3 z=@LWKuYc*4Vi1PI1}vG)K*snGW29t=jyMpPkXS)vMOg^^^FUbF?n!SMRO=d>OZ5(4 zasg&px5Z-oV}Hgdsoiz5n0hFNwYX#T+jH7*lZA%ENHr&z#Q$784RljClJWB=M-4wR z0>g$_ij4GK1SX5MUWt@%-mi3@Jq~w)*n{kq;_tNdt_{WZRlUzN6e25J(I%^TIbI{g zK0GN;?_n1c!Kl>t6Kln1I84e-g@;M&cSlY78~Xau2Ti-tPz z4tg!o+VY8Af=)fB=z`4i?#q!m4!w>0n#=dL{v_2ofW^kCO%|bZ8wq$| zrEx)Gl;yNIEOZW=EIyp}0oW`SKem)Yw@V_8S7N2!U_>>Ty|{g;2nkzb*I%5c258E+ zX{86B;%n1PgFA8&EW)#7&xLsHuN zK#5K!Mq&fPH!Xb$xk&Hk$a_rSIUM;aM4bYvFy{B>ey;pL7+BrW|4 zAn3Esq{jy(ewf=uxPGwn@MvA0XEp#3{mPet07UgGR%Af_k+zJ4W3->wSKM@(S$;cI z{YQ87EZ0^g{SmPFsNdNqxXW_w@rLJn7a{Ij)y#L?GcEAGF3LJ>bTQ{z3>+y6XwIOS zP0dn>OORT}ynK%+xJlah%ZHF5NhYVduKt$O0p&@1K-cuBXINFr5HGl-j5kYL^~(dL z`HwLeZCR$$8eb?x)*KA>rruml@;`4b=8J$mbXd0Qs)B%tN9 zMBGm?U;Rl{t~!lE*>toF8dDhA2egNI4ZVR_GEb;2?-J8T>E}gL_vb_K+ee23@E8bP(HTE)XM%)!o$8X87dh}?7c*IwRy-lVnGiQDYA z(dEtF-*@>Ir)U%GfT-S-G^sj%P7i&Mc8(py9n355gZcg-nT_i#AN|hh@b;tzXBJxS z5~*aAFj{EbAuj=&!bW&a1v8KIdr`pN z(y92^K7x<yDtK=PQZ@weLF_~84TYUliKVGHO(sAy+|ip zhF(~;&0l{!7mi;sly|ym`(N>uIzZmH@LkB~zD$^D>6^Zumhlx;(ziwn1@eImD_4n0pb zo;M$HD>2gbf$!d;PL38Ke5rJhG{KD}=USHezlzlIsdIxH$5Cu|FWE71i#Zl$ijC6T zEc*MiVag}!WhEay{UnGV?h~L zjhF1W?|!mjAjpZ;t8wi%N+wWU)FAq1oOuVg;71vwQ8?|6qG{W_E$1(jKbeAOUnt|7mW%{;c2FtZ zzZ(MGP?;)qI&(ZwQ>e=~Hhk^gUvE%6Y>fA24XnQp?ua1AraeR7+ z94&4ofJfv^?RY+;Fxr z4s1eJezhRkzII@`O!D(CP*iB_o2I^T0_QG!-&L?^3ZhaO-K_K94Y?S&zjKFd8wT#W zR11v)%?fc^IQn5hlS(o@hO)k7>L(wFAKz2s3NB1&5OC~C22gy6X`gbL$2ShxcMIIm z5=XvM8s5ri)rA0fGGU}IGz@9qm#>|yl4t z#Q!LuK;+BmEBP+qu9>fK6L-eLv7lhM7@o0b=N`HSG4%-J^FP2oW=zcdV@49CR4j}mAmHW<@R3OG-|71 zA3o%tI_fu-9((AQ-i5t@|_Vv4XpWE(TDJ^7iq z5-S5_aSgjyao4cNX{>9PB{p0^<7kp<8w@o#wOPjp?K3sywZZy8si8f5or*!8%*-W( zdIu0#=vJD2_yei65r4?`Qg*2PQg1~dUu?7I@9hscQV=#2%|ps8k^RVIa^wo>!7B`$ zR8j1kzBTf?xNLs50WF0?4f9?OzpKDkG1vf7EAkV9T0->^Ug3o3H$ zI^Gl6=r4QEBIy*?)WcT&rNJI$BGLp_I7kv?J>%@l>rV9&V+<6Zyi=1Vg3D8(Rtz& zbOv8@q0x#j9XS(_NyK#EhALMN_%9pj3XWKT4z3YP751qOd6VAr)EDeMOlaeCC-Vkg zYAcqbmX@EU^spW_B#tLlVMBdc!Pi`Lx+Y)M#7z=db65Oh7w9s!7#g)DA_)6adgj(?puS50EN442xZJ3X zZ-PZeypECgY`;gO2#Azb=wngJzz7%RPY3EYhLml-Fjt^#->q_2TWo4)4wJP_gDuQ2S+*_DOMvml zWxx}EQo*&7+esnCcf|lMlZNqa=T9HnpEt71Hui*efQOOcDmduY96 zHIdJ6q@JTm$wbm=A`BAb<)Yvkx zS!mwDpYn3~*qvGU?&@KClch&?^!9}(Ajy_cBO9gCnR>1Xc3r9FKz@C4Zv$TQU|j zJa}i%I5(sCB&Nv(v7Q{N@xA59p%ZBd3)BXyj&7lX{aVuFI#1GT{}X5KmL0@ip{WWx z5^G<`Fm&TptzEJ?x>|A1C`Z?2(w?`aC~a>jP%I1fGzszVsUA9<#m?+x&Y}W zkRvP0{%$V(KQz60TvJ!~J?zuTwu)8}sal{_5Sc4uWlB{Lg(77PGNppdggj*)67o2U zh!iv+q>u_Sh7g%$%5?w{5W*A!1h|R>WC#HQ8Mw*q@A!Q`?|(`{xViV7eb!!k?X@f4 zlhn0v?*RwXt#^Bk^dWN6I0C%JXwMU9NVo$u>3r|Uc9)pJzS3X&H#B$OrAfL-x?O$a z=S88nvKrI9CV4AE_D1Wgj0`2G;NcqKdq8Gom4=)(b+_jm%R$R(huV+z9l+&&5#H4fbJdp?Mwbv%Qt)L)#78^FcZsT&G7>9xG zKY5Eao844tgmyvsqZ&7yRWP<-K~V+Tk_QVs`#(hU=E{+{)R99}z$@uV=-Q4>g@Nl6 zY3H+9;dJn2Za5AQq%tq6B9l|DbmQQkn!o>AkuGs-$~^R~=h2X}dpai}U@8enfU~RQ zZ%0NHlPj4f)JK)yTC96!Y56Ar?>lF42z3>B(rtVfS~}M>EOXl zPlBaUVWhbRhOk}fj(+ai-*;4&d_VV4p7c;V78FRx#kCV#InKcqGtypTk?QhBJ0qe2>^E5Et8Qxa;q3+@N`Fp#Q(twTi zWjef;We86@g7TJR`m8zCrg=^1BG#2%`C(9FHwS;bnr5}Y^ZKcv#`vhKS@x1YvTUPX zeT?gJGE2vR|M%gUyu`AA=+x9ZMaRc^8u(;D1suUh&spy)ONxBuL*@yI>HfoE%^kzK zXke+N4q;BVu#J{P%nVj6BXrN5WOW$t{{ zf7$pVQv6H?hJ*r1#;-MOaq5`0D`Fp!LXFtIEw;V+q!apRev-^A%;s1$OWcKE|HZKW zS|_aF-?0xabJg`Zfw_@9c46FHp}|l>IU9-~_CsX0|LvPZy>cnR$thAzcf=8Hz2&695a3T?HR5H2mlb)8M~0nn=Gy<0J6Oou7a_^p#z2i*w#V`l%^#PQ zE9%IoAuF#yd#BE(4-T}bY&9!3DM5nVRQJf!K$T%Ytej;k%_L!*k&tpm_*#iP+wL!u zb_V*AP_ql&KaB+?giZ)WhaZ;g;M;z5qK2X;bcdaHN{X5H8d5R)meqe4HT%V&xWL;y z+12hoN?`kyNZFtt;v+^PE;gH0f1}uO;UAYa-E#T2jMBF_(KK0DCEvc?xqZE69@(o< zRN%U>@Fs}ik&{4=0?@3O%;@$o~cS z)Dl4Y-28LKVyL?P+;-A4U#G6-5Yht+gw>Dx0&|C;fs!DhAVv5Bb2CPM@#(0M*{*!k z@#47i>fbj%fyiX^s$Imnw3Ra+vb1AUKdpV0k5B%S|FQMrSl(*1OEyM$7odfq&MKk)pNmty}Lh< zCQ=9R_S2`{S`ZWJZyCV6Ve&g8P^tD`a&w#Kp8{P!!D~eiRBxN6rhc#K(R?+b>!5tGy3U z?Hr)r`}E=7UN@@bu7)S?r47yNtflc%NDH!NM#9+4S1lK!wXXkOXbonDI&GNY$uF;F z8kz%DmQy|20j}~1?W;hi%0P4ye+Lr1`g9H?z1Qkn?c^2wjGXhB`HCPDg6h%sGIo`y z9Fy%U!#*hQg|v&det>rY;|eW*Pg<&R)CLBz1VrMukKM+`Z~`yIiZ3)u7RNb#X^6X# zg$I*?n${Qt(t^}nY9s;a7jdtqaeb=My=(X~%9nFlh72Q0Ef2k91WtHM_wEc=>SwZ@(#EMdG5VzK=_j3klW>5HJkR=r$0642sg;q!4tWA2}Gn68O- z+Gk4|76Z%mV3Aj0-WBYMEF~V{7_Qd**qoXHau?#_zDrG@B(I?3)QBPNaEUK3TE@?1 zQKhHWT9q{3!8eV{3v+z8a=kJLQ!LP)T)=nBV>o-BK9i&MV zkwa1h!qviFjxqEd@CkHZESjS2Q9V5Yml^@6Ha=%gfP3Qd0 zLl>0}thZ^W{q08kd6HYdrW zvI=CKDI@6ir#93#4;SAGZzS(ckea-+QGJo?+eog%Emgq=o%Qv_+Q|K_mCD&8Hf?DW z;q_>1Dbb^#iz{JZgiJ6V_-r-ERoT8S2*{M{YYLJI;!66I54kPa_LIMxP>it}0KMSv zmL=#o#YHg&kZ_6HeWB71n#moJgA8K{+tLyz3vK|R^3z~p-g5TdKS-BjlLNu%i%+g* zR|hEh=A~Z==++m(bvkC@z6bsY=;L>^J$|^;hBUKD!3JX#FUM_*XZ8hyv85ne@=h3~iG#hCV;>>NRFbr*L8VoQ%jzfiCnxb>idnTd9)rpHrEq!^QWM|Zkw01vQW3v$n|d*HL+I~~}u zK+d7c5A&J93I#J!k#66RqN`c%HS`&N^JAiBMW1aaa_@e_Xt}0d4D~RW909V{eH51) z>~&kXuFslr;0^70MqNGnqWIPRi?d+wu<{uZ6tNb6CC+x^v6V;P)?bO{BA<#R>PTrr)ol-2LlV1JahfC zJ^n*6yZP2|-EQoGEi4P<pP5&>s7>Jp zf$F)+56@#IlDp~Ej%|sn9#v~^C6+%hT8OY-a0GOH)zwf{xGF;(>3i;seZ8!|e}y0p zORvP)fmMJ0ycUm-$9gdI9$xQ{=hYL|M}6>hHX|k$51Loya2k!gTjXRoHhveLMh~Ci z>stSO7I25^w9xtf15O86E(L8%rE^B}PaNAcr0&R;O5q3Fyl}pSFi?hpD~{UpB<)W# z$OZLa)(A~enj8y)Qpq`l<&4lhS3PHw`JPkD5+_?!^yu2i{1%|uUEr%QOjQ4v`EJDI9*LKTJ(UZ|3Gft>!)gm2x~ZT=mp<4`DN z#sjtC^eL`=K{=8j0i5pN@FFfg&E-Q4P{FoQuqle^j9L`Le36>xzOgfA~+#rVS+^G?MB;$rJVk#7DaiKkYhV!;Kf z#dO$>7?T)H^3@qE7#?Oj8h#17jgKXsD{=34m>L@bIC4-&xQA_qm6B5$cboInjwZ}( zH22pdjrvw)&i$fxNE^xcJ^tWN@u>`WMb1eXP+L?5320U=3@IpCQzR-BZ!~ZpQuw1C2YXo%JU2WDuMrj5D zf6QHa$HD^%3sk?fC6$XNmiVk_wh&tL5OwZs2ig>5%YTHAz!z$0%Sze=;R@u2o2 zy=}@uA^AhK?wi`bri88k*E%?;3uQLm8nRaTlgOx@4R&6XprI4?4gKOy+`E!aaM^42 zl5Lohi1Ni4g~b1nOWM8r5i@heZcQz@8v}j))AOw*V5LfQws}I1DO()qSQ%>3a|Mp& zyFdUEyh9bBYKvm}d>&=yczx&B4k{&t-?_B@ka3l8(zfNws~_WLa{s~tz`6~*NGE=6-%;vpSo&l+#jcIW(+TXjj<#5U+)FA3 z!<{KAg>8K{;Yo+a2>aUIt4d~`i=hSd%es2Gk5KIW5AH#KFth40GG!WZetpRyx1rb~ zxQX2gN&3H;Bky(slE$IfJ#UJE2|bwBME=hYWj8QZE9qq6-H-a#8YJ?;`7pr)1+ZB^ z`y#h*4`3IZaf#Fot`pu^lkr(oH$m}L``;JCDv)gR`$q)lyEC4Pjg(PEvmCOr=<(Qc z`Fe8F*E-wj=sv(fAoRrF#~2O1yKcAWkF7`J7e!u2c;+>pvqcWxtQ8(>bxB6Nn0U9u zrHIyXtf}ZQReC>Qav-(uNmF`a@7Ckc_ZfZE?k4=xRuX{pF{Slu)Fgsu8wZ`%ql!KA zQc1vPrJ|mLXMCXik*rSYt)`~M*R=Y%T256FYe5VDeR9QL;Q`-`2tr{!Qt1eq0;cNW zt7q%;;#~EOnuW!j{F*6Ktk-{L+$et=LSlK)zp0{wIcPNj^L$466~&VFn((pN zaWaK2s0@^Sc$@6@Pkgwki^y=U(v2Xd7u-S{erm6ga^_E!{x&YEfIZwI^3_|D?`wo@`3;o)6<=w^tF(&767|NvKb0-u9Gj?mAu`Tr<0}B?|UnvB=)jF<16M`)C|+v zVI0;2=XFd=2{y;C&YZtsahb}0Y-HPSxWsNs#;wvlN1HrI!%dPJT13!FU&@9(gYl3_ ziYdaf#Ys)cE+}ZRXw63oBHuzU-%|F7Z_gu(itX2K3x+4>)Wv@~E2cLuwKomR84zL3 zMk8c~Y0vBEs94;{=b`V*36q`>xBUJ>w*UEDlYG*ik zBAFKOT>#bZ669dpo@Sm&A{H*|Ru4J0X}P?MW9Hau$!%C`d0G6Cm3O)Gy&_2yK_bzX zVBV=reE&$KmUnAE@>&&pSj;48@jIbb8BZ>UR=foBSzk6n1yyg52Vj6w6>iVtyS!IL zZUgm}7m;>mp$gOjN$H7hfKRdjAPloIA3lw-PuAs7xeLGGLU_dY|a9MjA^FC7xZ-FhfaqY zk;@jnG}c9yuiB*QDNLoJ>?GbFEtd+R>;1CjJSlTexy7A0sXqR&h`6^!Ik8U!J|j}~ zbUkMiI5`)kJ(`TLhD_Nl5+W^j-jTO*^&=BZE1d*^wn}?#Q$s+8J%?9hX%RuMyhXQl zx|dpy^1>5ix`528kURe=!aS1#!k$NbKsq@44P>lAUv1ygidjDK%T@!MS{0WL>59Swt0} zb$%Od)N(T5(Z4ZTEMROat}!Q&&eXGk_{(l%2K_)argk~N!xW>e zKnLY{_Dzr~_i02Vnj}pc1ihlNK6LU9fkh*eArY^{>^qjhlDF$lzhl@$!=du_7 zC_RC_SEcb)(r5T>V?!aZs=d66`_wz_B};eE=fj)zJ()50dE#gaM(oI}OzR7<9C45H z8p{Lu)J4e!kp4t5?}=3~54T;yU1V7nP1J>&Ym@kNpKsR4U1F}fN2?k*+r&pjb?ha62gKjn4 z;YrL7R)PRPEY>2zYa`-6)|;}{4g35+f{`<i+ow5Om)!Bq zZ)lsG$mJNzKT8jJR1s(JUY^O}!`6T``in7Na&VqdNWQM#=q0yqL zfx%8%@=Su`_(lR&XWepgp0IP8Q76pfPf`;>ajGYM%vLSvm5UKY@d@%QFZq1@X=r77 zUv_yM;e!YSjtu5!)R(NEn(9HqTI+iShgs*gCnfXI*L9Z?3Es+yigoOXtKp_j9;gl= zMRkEm2TeiQDfxt(^2yTHyn%_0k${Mt7MBBx$NPaKxl~4rsxOlO;L+`xHsB)O^&}51 z7_kLXxMRP8N}~i=vYNc>lbKh*0&HMjn{uwJj%DZj}r=KaKkVD?u^>Z30njgv(8f#2SK zZ{Sq!+C|xw^GXS0^eVMn}o6VJR0wOo1SFk@V46nC3E8N8uBpM-}|Uu#DsLXW1@zzx6`m4DtU zU!t<&8FvD-bG_*_m))0GB@2Bm5+R97ALsv)oRN~7MW5nzvVd|}`<(1>{mT11=T=^_ zG7+?C3^WJ=`$L+~7Z-U4d*QOR2(#7Yqm4?sOW&8ai?St}7cAI*Q?J`gNlvlL+$iXU zh+(hPP;(!Cow?CAidlPPAFDSd0Aw|6U-@`FVv23J$eBfLmVZs{tV|lg%#44^>39qs zmXm)~zlig72y#*Eo!3hiSBWM=6FYUr%eh#Il0 zT$8dT`enM)eEnHvGAV7L$2WZMWOPm{Xnu}I*scGZyD^Ecm-ku!)k^-%EI7bsPKR%w zykIMQwv3JUmHq^Vkbwz%9HV-(w@lq8c5e081S8w-=#1n*CNwugVJ`)o?NZGS;Yo^3 zN}?D9<(a7Fk$o(AU5!v8_5#&_h9PZGtlF%Q{O?_(ziz*PJSa32l)9{1jqOPfwS72P zH6wPo{8ZTa7nfLIe9t6xJA7)*RRloE>$xE+~ zn`=}w&00E!HL3%ek}IenF+jV1@O?VG(tAHkqL!92S9S})evVxa%Ky)?)vsM^q8O@D z!y~EW7UzuwZ_O(BsFT+SzM+C4`SET(zH#;$NKmda{ySPOR0E9|_X<=}Gwwhg2&XbF z_2Gp-z}ai~8rWfs{CW>smk>5QDzY(s%`04$ES;x3!fMy&nh>1Q_-$0EtXXz}uXWOP z!lL)>({e;5<$F)-3JS!Fn9plbF0)+^oK&NNu4@KeVIYS-DAtaNE=a1{T8pE>q7se_p`l=@sw%d#8oU=scmLg?3$!y{S2o-u&Bdru zLFo(+#Yw-kH|Yg0f#}~+FC2^gtn_c)ylgySwj`h_5>$gDnuc`S8Op^aP3$7tE>z*G zU_#!Lo0j+B)_PXXfDx_V4z(1#NX~A-=S9;MSj1Lea1TH;gb}vT4P@LFjEp}U)dgl7@FFna{#l{ zxi>EFwVc7_%_RWR^S(1n`r+Uebkl|L1Tq(`F_u;+B;rWLl5v_!$2@xS# zrB0Q$d|b9J51fW{fDz77W5v7tAw3zrK8RbAS-Dc___+U~_V4%G)cy!*a;|I?D<*Hf ze#uUxkTl(W8`@?mT%mg-@&Fh(uC&zs{#nPQw!(ohOJxFs6^<5Cn5~^%ADc2ncUJ6q>&-V zOq*uuyBJ6_tClSxu}6SfA;Zku?CW+U_2&44E_p;7G%*FQ9o|&3oa9{$6_pb#<`Z}l z3BG!wn(H%~cpCE{4oD$@z{45kyHPKWHna$5o4rUEWmpNs$~DE&WxULUs;-@o+TJ6nm)o- zMB27eEP#J1n>`IQ9p*o`bOJ@hxjdo0f}JO=WF^o(6z&dg>4!1QvuW04-^zCiir<5WqLFB?uXk=-vX8Qr+H=>yE);dt!(=IfT zYrWpLz^DR$v2uUO4kF9y*7eUvG#(u-%h zZhkmMDj)+O|D}Gpb&3e|GPT4BqUMjsVydB*lz7j#C%%2d~kT+rSFm32vz~?R3*!H;wwnm$FlqQ?0HZ_PhQO~crHouYjsJ#p^K2|43 zQ$gWV(W}2nmYy?H3v%JrX|^Z-0dT2vZB8jfRUGvC#Z7<*|dd>QkR=jr@w*=T#L7SOJ3f#Qqil33uC01P##8WP9*1kEgNyWVsYlabVAC_F%EL}Q?yDVLBeuQlb#|wb z^eq3bR&8WA&e1t{wB*%=E7 zDC0oDsoGKKT=BVyXFgNk@ZIzmI{Lp+B_wtZ>y8v_&i?Wexx)y(wIvz@r}g@Y4)EQT zK84FxxhWOZ*<~at1%&M~uNMftk6k~qR%oDL3j^u{<{xti=8jubalb%9Uk)TrWmZIA zf+IW^AKwkj4we18W8AT4xJ>jQMj=KTtEuja=9*K1$t-2ofm3NeI*eD;+EqLhfQ_A8 zQ6)4kU&mrjHJ`ABg&w}Dn>kR6Gt$4T&Y)90|=!`4nH4M7byxVO@}a&99m0+>dk=v>8)T9Bm_Kwh$*XV^UkVt z&wz=?2*Zm}hHv~bD>W27Ug58z+nvLf6cwy7B~{N$%()21Q~m@;DQGBCsVGvZzVemk z*uhvp-CqScF~zfeO?*39+1`-0a7-~b)#K}eS26qP3c>)9UQ6s;qVt0sR?0L8mWz zz%SUuG#8N?YU=2KPHR@?Hu{zQyW@Se0m1ni3P=80LwSMwQsZfY8(@h~Zj`^aB3L<( zs3rh8_S950TjNy@dpuQ!2?0NCDLw#j_o^4=U^CgmQ$BB#R=rhNmvZkva;c3|^CL;~;!d(|O! zqNpp&vaazqsMLXKBeA!ECdPD9zGvq(Z!F5KnE&nEvdNoH$3Hgz&3Z|%Y+4$`a}D-N3L>olqcx~r$t z7Al&@?Dm%c>8rgR8xTm(BLL9byi-91JN&txOWo%Z`9p$CS3AXmtL9#&S@CJQl4NAK zSnJK8BMIx6uwDOImv8;eXy5tv`xAMqLU7AjTbJL5S8L46mg|)?k_O6OdbbR1eI31@ zPi$kqn^2BQ30k6;^=1d0wxL4PqCBw6Y7z)d;mu;*bgy5hf3%3L zXFgmfGQHJmuMQ*~4l|lTo|s*)KZIEak5eh2Wz1Aoj5zsz@=LY$ z6?)yG#_klWJ=sUtQ4+OhN&AsV3f&??gxIN6M77#0%39>{?!B*P(509&OE@E#e zenYNRmML|Q*|#uTJP zcP#vxX<0>nUb$U8c$Q$$TaW46SV1vjz5JGSuk09VsOL={Le=eRx*n8#<-y`MJt}Wu zTp;%xdF!BKHcvNb%FSpDdG^eI1zc_j-!Nn}s<7BY23?IzA?)^lg43^^0&9%L$2JWK ztG6^S{Xx*_^e_0IeDssLSB z=VavxO$ZgXXjf%o6$vy4J=0Q;tuxk|0TS0-RhfS?p{k9Gv@O0_qQ$cu=kr>leH|hw z7Ua~qstP0=6oA&0IB#9?YUJA>4U?2{2u1V~IcRh(b-ptIlS6wPbckJ<8^x#u6p}8V zxE%@3BrO*q$AKi2Btq-9OZgfpCCALcB5qr<9XwbFD13#)88rYmN)8D}by`q=c*Q+Y z2&3ft|I><-fpqlN?$)in&;a}e!95N+YTU%nzlSLddfet6`Ga}7YR2YaGnO%P%fU)QV&X}zOXE! ztID0@lc$fM-Yvwc;`9Nuk$FUya&95 z0TMjdi27v9_}9Q;7$;RS;X9O1t!_{wgk&A@r_}FH>G|x}mnL|Zq$ysW9*G&Lph->R z{VG*V_--jRFQ~1v|I+~#nRG~Nw881Z*4KyBm#{8cT&e1+Cw&vK$Rq@3pgu29@}}kH z)8TS2+r@s&f0tGO!R|FOoG_s>DioE5%U#!|4)&F^_kS|;)2#|C0I@wZoO+4K19KTb zfwH2V{Nd|H-|_0ebSRFlXT@!HpXgRPQH1T#tuaslq8sLl7Wk z;Dlye2}m(ye_(pvQh_f4*bW}w%bli9l1WdVgV@H>l>%~mTS%w(B;R^QRrHTb-U1KY zKvJfymq&cMm_yzh9cMq?fhsTo=kkluz0^?lC9Xp7&99TLbJ=eA6r*pS)G2Q1)Xd7{ zbN)ho+;IT@RDzacU1piee!iDrmon(#eP%RlRkle=2Y1#r*5p#(pZE&mDzFv>TjDt# zjBn-yC?)voVXr%L35MSCDIq#1=>!L?1pJPLGMb<{Y(_(p$X5(|0$!tL&`Z@ z{%8ChS49`k*R;bl{A-B}bWAg07{m(f>lqc+x)ui--}0sI((&zY%^jlkClbVZvnMyh ztA@mNU_z5qsiAja?sf7(`g`w2hVK0Qm2}smGkqN>>3$ZOH4UFN%I2Gb zUpQ-rZGs57a_P-+WCTGg{AhVNi6#I$k*jjeUigkTo26-uTb z%=_H4+2fLu_v%={lm&@AXXL8zX!IH-axH-#`ZCVyfBO)cO zO7E;8wOlT!_$tM!_R~PL)tF| zR`mJOHD@A!_7L>y=3SB zPs>Fz4B;N%cokT2F8*jT87g0+d4v^ovb3M3vUMJV>?t?Ei9iCVsbhI0&Ix1rQjOPK zyb`fao=AM3ct^hT@f0~aIk(5kf>Q2hw9N#&{~g(ewDWS*Utm>q_S@or)K!~h0Zs7`w1HsGa16s#Zc9r4dG;CpVSy|LQb!8-I)W!op)d% z_V@d5c+G^ANn82(yp|se)M)XZKrvI}PksmRH2vZTwe^7xx> zsO8u>AO0CFE3a3|sZZ-T?z{~##Tqw5M z#6w(bPiFW7Mp0=hL-XT5X%QFi$S6iktf&yDOJVx6Y?XQ z7Ex34ZswB!=0kW%1N4zF|0^ZTzk2UvAADte7`S91@wMWfM8$kr$6GKG7}O?~Hs*g> zP7_;~T`U#nJ;OhB1b6Z9V?IC&>~BD(a2HN4MMa*e`K1#QDv*47dBbrZ?kmrjn#OHJ z6?-B`T12}9GmUJWn-KeULa&!yNKeb=Yr@`4o}K2CS^d8u6t_sQlyjXnJaLv-`uraE z3)AEdS6eQs%U1B!COI*`$BoxI>SD}E(LI&H-x&|`P4I_r^PDSp$R6YSM5X>s)B%4^ z5kM1-U#~oDx&E-tw68fn^eyu5j$38O#jT1E(nH77y)o#|Yaz4`O2_?ew++@Y1JDX^ z$Zx-3y|W_e@Fje-XAzvZS~Ie0Mmhp1?$XI+FDidscdYsdCu>NTuQ9&nSRHf!3p}-N z{NzYvV=~Ke!H{^;=r&V6PAMAtl-(pW$c5Q@Q5G%g?gh=A-pQ;Kq6v}XFi`n8WpVzb z+2xehtV>O7?B$f;Jl93!Qz^$Y#0AO_m8%|DWb@7+aJ|U=LG{Fntac9AvvqL94oy`jJ(fDoG z*Y4Vtlwh>fpqaA2%c^W4VWSB=mC@~|e?1wisjk`@xh1`~MASaDrz12uUZwG^0P3Hq zST~N6>BVm~*>9BaYFSI3JL`R|nDwNBz4d((){v--EylEY&JV2&X{?;Qa9LLYYc-c( z>tcRjcj}a)L!fg^T??VDVl}sG{@KQj`z(;kr#uoEM*E$KIjxQ}acwL@Zi}ojJ+X{; z5V%TgU^@esIHhiG_p&-(43~P{2s%-icr(5w&Ph8xZ@`%+7p`(h7G15u3NUuz#|gdT zT=d%y@(Z(0orBRFXpkQ)^XGzx4V(2zL%NCw3v}r1KtZO zV-KA4xj4YW(l%I2292KNhSRF+#Cz1p*N;W6YJr8>m}i;3t%N%SeK?K*%4e)C`0Ov` zI;jg(cWt`H4RNOKi?U&5=|0=|+!k$elhf?i#Uai>F|o9j_=>z=KRPb&8lpJtF|#aB zrPJ1!ckoQJBXa@98sR4b?aFAW9<8Ee&06%d0on9?S>0pa)vC9Pk-dp#wK^n z&hV6becF;6^|cDqz!U)Ffui-Xaq?KDh~P|B1%4aUl7hE1$CmVW&nT>OAudJLz5!jOkbtf{EP_$_}>}efRR|5_dNgqa$Iib6qbpo(sZ3_tdh;^G!O@AvJ2* zxSR?w>^sls$%URgiL*9xUf?ZO)y>v^+ZfS5VYrWyIJ93g(r-#p>l$2tmmo&@fqoO? zt(etP2XK>?$k!U?Wg7F#i5lCgTaYI4iPbSsBq#sBy{(I`oS5 zzfYbG))yEe>Arwvc}nZ{v*sGNUl2usE+c0x<<&1n%aLJb4iy4{C{>BJ@k(F_D$cED z0R{8CNV+lb4E?=qf+6Nze6s`@#Cnv=hb_a|NC`gM&BzSfa}JE=@iKVq?G8>DPYF-a zis2@^fie`m&L?-0$3NdpR!R1Bam-KPt;!e@-fF2gT+c`O*qgxTU820I^;_0Pi3K9? zi{JAor=)orhpd*$nn;s1RF)9Im>oe~p1q;H@(Vp3LSSjpa9rH?Xp>YC;WT>r00Kr!1H7CX z{G%4Up%A3IYraJeu@u-DUfSv=05n8blr8`4N!=?jj}>U!LBdgz8kN*c-ouuvon0U< zqA+^ZS=8jzn6?e_G@*y%kKXWtiGoY+0M~R-k=_`Lby)?IXj0@f^B(sFoVZG(fiA@9 zfQ!oFBU?LuyI(1ClE8B^9kw~UwGI4KFX||`lq9b z&gspc8(+haf8A0nKkwMd&0;P3bIosd5{1>)WX#ak&RA=r4D7_gN zhWdd>k5^H)K~oT>J~`<^lb4Q8w&qTF&QY69}tX zaq2$KN_yt#_qzMm)^eel+8@Caif)Dt za9LwsCLHjxw1lTH3bXNaR1q_YeS<`vxe{JV)}a9RvRP6>qegr?9 z|C_UPxT7g6ybZNk2?Y05!oxaMEprQ|sgnbJ;#6;zKW$qr_JMaY*K65!F~n z!~KI~`&b0=^1~quLOOMh#QFF&h-fvC;cK7G$`MI2822zU{|jz^5~y40H-3Mp(BR)4 zV>}tO{W%Y-STOq^on*urS==ptAMb(QjYm1<& z@naDQC;gr<#H74^1lbV~rar3lS(|AaM!O$!puIl@&T#UR#T3#;CtGFC)e??|+hPc^ z5vfnd=}kIDcc`>Tub+-EXjb4i|Htiz8VI)=$-7S%Cw0GEMzh{0d#*Ng;YD3nlzU#>Nu{p2WmO?17-Y$;e|OxTm!PM| z+32-hyjRtmwqAO<(jK3jXpJ;5&deH_W2pX9kvhQ^5>})Xp|Bfh@!_q(PC>XAzEz z9@x?Jv`V35y?ffaV!@)fMCnE=$LZ9R#X#jq;KvoCJs45d(OCppgBvKp~ zq^K9{qkOhboA3+)HS(ByIS_i=Z$tWP#a8q{M8!wA%WVR*9#6v4#Sc3^Tp(&KvbN1^ zj{wsi-z3$AXA~%ovYU-CrApz_=>7m)Lmki@sVuV|CeOt>1}qLwyqcRVHUXE~v4goH;Ta-%b{*-xqX z{4G3FCGrD@pIfVe-N(kiZz`Wr-S|TkjIMS$hP-Ye^}E<1PSJ!dU>LEC3Z~5=2c9kg zxdJXiT-MR&Vf!1j>N>Yl^60D_)ELaHQcCSa?*Bm+vs&{PY%B(!mCkR< zs-Q{r0uiAC9EK7l}Rn`m}G)GyGfYaY8iMymu3oEM3GIKadd;*7~ zTYE)~9-@kZg&-~PdRUZ92eEamRATo4gTzEhmFx~*&8*?Y3XH2- zl?1Itt37fLkiq=dYAGzBIo`lrk4=qu0>O?iQp54oD7wSXF?o!lhM!Wpn^FdEE}u0y ztzHUy4lN?fIt8y{7wD&;*<>Sx{rg*BG9c%u{0*;L0rnxes(pmWdFO7El5OyW#}#^o z0G4mj3z+$JcweAn+{l}BG8iTj66TBPacLoMl5^{U>#s6q^~7gOnAJ*T>4^!kL9w~t z=jLMD()T#wU=~2~yrm-+B_wP;IdA?SC8a()BLtSJU|~BWQ8_aDoi_me(c4$pqLF>e zzaMu{Ed4GNjh}`3 zhWx6v4$y;r?WKF!*wGPBTQ9J}x|`>K+|I12R2-gwE)GH0Ko(0p7jOF=RG|H=q2-d- zl?1!-OvTdRc-v8)VyU~me%LTN=eSoriTOHg^DfxE}p%_-F z#)VzEkO204AY}daC$D(f(X_(cfrlsTZ)aTgChDZjoRjeC0}YZD)GBXZy4?VhV3w3X zMVzI#Tn`agr+VRpX6u=VjJRkqFzcSWhY&(Ds5M>GBU3zpcTk`_RG)k|uwd zNLyYh_;fiI;G$MFgz>0rMC6K(V_JFzZ7K?=EPna=n@My44lbS zd3%0QB+vA+?Poo1smEqSlDdPdTPB7MpC4%&6XtNn^j?p{0zzdRBTxk9d)w3mhB)8_ z9#Gvs==VoqbkYNwcuEo;HA3cFgC1dTzxomFe~g_?H)G$4x3US)uJz8*CKRf%wxR(` z`v;H;1>XeVl(ioK?v)B#2?Z6x6%U+o?~_LskfKO#iIYv|%YgMB?CqzVpw$EM=>_w% zmx!D=8S8^bfXZzInx7QhAHxp5Godj!Vn5J% zkiT;@EHy3go}~vAd_mCoW!yPgBBw(a)cq0r*W=B_%~O?W@Z99;MqcO|=RCpafk)m- zRAuX4un%UKmA1zn+zLd_2N&N(0u@-dZl;3YyhnyicRi&q8P~wm01dXSau3DMf$UPT?r(ITXcL5w*MI5=nYN)@e+o-U zTfVgHDkV))htk_`j3@?K576mwP2HR>YhPE}4<6?Q&HdqHd`vokY+pL&&Nx{gf#P-1 zrDti%Pl-P_Pa6J+{<~v<>1EK=R$_$22dE~dYXcIc)}r6bJgVq8uFy7=X&z(s4uf9u zWv-c>!VuYDS$LdBegse!}6M|i+Axo7aVtU)B zhAh>7bapg`nkyFo-5l{gEg@4N$y03Kv~aG&wVbhRYpsU5Sm_Rrc7n=n0uCVZYeh6m zlCVQg-d4ks;Asz3RK7k01qu+6MGv5}`+Fnbdc$CpZY@~SYCds1niSNxB%as;a$yq_ z@E5;Pqj)I(4z1h!>g8#F+hABRO?$rSY|8S2^OZrL&m_J4Oix~W=;<#~Y-U69b zLz|+5$n_>iCa8t(7Z=QHlipSfCFY)q2sImZkeQR?t5oyTR&eBA8E7AU*13y|Sz@`I zR71B;qAR~K47ZR9z=qm*h@cs=#R5)pV*Jg=KHYMKu>)#3dD2+J6gEPyv#PWP-V`Ii zD#bmTaCGKwA5w`W%fF->^CxV>pm#3dfTU;dba>weMkKX+nSk$NL4l+`Z9w)wT3x2) zyywox;UJX9y>G+sCBhqPbwWUggP64Q)w3w!lia243mo2pY?@xKl(7x9VQ#!+9hpQH zoXu|C&sF`-u@B))=wf>O_B>twXWF;hx=IY-T*Wh<1n51;V)~%m!CJg{;K+iEwS<=e zE;PN`sCHs`pHon5s8+A`Ov7Cx3$O$Bb0*xCo%XFByI=T?o8*4X5h>IGlDV<28)NK) z^TCPJo_lYb>G`{_6cE4jdzk^PNK%WR0k~0*jel=r{Jndu&l#>pH<*Y8o|OvD!fk(i zvP*!;JspvHlSzQ!F3kVoM_&x1*=wnATDs>#o8; z>pWW4q~x!sewf%v-rIp`B4B3tCV*HpX+DnpXO`+O+WH!UiLLplQk((i%D)M<0dUKDj4eZ8vM(dxJoZ36=fCI4SXwIwHRA zL|;j2zUmSVJ9ia2PgwdbWl{?L5h^&pZFxN-for9I>=*fcyMVzg4URMa-~#_ATo{H} zG-B1s_pigA&4njL@Z^xX--P=1u|VTxuYj~s-th28RW7qb5Q1IAaS>c-6|~Gd&1`!$ zuGaLOw&7Koi_fYP6e4Ejs?XJFt14}U~{mSj*UcT0p%=}jPQ3j^sz8Hc2N^U8f;+wiBQpP zjQN^m;B-5xgMJUN2lmKV7W}|bEyUYrD(-16lVeQ(ym}W};QzrC`QB!PSl=duQ)cFp zWw+I#jH`F_zqvLc{n)||X#uAg2;tU`BS}+VD$cXlcinhn>1@FxCQp^T9!pi!-RUQe zp&72c!C{lSuq&h&)^wg>>Gw)dFnV-K-V!zTMGjqjHQX-g2-9AOlA{An6sn&9Bh18^*tL+j2uUftF^g&5kO*i?>GUe;D zZK3~fC;+hgm^w7?&_N6>Q5Gx9VnM&(@Aj=BXCV}lLU5{L%dlfCLN1WD=3lgno8c=t zWzSZPS752z%VrI}#s!%(ZYDK*Eqw(Xz!DJXsxEch5hMGN_5K#<`zyGoJe6RI`rkF& zkQqR&zZVl1H7=YxDt0)}UQ;Qzm^u_hk7D0WL)Y>ng2ME1mF>y_9o9Pd4Mgl9gQq9D>1scZ8J`D|hvH zWDEWr)^xy;`RAV0gQJ`u7>vch41R<`XwR_%6C)HKdJ|Y8)z#^ODr&>FoqhAXG97H= z<2cDbakX3e36psAg=3GXVF!`**UmdpK0q@iYlV_*nenb*C~MjlUo%j-knD&>H_5ao zy-(YwM5vKjQ)SPOTPTvTxJCD656Dlhp+TX!-1^K>=1)#sqTT#-A7CoX(x* zA`)sM&eD0no*uXbZlrxvUwOPZa;P8Qo+-qRhLm^sLD`i3_Dt;`4OOr_=f1$go$y?; znUb3Nr(p%KV8e;?D9tAPk|?pqcD)#mcQ-aQo8`laGXd*-n>aS|D5nn~`A)o6M$feZ z6Z?|(CYo5<%cL;GQAIJFl0zooD{4Wtz$mdS-elu4k>LR5h#$c!k@o4>r`>YIa8bd~ zxukp#8_MsZawP=zt>1aSsz0)wR%lc9zor|>9@(klVr5duZ;=3UA=cj#QzA!#Ju=G6 z`s-?0A7;S+1<@kciBO zGDv>EWe)8-2h`#3c#0tJs!ju^{t&DnGEeC4i1PIbI^veGJ1drM9EvXf-&nAo^bOdT zckP`Y(%JRlyl7T}n?;)tderyh{FWe;^gl$sE99xVOkP@~h-E2Gi@_i1A4Sue!$ z#(D$4C2b@+--6KR_C$H!vahm?rL#!Qx7;6{)>gE=K%tY;6}KOu?WN{|V}6|DIa< zqbuzEq3sXH=?sKet=>=2$CmgaO2vMiRvn@U+nH%^iL_?wg)}ZVy z+Rz(U4xm>#KuFR`8Z(=`LCXX_eD2o*U2G-PL~`xc?4`cBu}^(J*V$hI2kUxbCs&{c z+JUP_9^~?+>Mp!8@pTFjHf4TYl*2N<07>2=8e+!f*%q zU2O&Edv{dbDVsYqw0kJ!TwlY2%hPq^A<^%My!(-*P=-ANS4K7JMCx~`b~O>7*Mw8| zay{FZ3@NO|VB$ChX>#GpIa`X1_549z-14DrogjWK1(zfV=6T|4-WxhVg|IS2aoMK6 zQM$GO7LSmJL4m=0xPf!&b~#11qW8nchAmzxCh2@p#rB4y$atobaelE}icX(jB%g1A1!`fqdAb-s z(vr{T%ZW*|Jl3Q7q=!7lJ|55UidUSq>8LyUS*}e@ zO|w>lBNF*E$BW+pVi?rN3bFv;lDJ2>z>^^w;&0f1Vr1I`hKCNnk`!4niGE-Bg>S-p zEtKXR{O0~Tg8+nsoly4%)Gy4Mf(1tWX`Yf#23Kntpd8HTOIpi4Qq5@|47iGL+Y_A^ z`9yHT{Hb7R>@hg01>(dJ?>PJAZ^dZ2ZygF~i?DZgVE=5P(|Sp`{K9 z@gKy4xyB)q#MiRYLqU+y~Shbu?604k%SH%tk;+= zav4@C8Hles;3i()=&TaX3AsPVCBx`ghYll+8rs(~4)Tn$?&S z2|)Ce{46DRkm=r6r&nWMWyMf)1?_xtp?`GTr$eT@A1-;Dbc+B<4=LLlhHu2g)c-v@ zi5Ew2Ko0ALl(dCrH7bbH#E&bKar;RO12C&3F>*C8C2<$z%pD@6!1c zHrJr>for{H_)UgKs4;2(cavc`8`x0r%4P-nf7m<5=P3OV9SLhXJh~ke1 zG;m4m8Y_s%uqxQ!_oxU(R0*8P3-)*{Rw|3xQ)k4}F+G-S@>; z$a?7oAl^ZJQ*^2G#O_C(EQxZPa=A%oE{Oc6<+jEwShK;3w!5P#MX%5bG*f-G<`zrp zaEjev5~(>j&`{zG62;tEuk@+8eM&IF8rWj3N_?KsjKsfWb~d z^HP*eKmDBAUO7Bxy={byk2)Jxkm@Limue-81xvg>!|G3|?X0F@nF%&_Qn&F+7%?`p zSBt9=HOBIj_XC80`WB}H2pmaJPQ@DeuCnkzdDS_GqTp-HDEUcgBnDc2lNUmX0LNZs zeT53b5fmKI$krwTXsUJopXSzKXIWQCm>Mcf34F6QYt)vN#)bFVof}-JOoTtpfme-d z4fOW8HUbojNg1@%03vP_?&9DP36Va>YLFDk*Q`Mif+D_V?vEK{#jOWbx{P;pM&6?6 z#cJixqE%MIANVA?GQN-_Of)RP*WBQAqBJ;*e0Ym@bXH<8Gsw6LppGb;%zrltb0e+z zk?QdIsd|yP?TJ9|cT$PJSDc!wZZYkzfda1WH$)lWCPeb+} zFz9hPs1>`yKWXZxeDPG=T-Fsd*eR(9k^(X98>lc`rh`NE^KF#zYYQcd1g9xm944t+ z19fOkJ?&jgqwVRXm%~qdM;#P$j<$P=l^b8KXB<3Oi21h2kb^TBVvV2f znZTa7^Nx-l`$(U*q5fJE<9PfV6LV+2U1%!Ue?>6N2rY&ZU4?RZfu$wWEOQPD6w!un zgG&0nh%P=WH0%dORRBu8{IyLU{4qO|JPH*pz|6OnsE%H#&1L5(bju10C<~vu6y+*W%wlQ5Nd<=;(kRJ zp;YD44|w)uS(X8gtT$Rlf^AuUUW|!v6!4TX80wK4fW{2TzsbLL(T34)(jPT&er4O) zyLjtq7t}0i&Q5SHW*~-x{^tMozTI0|0#?%;`8K)Vcn2m&bVFKJoO`7Se8@eflxn;| zWo9#<|E3|$BQam|tuNiSey#=|2y1)FNEKrv9cXW{%iZW@LchUZOb_?z6!=q#%*pMw4WgAObT|M_#>PUQ%W4V4vw znd>%LhF&t=?DZJ7C2YJ&t_m01}jgaf;z#avZc zF8bU$!>XxzJteLX&D&Gg3L@a57=rtJ8AY^b7uNwZt~B1h=pk`^5M>L9OSD6akzh5} zTh@YOUb=jt#Z^Ywf0=6^&tFedehTb)YX9%1qUr?zG!(rBdJ|v&%Zccm_SYNM+P=}j z+;v~9A~ZMbj(IO8A!6+BWNAgvl^vWnPp6@}F44{PKK+Wq#b}R=h-VR=n8WI-A6@MhO)|5m_M9x{^~c*^9cNd?}h zsLQY1gUk2utmt|}VV?Do_og!MniY8Goqsc5aj`aK?HB^R%lzP(exl#_&*arMmN@4v z>As5_uSO_Wt7zWM9xuxon>V7@yJz>Jgu@D>!^aAaeR%oC^3>mDg1S>G8Qt**J5ea` z2vvDbjktCKee4%lK^dV(V~SOua={{B@2=3q{&<-npf2Ug@RhRU8!1 zI4EI8Q(o3{B6bFNZy(&#BwLo@Fchu$PjlJzs@DZx1_cCAockBpm z{>`ui#qFmni%#DMDGF@YHKPu~oZd<}RLT$!bk7^2vT;D^3>c-Bh*zL_#*zdP*v9yq zM4fhPY@XhDEM@KE)7bK($IINk(LmRXXIeQdBDEMxq*MisA4y!_f)JgXg-Ws!jjLX~ zJ4miTL0&SATO2-6VY&bxPk-ZScdOtA!;P2*;x3BcbjHidvbqz6|Bw;O8tMUKv)WX? zeE$0mXH(Dx^CY@P=B4>y5XaM9bV2kdKCMIM+{au z0%utnf1UvT6#GJI9oCc)^`<;S<(WJYU_m-{59kZfKn&lU0n}g>vNK{SP!j-};FyIVdNtAQo?Jtz5%HC}q;OkXpaO&bNwk*6bg89qMQt40l+Do8dTq&k-oL@0Z`G{F`s|h6RA91-H04q+1*9%zvJo_JVld!2OUa zv6|l5VHRGBmC}iOWb+vuT$tbeJeQ+b0h%GjW&H7gd|{-E7`hB17iJPAMWSacaPaFq z5%ET-pwAi)HIo)66(nNx{f0W6h;d~}LdjfAyg zx@xxPyRpkvm`1Q})UPE6IFpo^kf&DPPdM$5^1EGmD=CM9M$fr2Nyeh`q29Vuud4=V=(|<-Jnqk^hhkc1>Pkz(Lp`WsL8SS!r-+){L z5`_D5kEDU}WSHi9j}GqaR~E6@cykNCR|<_~&qISfS5()+Auw^#+Z0$&wLZ%QpU8n^ zEyLval>sFzUZXg;N^!*)*1G84m)rj&kl!W3^3u99zr~?f9RWvSc-+>Pi?Gmjmf2U= zf)FQD>9{zlH@^z_)RLu)RH( zEl8+!{_DRn(m>0vl>d1Rqbq@t`t?P$OMy$1Q$${Og<2lq3C%v<{;zT7s zul{TWok6hzhh8+uv6v0}xs{iEc1`ag;RMcPX)URg@_rgmna+YWNWI{@lxs7Smr3Jm z83$_K+|DS?Q!!otKBDR=vEzDPg*@8sVHSOM%k zH@a!2#)Y9|{QY;X@kf>Hymv~wwMT;yXwk)$3gexdeUsE zWmE6}n}if8gGxP#k1C4eid_@Vps}M|>CmlA{@pArj8M+i+wqKx6`wwwGK-PW#l)2z zbiZi!ernh4rG~DcdcuYaO?{?Y(pLZND2!D-=x4X1B)(BGsHu2MY15S$;xvwt4L;U7 zQZ_or3}-km0>Ea;4d2yauRu3@A-?PC>W;Pfr((auGC67S(8iXWu@8HU?hxx41U4Ds ztg2uhM*^Qb4|x=DJFc1^p;(oRr?lXw=u7q$@?VH_WxLc*eeC%BSEI@hWW;aE99`Sx z>5QlbT%ttTp7Y_b7(vt_GCWHCwDoweQX8&RMJn6XZBXp7c2fU((9MzKVyWKej8`CZ z@Pqz~`sbnC=08wg7M(lS0?=Yp;_(1{HZPJkWJ?n_!RUHtH@;iE+5kH)XgZVksy<=l zAT~!`hp8CrZ+VRI=I(&Y=w*;>l7GMQLkQ!I9F6xX{Clz0Y&sw~K917kPa zOQ&%wN@(ulEA-hreM!q2E>Yl8!G5D$;y7o=LRnod^o4@ZUePtdd9fS;X=`V05P*

?XmtQg;NcTIXo{Rw zN~%`c&s3aJx%k96YM``kj-gaikPFYI56fmsX}EM#$A!OMK1m??>L=e*>q+#zAS3>x z{lT$js$h6q?Md6aJuB_W_l}L*7Y7&hF8uZ4Oo6YNuiEE}PkL|WgTHU~FO77$nW5In zyp!G<8>h%PsMcxmsy%+Juq0RKu(RHayZvXOGsEtXL5PpGNzd$!$^fVH`s&lcr38-1 zbq!m@kRu|i)TJvwZ_d&z=i6YH_}?ESf*XH@!@K( z9+pC5yU&`iJr1!QRi-e_2Ck2YsWm5v<2*On!Z0fI<;OR~JbLZWg9Y%$FSm zM+LGl-r2?@L1g3hnG=%N87JLU?~f?bEUC6XcSkF1=7*2(Nc+(GLh)wViT`mzhZ3~n zU$-SU(@O-_7ZzBLVy~7KM;~?g%cUN&qQIqO@f-9gHIEp8`f&lah)(u*v1xejNo*`x zT_r!flL+s#*THs^eG|bBH??@;C#2=pN35LI?tAZuelL*864DV2?K3lwV|A~jA|*}W z@iq^ukYMWMwSsO!maWFSJMzFetz{#ZCs?r_+XI;Yk&VTW@ZD6@2d(FXe#^~$tNf=& zGU-M|BBVq7k)4k)<)y4e;v{ED_v66K!s8JZl3L3>?(|`zZ{y4&#?PzzI~8sM_7Zi6fH2tO3C}b5m;t zmFCv(iv^a62|?Reh9f_kM*-WrFMKl~&{B1xE9XGw$=vCu3sEQx)5dy?B_0xO`>Ma4 zdRW80_j)iyXOY}Auj!qHRrxj36=oJ8F_mf~l5U+`a;sBQUSf1*hY)pxKPo@7`|bzk z>66V9$623J^x8acbbp@tcazB&lrcx#hqF*!OErwrw*H~JF71N*56MKaD;cYD_3KDBs4Ks0w|CjgPK#o(?05)-5PO` zs5X*4b{cI&h>L>STrHtR^ysM8n1k3^%|A`{7Px_F*p!}mn`Wrbg4E-bBXNo>b-mH7 zX~3rhQVQ8^!fM4bVGb?xC$9LudqA8o8w@>1Se2-`-j~DHHt>-Q@VIC0!^O)?0LKzx zE4=Setq;^*-JjF1gtn>J(WmXl0^Q6DQvtvfD0$Bi$`9q+Wjm_e{w7dzh7zk^=S(lK zh3{2gf;TU0-6KDyFng_?-$ZN#k{u_j|%K|CQX z{>X;l4*foC%mwCXmFn*6|BMBf7PrtZXnjsL`J8?=>lb z?xrta9aeL#im!A+H>Tm+r4*$bvo!Z#$p+{Oz2 zImCO%QzH0C38_f_TVgj+@rU+@0H;nyC5i}bmuO&?_FfRnXkS#jiEEbAN||>tgz!%Z zIwGWRrKpei;4kpoY{DIw8Nxg}t#(Q^O<_@r_Lp{80!mPJUSLW679AuTJ-BXC?Lzq#Sz+gQIbLrt&d1H zzntYD2#i83Z3SZx?VKWJBJp#DERfEM64+$YGPZ{*YzzZ!UTmPO*0Ha+sJWe6YEE{j z;PT?YK&$Pg^Uv6^C*#JmBz`C$>tcZ2=u(%?N9L)xxTKK^F%RB8R#dZ$eC9NM*vM=E z&nL12XNzxo&;DJwe_pHCuctvOD;!x*; z7@ly9*-5C_9OtVG}&V3 z)klBX(% z@S1o+zNRks5KUBT=O@pN`UcmG{|prpznd`_9&Q4Rq?;t0zdqKmoyO{-PX|_Ej5`cz z=yypn?LvXVZ3mR?jb0>vPh@$7hGliN?OXdy+ZR(qAA{Zw;)QR9l4LZE`<`?5F?uD`m(RI+h3zwNg`O4jt7eo&=eujcKbus3f-0JHW|NGA=KWKA8iD$1p33$dYtFN|5h$@* znGec+Mhfintoxld@~MdY@hI5j3Ud1Zqve5}V&v*&i+WCB$1SPR-NNY(Hx(f*Y4>G| z(pSlDuZd!}Kzp~;zRBU;H0C@CL-st00IZ-s&~U($?6SA2Jg0%gJGBzp-mVNc)c`h8>Clp`~A*lI{!? zmkDoo+$}snm1);sJA9)Ugu^pV?N_^#EYoIm)d-3kx!MglaRd0f9H(>G;e(gO3Kz3p zROpMeQ@{qPBw*I&%pU%Y0$=@C+X{EDXjp@1QsY?R!NrhB$DQIb@_b>%W`|U2`v3Tj z*kb2MeEaiT!ei;!;syDck~8-=@cLvB>iHM`!t6>r^Oo==5JQzlI#z=h=`?`e8|!`a)pYSvl(%OmUFSR+265o*`Yej=kH23NMpgSg>tPAJM!4Hi65e zxYfveWqPvt97kY^=LOrcbFew(_6%RgSYf(d`~iMwl~|N2;Z0yCE0AT*xQxH^F`Y3< z3SEp21@}D3a}jj1v)5q}!1=;?fUgNi6c>+CO$Nxyvj|>gj?M9F4=pVCvBZDM8Z1!# zAwD$?*M0vIonc8@BSL(R3LpwC8v?zQ4uI$$RdeA#mmI;yRdp@2gW$X1Vf&Qi&X}9Hu9qvZ&{sFXcF0N@^MUGzYPAz+kpus90#pY;Mtq}? zE{#ZAa8kG9$WqZZrPM~DxqpE>1+H+e`a!C2rOmonZpp5b{UsUT-6< z3qQ)`n(a8O|W#uLALRd+DqH z4Ue|N7+NcQ)(2Y604Ngb{`KFmUbIcR{962p>^MQqC^D=-jf|-L@iU@UqZowtqB}yc|#-yb^QHs245s8 zR!X=*GyLHiCy3bG63ZJrHmmP0^tBGZDt=KEzfS(#A*x zf!~)wUNydRNN9AAP;mK_%JC#OHIQebjBrryu4u+ED`F6*Q9yo-R5!WE-*gRp<^9mz z^{^X#Os(sdDWTOCQ{I?S%MhUVL{EYli*@-9h?$T^t-V@0U%CWML>BH^;bZ8mt&)*R zXxV@`V~39Vuov8|>GjOErAD;gy2CnQ2>w1UYe8!~cR#$Z>n<`uaDV7H++kF}+9+XO zy~>6Ai8BXRbL$>4^)wLFlu*LQhKEm%+K3qBc9Z_l5PIu(qD=0Vr? z=g`b~k{>jbg&p+}PW(6Y{z2XI*!gk8anRH+WvNG{w?mstz_$xB>gx4=4k*crk1z|4 zA8H>1CzR@s4#!Y)y^c<4`P`r=gz^+gy+?Z{a_Bg!?f*x+pG0hfHt}>Mf!A-o6%M3 zPi(DAA{#*@XyW>rdWfZql=uN62ECbqVC}k*wPdO}=+*YCn)C9`h`h>q)wU*ZRn>c9 zx!f+OkJX`^TV$RHA$dZqlVwP?H8oqM@RgJ0S4re0TDQh^Vlt6$8*B!ag&Rc_0gwg& zNa8uAlZ*||APy?qd_Z1Tzjz!xN!|TEFa)r#S3}2=^1Z_21<`=)iXYGYif7G75msli4=*CZ z`GnJedWZ@9ImEXy#$($sScyo!<$1jbpBIGXPidcWjFAbyFwDPzVllb;Q`=PIEgftm zUfQ(Bcx!v;~qB|%%7is87pm51R?e_ME|A^M#gVryWJH_7;WinYc`pL;Ym*Z9ux~Tgg5B! zwH>D0vR{8;1~xT+6U&*l4^aCT%lBDw#sG(aXK~AqW4-$tEx^MT+$ixOe&tC!ys=cA z%NP`ny8kqY*xJH31BdKD)BnQM5{VN>kLxHkV+N02N3L_%Gv9e3Clbv%4w1Klw?H!J z0@OY_>_zN(?4sIr0oXMr#|^ywFcA0O6p>w2R+ecw6F(&~0NmoO!s?#qm5_5du!>s( zT9*$VHA->4vR&ik#cO%K4y$NpIOWjbSZKjbE?9(csCPSI&83ld^Vp7Ei&;NEhc@q# zeMLjUBIr1c|E^Z68x)DQo51$D;Ke}V!tX@3HlxrTb&Ay?%Mz9W5FfU1jv2FEgfjXs zd&@J>kEmtbU*qdtQ)I*++y*oJHus*=rzu&)h%op>qr+P>Vr>R}eEwtHW~^8@w%WYR z4_WZ#(pn60kXR-s#;*Dt{qcAjF@lsC0?>4D zRXGo4FXe`w*yM|CMcAn#ein{;JKo?*q5KBFm03+S(j2bys4vB7**iQ-80PF(29uYz zdnbV_O^>9fR0fujPgD_^u+OjIZOu@OpTEC?|YW;#F{-R(|${RpI872rs?4Cb;X!@oQzQ40^P$yGo=K;dPczlPY=1fK z9&yrPyqteDXm6m0Ckk8Km=)CxKJUhHN4TrLo-P%*ec>Z`##Eg{B^##$xGX* z3?qs;i5Z<^{r1|4pXXckD+j ziR6gKI$(Nm{mZ_NcYZnwlVYvfEuqWyY3m|gQJWnaCGFgkk1Zi1$G0?pzqpQ1QYsp- z6dLdZahdoL*?zb4&`2=#_narM+GQ+B`vG|$hxm>>hFzPbXQhp{uhF_L z)d%*s9mzE)<1W_xeXhictZ+5xP8c>XQN4Fv3Z6Mo6Zo-A=PQ-#jxmSgCk7r6to+rd zVPkn8v#hTYC$L?oG^@f6Ng_+&Vnm#YSQS6fGa0txFZABDTz1N8h}zra{REQ{4^~f+ zcXAr=DajY;|2OXT+I`CJqu!a9@w0gNy?TMVK zj0<5$N>jtuRVHmu`YE>s=$~ywh+PGoC(Q=>8Z89&ayo zxt+*1FN?Qg`tW`bHz6V0rtSIzp;?_^qdb(vS_ezD$ms%+4%~I@P1qq5-GgWmLgWnh zWPl_O{*98xsbYB>vfbgAbZ(aXOibBfa_nGl{IQnngp$R|c2a;ilqw5)IS6=LNn=H& z$jxwoya3}nuu)Xoeetblul3|$#I!uJhRf4wc}}_Oi{xTwr(BosoSjvYRyJ)so(p_D z_bYM9Ri~A*8wxB?h<@Gti-Hr9y~CyMSF4ra;)T+{Uwy6Jc-l>ut{|Q#5SN^_+thEw z;tkekHWm0?C|5Qn&YeK@St-&R^+8;0Udog-Ig|0F0-o#~%4(3u@-ZrjoZD%5uh^2+ z?APR&9i#s&BbF=Mm+`TOY6kMQLbDR&JA0W<2do`Hxf6jc!Id6honk>Qvrx4`>C(&0 zjaWC6wJx#(1|2BTsmMOgfd`1=Oi%#l%a9JIyDh`+;tgPVIiRFO79g3t0z^+b6UR^V zgWj}tm9A9UUew&0)(=F^i1E|?h#4&)Eqbv1256fT!7r~KlR=60U|xTEv4WWmwlvy_ zduPcjdqFqCn!WM=eh)fW)~wBc!bnHqSQAA?Jm`&gzW{Yz84TJA&e_?DFDzc;1AyJw zeR~lhs_nA9dwj((80}ZU%fw}|fne9v5&_LUzq~66bp7PD_S${(FKMiVAQ@MiwMYpZ z!Cvgg{9@<@TNR_c?J(zO3h$Lr_q`r&D8qgk03@SH%e+YkUIlcR84P7ShNw#V0sGCp za&CA&@B@sx&pS|_?6_dJR`jtuS(iR$TRDq5q^6zVE1?3$=|Q2tWiqBzi-gf`vN`wa zSgRhg;`M_Gpk@E7dz7zJyyTjwR6}9Mi%^(rxhOHGKdVv2Kv?)yv8uaT{0ALjN+dFHnlL>kwbT$vG;g>B%Uj;#wG%-4^`PdTMiQ^ zAhM>CPiXvilT(kI5Z3(50h7Ssw%xPm6c)`o4=+kFq$zBcklJa`a3SwMN{3U_Gk5MT zlJkhFA%JC%hqW>MI7gs=zFHS2ULco+^cwB-0@py$0uT*}kzL;UFL=>(_gt2sVgQur z%npn=$cZ|+!)VFTNTNl+m7SJsSy{&8mndV=H@+ZpggXW60bkJBmJz3^ zb6562M$1u(1I8bnU6&ql34RYjx70ew9DRHg>RescQyjQF4Qr!!yjOBBqQTZJ{E0dA zq#*c%v8CBF4IGWS$~pd2v43zFJuZtMj$HJ*tjm|pF}r#Vi=GPoNq4pDa9ZHapIeWA zwQgg-TtRDWDe#=`w8K%igNzR@Z>Lq3A>~1QGQ4z;i z&~S+|LKL;U@yEn+oTdDYl*#d95Fu316#wrL*Y@a4t-m5aXXJk&Hv=CVgo9Rkz{HH5 zJpcEB^tth67gqYD3Rh$XV<52P2c^54Z@9KlHbW>=4zzWVC*f6g?eF^%K}{wqrocu0##5MH%P6DSSb z%Davy>ZK|F87=+e2OL?{?=9I0;=kw3n)n8V`a-s7`ScPl6-aoAbVn>R2W|8l+9afF zRc*yy**9ObCcjPYf=$p(RwftBZj1%W9r66NAY;F*Ah0_GRy*VLWQZ?idWOzkn1`C# z`v~`JHO}8!??Q5XvYke@fTal;eZUzl?-Rv?cM~*@UG)Q*0g)AX@~m~0*D-}p2EDqD z*L>T+JA4S$SP$9v%jc)w*s+uwousJ%R~9Z67!gfYqFc!O!jp`(9&SWJo_3PvJ>3hd zf{oUX$B|BnpJ`bOku&`BY!>K=96P#?jTV>A6SVuy&8fOw?aeyMc`Nx?qtttyiZ9i9 zUt~o)B>v{?o=NrGU*O4T@2dfmTMTb@R&Wy62V9Oz1XHK-tcznp&^SpgTY(zM@*zf2 zEDM8nf0VlNm2+>?E`{=qI#Iw1Oya2bd-Xliw44w{+3q(@q-KG!F7LYR%#$EPx%qk; zyu~dw2rHK-!yA% z=ql%oV+?mU6Z4>-bEtIs^2PJQVseQ*R-%OGvy%A zb9`SRzn-3ClI^_MZ={o(iH@2Ep%PEq9kL5Sg#xIiF7^JrunY@4=`Dtj^<`bmjw!W^ z30aOoAx0~coBIt$^2?O%f^#c_d6?M!O_N3aSYyp0 zw^Fos!hvW~>r(uOv{(}+2h}|FVko) z2-CBqm&x17y0Ll*joa=PD9PmD&)zzJeD)A;4=i`MPu z@3sS4AX;4riCoPyxl*GD!Y^-Y-Zor2H{tK7x;`{r8S0Pnjp!*oY$c?sT|Y=n#MqK( z-yHc6ykgC1xtr!U45V7?!krU5g$p+w<;w%fFOFwFr#3R3fSe1~BG#)yt5v(>_rGt@ zgzOgOMX}lgQ-5BzT>dcU7Rs+2yl(~EDGkEL-BrTxyOD&{tE{)fdg&cC5q_h?ax-Ia z{m3Xnjl`^rwWTi>6V{lQsY;n=vf>mWycFU*R#gUxDw~}o=k`tK(!kBtaT*ePR={OL z`iinr`=7VSha^Y5m6)N1pep%u`m0FL_z zK8^8o(X|%d!3N6S+7p%i`r*(jM!V7I&Kbk_J8Dm36Y+Mk`BRryLFbbSS{1d!tcR5a z{ep{Kn`7xaYX%W7Gkgx02!3!o%o+g_Uj|d@ds!sV;z4zHj_1Ozfs#V?=(+e;X*iKA zmAsY#&vSH>lzc^Op#&6Va7O}Yxu^Cyzj?p2x1W_9JdmxW@%5H-6kx)*zrc)GmI!Z@ z=)8EFW+FqvTL<#O07-ev^gKV?=QUzJ6+DG5D(=!k_;@YZpSTvd4ZP<>aapLAQXil| zB|Fa=;Q5(pfOraIegcm=xYU8V9CT`#cFc#{annGU^^_!lk0i!{15yS+x-oEBajb#b zHoL5-m7W0$=X&J0l6;4WG8vhfh|O?5RZ-no0Z$BJ&i;Ju?c&?Y_7nJ3n>f%r8u?$@ z)8V!C)a*=paH;>M`~>aK>I$3wbrTs_EB5V;h|4&W+joAH*w^lYe-pGIR zwy4RJB%8ZvtJ8F)y4*R^B{ca(fxeqd&(N>4O+oqs%UEIQwb^2qkJ;LPw|RtVv0cwQ zz0=sw)Ys3WbRqBCmYVQACIu${8I}UUW{r2)a`7d!3hu)47SegSPhA{vI6~(%nfgb9 zh43w5d0I4SE%zPkVRSZPx&2+@Btmc1OB>Iw^LSg-SLw(U#WD;1s(6uu2Rn6`O@+6X zy$t?@JL(7MAyGt%;Y#0m^tulHOX*ck z!N}8^|FRa$sEhrqx0S46#eB7dV4LWx7jROU(ysM%kqp&R#^vl~-3XMWEtpxCdPS$z zJ`0AL)5voFI_>okYw$yTQJL%q8J@&({nt`=yC*Nvs!G>wkr>P6*L+!;7+X2lJn5Hk z;@-$0x0f!KFjs#ksS>*!9MXj4OnrHBkz)TcWV^h(!y;7U?K|k1Sf&nd^L}jnjJ}L7 zcE}C!0oABQT-Vni-mJJe)VTk5@}2sCiv6&c5Ss>nryLPxs0&Q*I?I!boepDi2VI9f zBD*>4^*xggPtA$dTu1cVK=o156c0pnQJP52n3}E{Z0$$*<6d|PcQy6~Cz9=y*X`9~ z`+3!_EgBW%+&@)u-ArfC&*$1`8+z+UTyvW!C^dql>1h+4-A8f1q46h$x5b z=VB6sC*ra(WTmDaIY_ZIK#N+wkrJbhSTeG|LtvN}fon*l+{m1^K@u&wAxair`=9=P zZx=ezh(H9mZMnU{X{Yvz8lSp9GF3M^=JdICo6&w(y{i=Gur%2R zN+&O}2SYtlqW}Ak;_aY%_dq2H>SG|^5IP%%*03#c?mK_;JY@}PPObPKf2PWuv1ukL zv~SkqO?A1OB$xez){@_Pmar6YAN$vk+L@-OADwy6g2SPT(hxGi?bcCP4wN6|ZhE`W z+8H6(P)CGW^Y|YJ45Ir5vijt=81gjNODzWg({36s&E{YAJI59n-bkje&o7Ng5QNvl z@FUnZug!>1CU$vRbbXw?$;&ffO-ET(a!Fz!XEnsLzGcQvQx6ipr~!%bVuzP&c$__7 zJ78WwoaDzgb#A@%{9`LQD-$th8TSkO_y1lGz3JHp&u-|HuRpb2s`!f^xbf)FA<)|C zRvz^w{7x8Rsjeg^BKB5b4G{*AaW{9NL{ixW5}7#7>(YtVXEI|nuE z*HPoci^JYg$k7f3x+zxv6Xo2?KvPZuynjaelfC&l-<#>m*|=)6B-@dlZ0()%#&$`p zdFMqp)7zuNqXwv(bn^SE`L{6{6PONW{ZSI)ZO|E7Cl?NSVuKYUM_S~YXoDloFybJf zB6&r?;3DFh--ESNI1;S%$`MfaEA`py1f>hy@_=__B=S1(3o$ii+m_{>Q_J6jZxf7h zZW>SCu)^8{n;u+U6lVq{AIh=e<+ zV+kB2vwb8(z7577iDJ(G;pocal1lrp)l9ujQ%;&W<&=|Ure?k^>RT?fj-{EofLluC zz95sPR6}v&r**TGxG50y+x@c(wEn~mcV^m**6kI3 z2I41UE~oFt#gxd?7KN%P;59_J`w#BZ18b^dm|N1td2)_DH=UgZuqaPsjpZ9gv< zuSj~mpIj&f$@D;h(h&Zh_Oo?^`|qgtyl()ksl0{P<~6h{p7k&q9KR$HtxdwK`urwp zb2g>9!NZIVb^UhrgmeJ210TPB@a&9n8Pd`Nfq-;kZGf3(4cYe;JT(t}HnJ2Q?>BX? z@0Fld_hh)6tUsmO-keGsOub)Ht&PSBJ` zB5h(VxbIci7PH4rA6@tT$!V3IZ2;iec7Xnoe|$>r@_L|aPLq~F(xigFCT#?J-uwor z=`cM%Hm?QMm=d&9Yti61c0pd0SEFTg>sy)Nua?gsc^iiG$QRcM#-Psb+5__{YkQDr%B&O;?;yO zdVGp?=WB_2J%%IISYj8gPUVg6j_D3-1laBBahecdXF=^Ve=Plk{{9BoLAefgC`ZB4 zT_3P1v-)IBKO&5LldUE5wQ5KOF8kt(lz(!j#O1KK41TNUy-pl|Y5WK)85Dd}G|Btx zg8+*oh977UG!G*S%Yu`eh~r1t;MNLbg~H?s&4u!=!cVd3OnaNlKp(o__v6KWD~Cct zrgll^%cv^9Kam|v$ccnuwzQYX+4+JM$n(0l^g5N6dL6-_#t(SP=zd_Q0p{*;(OULn&fqxFI%c|@l@S&YW>RWiE-hv5X#+5rR4>uiR6{0HObkXr6(7}3x*v*r%K;jbE@rl zbg0ht@xgmP$6g#{kvbobQ_0~)R2dYHEM9PO2{8nM=Z;!WDja%v^Vwk*1q9*{Q1R)^ zJuOHpI>t*OE_&<{j?!1xp%SU;`=p2Iy?XC=2~(6bC3m%GR_#xwNxBi?C@z`Qr5z;s zm_Hx571-I<3wE6wOo|h^46M`sg5#*Hz3TQY@4ym$jOK^uuVo~7iJ{4Gexxyi=BM?H zmqLU}o?|yO`3EHQ)=4r3oavW^$=}c!kU+0TL^wVg-2_K{^r@Y8@$kA&LO}>%ioJq1 z^4Y=Q=VL%oR8K^vZ-9&-Pw;{e#${ukbU#~nMP0g$rS4R!ow$b+c5Vo&2uzE2FLYrLDxQ~5~JQ*+Q^S1wZ zQVhb~^imflpRZ)|lJcHOvG~a-9lPF#RL>^dk&Bxt(>oA~WuwjpGhuP5w~G!C4vxPV z$32rpls1>^ly?)*D+fp=VC~WC^OK<6pA}Mg@UuXj_Ty#9E*Uiay9_h31%QE_! z9BLyZ9A1~7FO>JOzv?7+)r)Z=YH0W{+5@mv+CY@N7)yk)9POoVJq*trW7sd- zygHP4D7K9HANYb-yDhu54p2^PO`wR%}%L zVkcm`@{fgqz931nj#?cqNRF>>v{_F|t&+~__kZMm27Hgkhs+fW4!lx<;9E;O7hJMKmuDmw}qr*pj%D|nYTbGz^om;?dq5m zfUR;@UvXcg0|wk6xV?RjvT3WbI#^sr=h_C?7jdeyC$pu;0lR*Emcd&VPC7BDq^{$AG zkp!7$Cvw@!B4J^W>Eca#Z6UuMdcfVAHYH*o5)Sfqm}bixD()R1jpG!%aO{ zQc*ato)C?zN>uYuB^Bsx%ivFK|Hx9dB*quVRQdRFAKGyNpD|9WNvn%bnZMm^ZrVP4 zl-2VpoHPd}k3&*7^-B*Bji$W#=UQWEkr~`i!X%Q9(Al~~dwcdEr%R(hHge(2K`CnbCwy)*Rk}lk<6qkcQ=LU*v6Oacw`_k>S!W0DRBWI16QfHN z*<-{efzN38UC9Bew(7}!)r5PU1w@X1d~NnN@^Bh{Sp^K#NAO(5yx)Sjgs4RjTHs4J=Hb-kQF z$%5F2fAP7;m}K?`={nMg^FTNmf2y=ylwVfWe>+`j+Q$gZN(sG%=LqfQ2Aq&bX*}WC z@a+<_Tk5^yNJgdS3$vRW%x0RJbRX3Uj&#FS|-D1~k9 z$}#V|*24!CoL{MeD50R%A=Y+cE6W*#jskFRuzAq8oSb9=vtqcXn zTlp~?St>o=OtXys`h9(lCom-N?#WN`AlWLw3e1gBMjAfuss7ez^8O%uxjjiHbypPs znlO25h>PLSngB|^aiP#VlmMRpYcse`k%%zc!_uss_Vx6+97!}954=k)USYxin*=02 z$JY}fScWTSz2)NO1D_8~=}CzIXXTDFNdZ}Y9;j%6KzTukW42pA?gd!FwpCzfja-g< z&=E(QyEd#Xv7($OLG@F6xV&JjDzfzJgB`4))YqV{OHf)}{?DA5;94RC42vg&8XEri zke9TRZ#q0 z0ypYsA|hgEiql82cg@uLl0Ns+k<(wxgeDAR!?G5jRIYjmC-Tvi;8r3v4uS(? z29&#iq*MA0bPyP3OrlMeE)rF`u&fPpGmY2?cDinG)!AGnJU=uG*RTr3m5}gNp|&xR zEY&3JT5*@!6sLwslR(Bamuc6chryntF{z$KH=v>=FkY2D;_X%rhDR$(qYnlNwkCbPg&%dR^$|bh+eu7; z88FmVy!+$a%JlCr5p~&iF67uDE}BBpz)i7|7)$(%5WEsEjBqc0#YFg*@ zebh4*Zo=uOfR-M*3_A*XVl+$gP~|$Q;*qwQ;q+U#DJayVE|++bzBMN~QC9b=rGRP! zc9aSXcvI@Y!I~r601TNZgO%K^r%Nyhto2xP!UPsuZ~V*##eI^T`2sA`p2 zof-#3KKLDnHy?@>+7Y?RsJ>ncXk(kG*79jg_vW1xW0G>(GCXgd6G<8%{0}LNJG2VU zAhkLV>Cu}mR5~sCyN0@a{jbp^vB)I0Vd7H zCra}Y6{TK5XCHZAdoc+Ta5{zFc_3HbK`cJ&kzhPok}A%?ULaG}a=AK=q7kWweIM9C zOgAk1PMG$>C5H%~EdW~m_rcnwf-AHcNI+*Orz;9%0c@!HT*Af6Jr5ogV5EW3#$&%x zlgh5RVyi2$Df~N|cRghIx}lFL)^}@xADT%+M1xdV8sj2Qsxu+Ukd{ditH8Y=(3KFs zBH-L{{-!Ny3CR;gkh!8ALSBwJH@O*(ak3RNwgCipqNJib4Y+RT;*C`DcmB6;)TZ3q zfA){rflH837oE5~TDiCM(!dJ~=byiJ!J)^~H8v4s<;!p`+MMw0X5eEftjsENut)J< zikZ;LAy5VB(NOKTDggwf6cx3)56ZlDEz6W^hoU8*O!tPt+0H&zpyMO-eEF}=y0-LD zABa-=?(DK-?Cl!B_^8$`1=r6$U!|#l6LYI4)KNQ5IMV~1+@&A=HY(i5z^}mGiN*4x z!Ns{+$|eLE9VjwK+cSZ@}UGlo0Q**Y*2}8h6c_1NcK2z+rgkN2WTHM(^nbAol6JoGl;= z%ODMUSezQtz|$DdQQ!M#QR0}{%-7p@m#jh}GL`Tk*oA+XW)5M?a2??M8sR%#cA3Wy z1uN3$nkTQ;GFC^*PuZ5oO|2*`tvBlg1sE{zu#`vjS&mizuec@W2j{6b{tLT8S&!@R z=AV6_YW$yIwDrGN(1Qf)*^2WiFJr4P!07IYerJ*6q!WIOh#5;M zwmmXoA|?y1+m-a8x0lxX*B0F_(Iru{QGr95``UjFY`p3QG|O*b9Bd!;m_h2;>=N;6#Q}Qm zKG$~g-aOw5J*@g7@u|`p!6Y}jjzRZowBe(M>Eo;z`jE>LbnW8X^!K<&zyGX-S=n~xz^v)7_mFdZpM%RIP%z~MRMvro zT&s*`=w{rqcoyZAy|?Ahzp-z_@9P7vT>S$UfqXY^yHi&}fGND|mZ$y`E?&CTk3sMGNUXJ1`|i4l6|4% zt0wM>r=@*+_-P4I8MD!B63X?|c8vk}aR2O9gef8O^avor1e7>0>c~{5sJoF*2P7ZA zzmb57_e0X464Ni+VXn+;tH^)N0U^T2(L1IAim%O6?v^UE@{!ZURFakRuFV{mS%mIc zNKsJKBr{~S-&B(IV=9LP4lSGX3wR1V@_eoCth<>MT6@Cg*{Nz|am`E|*N}@%8*J=O z6+XObMK1KcI8<7@@0>Iw65z}^9{E9xkc}dxcG>n@HbI|l&PN|Q0h7>!K7<$7L*?Ot znHuwRBE^XjuDsUpP}Auo>C(ejOFGSwa~?rRL(22sQnK6Hp6JA$%y*W-6%Ky9F2GmIN)IKIguu%|M+h zdR3TD?g|i~F{Hk5*D}H+Ao?WCJ5HMv5f#%W1ao~qen2Gi6d|lE3qZkK5Za|xKvHk_ zc&iR+cvyR*PwM}}>PBt{YoGT10FlZ{aRDdZ4*JHA%@>FhN0d&8y;ccHYkf0tAK!*Y zj~}Ts!6RZmB6cGMf};IJ5_5a^4@Br`@$&b3Y8DWR;qVJP@XZ3Z@M%KdfLf+a3_ITtmiZ;9vQ=cB-`yk{s8#3W6Z?cdD{4sSiX^12g<91$iyyWdHr zJOycd8?2E#9HpRyRYe|5gy5i%d--R8ANy1Qy3FA8ec}5aNN5viJ?5@X23f!50= zBGM?!)>X6b18r`z!&7i0``fYTpuTp{Ka&|?*4A5vJMW7efER@5(#uw`{>iY^8x!+K z*hH2eJRB7jbVNI4>%GzUQ>!v-;_FEtlv?0}gv5f4N#2VJR|({Un1)Q;cMLX~(h6&b zFexl;2rLyBKSZt78c+o1Dku>Z&V;BPE$=vY{`yVu4?oky$8D>xZ-^{!DEJ!O{*xVehr z9eOm6SpQ(|VZDYv!6Lr12-wa4O(h>Yz|-df&NR_m$88^Q%?#%zX@_n_vibsc?Sh^O zM@lZZiBBJ=e=KZ%zUC)Q#u+eM3&PAkeph{t7l;her2uq_pRX}eSoze|eWK_O&zA0Y zYb-rX?G)l3hLx$JhRAK8iaIbu;7`+wx^OSFZP;ZgX>DCOVWj-%9DraB*JOGTKh*|0 zO{@bb{_KyWkv{K}z~s7@rJ+2|ScNRQ`jWE%f6m6uV1l59Rd}gw+n18LTyM^H+H3cP zS711-65TcJlEutPZY!2@a6)t<_T5aFtW$U?x?K|hS&7OmT{Ui6sa(6Ho;}_8ILZCu zje`Xp-rY7cT|WlysI+v86<0pskAoI=z4Yf)$L_R)S57(MtAp~T*T0|vhrx_JATYbE zN1dGmOF=4pJN&QCQTk@HKlh{>r)+q=uW17;=TWxeX_6R*an4!gSfY!=WQP+*l|a`x z4ixm-(8F$x8ck4DrtVUJ(Deom(I&O^+O_?=9S+X7zmo=+@-5q7QZTAmi7q*&M$h9v zi|BJNePk7+b5jpN+zrRQ&KfbEttGG1H~Imc* zV5VFMC_~>tSjEIBrwz%Ew1USvPUD64fEP^jrvlH6rM3GdXTJl|l4fHlxmN*^q}|o3 z;$>8)WaAV~9|qhy41^JXT!HyR(yJh%#;Whl+F7DPxK-(YRk!Y2eUV6Q40MXJ1vQ6a z>s6~H;YeYT5cuf92po?*29@fp^!Y0Limox2CE}>0q4$dG=`h@HG6Sas^m{d=a8aiN z-wxqJ&Xc*&XFjN5x29hfc9)x4&lDfHu7-Ru`7fM{qv3t4=L4yhrTiTMrg{B977kSg-pVW;9DcjOi!p-#tezH(A4-v4U;SCA z?XsL?bkZj%zf_wh9dXc9?R(#y`-AZYa<9BS zP07c*s8+mPN@I^&T5dV!$LuM{Qv2mo@M!|jWP+QN^oDt8_FDdM%Z9|ww?FyeL*g1d z>@>?bp#ooYx5{ITcAM!DeJG5zwKDv|#&+tC3=#1&LOa9~md_vj$8i6R3r88d@3hO# zh2e47=$0HaZ1`O7$-bIsA$V}#9j?!!zKn5wLQCVq`(`u75kAxBrpDLl7wS7we&F7k zO#Sk<+M*8rkWdS&*1BIBtL?45*|)t{ayjFyu(5aaDa9aLDj8;HlaSg8Sig3Bz`^5E zQp`Prno_n`hfuSozCLbv?FoEt`_k<0$-OTe9G<_F{+zSYQ~k_VO@S`cQsQwV&w54N@s=h_G9>)FZ&zpK9>h$drT==mNU^|m&5RIEq#h{6Z&D%`X;JZ)w{@bnmjVU zLXssL8BJ_wL#=ht@ZcFO&1u^-T$w30FH5y+><68+)GcJ|!60#nw&OIIMYQt;AMPd| zm~KzZ(*t`PyuO6>9VkC)S&6PN-BmK-Yi2 z--`1o`yn5n6!DO$vb7$DBtDm3a;w&s2?4wQp|AXTjyY~3D+DX_>mP~P>*{!K>>Yyn zGV)~-SY&yu#AGVn#_ZEWaf5pKR&jE&mLG{)^wp+tlP0sQ0CE+2Sc#R9t^IoG1h{9m14yOtyXCYQU#jd+#0R!J5)cm*!MF2R+51)iXk zxmn`Q703diOs&jq3DbRLhA+>8LauCnrH<$zsy|z z2u_{|ZHDTct@%ICw1avtg?x-CJ+C%%m-Ooozg3hF3WgLu_(p&7#27!wv8}V0s5VU> z8|1tuj@ISy#xhP*^i_CLXYHlGba}*I=N9l`)%Zga9D1nb3XZSch#Q$gA2pz^Q~*!q%rUi zY*R-8AC{}NYyJi+rmFKE8}+U75{Owv6a`K7O9>dh#9D@q(B>@SQURmL zV3nX>tbxwM=fOfcXR-4IU_zVEft+PH?HSEf=W?X>2~|Vq9x+C!CiD`UDyV%?ilE-u zwkBC>2hV;OSR?$PGu1E?$cJjAiO|4zC7vRFxaJlEnlk_%IuoPR(9=p_+ORHLd6J#& zLqpm*T=06al4_`|zX7XO(lmj=O;`Gq4G{b65&GnbxDQ;w=;{DM+0es&HV}>_fZ!T% zf#H7mm_hAO@Njj}9Pe6@E~Og9u!@u@_!0+ux0s+-$D}}Zq>FY|_Ygt0N1Id`vAch8 zqfn*EKs6Zf+dLbu*T)8Y)t~sLTK4^B>3S(*L^u)!h)9E*@RucBWTMn8(XCxU4TqFL z#qZG5C8C$m>&5-U%@ZaSAcpFf=a^0)GNV1gNWmH&Gq(eO8k5zEE&-6R9-AtqO%#Wb z#meFp{-Q|FcYdiV<0vW8_3geN?>BLK_`U-fkT`nRkrkc*;`lLFH=2Mm_Nr}RAEy^> z#)vHtJ91kAVC_nFCLX6RtC;7eJ#cj>**HL+Cohp}pBX*U?g7{S$qioG68@6GrvRl* zJ8rkJ)?z1UenhQtJlcHz?z>%9FMTg!)gDm|y{-q~uo}JyP$lqiItKR3EIY8j@tILt zw{@2xVpB&&akjUcOK@)xGciAFgrY~5rc6j zZ~*^B)Yjs)>l#x=NnHkPsH*mNRff~Uxh83?%hUrj`HSYih{=hH>`sI-s24&2rsGpe zi~C^a;oEa$8gb-;g*UQ@+f3Pdb<-NgPyt`rU*?FtX&?o{;Xxec)AMCpUPRSA+Fv+P z>MlF`D9IXaHebeGBdy91p+8_oh?+z?|1=}oaHOcAy*f+dg(6q*hc6Qn5UKzBEB_FikF8Yh+nuc0M~D1dmO$5Wg@&zZNUq2d)<~a zF@YaVu&H<5{UfD(|G~|ixO}n8O{syU?WCsZ1L_LY;^5(rz^H$(Bzi01l$X>7OC~_Kp7%Z$Ab138$hTa*2+F*~ zM`C39kH;gfIq}2&G5cfOb4mlFTw&>1XY(SP32&0%^sS9lQPk_dr1bS0xeE)o%61&^ z)-kd0;N<6ox;OB0$X4IUc z7+YH^xd(uT(z2ossu}6vYVeM~FO|1(UXt_)BM;G;lvIlB&C~dlmL5-KaNE&rTB9q? z!urv;uh(QL$Msk&6^i>4Wcp~kWHs%P`E`SJ%tMy;F{s5hwK0)WsZ5<>Yrv7((0eH> zxmlE6R``P8z}5)AWQR4Qj#C<}Byr%7U9GiCBN0~G{|-pwd4viPX>H=$15!7ek^;M}pZs^HS3>GGr(F8p8Fd?iq7 zE9mW8oX~zoH^DNf$H`O`H};S0KN3&u<@y@xqyWD|6Q|ORpX-@lTw`o2KT6^FC8o|{ zl*T|3#CY*Gn9PurYMj&4-^C%_4tSAJ87Y-BxJrw_yHXD)&_Yr8)FcIuG6&_cMGhDN z0>owD>FU*pKvOvv10Vir7L`offnu!I&2Bgm1e7)(&74eSCpzlbC}GX=C)7X`4}&e) zh&3-RZlL8|yG~xRC8~?bY^P*s`1nYT&dwIpDiakL@53m~g<-@|9C!*Mu7oGJRoZFg zhjste2|Ri>t5-vN1Kg;K8f!bnBgbjd+2_YF0`&;zxhfJ0FT3L99WB5!Bcb zP)NZ{Fq8l{03CM2YoVp}kQbU_N+bq^vwWQr5{eJ34aQzOzzP%|a-o@N*0B-G1u%ie1DR1axZ~P9YuF>;T)Xbj1U^@Q zYC|KI-usu|Y?!xuMvIs9Q*vCUE?F?T`na9{~b(QdqwyC5QQfyC=47Fv|F;t zw*(BOqz97Mz-+gh1at~iyp zm^u>wxS?~SNag;rE#7^03D$j|@|%KRo6CeMt6ro;Fsz`2m`;Q50~#toMC$1H3{eYb6Ez+Y@P`i z!c~?eMSlOX%kD8e{eUATE9X~zwkk?rAmh`hMW3R4tQ48zHGZK!kx*v51vFbbZ`W+R zjP{4{C-8V~{(6p|-)zy5yU9pXOTHhNdqEyL`(@sE`;&33j3nN+2Waf~cEK5DOv;YD zwNg|-4xh6Fw-fr0E14XwrS7hh-t9(_=1M2PfJ|6#4b1qkFo=__VV&fR<3_w%GM>{IO5xUNs&>jX6{R+&8?+c@_xVh(#h-Zl0ywWxA*d(cSo7f zn}%yIpgOcUc;=^aQNu&6_Vv!8kK|a(504NR)2FtY&J2%$h`&smy27oWQPV`zpT-|N zE!7tCJ>4xy6z$T;Ynct({Coq`n*v5X8NyQA0a`G{if9z91KTI?!HW=WEMR6s25WE$bYx$UWUXm4?nn2Fn|Zt>O0()u@$ zc9|u{GbOt>zxq0l>B2VvGq*n5w<+zEw%ti?jy0X)O1x_3F&MTID!4}jvWaYBq;lri z#isAyyYQ{LA&8`vO7n3}YT{gQG)MAhiQO^9@1a-D*KjM3tjB`PKtk9di{%3=E0#hCK3y` zgO7dHN)0C6y!1lR#eMn7AaWBH3C=cd0Do4St7G&P6(1B%sw3gJtE->|KOb#Q$7|?Y z1ZV_iII67%IN=xq82Vf))AUL0lX=N@%%L?F0LvSD0Q)5#OOtv`%Wd^81oh$_=rcB! zKc0)JJG-)aI8$|6?1xTQ3{4mIn^Zf8MU7QJ)?xsd4TL+2q4ylG*ALAf(cl6ZQk>T zyc<>oP7*rv=aF6EyH#1Ex~Fb;H&%v*WI z?*Sa5Wg!#J+wvy^*50cf{P{!s6Nyy?j+mX`dkZK&#xLX~6`UFa-JVmpk$H|{LWnjK zfR4>ak$Vs4Ffn+pNb!iPmkJ-^)$sgKEH3%ru_s@*0+NQZ~{SkY6Kh7AH@uHVbBUqto@6>#I}l&-O1 zAh)@AG}~T~%6Py5ax;Tu{_%#o3@$E^Cal1RZ<8NqYhM+AQ?I!RM~VyKPv0_%5uUDQ z`_La+aOSmq1-if#FSX(201Us3d?Q0qxpj%rs)XhzO9-{1k#Eyi6}5(%?S}V-V3i6>k}*q0M$LMy{$&XK7zmn=O?in5pvph^rD#NW(8h`znSU<->=XS>eEBG{azuaqdlh1ub-rx%=LFe zTYy>E4&f}Y`2L_Cy5C2j%li0>tMDVG-LtQL=|02&LaeW&b=UcBH>pGc!`i);tE67E zA~A=eIN1@^on4mw9}9M^H$Prr)2Sw%0GH&=BsNY96)``-?Lhucht3C5v0&3N-S**b zy0WC&O^>YbuUI0q!|hhyRA<^`B*`(tgfHaBfJzX2xM1OQDJ_B3hZ!sv)wAY!X4PuW z;sx`~DX+Zn)gQAlBZZDtFUiwee}-?C9&{CL%?8H6{u_;0(ub8j#v-hS`+4gF=R7)|zXgo?$&`@PWGm2tMaMRE={s`pbdHK&dm9oen4+y^W< zBg>1P_HrpSU^(GzUTLENp_e{oDcoQ%bz|afeSQj91EfTTp^Hb3?MVn+#BIt6<9llV z&`wu|$Gql<%YoqUV>L6xg+0!@48)c7LM1oAO(^39pz6|tO`-ep>ly}SVge8;o{D3q z&7A%IhMV~8a7T&8)eUiPmjNP-6UF8e-GnwPb`1|#GX;I0Jn||)I}27uPF=8`1A#jh zkK#7C)g%d>hF*W`qGS~|{$VDJ`tkNLT(3k@N{cHa3JVqzY-tNv zfg@_mb{ij}*f~s4g(Kl5wO`+(M+Q2EGoDo%CQn|vvryjC59)Q=1}s6Ni(gW?c#G*C zeC`&EDre48-H`no?rum10*3jd63NjX`7s=67K|HSu4aZSb4L@ruQzHP68;u_|L!S>0!Ho#+^7S_9F@skQS1inKaa zg8g)|^V9fIkT;8J8Hg^}ffE*dcN6Wtl{&Z6o4%DgVZ;YYa$9O|(q8){*L_}gAAvjw z%m@xJlfsyp#>JXW~Un!Nd3L zL1R@^<5EBrj%aDY&ewvotW2vPP(8mxm*C*GrdehsoadF)&}SlYFXC&4_RWq^dN*zQ zfdA3gDwjd~jty2g>Q(Mv4G$)eSH#{Xb?G@`Z%raLw#>=nYRqtv+X2Jbdon3sITLqO z6nZL#M*8qjTK*L;wq0Ep(8dRK7{3C8y(L%T>wN|_DQQ4V^D`X4wfT(G%B;C-7+roJ zstQKQ_@?7q_^zza{Z5p1PPB%R@2JfrdfV+f>0w zDr}}%-XH{Ges4jd%+_G3mZ zd;;6!jkT8&T~u9)+KsozCU4fR{`F>g;r(sDU!`vsKV^Npsg_?6d%`xs&@QVjCPXUv z3QbIU8Mzt$<8rx=+ub1}zESSO0(jmMobj#zG!0yPbiN?_%a<-iWA9hF!`tBB_5S=V zH9)m#v^+88|22y17aJXw<=H0PMd~+kMr4UtFi(ToRZ&Kam?Y$l*RRSD40#P$H(XT%U0OoHKyc*6`Gs*|OHk z#NB6L(~!ZY-TUC2vTR+Y$Bfwhw&+l%_>DE@Qt@HfPLQ1P_1=%}@vqL&#et}+X3AH- z!^>ok_+jtDK$g)B-+~ZSE_wdw2AuLWwg3sOb|~ZXLxZ_jgrv3*aMaHDywBU8jf5!% z&wJn9`Ke1evz6~FXV|hjGnHxneVxujvC{Jl2NyV^@zY;sO3%_HtFW%`tBC--2RL+T zum^@1LkYQ+7Vu+^w=OC;nuoo9Zof;ftD!U;=t*|T{_?D=^J8dk5e5DX5U%a6ZF|=M z)39&k=LvZ+aCnCH26`w<7RKz>N7Jk)Mud{Sf%{An`yv*qJW>hG&{J!TH$lsu#vk~p zjGe93<7tYm{?(Z*t9=@`)L*GjKaltzAt_v#%(h$lRoDH#m=x$t+p+)8xK~4F*8o>h7RGd<6J1A_#8i#7BLvh0Ci0N`(ARP zSzf}YY&~tsBjgSok0NC$EzuErrs}Ob09qo1mbdQT6EqIF?h zBY}+pqo#o2;FLGOgs*Mw>n3E+$#9(Ymt?h_FQ{<1(~Pbvuup%S&OZXOKaoBY;^1#x z56h|oFpF+p*c8m7JF0c%Ts1A~3;0TUejT56Z_&UWYCRI%tDVj!`v_%TUw=*ZdSC~S zlrHW&>lYo~UZ0O1S`X5+Rl9^oR`fiXazBn*VD6VKGoD0hpe@GMBmUvT&sR0>wbd-N zKw~dPt{TIWFI9<>VlQbAu&&jy>nB&E)7Hu;aae%UhlkJC^kIezO&!1Peu>efo$ycm zP1km3+->7Qg9d#wX~Li_ z=HASOZVx*wv1S(7?*LYL|Jk$r_9x{gS)#;2Jq8zhfPXN^r*Dss)&!Uw{j1Yu3hdmN zkeIyy<{Ekdli3II?jUJ@^EmfF31LOrA_^c)!mb?^Q;HVQ(AxvRu(B6R_VLUbYV*5@ zAkjEu3j=J1#9C0w%8G_Uce`m^tFHd9+_FVJ__EmnABoOL=;C>U(_2HBccj|BtlBaM z%is&KZ69}c3X=p8o7X+LJEQp7mW9~pgnWvQpT_y5r459IQWAkIGDtjE-<5nU$UOXc z%gdo*3#L{Ks&RJEarUOd~L%MPj*#!gqp+qE-G?8VPl zsrLe=J6G}j)2JQP;J#`nZ3fQiEV8m~+OE82J@gv3iboWwwUtTx)axN*W%NN1gWDu$ z&Eu{UPSSUB!P+U8M0KQZL<4I*WyEY`L7C_d%doE5KF>`q1UYb`|J7Lur~tp-SoeBf z$t9Fo+(B7cn8p>K9@JR+G~~n`L%AypE;H3p|8Oa`&F-W5f0%4Q_@xoh$jeZdblmrE z5@$)&F&p}de&D!o$dn`q#Nv`rVoAmu2pHCy*~!2Nou16MN+>0TCl$w z<{rhgo+hckj+7h;y|1i-ir)#+EZ0NV(jatC{w)y+xIWAY zWCQ`4=ASMS>X!u+W<(LFT!f|+cq4X$`M+Jm8M-erYQ40yhgWUIg_PbDcaCsee&J-U zDf)%y`o!l$qCAm^uJQ&s8oi=YJP`?(o)1H!t0Zn*Iqv#tmW;hSKrpB@AtGQY44SSy zUca+4esn689~R-cQypj&j$Q{~o)JA4o+)m)5U$vAW-xUiousDATr#G(KtNRFlqRE@9?WF26LTCe6}}TmYAp z$=nrr#x)l_Ez@F-IWB0*D5bgLk{jd(Et*@nq-cslnYf@xf`|y5d2gThpXw8chjZ@x zdtcw>x-Kq?VYLvkd51(Z)G!kCxO#$vx*qk_+jd~WmUBQ$eki1+L>4=VJKLJJ^~MS@ zoM^rfVcrd;B5zZhKQumUd`Le&oU@j`&>wIwz`K%ZeI6fY{pTEqW~my>_~%(4&f=&5 z0$DVtgn(ySz(@~IWFAsJ==+l}B`ADy0}2anPb))mg@euiB6kLh;vSwhX6t zJiwj!V}a5-IR1KaEXERa5l8oaHhJj62}2W3Yl*zTHss02q8GgDX)Ev%hyi94 z_OHgbUrgDvASU)aaKFfSeQfo^V$NC&<{mi6ifJkpechii2~N_l7%h=YA0|0g$=Q!= z@{0UVNKr?5(4by#l2q%4qf*_jj(D4I$1&%RiOtvZ`c;IUI1G*Z;d8(FVd2wXmS3a4ay8V1Fh|~J_J;Lo$5pl zkJPy$TodM5E0&FnVoB>4zD@BDfnd|G4y$VT+w7ZbI@YC*rQ`gt7x{f+$*omor9 zt>=xWecY(4S>Qfxaj1#>d@t{_@;;6{>lWWmYa;16QR{sdOXuk)i&`tef%{rkuHiDW zvVW0(!JURw@O0T1!_kMMqvao3ysWw*Hi{O+1kW<5Rw~+6rF7}`}s2_qrLfG`(%E{{Pr9_O0NNX*;x5o`XR2h&M@v9NK9*AoZ(G3bT@ z9Km$eFBYvJ=O+qE=z*Zs)lxo%Co{xALHm2lDpvg&tWlfLi^YQ>UU}>Ja^r?e--Na; zG4IsN;x6V`oOn1_Q{!nw>~-JEfj5)q=S^L&dC6ORrdFW_@X-8Sr^~8cld3AA`jC|_ z*KW3H0;NgwH6MDl>SjM>SX}NDmUr3l=7-;M4i1)}KFMVxyWSh|E#(?VPF9S+W{R5W zeIoBeGvo@6X?fr=P0uqeY(01vJ2}quMbEOMB{!t5x?@cCGfFh-cez+s+mBn#lW=j$ zKO0%sTAQb!{)ChJpDEwSQHJT3uDCH`vDadf8*0^y z$g>*l_4$RI)K(5i%%uQ1cFySv_X51vg5uQ`f+_A)0DHG~Py;_wjDL{sF##t9w-m{H zx=qAGmFOXXmUe6r@e~ocX1Hl?#Z`mCxOE8S0CHh~g!F(<{BOu*H>nuiWlK;DXYIhs;DpjamiB zKzjiOZ&-Ek=TEncjB~&!Iq;#sq*`zL{zNcs{(!0-$5hS2s&hwbB3J$G(12r_?D7`= z>oGG43kr5pmqWZ|i3u-S^#S?SKsN6Uz{s7Hatqb6Js5Zll=q_)=b@O&oeW5U2D%>T zGXfA5R}GKkNoGG%TNKhooH|bCjJ<`MXjCaWG{YW!3rYZ7An2KM>v)Xa-rZ|G)}!`h zP=fpg%6K`cJq!L-RUOLEzffmwMMPi9&Ywl!CJ?owT_k0avMrbNsoNvn=glr>UiEm9 zi7pGMbjzzcGQ5fYJ@2(AO%sa@lhy{TY@(&P#_{yW%hG76(x1KUssCkpSP3TUMNf;) z9Zf^oPG0EQzMqjNxhnMuEHkW$Gz)BFS&9h-^#OTL>qO&i74G4&z3y)(%7Tx+^$|LCA)OzC^BqO+zjCSUi^9GcQwwt zyJ(V==r~%lm8*7ugHE`JRPpcx!Qx0GPQVZJccj< zHahK~DtmHad|QR?NV82!~i)mUX1onlQ{mT33OsII3EsC&>wKtmEX0A8eD)~%)XKs1VL%#Bx# z=YHdOAe7oGfta3M0#NLn!ndLW15H?#OyySE;u&B4||$Okys4*)|3i>{44IOlI_v^Ppb4(X_I~_ao(9Dtd5ypFhxAnLw>VX-jS``+_JUt3}n)8dI@@YI;h3 zNuy(153f^+T;s>tKXteF%Lx$zXUtv9_~N|1c8|~;kXrS7&%=Eym9k4Nys+JNpx=BJ zSR@rYmDe5h$EPwQ4uht|tCfgba!Q|k#PAukiUjRFrVPnw^wp9S0tC8X+05Xj4>CXL z@G2x;$h?e7$F|XUQA!}#@3)}%it{^ zP9)Q*iRK;?haIrt^J=wb!QkM6L7!KCflHltD--JBF{6X7agSMj@^{OLC7JXnjI^(+ z(@c@g90gC*tJGNo3E{#AU|Ma5FMiaI&Qa+QdJ!fQu)1nTD|c3QRMWIJuDWGxw+BF} z(3jGdI^6~*Z8>%(7N=M$v@5u`oc8H{?y@CIYJIAQHW~v9KHKm+6=3qBW3-d;%h%Os zpHp4FpoWFT^=))0&!DDCx$BF3g)>|~42CTinA37)4Jef6lLnO7HSF_5x4{f_^aIyq zXpoQzzRNA7EW7QDzIhZf7W?_k`zxB`iovzCdk6ztGCyQ;8GA1pxi$3Ud|p+(mv;wf zV*vO?G}3}S64}!KQjp9ov-}@We-$yj)Z3aq!{D15RShJ1*3|8s0jV1SKHfB{5?cpc zPQ5O%WkfkC_m*}p?^g_3<6#Jxp@9Zz?X|S~N;g_J|B6C*aEZCx;eE&QeKJBA1$}Y& zk`?#Eliq*A`^ihgrvb%hx}2FZQ)0d4@W<{e_FQtXNQOXsw@of+DMFVjS}F|Wf>$8w zKx@Iwjus%zJCxvtL|i?4{*>+#X3T3O$-uX)9^f(IsLe|M7ey80v2&!(xwS2wf1eM@ z4(rKaPLg9*AlX83E3JMsvxj8!8n9iWjK$W8{Uw5`K$9-s*KIZDzt*I|?~^r6^0k(K z1Kejlo$b*6`AcEr)=ZKmZ50pD^lMjL)jM3i;XvZ0k`R}+yk5QOD@;K+ybd*aYS|og zG)u_0!Q|=V@{D;AHBSQcRQK}N<6LU`Wut+-vIY)i@n*r!>izy?qq`U1`%+v)f>h~$L#y>HBLuUj3rGaohdlNOi{!i z^}|18S~7Vxb|0!SGu;Oau-umUu7JiFvNib(wV7|Tx`G#ZWNQ+0byxx5_>D#gX~oum zGEMqYL3VxSw|Q~papvK+pY<-aPG5LbkYj9GT}KV8jJ+?h&6!CqFcB38c}!Gt_#pW! z(>if)>QdqT&sr>SXkOpfL}pcYF`GBqJ$PS#c=RRkb*+>^+~VM#8@d8-hyFh1OL&^$ zhErIL?5m)JwPnvUP`u*SOWvEEX03~RkM~bH{+FGcL|N9S`{QLHypS<3ha(rx&s?l( zbv)*x>Mb*eUQxAYyJ*-Cjk~&1Ovrl%q0N|%b%@~MH8EDFDpb!0qH*n@-bTMfsPw&5O(fGT6~;bTyf71hWKru=<{t*NON^cd6KF)du(;l z@4@t>drqdQWms(-Zp<^Gx&vS;Pie!&^gb}}jF0A@GrHCh&J7c(WbiC}+g)avsb59! zQd|M&)+4>k}3@Ny|u(9U$>jTA9ng0>slDypaOauof4X#Q7RL(^5T%(@=Q_D)vX1Esp`p5JRp&8R8wu?2CbEu zf-Mr!V!TjK{I)%eXTb81$&#;Y)+- z85ZD15&Ca^a=^%LE62vAQaK;E^uA~$@S6zcxV4p(f7K4tWk)5yjh-rQaH{12VM4Ig zlX4@)VeUD8Mq#m7qG^zCFX z6rF*Ps(-^=KZ9Eu)JTgMTuQR7&KoCWyd-K6(v8Y!c`dq!ord#@B~&x*O5Kr9o;(x} zy;~5X_9D%th;2*VepV}8Af)%ZJ#!eKIg!o={iZMqb#iz^S4in$08($(uQ~UUkbzB75uL36ah$s9IN9f%Dc~ zW^y$gD=D9kbPJFlAkShFJMx$zt3?V-0%$;yG9lT4ItE*KIgTVaeXCg}e$O)nu$+hX zJ=pEK)Q~@6E~8`Pleu?Y z&n;p9_bU2QjnfQY#9FzWQ?3(x?8Z-&)BYs{qZZv6F#3-c2>N0A^y;ZYt4z6;L zC0<6Kppu%!(7BXX%24K(%dTu#4Cj#>QJN3k63zhR^M@!8iLpJ3+%;*yFZGm@svpK7AkHxRoI%o-9XU394WIIqN0s0zh;CQk*0HC?c}9tKawbHWsF*h`Hz67K z6e5%W2z1bA9n=OCKS{!Z4!gy8Kbi+WQGEJCTuxVLkj+4bvPPT;c=cEmB6PTbUDyN? zhueCf1}YrJ{!MK*-EFrM4A}wEGs|1Y-{kz-3&!vpbQ1@4H>!cCyx?%}SrU0#zIqr0 zu89hX(_VO$qcv`WOV>&giP(R(qRf=iyMYt<6xjy7>dw>e3OLE!z?DA_|$*!+FY`R zd^aQ4C`qb~=8~xcO4Mg#-Kl-R?xchgR+po)8z-&-ilyMqjlg@9V+_q4&HIlJBe_WA zd>ZW1!h3|=VFumLD+2VjK8jJ&lw4~Xg7v8Ph>g;fiZ=~$PZKAe879=7(x(M^vF@(H zVkoJ>R7bO(>RHx1OC zhIwXjNu;X&V()NV25t)VDMS=i6~4>YxQB;a)*U%n+C$hMc|cuKI$0rVIyh7A1Kh`` zn&%!0m2RDi6@q-eS^W_i&3a59cI@_NM#Zhq#y&Kb&OTB;Tm7^~9IcVTTT= z=j*8OZSmpBQwewn6NElCR0UA+AcdZOmB5+R5&5RH~Q;|uAt@_LFbh?6`}$qwj2w(Y8lN18C*8C z4kXG9#MIV%_n(j8`Hm6*eqOu!coC9khd45-tPtMOJ=Rvfw787N$Vb=a_*>H00ZoqO z;o-l3Op`eq?Z96zd3mv_63~hnQtB7vUdQWaFvc1zB^1-7z=wMjr>OS3!douq>Rjis z_SoR-zzWDV!okODEgCF#hg5+=%MusUzhp2$jWwk8EoiM@riv3O?^rS*20dOLSBVOn z-})?|JP6#Htfr>rbXY%bMMb_pT4bbR4bl$2I4`Ca0%s$6g%f2*o<_a~8M zR0X&qagWItXzdX2yyU;}pm#lH22oTb_?t>&-&uvjB!|$Sfbe=nSy^HxH3zr9EAP9; zHS2qaRtRSnK?3x(ouV-F$9**Z0=2VqXE?IY#D^fXjE&p}Ue0m9%k?-jHQ=OC1Bl{K z<-wKuq2H6EclMt?oC6Z3U{KV{s(z9Yun=qh-w81GVU%E7oqhx<0ntZdlCoQ~<3L`A zY+o!uoJ8zUPF@yfv^+F$AAnG@*A}Xi1O`cBkqS){Mr^z(^Cn$}NwA9$Io8TpjSZK|GB(0u>ZL-6|@vJ`JnPZ|T7N(+I?F(2VojhcGC$ zHh;R6Ag5#E4f=S}k*XG@)O7=2fw?Y#tW$-}xw|fdYgWVND(78Qf?vpqWmK6VdHN=8 z*c>`GPge|YYD=tKmu4bVBMt(($dgrXC*dg+Ne=$gAGp`_DPf#LaGXD&vRyjo4?Z$k zI>VFSAE$%c>g1)MERA%$@BQA3CW?{o)m-Bi-v4psW9viOb7yqQE&!dwazv^wO+`7- zTh1QWscl~n14mSGFFYzk0!!GTXiwXc!c%ST`!ml=T(u9Sd2bsd3JhL&sEX-Dq7pYS3H3+!1|tFq$z|o(ga=syN-r_ zGF5dj6;zD#!ua9Da&NnT%#xpS5|h30`HfNSe_ssob7;-%1+-u9OjvKz~2Ed8UdoS327{L0;L@0ofkDCEE#x7CI4C zEo`G4IbvsWauRr;*ROTgF8HbzG$gatkwK(MSrs}y20VAyNej0Fdu2mMmw<1~rg;ov zkHd>(x3hZg;7+59Mpyb(t{6YFXW;NE1gf^S2L{^Qx!tmm)SCEKQr4}`5u2Dv!0&H(=9FCy3(@TB zs^Kb_?`^O80JU6$f)=`%LVlDHg^7?~9x71{9`6_ZtG4Z{ zt8u2Re9sGW7H23)l$}B*=o`rMbeb31ya!iDze#m$;pdw7G3Uf8)iRN{rlXkm?3ciT zIA5OljE^G`P@Iv0-vhz^T>k>F+-#;fVl>CXBlqWm?--&Uh3hm34YSq3`+_c$HM{a@ ziA)ogEI)+Q+moTJMYSaX#pGm2vE!F$iSMJEg}KNF@x{)qmz%yU>K}f-QLZ;k%SqM961ikLba~Zb+%w$Fa+=)Jg*AH88^*2R(5r6 zDgGK;%=riSuvf5g&eAdFyOxUfKKkF@J-xF@pZ8`ED6z63(O?|D4jWX8%cY$X;>c@E zrW-WiOh1Plcg`OQ?3NvPn3uQR;-fHe#D8-h14%7Er~67qIUD4op%P=Hn(z1Sn(U zN}Vs;m3kHUP}VwTGK15+NaXQQ1#L0nLt0Z>_kB)db~!q<0&NDMS%-NNcKJm;Jby2K zce||;grKA+b2Z}8a^;ORgR(@6)`TY(K0z+@rD}69{tn743%%x0JcE(%K9Y6@^`zXv zt+@9viJv#2Y+*p38YOjL|i=n31#d?tB+JFyCANl0N6U${m@y(5{0BPD#5wgb5ln zKL-M7<3Bk})uRMuR{v)?rfl1D*7q%dB}8x!eV zX5=Fva|j352=nbNjzar|mrfm_?h(A`1rXKRoj9b=M_0$5TfU!LH3n+ae&7%7C5|~} zIQZDFM^;&@WM~TY#gpNCPTx=NSu6TXlIFPY#U+?@d;OQ!5hwEihd@OAA+}kkHxFo@ zhWz!g=GfBp+ao6FLkg+S%uE!)BBYHW`lML!z979xHy4>VseH$t-NBGz^m(Mu07oob zJtOI8cC~5x<2XAC6h+s{vk&^XB^Q>}EQR}wMtQaJnwV<{BfP`gE^)S^rL0x>*oEv)6G{K9wO9e7kU*tirU$+nqtVn#@3E$0wKF=SxAG`J(?X%Ssj3YKFz*2bS-=?;j=&gJ|W&{ z9X;rgc4A2{xsta81?E!)fN@+VcA-v|f$zZj=Up7=Qg(G(Z zYymYV>aMM0e6C81<)%!wQv2H##|a$0a&}!kS7^9y8=k$4`As*FndK|PCu>fQXD9; z2YZ!xwEL{4^=~2+x260sIKRJJvEHtX3VXW!hJq>lFl3?3>Wu&HFj-WE{$Eoz1Qbmo zDr_cGVX2z6cBLNn-cix1tD7RQ{mEtZ7aYsz#^5(3>>K7ui2Wi=bvKZU0)PyqV5^3N zPj~Gk_v>@@lP!8px;3EqM$-kI#kpLM)_FdD$Wb*@soLon>ZkDT@BgDdq*N)!!H5R$ z@c_pl<_H~Z_Lw`J;LE%hwZPVg6+9tRh7jPutdmMmG54Z9-DJHOyb2~w%Am)$EWg7| zmljpsc$?H+8zQigD%igVKkos%4#fkvu+I;$Vjj4tmd4fCa^$00Jaa0x!uku;NvdAC ztD?geMea-mic~sAU$^VzLUO*=a@#2v^5VXjb^o;WF(`Up|7V6D5xfYwH^_r5m-`>mfI@<$d;RhIPJZ19f_pAi?oEBcG?K<4=XquniQ~Z%WBtA}|HZC6rpoP7 zIUF5se>6NFohXPMM;rd&B6iIm^$%20$4ev?ce8SmdXi_xuC}t#GhC@g`X3KPdBF>1 zgRm{Q7S=P0lkF0wet1<&L z|67*sK2=2{dX2OB8Wu9axYJoJZvm-yKmtbGjy?Q@J<7;OQ2k`~8r@ zl_MO(V$pl*+gFIwe7|B^V);pB1&SZ^)ES18SPV1>V&4%JLw#_+gwg$d4_>vin7>_m86 z5-O9R+{*ZSIfU@&3qdJ{RGS&l#{m%zp?*~BM&bffwf;3!8Cc`^+3;=THv{4LuH{pu z8-{tF2f_xg!Jm_6`<0F!G8;E5z3gb75mB~bRryN5;h1t=J$lM(wbqy|@c8IAkIS+x zlyI1~eK$RPJ*N+w5_!xgLM6&g0!Q^LBbzY1{_kd-9>1TLBz8;K4_*6WNjZK% z2#6(s95k7wknAWu8~Qy;T#Su{ zXS>1F+P7{GrgI{7<8TWx&}hY93GY*bFH_?1QZTuHW0l7olhscasHR*FA^z{fh4AA!xL%~&t7Hm=v!Ne(le0^ ztJK`@2joq{=!<#kWc~!14FWc=LYBPuUVGiEo;lF!#C`Guh$xL;Vl$i&lQL_U(<64y z2@ruB^J>04au2fEYj4y|TB5>YkpLgQrRTUh(vxB12Arh}m8 zyX>)*cLZ)n%Tf`s(_xmo@BSB7im0Z$KEj|6koeA<{d0iywjur4$h?HMs-OZ6aw1!M z@zwej!Xjv*2dnR?wTtt&T=aup&f|Vb3|=!v-a1aXIy4pBaMX(rt6HEx7KYF0eCeg^ z5ajGUc6mLades*6y_4EVI+vI4KLjc^vDw)4Fh2-X1(OO6w0^CF=gsEqcWX)-xlg2v zyo2zT{!gcI*bjTFqb?9~Z4|G;T;b?rtI>}GH9Kl&ZcCz%I{ek-=hoyj2W0rVq`9?~ zu&AE^4B$uJvg4=~Cr>-!w{7nW`&{uS;#`REg`~8PRtQLQ3SO)jIRaN`8rm&LfOXaevI0l{#-9W3gN5_H&@Lcp>9RN(*&i){G zhC^z1)**Y*@lfp*UOl|!Tzb_mg@G)I@TKPJS5&)U>%#_>Q)?E8%2?>N&;MnDuj5U3-Gx6Aj|N$C51&;CUQFCRON@O*k4N7B^XZYBY20MrTf*TiFW>(7W|w zf{E7B&uROBxbbQ-94ptOLyU$C=X7Iq@?*nGuC?IhNqlS5F=4(QjnKepfhu6r3eT#k z5*8H*Npyi;7JmQ!0%+=B|B9+^tfSVVaKt}$gu#D3&vm`AUG#m#JBiok!jk;vkok7Ozi>C^Ag*i$Ba+R z>U`mrY_`iN!V; z51mXOzm}L$>>oPNkB1VzZD=v(rwBEQHGU4rO5HVltfxh|7+Zlg1<@+(YioVAsL`W$ zhOXeqFhbTBuMqRR3Yy{)G{{js>S5kDHu6a@LpwTtWDsNvCFvR`X6o;{#1Twc=c*Wk zk~%w;;PqJ9wGN|@?`b2e09q>cIT%~#~*DFw112z%1TQC7)i=i=am+#SuMHo zIWft!zSAg_St{<{Cg;QPZ>XKLMuE%E4xte7dbL zyvW~LI~6oW>1Q`5rd$D^m^Xhp_T%tA2k`nc&FPXNaO1DU%E7=}mZhtOl4thA#;lvV zq)O+tvyHI3j=}`Y2sI&zVgVotj|yI$tf&TqBLnA-nIh#50jexnG$fnbl!LVCp=Fw{ zfJ24)hiosD7VUUSZXz*Li^jwn;|UrT{WBFp)artllbs!Dj6M?>Y506Z zw|K;@;OA^ro>kCu+cZ_^NQKY2NDWJ&Jo}c3*R>+x1m+6R)ZiJR*g&y&Z^NKfbJh8_ zXm7`!NjN!F#^i*k)dWV2>@+g;@O@%JZg&zoX`RlI@EA3tJgj@QmVc=$#j(aoX5kP36wbZDEhVHPfQSQ;w zoX4qOgXe8Rgq8Yo8|h8>Zq4!GarVgDDPlTNFn;m}*MSequ50C#@k=VfXXNK2@WSwb zpz0J`ag}dnB1FXdoZ6Ut%I+I73-eH|pT3*Lxd%H9%bLbK(vr$$o)tu90$Z}}Xr;_b z;8tPYHH4m)+jyS-)9Znvv9?5+>XF^;`Cmp4<9GAjf;ZunYd*z1`x9r1nU*gSubZ>> z1IAY+Zv6n}F3X*P$n|->m-*P8xnh|NJlp3?M}f#DeS-I<@o6T;tY8k02i;&qkCXFz z+|lA$H&-XL%?Bp8q?P^C=N?UK=UhbKhF!r=9pb;4JnF9{(s8Lzwn0-@}}u{LhelaC~Q>VH@;JAg4A3xL?4 zaX7x`>02KaU?0U-o|laH7m&~N%RHOCtkm^vLS8<(X#5P8g5vPu!ANKiz^ln|mBzSV zBeG}6s*3kbO%<*oK$SW5)S_qdMTYA+odnDsy}MojniJ zRXqX4=3U57Mxf6Thr`=d+H{b-rd1!n{1T`rre7EbsJaHn~rD2Bb$8ht(W+}X5i2ZqmO{mkFvJGdDR_=|bH{O0@e#yG7e!`%S z0fLcgGiADRMBG!0aBPwtHYyrAW^&+-^k-awiNzAKzpg-nDwz!bS1l*bE54|D{Z5Z0 zyosI{jlTbd9}}CLk$>G(OYw6Pp}Ajdg`UrFYmVDXI!qcfM=p;f4#fvv2Fj5;|KlnfR{1&-0M zV2z2R#bFQyt_0Oc|CB;{=4n`*O%!wfWW$NXL1;^<>_h#`h5Mh!{0T-es~>^0YV)Im zohY+FQo02I0d6gtczofxla>3pt|ik%3IfS;{`mwqz%gyY6hz(jhg}qqA7O767$t*e zWtEV$dWiRm_fu!_IR#fyHDq!>UWRrAmDIuFxk zAg*#Q&1BhFJ#t&#!p!0Y+!w+p0^COqOd1t;h})CtGTIWDe&hDkM!*qrT=TuXF@#Cx zG|&gEidalP;y|{b%koz(M`VAt2A18#x+J5s#oen*@)&}{Ovxpe&-;s0k|q~+_5wJJ z6%|{K2i0hMBzY9VU#P_KCi?>28JkR6(~uHXvV=p-aHBs02!d2@THxazGdCB1CABw? z+}+|-R8Po0B3Gut?^<}rcsy##d!@gj0@4`RB+)J9$}4brg$ln*5<-#itAVo7Gr+dIX}`w- z+A%ZljHO`DgMTXO^{(p|TRA2H3ZIf4Y_M;5Ng+F<>NnlvOJWb4>dL z#s)?!uYuqe8dElU;<&0s`4Jm$od^X^U95z0)-h0IbSz`bTFut9sJ~GWHKojMkel`* z?z&<-&G*IIl!@ns45Jd>Ooz>SkE0^TR=oP2G7)26+B|5Z#y`~W5m4rG7C;i@MuWnfoRuTI zy?JLG;Yl|j=Q6&uuzFKR#rzUKqOS+l8}}veIY>J~$2Fr?Ery~E{IWfKlPRp6#SIQ& zuO1a;x-Wd=T8r<UgNg8ResFp``JKfNtZ|Oe|%6B-`}*3fnj;dUdLh@qTFpYEt|Lbm#L|p<31W z?B@rIyRX?1zsY9(muJkOsTv0^C7WlBX0YN)9H%GSIpafwZUzHdy9;DM9iw$W+Nlc4Bp|G)8Z3+2j6UhZlx#26+7D&7xoLRgAQmB56O4XtUS|AaDUCeNzN z%hPtc%0TI;oWoNLs|}+Hik&z?JVxdDuo_uuG9XcW#|SJ5BNS8;`eYD z4FlEhdIq`3j%^|=RjETp$_lD@;2WgbIr>bFicdu)@uCZHviZjgz(mtht%8D7te_v< zi%|k@n0R1IfPAm{pfc*RKoNp7kTF3O%>;R;(kZN8tJjHvnzUsX*H4$tnE!Rzy=s3N z;t!0*TUAMwan@nC$ehJTI|;_EcY6aq^5ScX>P&h#M^|iyy@vr?RFmttQfE$P@+Bfd10+2*(LxyHs2O+^B+rad6*jYp{T0g#xxg4t&pG4?0MYRzu(s5XStQc z=U4hXv^gd77@n^AEU3UzsY79lL%u+RmjO9~rQ3RCzATZlXclxna_S>AV+1^@?CGT% zs(;d+8&@t)o+-KQEbt-+{o>RT12y5Sy>4c{`*qQu?SbTtVJIC805sj!t7Qs>dFh7k zthCuLVY~Lg>Ik6vg1NGhp{S3VGw#`~-=0BFttdv*!AcX55H}xmfPHtosb2Lb8ZcTA zHuV>o{<`y~Gi>d&;oC1)yS*=BOpkscpc zwnX{5V;NfWNIEtC*XXZtxVMZl-WsLDv%Q62wkx@D$TyL)zRR{YsyB7J4(k8z%oxSs znx^%KpBd+<^5jEK>_q$P*9qTvPXEnmFW+;uu%?S_(Im!AGWJ(ojuXt5}1{-ShlkdAojrj}^G z2^`UM!i({b8a}tyKM(=Iw5<&L2ezZy-b~JD0+Kn~7|bA*zYY0|t2>+tj{}~9mi=h( z1NL*GTi)a&M@h#)Ae)q`D%}Mp&5Jl!m%?|T`qtOMCX3EYHb8x^sIQo{{QAJ4 zMyn^z%=s#vF>Lne4@?d=h)g3~@=2@ypnm<-+_n*+4qv=M#wmc=us?_m)K^KJ#FGZf zE7dR&%;m5v3_dif*Y+M>z?#&o|B*)@;4F-OF^I@v0G`2REqDp{v*^mCN{l>n{>)PubrAygW#nU*09%ek);OeI> zjQPFI;PlECdVu)a1m!4xlLb!vtLDT0<6V35^|a^kSl}sTPXqJ}KuN^t`&C}kOL^nY zwt2~-#Iq7OSeayvw{1)s6^O9Xk7p0j4S{`q~e}4H4+$IGG7-sydV6MRjCHDs)$-IB6)Sw;r zpKG*_Hr-74TdcIg7R0#Gz+x}GYMvP*x6jkB}9!xF0 zoNs*Ez>|Rk8E(30{byQa{ov0uf;lD-46yZ|fu{Bj5u_etUOkWcc9ny+bo`f@wV|p1 z!+ZNW+RCA3(KSr%mt9z&`j!+>E4q~ZIsMGEH+gpwp7c-ciSGu|W8dKR8Z<34*8`XE zdbp#SYkL>wQZ?N@o?gJnjlMwj#8eu*EUN~s$Q#k|xVO+lmpKbc0NbOW7u26c!s?(Y z->9B+X?R}xWezDx<=#q`%~9z~qd6ZFJ-_lP-8Rn<`rx4+L4ikhwlswKQ>#g!hT}I9 zF7oSJ!WL+eJtX|xyZobKyJq5*+%VJB-)3-9$1S5Qb4`?ac4o((>c6VsFIfDt)|9cV zUH{S6dYCnII0wKFQ5?jpjlui%_jwE=Fm6TWHB;b)272u z!PA$Twwdw3SIq$QCoq|!VzGPI=!8#R#v@T3Na0)n{I z(-)3#4vP(LJLiN|q?sr;SG~{XOz!nOq$nI~Q2|nDf9>nI5JjPa!ox9}DFGW6GQdnh zvEX+2(Y5~T(W^N$!ck{$3JZ8m4v(4-STi|i$|!y z1V5Gk9HbR6o8oKBIS5jns-2-$K|V*vjhA%^A2USqgQ`c5X1gwV<4u6Ks@2AmxKnuY zr$>^@JpXKdE8ylFqS-NfP|d*0n8+``F5eH!NG&~X_f0YtD=TqB5KHT856`?mb4}3k z{=}I}8p;fiI1{)`F1+pO;osnpFiKRKGK}mRk5{am$K!v`kke0|-@|PF2$=I0iStgh zTxTw1ZZKB6dSnTxwPBkswoY=1bQ0aK*2+f3e0|mVx_-7+9L56|A;NORHazC#*z7SM z90KSxd2ixnE-4Z1@j27L>SN$5D>N>!{(7t!jOWq%XuEUPO*WKiS zJcQh7rk6R3Yx45>arp=8XRqg>0g@`-Y*0SEs0iAourk^!1BSV^y3O*-6rzR61Xb&J zrbGHMDj%xCiWzpW>Svp~L(xX~@NQ)ZH&uKRuSmn00%Pp$sx0vWSBDk|8r@!zLCL`R z82l@Mwvs@md>=ZJ$?>^3N6}4^0oBS+Xkom1vMCUN=k$yuWVka&IL*p=2a?BiJ(fm@ zYpT1rODQW0o$G&$+cduKYr-AMEzqwXbj+VlW2YB*D6S~>{_m{0fy(Jq|yM@2OzqCT~@L`}R zU<>ls%L(6s-b@|k-p0Q&&iiU*SqW?fa*P#EUE#*vn&W0>M5ez2UtA?K|Kt2;4Jg2>U zZpklZvJF5`n*qS?h7^LDwz`d%(sul-wg>&2VO*7qsv0FiKd0fEdtHgS&NhPKODY@dhn+B1N@6`=P&^+Y(!7-o2y)d(mb4nv<*ja|`e2jr{@1nDbe<*Vks~ zH|q(H^!$>wd>0i82rPFl)Z%pk8I=6f7cMF;YT09=JthQvr zza7AFA(07aS^0ds?BZUs-1qF5j^LjnAdJx{(lX~>cIj6MPiVM-@ll3b&8D@?&77O> z*1w(CxWHVS8t!sldyIKxSm|`S(L`A&tP_XY+j5Ct0JI5e3o=W zRCjet<}8dzSOPR3J6P%tY8O|xI3JAVmO6vZ9RNn(K8_lb1v8P$E^+;iZM1WF zN>7ZG$Oz;DLd_Zj4LW{Gp0%3hZ(WRXmEc91V!XzP!82J4X+L#b)F!#QMXD~{4Yh_k zt{GW?W7t_s@vb3r33Jl&_mc%#JqV|5ZMLFWBuTklR+fiPhIwC$zbm-x1&KZh{?pm}KF}=fPOQQsNT^j_E=B^+7;7V+!-)*WBpC zk(B6xxU z^`-S|wr%b1>aB_EPPPZ`0oyJAMN|#b*w4J1aKo(3fsvV!4Gu}@Jv_Q< z(Q0@KE$dO13FrqdpR+30_WjVd2O~}0pzv2k@#=N#?Ox|sYeF)@%F@8og(Rp$5_O~F|rM){d>0r#MxoGg#WnvWi3 zo-}N4l@zK$c$}rX>KDglFBHnH#h7y3%WRM1-`|D?(jX}oK3n;m#f$M{PbePmh#?=P zlnZC&q&LA)bFuEK6^j8PSDB8DEWaGIQ=d`Bo}w6?0yu&R~@Re8jA)f9M!6 zETiDdSc>zU^cI{^D0ZWULdw>UANDw&n&-MKZ$twPA4uRQnS9V($6fP=ARNfW*`~QA zIE+&mzNZE>f&j`rWPSRkP!^(^e#OCm4Dv=usS+df#RA|k3_-`NvKf8-6H&rZ55u*E za_Y2od!@bsPcA2NVS&j<$n9Q^R;@jPslt7-@Hnmugn6YX%xBAT0<8QTz5ltQi3t$Q zb08GMue%yx(ZF(uOH(o(IXxT!J!E(wE$4D_I`BhBlq``SFxb3j(O8C5)sNXAnp&t+ zk5OEPO4%ywwUnN@CO zf|CfS9ETF12J}#KoU;7u{(w)rDA<&oy~HYbDMoQHn$#BZR&j`>TIRAbKz}@&C8#Lc zdURm^PcnV2k{z;MM^B(gcz82zn@pl`#z{bRFyb$&GQEPvo_1I7dIyJkEjm}OwB!n0TRP%=j+2bO)+h~-!MGx6htWhe?w06$llY2q^??e+x0G@vlpuN& z$6pR6$KJ^ap_+vcu}K4}YfOD2F%a~4Fz zcp8G#cc8DM2xYbRaGtsQDh=!!Td*>8<|KhcOLHGd@+HJm7XKk zGeOPjNBYb;a}(2nLC%0`g2Str%Nsb@Uh-BaHfSx_gzZBJG_&3)1!dI2fGi7f-JnqM zq2mH6&CJ9y+GnOSmmfse1DgQh%)75o`*>Lc&i|igA#mxBA4myw74P0>?*wWLz+L85 zsJZvBXrd-x^x~F4u~Dgj78Qw#KO1F5`8?;?QUPh9rUA1GLCSmOM`PMO03?|&OyPb| zk5BbgVa=!ftOhwEFR6?2(d9cP<*KT^PX*u|l;b{)URIXgna`E8aa5X*jY4lw8aaiU zDTnK~)d|{K`1uU3063>V*@6Qjr+t-=;uRG11uL#}A`t8Iz!W2~N$kd2%|<#-dLRJt z@?g^A`4tXij&zaWLBjLn#-nRz1SZ5%k!@2`53~>j$}hCJA>&xpD*7OP16*us^QoEi zU!;RgCfH2iog|~RA5bP&rA#v#=uA_4J3VnfdiToAQ@7Yy5)U`?+5Gsbf*J|Hf(%<5 z9>n)kCJ5}U!Tquss3_sk+;VVmjI`JhP?i~uk17*G-Oz&=LrL|pyW-y-IY|!e9>r8` zC8Q3FR>>AE0eDr-^H}{{$#s&wQ2@DhnqR^p~y*ehJz#K zqkXJ!rKpOUep5JRWd^`R+})I4eNY$^{46k8^}1T+n`2aRuux)c*vrXq0dXOSJavQ}!&xoy%v*^_A1P`5cc>9?W33*~hCLgL^1!M?M5PC+N(Y$jYAeYG;4CLLeKSIDH$$X?=}^76 zp2XA?gd#TP1wbcXsCP4GtrdZMck=z03^}aouT}dflvQMtVl}BtUYx1YNOEdMo$xVj z?a7gM*jCTuIH77Ew9%9o5|W<--sz_+^*eSb4>o&`643iVqVX1|9w?HH5(_0}9G;S6 zBmivs%`Fam0-9>%mbR8DTjzsl#XoD&GWA|hj?RqndlOP!ISSB`cE?_P$^9H~O(XI= zv|oEjSZDQ&asigw>@n9$DlMn5@wfu6S77F6W&;-$DZARqcVMBPW(kYEfW#AYQRNl(0Dnl25vkWY3f`;&O#GN-dv%7C=`4ddIfU zTO-Zx0%@mxDKlflb8!w(EAtuGs$co450>1SFBes51b~g(tLv_%b5(7S^+rpuk@EAe znUD2nb;tUG6|oa#BOnQ)dZ{LBGmSe7eP1w}n{kIP=m*~kH?Cv9()yBhmWKYo($h2F z+4GPw2z)R9>(oyvu{Xu;%5en&bPAF9G_po)_w}!pgVGmySk%G4C@(QlPGueEe$X7q zt%hb>bN|SEgbeTLbN9qgT^S^ZJqhe#2QdWeCt1q~DdwkM?e8!7eO8=uS^+GZGPfB|mv9uFK|;*#g;E zBMl1h*j-Ss?XSt7w;V1S53sz{0pQcNsP99?r>k4&mN1{ROMa1d!^lUIsXst#8)daO|fD=r~) z-lCk^F`E+gv(8?5CT$*h6u19B!(3alXGW~=(>1kU&Rg-{VYN|v+N#WH{NBwpVO-(m zAX~fKq_pI8b8@YI(zVYt@?C0zPX^29k`U?xDZ%i^jn9#|=ock6)Ujim-{DUo{S(9P z{jtlSPp6ZWVvPY1J^KB$9HXG#xz*Z_jTa-L9ck(sJwX1w^5jNMAqc@zuI3;e~(pCNmeA ztioxiN;}};uJ)bSSaVv~KGwGa&eBsn>Aib>!ia;JXN=;>rg4F|%a}$(Jd7ALmmW!e zm(q{v5OaaP4mlFzfAQC@hXzzBJK}GRU7JWUBtqxV>1|na)_;%)AVN>BoR(K!`aO92 z@EF;Q>T%}bmVEp@*5D%P9kBSxxU&0Y1cO>LE7~Yx4@k~Ee{DG-^2oDgehZqdu?a(b z#AI>MgP7Z46_9ik;dX;frJ`)HM`SdNg^xA$Z;h~yhUMO7_nQ|*6Aj%d_hBo*4ImMF zHuL^WdLBV>cd}*hFk+S2W9G%G>7(#wyCE(@=h7EX`<-6YZr7V`2x~9%YsDPMuY_r7 zap7EIpF!lp760J!FSf)vW13-JyydiSgXoB#5SQC-JKW(_{WH7qzHVfV;o4R8XYC+Q z13&9kNMCDp?9kdSK3F*!`EST?0`#Ra^@oOVX9cChD;^xaOc<(r-oi@nl8zFanW z`@plyPCfXG3#UUnQad;tgw6@uyu*(}Ei0hIOW(sHO^(@m{SJD+*O7Z^$ej%mS(w5F zlVMEH{w>fC)iDLXepp_D0LjK~5ny<7{kz&9{aIiJnoO(H;gm;6)b8CUBNOcO&d<|u zol2YKR*m?0-i`RF_kr(dSPN^+;7is_X z*7LaU*Q}3m+IZ?Yt^T?auuK)jHW-*?9Y{_XknK07$M5@kPy(`h&vO z8-LYs+KLPC@;elSPURW$wnG1wn;zLAp#ewdU2>MHyP6bY(w!?DtBoC4ZR8?rpas#f{4zM&>w!L+peKk5=n*Vl$AUxc5~yJx^TO#eTM3?#xtZ+DJw#P13F zet#}borWN$L2eXe{RTje^a` zLQ-lk(i$+^4C^U4aflPmh7$W>!^YL2ypiYCqSM*9)IjP&=oH7QT+VClJCoN+uM(oe@Ikw9xZ};bGBzT^MH7tGpRr|NB%&&F^?vo?~<6!x7%WAWZHLA?6APi`*WY4 zYm32k);EW+vKT4JR@k`KvM1CXS+~PT*+dnvWA$z)hVLXgY&;;$FepBU0IfvrQF?sY z>P!3)xA(6s$p7}3i7OERj5!=B!?^Cb^`)M^*W~5(;gS#QNX*siUj~e6O*Z-)S02dU z(^%PBX6+M!R;MKhokp&~i^vK*apIHozevOu!(lO76dE$$j6CzNoFRw6er@D0XHaRb b($*6QZLQ#TjHz$^S(YFU{4?g@-?RS*#hB0x literal 0 HcmV?d00001 diff --git a/esp327nrfSDWDT3/data/imajes/Thumbs.db b/esp327nrfSDWDT3/data/imajes/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..5e0db0f49f68f4e2b7d050704958f39fb57f54a0 GIT binary patch literal 8192 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 Ha}E3l7Ui{= literal 0 HcmV?d00001 diff --git a/esp327nrfSDWDT3/data/imajes/browserconfig.xml b/esp327nrfSDWDT3/data/imajes/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/esp327nrfSDWDT3/data/imajes/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/esp327nrfSDWDT3/data/imajes/favicon-16x16.png b/esp327nrfSDWDT3/data/imajes/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ed26b3a5120613a2bc62165948a51a8d6fbb77 GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZLQ{_=LFr|NsBz-6QXpB)wmj@?lx(`xTi#?;igA z_1lFlbI!K7oNaYG+va|z&GXBbFFjpdVSb)*zE1JJPH{d?zwaOO@$hi*cQ=c2F^P8m zurx`r$;)PWmdok_=T!x^%d1?a}`(>#= z?;JL<^fv@LgE7h5-G!lpRn`N@VK4FYb!C6b#4XCp)0nxO7bsL-;u=vBlvu7%P?VpR znUkteQdy9ykXn(M#=r$4xfH;_#DL4h)ZD_%(#*^N2uv(ZER7O@3=0qs2n-Djj17UL z5s+;T7BMgc$s++1bF(xcH0Lr)HZui@bBRAIIstUTWKS2z5Q)pF{kQp=3fY z#GGf@Qab;qK6&x&cbRv)>gD|f{lf2#)IYnKZJzHJB>4PlaaIS=d8(igN=Yn9wMs5Z z1yT$~21bUu21dGuh9O3VR))q_hDO>3hE@g!o7n<2P&DM`r(~v8;?{5|`sEa$1`&`A zpun~Y&QB{TPb^AhaL>ejJGDp}?H+U@Y(qnifE?Dx( S$#g2v3IQw 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/esp327nrfSDWDT3/data/imajes/site.webmanifest b/esp327nrfSDWDT3/data/imajes/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/esp327nrfSDWDT3/data/imajes/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/esp327nrfSDWDT3/data/index.html b/esp327nrfSDWDT3/data/index.html new file mode 100644 index 0000000..12f705b --- /dev/null +++ b/esp327nrfSDWDT3/data/index.html @@ -0,0 +1,239 @@ + + + + + + + + + + + +

+ +
+

ESP-Домашний сервер

+
+
+ + + + + + + + +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+

Улица(запад)

+ +
+
+

TEMPERATURE

°C

Time

+
+
+

HUMIDITY

%

Time

+
+
+

Комната1

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+ +

Комната2

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Коридор

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Балкон

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Кухня

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+ +

+ +
+ Время работы сервера: + 0:00 +
+ + +
+

+

+

+
+ +
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform.html b/esp327nrfSDWDT3/data/inform.html new file mode 100644 index 0000000..c06421e --- /dev/null +++ b/esp327nrfSDWDT3/data/inform.html @@ -0,0 +1,161 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(запад)

+
+
+

TEMPERATURE

°C

Time

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+ +
+

+
+
+ + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform1.html b/esp327nrfSDWDT3/data/inform1.html new file mode 100644 index 0000000..2437258 --- /dev/null +++ b/esp327nrfSDWDT3/data/inform1.html @@ -0,0 +1,162 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform2.html b/esp327nrfSDWDT3/data/inform2.html new file mode 100644 index 0000000..bb0f0f2 --- /dev/null +++ b/esp327nrfSDWDT3/data/inform2.html @@ -0,0 +1,160 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Комната1

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ +
+ + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform3.html b/esp327nrfSDWDT3/data/inform3.html new file mode 100644 index 0000000..2249f57 --- /dev/null +++ b/esp327nrfSDWDT3/data/inform3.html @@ -0,0 +1,161 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Комната2

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform4.html b/esp327nrfSDWDT3/data/inform4.html new file mode 100644 index 0000000..3ec5c00 --- /dev/null +++ b/esp327nrfSDWDT3/data/inform4.html @@ -0,0 +1,162 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Коридор

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform5.html b/esp327nrfSDWDT3/data/inform5.html new file mode 100644 index 0000000..594ea9a --- /dev/null +++ b/esp327nrfSDWDT3/data/inform5.html @@ -0,0 +1,162 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Балкон

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform6.html b/esp327nrfSDWDT3/data/inform6.html new file mode 100644 index 0000000..acd6c10 --- /dev/null +++ b/esp327nrfSDWDT3/data/inform6.html @@ -0,0 +1,161 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Кухня

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+ +
+ + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/inform7.html b/esp327nrfSDWDT3/data/inform7.html new file mode 100644 index 0000000..6bb151b --- /dev/null +++ b/esp327nrfSDWDT3/data/inform7.html @@ -0,0 +1,161 @@ + + + + +Информация + + + + + + + + + + + + +
+ +
+

ESP-Домашний сервер

+
+ + + +
+ +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+
................................................... +
+
+ таблица температуры за сутки +
+ +
+ + + + + + + + + + + + +
  Time  temperatura  humidity
+
+
+

+
+
+ + + + \ No newline at end of file diff --git a/esp327nrfSDWDT3/data/mstile-150x150.png b/esp327nrfSDWDT3/data/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8550b9e569c4a4f631aa8a9137af2f8e9567c7 GIT binary patch literal 11333 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 + + + +Настройка + + + + + + + + + + + +

ESP32 управляет освещением комнаты

+
+ + + + + + + + + diff --git a/esp327nrfSDWDT3/data/style.css b/esp327nrfSDWDT3/data/style.css new file mode 100644 index 0000000..4f10865 --- /dev/null +++ b/esp327nrfSDWDT3/data/style.css @@ -0,0 +1,205 @@ +@charset "utf-8"; + + html {font-family: Arial; display: inline-block; text-align: center;} +body { + background-color: #C7CACC; + color: #FFFFFF; + font-family: Arial, sans-serif; + font-size: 14px; + width: 100%; + margin-top: 5px; + background-image: url(fon.jpg); +} + a{ + color: #FFFFFF; + } + a:visited { + color: #FFFFFF; /* Цвет посещенных ссылок */ + text-decoration: none; + } + a:active { + color: #A7F095; /* Цвет активных ссылок */ + } + a:hover { + color: #AFDAF4; /* Цвет ссылок при наведении мыши*/ + } + +#header { + background: #F5DEB3; + width: 100%; +} + +#container { + background-color: #FFFFFF; + margin-right: auto; + margin-left: auto; + margin-bottom: auto; + text-align: center; + width: 80%; + height: 84px; + margin-top: 7px; + padding-top: 1px; +} + +#nav + { + background-color: #2F4468; + width: 100%; + color: #FFFFFF; + font-size: small; + margin-left: -18px; + margin-top: -3px; +} + +#sidebar { + background-color: #8CA2AF; + float: left; + width: 20%; + position: static; + margin-top: -1px; + height: 358px; + min-width: 0px; +} + +#content { + background-color: #F8E6C1; + float: right; + width: 80%; + color: #14437A; + margin-top: -2px; + opacity: 0.91; +} + +#clear { + clear: both; +} + +#footer { + background: #00BFFF; + width: 100%; + height: 40px; +} + + .topnav { + overflow: hidden; + background-color: #2f4468; + color: white; + font-size: 1.7rem; + height: 65px; + line-height: 3px; + +} +.top{ + overflow: hidden; + background-color: #8CA2AF; + color: white; + width: 100%; + +} + + .card.temperature { color: #fd7e14; } + .card.humidity { color: #1b78e2; } + + + .card { + background-color: #F9F9F7; + box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); +} + .cards { + max-width: 901px; + margin: 0 auto; + display: grid; + grid-gap: 2rem; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + min-height: 133px; +} + .reading { + font-size: 2.8rem; + +} + + + #navigation a { + font-size: small; + color: #3E73A7; + float: left; + border-top-width: thick; + padding-left: 20px; +} + + .times{ + font-size: xx-large; + margin-top: -50px; + background-color: #2F4468; + color: #FFFFFF; + height: 57px; + line-height: 56px; + } + .manth{ + color: #02087C; + margin-top: 0px; + background-color: #EF7320; + height: 2pc; + font-size: large; + padding-top: 2px; + opacity: 1; + line-height: 3%; + } +.servertime { + margin-top: 37px; +} +.data{ + color: #2F4468; + background-color: #FFFFFF; + margin-top: -93px; + height: 146px; + font-size: 92px; + line-height: 97px; +} +.week{ + color: #000006; + margin-top: -91px; + background-color: #EF7320; + height: 2pc; + font-size: large; + line-height: 30px; + +} +.levnav{ + font-size: large; + color: #FFFFFF; + margin-top: 5px; + margin-left: 25px; + line-height: 11px; + margin-right: 31px; + text-decoration: none; + text-align: left; + +} +#containerinf { + background-color: #B59D69; + margin-right: auto; + margin-left: auto; + margin-bottom: auto; + text-align: center; + width: 80%; + height: 84px; + margin-top: 7px; + padding-top: 1px; + opacity: 1; +} +#contentinfo { + background-color: #ECD9B1; + width: 100%; + color: #14437A; + margin-top: -2px; + opacity: 0.83; +} +#tablinfo{ + background-color: #ECD9B1; + width: 35%; + color: #14437A; + margin-top: 11px; + opacity: 0.83; + margin-left: 288px; +} diff --git a/esp327nrfSDWDT3/data/upravlenie.html b/esp327nrfSDWDT3/data/upravlenie.html new file mode 100644 index 0000000..e73d416 --- /dev/null +++ b/esp327nrfSDWDT3/data/upravlenie.html @@ -0,0 +1,122 @@ + + + + + ESP-NOW DASHBOARD + + + + + + + + + + + + +
+

ESP-Домашний сервер

%dataserv%

+ + + + +

%timeserv%

+ +
+ + + +
+
+
+

TEMPERATURE

°C

Time

+
+
+

HUMIDITY

%

Time

+
+
+
+ +
+ Время работы сервера: +
+ + +
+ +

+
+ + +
+ + + + + + diff --git a/esp327nrfSDWDT3/esp327nrfSDWDT3.ino b/esp327nrfSDWDT3/esp327nrfSDWDT3.ino new file mode 100644 index 0000000..2e4b98c --- /dev/null +++ b/esp327nrfSDWDT3/esp327nrfSDWDT3.ino @@ -0,0 +1,634 @@ +/* + ESP32 Receiver (ESP-NOW + Web Server) + Complete project details at https://RandomNerdTutorials.com/esp32-esp-now-wi-fi-web-server/ + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files. + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. +*/ +//08:3A:F2:A7:80:6C //esp32 желтые ноги +//08:3A:F2:66:31:30 //esp32 lilygo2,3 +//08:3A:F2: //esp32 lilygo4,7 +#define SD_MISO 12 +#define SD_MOSI 13 +#define SD_SCLK 14 +#define SD_CS 15 +#include +#define WDT_TIMEOUT 10 +#include +#include "ESPAsyncWebSrv.h" +#include +#include +#include +#include "FS.h" +#include "SD.h" +#include "SPI.h" +#include + +#include "NTPClient.h" +#include "WiFiUdp.h" +#include +UnixTime stamp(0); // указать GMT (3 для Москвы) +// Define deep sleep options +String dataMessage; +// Define NTP Client to get time +WiFiUDP ntpUDP; +NTPClient timeClient(ntpUDP); +#include "nRF24L01.h" +#include "RF24.h" +char msg[16]; +//RF24 radio(12, 14, 26, 25, 27); +//RF24 radio(27, 26, 32, 33, 25);//server (ce,csn,sck,miso,mosi)esp32 + +RF24 radio(17, 16, 32, 33, 25);//server (ce,csn,sck,miso,mosi)esp32 +const uint64_t pip = 0x02E423E4E2LL; +SPIClass sdSPI(HSPI); +File myFile; +String jsonString;//"{\"id\":2,\"temperature\":9.6733450317382812,\"humidity\":50.41815185546875,\"readingId\":\"2\"}"; +String jsonString1; +String jsonString2;//="{\"tkom1\":\"20.0\",\"hkom1\":\"30.0\",\"batkom1\":\"0.00\",\"timekom1\":\"00:00\",\"tkom2\":\"\",\"hkom2\":\"\",\"batkom2\":\"\",\"timekom2\":\"\",\"tkor\":\"\",\"hkor\":\"\",\"batkor\":\"\",\"timekor\":\"\",\"tbal\":\"\",\"hbal\":\"\",\"batbal\":\"\",\"timebal\":\"\"}" +; +// Replace with your network credentials (STATION) +const char* ssid = "VOVA-47"; +const char* password = "vovak26102003"; + + char *time_buf; + +const char* PARAM_INPUT_1 = "output"; +const char* PARAM_INPUT_2 = "state"; + +// Structure example to receive data +// Must match the sender structure +typedef struct struct_message { + int id=0; + float temp=0; + float hum=0; + unsigned int readingId=0; +} struct_message; + +struct_message incomingReadings; + +JSONVar board; +JSONVar board1; +JSONVar board2; + + + +AsyncWebServer server(80); +AsyncEventSource events("/events"); +//************************************************************************************************* +char* strd[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"}; + char* strm[] = {"январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"}; + char* strweek[] = {"воскресенье","понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"}; + int nt=0;//номер термометра + int nti=0;//номер термометра для сайта + int temperature1=10; + double ts; + double hs; +String t1; + String h1; + String t10;//время работы сервера + String tim3;// время от нтп сервера при приходе данных с NOW + String tim2;//время получ от устройства NOW + String munthserv;//месяц + String weekserv;//день недели + +String tkom1;//температура +String hkom1;//влажность +String batkom1; +String timekom1;//время прихода данных комната1 + +String tkom2; +String hkom2; +String batkom2; +String timekom2; + +String tkor; +String hkor; +String batkor; +String timekor; + +String tbal; +String hbal; +String batbal; +String timebal; + +String timeul1; +String tul1; +String hul1; +String osv1; +int ct1=0;//счетчик пропуска данные каждые 3 минуты записываем каждые 20 те 7 пропусков + + + int time17=0; +int hour1=10; +int min1=7; +int sek=0; +int hk=0;//часы для исключения повтора записи данных +int mk=0;//минуты +int hb=0;//часы для исключения повтора записи данных +int mb=0;//минуты +int hkr=0;//часы для исключения повтора записи данных +int mkr=0;//минуты +int timev=0;//для пропуска 20 минут +//String timev1;//для записи на флэш при сбросе + +boolean fdata=0;//флаг обновления данных темп и влажн +int fobnov=1;//флаг обновления данных темп и влажн +String timeserv;//время сервера +String dataserv;//дата +int v=0; +int v1=0; +long EpochTime=0; + int ind=0; + String strdat;//накопленые в памяти данные по темп и влажность передаваемые клиенту + String tempdat;// +int ftdata=0;//флаг запроса данных темп и влажн +int fping=0;// флаг для задержки отр данных на страницу inform +int wright=0; +bool flread=0; + char* strden[] = {"/01","/02","/03","/04","/05","/06","/07","/08","/09","/10","/11","/12","/13","/14","/15","/16","/17","/18","/19","/20","/21","/22","/23","/24","/25","/26","/27","/28","/29","/30","/31"}; + char* strmen[] = {"/JAN","/FEBR","/MARCH","/APRIL","/MAY","/JUNE","/JULY","/AUG","/SEPT","/OCT","/NOV","/DEC"}; + char* stryen[] = {"/2014","/2015","/2016","/2017","/D-2018","/D-2019","/D-2020","/D-2021","/D-2022","/D-2023","/D-2024","/D-2025","/D-2026","/D-2027","/D-2028","/D-2029","/D-2030","/D-2031","/D-2032","D-2033","/D-2034","/D-2035"}; + char* strdaten[] = {"/T1.txt","/T2.txt","/T3.txt","/T4.txt","/T5.txt","/T6.txt","/T7.txt","/T8.txt","/T9.txt","/T10.txt"}; +//************************************************************ +hw_timer_t * timer = NULL; +volatile SemaphoreHandle_t timerSemaphore; +portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; +volatile uint32_t isrCounter = 0; +volatile uint32_t lastIsrAt = 0; +//************************************************************************************************** +// ntp +String formattedDate; +String formattedTime; +String dayStamp; +String timeStamp; + + +//***************************************************************************** + +//**************************************************************************** +String outputState(int output){ + if(digitalRead(output)){ + return "checked"; + } + else { + return ""; + } +} + +String processor(const String& var){ + //Serial.println(var); + if(var == "BUTTONPLACEHOLDER1"){ + String buttons = ""; + // buttons += "

Output - GPIO 12

"; + buttons += "

Output - GPIO 13

"; + // buttons += "

Output - GPIO 14

"; + return buttons; + } + return String(); +} + /* if(var == "HOLDERT1"){ + String buttons = ""; + buttons +="

"+t1+" °C

"; + String hour11=String(hour1, DEC); + String min11=String(min1, DEC); + if(min1<10){min11="0"+min11;} + buttons +="

"+hour11+":"+min11+"

"; + return buttons; +} + if(var == "HOLDERH1"){ + String buttons = ""; + buttons +="

"+h1+" %

"; + String hour11=String(hour1, DEC); + String min11=String(min1, DEC); + if(min1<10){min11="0"+min11;} + buttons +="

"+hour11+":"+min11+"

"; + return buttons; +} +*/ + /*if(var == "HOLDER2"){ + String buttons = ""; + + buttons +="

"+t10+"

"; + return buttons; + +}*/ +//************************************************ + + +//*********************************************************** +void vrem(); +void handle_OnConnect(); +void ntp(); +void ntphome(); +void IRAM_ATTR onTimer(); + void event(); + void WiFisetup(); + void savedata(); + void JSstringU(); + void JSstringK(); + void Sdreaddata(); + void Nrfsetup(); + void nrf(); + void parsmsg(); + void settimer(); + void readdata(); + //void ansv(); +//*********************************************************** +void OnDataRecv(const uint8_t * mac_addr, const uint8_t *incomingData, int len) { + // Copies the sender mac address to a string + char macStr[18]; + Serial.print("Packet received from: "); + snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x", + mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); + Serial.println(macStr); + memcpy(&incomingReadings, incomingData, sizeof(incomingReadings)); + + Serial.printf("Board ID %u: %u bytes\n", incomingReadings.id, len); + Serial.printf("t value: %4.2f \n", incomingReadings.temp); + t1 = incomingReadings.temp; + Serial.printf("h value: %4.2f \n", incomingReadings.hum); + h1=incomingReadings.hum; + Serial.printf("readingID value: %d \n", incomingReadings.readingId); + int tim11 =incomingReadings.readingId; + hour1=tim11/100; + min1=tim11%100; +//JSONстрока формирование + ntphome(); + tim3=timeserv; +JSstringU(); +events.send(jsonString.c_str(), "new_readings", millis());//обновление веба +// fdata=1; + + // fdata=0; + savedata(); +}//OnDataRecv + //**************************************************************************** + void configureEvents() { + events.onConnect([](AsyncEventSourceClient *client){ + if(client->lastId()){ + Serial.printf("Client connections. Id: %u\n", client->lastId()); + } + // and set reconnect delay to 1 second + client->send("hello from ESP32",NULL,millis(),1000); + }); + +}// configureEvents +//********************************************************************************************************* +void setup() { + // Initialize Serial Monitor + pinMode(13, OUTPUT); + digitalWrite(13, LOW); + Serial.begin(115200); + +if(!SPIFFS.begin()){ + Serial.println("An Error has occurred while mounting SPIFFS"); + return; + } + + sdSPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS); + if (!SD.begin(SD_CS, sdSPI)) + { + // if(!SD.begin()){ + Serial.println("Mounting card mount failed"); + // return; + } + + +uint8_t cardType = SD.cardType(); +if(cardType == CARD_NONE){ + Serial.println("No SD card attached"); + //return; + } + uint64_t cardSize = SD.cardSize() / (1024 * 1024); + Serial.printf("SD Card Size: %lluMB\n", cardSize); + Sdreaddata(); + Nrfsetup(); +settimer(); +WiFisetup(); + // Initialize a NTPClient to get time + timeClient.begin(); + // Set offset time in seconds to adjust for your timezone, for example: + // GMT +1 = 3600 + // GMT +8 = 28800 + // GMT -1 = -3600 + // GMT 0 = 0 + timeClient.setTimeOffset(10800); + // Once ESPNow is successfully Init, we will register for recv CB to + // get recv packer info + esp_now_register_recv_cb(OnDataRecv); + ntp();//NTP init + +server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/index.html", String(), false, processor); + fobnov=1; + }); + server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/index.html", String(), false, processor); + fobnov=1; + + }); + // Route to load style.css file + server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/style.css", "text/css"); + }); + + + server.on("/fon.jpg", HTTP_GET, [](AsyncWebServerRequest *request){ + request->send(SPIFFS, "/fon.jpg"); + }); + + server.on("/upravlenie.html", HTTP_GET, [](AsyncWebServerRequest *request){ + fobnov=1; + request->send(SPIFFS, "/upravlenie.html", String(), false, processor); + }); + + server.on("/setting.html", HTTP_GET, [](AsyncWebServerRequest *request){ + + request->send(SPIFFS, "/setting.html"); + }); + server.on("/inform.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=1; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform.html"); + }); + + server.on("/inform1.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=2; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform1.html"); + }); + + server.on("/inform2.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=4; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform2.html"); + }); + server.on("/inform3.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=7; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform3.html"); + }); + server.on("/inform4.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=3; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform4.html"); + }); + server.on("/inform5.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=5; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform5.html"); + }); + server.on("/inform6.html", HTTP_GET, [](AsyncWebServerRequest *request){ + ftdata=6; + fping=0; + // Serial.println ("ftdata==1"); + request->send(SPIFFS, "/inform6.html"); + }); + server.on("/favicon.ico", HTTP_GET, [](AsyncWebServerRequest *request){ + + request->send(SPIFFS, "/favicon.ico"); + }); + server.on("/favicon-32x32.png", HTTP_GET, [](AsyncWebServerRequest *request){ + + request->send(SPIFFS, "/favicon-32x32.png"); + }); + server.on("/favicon-16x16.png", HTTP_GET, [](AsyncWebServerRequest *request){ + + request->send(SPIFFS, "/favicon-32x32.png"); + }); + + // Send a GET request to /update?output=&state= принимаем get сообщение от клиента при нажати кнопки + // принимаем номер контакта и его состояние + // GET http://192.168.1.100/update?output=13&state=1 + server.on("/update", HTTP_GET, [] (AsyncWebServerRequest *request) { + String inputMessage1; + String inputMessage2; + // GET input1 value on /update?output=&state= + + + if (request->hasParam(PARAM_INPUT_1) && request->hasParam(PARAM_INPUT_2)) { + inputMessage1 = request->getParam(PARAM_INPUT_1)->value(); + inputMessage2 = request->getParam(PARAM_INPUT_2)->value(); + digitalWrite(inputMessage1.toInt(), inputMessage2.toInt()); + } + else { + inputMessage1 = "No message sent"; + inputMessage2 = "No message sent"; + } + Serial.print("GPIO: "); + Serial.print(inputMessage1); + Serial.print(" - Set to: "); + Serial.println(inputMessage2); + + request->send(200, "text/plain", "OK"); + }); + +JSstringU(); +JSstringK(); + +configureEvents(); + server.addHandler(&events); + + server.begin(); + esp_task_wdt_init(WDT_TIMEOUT, true); //включить панику, чтобы ESP32 перезапустился + esp_task_wdt_add(NULL); //добавить текущий поток в WDT watch + +} + + +//*********************************************************************************************************** +//*********************************************************************************************************** +//*********************************************************************************************************** +void loop() +{ + + + static unsigned long lastEventTime = millis(); + + static const unsigned long EVENT_INTERVAL_MS = 5000; + if (v>3) {//20sek + ntphome();//считываем время + v=0;//обнуляем счетчик 4*5=20с + } + if (v1>240) {//20min + ntp();//считываем время + v1=0;//обнуляем счетчик 240*5=1200с + } + + // digitalWrite(13, HIGH); // светодиод горит +// digitalWrite(13, LOW); // светодиод погашен + if ((millis() - lastEventTime) > EVENT_INTERVAL_MS) + { + events.send("ping",NULL,millis()); + lastEventTime = millis(); + v++; + v1++; + + vrem();//время работы сайта + events.send(t10.c_str(), "t10", millis());//время работы сайта обн каждые 5сек + events.send(timeserv.c_str(), "timeserv", millis());//время обн каждые 5сек + + fping++;//задержка отправки данных на стр до готовности стр принять их + if(fping>1000){fping=0;} + nrf(); //проверяем не приш ли данные на NRF + wright++;//сч времени для записи на флеш + Serial.println (wright); + Serial.print ("ftdata="); + Serial.println (ftdata); + Serial.print ("fobnov="); + Serial.println (fobnov); + if( ftdata==0) + { if (fobnov>0) {//2,5sek + fobnov++; + if(fobnov>3){fobnov=0;} + events.send(jsonString.c_str(), "new_readings", millis());//обновление веба текущая температура + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + Serial.println("/index"); + } + } + +//***************************************************************************************** + + +//******************************************************************************************* + +//********************************************************************************************* + + + + //********************************************************************************************** + if (ftdata==2)//пришел запрос табл данных /inform ЗАПАД + {// tim3=formattedTime; + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + } + if(fping>1){ + ftdata=0; + fping=0; + nti=1; + readdata(); + // Serial.println("data1"); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } +//*************************************************************************************************** + if (ftdata==1)//пришел запрос табл данных /inform ВОСТОК + {// tim3=formattedTime; + + if(fping>2){fping=0;} + if(fping==1){ +// events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + events.send(jsonString.c_str(), "new_readings", millis());//обновление данных ЗАПАД + } + if(fping>1){ + ftdata=0; + fping=0; + nti=0; + readdata(); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + // fobnov=1; + + } + } + +//*************************************************************************************************** + if (ftdata==3)//пришел запрос табл данных /inform коридор + {// tim3=formattedTime; + + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление данных Т Н ВАТ все кроме запад + } + if(fping>1){ + ftdata=0; + fping=0; + nti=5; + readdata(); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } +//*************************************************************************************************** + if (ftdata==5)//пришел запрос табл данных /inform балкон + {// tim3=formattedTime; + + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление данных Т Н ВАТ все кроме запад + } + if(fping>1){ + ftdata=0; + fping=0; + nti=2; + readdata(); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } + +//****************************************************************************************************** + if (ftdata==4)//пришел запрос табл данных /inform К1 + {// tim3=formattedTime; + + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление данных Т Н ВАТ все кроме запад + } + if(fping>1){ + ftdata=0; + fping=0; + nti=4; + readdata(); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } + + + //****************************************************************************************************** + if (ftdata==7)//пришел запрос табл данных /inform К2 + {// tim3=formattedTime; + + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление данных Т Н ВАТ все кроме запад + } + if(fping>1){ + ftdata=0; + fping=0; + nti=3; + readdata(); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } + + //********************************************************************************************************* + if (ftdata==6)//пришел запрос табл данных /inform + {// tim3=formattedTime; + if(fping>2){fping=0;} + if(fping==1){ + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + } + if(fping>1){ + ftdata=0; + fping=0; + nti=1; + readdata(); + Serial.println("data1"); + events.send(strdat.c_str(), "readings", millis());//отправка данных из памяти в таблицу на стр inform + } + } + + + + + } +} diff --git a/esp327nrfSDWDT3/event.ino b/esp327nrfSDWDT3/event.ino new file mode 100644 index 0000000..1d71c0e --- /dev/null +++ b/esp327nrfSDWDT3/event.ino @@ -0,0 +1,24 @@ + + void event() + { + /*events.send(String(t1).c_str(), "t1", millis()); + events.send(String(h1).c_str(), "h1", millis()); + // events.send(String(hour1).c_str(), "hour1", millis()); + // events.send(String(min1).c_str(), "min1", millis()); + + + if (min1<10) + { + tim2=String(hour1)+":"+"0"+String(min1); + } + else + {tim2=String(hour1)+":"+String(min1); + } + events.send(tim2.c_str(), "tim2", millis()); + events.send(t10.c_str(), "t10", millis()); + //events.send(formattedDate.c_str(), "tim3", millis()); + + events.send(tim3.c_str(), "tim3", millis()); + events.send(timeserv.c_str(), "timeserv", millis()); + events.send(dataserv.c_str(), "dataserv", millis());*/ + } diff --git a/esp327nrfSDWDT3/nrf.ino b/esp327nrfSDWDT3/nrf.ino new file mode 100644 index 0000000..9d76713 --- /dev/null +++ b/esp327nrfSDWDT3/nrf.ino @@ -0,0 +1,54 @@ +void Nrfsetup() +{ + radio.begin(); + radio.setChannel(100); + radio.setPayloadSize(16);//должно быть16 + radio.setAddressWidth(5); + radio.setAutoAck( 0 ,false); + radio.setCRCLength(RF24_CRC_16); + radio.setDataRate(RF24_2MBPS); + radio.openReadingPipe(0,pip); + radio.startListening(); +} + +void nrf() +{ + if (radio.available()){ + radio.read(msg,16); + esp_task_wdt_reset();//reset WDT + Serial.println(msg); + parsmsg(); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + delay(500); + if (radio.available()){radio.read(msg,16); + parsmsg();} + + JSstringK();//создаем строку для сайта + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + + if(nt==2){saveul();}//t9 T2 + if(nt==3){savebalk();}//t1 T3 + if(nt==4){savek2();}//t2 T4 + if(nt==5){savek1();}//t3 T5 + if(nt==7){savekor();}//t5 T6 + if (radio.available()){radio.read(msg,16);} + } + //t1+138c347v524h5 балкон + //t2+243c401v528h моя комната +// t3+230c357v469h зал +// t5+230c357v469h коридор +//9d+088h866s00v улица восток + + + +} diff --git a/esp327nrfSDWDT3/ntp.ino b/esp327nrfSDWDT3/ntp.ino new file mode 100644 index 0000000..afa5491 --- /dev/null +++ b/esp327nrfSDWDT3/ntp.ino @@ -0,0 +1,95 @@ +void ntp() + { + // while(!timeClient.update()) { + // timeClient.forceUpdate(); + //} + + for(int i=0; i<5 && !timeClient.update(); i++) +{ + +timeClient.forceUpdate(); +} + + // The formattedDate comes with the following format: + // 2018-05-28T16:00:13Z + // We need to extract date and time + // formattedDate = timeClient.getFormattedDate(); + formattedTime =timeClient.getFormattedTime(); + Serial.println(formattedTime); + Serial.println("NTP3"); +// getDay +//getHours +//getMinutes +//getSeconds +//getFormattedTime +// formattedDate =timeClient.getFormattedDate(); + // int splitT = formattedDate.indexOf("T"); +// dayStamp = formattedDate.substring(0, splitT); +// Serial.println(timeClient.getDay()); + + // Extract time + // timeStamp = formattedDate.substring(splitT+1, formattedDate.length()-1); +// Serial.println("ntp"); +// Serial.println(timeClient.getEpochTime()); + stamp.getDateTime(timeClient.getEpochTime()); +EpochTime=timeClient.getEpochTime(); + // забираем вот так +// Serial.println(stamp.year); + Serial.println(stamp.month); + Serial.println(stamp.day); + // Serial.println(stamp.hour); + // Serial.println(stamp.minute); + // Serial.println(stamp.second); + Serial.println(stamp.dayOfWeek); + timeserv=formatTimeDigits(stamp.hour,stamp.minute); + //dataserv=formatDateDigits(stamp.day, stamp.month, stamp.year); + +hour1=stamp.hour; +min1=stamp.minute; + + dataserv=stamp.day; + munthserv=strm[stamp.month-1] ; + weekserv=strweek[stamp.dayOfWeek]; +//Serial.println(timeserv); +//Serial.println(dataserv); +} + +char *formatTimeDigits(int hour, int minute) +{ +char *time_str = new char[5]; +time_str[0] = '0' + (hour / 10); +time_str[1] = '0' + (hour % 10); +time_str[2] = ':'; +time_str[3] = '0' + (minute / 10); +time_str[4] = '0' + (minute % 10); +time_str[5] = '\0'; + +return time_str; +} + +char *formatDateDigits(int date, int mounth, int year) +{ +char *date_str = new char[9]; + +date_str[1] = '0' + (date % 10); +date_str[2] = '/'; +date_str[0] = '0' + (date / 10); +date_str[3] = '0' + (mounth / 10); +date_str[4] = '0' + (mounth % 10); +date_str[5] = '/'; +date_str[6] = '0' + ((year % 100) / 10); +date_str[7] = '0' + (year % 10); +date_str[8] = '\0'; + +return date_str; +} + +void ntphome() +{ + stamp.getDateTime(timeClient.getEpochTime()); + timeserv=formatTimeDigits(stamp.hour,stamp.minute); + hour1=stamp.hour; +min1=stamp.minute; +// dataserv=formatDateDigits(stamp.day, stamp.month, stamp.year); + dataserv=stamp.day; +} diff --git a/esp327nrfSDWDT3/parsmsg.ino b/esp327nrfSDWDT3/parsmsg.ino new file mode 100644 index 0000000..e9429a6 --- /dev/null +++ b/esp327nrfSDWDT3/parsmsg.ino @@ -0,0 +1,352 @@ + +void parsmsg() +{ +//int tkom1=0;//температура +//int hkom1=0;//влажность +//int batkom1=0; +//String timekom1;//время прихода данных комната1 + +//int tkom2=0; +//int hkom2=0; +//int batkom2=0; +//String timekom2; + +//int tkor=0; +//int hkor=0; +//int batkor=0; +//String timekor; + +//int tbal=0; +//int hbal=0; +//int batbal=0; +//String timebal; + +//String timebal; + //t1+138c347v524h5 балкон + //t2+243c401v528h моя комната +// t3+230c357v469h зал +// t5+230c357v469h коридор +//9d+088h866s00v улица восток +//timeul1 +//tul1 +//hul1 +//osv1 +//char msg[16];принятое сообщение +int tdat;//температура +int hdat;//влажность +int vdat;//напряж батареи датчика +int zndat; +int osv; + char token9[] = "9d";//улица + char token11[] = "t1";//датчики + char token12[] = "t2";//датчики + char token13[] = "t3";//датчики + char token14[] = "t4";//датчики + char token15[] = "t5";//датчики + + int n=0; + int p=0; + boolean chet=0; +char c ; + +//*************************** +for (int j=0 ; j<15 ;j++) +{ c=msg[j];//принятая с премника перемнная + + + if (p==9) + { if (c==token9[1]){p=99;}//данные с ул датчика восток + else{ + p=0;} + } + if (p==101)//cравнение второго символа на соответствие t 1 + { if (c==token11[1]){p=111;} + + } + if (p==101)//cравнение второго символа на соответствие t 2 + { if (c==token12[1]){p=112;} + + } + if (p==101)//cравнение второго символа на соответствие t 3 + { if (c==token13[1]){p=113;} + + } + if (p==101)//cравнение второго символа на соответствие t 4 + { if (c==token14[1]){p=114;} + + } + if (p==101)//cравнение второго символа на соответствие t 5 + { if (c==token15[1]){p=115;} + else{ + p=0;} + } + //************************************************* + if (p==99) + {// myFile.print(c);//d+237h895s05v + nt=2; + timeul1=timeserv;//время получения данных + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=2;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5){ + tdat=(c-48)+tdat; + + if(zndat==1){tul1="-"+String (tdat/10)+"."+String (tdat%10); //температура знак -230 -23.0 + } + else + {tul1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + } + if (n==7){hdat=(c-48)*100;}//влажность + if (n==8){hdat=(c-48)*10+hdat;} + if (n==9){ + hdat=(c-48)+hdat; + hul1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + if (n==11){osv=10*(c-48);}//освещенность + if (n==12) + {osv=osv+(c-48); + if(osv>99){osv=99;} + osv1=String (osv)+"%"; + }//sun + // hourdu=t.hour;//время прихода данных час + // mindu=t.min;//мин + + } + //***************************************** + + //*****************датчики температуры переносные*********************** +//************************T1**************************************************** + if (p==111) //выделение данных из принятой строки + { timebal=timeserv;//время получения данных + nt=3; +//byte ntdat;номер датчика +//byte zndat;знак температуры 0+ +//int tdat;температура +//int hdat;влажность +//int vdat;напряж батареи датчика + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tbal=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batbal=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hbal=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } +//**************************************** T2 + if (p==112) //выделение данных из принятой строки + {timekom2=timeserv;//время получения данных + nt=4; + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkom2=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkom2=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkom2=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } + //**************************************** + //**************************************** T3 + if (p==113) //выделение данных из принятой строки + {// myFile.print(c);//t2+103c375v299h9 + nt=5; + timekom1=timeserv;//время получения данных + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkom1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkom1=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkom1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } +//**************************************** T4 **************************** + /* if (p==114) //выделение данных из принятой строки + {// myFile.print(c);//t1+103c375v299h9 + ntdat=4; + if(chet==0) + { if( hourd4==t.hour) + {fh=1; + } + else + {fh=0; + } + chet=1; + } + hourd4=t.hour; + mind4=t.min; +//byte ntdat;номер датчика +//byte zndat;знак температуры 0+ +//int tdat;температура +//int hdat;влажность +//int vdat;напряж батареи датчика + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + for (int u =22 ; u >= 0; u = u--) + { + t4[u+1]=t4[u]; + } + if(zndat==1)//- + {t14=tdat+1000; + t4[0]=t14; + } + else + {t14=tdat; + t4[0]=t14; + } + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + bat[3]=vdat; + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + for (int u =22 ; u >= 0; u = u--) + { + h4[u+1]=h4[u]; + } + h4[0]=hdat; + + } + if (n==13) + {hdat=(c-48)+hdat; + h14=hdat; + } + + }*/ + //**************************************** T5 + if (p==115) //выделение данных из принятой строки + {// myFile.print(c);//t2+103c375v299h9 + timekor=timeserv;//время получения данных + nt=7; + n++; + if (n==2){ + if (c==45){zndat=1;//- + }//znak + else + {zndat=0;//+ + } + } + if (n==3) {tdat=(c-48)*100;} //температура + if (n==4){tdat=(c-48)*10+tdat;} + if (n==5) + {tdat=(c-48)+tdat; + tkor=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0 + } + + if (n==7){vdat=(c-48)*100;}//напряж батареи датчика + if (n==8){vdat=(c-48)*10+vdat;} + if (n==9) + {vdat=(c-48)+vdat; + batkor=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в + } + if (n==11){hdat=(c-48)*100;}//влажность + if (n==12) + {hdat=(c-48)*10+hdat; + } + if (n==13) + {hdat=(c-48)+hdat; + hkor=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6% + } + + } +//******************************************************************************* + +if ((c==token9[0])&&(p==0)){p=9;} +if ((c==token11[0])&&(p==0)){p=101;}//cравнение первого символа на соответствие t +}//for +//************************************************* + + +}//void pars diff --git a/esp327nrfSDWDT3/savedata.ino b/esp327nrfSDWDT3/savedata.ino new file mode 100644 index 0000000..852e811 --- /dev/null +++ b/esp327nrfSDWDT3/savedata.ino @@ -0,0 +1,183 @@ +/*void savedata() +{ + + JSONVar boardat; +if(min1<10) +{boardat["Time"] = String(hour1)+":0"+String(min1); +} +else +{ + boardat["Time"] = String(hour1)+":"+String(min1); +} +boardat["temperatura"] =String(t1)+" C"; +boardat["humidity"] = String(h1)+" %"; +tempdat = JSON.stringify(boardat); +// Serial.println (tempdat); +//JSON { "Time":"11:03", "temperatura":"10.56 C", "humidity":"7,56 %" }, + + // myFile = SPIFFS.open("/TempUl.txt", FILE_WRITE);//создаем файл с именем TempUl + myFile = SPIFFS.open("/TempU1.txt", FILE_APPEND);//открываем файл в режиме добавления данных + myFile.print(tempdat+"\n"); + myFile.close(); +//**************************************************** + + +} + +void readdata() +{ + //**************************************************** + Serial.println("/TempU1.txt"); + // Читаем содержимое файла: + + myFile = SPIFFS.open("/TempU1.txt", FILE_READ); + + + + // "Содержимое файла: \"" + + while(myFile.available()) { + + Serial.write(myFile.read()); + + } + Serial.println(" "); + + // Узнаем размер файла: + + Serial.print("File size: "); + // "Размер файла: " + Serial.println(myFile.size()); + + myFile.close(); + +strdat=""; + + myFile = SPIFFS.open("/TempU1.txt", FILE_READ); + + + while(myFile.available()) { + + strdat+=char(myFile.read()); + + } + + + myFile.close(); + + + + + board1["tdata"] = strdat; + board1["dataserv"] = dataserv; + board1["timeserv"] = timeserv; +jsonString1 = JSON.stringify(board1); + // Serial.println (jsonString1); + // Serial.println ("strdat="); + //Serial.println (strdat); + + // events.send(tempdat.c_str(), "readings", millis());//обновление веба + // events.send(strdat.c_str(), "readings", millis());//обновление веба +}*/ + + +void Sdreaddata()//чтение данных после откл питания или сброса +{ Serial.println ("read SD data"); + strdat=""; + myFile = SD.open("/thkom1.txt", FILE_READ); + while(myFile.available()) { + + strdat+=char(myFile.read()); + + } + + + myFile.close(); + jsonString2=strdat; + Serial.println (jsonString2); + events.send(jsonString2.c_str(), "new_datatemp", millis());//обновление веба + JSONVar myObject = JSON.parse(strdat); +//{"tkom1":"","hkom1":"","batkom1":"","timekom1":"","tkom2":"25.1","hkom2":"50.1","batkom2":"4.0","timekom2":"22:00","tkor":"23.6","hkor":"45.7","batkor":"3.71","timekor":"21:55","tbal":"11.1","hbal":"56.3","batbal":"3.45","timebal":"21:47","tul1":"5.3","hul1":"99.9","osv1":"0%","timeul1":"22:01"} + + if (myObject.hasOwnProperty("tkom1")) { + tkom1=((const char*) myObject["tkom1"]);} + if (myObject.hasOwnProperty("hkom1")) { + hkom1=((const char*) myObject["hkom1"]);} + if (myObject.hasOwnProperty("batkom1")) { + batkom1=((const char*) myObject["batkom1"]);} + if (myObject.hasOwnProperty("timekom1")) { + timekom1=((const char*) myObject["timekom1"]);} + + if (myObject.hasOwnProperty("tkom2")) { + tkom2=((const char*) myObject["tkom2"]);} + if (myObject.hasOwnProperty("hkom2")) { + hkom2=((const char*) myObject["hkom2"]);} + if (myObject.hasOwnProperty("batkom2")) { + batkom2=((const char*) myObject["batkom2"]);} + if (myObject.hasOwnProperty("timekom2")) { + timekom2=((const char*) myObject["timekom2"]);} + + + if (myObject.hasOwnProperty("tkor")) { + tkor=((const char*) myObject["tkor"]);} + if (myObject.hasOwnProperty("hkor")) { + hkor=((const char*) myObject["hkor"]);} + if (myObject.hasOwnProperty("batkor")) { + batkor=((const char*) myObject["batkor"]);} + if (myObject.hasOwnProperty("timekor")) { + timekor=((const char*) myObject["timekor"]);} + + if (myObject.hasOwnProperty("tbal")) { + tbal=((const char*) myObject["tbal"]);} + if (myObject.hasOwnProperty("hbal")) { + hbal=((const char*) myObject["hbal"]);} + if (myObject.hasOwnProperty("batbal")) { + batbal=((const char*) myObject["batbal"]);} + if (myObject.hasOwnProperty("timebal")) { + timebal=((const char*) myObject["timebal"]);} + + if (myObject.hasOwnProperty("tul1")) { + tul1=((const char*) myObject["tul1"]);} + if (myObject.hasOwnProperty("hul1")) { + hul1=((const char*) myObject["hul1"]);} + if (myObject.hasOwnProperty("osv1")) { + osv1=((const char*) myObject["osv1"]);} + if (myObject.hasOwnProperty("timeul1")) { + timeul1=((const char*) myObject["timeul1"]);} + + + strdat=""; + myFile = SD.open("/thku1.txt", FILE_READ); + while(myFile.available()) { + + strdat+=char(myFile.read()); + + } + myFile.close(); + jsonString=strdat; + Serial.println ("jsonString"); + Serial.println (jsonString); + + events.send(jsonString.c_str(), "new_readings", millis());//обновление веба текущая температура + myObject = JSON.parse(jsonString); + if (myObject.hasOwnProperty("id")) { +String id=((const char*) myObject["id"]);} + if (myObject.hasOwnProperty("temperature")) { +ts=((double) myObject["temperature"]);} + + if (myObject.hasOwnProperty("humidity")) { + hs=((double) myObject["humidity"]);} + + if (myObject.hasOwnProperty("tim2")) { + tim2=((const char*) myObject["tim2"]);} + if (myObject.hasOwnProperty("tim3")) { + tim3=((const char*) myObject["tim3"]);} + if (myObject.hasOwnProperty("dataserv")) { + dataserv=((const char*) myObject["dataserv"]);} + if (myObject.hasOwnProperty("timev")) { + timev=((int) myObject["timev"]);} + +//{"id":2,"temperature":9.6733450317382812,"humidity":50.41815185546875,"tim2":"12:02", + // "dataserv":"12","timeserv":"15:30","munthserv":"январь",weekserv:"среда"} + +} diff --git a/esp327nrfSDWDT3/time.ino b/esp327nrfSDWDT3/time.ino new file mode 100644 index 0000000..c7488db --- /dev/null +++ b/esp327nrfSDWDT3/time.ino @@ -0,0 +1,30 @@ +void vrem()//время работы сервера +{ + +time17 = millis()/1000; +if (time17/60/60<10) { Serial.print ("0"); } +Serial.print (time17/60/60); +Serial.print (":"); +if (time17/60%60<10) { Serial.print ("0"); } +Serial.print ((time17/60)%60); +Serial.print (":"); +if (time17%60<10) { Serial.print ("0"); } +Serial.println (time17%60); +String q1=String(time17/60/60, DEC); +String q2=String((time17/60)%60, DEC); +String q3=String(time17%60, DEC); +if ((time17/60)%60<10) + { + t10=String(time17/60/60, DEC)+":"+"0"+String((time17/60)%60, DEC); + } + else + {t10=String(time17/60/60, DEC)+":"+String((time17/60)%60, DEC); + } + +//t10 =q1+":"+q2+":"+q3 ; +} + +/*char *time_buf; +int t = 2055; + +sprintf(time_buf, "%d:%d", t / 100, t % 100);*/ diff --git a/esp327nrfSDWDT3/timer.ino b/esp327nrfSDWDT3/timer.ino new file mode 100644 index 0000000..55d99a7 --- /dev/null +++ b/esp327nrfSDWDT3/timer.ino @@ -0,0 +1,39 @@ +void settimer() { + + +/* LED pin */ +//int led = 14; +/* LED state */ +//volatile byte state = LOW; + // Use 1st timer of 4 (counted from zero). + // Set 80 divider for prescaler (see ESP32 Technical Reference Manual for more + // info). + timer = timerBegin(2, 80, true); + + /* Attach onTimer function to our timer */ + timerAttachInterrupt(timer, &onTimer, true); + /* Set alarm to call onTimer function every second 1 tick is 1us + => 1 second is 1000000us */ + /* Repeat the alarm (third parameter) */ + timerAlarmWrite(timer, 5000000, true); + /* Start an alarm */ + timerAlarmEnable(timer); + // Serial.println("start timer"); + +} + +void IRAM_ATTR onTimer(){ +EpochTime=EpochTime+1; + esp_task_wdt_reset();//reset WDT +//Serial.print("EpochTime="); + // Serial.println(EpochTime); + // Increment the counter and set the time of ISR +// portENTER_CRITICAL_ISR(&timerMux); +// isrCounter++; +// lastIsrAt = millis(); +// portEXIT_CRITICAL_ISR(&timerMux); + // Give a semaphore that we can check in the loop +// xSemaphoreGiveFromISR(timerSemaphore, NULL); + // It is safe to use digitalRead/Write here if you want to toggle an output + +} diff --git a/play5.ino b/play5.ino deleted file mode 100644 index dcafdc7..0000000 --- a/play5.ino +++ /dev/null @@ -1,428 +0,0 @@ -#include -#include -#include -#include -#include -SdFile myFile; -#include -#include "GyverTimer.h" // подключаем библиотеку -GTimer myTimer(MS); // создать миллисекундный таймер (ms) (по умолч. в режиме интервала) -//myGLCD.setBackColor(VGA_TRANSPARENT); -//UTFT_Buttons myButtons(&myGLCD, &myTouch); -//#include -extern uint8_t SmallFont[]; -extern uint8_t BigFont[]; -extern uint8_t Ubuntubold[]; -#define imagedatatype unsigned short -extern imagedatatype cl[]; -unsigned short pic1[0x320]; - -#define TOUCH_ORIENTATION LANDSCAPE -UTFT myGLCD(ITDB50,38,39,40,41);//byte model, int RS, int WR,int CS, int RST, int SER=0); -UTFT_SdRaw myFiles(&myGLCD); -//int k1=2;//размер экрана 1-240х320 2-480х640 -int led = 13; -URTouch myTouch(42,43,44,45,47);//TCLK, TCS, TDIN, TDOUT и IRQ.Папа -const int chipSelect = 10; -int xt, yt; -int day1,month1,year1, h1,m1,s1;//время дата -char* str[] = {"MON","TUE","WED","THU","FRI","SAT","SUN"}; - byte dow ; - - -#define SD_CHIP_SELECT 2 // SD chip select pin -// file system object -SdFat sd; - -#include -EncButton btn0; -EncButton btn1; -EncButton btn2; -EncButton btn3; -EncButton btn4; - -#include -// создаём массив значений сигналов с кнопок -int16_t sigs[5] = { - 940, 900, 870, 820, - 10 }; -extern uint8_t SevenSegNumFont[]; -// указываем пин, количество кнопок и массив значений -AnalogKey keys; -//********************PAINT*************************************************************************************** -int color = 0; -word colorlist[] = {VGA_WHITE, VGA_BLACK, VGA_RED, VGA_BLUE, VGA_GREEN, VGA_FUCHSIA, VGA_YELLOW, VGA_AQUA}; -int bsize = 4; -//******************************************************************************************************* -int analogPin = 1; // определяем входной аналоговый пин -//VGA_BLACK, VGA_WHITE, VGA_RED, VGA_GREEN, VGA_BLUE, VGA_SILVER, VGA_GRAY, -//VGA_MAROON, VGA_YELLOW, VGA_OLIVE, VGA_LIME, VGA_AQUA, VGA_TEAL, VGA_NAVY, -// VGA_FUCHSIA, VGA_PURPLE, VGA_TRANSPARENT-прозрачный. -#define BIRD_BG 0xB5D6 -#define WHITE 0xFFFF -#define BLACK 0x0000 -#define RED 0xF800 -#define BLUE 0x001F -#define GREEN 0x07E0 -#define YELLOW 0xFFE0 -#define MAGENTA 0xF81F -#define CYAN 0x881f -#define ORANGE 0xfbc0 -#define GRAY 0xB5D6 - -#define BARDO 0xFC6F -int arrPins[] = {GRAY,VGA_BLUE, VGA_GREEN,MAGENTA,VGA_AQUA,YELLOW, VGA_RED,BARDO}; - - #define MaxX 7//кол-во кубиков по горизонтали - #define MaxY 16 //кол-во кубиков по вертикали +3 невидимых - #define SmeX 148// смещение стакана по горизонтали - #define SmeY 20//// смещение стакана по вертикали - #define LL 320 - #define interval 320 - #define razmer 36 // размер квадратика - #define NumCol 6 // количество цветов квадратиков - #define MaxLevel 8 // макс. кол-во уровней - #define NextLevel 20 // через сколько столбиков повышать уровень - - int MasSt[MaxX][MaxY], MasTmp[MaxX][MaxY], MasOld[MaxX][MaxY], fignext[3]; - int Level=1, dx, dy, OldLevel, tr, flfirst=1; // flfirst=? сменить для обнуления рекорда - uint16_t MasCol[]={WHITE, BLACK, RED, BLUE, GREEN, YELLOW, MAGENTA, VGA_AQUA}; - unsigned long TimeOfPush, Counter,Score=0, TScore=0, Record=0, OldRecord, OldScore, myrecord; - word tempspeed; - bool fl, Demo=true, myfl=false, Arbeiten=false, FlNew, FlZ=false, gmov=false; - int16_t VAL, Mp, x,y; - int16_t mmm [4][2]={{-1,0},{0,-1},{1,0},{0,1}}; - word MasSpeed[MaxLevel]={500,450,400,350,300,250,200,100}; // задержки уровней - bool valBtnL, valBtnR, valBtnT, valBtnPause, valBtnD; // Объявляем переменные для хранения состояния кнопок. - const uint32_t tmrKeyHold = 400; // Определяем время в мс после которого нажатая кнопка будет считаться удерживаемой (залипание при нажатии кнопки). - bool exit_menu=0; - void ViewStacan (void); - void Touch_Init (void); - void gameover (void); -// void GetNext (void); -// void but (void); -// void ProcDemo (void); -// void NewGame (void); -//void mydelay(int md); -// bool figmove(int dx, int dy); -//*********************************************************************************************************** - -// BIRDUINO - -//**************************************************************************************************** -//#include "flappy_title.h" // the latest version -//#include "bird05.h" // the latest version -//#include "pillar01.h" // first version -//#include "pillar_end.h" -//#include "bottom_deco.h" -//#define BIRD_BMP_X 34 -//#define BIRD_BMP_Y 24 -#define BORD_BMP_X 68 -#define BORD_BMP_Y 48 -#define FLAPPY_TITLE_X 190 -#define FLAPPY_TITLE_Y 51 -#define BOTTOM_DECO_X 600 -#define PILLAR_BMP_X 55 -#define PILLAR_BMP_Y 1 -#define PILLAR_END_BMP_X 55 -#define PILLAR_END_BMP_Y 20 -extern unsigned short pillar_end[0x44C]; -//extern unsigned short pillar[0x37]; -extern unsigned short pillar[0x6E]; -extern unsigned short icon[0x25DA]; -extern unsigned short bottom_deco[0x258]; -extern unsigned short bird[0x330]; -extern unsigned short bord[0xCC0]; -extern unsigned short udar[0xCC0]; -#define BIRD_BG 0x7639 // first value from the bird header file -#define TFTHEIGHT 800 -#define TFTWIDTH 480 -#define TEXT_POSITION_LEFT 50 -#define TEXT_POSITION_CENTER 110 -#define BOTTOM_AREA_Y 405 -#define BOTTOM_AREA_BG_COLOR 0x// 221,216,150 -#define BOTTOM_LINE_1_COLOR -// Floppy Bird -#define PILLAR_GAP 100 // pixels дырка в воротах -#define BIRD_X PILLAR_BMP_X // from the pillar header file -#define MOV_RATE_X0 3 // starting moving rate стартовая скорость -#define FALL_RATE_Y 3 // starting falling rate - -static int yP = 100; - -static int xP; - -static int yB; -static int movingRate, fallRateInt, steps; -static uint32_t fallRate; -static int score, level; -static int lastSpeedUpScore, highscore; -//static int screenPressed; -static boolean screenPressed, gameStarted, paused; -static uint32_t crt_millis, prev_millis; - -static char s[250]; // for sprintf -//static void drawTitle(void); -int life=3;// жизни -/*****************************************************************************/ -static int tick; -/*****************************************************************************/ -//********* TETRIS *********************************************************** -int arrPins1[] = {GRAY,CYAN , GREEN, MAGENTA, VGA_BLUE,YELLOW, ORANGE,VGA_RED}; - int figcol=0;// цвет фигуры - int figcol1=0;// цвет фигуры стола // - - #define pinSeed A0 // Номер аналогового входа значения которого будут использованы для выбора случайной точки входа в последовательность псевдослучайных чисел, для корректной работы функции random(). -#define GAME_OFF 0 // Одно из состояний игры (будет храниться в переменной state). -#define GAME_ON 1 // Одно из состояний игры (будет храниться в переменной state). -#define GAME_OVER 2 - /* Определяем настраиваемые значения: */ // -const uint16_t sumToNewLevel = 20; // Определяем количество фигур которое нужно набрать для перехода на новый уровень. -const uint16_t startTime = 1000; // Определяем начальное время в мс с которым фигура опускается на одну клетку игрового стола (начальная скорость игры). -const uint16_t changeTimeLevel = 10; // Определяем значение в мс на которое уменьшается время опускания фигуры с каждым новым уровнем (увеличение скорости). -//const uint32_t tmrKeyHold = 400; // Определяем время в мс после которого нажатая кнопка будет считаться удерживаемой (залипание при нажатии кнопки). -const uint32_t scrBoundary = 400;//68; // Определяем границу отделяющую левую и правую части экрана. -const uint32_t newCubeSize = 20;//6; // Определяем размер клеток в пикселях для поля отображения будущих фигур. -const uint32_t tableCubeSize = 30;//3; // Определяем размер клеток в пикселях для игрового стола. - /* Объявляем массивы и переменные: */ -const uint32_t Xsm=137; -const uint32_t Ysm=15; -const uint32_t tableRows = 14;//( 480-3) / (tableCubeSize+1); // Определяем количество строк на игровом столе (зависит от размера клеток игрового стола). Количество = (высота экрана - 3 линии) / (высота клеток игрового стола + 1 разделительная линия). -const uint32_t tableCols =10;// (scrBoundary-4) / (tableCubeSize+1); // Определяем количество столбцов на игровом столе (зависит от размера клеток игрового стола). Количество = (ширина до границы - 4 линии) / (ширина клеток игрового стола + 1 разделительная линия). - uint32_t tableArray [tableRows]; // Объявляем массив клеток игрового стола. Каждый элемент массива - это строки игрового стола, а каждый бит это клетка на игровом столе (0-пуста, 1-закрашена). - uint8_t figureArray [6]; // Объявляем массив для хранения вида движущейся фигуры. | Каждый элемент массивов figureArray и figureArrayNew - это строки фигуры, в которых биты 4-0 являются флагами наличия кубиков в столбцах стоки (0-нет, 1-есть). - uint8_t figureArrayNew [6]; // Объявляем массив для хранения вида будущей фигуры. | Последний элемент массивов figureArray и figureArrayNew - это флаг запрещающий поворот фигуры (0-разрешено, 1-запрещено). - int8_t figurePos [4]; // Объявляем массив позиции движущейся фигуры на игровом столе (в клетках). [0]: отступ слева, [1]: отступ сверху, [2]: начальный отступ новой фигуры слева, [3]: начальный отступ новой фигуры сверху. - uint8_t state; // Объявляем переменную для хранения текущего состояния игры: GAME_OFF, GAME_ON, GAME_OVER. - uint32_t sumfig; // Объявляем счётчик количества созданных фигур: 0-4294967296. - uint8_t level1; // Объявляем счётчик текущего уровня игры: 1-99. - uint32_t points; // Объявляем счётчик набранного количества балов: 0-99999. - uint32_t tmrShift; // Объявляем переменную для хранения времени следующего сдвига фигуры вниз. - // bool valBtnL, valBtnR, valBtnT, valBtnD,valBtnPause; // Объявляем переменные для хранения состояния кнопок. - /* Объявляем функции: */ // - void getKeys (void); // Объявляем функцию получения состояния всех кнопок в переменные valBtnL, valBtnR, valBtnT, valBtnD. - void showWelcome (void); // Объявляем функцию прорисовки анимированного приветствия. - void showGameScreen (void); // Объявляем функцию прорисовки игрового поля. - void showFigure (bool, bool, int); // Объявляем функцию прорисовки или затирания фигуры (аргументы: флаг [1-фигура на игровом столе, 0-будущая фигура], флаг [1-прорисовать фигуру, 0-затереть фигуру]). - void showTable (void); // Объявляем функцию прорисовки всех кубиков в клетках игрового стола. - bool createNewFigure (void); // Объявляем функцию создания будущей фигуры. Функция возвращает false если вставить ранее созданную будущую фигуру на игровой стол не удается (завершение игры). - void turnFigure (bool, uint8_t=1); // Объявляем функцию поворота фигуры на 90° по часовой стрелке (аргументы: флаг [1-фигура на игровом столе, 0-будущая фигура], количество поворотов будущей фигуры на 90° по часовой стрелке). - bool shiftFigure (uint8_t); // Объявляем функцию сдвига фигуры на одну клетку игрового стола. Если возвращает false если сдвиг невозможен. (аргументы: 1 - влево, 2 - вправо, 3 - вниз, иначе - без сдвига). - bool checkFigure (void); // Объявляем функцию проверки корректности положения фигуры на игровом столе (перед её отрисовкой). Если положение фигуры некорректно, то функция вернёт false. - bool checkTable (void); // Объявляем функцию проверки полностью заполненных строк на игровом столе (функцию требуется вызывать до создания новой фигуры на игровом столе). Если на игровом столе есть полностью заполненные строки, то функция вернёт true. - uint8_t deletTableRows (void); // Объявляем функцию удаления полностью заполненных строк на игровом столе (функцию требуется вызывать до создания новой фигуры на игровом столе). Функция возвращает количество удалённых строк с игрового стола. - // -/******ZMEYKA***********************************************************************/ -extern unsigned short apple[0x384]; -extern unsigned short zmeygol[0x384]; -extern unsigned short zmeygol1[0x384]; -extern unsigned short zmeygol2[0x384]; -extern unsigned short zmeygol3[0x384]; -extern unsigned short zmeytelo[0x384]; - - /* Объявление переменных */ -int Tail[115]; // Массив тела змейки. -int Choice; // Переменная выбора движения. -int nTail; // Переменная количества элементов в змейке. -int CoreX; // Переменная X-координаты квадратика. -int CoreY; // Переменные Y-координаты квадратика. -int xz; // Переменная X-координаты движения. -int yz; // Переменная Y-координаты движения. -int EndX; // Переменная X-координаты последнего элемента массива. -int EndY; // Переменная Y-координаты последнего элемента массива. -int del=600; // Переменная задержки. -int ycor; // Дополнительная переменная Y-координаты с которой строится и выводится завершающаяся змейка. -int aTail; // Дополнительная переменная количества элементов в змейке. -int Xk=30; -int Yk=10; -int grad=0; -int dispx, dispy, text_y_center; - /* Объявление функций */ -void ShowSnake(); // Функция вывода всей змейки на экран после выигрыша или проигрыша. -void SplashScreen(); // Функция вывода заставки игры на экран. -void GameOver(); // Функция завершения игры. -void SpeedControl(); // Функция регулировки скорости. -void MoveControl(); // Функция движения змейки и выбора направления. - -//************************************************************************************* -void setup() { - pinMode(led, OUTPUT); - Serial.begin(9600); // скорость обмена по уарт -Serial1.begin(9600); - // put your setup code here, to run once: -// pinMode(21, OUTPUT); -// digitalWrite(21, HIGH);//RD ITDB50 - pinMode(7, OUTPUT); - // br=constbr+brightness; - analogWrite(7, 200);//яркость экрана - - pinMode(14, OUTPUT); - digitalWrite(14, HIGH); //reset esp8266 - pinMode(15, OUTPUT); - digitalWrite(15, LOW); - - myGLCD.InitLCD(); - myGLCD.setFont(BigFont); - myTimer.setInterval(1000); // запуск в режиме интервала 500 мс - //************************************************************************************* - uint32_t crt_millis = millis(); - uint32_t prev_millis = crt_millis; - dispx=myGLCD.getDisplayXSize(); - dispy=myGLCD.getDisplayYSize(); - text_y_center=(dispy/2)-6; - myTouch.InitTouch(); - myTouch.setPrecision(PREC_MEDIUM); - - if (!sd.begin(SD_CHIP_SELECT, SPI_HALF_SPEED)) { - Serial.println(F("Card failed, or not present")); - - } - else - { - - Serial.println(F("Card initialised.")); - } - - - -} - -void loop() - { - myGLCD.clrScr(); - // char fname440[] = "SO11/SO100100.RAW"; - // myFiles.load(0, 0, 440, 440, fname440, 32, 0);// draw 440x440 raw (32*buffer) (non inverted colour) - myFiles.load(0, 0, 800, 480, "play/11.raw" , 32, 0); - - myGLCD.setColor(0, 0,155); - myGLCD.fillRect(0, 450,800, 480);//команд строка - - - - myGLCD.setColor(250, 0, 0); - myGLCD.fillRect(20, 20,70, 70); - - myGLCD.setColor(250, 250, 0); - myGLCD.fillRect(20, 90,70, 140); - - myGLCD.setColor(250, 0, 250); - myGLCD.fillRect(20, 160,70, 210); - - myGLCD.setColor(0, 0, 250); - myGLCD.fillRect(20, 230,70, 280); - - myGLCD.setColor(0, 250, 250); - myGLCD.fillRect(20, 300,70, 350); - - myGLCD.setColor(0, 250, 0); - myGLCD.fillRect(20, 370,70, 420); - - - - myGLCD.setColor(250, 200, 0); - myGLCD.fillRect(120, 20, 170, 70);//x,y,xkon ykon - myGLCD.setColor(200, 200, 0); - myGLCD.fillRect(120, 90, 170, 140);//x,y,xkon ykon - myGLCD.setColor(250, 150, 150); - myGLCD.fillRect(120, 160, 170, 210);//x,y,xkon ykon - - myGLCD.drawBitmap (639, 370, 160, 80, cl);//часы - myGLCD.drawRoundRect (639, 370, 799, 450); //Clok - kalendar();//календарь - ntp(); - kalendardat();//дата месяц год - - while (1) - { - if (myTimer.isReady()) - { - s1++; - if(s1>59){ - s1=0; - m1++; - if(m1>59){ - h1++; - m1=0; - if(h1>23)h1=0; - } - } - clc() ; - } - - - - if (myTouch.dataAvailable()) - { - myTouch.read(); - xt=myTouch.getX(); - yt=myTouch.getY(); - if ((xt>=20) && (xt<=70)) // Upper row - { - if ((yt>=20) && (yt<=70)) // Button: 1 - { - columns(); - } - if ((yt>=90) && (yt<=140)) // Button: 2 - { - birduino(); - } - if ((yt>=160) && (yt<=210)) // Button: 3 - { - tetris(); - } - if ((yt>=230) && (yt<=280)) // Button: 4 - { - paint(); - } - if ((yt>=300) && (yt<=350)) // Button: 5 - { - foto(); - } - if ((yt>=370) && (yt<=420)) // Button: 5 - { - zmeyka(); - } -} - if ((xt>=120) && (xt<=170)) // Upper row - { - if ((yt>=20) && (yt<=70)) // serial1 - { - serial(); - } - if ((yt>90) && (yt<=140)) //read serial1 - { - readserial(); - } - if ((yt>160) && (yt<=210)) //readprognoz - { - readprognoz(); - } - } -delay(200); - } - } - } - - - bool figmove(int dx, int dy) - { bool fff=false; - - if (x+dx<0 || x+dx>MaxX-1) return(false); // попытка выйти за стенки стакана - if (dx!=0) if (MasSt[x+dx][y+dy+2]==0) return(true); else return(false); - if (dy>0) // падение вниз - { if (y+dy+2>MaxY-1 || MasSt[x+dx][y+dy+2]>0) // либо на дне, либо на квадрате - {if (y<3) gameover(); - else fff=true; - } else - { for (byte i=0;i<3;i++) MasSt[x][y+2-i+dy]=MasSt[x][y+2-i]; - MasSt[x][y]=0; - y=y+dy; - } - if (fff) { MyScore(); - GetNext(); - } - ViewStacan(); - } - return(true); - } - //================================================
+ +
+

ESP-Домашний сервер

+
+
+ + +
+

Улица(восток)

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+

Улица(запад)

+ +
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Комната1

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+ +

Комната2

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Коридор

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Балкон

+
+
+

TEMPERATURE

°C

Battery

+
+
+

HUMIDITY

%

Time

+
+
+

Кухня

+
+
+

TEMPERATURE

°C

Light

+
+
+

HUMIDITY

%

Time

+
+
+ +

+ + +
+ Время работы сервера: + 0:00 +

Count:0:00

+
+ +
+

+

+

+
+ +
+ + + + + +