From 06575c5cdb7f484aee7c1584c95943a7beca5bc3 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 8 May 2021 23:56:48 +0200 Subject: [PATCH] update sdrplay device notes --- SDRPlay-device-notes.md | 20 ++++++++------------ images/always-on.png | Bin 0 -> 8619 bytes images/sdrplay_gain_example_1.png | Bin 0 -> 6975 bytes images/sdrplay_gain_example_2.png | Bin 0 -> 7117 bytes 4 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 images/always-on.png create mode 100644 images/sdrplay_gain_example_1.png create mode 100644 images/sdrplay_gain_example_2.png diff --git a/SDRPlay-device-notes.md b/SDRPlay-device-notes.md index 7249c67..af64c4d 100644 --- a/SDRPlay-device-notes.md +++ b/SDRPlay-device-notes.md @@ -10,18 +10,17 @@ The SoapySDR module for SDRPlay devices is available here: https://github.com/po Like other Soapy supported devices, SDRPlay devices can take a single gain value. However, since the way the underlying gains are set up, this usually results in unpredicted results. See: https://github.com/pothosware/SoapySDRPlay/issues/60 -SDRPlay devices export two gain controls, IFGR and RFGR. Both of them are gain reduction values, so the higher the value you set, the lower your signal levels will be. This is important to understand since it is counter-intuitive and pretty much opposite to the behavior of other devices. +SDRPlay devices export two gain controls via the SoapySDR layer: IFGR and RFGR. Both of them are gain reduction values, so the higher the value you set, the lower your signal levels will be. This is important to understand since it is counter-intuitive and pretty much opposite to the behavior of other devices. RFGR is set in steps starting at 0, the maximum depends on the device and input used. Each step equals approximately 6dB of attenuation. IFGR is set in dB, with a minimum of 20. Some examples: -``` -"rf_gain": "IFGR=20,RFGR=4" -"rf_gain": "RFGR=0,IFGR=40" -``` -AGC is supported, to enable set `"rf_gain": "auto"` +[[images/sdrplay_gain_example_1.png]] +[[images/sdrplay_gain_example_2.png]] + +AGC is also supported, to enable set "Device Gain" to "Enable hardware AGC". # Common issues @@ -29,12 +28,9 @@ AGC is supported, to enable set `"rf_gain": "auto"` There has been various reports of SDRPlay devices "failing" out of the blue on certain setups, without any obvious problems. Typically, the problem can be resolved temporarily by a restart of OpenWebRX, but will re-appear at a later point. The analysis shows that for reasons unknown to us, the startup of SDRPlay devices seems to be somewhat unpredictably unreliable, and since OpenWebRX will shut down SDR devices when they are not in use, this can occur pretty much at any time. -The workaround to this issue is to set the `always-on` config option to `True` the device level: -``` -"always-on": True -``` +The workaround to this issue is to add and enable the "Keep device running at all times" option for your SDRPlay device in the web config. -Please refer to the ["Configuration" section](https://github.com/jketterl/openwebrx/wiki/SDR-device-and-profile-configuration#always-on) for further details. +[[images/always-on.png]] ## No SDR devices available when running in docker @@ -54,6 +50,6 @@ Dual tuner mode consumes so much CPU that it cannot be used on any Raspberry Pi The SDRPlay API comes with a dedicated SDRPlay API service that manages interaction with the hardware. It is installed as a systemd unit and must be running to be able to access any SDRPlay devices. -The process `sdrplay_apiService` has been seen consuming vast amounts of CPU (especially on SBCs like the Raspberry Pi) during normal operation. This seems to be expected, so please don't be alarmed if it does. +The process `sdrplay_apiService` has been seen consuming noticable amounts of CPU (especially on SBCs like the Raspberry Pi) during normal operation. This seems to be expected, so please don't be alarmed if it does. If your device stops working and cannot be detected, the API service may have stopped working. You can restart it using the command `sudo systemctl restart sdrplay`. \ No newline at end of file diff --git a/images/always-on.png b/images/always-on.png new file mode 100644 index 0000000000000000000000000000000000000000..db13666f2d318366423f65cef625dd154a020f97 GIT binary patch literal 8619 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 T@IF8Y=mIgt(TVeqzK{_NC zcxQj}e>wBsygLJT^WJZq^QjF`Q;{Pkpd-M;!y{IZM?S{GJ0}K@UtT^7|F;Y&w&8?t zE3e~#hezs<`#VG3n&yj#N4Kefl+N+F-@U4_rYsRSu>|UywNt5cw@fTkJUb)6}c0nB3glckkZ4@$hhUgwMYXVY+qemWW7oS(zq!(ey>}9I*pa-z*K) zU!MqV6PXkVVZw7>)ATy$3OI|4i~AWaUAlC1aImC_yOmJv$?;KKOia9}yC%B4s4AjV z+eo!+llJlj8wH}ruc)dInTkG}>e$%WU~nrh(K0tXo9gaZ>))!8G%)OGhLG&Ib}0Xv z;_~?`0Z24%D|&A$FkkVS_I#!+ZE|zL2tR#HXqGI422`Vc>+f zb1{V;PH!hAUY~<=FTGWebyruH`|e82ZDZfi(4M)raPgy+Z+d9!P1e%3ouvUn0s?!DKLU!1im+FEZgO#PiHRi`dAw{1W&9mw7-BBeU1Z#%siC2vsTsl`T$Ys;FvXI> zx>A^#Y0>_fy?SOn_JIS-9?jQd+z3|FgZFx`i?|dP7V>d$WIO!s4h{~!M0#Dn^yScZ z?@LY3Z+rf^`yn7;X)ud|+|<*xraa={<7 z{Zdv|#?H>J>Q?rU-sv(P-bRa%?etqT8l9DuRrc7($aCdq(bcPmA)&+F z)p10a#m~ZL4hx;+flbQF%2m$m-90@c7W_=ILE0r2VP0O65)$?OX%7bm2G%Dk9H#5N z=mo96W@O08$UL}zpRDirXwSSe+HSG;=9-*C_m>Coi8BGnJFgdejZg=stsifOvnW@( z?^&Cen3$U0YUGplCDJK236N)owJ0hpOAxd%L?Yi871?#!oIQKim*{E=<|cW(kR!*f zTQaGAm(QQ&<>ggX?YZ?ZQsm9P?PRs<@<;)?wDfo;koUuf5465ZeW`L!pFWM^F`)Gw zt#B|`Q3>(!X@c!W+f3D3jhCUPP)CP)_DOgqJ1b)@Vl$7viY5ZAO5OCcxK|I%SI^0$s`vtS0-vVgETWU)6k$Kf59KSIora@!ZJ2GN<~Teqosv2 zLNU@bLn$WZSf_G#Wz^wlceS@y&AQyQgSto?yOfbACIn4BJ$miF?Ty>FZ}alnbVPFN zyX6!VL@B00$#8YR`i9qif0Y_+{#-Vg&Jnx6$sp`RNlh&vAn*a1vWBT5^pOga|G^g| zm3*0$G&C@<%4v1XdCEf$`Rv&>mH+PD*~!2=@1>rpsHi~o4Cm?9)YP~J25>}hAP@*NCN?&nrzakmNF<`Dq@=U86?QPBwA9hUA~PT$VC}rPcpX4mkv114fq}k$ zdAw2W8`mHHf(XNh;D%5eMJhN_@ zHQGj*3=Iz29(eo1v?@rsiRt)T2M2cm{zynjA|fKjOvOU< zdC-N0y(FtEE9IoHWdL?*QpsclKF;fttCKZVP9$=1&F`gdHu6<+C#%s?QAK?D!WE$? zg9uAZobqEtWeWd-c7@^vz)etNgON?>NL1)g=4kO+zuV<2_vv05$Z(J@)fIicsD}8Y znAXc+>#;kqlPDzU!5-yX0J4!F?7C{v75v&`)ZeQQ|4TXBnv7Mz@%nB&)L z6FOCstl@33v9Xp`R*tN;=g)fi`LzH9?RD_hl~+}5BUCa};{Pl!mr7edDyXeRVJaP= zbsZfYZ>12^3s|sW&v4A01uARPCXaPdi#$EdW=)nfIWehXM3M8O7I@mpkINnE}w@78AcC3Dc4M zW}VTga-q8bGQzW&<8CWuh%kBj4mvuza?%SIEmvnIK7=%s1Q#0l#+G+4 zl3Zhp>fqHcmq1P&ZmEhNf7Q&P;nsbwUHojdl<&Qq}cQ?(w9^tHHk4SHzPYNc!SU|ANK=y~EQCDky~6d0kH zrp>iBkkON_95?AQixX93Ve#?tb#-<6JkE}e4EJ7AlILj`A%uk7hI4i3g43Y~Cm8%| zYisYsSguV}OfaP9i5PbRG>wi{z%T&rsx_f)7J3rv-2T3FaB$Gl(qd(0^^(|Vrngaw zxq}k~EG#UIexyd_w$G5rA9^-5P2;-?E32z;^J`>e^|u5V853(gjnNcVA+BWBX??3%Y0J{~la-_D zCnpV^JGoiWqj15KU36VqMuzz5xk;CX#zw#|F{?3tl(+vg+EwWeY99Uj@DzAXE~A8E zHH@F1-^JB6Ej|5@q2C_C(ccjx8ZPaRU%p_!a_++A4SgqT+?Ppugln>d-&_d726%=( z)uUGO9J$MVDjEzuLrB9@QXTin9{?p?DQ4?1${d6oZ1Y53Jg7XY zo&-^&@QLAxiEA`8f*{1^1i%qQ6!@#9kLLo&Np|bRFW^K{p@#Dt` zCZ>a-5xi3p^+?kTXV2_qSTiJ1?URDB5qdYWNurKDi}N^(h1XBz4bR_qQG^Nx^2)3B zqz0L2DzBh`PfA*lmp3nH=!pGhjn~7>$46EHqZms}Of-7>^hVtwoy2SJGGm?L@$on# zFohO0FhgE!=@J8D3Vlhu#Ep;g%vcWGY~Vq`uUm%yV=g!TyV>;mm*;}PD}l_!sPkQyRX^UtQ*$2-Me=W15Gpi z-5Vfq;tL2&*jD?!!;3Yj`lr{uTUD)sCRNPFpw5Zf& zo7%pxJ$;f&A)Nm^*t+s$JMq-S%xrggBy_6xHaMKyz{NnLp#SyfK@0o%_yEa-sxTv- z)3WgL7L=3>0uT2oGiD9_0SQG@n_ST)9 zobq#X=Wtno5S}cLx>>qj{zNNrlczoZo)Loo+tawA55{fnokWN~#oM;h&30{XPwy@c zs~ezlZmw!)DAXdV1c%aYkusesARBnfs0kzKU#}}5m7BEYs?dQ)yJ+2_laV@AW?5-u z^Xy4~TL+rs>4NdzX>NjGrN>U69PkMD7F!uI|3GD2W6=3~E9DHV;q8xFQ#IRAi)LT7N@>)GA97ucD&j*4EZ@V`FJ)=>t(* z=SWx#js6&@TFT%=GV=)(9m++E@JKoGJp9=-%<@vz;eh*ZmnTJ||Iuy^u?{;Qf3Y&w zH#YXA;CZ`5s+Ky-TE|Ak%GxD2yVd3%dFEo>s?I%y}fd;cOJ;5Fz!ZNiA3_&4` zrR?gWKYsiOS_LTlgb(J4zej|Az?0L}BOr`S|SKFjI4L zibwDgIXmSC5QN}hcnm5(3j*p*ho)2*W$gAibBsQ|wA#D?Po^N&4dfR<-k3{8n<|W>4hkP2vSy>3 zBHr0e-FcsY_F%xka9)PzpFFPqq0j%F$N5|L%2wKB00+I@1sbvXA?k9FQ&2mDL$0x= zWNE+sv=KbuB!-S+AY8?V4`*@j7#2fqw6@Bl{@!~lx7FbAOh@wu86Oc7<&5V)Na`!M zbrwrvJzDY?Jq)p6ec+b}K8xl^NPfkwaT0x>}V{_A$I8nprg1QCM+MxhwY8x0(31I+oi_Xw8 z80Z#`{~-PUg(wr2Nd}(eXx984)`QUKMhY;VuD15#WGemDt5<1gQs_hL>OA4&1^0oa>g(&3;{>>Mijgeg4}^sB_0Vha&Xb#ad%sz@ z^vgevE3#4Iux=#ZV19o7;NT#1<-$(5ZXO9C;kTlqJ`!-=$5?E2b+z?m^;JsBo!xO8 z;rsVRDxt{nMEU}Qthr;Nqvg~3dwY8!2D6O-me%=Zc9o7!ObD`}XVLIY2xmZIBhgxo z5ETO|fnTin6~U>6MD!V*9%>=%ZEbCxoqIYvk+=lc#f^7Q7wvWK5(tEZ`*u=jZ6hNi z1A{!hU$nHeLDxmc`ua8@l*C?NO#bxg6I|YPd*KBq_z_5@21y_Y(RuVJnE_W4>uzD@ z7)YJqLM4qoVn<4du)(1ra3=Z1p#33ST-%1w5@MqOHXx>|Vdej1riQ8AGl$s_O+pL@ zWB_%jr;(*mX=B94&#%D|F?JJXkIkpKiaFT~_5334X($Ztue-Y&0zf!G3Ls0s3qp`Y z{>aU(Qk!cb9cYFSAAf1A^p&n|tP^Qc-OTJPko?lz+*dt*0Rc@m%CTo29yO5BsW8ID zQ7y2v_7&CH*@|fU`F5%prG@3?D)XM}i0lH~F%qA|i9pPN<%NJp7>rikr9&2B;W+<0 zckbZ4qJE8ADTolTuI#gR0@7p`n3+Z;+w3 zwk|?5Z|&|vrUdcvRGC#=w=7IxL)dW5iU9c|=?SI)Y^`CH6E_RX0#pG7i;~4v zj6bCCS^4?aOZ{osi`7?%h=`=5r0g9WYO1TjUI3**uGoW1ckonM>ep3Vu0#HSy#k|m zU&2(O*EXsL;wl@p>RS`nwm5i?b8)5xubS=uCuGSmNx|iUJy0jF$q*^Jj(6*_dtMH8 zAyCA9#AAv#$jJIY${zr?ymi7Q+?ZtF%wI!7IchD1bf{n?1gcoN`hjOUWto|+{r$y2 z8rbVlavh&PeY!$Uo~*&)7#K_>{5AZC#Eo9=KkN~{qX$VRzKUHrvsMHf`r46Hm(Ncm z;=UqL75DU+2&Q>Zimikat#3IIp75Gj!lgAY^w zdbgBXZ=AgWafF0lzv9l)zOJ~-zkU$D8V6vz~F$QL?tUoazH?G&LB#Tl98-}Ga?`&Ig5Z2M1tg`2#91P zXC>#H)9v}ssk-;vdhb=ese*5)`DTB;d#~S{)CMKoZ_t zo<9S>GbO(g!iCsLPR|7oj~s*h!Ke9|5sZg-*sgACQM8mlFLKo z@rsPv(Eokd`=F+ZR1xZnuk@QT9JC6wZJ#+Je(3V1KsvNn>6`b)co#jmZ~9r@>L++mU| zEU0Mna#ACtLA=jUV~-)*7lF=xDs~Ni>etskqazH}+E!WL6A~mwMMb5gq?DEl*Al>D zsSP5obE-~GPS)0+9D)-}%{QjKX@aHAu*jt?OopzNjI_143jsb;jNqF;Xl-rns<*YZ zr&G<5UNZ3I0GbTTj${i93u|lZiiQAX?L5*KPm{)qNzOiNr|62R?Ib%RhEG#VSEDiGe9=P)I=3^<@ z{kD5`c2`Cx$!*?Q|IReGu%J*gG#uGmpDcA8Z%3|Qc=qhs`}FkvURw8~y(fP2+n%2` z83k=L)zs9UJX!y!mafS`U7LVOcCK4mT9S{vw*IO^@KGblivJsTTtxAdr?*hND-++I z>*?t|eE86QsQ6P}-d)eNiEOPLGG?*sG$H%hX>Bt_6OFto=DwzRb=u~AUd(sm@?{@v8X&dQpe zo13eXZ*1bT9uycT1qX&kqot$*<=7YmtU8wliyF)d6f%Zjl_*Xf0fx3WSMJep>pwO% zotT^~a-Hvf_wL={?kZBmX`($z^u~=Fu*sdB9rV^*SNi<#tkXr4)4wM+?d2}BWQ-y# z5pslNjC+Txwd8a+O~1b&CTA8KsBp7=^5j$+?+`D%# zG&Hp3WNLDf-?R>I86P{>8pn^tVi`hZSuS~cdX`mI^6C|Sc>msPWu$zuKfko3r`%TZpzBaA+)@GZ8aU@D!~ukmj)stA|Be<-0?f|bf8^{lvh@c zR>{q_v$w-+dCDkCGKs;UZU%*dGTOuJX^tCA=Z5g*S$LnDi3 z2(@U9y;V?9AS5Id7Z=yn)g>q>$kn18FCc&DF+WsfsUjsMWopXOKT>EOqRVx%(ZZX; zcn%M5%^6a7>GEao`R)vEgAynD&)L}u98oi~vqfB@fVmU0)whi*%_K}{`_j)} zzq0f4sIlmzJ8l#gf>05dhjc;G2u4OmYHGK|zP#1i(_{?b8vtNtW>(@jo*WaiJL)lx zP=i0=92FH?YkUt^#;OzEz58(YOjGx!=2^w@^Xa?bvB9{RIdbW`#in8mWNAMQ%;X&KO0qUY;0hzb8!3` z9rYcr@x68H7TR^TooSS^(`HSKpAYwPUmp4ji*IZ=kMXd|zLrx_nJsZ~cDAvx2_~U` zzdTy&Un|KX;<;w(>A9C@P+Giw&|~8UbpVhgXB3%OT}9H8a+*N70I^!(TO`HPB+ z-(h-ewlf~Y$c8hwA-q@<)A#gAlHA-iyaBBVh&t+TlqE4l}(L9zfmSEw$qE5_DU53-7i4i5|r^!7$! za`W?|!4lf9Ld9C~JEW+YZSPyZPD3AAAJ)Z$_bHGS|Oo?Z@4&Pnz22>Q#HT`q5LFZOrz z^lbfY2!RM18XAUzB*F}NO22&R6oO(Y3x%n0?(C zNguvSb)o+IcM1xM59*)f*y6>!HUK}lqHrS-z}b6mElu_MyXMCuuTx>ouV1GLtyG>H z93%?aGxTfb^b!z}v7tU`#=m)UiGe|1U7gQ)>gR2j87HKX?{KZ@o(Y6gtg#ETgzmJyzOIp} zDF5I={nlkXJOOH+dTx^%F$swj%$u=d2Kos=zN~Dc$?1X4iUYxe2Q4rbm*&XQc@Dusy>)>2%q<(@8M2MG&k#e=-K&( z^%I00R|bn_7kYDor2lw~`+EHOe(vdpVsTC=Oj_tUgOwhuDU~NN5fNRvdPNp(@!QZE z;mnW{ej~%f3BohhfO}3(&hq7h2OrS_kU+q@`(j^cf^W~Vjgv`)+y_$2-rn93SwNSa zogK`^mt;(sIr`0B2pKj9V;zQPlCUFlEhH+npqM`FpA?n9;GhX1M~XAj&}3F`%tNbm zF0Z;D&O8zTHA4|0omS>Nt#EpBtfZ)zn3(wX?OWYwb3GxLpSN$vVS-670~if8G=N=ES9x`Hwd!>!v_CMR z%bxEp4Q@g%F9bb%NVmN01Nn|>nTGvcML9I=$C&u3<@AQoa94Qm@*uv#>2!B*SVtO= zF8t2w=*`hF=c8{a9O-=_*52L@^RKzNd3&}Vs7NG)-(~eqVLFcAvh4lWuiN!6$)gmm zB9iWUM{`EU#2D!54Gs)^;YxV(CRIBpWrv=Dp1!=IBKXA%9EtdL9vEGxm0|F`r@woD z(u<%DW)d7>KGE4GiML(KDpga~75Shaja7To($elO^oI2J7CdV5+MLNVt{wsm zLwoM(Qe(MP1rLb4rleoxS%AehLxs}v7()LAgzAjds64W??639rM3Kg**Q7q&Pc6}Rhul#vq365nw#T<9g`ub zA6QC&lK?~L3LX~CXE*Sr$g-n7MZ%<18J*(0GdR5^D8PUW3=Yv1sKjhkrYXun3#ZWr<8OjYFz5a&DT3uEHBdXB;Ik$ z4hd(P$fncu3q=M4UCM8G&Osm1w@R&1LCD7V^k9&Q&LRS)DXLLLVm~yG)k|)tYKxe zvi5k#0Jt%5-kMJ>Uw|@IRaKQ4AYp{{e>Q4Ct_vMNxWe{BJ*AE&%Sk1$+M2%LF$D*_ zku3W5&lPVD|3Bo%L0+?ClHESTc_-+u{}ybNNMuK0t|ZHZN7eEkewg_nFdvu~>kF_B z9=8JE+{$WBG^pxD#>2Dn z8yg#|si|2tead=P#8ZZ=<>}L>8#%CQ+jpEW8}x9xvi<47M?7B8t#WJ>e$>$G^x#eF zKRPRbSuy~pb~^dbJK;ikO8B2LEKaBTq97libI(ULhR|T!=y&fD#eMIHi0Edh4-OBf z+;LMFZiu_%wg8P;2Gs?c19YLiy}cHPmXy>tn1zvV-hRPCF0-N_SVs!=Xy# z2&7%^G)2`wohd#5nTY|r(1Ic z59@6FbrK>HbLGv6VUJ&#zsfWqNUTE)+WAHx-WBZaaB1_|DwDfNW&{A z=mvy^nwpyFj;n5kt93Z@-91)#c6>~;h{|S1jCxYMEuUa-c1qEdca1r-#8YR}kiN6{ z%KiDZC-L#|I8yBQGAxjQD2(y8GfdcX=gt{U!&YH{fbdptb&X zEh3ajROr^Nbs+lCbdH|DQyj@yV|qVi>V6*iDcIouIzc-?`wKsPZahCNE5sIaiOGQb$yGJAZbR(Xn&N@F3IPFNhpzY4eXpZ;fvzQniC8f|3JunY|tvO9d+MAD6 zd7&bH_Vs}l)HdibCZN4^sS`xk)YM~p+PRAv>Yomyxj_bx`V-?$<5gKgbz7Gv3KjT9 zH*@BD`7d8lj9hn?gn>qSRje$!b@KkN2ehvZWu5UK?B63q6ns@snrAhiF<&nEXfK*M zRWMMXvL8)~Ml&e24N_X9aK9fNw&~UgeMzcwyp`VhUA?;~pNnmczR6!tX`e1)YHI5H zcWDz7lTkAO36>0{prYd8>2w!EmVz>lC8sPu>RwndINr!zW4PFif9 z(Tf;e7P1ooi4HMkZ8t8KrD|8dl?gG7=K1^JkC5nQZ%V2WxyQ!^1nKTVnY6`E_!2*H`^dy@4?uJwcvqi-6>hr9u=MvdE4Jec^Xh%1XS79(DKdwD$-Ojr379?OWTxBf#?drCvZ(5sR!3(QCpJNb!9}4 zBMNBRyO@~ap&>#-!Ubar@FqJ^J$=6(p}1>wKUKvxzKe=>T;osK4cb5AmA{@_{dD~t zuWDqFL$U6cs?l~&RLM@3trqcN*;A#VIQOoXHtkm<6=cwMN=lPqCMk98?O`Sap7i_s z`?!HA>GG$I#>jaob=c=3$?-IPZO;_UBzUb=T=_p6e*ZQ}NzO0|B(E4az!)5R=dpHp z9-oXM+}m(7g7y9$6MVl7B`%(9K4@7hK9TnVk0}3z`JhsQ&{cN!O;PyNxCl6VaBy(V z^ZC#<786gmk$iEI`tw11zVKl@ajBiYMD-u38a&jN-`iv4PKZu0|=~I7uq*p2LF!+@mf{OlW=KYAMXk%3{Y^ zvZ;FDXgo2IJqjyjidIcqFEe?{MnU|qPyW9~v0HDpmQkg<(HB#E1YFyo$al5JfGo($ z$RN7F(*#L4IX7ozYPz=erydMG3A1p`qcx8!GDpx+OL?_Qi{{%Tki#)3dXO zdwX1Zg+E3|lQ7`JQ8F_d19!Es5CT(5SXlT3H=@@R^BE>QXF5_+qN5u*l~crh_cx{! zgzWXf@>9I#;^d?YWRD2xa}&6`Lmik(<<&2w{{YSQSRT^S)%BeI6~!KQ=0HAAo9NuR zulB>*!&|$%DPmrQFJCr|R(c#C9gX>)`a7;;DsL4S}LIOJArcQHv zd-83U%(S#Wkpx%_U2r*YA7kU>^mNuUBf}42OTYoZf|-d2|AY#QPVw0wMgTjhtf~vX{V6!HYXQUM}7VC z;pDsC?#jw!2oO?F`s=U_f2*p*KFEw#0|UBgs#XbFT3U^bjdzZ5C+VZaI5FkyB`=S4m3b%3<)Z_a|;_1#(0gM1_a^}o~w>INg1rh0U=*#RsE^fL$| zTpdZHDm+$`fwWOpLYC_`1)c=tsK7y=J?nG4-H&z!XSTb$8%VkT$^I-!y%n!r|J&xr z;FWFf?$&y)o4L6O=F@J4?37TW^ef%-!2PYP^fod|0?`iz4u%_ygwKZM6wJ(@i*VT& z8@H{+24cdH65@b1TH2W3St{Uaaq{tP!2AG@DF-=$xz5A$xvR^0jGzq=7c z5s)nPerdj#;nuaaGvY-PYb-Qd|sNlf9N44{yRvK~a%}m{^S? zszQeP9)Z$TLVwvi)tTL2M3Fi(H+qlAs<8OROuISZE4-2rXWN9e$zA`VoBPG~oEOu6 zs^{i&h8Erl%?-nH=iM<e+OUa{S&ZNWI{2b)VN zCpCrJOzdKmUgX?fL(ekRu7^oPAqrjn-ti3r}7~8U0z>^x1y_0AiL` literal 0 HcmV?d00001