From 69cf0fd59926cacac55c0348a7d4a42dad5de00c Mon Sep 17 00:00:00 2001
From: Shuzhen Wang
Units: A pair of zoom ratio in floating points: (minZoom, maxZoom)
+ *Units: A pair of zoom ratio in floating-points: (minZoom, maxZoom)
*Range of valid values:
maxZoom >= 1.0 >= minZoom
*Optional - The value for this key may be {@code null} on some devices.
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 0ee748287fa2..6905f83104cd 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -2180,27 +2180,66 @@ public final class CaptureRequest extends CameraMetadataBy using this control, the application gains a simpler way to control zoom, which can - * be a combination of optical and digital zoom. More specifically, for a logical - * multi-camera with more than one focal length, using a floating point zoom ratio offers - * more zoom precision when a telephoto lens is used, as well as allowing zoom ratio of - * less than 1.0 to zoom out to a wide field of view.
- *Note that the coordinate system of cropRegion, AE/AWB/AF regions, and faces now changes - * to the effective after-zoom field-of-view represented by rectangle of (0, 0, - * activeArrayWidth, activeArrayHeight).
- *For example, if {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} is 4032*3024, and the preview stream - * is configured to the same 4:3 aspect ratio, the application can achieve 2.0x zoom in - * one of two ways:
+ * be a combination of optical and digital zoom. For example, a multi-camera system may + * contain more than one lens with different focal lengths, and the user can use optical + * zoom by switching between lenses. Using zoomRatio has benefits in the scenarios below: + * Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides + * better precision compared to an integer value of {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}. + * Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas + * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} doesn't. + *To illustrate, here are several scenarios of different zoom ratios, crop regions,
+ * and output streams, for a hypothetical camera device with an active array of size
+ * (2000,1500)
.
2000x1500
(3 MP, 4:3 aspect ratio)640x480
(VGA, 4:3 aspect ratio)1280x720
(720p, 16:9 aspect ratio)If the application intends to set aeRegions to be top-left quarter of the preview - * field-of-view, the {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions} should be set to (0, 0, 2016, 1512) with + *
Rect(0, 0, 2000, 1500) // (left, top, right, bottom)
(post zoom)640x480
stream source area: (0, 0, 2000, 1500)
(equal to crop region)1280x720
stream source area: (0, 187, 2000, 1312)
(letterboxed)Rect(0, 187, 2000, 1312)
640x480
stream source area: (250, 187, 1750, 1312)
(pillarboxed)1280x720
stream source area: (0, 187, 2000, 1312)
(equal to crop region)Rect(250, 0, 1750, 1500)
640x480
stream source area: (250, 187, 1750, 1312)
(letterboxed)1280x720
stream source area: (250, 328, 1750, 1172)
(letterboxed)As seen from the graphs above, the coordinate system of cropRegion now changes to the + * effective after-zoom field-of-view, and is represented by the rectangle of (0, 0, + * activeArrayWith, activeArrayHeight). The same applies to AE/AWB/AF regions, and faces. + * This coordinate system change isn't applicable to RAW capture and its related + * metadata such as intrinsicCalibration and lensShadingMap.
+ *Using the same hypothetical example above, and assuming output stream #1 (640x480) is + * the viewfinder stream, the application can achieve 2.0x zoom in one of two ways:
+ *If the application intends to set aeRegions to be top-left quarter of the viewfinder + * field-of-view, the {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions} should be set to (0, 0, 1000, 750) with * zoomRatio set to 2.0. Alternatively, the application can set aeRegions to the equivalent - * region of (1008, 756, 2016, 1512) for zoomRatio of 1.0. If the application doesn't + * region of (500, 375, 1000, 750) for zoomRatio of 1.0. If the application doesn't * explicitly set {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}, its value defaults to 1.0.
- *This coordinate system change isn't applicable to RAW capture and its related metadata - * such as intrinsicCalibration and lensShadingMap.
*One limitation of controlling zoom using zoomRatio is that the {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} * must only be used for letterboxing or pillarboxing of the sensor active array, and no * FREEFORM cropping can be used with {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} other than 1.0.
@@ -2216,7 +2255,6 @@ public final class CaptureRequest extends CameraMetadataOptical zoom will not be supported on most devices.
+ *Optical zoom via this control will not be supported on most devices. Starting from API + * level 30, the camera device may combine optical and digital zoom through the + * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} control.
*Units: Millimeters
*Range of valid values:
* {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS android.lens.info.availableFocalLengths}
This key is available on all devices.
* + * @see CaptureRequest#CONTROL_ZOOM_RATIO * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 096aa0cd27b3..be03502eb943 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -2410,27 +2410,66 @@ public class CaptureResult extends CameraMetadataBy using this control, the application gains a simpler way to control zoom, which can - * be a combination of optical and digital zoom. More specifically, for a logical - * multi-camera with more than one focal length, using a floating point zoom ratio offers - * more zoom precision when a telephoto lens is used, as well as allowing zoom ratio of - * less than 1.0 to zoom out to a wide field of view.
- *Note that the coordinate system of cropRegion, AE/AWB/AF regions, and faces now changes - * to the effective after-zoom field-of-view represented by rectangle of (0, 0, - * activeArrayWidth, activeArrayHeight).
- *For example, if {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} is 4032*3024, and the preview stream - * is configured to the same 4:3 aspect ratio, the application can achieve 2.0x zoom in - * one of two ways:
+ * be a combination of optical and digital zoom. For example, a multi-camera system may + * contain more than one lens with different focal lengths, and the user can use optical + * zoom by switching between lenses. Using zoomRatio has benefits in the scenarios below: + * Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides + * better precision compared to an integer value of {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}. + * Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas + * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} doesn't. + *To illustrate, here are several scenarios of different zoom ratios, crop regions,
+ * and output streams, for a hypothetical camera device with an active array of size
+ * (2000,1500)
.
2000x1500
(3 MP, 4:3 aspect ratio)640x480
(VGA, 4:3 aspect ratio)1280x720
(720p, 16:9 aspect ratio)If the application intends to set aeRegions to be top-left quarter of the preview - * field-of-view, the {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions} should be set to (0, 0, 2016, 1512) with + *
Rect(0, 0, 2000, 1500) // (left, top, right, bottom)
(post zoom)640x480
stream source area: (0, 0, 2000, 1500)
(equal to crop region)1280x720
stream source area: (0, 187, 2000, 1312)
(letterboxed)Rect(0, 187, 2000, 1312)
640x480
stream source area: (250, 187, 1750, 1312)
(pillarboxed)1280x720
stream source area: (0, 187, 2000, 1312)
(equal to crop region)Rect(250, 0, 1750, 1500)
640x480
stream source area: (250, 187, 1750, 1312)
(letterboxed)1280x720
stream source area: (250, 328, 1750, 1172)
(letterboxed)As seen from the graphs above, the coordinate system of cropRegion now changes to the + * effective after-zoom field-of-view, and is represented by the rectangle of (0, 0, + * activeArrayWith, activeArrayHeight). The same applies to AE/AWB/AF regions, and faces. + * This coordinate system change isn't applicable to RAW capture and its related + * metadata such as intrinsicCalibration and lensShadingMap.
+ *Using the same hypothetical example above, and assuming output stream #1 (640x480) is + * the viewfinder stream, the application can achieve 2.0x zoom in one of two ways:
+ *If the application intends to set aeRegions to be top-left quarter of the viewfinder + * field-of-view, the {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions} should be set to (0, 0, 1000, 750) with * zoomRatio set to 2.0. Alternatively, the application can set aeRegions to the equivalent - * region of (1008, 756, 2016, 1512) for zoomRatio of 1.0. If the application doesn't + * region of (500, 375, 1000, 750) for zoomRatio of 1.0. If the application doesn't * explicitly set {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}, its value defaults to 1.0.
- *This coordinate system change isn't applicable to RAW capture and its related metadata - * such as intrinsicCalibration and lensShadingMap.
*One limitation of controlling zoom using zoomRatio is that the {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} * must only be used for letterboxing or pillarboxing of the sensor active array, and no * FREEFORM cropping can be used with {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} other than 1.0.
@@ -2446,7 +2485,6 @@ public class CaptureResult extends CameraMetadataOptical zoom will not be supported on most devices.
+ *Optical zoom via this control will not be supported on most devices. Starting from API + * level 30, the camera device may combine optical and digital zoom through the + * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} control.
*Units: Millimeters
*Range of valid values:
* {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS android.lens.info.availableFocalLengths}
This key is available on all devices.
* + * @see CaptureRequest#CONTROL_ZOOM_RATIO * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS diff --git a/docs/html/reference/images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png b/docs/html/reference/images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png new file mode 100644 index 0000000000000000000000000000000000000000..1acc59d167fc38299abf11bb02d2d6227a71a463 GIT binary patch literal 28504 zcmeFZbySz%6F&$D`ldsryO9zU=|;L!8tDe$^Qv)@qE$vOMzS>cnS`s~V z^0yy89ZM|>19K|_GgJJBe!ps(SzECa5^v^-Z_E_^j%KkOZQ+-K&Gb=NI3Kj-hLZ((a7UmWJMIKwz zKezrL*ZA+gq;)LKjIAFU%b6Njas2Jzzl#666|b2IFsP;F!;Bf8$NcxQ=lX2459Inc z@;&k9u@qnq2MinSKaA#p84U9G2Ls~*6XN5RwFCc?@XGDY+H_~qPCeQZ6O%)c$J@4- z+33aK9c?HKpTp3Ve@KN5w($j$cDzX&M*q>lm*%0#&BaXtLtcN5FzHxy%{~ZM%2-=@ zYjb9!cVC3ddOWdlTmRuWsj^QLlGz;92BB^l3IZSO@v}tY4zdX)9_h96L-?oc1vsb> zaVP{5k_+tNQ%3^Ud>VOU6iAhH3082ne5RTDng%+E=Iianst&h%E zRy_j)70{hQ=a9coH)bnL(k?FSFgcv6#9kKKF@F3=ZlWkF%lG0HLOR9=T}fHlaEAK4 zvI)VdUj#!_Q`y+}qnTndGrX{KB|5OX3-!vgaxR0c`)u#X$t5dP6Bzeqx=BahFZ|r; zxjNmUAR+PgaxGG;&;K|_2M6hTVqVbi4leQe##-Ad^QlGu5RfOEa!U`X)R#pgWYwMF4 zqoQFk#(BQ;d0RYa*LutL+WPv0y@qR3r80fw_KuE`UfM=c369HjhU%wPpoD1MZDl28 zGFz^bciLH6mNJNb;f-^{ z2 c(2%fSoSfGma=wsnmc zE3mz5QR=1!Mn*Ct;gOL_c5TfT+hY^~wPh1LzrK>-cV6ujHJVP>*_W=Z1khH<%E>9V zYOii^-dC^HpD&aij@qasFc!`Ti3F<$tN|1%r~2}%$$upyN=-UCz?apB|9EoGbEtJ( zaA{HtVr^|LJS>ct-YWCdxV&xTdK}Rp2$R8IJDWd#&bkNZ)(@GeY?F97^yL5}gy$>7 z% n zaN9baF7-uu>9Vq@i(cB9p5VY{#qUFRhrzD0ZSoV0D$b|lR+Fl>6y8&n-gkAyh+&XQ ztQ6l55kK?uD@}%g5HJSr4_Xl;jKYEG=;N8baRn8Yy^L3Y{7qxA()QhIfO$jm>sNx? zv&zN{o!-b{c*Z#{i>w^mtj1bVw%oM7H2rHOY-TB9xPf~}?S-DVX4e%cu*4iQJ@+OA z%ts-OCGW-fNhS)E1%f%Q$W?9Ut;3_DHjW;s((wiJs`~D7&{f`)l(zN{eFps=`i!s9 zMqoVb+1Jn%n?ySi7~Y-*6kaDxW{dO^2uakLE*O!-sEi0og?HN85&0+j3|Z7LLV|+$ zmtm}q^ PATH5xJR5&1 zyKrb+oY9A(TC+uto~|y*77|ehReItAX6Q~WZcO<5yP8##MS1$7F4)ZQGxMm4#>iMs zMzs)rv-;CWvCleIWGqTJ+GS?2*T?*g@;r;;pD;9i7hLb1uYQL~gv+haQ{^)|Hk`rj zwg#>sHjgVoHsZbx*)U&2Mp67of)+|55;^o4O*K6|iN!jX-j*-`iSJ7kt-AOMnYfn% zs!)Ftr+Q3h=m!5 zarsbGnk^RIsM;-i!+ x0AVs$C1t;E(&7bu(nS<3X=s>hv3z&C?^?v>NNIaOe{<8TekWZWBBH4X zem$iXOu?=lgY{Dnwefm>-y Qfu(z4U>aHaj^=6I0uShmD%ci9(D zetm=Fg{?t>w??avTfR}%VFy+OR&-g}M JWu?y|?9FJMG-+HF;%Mc2j3R+~D+jm{&KaY^@injK~Is5%<6B zp<}k=d0;Jc;ut>ZKO}sJ*rl1X`WLcH{?97T-JA%l8NL!#z?u6|pE`JP4K-dss8eqJ zT!rxVc+{#FF ?jEic AmVAjpEHn(GmvY Zl4rZVZds6>WwFmOVYIt zOq~+CycPQFY4%gEhZZuh$2{^d0*fN_i4UHpf@BEEBW%tKPxA-rS=R@;kydfD`sQKy zt3MkL?;q4Xh7z*%lPv*qfIyl{HX}p_JuXJ$C15*zC?ni{GFFgI0Lz1Wk?%dyqh- N&ss(=Lg9c^6-ij zxT19!MG8rg$Xv&ijBH|EN -%>>*`!NQ-EVVt^qAroQX!UU)P z4Gsoce1~_6oPO|<;fbVCu)>b4OC&gz;A_u-49@)NYQg@`MHF{k3P}Q8u!Rlu{aK+~ zLooFco5qvpI?6I~j^!^{t@3SkDcUA5ViFGp98chE^)h^P9mk@OaAyAGiyzp22K(Ss zxQP$<#2qS7IGL-79Xmml4-r53lMptGC(~67nZN$`GJGz`=60zkhJ!(X<7>QYW|uFf z1nZK7e3p7Ui6&VO$J}kVbI1^g$IihZA-I4tEHE|lzXeW&fYAz#h4M%#z-YAvWM$!y z$M~<&`W-M@$&3XdpN-Z9WVa=UPT1lnspo1U0|YPW7Xk9)kZv&`rmL~s#+_Hqr;Jj+ zUp=-#vVg>P#+zS^0Ic0O@}s9c3kLoQ7zZJ_3HEtjH)6oNW@# `OfgXrEsJg@)% zNu#|<1rjCh8dHq`RJiOX^)w5vU$49JleDY8BdN3^r-40FqA3sO8{G3exwt^lxxR7O zQMgF@ !((!UW#m89XeFr0Ux+G`PFZBQ*hn0%$E0 zMa7IV_%9yAhwPD_z(9cbH<<%y7ON@zzm~(`a1%t($A3g@0p)$f66!ei|2;Wux qXH7}w&iAALDYU nIVDGo>6A=eO3jF zx7@p1^#;ejEu&0QIO&RpI}#z)pLa`p%Wo4!cOMzqAf=C6?oCSVt})d>#?^LV#dKDL z^H^FK%uHICciL)hwl4MC$^88vUIo91ANFZ4DqN^=z|=t1?} @TQEwo`uMm%SQZUv>3bvcW~>u9m~I{Sg{_jb#|Ox3Dl|5yA}ef^;ug@elbm zn(#B*mzBpIzKB{B#@L;_-v}Z?NV!gY)dT`mSlNcOI0lKi6DKOgIYv|!TU`C=Qx%*C z13M3x$1Ks56#1j9a#bM%oSgU=>8pI5((tq;2zY>Vt~T!=0I3<_!xPzC0s)a@oWn#s zec}oT2jI$(0p%B%r}MJ~63!l>@)^Z@lKfvq@#07*=J$!;@jqgcKAiDfOCa=-R(7jR zq K*&(m`u-I zEQ8Tz5bIv@_O_uB( y9u&3?t4@^ClQF5_J!~jJSO_1a_vyaMYHH$uV{U9}N>FJ~zEsVjvDFuG z(#BvcTZ)*sZ^b_#Ag7@rk^cw!*Vi-#e~r5)atQv$38_Dy@_lPvZXIGDvE#_B^U8NJ za!N`O4F1SVm3|U3GD>!3 h^v3!v2Ob&BbGx1Z$) 4Dp;Kfe zTq8KCq=Io!Txw)ZG+5Y&Os26`^un&UkTtx(R3bLa)m<)ibnYt3%48LFoQ6N6QP}jr ztO0xt(IyB7?HsN3M#%M|khf3 6cz?mn9TCm+U{5Q)aGqwvsvqu*4ly2Io&f2 zE#cZL7_dt6o9~ jS<~ zOv#7;Y_xR<3&D?~pKbJ>{@QIV&;b&zTmWj>u?qL=_OPHgh6s71W<|;;bi%6GcEZAe zc&}<02{AG2$TxTR8tCpvD3*0}u&3|;ARSVy&a@B{T2fga xDb2^LmhMW+YnA``1z+@RET7EJRQ6Ydz(!^yncVeJjdmk zXGos165eP_@u|2T?Q_T#jUM$cg=1~QA5*E5%s2iFd{(g5Xfw=6^HB;E8!6{ zcZ$ZciYsR2EaKdAe8S02YNt%Rk-;HVkOk?w&&{O}6$-E~epS7hUC>yf=K9|JXb|It zVZ(`j Jq74th0a!a%AcXF}@`?r66?0l|YwL1YS3J1TAaHQj?GB-~hcgTu$6ASf z<$~!y@-72aWaM7;4UuN^BBC%^mu0^aIaeRf_PzgdMU>U!xpmj|(%y^dK{)&>q52RZ zAW$vq^!+7+@tLBnNWV}a*RUJ=P=bR@t18&G;h(gOBp@wrEBs%dg-saD1FMia*x^~w z!oeUJldGiApY<9rXCI^9w1ub2@(=*#E12as;W7^-#L~U&AT5tg?LbCe|C0H`A$rA} zj|4&xKZRuQU<4n)Gzh^E($^C)si{Bd9#{6&zZE&+Jq7@8yD{I4Ke+-x;ty1Ci6Qa~ zqtA!IfcPo3ZpRJ2jjZCU!k5mR`OYK2a8pt1UGr`n$Hx;TFw|FX-QCmZJ$rD~1G(9q zNc2Q&`kLiBw124Z`akH_^sd&aWMU*_gCJa*hfWl{m=W@pJht_WFf}DEm^%xnV^;H) zRd=A0z+UT<_hiUjqsa*PUZ<31Zz5na(Rik&8t FV$eYW2i_#?i=eaBR6~B2rjkB_=FZ5 zR ;0AwJOYzta65M6W-TYs=OV~-{}J>e-&w}2tcktm;8n#2_61cAsXVdKpeBUNokpY z$=6VdAWGR(N65Z!@`<{VlYhG3Yo5CilvhK4oM4OrVgd-3qL{H6?6F2#V&7C!Q09pM z6KejOh4r~UKEt!Ejm`(0IYvlC+E0!OFo=0lu;$%QJlcOj)gBO(nE${7_iV~ 2xz6?e?V`rL zA5u2EpkG?%>s 2!nZ9}6W7^@@3M@X5&|xQIyXtWmD1UG;3_{P$Wf?A@(A@j3 zgnY0d|IKg(11AL01VJDTA#bXNq|U<5_fP$f9AZ$@t5%#L%8*DXl%IlAc#yK+O!h|X z*q{q>d}j86^EU2qdX@of%VAxE;HvNmd=?fBVTlJbE@+FjAd4wggMH%g}P4{7Oiv0H+9M%-=s575HT! zE_2?zdJXEQbHMN69MErVesUJL4*{+O_<}PSC8IFM@mB>V3+SjAIybHR3sb8`bA8yB zPF<~3yURwbgsMv*KBXV7z1Wb9=DP;lp@4!oWUlff51^Q#plHY5uK?yAy^>6CPjV%z zrfUcP?{1G~aeP9sBwyd9m)BBY*AT+^?Zk_%f&L7g=jQz*xZfz&(ZOLhyY*XI@T*9T zWo5f`)3A@u>w!^i#R2plNp8%AG|hw4C#Vz8hk884%=Xwa zrpy?y#;^Vz@9jw*@Sqy+e=<|wpMq|V@3D-F9C>r|eP;kI&-ZFdWnk`1`6}fW7hc@v ztyu+9GKipf7Ny_Z`Afl?k<}8whF;^gth=PV2) Bf%cqdwN$5>1*xXkv65 ze#v^f-`#Z$5Cht=cbA3Y2!bphq&qdXb->8~FVqGAA5ez-+wU3iaW#@v!I{uNP@e{dN4?jhx}*peX25F3Q#hNJ7I{bW5x1k?nilk(s>>UTuw%` ztzuqFm_g`JUMTKe Uhdhn(rrbb0`zxFx@ciJ|%UV$*!Fz6Kd0%@7ew5TWmSxiL3j zy3|-aLQ}H0-j&6WnEn<9<9F?2!^ 4>=~Ilc<$<3yZR@z0D_?64}`905xc ?~NowSs1j^w+s}M+m5Z0t2dZG_>C@o*iB;BumGs6tJ|f<||CF+B-W(f#9*p52bns zhTXa9u#wSGgR7IR@Pq^tcr$(d YEh$pBtZ8+C_>LL z>U;=rr1ww{%P%xkm6QAY?c2BTi1ABsVX^R8o$DG z@8e##Q!thlbv$T3ZBDK8Sl~#9X&?sJdGOQwGdp)vkq4z^8L|!Sx4<7ih!r(R3e(bd zD)~toylO>eUz ^b+b!ilC0-^WA(?ouc<2O#q#velL}={h<__tAmX03nxKt7(R#9IJuhM---A#2W zxFxfp{=Tb!ACi8X?1Ek58t(R86$S )FeXeA^eyeumy3$0!j~n(#pnK`fq0N@yZafp(2~PA|zhGSPk=BNR$5nC%GkSs+ih zN_eMG#p_8ox^caKy&1XGV_9})+T;c 2Dm?pKWD&|78E?n9+*PlpS%cNQ<) zO;HYZLP{1Q$HruLjw>8orz0b}&ouLbSKk$IB;KB7*HN6QO(7!v#m=@nxF5O7=Fwzi zhW~I#gWBGU0KO*%Q8+O0R!By$iZsx(opJ!{eg;}a!{jl)9g*#7qk_cT#uSx$Tk0e* zL3P@6Zti(s_O4G-o!dA)14)Hwi*P^WKWzwhL)b8$Jr%d+J2DO6Fu7L=A$qnAFCqZ* zLBY{GT^*X>!{5 Hf259|GdQk|U%RM%O*C*=xy1{ja93jyAT Ugf0>$wMdk+}D;X{pcWRg@8u&9q_O<0$M aHEv%8AM7&bj|pIK|o$onNKF_ozGt& z8@Q`k+sF<$khi{9hbz<1YViy0+K11xEUaD(5F!{J)QRfZH*vm)JUiMT+}YXL{L!ta z1Upyl9CzfhFQwI?bURUW8(Ly%ku8zLrc{6Qp=K#ngq(xG{p`<-kU%iD{7Obf#^}&; zD+MKMXRP?AlW!;BX`Ml7H!ioQYA2UR5;@h=XM}GtkcB?bBxSUP3CyS0&9mA_syJZ> zVzc{P{XUgz5y$4t3}?6<=`}eDPry;Ol{S*03Pfk95s6+u+!`VIXmbO(JziV6u5(LG zOPMjxYAgLs3VH2xS41ztlIHWFLOqN`Lb{3aC*{>G#@{$wA7~pr5OA2dGDzC3&g^CM zTd%B*ZR@0iI81qY*$eJ&KCoQRQOL^L_4LT%3D{Lz4E(wOGb(X$oU~n=E+Z{1G{ca< ziIdB0yR5`^Sx&2U8>KGE!$TOzdJFZDdT*jXF1tGC`vA*1TYqm^Bk~Q#sYgd|jcTJt z&7H6_rctdbNhL w#2@}&KG _`)F1M9ROwlG_kq$4;cxMhlE>D%Qh1ey zdy1R_9Hv*+#uoN&;;LSq?XQ-ZjaZ kiGF56_^aZxQWtTb0Vy@Vlg(fJH@yU$rfDSEnQyztANL-B}?BrARD{rH#e zq62?_Yn4|DXSBDQyp*HPjy9vK!FL{s&f7w3SaX`5wdVcedOCGS!HqH|CV{A8Iro&b zw+V!V3F_jj(tUIg+65m!IT32);+i^%mPjClkUN3kFh2cw*VCJwTOz%6DyyI%1%1Af zZcFMhoQLo2sNy{~G{oiUi?Fs}K3Tn0*Kql9BW_VTx%?yJsQTT-E7S >~L}C zDAZ;&<@a-}D4FYUvBLfX&Q$GSPfH<4N5R2qpV}@C0gp}4(+94YfBInDA=YVvdBW@~ z>#E$B+YE+4m)4kDC2aOlhX!!_%{#|UO5E~jhh}f#H@3?t-BK9RNo&24NAUfcHG5ZP z@9e3+y6-1Mb)GUSPureI2;*@Ci8H~tt1}^+yNIBQzmc5$MS$Phh=CEq_NQ7srxb1+ z0h7(^B?4wX+@SwPis!XGIzv)u==@^Scgcj_7GkvHAcT9Gs+nRF%5HcM7bdHNkd*K~ zARJRJQmpQ!wK}Oj9Zua^r9}##B1pzgvsGZGDV6BFi`}!f{JS5Ek=(wU(-#p()`!1S zEL#6GV3lRydZIF?re52rU1v zb% oIE5+Aw`E_p zizu(lqhS}EJUN{9Rdw7|um+(P&u&?bAs1AuYUvAOSc4O<`n80=A+lc?6@0nza1#N* zK$IPlK0gG#==J(e5k+gPkWhE{Y+j|bm?DnT%_g*3jB+;InuC&U%y~Ez$JN`e5s|vf zihYOh_HoN~=J?i#uaX#7k+`V~ILuChTi%8)C>%*>yM5Oafjzkz*4Y(8uoagPa-Ac! z`?E!O&Q+VLBvjsLGzGVs4E+u3EW#p#l90os!&^9tqNKdJ3pLTvUt+D+6@?otRtW;? z8f-U$O-c^Kqgb!YMQLN~DFSgB6aDSvPV??>Ucs+i+SOaW-4nu~cjd6?)A#rPA >A^u~zF<)LBM^;7MlW+$Q49q~uWK*Sbi}XU33U_+?6Te&X=+M2X#6 zy+}Rp1VN|0fHQ&WN9fyD2eN=NguO+H+p9d-C}L5Ez~P&&0ZbRCEhf%)R_oIn+hJ42 zMQh8e4VRZaFnWsLs9Z~s4Cm2|!f{ er5Ueh)OU9!+$yPU#l-Ziit7Cu61iPaui}E0c2V_qRPtfN4G-CzJ|1vMT&T=} zwc+svY_4-zxeX+>&5z(zyU-By0+h# mmw; zUj~lt@P@=H7ffHv1rQyUahjpYb(c1p#Jg;*APRX^{PcB1Yq*UpVNsMvHxfq`=vK-1 z3S4IKJLpv@s}DPxEV}ieNjQbCaTrk9SqxmPmctN6{T6j8q{w&1!AVNe+FMXSeR5h; zeiQ!(xkmpA?wX2y0gv7aouq_`TJ=UMYFWFx4TIL1ovnEBC%1wsqr%oD9;e}TC>C`g z$J``+SzY|CJnqTO%K=5)14L&CbZLa!PkiuB`0vAgBW(Al26#JxcuYnXx%j%BDzp7z zt19P3;fP3B`-jE*LseprR9hwN`b7rIqAZLkYiA*EjvyCh`HQ=Qy=(pE`vpnV4ZmN) z_O^4@m8W#L)OXWtWHo tjs#UV{ zp`D_eFx2qQ3RkZC>dtb53d z${B=A6>@0^Kb(2B1`&)~D02e>b6+Azu8$@RLG7+Hm+&{i-|;Wu0$e>c;wO-)vf<#* z4uG%xfOk 3C82N7v&lmAO9x9X;|$o4mi@+1bAIrDwWhg^H6#= |gEb4>BoQk$nZgy~lU5Z+OuBzVUD(02GjB6JBCk%l390m~DWl6QWJ040Pw?ZB+rA X${Ub0_ND-bqwqCoO`CaQhdarG2gj%oj*30} RbK3y?go&j*qE9$53`Nj*&&aO-A>6|c{?rBFw=H!ET_#-_ z5Aq>8%Xfp;Vhiy7^6 8ahbAF9@_vpd4L~$T@?aPlh@qY z&4>7@>N+73vfDWqw|T#HU-GA?GVX`CT{`@W(x<`uJ_8cYT6_;@S&m@% d~g9* zZ9 1H >K$?eAR%)R_>>t5Ys` zV8VT38YR_vdiuLSA{j&Y8~UeEE10_};FPv`fgAc)*s>mkEtH4t+3B$P5;&0 kpkR<4D$07hVXIV``{wLXNqsZC8th#my|0(*(^acTd=&wRO?}ueB{6b^Ac6sdd znXgf^vWz;5onxVNA+eVHk}chVZ>E(bPG4jyt`g%YiqVae +;qjw*mH;) zWuV~Rh29zqaV0G$)7?o^svNbc6NA4UNSP>ek>}LII`odC$j$NDex;@n7;3&kxe%1h zPs3~3{fZ-HBAm@oY+pjmkt2P*Esvb$-A@Dslk}D=XW_En(W2W)EQuqljz-<#i}2q2 z(jvZwwH!--I4sHE(ev+r4qD-tCQcYVcOXe@*IYh28%fE9e}jb~@nV!rMtlW~B){qo zAE$6ZaN~D>X}63`MI=?qSd|K9v<-jMFD{2 JGVgyU0GDTUzY9h{o_2A{3WH7CSE5BK0T?T05>x!6yE$Jj YmW{34} zh9~j|{Z|4iWX=>^v#d~6B~+}OF?5`7Q^m&e;qTM?#EPu0io0}*9D`D0^C(KHeK2k7 zM5#@3RbRcEERLqm^qCN5Q7Vm4TePR8p1P*o{#B+t>iX@d(JEgz4n<(az!kOR%c?$B z(8@%moI&%+bg}CYtK(fT=B#0M-4;`Q&26X3U8iu>99TZn6=6c|yh$J}7JR{Y*~QX_ zvEgCE)y3DW9Ove1;#$DvsW*6d5 nfcjQvz@euZigH{~%P}&d!-cN1dCYnf^_Tkh=9k z)=_yjZZmM6GcCjSUN{P|rW4cFcmNJFppIlU$6NT;m-nx}_oVmIGfke8P>spc4HTC+u3 zv)^#7zrRrbDHHF%?}2?EU04tY(yJJ$mCF1ywY0W?YfzbFNlqiNcjF4`8Ci)A!qe)d zy72SgI&oxGRZZY+D~t0EU~Q$49 6~1HM~AjL&rjq899AO@ zH^#cX<$nuKoK!a676eoS4)l-OT}Tc~?71%xo5RbA^@Toy@q?H;_YK;q%1epcJ65k=t&ScG`> zq>>}Da!jR(4nZLny{EMO-WQko>JGKla00WKPO;yYvpzSa-@p7q5jRe*;YO2j>J~TL zW*<=fG;u(Hu`#m3>zY2|(>g|J;J4!H1y!6;-;7B{YftP8U$M8tm>VlD^;K0*fQFqT z_%nmI|MuDNX1vIWRD?-P6m{WZk#TTW4cC?`Uf#4gl)-9FMRmAuY2|32JLgttAsJg8 z>Rhwut5E>W?vG6z9a;2rcc*l8@aGm3WX#Q}7^!UC`lB21cG0U)eam2+o0#A~Jw5%X z*# jBD3KsIxQ3R@K6N?z>!TRqE0EH_E07E z1{N}ZHp#J9dgI$jm`UNtNvKH>^;z|;-dxYD2^-=~5Q;ivrRIt)cBb|380 Hz7z+D~Pu3MQcC*!~%p`An z^{pZd#^=IO1}q7iDe!SJeoJO>kubHRuG;$%fm?W@4Q%W@ze3QT*Ai?gCmNKLlo6LI z&bYv(HR8J?EHt#Nw$YZb(9q2$_ZKrXE)Rw;{t3uR73;SQPHtykhQpq7hdfTkoLpmC z$J_wpPP;5#7NlDAcqpA8{ipie-;20O1C})+*%l)vG`&XJ&HZZEdZF!Kb`NvrL d{wbfLsuP_aRyHXKo7C7|+OKoturu5r-Urf*3Lpa9Z?&h+NKHoEv zS~-(A%)}858M%3N7d7-!707-RG&P6zeB_q~*-&D14%@=(;TdMDcgMLUAfc9;of#C% zYz8g2Bannv5_EX^VbTQE=Pz-J#;lsJtIuasZ-nB rO zkC=X Xcg=8LAikSyZfur?*3Aq9YaS?V)Y7?{1Cg3^|GECM;MjXZ u^ zomS;rpL6lzoheh(%DgqYQj!3E (H*R8>_M(C-oA<_q zcE3L4oXd@w8f4H)G;kA^_21}^_@~iQw6?c?7`NsO731S0rVWiP^nw@XoZWBPch3<| zyKoj%MCIsC&044*_f67ikdG?`WYPY&fMvCU7? zK+xlbB#;sW&JB-$>Q-Y)Jnen@3F>F3otG+HS-R{ZD4Es7Y6l-L)T0b*d-f0W)Keox zI|KZT2@@B7R+S_RtsCfMGnW)_+hYsjO``O#9rI+%CeDsGw(;Nz%tqR)Agf@gO{nlD zI)o*kkG7mNUQ;%vXHBT*vgH!dHdL8j6y>OIe{p_uwbZm9&RM?^Ja9pq(SADOSUo2m z)Sqfkl$g9GpeD(u>Lu3`$GTEUoR@Yg?(=gp!C^FS`FHyI-4zwwbOlZ;yDB8&s>8=1 z%HZ9;ScU-I!9){=J-qviSKY$8ieE@Pu7K-z!%%1{T$by7Qa5G|m%3NegD#nDQP=Bn zW+T82SBWDm92_y=hGrDuFV34~#E5ojAZq9r>H=H?ow(U${M5kHCWGjohjY!bhPzeP z&SCm~zi}u^pV#ocGH4dCLfJ@=zFm30jhrHu2t&s-TQX9R < zM4GoB+0k|p!)KrC^3%s _uxun8DQuG$@^XE&h`T_L z0Yipg5ElFLLd1UmaV$%bE;l_jSCx}qH`MX_vaYwAV3llSXh=@of0$n5^&L2sf$M*# z*PF}R1{#mqK|e^4;Mi4&4ADc`Rp7nqgnDAa7Ro;qM|{l5X$UOH>{u-i8i;Pido;k4 z^`I}DBP=B3^<>pHgv%4lUg$grS>4zH^j_$^_UrF0`9viB;9ttJ>q3OIs{l}f^x1qu zI>pdIqhMfE91s5&z&ep+^zyC0i5Ue@<9~KV9zbfR2hKPP^gMrWqW~Fej}gn8R8yvB zJOSc)KuDji6{4UB%=Jh!j%)jtpHah-(wZY|jIg _ zfUpP*HF_Iw26=NwqqEp|z%Ey}w;M8k!?PPcN}GJf-kB&A({980MdIW$f>il&l-22v zZyb?IXs#ilacuVx{=x0|F}{#PxVRoLl4ZbEvyU#K*1{B0@ HU7 zzFAx4O{L&xZskzZ2yYHLDxfB2sfg4+{!Vh^zEWrgi}BNm; tlvZ4(uMXYBVdqL0M27UpZe>PNCSX!AYp*ha|QyJ0GLOfr@PoQ*WUXB zw}{9~{{P1R9}z6odiIf1?zm*Xasi)p0bh9myD1DDhzNp$j_*8(EOw%^N?3rYXQpM~ zC+Fksy(WDK1zLg`X;UkTE 2>v&kM|-=qMxn$Ps-)*}d4g3@mcA0D&(0huweD=P?^%MQ8@H^Q z=b;iPnpQt=w(i61ac%vM+3VMHc32dL2G>T6e9G*ZZ56dzWdOxzaQj`nkj&8RumLL6 z!p}j1*wBcOrKTs~WO+zUZ3%Rqed!dh#^|@13(kj_Pc-voM(B6D0pIGS_e+QKNgTfW z>A_A@s$rQ8B(dFoT9T!`PE-zBmyWIA@top)?9W!PNwoDSvW;1lNX}NGNnxwIUgW8Y zPHKG^qGf@D#bk`O9lb$hR|iJ}&L%sxl;3S+k*eQ~Ce$mb>0Z=(PA`6l)L$1!*hStx zg>h`|UkbB2VM~4ElAvJpVmK#|uXa&q*JOXD>~aGIK2B$6QI_{)ZQtb9!`f`b_OgYp zaI~g1>6 zD+TRnhkFUx3vcvWXug(H@AX>g6h$^Fy1>R9zHIn5GSdTh3S-n9_ A z>5+G9ANUBX5^FMrQ+s#~i>5|D`st}b9L~kvkl{@h;LNdN&zC1wJGr=a)sG|Y$z)MJo&CK(;SZWH0s;GZLe-Ua`S` zvHxyFMy>yDABXhn`XdQ!oU23el)qz;<8)GjbY;2g{tDKYZ$UlrjZs|@_3eR%O1q0p z>lVn1A4ONB(r?H4@IJh#&e *ld-#)Qc6Kbj4L>q6Q& zV|}wNF8Lx@Z(78h-XAq*+6p-(BQCvGKZ>l{x@AV>_;oEx%rbzM@`*#T+`?N(q~1Yh z*| z-0Kd_5!HhmSr&JfhKfh~T243W2OO{{>Ycb8X`_vay>F47@0=Q5ZvRlT^4i>^t?7sg zU)(SnLzG9RW*v?RHWtF_8fsX->pw*ixA>4+&3eINgFGwM0YQ1GU(r>a6DaK$-2-Yx zWG*aIpy<49t>#le9J3&}f>u9vX*r|Tod~v=|J@-H|J!m0bV~Y%F>BD8A${Y1t(DqI z^~Rt$d*$WZER~b$l+R<>)pi_`X&1ye7R;~=Nk88DVypijeSBqDR9)Y_AR Idm!=(%sSx(jW{dDGU+=NVjwjF)-A;b3c#w|NrH^-gE6Q`?~g7 z=ePGc=fhrmtyKkigE0C-F8EORBXdkEJcnD$Pvc#O$`kylw7wWsI8SYb@46%Nu5SrN zw}nwjSS0%&gaZ7cYJ_k0saUWosl?bH%h%b2O#z6P%O-TX7aL%QT&>y7_MT5^Wgc-I zVSCQ;>#ny00nzMva%vEM`}PyioblGt_vlFG9HCqMf~%RkdEbuHZ^#WY=1)hdJltOQ zfq$Y^@*U>>EXgv}FjfF{`m{GA<&9v_gwfU<{kA263>pF(0`PJ6EH8G}aDma!{gBZa z8m+A87FW6hKR~DP6KA{{9$$fjjT54h)#ASe{VZPw)^Uhq$SW{3R9Kkci%3E%DMT zp>}|_cFQajxUy!eKM6*p suG2UIb{$S9m$oi+5dpy> zRRL4?3efc*Y!4TEc5j-`&g8N!V&{yVn_A;e+c-dg^)^F*!Hy9Ouc!ESa@Au8zsvva z6E!(6UDtuqOxXI~NV+ml+6Wi`#*EUF{Ei}2WlL;Bff2&I-qDq|teF@1;Q5)m;^mcB zCZfSA&P>{xJ*QyIk@B?j)xBhgodX5nSV9tAjZntGGiL_+-j?#UVz1r1*;8Kn2uW>p z(FOOr9q)Rt&$rEU0*2SzB;H~bk8<&X_e BcDIED BKUYs=W6@c-+zY${Eg|4=$VLGs3Yn z>OMN X#y+z!gq-)Wf z02*WS*Gsj;DN09LR6o_ciSqXSy$m2V_L4tAqCK@*4|IHn84m&KyWKB#grm6@^Y7Nc z5Yl)PeHF2yFyIM_8LF{UYy)i}?*vR3b}_pvZQ{`gRsW`W0?vSum-4J7(AE3BQNvN% zq$vjNM<$`PP!rh^Ym*YY$F-IGEXvsezEf)F%V$F8x{|t_P$L&c4 VBCz(dEYlCZiF1P7MuAjd_TNF2n4|I>4U^x@^lhg7v($hY7S7LLm z4u(dsbC>&V&wdBZdwk0;Boj$svlIq@X2LEN1`zH SADN==WqDO{e$3je z45G@a=#Mv1`z46@fyqF6Pxk{b{hh6D)4WDI`!|j5#bjVpo63PMogL|G rbc++~|)TOq~#qTaUDH_E=G1hR|N;aP2@1NeAu$1` zVwyGdDTHm_QLskN_iROMn&;|5m@ZjmeA+OK$eOLkjk{>V@K#ikd}~N4w{>Elc4FFQ zW6I)OC$e&u{e0X}$K1ft$DCb6%kVvcqh{!wGQZ?|_w+5)rMdFpdho|^zx|wHP_CzB zUKzN8po-a0=Pt_H6YvF3BGSp^(^~Wu5;W;89a$^hoj4>e{cBLIzV#`EkONlYnO9S& zYCR8B#{nF3upCIE3W;AmGOL{GDDGs8KWR zvY(M4FN^p-zR&Uh%DQ!)ZZeo5`|0 zj=B5EC>yD`KXI+X3Pd@K)xu=#q5M=P??zUACGO*2U1~-uTu@1G3LU!Z1cphwhXAOc z%wp;k3~s02f5#{hxFS}}<}R2A3d|ZB{T#b)LouSNbNbDdzv$*tPd0FKT|@TFwe#+6 ztzMWWOQ4m7Vs6d;R9agItTpZc^?-ga7$w5Y }p6Uc>ST<$ w5D+G3}B#`QHpWUi2AZeSoBfed} zvAx5|!&pb)VR{2EAmacN92->u*3r+7rJ|T}}i2CfF*Yx-h$lohgYH8Gr7#Lzkm0 zyHWG=61s^7=y3`w8@i+8I_^>2=zEGsI _U zPuwrV?2aDnYrG)m7C ChLVXM>i0nR8ni6y?;Y%E6iDWD_TNR0Isx8!zbu0S^V0kRc5@a!HX^__;&ED4 zo0JjG5-o_PrpP@ekc5W(F9k6uWcvE|0MVq!dxDw{Y8#lH-@^+B3b;*0JcZ*bnQd{D z ^r*ReYUT>q{eu-me#P9DH1`qQzbmg1q6=&g0dYKR z9!@y)YJhCJ3k*<0?&l3tR&+my)>qpX3f1Y-;OhF*qW89ARFMG=*=a%m*9^0zo2a?0 zWbL2)FL|(AoL*e4C8b!K3;Vksq9Zc?l!KTUzr)v47)-CTh!t44YK^9*mROsZ=L6-= zisd RWV#m{xu=B^bY zl7ZN_?9nZ$wVBetmi0172U4K=baS;GRWf(7>=qAdJ(%i)YK4&=gV_flNo`##f^g1F z^P|J}#mKi7Z;eM4=#O4g*q|mvcT!+r{>m6aCeR70tPRW0;g;xhab#K-Fy7ZN3Baq9 zU)p5}%p_|c-L(5!=s}App-{So<~e2l0nQkPFa>k()1n@>FR!)xwW#@2G14Ks8N?Z{ zz16ATJV76JoJohhl55P_$S2f|7B3AQxybZR)7WJ_cV`QG1eD+qs~a^kf;NnK+p9Ww z<_23aG~Dg#iS?eud_N;uAc0+_3TU9DrF_t*KxWb(DGY{z-&(B7AggdQ3Peii`%zam z8J&+8AxZfcs 92>YyLCg1&*Vpp?O9?8-94rUD@+$-jMMhd2r9qfJl$Tk zS y*)kwb zqbG;i+gVDVxBprJjWKp#AAG{`e=T5?n7YAb3`GC(ZweUxjfGG4uWSbkjNxnj^TS^L zt#IWZt7+Qz$It#QgC7G%LKgZI{;y5wAFHV`wv5}~ML7<|@VS(>|Hs2ie9}(P&7yvq z#X!S&Ry=$|$={?QIzN~L$-K6SvIp)gpDLroy=5+Q2ewynClc@s{&_W+P& AdYX;4=jcy&(xB%v(1sr`(j!bx~Ljh}@Ku$SDrn!N?EZFwogPZaPR6C4On z!W}F6)G~G% n8RBk<$Kehn6G$^B;SIpE6e-Eu{($gR zdBy3mEO0=QtHzr#Z7T`Y+lG<+R3z@4` G5=u36{jO$};tbMIqY~S`&>8N_EuuNj5kHuBOW1sJO%85cxN~ z6O%!5Q8T#}dcCH4GBOQ;$};?cGb~VnxbZf$ydL+-U|ldfKci0ME5_>p-o1bd+XY2A zcbK(Wzo(7zVePF>iFtA^-zQ%B<|L=*jyflOlFu=LjWyzX^k)rRB;#jwT?N^bCQ)B) z-P45+T_}d>)h!kQS63^rNf3nem*|Bc>1$HYyPwx7UEM>~ja}B%Il`Ci*>OIxM0*fn zqgSg67_EA7wfwS{>_yhrT^gM9+HTep<#1%3e|`=A5)+QLxFt(aRoaJvmK_vtxY%w( zasMb6i 4`IZEaO5AB=c_!{z^Sh+2OJTx^7YYIPHKEV3)^=LKr=vMU5 z#1j5(9mFZFMbI?=QVFMTEW;mc`MU90=5C7Li&9vD5sT^=a!p=HEVt&V-rHOFrn<$1 z<&d&abkv?ienklnIb}-WS!`uybNw rXanV_qq?oC8R8H4wTY*pWiV*?Dx9X zL`V3#5p07ZaYkDMP5tC|K=1rI2k@LTDpuLFT~d3u@Clr4e1} zWe*(+;)e26RH_Bf)=IZd5wo&=Q=&T+gQMf=0n_9CGN(3cAG6A8%0rBeigV3&6dt@3 zLE9#-F1Xy*>YikxXO%gt=A@afM@q6VyS>I~4LgHi#<@KtI!3 6caYz*m+mB*hHS(uveUbaBh?rLxOFbYjX&{v*Xs^|zjSB}FZs8H2&I zOLpuGuYx`DZa&7Q)s_mhmV)E`b4lHYj(x2UI=eKC`(-<+sb9zNqztJHSheSV@u|7^ zDv>t6Voa&&521Eg&x(q=lKIUTwq=yRK-Jhd1p(fOTbAZdZxOdg+tLuAaEpM`R(vUw z`=+Vr0)T&4ezJjnLz?`frTnl|S3BdGZN=vp4mQ`f5vpm)sl`vqs{V=~1TXrPIX4z# z6gB?(jua|-f#B{_$_G +pE-q^J^`om#LtS4|d}5Zc@XjUqL@a_)GOYD{qP zH7Bi{D*u`dw8Qw#dhAjCdl4avhcQF`=^hl4Z+;zYOrqVq%Uzhr^TpLqc~w5p2u}Z2 zubdHTS~2RxD-V9ol+kmw-ZGX@F)egRZ{vl8+Up90%TLTKb>&aV*OX{BMU%gvkIy&O zYP@-~d6#_}t?om#2KqLQ9 0S1U^ z$5gwg@7TvHP#~ZgcI4PA7cuHE2M4D=*9HU^il=(-Y0Ard+DR|o&+2c0a(r7Er77c3 z5Bdg5#w(0eCt6B6i_fZ>@@-id(MgY!^3O6!(yB_5p3o%IZSC3B6m}2s=#y`B*xFW? zY&PqsS?H5xFHt4?0{o8>pDaK&PczZHPjC4!dDc`U+Ig@75xqzjaSuRmKGf>#W6xOA zYSCkCBauV=%$M5~cFnF0C&S@Am$*ggm=91sQ)JD!GeA(F!8%j;5Og+IQK>gcIbMa| zRk~d!WG6D)>UKjGwQZNnuZ%u>c)!W$M&$Y9-!elAbvX~i@qWfviCQcE5ao_-;Vjd5 zAOB|SE>X@^_*so#A1+wANJLC~+V%S`5b_nCRB1ma>#LYo(s-$^7;qo%ln=j}YV5kH zRa{sVv(FyH?rPe8O)-=7`>ejM;m-?-5}|Ldy(Zs0+*nxph*#*&fWk$=ryj;7Dy$t$ zGJn=2guPxt+qshZ0_iVuoy=+Oq$^{GHM*IXYgLzO>|v5}O|b3T#anWkk)c32z*ZcR zxR?Y mPT!ioPuRFJNf($WheHp-^W$oxf;`?|h5% zZ28NMI3IDUbkUf$>SAzL(z`D72fk&s7Wk~p;nz(~?ZD4;fh{Dr9wxwIPj2!3xL4@p z07RG2oU?Ohcb!u|vz?#48_VP0m=pm_tc0y(zNZKC_`r4lvC#{XC&jQuNC 2U^P_?>8c6h#I|)oc)t| z=O1zz7xXui4Fz#hTgJsGmYVo6F+y*Ml>`)O^(b7cg}ks1IQ_Hx&wa8-eqIYK6Ac_2 zL5DQ>4_2Zh&O9s->4czYQ7r_2L-j`fZeNrXOih>;k4oYBD-k(rVv5(kr!bmi05u0t zQb~NkmL|Ha-dKF#DvvJqz&6gK24PM{0`6+K( 2;1! z_b-a YMq3G_k4v zgW@Kgya=M+{I$_b%OBF{5D3*AEm3;R5Jc_d@tjkcW0&2I{kP+qA79h}Iqf)7fc*fD3Ihs>P#?A8%q zFlL1qbv^_Msq#xILEM)vkuP4~2Db*0hp=Y_McDIxd5#SzlglU1=gLXF^4~%@H^a*X z3W}ChN}QImt`DKN?vA74TYeWtz9^bh&5gmwR5kZgoPM |5z$I?KfgH75 z?np`KW#_M7Xcf5s#<2|_Rmqi53T1Vwfg*Ld-InRRxf}I|FQ{#D5k(BeAQ=4P@hhl{ zF%4wHit2(dB&4f__I#&5D*fP?5v?!_z@6tJ4E0{>nI#a3kb>i@oxOCQBqey3<`_uW z?-G3eI#|f(yZxya*f>-;42`8J&m*_(&MDoXy6$UiCe0Bjwa9-xH$U-%Q 6`^6|O|9XJ+Ij!^>zJ8UL{4b_?$Z0uYRWpX#~?@tPs*EN zyOK7lMN{GXPVbA|u@B~YsvU(sgxrYns;0ATcu+r`QnUvY+>1gPg{A4iH6cdfleD^I zV&+?mUp`poZ>5p32dQ(mKpd$H>dXcefo{4+yVaIE9QBJ@cnLE#wLX>+83!6)w4(3C z5jp~MqH9g#bzi0=s@G=egHN^!tKT_J0p$)Sp!chCx)jh*eToz Zu!zQ3@~%t&xrd%iSTIq&XqG$;Z*hj5XP zy=>+tXB&^W3ib7o|B P(3dT?ZWqa@DAVy8fEZ=k)9Zy~^@TD6NVt|eu7;8L{h z0ax^b66|5C=3{>KF q4MQF~64sJaXge@`a0OKApeqs&zMv z@axzx`O_j;>t8Y`(ribP_Gpdlv50!UC~dy3kJIcYEHyewJCu&(mg3AJe~l-I(%z#z zPJ9cg-T9~|#m0E~d0BP?{JOp7Q+})Dlb}i#zE0{`VKqnm_s}CB&-EuqW_F`u?4fBt ztQVgkTet=T0mcVpj=$~_erD)MEgIkop71nxrI~VUig?Einebw7+w|`WRHtUmF5 BHZFPR`GH1ev* z^iN!)XnSUJ;O*`DUSFPR+&_FtK6?Y!gj}U-Tg0O5*vpv+AT5}`C1WNsS5(fx?4iVl z$IVr&LEXB`Lg2!NJ4dtluy{MMdz;>^@~>yJu_I{VPaX%W{H5P^#>DZW?>=@M_**WB zxoDoH36j3(X Z`a_Ru%TUi982Hbxg@VL*j{WevitHqnCF~&_ON-`l2NR4uwNq?G)lM!3NOvi z6QMc|{#l*M$R;{RSHHRp47c{Ac!FRIgyCA{6f7!RXJw^B}VHG@3qHHJLqtm%<9 zAts-a8NLVEOQ5u^{b3a#8UPy~=(>)&Q`VLJQjK#n`QWG!J7a^CeV>ic_jX|~mI1h8 z+u-ZjgR>vb(**qrLIzHzyjHkb-P}pN`(m=#YK7&R2IV x{T*-ABEEd^ zOS8{033J`M!^C<+M~Ds~UFV(-;ATLG{B2auwIqCk-zbiDlx!1OIQAmtEW@ #qc^v97s+rl?qRSUf =DpwbF_6gT<1~Ic`qe0gt}pDFS5fbA``c& z7|}b=Chl?waQt{dtA}laqPpOKf#m}>^R5}JALVu{J)$FrlQD9IjRA+JH Ev9CPRO{2~#?=h*+W_~%&E3piN29)QPK|FnqkkA#k5$y)L_vQqyv zQs(EuS P{EwLM#NB`4f-rDoIA!y4{~0a&oDQ466``i_>@VEgcnn<7 zJ@@wiJp3bGuZ$Efh)%JB=`S2UX#{Ev9(}GigkL{)@NZ3S*mn)d8>_6(s-Keor>e)F ztTDLb%5HLh%SwEQ!P$8`_2n w z{~ljg?>T$-?9R^2&b()4kAc#X!pKjtpF%-FA&ZI#$U;Fu&j5d`!B2peu|C#r;0xMD zR`@+saX;<`a1*YtEc!`80*VT_217l8egXvx=>i1<{PX Oz- zU@4+v0|oW$2jnkwH1#taC@2_2BY9<8Wr+_Qx)x@1I(il#_30eVEFn)paXE4TmuC95 zI)sj9rsg&rj@-oeJve}CNHaY#;e8id6K-N<328!p3u}EsW;!N124bG4goK1#)_R{f zWCesC9|!KZi4ARSEjj4v9UL6!9NyAdSR2s4VP|KjXJDjfWTXXp(Aqee+v+&dn%j^( z4Dxpz0eu@?Ya>frBMWmv$hbNmE$nQ$iHRW-{qyI6PFtf-|C-6%=5blT0_h>Y(7&N$ zp#NuV;889}D~FV|kv=dpWPF}CT=zZyqwQbwJoJ|~w6L`RxL|FhD{5}5Z*6G}aOD1J z#>c1s&prNoELnXU3sXDD!wTj`wmg3a_^;;wev04144Bl$20}6O T7F zW8Z^p?pp!j@I2+B|3}a~PX|JSf}o)IphN}U$vZ;tB*Q16uhiY8?lfWc$YLlv3xkZF zdQ(tLNb`^Wh{-(=T23uMNN}-OQYiTu7nk_MFx^ow1Q~$^1Q$(3A?WO%MNd--H=%hu zaP-XPG^wH?XM49V{_WbCJ5Phbr@33VPpfCu@dz2O)wvs9KU+oxdqUlRJX1m6Cq$zx zd6$XU{ BZx=p*JFoDPbg3g+#o94{jX4 I0UeC~vL`)P*F)`gaj-be&nH?uc$;ocr%78b zwcfq+3Tk#aGk0F_f;Sv5*08-iHcDVNiK)L>HyTLhj7@RBG|De3%F^$R8EQJ46DK1h zt7mn;A+@}{c5+@0VO_7DHqY=UaF4U!o!N-+CZGH015e-@jzOc$_x0=7 |o#U!XKxS-RWY2g9xGu&TsZ}_bW3kz+}yMIQIi5qSVXN8&w6(`%Q_2)696ysRf zTX&QCI`G^a%UzC@xM%H>cZLz jGgNjQk>HNbOKc#GL`E*LpS zlYJt^bCKD;=YztN+j4h%HO4dVxtSx8s5sE1< mQgMDi )v@YvGs`T0q_=drqeu8?2 )EWHtE@a7ZnYKFOe7FHUHaa@%R?qO4+Kf>ABGjy9 zJF;#4wxPX4De39HTWJ8>iHG2stNv4qDH&ot@qBAV12`pYBM!SB!7p=4EFK z?YQU~VtDi|a`gEiYas+I^l$|tC3iQ945V<6F<3b}bD*Q6%j8HV C6Ny$+0pC3`!=~_yo5fc>my6lepd9U9glN{y3Xn5S5 z99!I-T2N`+6H`?$%_2(3#ijl$erxRO2?^s5nllQkxmO7t1l|Q|;1-@23p&EsT#gJO z*vvtW=U-EtHz}(Ej92^ONogevFflN)?VaR>e`Ty+Ilroto>^XZKR3gJj;}fVp;p^) z)yrc## X-bK3m%Dr>&dOqp({(72~LX4z+QPUcvpTmp~9&zSPM zhxrA?vJ{PPY+K;5ItciC(%e5)f4gNwa-GzVm9e$0toPb)EL4Re6YZu_F>2b9B;W`R z4mSBiuJePJhes17be@HD!5mR^D!%4iT&i_4IyxH7bmc?lPIXD+p%`;AaY3uTV9N*C zuJ7-xcB`#h%o8f)rlb3LD4T9Cw~U8YNy506a-(u=G+^QZ4s0 2FA0C;P{pET5ZkLt8X %*L0R5u3Y!&_`+s!XQSSzUy=^tqd(8>x$fol(ZI%}L8`(CF~@VM zwR+z-!Mq@)8nC8aA?Ub=iSbRM)Ty1E{``t1sV@DYb}YI z&X Zuo3jNX@OlWpd{Q%|F>zU;9 z?uhHvRReKxaZ&UAOX*4%*X ^z%!z`FdB zY+k{iN^5+>6vPW+tsLMS#eZ;_q%idh^`}h|J-CyPo|Z2ct@PTa*3rp1H#s7g9^y+U zB0aNQfR=i0DUQ*nkO$v?_0)$`dR?;iD^WO%`}Ea8@7_j<$4!B=O#qiS3_J`W6y(z; z)LQNx9Ge3_o#%V#eeZQ0iM3VQ%yv7r4v{EuAN@242fCLo;qY|nB%9CUyOuu%eTiXD z!BE*PEWE6JgMCP7>YwrF=F2s$=S$_&`f_((A-ut_^|k6;vBt*go4Z=_nA%Cc8*OLB zGGBa{tENrd_!H=-w8xCD#rvt_(sT*_W?)|}&(%tirp2XB2W9C9ZQTFLX=r#0Z`{9X zx8 }PzM 0E>`MQavpfCp3RZ)ZwG z=EYs8kMdSbSEVhwXCQ$&SkLfcHPIqln7}Qnxam|Co5MC2OFdi|2X&O${g0n{+A& zYI{hLbow>kM1~n#wE~se#g@JhC&1o_ptaT2e5ty{l?|cPCqFYiF6D{rHc|{eEQyR+ z0MpHPA%#G>yb2oM`+=C;jJ)HZM?j*iYI(xZWiY?+2(Sp_5R{!o*yGyLw;u#dxbUG> z(Ob>(I?iUc6i*w5d5jsF4!YdoHIxh62>6<18_f|XP6I{_VK>xl`q!%eH5Y1bVd3!t zB7FryEB>b!XGsLxi}7K2Zf0b)_DraopnJv9Mgee~%LG~#6f`REDP@BO7k420E_vN+ z(1Z^ZXdK^OfcAkX8c8T`6D!y>#|Mf|38C7m{PAd2f=}^mXjF=&X$Ce2it9(D2PnOXy%1vKih;5=Bsi%1j+U2~zhmHtXkK5&G zMX-jcOxTAPs{*FbJ(*&y_^-WA-{4HN3rn*+{Y2eX^%eLzI+FaUsSHYkJj`in44Dp! z$z;aDxm7zNsErxdYW-8G!+8H-Q6rqmGeBu5AWBoFJI(U&^Bcy$G!@GJWWV2W028uN zOBGOR^7DIM8g~6)g*iDnX@(P^kOQ~kXKSCbznEw@kgrBCq;At_`dDX%r0X9Pl}um3 z&ul6OKhdt5?fa;4)NO+PJzwOWI6YW}N?*?+Pz@OrD*Pjs?gRMD?8A8YKmphZ26ZN! z7YJY r2I)18g&Ec$9YKKAh^^&&GAOEkzaV3 z*B!R)WSS;mf!fP{hw~i!<>CiID3>^>$uJsi6khFk)JiGd`%cVl;axC~L=e`p!9S{I zD+s3g`OJEp;fru0L@fjX0ipjf#w4ksvfRmngX@zOaZAMDpp6gRliB&cy3mBEoygw~ z#Tw^1pw<)no}U^%7jJ#`9Uq#1UhgMXUUyWyao_s^2K$J-BIjDn%~8@1xJ;>hb`l{M z@x+~<0Ok3Wjt~I9jfT4Y>yxU6#%!UMniHTR(@&oc8{xog{Vp_5^bHqFMD^sJ0_i4_ z!MIdn^{|K j7f;?Zy3m03TJ|WD++E`e74L z0-HbrIoSAN6DS7*@^EOcxBH!rvy??iPmf{+^E;ns8`?!Vm~TD$C$K4H)p4CMDlJ2{ zjJIgi>j$Z^fqjq&*$4huS!K}+3D8K7vi0N>hs06uk*)snQVI|suh&0;R;4cxN0E*G zBl~MoAdY(R%KJ)^kQj!5em^ 1>g*6|gQvh(QY*TK u%KwAibj34JcPBs%h| =Jlcr1-S*pUPzwE3zzyU^dY+_cRW{R2L_siCHQtW zf=@|F>Hd??k_6$$kDu7_T*If4P}_^-3_d>X_)lP~wGUs(R)3S(mdz|mY_1Vk0QMk2 z;3tUwhlOl~+?^wX##LEr6pX~g_un8;W4$~rjbILdjGj^3b$*2o`Bm8Hfn%m(fDMvs zPgi}gLBEN$soS`1_rF!G`#Bor7v%FNc~<44xU}N`CPsCJFn@Qtg8Z1qa1mQcK|!U~ zHcg2Mn487_pS{Nn`|5FLL3zcXdM;G^VlVwG5GJg3hvBz;v`vNx&|q`%T%u=>&h%Uq z%6p5P0R(@~v41^&E gk#Trt_P-F;`jI@FMOs=~ z;;%WxC}aneB?F+hTv*IFe-X}m0Xy^+)*}T_Xdp}j=*Q{e_y7kmO~yJ7((C%J1oH`L z=v)=Um&BX9&<+Fg{DZQccJ;pX!8+Xk%I7TP7e<8EhXi;WtSGku*wg*wXpQ$mQ(45h z{wH8ub+z{jY7NpF(M3~szhQTD12>ILD7c7!bq<0*F+rCJ>#0A@3ZqOrpApNb;J?%a z G*P9QxQ*h1 zyo33|Qn-=n89?KfKe`?!fdUP-cl@W*VC5lddvF>$I*wlD7MZ93)+2lgAznBX8~rH@ zVgiSdpdg%tii|Xb7KQ}C2#p&mi_G)F03qV7AfF+m8I0;>{es8cM?Vvq(VRlB;Z1o0 z4-TqCG+LUp+9(?6njBS5+}2F=mE8d^)yK*=Ud-1AiT!WQO_$|0B7GL>4_h^Ho-0rA z_(_uD<`{B}_~o%kQV}x-eI)K@K5a!qHH7o(nG(n^$}<;yI+uYV!{PRFGBn!}B?y%T z;`_bOic~-M1Tc_Q%eBM5QvGp)wl_4}WWmCOLW=JU(wsfP*N`{ZcB(2hr&jQ-LE)|? zQq}ES^vhk8F?-;z4Z^G8c5a(hBwEeJiLBSjoDSJQ^p~%DadA;;y&{&MpP!CKA~fg; zUCjMWp+Iq{+H9JFnK}BkWReIL78acmb4|r*;#k!9ICIhJ_odnc(Eg3nG8PFuDwNj( zk+ukm!`|C$~6%@CBZHtzZbrcAGCx)`xuXJ+2Rg(61JJ zPz;aPho12wkS}oo`Jb`nWL67&?$ZffrcZsZ(9hER@zVu^F@|VsW`-$faUV6)OB+I> zl5_Fo p)9uw zm44u2B-kxFR@T^Ti9{hpOgd7unTZMI{9<#*ICbZ0z|byXUvyg?goTC0N|ex1QpP_) zCRk)n!Y3?n6OL&4U7tpxdiHEBDBpOK)6&u;IBoM|)}?Rqk4{8YGkH>N7ntF^S1uQ% zB_}^_@{I({?CySvNSJf@uy7f7;qC&$5!H&O(GLj-koG92wP|2fD&SP9N{WfezV486 zt}9;`b6DEr`cX(=vFSi~mcLlY-|ANRor8>D6yniZU10$7`xcuId#H_X6)_~bsg@C5 zyw08KuBe3s^UmrbzIKr08+tcmCw0>@yUpq#psa>RtG_CBJD+tPHO%enebRSAgz