From 27fee869239fd450d4e74274517827825602433a Mon Sep 17 00:00:00 2001
From: Matthew Kennedy
Date: Fri, 4 Dec 2020 23:01:24 -0600
Subject: [PATCH 1/3] add indicator for tps2 fail (#2016)
Co-authored-by: Matthew Kennedy
---
firmware/console/binary/tunerstudio_outputs.h | 1 +
firmware/console/status_loop.cpp | 2 ++
firmware/tunerstudio/rusefi.input | 2 ++
3 files changed, 5 insertions(+)
diff --git a/firmware/console/binary/tunerstudio_outputs.h b/firmware/console/binary/tunerstudio_outputs.h
index 9a1194ee4d..b01548a12c 100644
--- a/firmware/console/binary/tunerstudio_outputs.h
+++ b/firmware/console/binary/tunerstudio_outputs.h
@@ -78,6 +78,7 @@ typedef struct {
unsigned int isPedalError : 1; // bit 26
unsigned int isKnockChipOk : 1; // bit 27
unsigned int launchTriggered : 1; // bit 28
+ unsigned int isTps2Error : 1; // bit 29
// RPM, vss
scaled_channel rpm; // 4
diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp
index 2fa2a3fd1f..74e7c0db1d 100644
--- a/firmware/console/status_loop.cpp
+++ b/firmware/console/status_loop.cpp
@@ -491,6 +491,8 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_
SensorResult tps2 = Sensor::get(SensorType::Tps2);
tsOutputChannels->throttle2Position = tps2.Value;
+ // If we don't have a TPS2 at all, don't turn on the failure light
+ tsOutputChannels->isTps2Error = !tps2.Valid && Sensor::hasSensor(SensorType::Tps2);
SensorResult pedal = Sensor::get(SensorType::AcceleratorPedal);
tsOutputChannels->pedalPosition = pedal.Value;
diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input
index 7b694e8636..a21df51f53 100644
--- a/firmware/tunerstudio/rusefi.input
+++ b/firmware/tunerstudio/rusefi.input
@@ -204,6 +204,7 @@ enable2ndByteCanID = false
ind_hasFatalError=bits, U32, 0, [24:24], "true", "false";
ind_isWarnNow =bits, U32, 0, [25:25], "true", "false";
ind_pedal_error =bits, U32, 0, [26:26], "true", "false";
+ isTps2Error = bits, U32, 0, [29:29], "true", "false";
; RPM, vss
RPMValue = scalar, U16, 4, "RPM", 1, 0.00000
@@ -1143,6 +1144,7 @@ gaugeCategory = DynoView
; error codes
indicator = { isTpsError}, "tps", "tps error", white, black, red, black
+ indicator = { isTps2Error}, "tps 2", "tps 2 error", white, black, red, black
indicator = { ind_clt_error}, "clt", "clt error", white, black, red, black
indicator = { ind_iat_error}, "iat", "iat error", white, black, red, black
From 1f93fbb580794f82a83721c4714f98fceb0026ed Mon Sep 17 00:00:00 2001
From: kon
Date: Fri, 4 Dec 2020 21:02:14 -0800
Subject: [PATCH 2/3] Website fixes (#2015)
* Auto-generated configs and docs
* Auto-generated configs and docs
* Auto-generated configs and docs
* Auto-generated configs and docs
* daily builds added
* website improvements
* more website updates
* fixed layout fuckups on mobile and desktop; added proteus link
* fixed table, updated icons
Co-authored-by: GitHub build-firmware Action
---
misc/www/index.html | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/misc/www/index.html b/misc/www/index.html
index 7c4970ef54..da1fa39195 100644
--- a/misc/www/index.html
+++ b/misc/www/index.html
@@ -186,32 +186,32 @@
|
- 20+ OEM triggers supported |
- |
+ 20+ OEM triggers supported |
+ |
- Automatic Transmission Control |
- |
+ Automatic Transmission Control |
+ |
- Direct Injection |
- |
+ Direct Injection |
+ |
- Flat Shifting |
- |
-
-
- Rotary Engines |
+ Flat Shifting |
|
+
+ Rotary Engines |
+ |
+
Supported
- In Development
+ In Development
Currently not supported
From 9892f0fa48f0a67e58f824132dc24ca78d96115a Mon Sep 17 00:00:00 2001
From: GitHub build-firmware Action
Date: Sat, 5 Dec 2020 05:05:04 +0000
Subject: [PATCH 3/3] Auto-generated configs and docs
---
.../controllers/generated/signature_all.h | 6 +++---
.../generated/signature_frankenso_na6.h | 6 +++---
.../generated/signature_hellen_cypress.h | 6 +++---
.../controllers/generated/signature_kin.h | 6 +++---
.../controllers/generated/signature_mre_f4.h | 6 +++---
.../controllers/generated/signature_mre_f7.h | 6 +++---
.../generated/signature_prometheus_405.h | 6 +++---
.../generated/signature_prometheus_469.h | 6 +++---
.../generated/signature_proteus_f4.h | 6 +++---
.../generated/signature_proteus_f7.h | 6 +++---
firmware/tunerstudio/generated/cache.zip | Bin 971805 -> 972175 bytes
firmware/tunerstudio/generated/rusefi.ini | 8 +++++---
.../generated/rusefi_frankenso_na6.ini | 8 +++++---
.../generated/rusefi_hellen_cypress.ini | 8 +++++---
.../tunerstudio/generated/rusefi_kinetis.ini | 8 +++++---
.../tunerstudio/generated/rusefi_mre_f4.ini | 8 +++++---
.../tunerstudio/generated/rusefi_mre_f7.ini | 8 +++++---
.../generated/rusefi_prometheus_405.ini | 8 +++++---
.../generated/rusefi_prometheus_469.ini | 8 +++++---
.../generated/rusefi_proteus_f4.ini | 8 +++++---
.../generated/rusefi_proteus_f7.ini | 8 +++++---
21 files changed, 80 insertions(+), 60 deletions(-)
diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h
index c60dba7859..a6ec481b36 100644
--- a/firmware/controllers/generated/signature_all.h
+++ b/firmware/controllers/generated/signature_all.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD all
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 768848914
-#define TS_SIGNATURE "rusEFI 2020.12.04.all.768848914"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 8640608
+#define TS_SIGNATURE "rusEFI 2020.12.05.all.8640608"
diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h
index 4b9c6775a1..f8b2686dbb 100644
--- a/firmware/controllers/generated/signature_frankenso_na6.h
+++ b/firmware/controllers/generated/signature_frankenso_na6.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD frankenso_na6
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 3148023273
-#define TS_SIGNATURE "rusEFI 2020.12.04.frankenso_na6.3148023273"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 2532534683
+#define TS_SIGNATURE "rusEFI 2020.12.05.frankenso_na6.2532534683"
diff --git a/firmware/controllers/generated/signature_hellen_cypress.h b/firmware/controllers/generated/signature_hellen_cypress.h
index d688e48510..7ab3e967b1 100644
--- a/firmware/controllers/generated/signature_hellen_cypress.h
+++ b/firmware/controllers/generated/signature_hellen_cypress.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD hellen_cypress
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 3827438289
-#define TS_SIGNATURE "rusEFI 2020.12.04.hellen_cypress.3827438289"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 3379723939
+#define TS_SIGNATURE "rusEFI 2020.12.05.hellen_cypress.3379723939"
diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h
index 7d902a4233..f131349e1f 100644
--- a/firmware/controllers/generated/signature_kin.h
+++ b/firmware/controllers/generated/signature_kin.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD kin
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 3040749611
-#define TS_SIGNATURE "rusEFI 2020.12.04.kin.3040749611"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 2557363289
+#define TS_SIGNATURE "rusEFI 2020.12.05.kin.2557363289"
diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h
index 886e0e9d48..54f5645269 100644
--- a/firmware/controllers/generated/signature_mre_f4.h
+++ b/firmware/controllers/generated/signature_mre_f4.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD mre_f4
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 973302379
-#define TS_SIGNATURE "rusEFI 2020.12.04.mre_f4.973302379"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 391317017
+#define TS_SIGNATURE "rusEFI 2020.12.05.mre_f4.391317017"
diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h
index 1c12889918..519b1dce4c 100644
--- a/firmware/controllers/generated/signature_mre_f7.h
+++ b/firmware/controllers/generated/signature_mre_f7.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD mre_f7
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 973302379
-#define TS_SIGNATURE "rusEFI 2020.12.04.mre_f7.973302379"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 391317017
+#define TS_SIGNATURE "rusEFI 2020.12.05.mre_f7.391317017"
diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h
index 0b0739f80d..6cf89b4b65 100644
--- a/firmware/controllers/generated/signature_prometheus_405.h
+++ b/firmware/controllers/generated/signature_prometheus_405.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD prometheus_405
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 1863037507
-#define TS_SIGNATURE "rusEFI 2020.12.04.prometheus_405.1863037507"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 1113316913
+#define TS_SIGNATURE "rusEFI 2020.12.05.prometheus_405.1113316913"
diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h
index ce02f29082..70cb8cac28 100644
--- a/firmware/controllers/generated/signature_prometheus_469.h
+++ b/firmware/controllers/generated/signature_prometheus_469.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD prometheus_469
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 1863037507
-#define TS_SIGNATURE "rusEFI 2020.12.04.prometheus_469.1863037507"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 1113316913
+#define TS_SIGNATURE "rusEFI 2020.12.05.prometheus_469.1113316913"
diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h
index 72ede37482..5f71b44601 100644
--- a/firmware/controllers/generated/signature_proteus_f4.h
+++ b/firmware/controllers/generated/signature_proteus_f4.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD proteus_f4
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 3833200332
-#define TS_SIGNATURE "rusEFI 2020.12.04.proteus_f4.3833200332"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 3374944958
+#define TS_SIGNATURE "rusEFI 2020.12.05.proteus_f4.3374944958"
diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h
index 848d2b6ebc..47d1820b60 100644
--- a/firmware/controllers/generated/signature_proteus_f7.h
+++ b/firmware/controllers/generated/signature_proteus_f7.h
@@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD proteus_f7
-#define SIGNATURE_DATE 2020.12.04
-#define SIGNATURE_HASH 3833200332
-#define TS_SIGNATURE "rusEFI 2020.12.04.proteus_f7.3833200332"
+#define SIGNATURE_DATE 2020.12.05
+#define SIGNATURE_HASH 3374944958
+#define TS_SIGNATURE "rusEFI 2020.12.05.proteus_f7.3374944958"
diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip
index f4f8e960339aac0d5bf286bb086431921f7948fd..394971eca3cfc32b5e48222e2705a77c8641a62b 100644
GIT binary patch
delta 287230
zcmZ6wWl)}7tS*eZ6?Y0P?i6=-Eydm4U2mj#ai>6WcXxPjhX;3ecbD_-{hdGO`;o~?
zuFN&FvND-TR#pjLY&l=RZ^++Jzo8po=#ZdeXhKpMkzjrxuVarH{9kEirGk5K{9nk_
z2ZrPSfeL(JGGYD~5)1hMK~AY~rqI~`5vt^G;)3&%ARy%0p&;-fzCffh9iou@KQu=1
zu&}5=;UMPUq<_t&NCe&fyL>uOzxe-%Fu!*8ewWGo%>|nBt0
zO~@IzbyN)gP{Txe9t}n;PMoKS9ls6>zldn1XXMry=7}|St?Jdo#Mm{CFqJW!6M`iV
zKcCxl+ekOX4NITrY3Qa5GrW)UvQbc;d?#vaT#=!yo6Xcj|oR*$b5^S}rqqUo-fCh7w3q{U92Ui{NARfk;N3
z7k)uG3?GS=gJS!T&3W|Zh}?Cna^%z@b^b+IS3P!`6_;#GAmr#k1k+vX_3Q-woC)$r
z10QirtkPsR_YdxK{R*>g%CeU0dkPw00b~YnGuUWrh+rB7oJ-G>Bfz(P{&Kb3FUs^#
z8-TU#GTswEFu6$NPE(gItk;@_afQ3>CAfGQT%_?_VTK^-OAav$=bLT`_HBmIzp>?gioUqL@
zhQ47lz)#AE1kSh7XV11Eiu_fA=GEV2@XJOnp^Y!!
zrGZ_(q@uoEmAkRgrD8-WZLM{rOR7QR{^&E)FsH8cfu}K&Bf-;}v}6pZx$hdGkb;zv
z_e&|a61NT-~zr1?nCSrOegfpTCE22R0TXCAJw^2Q_^5&l=dTz`S0
zEHf;ws=~Xf;i4Krxz61%KUfN`vE`+jnVs9iSlFr7y*he%ewTYco~k?OBOspANa!P|
zb;9V@fIS!9jGwGS^WlL32f;ku*jBZ%?-17(By&3Z^L@$N3OW_OS1`
zqi;?t%?tl_{|5jU6rC!#g-H6U)tKq1dnJR~#>hHB+^oE2_&pa&ElJhPr*b11y#l!P
zim{T?(Not9a(0lz+I%6|7E9tp>2SPIIj54BKG|;Cy5a(XX~_UXHy2%J^y=i{!H5@qw37`dpK5p$1!0et}m*O
zG7WziSPr1l9|Bi;vX3~(v#g|ruS}#eq$j!JT7cv?{~YCNAttL~+#iF8yIHqY_P2hP
zxn@K37ehmd>qM7g+HSM;&P#dQ>Eqk)mfijZiOcV?H!^ewiliYL
z^j0^;Pw)5wGRM-{hbM)+&ysOOT+OeznU_IWSozdF|8e{elb++sFJrM50czdXQb&^i
zVKUx?ee~`t!)Flx!8#O)WZzd7=h%fc>0qykgIT2p)oi3D-O}V@c*ez5frQw67z*5;
zVB;pGnwMMKv21?*AfgAUsb-?{FkL>*GsCYV?$UTq2rW6(bXw)GlE2(Bym$-xFn4cC{9eH38xC!wzo}(X)nN>#HVo
z_^bV2i0o4zFGXR%gaFOTKk}z5)B-(Q8{bCQ-j4J}y4Ign(?p#+VYz*+Emt4p&*{6N
zdGlNOTFQ!axb5y^*GzMfCTFE834@*4CV~kfaI=`^+n2Vo$$a*SRP6eZvLV1@RB$UA
zKNM+L53gHcl_{DiheiMvT3E^`Qp52V#C3EeTh2M7_VHCiL(<%km9mMq8+9=#bCP++
zi>XaLe$oTn80E@{x2_*wb)I*Mef*&7`YO>D6Lpaz-Rv-9=aBoMU||iLv{}1tyPM@5
z3jd|MN1metv5sZ)&YfbRo*&S8VyaD{pO^2TKv(QG*kYwmq2YG5K<
zYqzpU0Eq97M`E$_A7C&O`5N02_#~QX407|JA=If#plp9~9@W?Yq^-P2Uq}D$-}qld
zTg`rP{!n>UkUPHIs69Y_SbUS-Bznk?8Wy8)qpA2kEJfkvTmQQ#gnb9X98rcy=B{v&
zYmnju`RR>G_CSa7_B3g{T9vI^a^&rv^7fy0U5Z+rdR9W?36NBwmTy{lPiZ62Xlhq(
zdd^E}vq-DeE;+JtDz~uFVY=F_D=!EyBmSxnXo$`6$92wDVPUw-J{^{BGc?mYme)kJ
z>sfBk2NF4HAuo>^;Cq~T?t;^*TTkQl){K~So|xZvJJmF!4BZKK+}Ltkn57ND)9S|H
zCTJA9zfh5!0ECh6fEc$4_h`Yu3lo&3{Fmw1$NY`r>oEVvpBokdEo4u_bKg8FQ%Swc
zaS@m04(c}}Ouzgq`uu@%(b7lbz0YXO&-ZiuJ~8F=>a7597v!FCA&qRH^LScRurupm
zM0FOPjPfuFdIY^mXTu&TJ-MWD>TeC$?OCCQKC8TR0z23e+>>?=*UZ${sFlZM*)q?b
z7_Ysh=;Yf|T5HoY;K&=9By*cth#^lwSf$t*Z``a1BL{t3zDt?**e=QH>DG(DD(U?4
zk&P_4C^Z%zv5uH$fvA(-Q0;$3KjvIQ3FRahsS!UL);W}WmA$DSEw_vpzB)Z!Q)h9Rat0PN%+lb+)bhP%6!1Ct)<&vH-%
zg!%W37jhkC_b7R(AhwoFC(E-$FJ{oJj<=DK_~UyhNxqNOUmU$TGtl9Qi9ipo>sJHD
z({!jkWWo7Z9rIVVu3rA4>%5zvy^04*KX|ztH{h~}TQeUFhm-n$C^HXQcyh~I5$}%p
z`HzWwSY7cyrwwN*Vc|v{Jv^-3h!WiS><-@^5VlSDtQeON=>#3u;ZK
z*@aJ+a`^Ighoec5C8!x+yJFxMdf;~H8Wl9fGxUAn>K7aquKfP)@kSdnorG@sCk}B+
zpKe&raO`g}WWAYx&d-RL`J7Qi=%e-_@6&b}9S51@=z@ah13%
zxEY+Xzn!ubH9fjAC6=uTagpNiK7>t4R7~=Wyn~rkvE&3m-y>#!WpRF9pR#$1G#c3i
z7*s+Ar{=SyuOys(qt63E!vy7TS1zb=wLhVOywr5Vy=C?uAPDZxoOMIF^teYGRhUf-R+fFMu?mtU
z1w$wqZaO@Cy|A67ImoirOMfmvy%A0~e5~#{kb}~^Yb40}>K_o__LV(n0N7$&t?)bu
zO+ZGq)M7N7e(j%8i&*$&9Y8Om0$r18zJ6Q{O$SEH}cf40xb|tfb|C*+`p$d`;kt66`7uxjf6Pex68o5av
zdPNDChmeDXvq=$S)^7_H;rR7m4fQ+Wg!4ze`tsc2KjL!fqV$e+-m|AjR+(#wGtFcU
z=6DL?I3~A+B8e|JTmI5TYm~krD}ajcB#u0kYrVJHqBoI$s-OQAxIK^~`vxn>`4e*G
z_tE}`+q|(`sc?wXY6lj6g%+AXDt+Z?Ju3m=LWS)l3O$-C#x)-R{8Q{ovKV;^_QOgm9RuuNjQ48N)NIBp}s;h@%inP>kubIqZf`giFr#466dx4c|Ht#?srY|M?(I5pO{j9G
zA$)k)7X#eHB7k@}dM;sgKRuY}a
zwH*0C-0xqJ?@H4U=a8!(Vz^Ax#W6x9<42VW&voOG8~qY?1G`N#LZU#act_$m$@l)m
zh@E&7U$XdtMa*O&btY2%{_zKDs}S%+PcUaSGqb5
zh=nBid`9M7|IYD0GcS$S}FA2{$u-=P@Mkqs5|~s>9EUi2nNaSM@VkCU)QAaAy=TVRj=z2wr?S-kDV3(kwF_s*OM$=N
zjJn^9d-9Rvz(0VjDuhn1+>?X0T=PHS=Ad0|qFS7XLMsjSj5r$QbpfFp}Q!Gv)u+)hOpSEB+*jk
zbpU0s$m=q?;#S{ecaYR*V_`QoPHVF`_2RyqrMQqxs3pCCgD1U^j3w=CLMnfpJGj7F$K<>N@FrB5OLy$F@OFQ5Qls&`bP%8(#
zf}(}ao2rO-R2&AB2A>3>d%E|ZR5Q1Ysef-qiJ^fIB&4w;^;t){>6e(5XB#ZiZu#Z5Z9D&;F9+^
zw(c53S`;R}9Q(6(88RGTeClMvz=&t~L?|Ngeci4m{O(!Vfo`AXx%Dio5=#2>tZ%EL
zS`pe#4QZJB=dS>^7@YKZ`|Y%$Lu5k3e>nzG-vqul*&;*FemFfIxja^cHJO+HlwYwk
zmSBB%b>Dck@}2oy6LJb45v?OZRA>?eNUQb-oXYXK!DF)K>7%_sp>1^Og}h#T-B!L8
z=R0WsN%QI8SFik$?GK3DutPhUmwvE5l(9Z!;*((I
zt44#JjL-h!zs}>oD*l1S+RY){6*g=c%Fa;A=~LeV03tp2h>Swevn%(duv*$^|xK!hr?cg-sI%zdvyR)H{8ohW?A`x4i9J~^rekKg#?}cYHDQk&5&;>-DngU;f_u|i$14R+X^dm
z_Tko<<@D)}cFL0D3;T&5G0;Y%f_y40f-?wyPOZnp9%_Z8p4m2gEcVBVa}w=A1fK)Z
zVFqwLN{B(+GWEfait^u9B18VQ(fW+N{J__xzNW}1Q8RVNQ6fX7x8M!D@i^bp`se#(
zHzlaRJn76eNe8ojnS98XprnbHAYx^U&N!dK(9E!(O1TN27ji0UVc4oi+g)y4);lPD
zA+etf(z#Iar_{T6oGU9BBgt4vc5MZUXY~K`1kIHejQK@9&>uS&=LY|T#C`WavdEnr
z2-LgCnw&c%dHtRV)1uV&71THkUi!olNw`$&h-A6tWLU7u#%xeqa!}ff
z={^?1@l*VHtxZ@QF9wP2&f~dZF9rg4`CowLYwE0H?aS-K1Mvs3geP5~dnu3?!rgV%
zxwvctd5MqCipt*>5Jv5ACCQGkDXXDT%#Ws2Fg3g2xDti;^oBG1$`Wxo8`o(J&09Af
zDuojJZ#&8f^J*##Qu$4b_+otl@|gxPBv4L9M+cPxl_Y5=p!}K`*M1>Npya-P7sSJf
z*VWBqHtDL_#om7pQ4@}vZv;5sa{J2HJ1SO`wOa%aU=w1vImDF^qJO+*lSpu>;Ewkj
zCCo_&%sUfI21)6wB!Ovvix{8;a(c!IH;GS%aP5)DL3=^9VuHH{th)+ebl#FFc|ngB
zDKOx13N+k4mN7@XFjX-;qfwp!#cIHXCyX$x8vuH9hvo_89RsOw
zO#N7fTS0C4iu*$5lV*Mu7dJ=5xHHeE-VLFZviC3K2pa(Bk=Gm@`i+D~zdX;1Hns
z8Un=w{ew|fEs5K6a--8^;}Qoo@M(ZA->Eun!pN56N6A2YpEgm>se|<)RYjEk4^$(^
zI^Vm2UiPSi8I?ND7T{y8LwOm-hIm}*LfNjPSPydIBAb`rw<)9KfyKqMq5R#A=O~9?pgDmC(RumJ*YfqmDx`Gu3jQpDCq2qC&^p~
zC?WI|Vm=5yF&dhW_nvWV$LcL~fJGm2jBs$ooiam**LB
zx8)n+A;x$W2*O1vq5S&?Arm1=h!lqQK+eHz+|SDeML_KcuCM|l7dyb7&;=64_f9Qk
zUfXPBLe5%e>dX38IT1hGKc?Vc?YQv1^^DBO>C>oR8(AHd#*xR(87z>sHJA|_C3RIF
zFe|vmob#3Z^5^4Qv@lG_W?f(ViMeMx1uy8N
zc2<2@jj4G#U>KQKQuNs6J-wVVQsw_>Jk?5C4+)Emon9VY1@dH1Z|bEwvyy3hyE(pUnWc69EMOe1BDN1Wjpve*Ye(zYA!I)oa-;RLMG)ryr)s5aT9BGKDHK
zTOIxWb%W%r(MW5KEGF8X;BEZ9Fq&KfAs;DmaW*>N!&>LPilC>l~IEMp>LZHSb;r
z#~5uxxl3o{E_>o`Uq>DqYg&X;)(Cqc#I|O{-ZbXW-#-br_031-;zF=#4K34?2ob(C
zmgc~<59?olcUYclk&&Y-N?wuB6%GwOe!DdAjF}c^x5HwE=Lh>cn&3fa0Ob51y@~|N
zq;Nf79y9%X>C@Ed7qk_1M7uGORi<1!t`ppS-sl|=R4QEsFBG2;ab}+~!R~lP@VuCQ
zvF~1+x3CYGM%d+$fatGS6lH=jg>_+eg9IQx#yIw=^Y`h#ZsJpmwn4Oo
zm_;?bOz1U(Za?@Jkvym5-4QK1mwM0#!-d6Oxky6{K7(arB4NpiPPF_{7gly0mlHsU
zC3P&`;bzBW1NB|j4`bbJzuvs(R)9!k;VaaW9{zYF(Pz>C9=gM-s&5vGR1p)~wD_9S
zZb7ze;7j=S#*4T=dHkjP9v#Iv{RkO2JMbhEIv!D+))k54G(nK9n^%j)U=r#5M->o~9+zgNcbw@STWMQu_Youa)GmlbeLZ({6wfWz
z*oJn^+7==x76`L`EdD~~{}|H=Yzmxgqdr?$yeD2SKWlxy`!u<~xG~Xx4Bdsa^7@-Z
z|m)ImWxRB`Bauuzc{(1qL{anXTWD@CCEAd
z(EuYaDfZnHz}e-HV8Kw(XV2*X-*d|i9YOIH_1n-({eYrkLk7mw~>?ydKN|qAv=!c-d|Au2X+n?
ztPjg2$G68H7wt|NFos321>DPmq7}ar
zrmYRYwY92j9r)~jOofdyg7M8+ShKTc_zF#vA7bHKrULogh>|=o0R}V;+6&$Yv=X1e
zuMnY^x6jsrhqy>5X*0=KdHVfmU+u_6S6QMm6^F3G8&ZHmye3vqUu)E#nozjyH&ux;?&L{ymoTDZaenMXe@??>6Ps?6oRYYw}WU?Bt2<*
zhUb>IJ0LT#Xvq;hL=T_MMcBsMS*g?%kD=XcJC*ayZ{_?3(D51c`F9}I|Ga?gha+K}
z?W37a*_4g14)_BeNV8G4O5%uw)Kau(m-pYkx2n;FHjeDA#S{`k%+Yt)_ea;#KyqTn
zN%Pz!Qn{5oil~WK^$x-${{zoa0kf|OqKHz2vdfVB_QsF_%f+px#Ymsq@0Kp_o=DcW
z%w|9fmIaW3FUH1`^$EB>H7zlqG`r6Pj~YvFko(p=rfqNc7+(6u2!w-_|LuJ9z{Q1q
zHq2#$>^?^jn4(uLhlex+5qkhiB^TOIg9RyId3ge=fzW|y0KiRP*!R#_mon@NVDSxL
z5<*54QY`YsG4eOqK&YNe8#EeameZ0qFQ<)RAteA%%zE;+NIY1^$981?tQvZ3Gw6r1
z)AgKQna4I%Ll(##4S8}$)v;&lUG9*RIThTuUpjIohw=n##LBJd44Jfzu;?h{Kf&)o
zjPeDSrSI#iGs_2e0RCYCW%`3B&
zn)(YwMOH2JmY4M$3@s)JQEhSE?+|cQ1bST!8#V;?vG~t9qkZezqLNoB2}aS=6s_6B
zN^0&9k!ODL>&Q@$SyBV
zUJ>X!-JGi=b4|yXwpTisWsT`HWWSm3Ge-bSl8k3q+iJUkPk=OI;`4Uv`ORV027lxo
zHSyK_W+8M$$Nc6YbY#{1rV};sGJS-Pi0U$J4shaNu;O>6&I&&Lr-VW~PLV@h9YJ|Br^h0*93~}tE>qrS{UNEfy+30xM*bNhQ
z2p~IDs%Ql-)?O`Wr*n9|;%;cy*TY@*^y=7zEo^l*T`dq6ad-wsH&6bo1hwb2+Qkqs
z`d3y5oGirf$|4NkyE!t}IZ!N~10_0Wjlp|vd?zVlV_&`2W7_tW>7@0W^X++D5fT>9
z|AUhQ|36sl|H25iwjBS3=f9iWWRSSgJ6uTqryJ!3K_iJ!Jy`Q5ya*H2F1F?7r-Eny
z?gerGHsJs(B$?67uhi?Aq8k2Qc4b`^_Z82#QRaeK`anw^9(Dg`&knlO`k2b6^P12p
zY4+V1EIH2?hhGRWANcw)aDCS1K@m*xhqyA$VaLY{lq}JO^3vV(u6-}T8IsL;W+z;=
zvByvEE*6`wOPB8jOanx|Pu$MefvYIHd>wD6u`_X?FAX76>xol-8XwJLr~71oKZl}r
zqeMT}gaObQe_Jn>{O#9Ew{Tl#D6X-@kY1ZU~x$Xa|`JfcyY~R1^R0{>c
zpf3n3KhbHm*!H!y%@RJSvB>(Vo|Tk{j5+^L?L?376M($5ilzNqA~Dw6c5V8>;4ss!
z+f2q2C)n%gQSgf^W|0x+q=p(-P*>Y%?q;2V6Mo9T+0hf$v(ME_m;SzacTu(;EZk5Z
z3t%b~PI(1Zu9*8YtVl1qrb`bmRF!x3UMBm8)|P+qbT&OC=SFTYwOjXlCsLosM>llW
zi(O_%ZUrCzUvB_;oJ`Zg-OtP+_1pK?4@=!)<;%zgv)AXbrnw
zca$`X{IT1_=&>SdPH!!-g>|&sx3-@b?m*70;D&cun%9j&f99cF^DS
z>6mJ&TsGl4Ytv0Z>N?AQ|8H8!wyFGTA$hp}W4?F8-%g)%0TPe7hzdez{ZsHH(zAQHKl#pG0Z2jf
zdx(A$p4FUXU`pUd);NB0?H*_kiDu*He-EM^!b?5O|0v!j{84g~x3j&yfLgy>81y>^
z