From 14785fc7f322f874992edc61bd00d9b0e38d6d36 Mon Sep 17 00:00:00 2001 From: hschang Date: Wed, 13 Feb 2013 13:30:54 +0900 Subject: [PATCH 1/1] update Videomode plugin. --- lib/python/Plugins/SystemPlugins/Videomode/DVI.png | Bin 6865 -> 0 bytes .../Plugins/SystemPlugins/Videomode/HDMI.png | Bin 4098 -> 0 bytes lib/python/Plugins/SystemPlugins/Videomode/LICENSE | 12 - .../Plugins/SystemPlugins/Videomode/Makefile.am | 13 +- .../Plugins/SystemPlugins/Videomode/Scart.png | Bin 8633 -> 0 bytes .../SystemPlugins/Videomode/VideoHardware.py | 480 ++++++++++++--------- .../Plugins/SystemPlugins/Videomode/VideoWizard.py | 214 +++------ .../Plugins/SystemPlugins/Videomode/YPbPr.png | Bin 9880 -> 0 bytes .../Plugins/SystemPlugins/Videomode/lcd_DVI.png | Bin 291 -> 0 bytes .../Plugins/SystemPlugins/Videomode/lcd_HDMI.png | Bin 261 -> 0 bytes .../Plugins/SystemPlugins/Videomode/lcd_Scart.png | Bin 362 -> 0 bytes .../Plugins/SystemPlugins/Videomode/lcd_YPbPr.png | Bin 312 -> 0 bytes .../SystemPlugins/Videomode/meta/Makefile.am | 2 - .../Videomode/meta/plugin_videomode.xml | 27 +- .../SystemPlugins/Videomode/meta/videomode_de.jpg | Bin 103506 -> 0 bytes .../SystemPlugins/Videomode/meta/videomode_en.jpg | Bin 95799 -> 0 bytes .../Plugins/SystemPlugins/Videomode/plugin.py | 323 ++++++-------- .../SystemPlugins/Videomode/videowizard.xml | 92 +--- 18 files changed, 507 insertions(+), 656 deletions(-) delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/DVI.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/HDMI.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/LICENSE delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/Scart.png mode change 100755 => 100644 lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/YPbPr.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/lcd_DVI.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/lcd_HDMI.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/lcd_Scart.png delete mode 100644 lib/python/Plugins/SystemPlugins/Videomode/lcd_YPbPr.png mode change 100755 => 100644 lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am mode change 100755 => 100644 lib/python/Plugins/SystemPlugins/Videomode/meta/plugin_videomode.xml delete mode 100755 lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_de.jpg delete mode 100755 lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_en.jpg diff --git a/lib/python/Plugins/SystemPlugins/Videomode/DVI.png b/lib/python/Plugins/SystemPlugins/Videomode/DVI.png deleted file mode 100644 index 168d7abc6fc68fb5678ac6a1489a105efd449bf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6865 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 ADF6Tf diff --git a/lib/python/Plugins/SystemPlugins/Videomode/HDMI.png b/lib/python/Plugins/SystemPlugins/Videomode/HDMI.png deleted file mode 100644 index 5aa830472d3e4db90fbaa823d0f3442ba73e7850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4098 zcmYLM2UHVl6I~*NF1;oYN(dc8M-Zg<-lP*kuOXCxG!r@^pdcNTDk4p!S1BSO`Vb#o z&>$)z7NjdE|LS}1{BzFE+i`dl1*v=Kj$D1cDy~U>|>9mw%M%s+^!e_wX?9e<5GbcLV;rsQNL2?T!-#K+nHezw{;oH2h#*af|GnC9ymv?t1_UutzmM@BOZc-9JkHa}(c*q{ zN&KJbJlyTho@F#P)&|AaDl>OC8?2}2C3~|lytl89vz4WR2gc6U#@OB6+1yOe)L17o zBi7Z~+SSFnrvyNWprmCKM368pZiK9?ECL~bKnN--DhUdSh)bM{3uI7M;76m;Fg{TP z0%4%ZcFCM0IgDOakv+tNH7AbF!=BSnM-Yh=DNm#BEeE8fL`G|Y=9>^n31NPIerZYG zJ2{ktRe+r-x3I8?l$6wP4KRKekU57wcTQeV5G5|Dz|Y64s346*qQE=I#l_u!3xL4| zd3bo(*trA*1bWJVt`dNrksDNCFjz-1fDk}-mjXy6Qcg}zUS3`p>?F1 z04NpvHQ<*{uQ6~x?8OuSym{s-aT8zyu;cMKFA;!{cvuJk4M0cP-VUG$0Jh(LHym>Y zxPAdLivaKoWVu`xesBQTlKY(+0%!q%9-wB015f}|S%BvN!1X)xe>;q~TL6nb8tH1; zMlXLZiM4(Cj%U2K&^@?ev$3PJShXwiukvEylqNo;uNU2U+I*z5l>b|aWR9NnT(iu# z&qG31P!U%nIIfS`-3cG>&3w6;!bu6KWtP%DLjj>QG_rsouWL4YO&^!SG}kBIa;i^Z>W|^OuFi zz~!*%nLhWJUt{XWhlr()-ElP~T+CJmLgV{SL>%r=nCZ&l%-6Ws-2tZHzNpuphoAam zk2_tXu7vN-$MUcI$ZGi-k2(H%82sv6hqN%Jry~;v*^M+E!S685WlI0s=<%aZx8HPScsiD63>7(ow3W`Rd%D3_` zIdop}Bbz}k0ZXB7<)-f8cX$*&r-cfw%`ARRuX7DbkXDZRDubX;zHQ{ij#r3glp?6A zalKsgBt7{sQWHV3+Dfl4=&ZZn1mqV+i)p+oBIi~^p{^M;yTNP)mr}-_YX?r~*O6{M zWmsIBl5K1@^?I~XH-9q!1&w}j-t^6`#)Wj6n~D7+H8Bl3WT~}o`|y0xfZHgqo5|Eo>dz@I~0K4TJ)X%VG8i++c_>7Rrny=W!;u{Ny7o*{4{WuF<;165`{PegV6bp)8$Y?rDbxt>PKPH;r&p4Ze$Y4 zrxj`~El-|h(_jtdencc;R^FnCXSAk}gX@x{!}Pg+-3X+9*a!17d0N%$UoLFp5H$Tn z0sGN#+0+6j6!Wd{`60{#{_y7%H6#Z|x|qWzNw$=MB(c_e4-YkZKeWOhQ+28c*z1y^ z)0=L1ZPWt{W%4Xl0Ytd){dM?ImBdk`>KXV>UK_c5zajJ&8J$ z^kwSbn-ql!Z*Pb^A6>$$S17MTQRS6{p@`u<^bmwWMhAr@`5`@8ybJ3N-(2w9P&L)b*vZHo3mZ zJ-&P^8(xa&NC-=~#l%gwF#9$fozPciZE$vkQ4Wr_rHjDBTDY4EMI_ z>C!@QN(+iSrSF55@vhtZvIoQfFQ3{FPd+_m(Bdne35OsS-Y)eeAUqxi|IR*+5P9uj|F4 zx7`bezOEkGB2|2Mkg@(S-Qxw}?Nr$DqRt27w>>02H=lzL=e{9YWym7uiPHxvI=RD7 zYJr@Kn{@i`+&W_d0o*}V-eI#9rc^RnKqf)DjkjN}yJju*N^hhYq|~L-UJkcx_Ce&? zhkR1`(}W+JinJFtj1@D)J7ChUc!$23a-vV$y%`|}E|s>jbLdymuxKBQl1}fi92)KA znfh=$aREXN=0ptFx_B?hp#v2{^>qlJKf$Zab>mh8Nw0gXt@14s6S^h|TUNxNwpA?5 zZ=}uF*EelChhf_1HVX5Ku7A@wQnzTR-w)%^^VUbce@f?|O!)X@!tnEAQBBi&Te30T zj5DdJIho6gcH-_{w!T8Ve_s}KYsfM$e5q|zSa@Sx70I{|Q)jpHWss8f9DLWB9C?X` zrB>=>gw#cPhINqW5r(-Rz}$J4@J_&ZY!4Dd>zltvH@IqY0A$pUy_5=PXeYtgo%#?K&HF3nx0N&(?^Ct zXcX$9YNGE4Jh9sQYrL=N-4co|&FLho_=J_!sGu>_qIWh1^pv8xcP+_w%J&0KOemE! zGJU32wmX`&1{NT@_r`*^Kgd_TV-^>5T$-$ph7~ckjefq@tkq(SR$mg|%4PELf*%-? z6{EIsxmZ7cNF1Bbbk`J0UAbt!;cZg+01wZJsg@6fY4?{tC1%aHifOElTv}1j=byi| zLH+J;{?zG1A454RNUOFKIXr13qk;a@cR5{SiW15K&Vvg78m&7E77X|7Wr_Eyw+Cfw z9U6~J{W~ONG-6d`X>MgT(4Jta$QWU+0$+24x34JIc=0^}#Fq$we;a z5GyBXRLnG0hq*x={an0@z7Q^w)McOOz(?}AQLD)Gj4{eIB9Rm;Y_2o+E^Mj8-l&?9 zv$Ji1BN5Q3X-cUO+5XmXg!jl4BYcuA@Hxf>S5Va&qbPUzj3 zzM5*5;2u`{gzwlXj{Uj$1{)^~oZ*9fT!^Xt@JGl+XO=k5%nC-bzik?nLa{1{*Sp%S zurjn%yU}v-Cf&Dv{r$PrhUL!G`dfs$;pn!iZ%Yw5lnD>yj-*CNe%co6y@Xk4dD1;2 zhwe{Kr8PPv&X5kV<8ui!QIUJbNe9}2Q?vQ@M|eGTjpjfl$)hqcCv$(wNIMcDo(i2= z>&HnQkd~&e+Uvo#7y77OIf9|W;%q)=?MPUBdtGgCdmW!%PEMy=ae)6qwsFmN0oI!L zd#lyt`OEpXxYvw@nr+-VnbJ&{<6lCE>ZO zQB*^V!reK`@D)wD$jTIrzi}y{>-&$-4ieemaBhc!lCm>}5pPr}mDbw03;FX43OIQt zzoZywPv4Aze+?7+$$sy$Noh>`MyeIQ+1=yetHp`wxA2S6%o3d3rN)xj>(RDB>foy1 zBWHGYcWtz*9V7f%-Bc>!>4!Jf9~(M)eflUK-*>mdC8n;2XCs*0IQdJ=O|qvw-lp7S zo8M;1>eJfal&1pf+tC_79iq|}BSu3xLGqPVuLl*5NvZ3;^KgSDu?tFaFIe~ydGTV63MK3#)has+lG`6= z;?<%~cZIbrIevt6G^Sqhyz`JnHG7oyabdQ-TWU+$dz$I1=8ad$<;?=jtwcul&{xb= z*uWnJ%j(Q6v9v2x;3v& B%(wsm diff --git a/lib/python/Plugins/SystemPlugins/Videomode/LICENSE b/lib/python/Plugins/SystemPlugins/Videomode/LICENSE deleted file mode 100644 index 9970059..0000000 --- a/lib/python/Plugins/SystemPlugins/Videomode/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -This plugin is licensed under the Creative Commons -Attribution-NonCommercial-ShareAlike 3.0 Unported -License. To view a copy of this license, visit -http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative -Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. - -Alternatively, this plugin may be distributed and executed on hardware which -is licensed by Dream Multimedia GmbH. - -This plugin is NOT free software. It is open source, you are allowed to -modify it (if you keep the license), but it may not be commercially -distributed other than under the conditions noted above. diff --git a/lib/python/Plugins/SystemPlugins/Videomode/Makefile.am b/lib/python/Plugins/SystemPlugins/Videomode/Makefile.am index 1ac1d5d..de7e13d 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Videomode/Makefile.am @@ -6,16 +6,7 @@ install_PYTHON = \ __init__.py \ plugin.py \ VideoHardware.py \ - VideoWizard.py + VideoWizard.py dist_install_DATA = \ - DVI.png \ - lcd_DVI.png \ - lcd_Scart.png \ - lcd_YPbPr.png \ - LICENSE \ - Scart.png \ - videowizard.xml \ - YPbPr.png \ - HDMI.png \ - lcd_HDMI.png + videowizard.xml diff --git a/lib/python/Plugins/SystemPlugins/Videomode/Scart.png b/lib/python/Plugins/SystemPlugins/Videomode/Scart.png deleted file mode 100644 index ce36d599ed2cceb79f5974d30d52224317dd8c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8633 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 YfYz84t**4*E{*~6vMMt5(xzem2i0~ORsaA1 diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py index 6ecbfd4..c192395 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py @@ -1,318 +1,354 @@ -from enigma import eTimer -from Components.config import config, ConfigSelection, ConfigSubDict, ConfigYesNo - +from Components.config import config, ConfigSubDict, ConfigSelection from Tools.CList import CList from Tools.HardwareInfo import HardwareInfo -# The "VideoHardware" is the interface to /proc/stb/video. -# It generates hotplug events, and gives you the list of -# available and preferred modes, as well as handling the currently -# selected mode. No other strict checking is done. +# VideoHardware is the interface to /proc/stb/video. class VideoHardware: - rates = { } # high-level, use selectable modes. - - modes = { } # a list of (high-level) modes for a certain port. - - rates["PAL"] = { "50Hz": { 50: "pal" }, - "60Hz": { 60: "pal60" }, - "multi": { 50: "pal", 60: "pal60" } } - - rates["NTSC"] = { "60Hz": { 60: "ntsc" } } - - rates["Multi"] = { "multi": { 50: "pal", 60: "ntsc" } } - - rates["480i"] = { "60Hz": { 60: "480i" } } - - rates["576i"] = { "50Hz": { 50: "576i" } } + is_init = True - rates["480p"] = { "60Hz": { 60: "480p" } } - - rates["576p"] = { "50Hz": { 50: "576p" } } - - rates["720p"] = { "50Hz": { 50: "720p50" }, - "60Hz": { 60: "720p" }, - "multi": { 50: "720p50", 60: "720p" } } + modes = { # a list of modes for available port + "Scart" : ["PAL", "NTSC", "Multi"], + "YPbPr" : ["720p", "1080i", "576p", "480p", "576i", "480i"], + "DVI" : ["720p", "1080i", "576p", "480p", "576i", "480i"], + "DVI-PC": ["PC"] + } + rates = { # list of rates for available mode + "PAL": { "50Hz" : {50: "pal"}, + "60Hz" : {60: "pal60"}, + "multi": {50: "pal", 60: "pal60"} + }, + "NTSC": { "60Hz" : {60: "ntsc"} }, + "Multi": { "multi": {50: "pal", 60: "ntsc"} }, + "480i": { "60Hz" : {60: "480i"} }, + "576i": { "50Hz" : {50: "576i"} }, + "480p": { "60Hz" : {60: "480p"} }, + "576p": { "50Hz" : {50: "576p"} }, + "720p": { + "50Hz" : {50: "720p50"}, + "60Hz" : {60: "720p"}, + "multi": {50: "720p50", 60: "720p"} + }, + "1080i": { + "50Hz" : {50: "1080i50"}, + "60Hz" : {60: "1080i"}, + "multi": {50: "1080i50", 60: "1080i"} + }, + "1080p": { + "50Hz" : {50: "1080p50"}, + "60Hz" : {60: "1080p"}, + "multi": {50: "1080p50", 60: "1080p"} + }, + "PC": { + "1024x768": {60: "1024x768"}, + "800x600" : {60: "800x600"}, + "720x480" : {60: "720x480"}, + "720x576" : {60: "720x576"}, + "1280x720": {60: "1280x720"}, + "1280x720 multi": {50: "1280x720_50", 60: "1280x720"}, + "1920x1080": {60: "1920x1080"}, + "1920x1080 multi": {50: "1920x1080", 60: "1920x1080_50"}, + "1280x1024": {60: "1280x1024"}, + "1366x768": {60: "1366x768"}, + "1366x768 multi": {50: "1366x768", 60: "1366x768_50"}, + "1280x768": {60: "1280x768"}, + "640x480" : {60: "640x480"} + } + } - rates["1080i"] = { "50Hz": { 50: "1080i50" }, - "60Hz": { 60: "1080i" }, - "multi": { 50: "1080i50", 60: "1080i" } } + widescreen_modes = set(["720p", "1080i", "1080p"]) + hdmi_hw_types = set(["dm500", "dm800se", "dm7020hd", "duo", "solo", "uno", "ultimo", "solo2", "duo2"]) + hdmi_pc_hw_types = set(["dm500", "dm800se", "dm7020hd", "duo", "solo", "uno", "ultimo", "solo2", "duo2"]) - rates["PC"] = { - "1024x768": { 60: "1024x768" }, # not possible on DM7025 - "800x600" : { 60: "800x600" }, # also not possible - "720x480" : { 60: "720x480" }, - "720x576" : { 60: "720x576" }, - "1280x720": { 60: "1280x720" }, - "1280x720 multi": { 50: "1280x720_50", 60: "1280x720" }, - "1920x1080": { 60: "1920x1080"}, - "1920x1080 multi": { 50: "1920x1080", 60: "1920x1080_50" }, - "1280x1024" : { 60: "1280x1024"}, - "1366x768" : { 60: "1366x768"}, - "1366x768 multi" : { 50: "1366x768", 60: "1366x768_50" }, - "1280x768": { 60: "1280x768" }, - "640x480" : { 60: "640x480" } - } + def getDeviceName(self): + device_name = "unknown" + try: + file = open("/proc/stb/info/vumodel", "r") + device_name = file.readline().strip() + file.close() + except IOError: + from Tools.HardwareInfo import HardwareInfo + device_name = HardwareInfo.get_device_name() - modes["Scart"] = ["PAL", "NTSC", "Multi"] - modes["YPbPr"] = ["720p", "1080i", "576p", "480p", "576i", "480i"] - modes["DVI"] = ["720p", "1080i", "576p", "480p", "576i", "480i"] - modes["DVI-PC"] = ["PC"] + return device_name - widescreen_modes = set(["720p", "1080i"]) + def isVumodel(self, hw_type): + return hw_type in set(["duo", "solo", "uno", "ultimo", "solo2", "duo2"]) + # re-define AVSwitch.getOutputAspect def getOutputAspect(self): ret = (16,9) port = config.av.videoport.value if port not in config.av.videomode: - print "current port not available in getOutputAspect!!! force 16:9" + print "current port is not available. force 16:9" else: mode = config.av.videomode[port].value - force_widescreen = self.isWidescreenMode(port, mode) - is_widescreen = force_widescreen or config.av.aspect.value in ("16_9", "16_10") - is_auto = config.av.aspect.value == "auto" - if is_widescreen: - if force_widescreen: - pass - else: - aspect = {"16_9": "16:9", "16_10": "16:10"}[config.av.aspect.value] - if aspect == "16:10": - ret = (16,10) - elif is_auto: + force_wide = self.isWidescreenMode(mode) + valstr = config.av.aspect.value + + if force_wide: + pass + elif valstr == "16_10": + ret = (16,10) + elif valstr == "auto": try: aspect_str = open("/proc/stb/vmpeg/0/aspect", "r").read() if aspect_str == "1": # 4:3 ret = (4,3) except IOError: pass - else: # 4:3 + elif valstr == "4_3": ret = (4,3) return ret def __init__(self): - self.last_modes_preferred = [ ] + self.last_modes_preferred = [ ] self.on_hotplug = CList() - self.current_mode = None - self.current_port = None self.readAvailableModes() if self.modes.has_key("DVI-PC") and not self.getModeList("DVI-PC"): - print "remove DVI-PC because of not existing modes" + print "remove DVI-PC because it does not exist." del self.modes["DVI-PC"] self.createConfig() -# self.on_hotplug.append(self.createConfig) self.readPreferredModes() - # take over old AVSwitch component :) + # re-define AVSwitch components from Components.AVSwitch import AVSwitch -# config.av.colorformat.notifiers = [ ] config.av.aspectratio.notifiers = [ ] config.av.tvsystem.notifiers = [ ] config.av.wss.notifiers = [ ] AVSwitch.getOutputAspect = self.getOutputAspect - config.av.aspect.addNotifier(self.updateAspect) - config.av.wss.addNotifier(self.updateAspect) - config.av.policy_169.addNotifier(self.updateAspect) - config.av.policy_43.addNotifier(self.updateAspect) + config.av.aspect.addNotifier(self.changedAspect) + config.av.wss.addNotifier(self.changedAspect) + config.av.policy_169.addNotifier(self.changedAspect) + config.av.policy_43.addNotifier(self.changedAspect) - # until we have the hotplug poll socket -# self.timer = eTimer() -# self.timer.callback.append(self.readPreferredModes) -# self.timer.start(1000) + # addNotifiers for port, mode, rate + config.av.videoport.addNotifier(self.changedVideomode) + for port in self.getPortList(): + config.av.videomode[port].addNotifier(self.changedVideomode) + for mode in self.getModeList(port): + config.av.videorate[mode].addNotifier(self.changedVideomode) + self.is_init = False + def readAvailableModes(self): try: modes = open("/proc/stb/video/videomode_choices").read()[:-1] + self.modes_available = modes.split(' ') except IOError: - print "couldn't read available videomodes." + print "failed to read video_choices." self.modes_available = [ ] - return - self.modes_available = modes.split(' ') def readPreferredModes(self): try: modes = open("/proc/stb/video/videomode_preferred").read()[:-1] self.modes_preferred = modes.split(' ') except IOError: - print "reading preferred modes failed, using all modes" + print "failed to read video_preferred." self.modes_preferred = self.modes_available if self.modes_preferred != self.last_modes_preferred: self.last_modes_preferred = self.modes_preferred - print "hotplug on dvi" + print "hotplug on DVI" self.on_hotplug("DVI") # must be DVI + + # check if HDMI is available + def isHDMIAvailable(self, hw_type): + return hw_type in self.hdmi_hw_types - # check if a high-level mode with a given rate is available. + # check if HDMI-PC is available + def isHDMI_PCAvailable(self, hw_type): + return hw_type in self.hdmi_pc_hw_types + + # check if mode is always widescreen + def isWidescreenMode(self, mode): + return mode in self.widescreen_modes + + # check if rate is available for mode def isModeAvailable(self, port, mode, rate): rate = self.rates[mode][rate] for mode in rate.values(): - # DVI modes must be in "modes_preferred" -# if port == "DVI": -# if mode not in self.modes_preferred and not config.av.edid_override.value: -# print "no, not preferred" -# return False if mode not in self.modes_available: return False - return True - - def isWidescreenMode(self, port, mode): - return mode in self.widescreen_modes - - def setMode(self, port, mode, rate, force = None): - print "setMode - port:", port, "mode:", mode, "rate:", rate - # we can ignore "port" - self.current_mode = mode - self.current_port = port - modes = self.rates[mode][rate] - - mode_50 = modes.get(50) - mode_60 = modes.get(60) - if mode_50 is None or force == 60: - mode_50 = mode_60 - if mode_60 is None or force == 50: - mode_60 = mode_50 - - try: - open("/proc/stb/video/videomode_50hz", "w").write(mode_50) - open("/proc/stb/video/videomode_60hz", "w").write(mode_60) - except IOError: - try: - # fallback if no possibility to setup 50/60 hz mode - open("/proc/stb/video/videomode", "w").write(mode_50) - except IOError: - print "setting videomode failed." - try: - open("/etc/videomode", "w").write(mode_50) # use 50Hz mode (if available) for booting - except IOError: - print "writing initial videomode to /etc/videomode failed." - - self.updateAspect(None) - - def saveMode(self, port, mode, rate): - print "saveMode", port, mode, rate - config.av.videoport.value = port - config.av.videoport.save() - if port in config.av.videomode: - config.av.videomode[port].value = mode - config.av.videomode[port].save() - if mode in config.av.videorate: - config.av.videorate[mode].value = rate - config.av.videorate[mode].save() + return True + # check isModeAvailable in this port def isPortAvailable(self, port): - # fixme - return True + for mode in self.getModeList(port): + if len(self.getRateList(port, mode)): + return True - def isPortUsed(self, port): - if port == "DVI": - self.readPreferredModes() - return len(self.modes_preferred) != 0 - else: - return True + return False + # get a list of all available port def getPortList(self): return [port for port in self.modes if self.isPortAvailable(port)] - # get a list with all modes, with all rates, for a given port. + # get a list of all available mode for a given port def getModeList(self, port): - print "getModeList for port", port - res = [ ] + modelist = [ ] for mode in self.modes[port]: - # list all rates which are completely valid - rates = [rate for rate in self.rates[mode] if self.isModeAvailable(port, mode, rate)] + rates = self.getRateList(port, mode) - # if at least one rate is ok, add this mode if len(rates): - res.append( (mode, rates) ) - return res + modelist.append(mode) + + return modelist - def createConfig(self, *args): - hw_type = HardwareInfo().get_device_name() - lst = [] + # get a list of all available rate for a given port, mode + def getRateList(self, port, mode): + return [rate for rate in self.rates[mode] if self.isModeAvailable(port, mode, rate)] + def createConfig(self): config.av.videomode = ConfigSubDict() config.av.videorate = ConfigSubDict() - # create list of output ports - portlist = self.getPortList() - for port in portlist: - descr = port - if descr == 'DVI' and hw_type in ('dm500hd', 'dm800se', 'dm7020hd'): - descr = 'HDMI' - elif descr == 'DVI-PC' and hw_type in ('dm500hd', 'dm800se', 'dm7020hd'): - descr = 'HDMI-PC' - lst.append((port, descr)) + hw_type = self.getDeviceName() + # vu+ support 1080p + if self.isVumodel(hw_type): + self.modes["DVI"].insert(self.modes["DVI"].index("1080i")+1, "1080p") + + portlist = [ ] + port_choices = self.getPortList() + + for port in port_choices: + desc = port + if desc == 'DVI' and self.isHDMIAvailable(hw_type): + desc = 'HDMI' + if desc == 'DVI-PC' and self.isHDMI_PCAvailable(hw_type): + desc = 'HDMI-PC' + portlist.append( (port, desc)) # create list of available modes - modes = self.getModeList(port) - if len(modes): - config.av.videomode[port] = ConfigSelection(choices = [mode for (mode, rates) in modes]) - for (mode, rates) in modes: - config.av.videorate[mode] = ConfigSelection(choices = rates) - config.av.videoport = ConfigSelection(choices = lst) + modelist = [ ] + mode_choices = self.getModeList(port) - def setConfiguredMode(self): - port = config.av.videoport.value - if port not in config.av.videomode: - print "current port not available, not setting videomode" + for mode in mode_choices: + modelist.append( (mode, mode)) + + # create list of available rates + ratelist = [ ] + rate_choices = self.getRateList(port, mode) + + for rate in rate_choices: + ratelist.append( (rate, rate)) + + config.av.videorate[mode] = ConfigSelection(choices = ratelist) + config.av.videomode[port] = ConfigSelection(choices = modelist) + config.av.videoport = ConfigSelection(choices = portlist) + + def changedVideomode(self, configElement): + if self.is_init: return + self.setConfiguredMode() + + def setConfiguredMode(self): + port = config.av.videoport.value mode = config.av.videomode[port].value + rate = config.av.videorate[mode].value + + self.setVideomode(port, mode, rate) + + def setVideomode(self, port, mode, rate): + if port is None or port not in config.av.videomode: + print "current port not available. couldn't set videomode" + return if mode not in config.av.videorate: - print "current mode not available, not setting videomode" + print "current mode not available. couldn't set videomode" return - rate = config.av.videorate[mode].value - self.setMode(port, mode, rate) - - def updateAspect(self, cfgelement): - # determine aspect = {any,4:3,16:9,16:10} - # determine policy = {bestfit,letterbox,panscan,nonlinear} - - # based on; - # config.av.videoport.value: current video output device - # Scart: - # config.av.aspect: - # 4_3: use policy_169 - # 16_9,16_10: use policy_43 - # auto always "bestfit" - # config.av.policy_169 - # letterbox use letterbox - # panscan use panscan - # scale use bestfit - # config.av.policy_43 - # pillarbox use panscan - # panscan use letterbox ("panscan" is just a bad term, it's inverse-panscan) - # nonlinear use nonlinear - # scale use bestfit + if mode is None: + modelist = self.getModeList(port) + mode = modelist[0] + + ratelist = self.getRateList(port, mode) + rate = ratelist[0] + + if rate is None: + ratelist = self.getRateList(port, mode) + rate = ratelist[0] + + print "set Videomode", port, mode, rate + + modes = self.rates[mode][rate] + mode_50 = modes.get(50) + mode_60 = modes.get(60) + if mode_50 is None: + mode_50 = mode_60 + if mode_60 is None: + mode_60 = mode_50 + + if (mode_50 != mode_60): + try: + open("/proc/stb/video/videomode_50hz", "w").write(mode_50) + open("/proc/stb/video/videomode_60hz", "w").write(mode_60) + except IOError: + print "cannot open /proc/stb/vide/videomode_50hz or videomode_60hz" + + # Too slow moving to Scart/multi in modeSelectionMoved + #try: + # open("/proc/stb/video/videomode_50hz", "w").write(mode_60) + #except IOError: + # print "cannot open /proc/stb/vide/videomode_60Hz" + + else: + try: + open("/proc/stb/video/videomode", "w").write(mode_50) + except IOError: + print "cannot open /proc/stb/vide/videomode" + + self.changedAspect(None) + + # autoresolution depend on this. + def setMode(self, port, mode, rate): + self.setVideomode(port, mode, rate) + + def changedAspect(self, configElement): + if self.is_init: + return + # config.av.aspect: + # 4:3 use policy_169 + # 16:9, 16:10 use policy_43 + # auto always "bestfit" + # config.av.policy_169: + # letterbox use letterbox + # panscan use panscan + # scale use bestfit + # config.av.policy_43: + # pillarbox use panscan + # pansca use letterbox ("panscan" is just a bad term, it is inverse-panscan) + # nonlinear use nonlinear + # scale use bestfit port = config.av.videoport.value if port not in config.av.videomode: - print "current port not available, not setting videomode" + print "current port not available. couldn't set aspect" return - mode = config.av.videomode[port].value - force_widescreen = self.isWidescreenMode(port, mode) + mode = config.av.videomode[port].value + force_wide = self.isWidescreenMode(mode) + valstr = config.av.aspect.value - is_widescreen = force_widescreen or config.av.aspect.value in ("16_9", "16_10") - is_auto = config.av.aspect.value == "auto" policy2 = "policy" # use main policy - if is_widescreen: - if force_widescreen: + if force_wide or valstr == "16_9" or valstr == "16_10": + if force_wide or valstr == "16_9": aspect = "16:9" - else: - aspect = {"16_9": "16:9", "16_10": "16:10"}[config.av.aspect.value] + elif valstr == "16_10": + aspect = "16:10" + policy = {"pillarbox": "panscan", "panscan": "letterbox", "nonlinear": "nonlinear", "scale": "bestfit"}[config.av.policy_43.value] policy2 = {"letterbox": "letterbox", "panscan": "panscan", "scale": "bestfit"}[config.av.policy_169.value] - elif is_auto: + elif valstr == "auto": aspect = "any" - policy = "bestfit" + policy = "bestfit" else: aspect = "4:3" policy = {"letterbox": "letterbox", "panscan": "panscan", "scale": "bestfit"}[config.av.policy_169.value] @@ -322,7 +358,11 @@ class VideoHardware: else: wss = "auto" - print "-> setting aspect, policy, policy2, wss", aspect, policy, policy2, wss + self.setAspect(aspect, policy, policy2, wss) + + def setAspect(self, aspect, policy, policy2, wss): + print "set aspect, policy, policy2, wss", aspect, policy, policy2, wss + open("/proc/stb/video/aspect", "w").write(aspect) open("/proc/stb/video/policy", "w").write(policy) open("/proc/stb/denc/0/wss", "w").write(wss) @@ -330,7 +370,25 @@ class VideoHardware: open("/proc/stb/video/policy2", "w").write(policy2) except IOError: pass + + def isPortUsed(self, port): + if port == "DVI": + self.readPreferredModes() + return len(self.modes_preferred) != 0 + else: + return True + + def saveVideomode(self, port, mode, rate): + print "save Videomode", port, mode, rate + config.av.videoport.value = port + config.av.videoport.save() + if port in config.av.videomode: + config.av.videomode[port].value = mode + config.av.videomode[port].save() + if mode in config.av.videorate: + config.av.videorate[mode].value = rate + config.av.videorate[mode].save() -config.av.edid_override = ConfigYesNo(default = False) video_hw = VideoHardware() video_hw.setConfiguredMode() + diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py old mode 100755 new mode 100644 index 18e8176..97038e9 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py @@ -1,200 +1,120 @@ from Screens.Wizard import WizardSummary from Screens.WizardLanguage import WizardLanguage from Screens.Rc import Rc -from VideoHardware import video_hw - -from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap -from Components.config import config, ConfigBoolean, configfile - +from Components.Pixmap import Pixmap +from Components.config import config, configfile, ConfigBoolean from Tools.Directories import resolveFilename, SCOPE_PLUGINS -from Tools.HardwareInfo import HardwareInfo -config.misc.showtestcard = ConfigBoolean(default = False) +from VideoHardware import video_hw -class VideoWizardSummary(WizardSummary): - skin = ( - """ - - - - - - """, - """ - - - - - - """) - #% (resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/lcd_Scart.png")) - - def __init__(self, session, parent): - WizardSummary.__init__(self, session, parent) - #self["pic"] = Pixmap() - - def setLCDPicCallback(self): - self.parent.setLCDTextCallback(self.setText) - - def setLCDPic(self, file): - self["pic"].instance.setPixmapFromFile(file) +config.misc.showtestcard = ConfigBoolean(default = False) class VideoWizard(WizardLanguage, Rc): skin = """ - + - + - - - + + - - - - - - - """ % (resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/Scart.png")) - + + + + + + + + """ + def __init__(self, session): - # FIXME anyone knows how to use relative paths from the plugin's directory? self.xmlfile = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/videowizard.xml") - self.hw = video_hw - - WizardLanguage.__init__(self, session, showSteps = False, showStepSlider = False) + self.video_cfg = video_hw + + WizardLanguage.__init__(self, session) Rc.__init__(self) + self["wizard"] = Pixmap() self["portpic"] = Pixmap() - + self.port = None self.mode = None self.rate = None - - + def createSummary(self): - print "++++++++++++***++**** VideoWizard-createSummary" from Screens.Wizard import WizardSummary - return VideoWizardSummary - + return WizardSummary + def markDone(self): - config.misc.videowizardenabled.value = 0 + config.misc.videowizardenabled.setValue(False) config.misc.videowizardenabled.save() configfile.save() - def listInputChannels(self): - hw_type = HardwareInfo().get_device_name() - list = [] - - for port in self.hw.getPortList(): - if self.hw.isPortUsed(port): - descr = port - if descr == 'DVI' and hw_type in ('dm500hd', 'dm800se', 'dm7020hd'): - descr = 'HDMI' + def portList(self): + hw_type = self.video_cfg.getDeviceName() + list = [ ] + + for port in self.video_cfg.getPortList(): + if self.video_cfg.isPortUsed(port): + desc = port + if desc == "DVI" and self.video_cfg.isHDMIAvailable(hw_type): + desc = "HDMI" + if port != "DVI-PC": - list.append((descr,port)) + list.append( (desc, port)) + list.sort(key = lambda x: x[0]) - print "listInputChannels:", list return list - def inputSelectionMade(self, index): - print "inputSelectionMade:", index + def portSelectionMade(self, index): self.port = index - self.inputSelect(index) - - def inputSelectionMoved(self): - print "input selection moved:", self.selection - self.inputSelect(self.selection) - if self["portpic"].instance is not None: - picname = self.selection - if picname == "DVI" and HardwareInfo().get_device_name() in ("dm500hd", "dm800se", "dm7020hd"): - picname = "HDMI" - self["portpic"].instance.setPixmapFromFile(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/" + picname + ".png")) - - def inputSelect(self, port): - print "inputSelect:", port - modeList = self.hw.getModeList(self.selection) - print "modeList:", modeList - self.port = port - if (len(modeList) > 0): - ratesList = self.listRates(modeList[0][0]) - self.hw.setMode(port = port, mode = modeList[0][0], rate = ratesList[0][0]) + self.video_cfg.setVideomode(self.port, self.mode, self.rate) + + def portSelectionMoved(self): + self.video_cfg.setVideomode(self.selection, self.mode, self.rate) + + def modeList(self): + list = [ ] + for mode in self.video_cfg.getModeList(self.port): + list.append( (mode, mode)) - def listModes(self): - list = [] - print "modes for port", self.port - for mode in self.hw.getModeList(self.port): - #if mode[0] != "PC": - list.append((mode[0], mode[0])) - print "modeslist:", list return list - + def modeSelectionMade(self, index): - print "modeSelectionMade:", index self.mode = index - self.modeSelect(index) - + self.modeSelect(self.mode) + def modeSelectionMoved(self): - print "mode selection moved:", self.selection self.modeSelect(self.selection) - + def modeSelect(self, mode): - ratesList = self.listRates(mode) - print "ratesList:", ratesList - if self.port == "DVI" and mode in ("720p", "1080i"): + if self.port == "DVI" and self.video_cfg.isWidescreenMode(mode): self.rate = "multi" - self.hw.setMode(port = self.port, mode = mode, rate = "multi") else: - self.hw.setMode(port = self.port, mode = mode, rate = ratesList[0][0]) - - def listRates(self, querymode = None): - if querymode is None: - querymode = self.mode - list = [] - print "modes for port", self.port, "and mode", querymode - for mode in self.hw.getModeList(self.port): - print mode - if mode[0] == querymode: - for rate in mode[1]: - if self.port == "DVI-PC": - print "rate:", rate - if rate == "640x480": - list.insert(0, (rate, rate)) - continue - list.append((rate, rate)) + self.rate = None + self.video_cfg.setVideomode(self.port, mode, self.rate) + + def rateList(self): + list = [ ] + for rate in self.video_cfg.getRateList(self.port, self.mode): + list.append( (rate, rate)) + return list - + def rateSelectionMade(self, index): - print "rateSelectionMade:", index self.rate = index - self.rateSelect(index) - + self.video_cfg.setVideomode(self.port, self.mode, self.rate) + def rateSelectionMoved(self): - print "rate selection moved:", self.selection - self.rateSelect(self.selection) + self.video_cfg.setVideomode(self.port, self.mode, self.selection) - def rateSelect(self, rate): - self.hw.setMode(port = self.port, mode = self.mode, rate = rate) - - def showTestCard(self, selection = None): + def showVideoTune(self, selection = None): if selection is None: selection = self.selection - print "set config.misc.showtestcard to", {'yes': True, 'no': False}[selection] + if selection == "yes": config.misc.showtestcard.value = True else: config.misc.showtestcard.value = False - def keyNumberGlobal(self, number): - if number in (1,2,3): - if number == 1: - self.hw.saveMode("DVI", "720p", "multi") - elif number == 2: - self.hw.saveMode("DVI", "1080i", "multi") - elif number == 3: - self.hw.saveMode("Scart", "Multi", "multi") - self.hw.setConfiguredMode() - self.close() - - WizardLanguage.keyNumberGlobal(self, number) diff --git a/lib/python/Plugins/SystemPlugins/Videomode/YPbPr.png b/lib/python/Plugins/SystemPlugins/Videomode/YPbPr.png deleted file mode 100644 index 884e65081bb92f8b38937a18c74d57bc5feebf4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9880 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 diff --git a/lib/python/Plugins/SystemPlugins/Videomode/lcd_HDMI.png b/lib/python/Plugins/SystemPlugins/Videomode/lcd_HDMI.png deleted file mode 100644 index 425da5c3ee8c2695a57d86ccecef492519a5bfc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$(3-AeX1=2vUG=1lJAjMP?huCx&#H4v_SQcEp z$Gna+t>MUMBZzB$h z9ai8_w)_8o`pvD;*KH4Q%$@4&FY45>q9f<_wizqS9oO^dDKU8^>|u3RYbZ`Q%lyGM z`)lRfnO~n7F0i-VX~CddUh^mU%bhs~r^bp1td@JUfb+bQ%ofjciLr-M6pk>89}sMs z$ZXb7#CFH(0rQ0_wiv635N1BUX?I!E_{82ZyYWqX*P_O^Nn%Hff%t)5zr#j?uO4@w0TOTADCYUea&|DMFHlJM~(XQZb%G~#F4FMe_0g|3=k@yV_Y-UfH3R&nIU!!>{p@Au~gROkSOE^qqe{&ZU;?_%D}Wg zxa2KzwCu)0PJy*05mgUleP3jjv@d1hkPun0p)uuFnCPFCx4uOCJzIFj$KLw3xtVdw ztLX=t-@Y#Xry`u4-Bh6zWEx))+hG2)bGw7=@4az0E6pp}1epqsPFe6_LWR`L#LPqg zwHPH8m{S^fR%E!FPOUwj{iBx8H{DQ$!-3((N5+lC;oi}4H*W&{!QkoY=d#Wzp$PyQ Cp>Tr$ diff --git a/lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am b/lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am old mode 100755 new mode 100644 index ddcc18c..e124250 --- a/lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am @@ -1,5 +1,3 @@ installdir = $(datadir)/meta dist_install_DATA = plugin_videomode.xml - -EXTRA_DIST = videomode_en.jpg videomode_de.jpg diff --git a/lib/python/Plugins/SystemPlugins/Videomode/meta/plugin_videomode.xml b/lib/python/Plugins/SystemPlugins/Videomode/meta/plugin_videomode.xml old mode 100755 new mode 100644 index e16a7dc..79aa980 --- a/lib/python/Plugins/SystemPlugins/Videomode/meta/plugin_videomode.xml +++ b/lib/python/Plugins/SystemPlugins/Videomode/meta/plugin_videomode.xml @@ -1,19 +1,16 @@ - - - - - - Dream Multimedia - Videomode - enigma2-plugin-systemplugins-videomode - Videomode provides advanced video mode settings - The Videomode plugin provides advanced video mode settings. - - - - + + + + + + smlee + Videomode K + enigma2-plugin-systemplugins-videomode + advanced video mode settings. + With Videomode K plugin, you can set advanced video mode. + + - diff --git a/lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_de.jpg b/lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_de.jpg deleted file mode 100755 index 00b7ac7021192496913b0fb5b59a4f39cc0583eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103506 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 MJ<;58tnIV^0$=0|y8r+H diff --git a/lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_en.jpg b/lib/python/Plugins/SystemPlugins/Videomode/meta/videomode_en.jpg deleted file mode 100755 index 1f4288b99b3ebb3defe80775f5dcfb5033a3ba46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95799 zcmeFa2|QHa-#C8lElN~qGeS|>_k9wQgk&pXVh~xzn%%TgNkRzKwAe~0`#zPBEo2L! z?E5m-8MFM)jMmSm@AG-S&-41fe$Vs!b-nJHbKmEE-rISfbMHOxb1uq9%4cZP(Zkw@ zAv$_G=m_|OC||am()4k#gCJd9Xg>r&YakXn4u}Ed=)fODw;f`l@Oy5G1(i+pn4p%G#FqxIM}fA%sZZ+yt` zJ%5mj2o7dChOaU*|Evcc&ksH5_WrB~u*p|>=|t(j)85R#N{(tRszp|RDL>ni3ZvR` z5@Mz4gizOo=qXdsM%oo*bAeiu(gj_CSl6ssvvv*Z+O@3g>({Mk-^#|y%C?nz^X9Fa zH*>SI(vGh`s~3Mw={BrizhUEsO&d3E+Ol!u#x2xjOHJx5dm;^I zzRV&$WH=vZUEZq^Wn`oI=82~)*9YT1TU_>)@@B98xx<2Y60hb&zik8yN8)70LxyPHy?lyPq=I}jb%M;`@W0tuO$%tAp)fn zVr8K5WQX7oF7blEtHC{w7JSpa&EGg)x$J0gt&r~1h3nfH7de~lWHqBkTb8Pn%#H=t zAgt>tP{ASvx;s5(!Lw11KkI;sW?uK@_g&M`}>&?R28k0l)?({(m!pPk-Y=VnBdso6y_*>+G zvWf%>$~pG&vj8-A6rCUIM5_oU-?mAyd;K~?0~dGzR}>{E@Wu9aW5 z(=2oe;q0ubaCRzCEzWzH;0{+Q3!Q!{X77`7b6Gj_qX&9Q1v{j)61l>OB30!RtI+OU zpU_@dSMoqUtQ++SUI?@C)+z|tssGZB0)6sF*Lg4PSrq;%(qMi8c|7O~soDiz)LVdd zw|qC1>AEbB`N<$U6Q{6CJiT+fNVO<8QX2(|hZl-eEtxN|P3d&(YMtWRJfZLvp*k=` zj@;ixMq&${r{D#>b6QJ+jIcV`5Ct0A=g(hMTHaB!#pRNYH}tQ51%v& z#K0J|`=sN5UIi!+X99VyPn#svLS6zGd;V}m}4Wm!}7`hx%F zXJ@*iTwE&)^E(XBc|vE_pR!wWIbWrFlK^|~hZr@Uz&yQc6uR?$a_z}?A{+R9nT9fl zI@?#ec+&2+W9J=oVkF~KzwFdH7fYIRguQ*ldOW1N?-;c6%$q@rz>~?XnJIzB3+7{9 zf_};cH@!pb$GS$zK~;+RpD2*&Jf>dw3qtq4+VvS&PZ2Ze@awE*3l-zwz~_#6EQNC$ zTslc6PX2J+F+YrY$Jx@P&H=+=ZLicD=poF`YX|o?ZVu)%-CiAS#_}S2M6rXkQ~7=2spL7QJOF5CaGyjz^sW8VhuyqiC!kVAkoSB zQ>dlg3-7Ns6VC5&m&is$S(Qc;Tr%xDz2!TwE35|-<>9A*do?UKeC9m&fly6>MD5U( zXeitGG)9>Mm6(g;`3GQ>rhjzF;%2EAFa3;r9Y^tUa+7TL2u@zdklGIkN(ltG={y=s z>_MbVER<^QoJzU$36X6amT>)E;~SCUJ#WjypG}*jKldsg@lauLPU#@C%}r)EI*zBT zIo0g(tkO|((#x~!<&!qnRK;Gi+0p5&wC$Cqfcbh%&elcj0H9&BfM^9qk!)w5u;rJau~HqKAG$!ellP$_N{h{>*h zo+sFSj_z{ct5@QdGgjpu7Eg&o#qQk;L0NfS&x=)G-u^^z!#&#_dr~Y_%1&n#2`ei> zWSiP5P8oHi zKv(ClOs91pG>r8}+#L^elCk5)dMS-e!3*5^U>ym;`X<`@qu{iC(Y$@^p@I)6S3M6nP@~F;#P%|=; z^fPws4>CuN+?^*Z-Y7k6yt}F;_x1Bl>vO$vF`C7zvGFXIqsLxEzY;QjCmr=I2MKS1{g&(PfY!#}!n+C>T^cV8{@so`y6 z?CBZdDvrsJvkxn$(NBn~U$+MA4XJM zbJ`g>oi>p-R2a8SxYxC+q(Ck(C}F&^u(cd9hLy6VKqKR6^QM7MIhF!V{c)t70l_9K z4)S(tfnG9AaTZ}O-y?fRUFPMA8b0`;>&Ow#v4NiFtKf-!B_{nNv4+Rw9Pd#eE!cd2 zhjH7KtuzJt9C{$#v*Ec|7CF6THjm56Yf(Deo?TBxHt1IEj=b(xxp`Ff{I$#d%c&o? z2OW8Kww1GBhdJg9Q%~Csv*s!9q^WSjZbZ^pARCGEk-zG5R)5txDT}DBHxRCA$iP;= zDUbb~(~itqPo{|k3e-dhRS|G}`@B!&eWIecKio!XU+YRKBKOAY;dx8UBVzcl+}6$F)1MusSZ4mJPZS6o`!iF7tL?Q_Ze7~=I|rWZ$(P~C+;-bzE@PxFxQdCH zh2Dc)y#ogtSe<1~*2K5P>s*d2%afo$XI1lab2}USSn%g=qn<=BM3GN}zIT&MXO}Ma z!xc@c=NeWjUb021s!^K%(fgh@kB!6_1$8I5@R&Y7UzDf#?m1_HVo_YaN2$JPOLw4U zY)bfOJF1lZBgT}Zu*-CJgVL!NeFYnm<)*S*yhl2xy;HJB&~FZ?tnuRNQ@j@x7v3Ti zWO&m?$=)O0!Lf75FV`=(pK!Nli5$LT60>BhH=X-JGHL+7{3{h|W_U6iDagSj9MYpxjKxLci6n7pZUX&R>0We)8jxU)XS}YGq96d|?B6 z1pc676hWLGF**PuP5^u;(`}5ze<;=$93doNl5`=l$x7 z$GMBD44WLQGHOTCm;181gNr`Z9LQ`X$w~$G+S{F7-a&$W2wKJwQp{ej?8qWmc*?Qg zaulU|)iIVm5f+FS5$m<a-)=e6X7U;;o$9O^M-8oXXXSheG&x!%uI)^L>cZ2(ecKS-iy%kqkZl4{ z6sQI~U(div`(wBGUv<^Vz82XBAR_R#qe&Dn>k zK@G>?A7eKuZHnNK+X!#d$9qVTrIwlEbIP*NwQ-nP%q!tmbHN7qG^bBM1dff;@{b;# zd7)E}DPx!M$88(lc_f4t)*~--kDn`j5J!#}muo~$%*P>ct@myS&0nn==PuqI%~|;H z(=caD0=ZuOlR23)@55s0iV8~C+8f^HJ-F|HOkaE7jQ8E%6Ghd8hS5)-d1jV+bDw;$ z&CT~XJ?yt&gQ`T6TskRGV{-AvG)FsC{We8}@vV%{BF>qLQ_qT>TxCnkqS_xxweN5NF4+L~=i< zEGkHju~Z*zUkO{eWO*N5&|4rx%7oz`#dgmG`cII&DG=rpnsoIoXxi#P40za?TM4H? zFA6Y(Q@(5|h$*?LwSHdY{-DpXxqzJX0Z+TNH3Z z?UNoB-c7y5_+0Ri*MD`PnF5IbiJXxXXj*ZYftxk>LcqawN2<7YG!aB%4xMirLC?M+ zj8dQ&z%uV81zNf3`+ zUKgo4sJWQ53%=NeE;P~>b4QmL zzvg+JzoIui4|;ExGkE~(U_rixS#idGdL|IN^B)L^Dg@1%GXC2leE1>4Zz$Z+H>i$t zsc8u1euaMDRcN9usz9c3@$R-=EE?Z9TvB^|D!_rZK9<=CDby8$**OrQ*HELr`+gi_4d-rHvXsrzW}XL+(3g-r|x)YnA?86W|*U0 zucf6Rp`+CT(~#6-9c@aFnxk=HSfFMBUoks7P~rqqFnI_Ly04H&aq-_Fk~Fv(NWbC8 z&>$i|AT+I(!8HWAf(gRk9t z<96yLgDyx`^`Txu^asJ&2r{gYE#v|rp!1LeWCQXj$Qhi}9E~k_ttW(_%mWnC{lbTdRtCTv;AEj) zXlwjLo8_!K%FFc^5Hrf%;jDv;t&5j4sKcshNTse%gMsS}R$iVcEn62`cPmd@8vuZe zd|hq7BClITrb4JC+RkTr!O#ES`ZIXBI~i%7Gy<%?8kcJPUm?04XKjChFk3l!8d;tF z1-21s3+mbWcxrnbG15I|jY2t539k7D{snohJ<8or&B@{HH%qatDu3h~7}R93v9+`E za`FV(wdZZ!J%594@(uhe`g-fL>L@3a`%lJYU!{LY>w5vH0_mY#sJ33~iE`EV^7OF% z*>To60Y~~9l+_yL2^{Kg@b#dH?f;5S>xDv8MxX})cZSc<@~b_LotCFt9g!HRL6cR7 zrlZxO;zOIktURq%9)jNsAp04Ds3bsGf*S-C{)8d^gdv6&|AZm_gdzTfA^wCR{)8d^ zgdzTfA^wCR{)8d^gdx61#QuaK{)8d^gdu(`r1=wu_!EZs6NdPICJeDU)3zH-nL&^- zIKgZi1hGMCVCotLS%c|oUg$Vv5AvSi^q}Qj0mkNkz~F_{Aw!6|DEaH`-Rhh<3vKQk z@SuFzbjaS*(^XMS%*8|0in`QU6p3;c^RaRjlModbgOuSuu2x7#TTfnVTQFO!!Z%%v z<>Pg*QQczv9mTs#zg zRQPDb6+xZ~7USckp?Er~@X?kZ^Pbc_&Z~}cx8;=K@`@6YiW2g?Uk^UO&)vpO@r1_VuiU_u3g1_?yuH0ey`@A^?q|g$ z6ciN1#3jWfB}D*+h=;F>rFO{Mdn9=uC;RCX+D&g$< zo$PO|^$pPm`5n&{Oj^^J+aSekootTbwy^wrm0w7IFQzrew@Sdc zy1Kuw@U7*Xoxij2@YFmH)cB9u*@HR(Eq21z1Lft8wADNh#N_|R%+tZ{hdF-{j#~1I zT()41{_h!4OTMGJDyqBNT6uzLZ!q=#%>jM{;eJ|SPnF>-wyg$;M5yplm)wg;NQg*E z8-a!QQc{Z2vIoQ^6vf3?QFT!^4tBnOL6tH3wmSb8RN#j;R-RV>h-`yYv_rW&TLBw7 zI9r{y6+7o@dzO#)d($Y=X6gZFAf6OW3|(DCZ5IzuD;K1#wuTBH&_UF}!A4P5`jF-! zc}+DbX$=JpO$muZ8j>1^WThoE)DBm%{-fB~#Q|7S@@qXkz~{WJ zhQnD~4=PkfR#;L-4xIAfR1gN8UszI38k_(oFD)!1B@RvrkOy#iDPc(kSz#%031KM- zd2lKS%SeJ#N)o^T9XWAu0$e%jwG1c+rloy zHPs~454F}K^9yD73wSO);^;40Iob1;knll)JK@)g`tc;A5 z%vboYib~1K%SsDNiz~>A(^8;RRkpkwWrl2lJX?1~dr6r_6 zDK!Psf^-!kN6X7oQw1O=NNG3ng}o>ng}oaTMgK zI0_0h90dtlo=Q!DMomG1%29zvQ-Lapq_~8vFlbU?;0D67!g9j$!V1E`G!hcR5|Y9a zQo<6_!k~!(l7yTv@CQkN3%mq43Gg2o;7Y&~fYSh9P*TuPmy(r})R2{zl$JXrAug+_ zAucB&bx2)7T;s63nmqM}KpSHfk2rXMamx4WEymE+?Q71-ftNO{Dq0~|y9AOtqS@N; zeFZ!Gm%9HdNpE{w(DA+xbblYcR?$3AcAnl=?zU=YL2vz!M^P~#wHWn|wyJ>GUv;CE z{dD*Hh7NA2)a>`Wx$3uj?w{X37WiX@#A*i2o2|ee;w_R9 zk65;@ZsGkR#c4ew;C^X#kGiyBLYQejYBg^{~v`;zsUXOcPSluy- z->-Po?3~|?_-92monwU6EyoN@z?{sCYZw@uY1@CPyPnmU41mPUZWkjYAHAH}^1A5@ z|DmlXtlej&1fMd5p|@!{YHlrcdKCmr)ehV9mX4udL>FK^sqFIoy-%a-n_A z{c~6DB;I{j2ukDs zDruYkS4sQfZ_*lRwI+@mr!+|FMOuYi<4o}7N+q(*zuU>Nwr}IS00mN{K*unH?qb}i zu@7JaDf~|Lr(5Fft%Ky#=zURz%2qvBur+SPWWB+@jf9e~+5SISno0g|vBSK;3@nJ+ z@+DTircti~m&t~L?(*ejnSvKqW~psYRrCSFbQLa6DfXt)7|w?c3#+l2vJ{_AtNyG? zq8;2CT?ZCU^>ZgT&vDdKssBfe@#H8-7jM-n$rBYUT4}ufub;X zB=Ha4>x-W=nK&a{o&2U8S$_6*_=7iPEJ_)5jcYF|1i(4xERr(5D6^|B^qeCWUFtn) zq1wr7cb@OgDEX{dL*jKAJ#n;`%Bn8iUM8_i`SpW~3<;KvoEorn8p z=a4EvCw#M1%r$T<5nu8xbkttT$%R!`wjJs89a3T8j^6duqL96+S0YzI!eNoG%xQ+T zkkDHlsy(#Az3WLXF(!D7{ZN$hrl&HC5<6QTw1=oI;}tN~IOT@^p=_cf8~WXf6$Mg$ zM1h`h!((=LFXP2Q++KrlIU*cl2`y9?~T`cSw^D)ge=TC~oS7m9#Nw5g$f_U8VXF z-5`V>3x?NjqLs;iEqhHZYabj{r$9y$sHd@mB+XP$wX7puh1t-&nnhvVLYUM~=&PCy`$b>1PMQa>y@9^Ih|ubG`% zL0gkSiFNakW5gnM7&bbWqrV~u#DLd>qA-^EvI?o8YOcwkL%fT!O+;)jxH0e(d-E5? za8xm>;*(I>c;@8d7PG2mvIZD$VM8RK_imC{_TsZ}i5~eq=waBl(u#Q43Re~0`Uh2m zjB{s!C^;#E)>xX5=!8Xb1u_|U^7>4r4y!^%#t zFtcb{;RE<_*rG1bk5+X%+h|}|nE5Fr_|VHew*sXPmtJ{&MAyod!E4#csIC<*9H`8( zlD6{V-BRyd`1X6Uk=v{HXyYQ861dw*bRzl09&fZVd~4rE>j=1Hr=0;9$a!Jhsx@!>b}PY%#w z#mQQ}w%VLcIw>`4AGba0RksT$hHo3pZ&)aJG0FNQju`O3m}T%Sr&-@e3%)E44fl&L zdnK4}9yaO~aT?@tYMA4~9akIlNO#B^u_q!Fsqrb)|&1LvPi=MJw|6+-{N&cKs=Q6y{_5sfKlx}&axmL5^?8yYD3e2@V z3xOBkRlP#alag-Z>w+ADEbs;;?;kk7D87D!G27hSYWG0PrvyLeDeuwfv4w3f`Xrgj zy75l(**5Ip*@R1@B{$GCB(9{@W1&~#oWTJdeqQ~<@Q+~z#)q2hg_t{1-q=Ph#i>47 z9+|)$7FXUhz>|;nALvyipTj?{t$uK@2~nqNgT3Y8oHHN8&60xJp~GL&&Y{TxrL}%C zYSKJ;0aYC%-(Mked5!g*u#FC4aXBRK>K>~$V%m@n=Lh2J!LE)R5>nqi!>S*MR=8SX@ag1vb)yKOKqvwd2%%{2;JanDuHfP=w~AMZN=R}DHhrdSp| zpt98~t)4|E;Z&Q7PMWz;`h;@_$En14oIM}ivC#beOG$J|aZ>8sg-(^+Nvg+`bQP0x zQ$LPwR|%_3dp71#<(NDg=c&_-0W~BIWe%T^%Kq;3_ z`ncZV6YQKP`2A(T$2d|?juqX%73=GtY;RC5TA13^RV~1&?Zz9-RT#bHxsJe1cAeYn zH$Cw|p$kndow*sZ830Nv`~{~sX~)~Zk47xJ46dg;OkUXgzlYMQDXx(|bMw~5*-hS$;KH); zviHm!+lA~!UkglR7K~ncGt(uIKPLqFU9>;{OkByii$(f`Gf$eM$E@F_oXm^klUJN> zZLzj^k&>jMZ<{){@5-ji=yoHU&XcbX9_|Y{<2@!mhkTQ|r+Mna2_qS~l!i>0-#y`j zYPHC1PxihweAE@x(>;^O5qqS4vGQ4+vA0;MqG8^?Efze*{_H#B-n93@y3-l5pRczkc|5*v~`Z_e^I)*MHEfnlr_HnI)7ueG0Z2hX!| zmk{w>dB%!cE+(=theI7V7}lmVm%d2Q%Uw8m!B@7?$a8DP zLR~j=K+!dnNR`TE%Y1#-&5w44i`2qeJmIqDju_Ljxnn1E*KW+#bab)zJ@M!mZ;*ob zMs=~Yi4Ag)Dki72w$2hU_kvg!PZ*!un&E8nL5mPOV$QfX^;}u%R+vPb-%Vd-j$?}% zpZojnD65T*_YjjCMEsY2nGU41{{1#E0UMM^8FY@Ac@aX^y}1y`w#5GlKb5jlJ{^$q z+>$$>*|{xv@H$N5So=_H#=Yn0qf&F>=8DtH>NU^mW@SlJ?<}oY+R{VKOgq`)O3TxuDFo*Y1 zAUGQ_w@n%?@4J4^Z~Blk{rH^Wp!CyeEm@C8LAGjmI0aI;jF-V%1vRpX;^FTIutE4eYdW*ezJAj@o!X~} z2%#tQVReU3_#alAtr-k|`^L6~obz_Zmf<1k2tvk}xu5I?!?BUwEnGgBTlmi*-m~DA z-bJ3?pItkc`avhSXzQMWPi8vODD{J14g@Q}B_aijnuT_{-X3$94I%a|#RW7EhBsu^ zhJjm=F2 z&D8u{xs2PV$pcZPe3120|MHZ(24nSSX-n|oLHTKLcHoud26#g7?f6W=n1uw4(zx9A zpzsuYd3`&NZqr11x?Ms3ZqZ5Jc4{!C=R#*B^U5PZ@5wkLnLvko@&hP7L z0u;7m1u{w+fWq5S^arx{V1~7#7Q#&D_QO7y-6ieub{tGlIkZh-{lhc;ZUlh` z>8CAods}y$h!f##x^|UUJw^FIo%X()X*p#n!k8h+x38kCO>>zUSOo;2$J{J&SYbFX zTmZfseBsTjw+x1;x@q;-}I5ZwvlIY8C?$Fpyzw&_3}iw^2tYv{L=xx zpsOJ8x(|Ihs;YS$ap8linRw?X_=|S=*uqfD{5h?djI)Rvu%^y?9y)NoXM-_ckitv` z&|#6dq#D~Zwb#P;yW#qu$sl$FAjUDn3bD>x+B491`yKT*N37T&9g;~N#Ni!g-Wlk7 z0JhLDcMl*u|AFABOBlw#myQ1w;eP;y0zG}h`7b#qQtvLxJ8yZOUHB=!dBc;d{@P>f z#AlOa%k7`J8w(lKta!aj+SFY0Cgk$uC&Sro2ZWO7KcpFLu}m;!y3?qs0;_TQLi$>0%K^O$2_3rZZd;c0)^vmCoc<_+sFt9>X9A}VV)5?FJB;&9=jY9@Se(l*x4*%{Td&^wA{O&$xA3i9f#Fs? z50;Zo?9y|zPI@wqxOP7MK*8vRiJWTTlJ~0Hv78KUpQ3KaJ4BoNUKAiDDPP?$JKmm> z$9TejA@>-Xxp)DE5WU|{h(ax7{2deIf z!$-P14%)Au@+V>sy5q=8kl;P^QT@zwOvElpdT)M@(sTG1f^DB8MgygWv{D9Ts+DH5 zqGoOmRT+{+11l=ZNh3?xogUQ~^hfv$G6Dt1^9E{PuI zYp!AUUEH;|O>D2a8xMvjf^l(NI`+_R=_PuH;X(d2rW3OUrCUt*HIMcOkEhw4PT7Od zx`s#9nN3G6kYM$yr&{bjD8GJaQ4yGU?zrJSsW-19E}SvGdU)*BC0X7}hY>>8*NGf# z9^Zu|dqmB77eeOIP42fH`90h0heajabUXuX*DIfJY%9&SE%UZSrsVaFx! zH$H-fgguY51inHkRP!vZ$LoVZNeh1+uRG|7;p-Y9pPZYHv@NqRsj7M4(F{M@@v-+Q ztEe*+!xdI2bVgz81`}h}x?{M}C%1b|Hq{`r;I+MTvDkY(mc&u;B}WxN9ivNYcY7X*=kD-%$DP$07Yg5Nc7)s2^O(mGozQ2dkJ0aS@%?Hz z!J+oSq?DMFB(X@e+`{^LLt`AV$bgU+?d7*+oAljCnO4G&sHvTfcsnA#Srts2Z;LGzEIEWWN+I7#T5%I%;9w>u`JYgzQ765lQ)A zCR+*aD#ge(%Npo?+i#P-0&iA6yuA5SWeyv@23`jfMK``7X=&kz*m+5e1qIsWx47iI zpr1)Xw~}^LP6jFlMZ|`ujm;lz3%N6x%<+XB%00wK>@_88;VIDZIrso9ni!9H0Kens zQaq?~)Bu?r>_>AP_Y?|g>l+wvvJ>@LGf)Q0$Ba2u zYKI{@s?QP!hKWPUo%+N9@Rhtc_#T=2V)a2LJjZfy=!A*f9aiW^j-k6+CtD&)jv2Ow zF%3f_Z?N2~2H}Fbi6veV#ljsVZyx;!v>bL=fQZLe4EBoR4;*hI<_~1@`I>#nlt%I4 z)pbeRk~BU04xXJq79}Uvt9?|4MOHd(XH9v^EvY~q4O|?gsOtY{rY<=D__B4zqnQc| z^)EMyLdv&#u?6oRgRz=)tN(my+@i{zmKq>o`WNi{<9)xW{8wz}7Wtnmn_kfJ>#J~O zNf&Q2I`kADkahIvL*BqA`T+*@FZVmGzZ8Td^xN;wE4a#JriNqLp}958-?{%C@kOVP z4kGc9#TDbNi`<<)Te(caw92_^SvcgkMwuWNt(i;3J7-SFcq!Oxt2M6?K4QE*q3|&_ zx$AhumF?E*Wu*afnMHIuvj|W;^PznC%y~Y`}0BsQ6lM?t|w(^3-!uaAA zhwikOj8TzmgbGl(0-5Wd`Ww;f9Ti?D(2K}_yT|nvxtVTyvU%@o%Uig= z(rYF7S#MRnG_<2;tLnX!XH)yNdwVnJIo3I&+&nfjA=TQjdLO4QA1kUMA9|deVh17$ z@9#DD-gWrwW%rFc3ssBeVC17ZnfQxQWZiq6=g<`m1qFVnY2-9p z)oGk}WB1PsATlZK|K@lfS~4k--#T#DD=g_u;H!GQ)aHZ>Clm8)^4=2+iggmUZogVz zQME0@U?;zqO=@BJI^8xy{rpU+gt0nD$D}d|4V!=znGUc0-^UU;<+IqmrxmO20Dk zSx2h^B2uMdg9}t98|lkYxUy6H;Toml2G|7jkWKZ%4uDc1K$h$Dq0Gy7CDNa zTyWDi;NW!HY4i{21Az37W9=}S$~NeB9zYf~HU|{ci${;(;N#aW>T?72l)4?#CQwLn z!8HyLUpB#z&84w~V^rY{`k2cy;l$ig^n4s_q3S{=6&+aP7(UQ_RTo*2DfnQDt_=7T z@Hg{(7n3UY4;jEGIX^g|+hMGk*LDzcKIFMDi3ZlB7O*3JA7WPLN=Rkh;0Yfnb|ta zVBOPCHuG#o-~)heU!p;(B!-yEhkjmElwgQdb5 zmY7j9_ghy&-}z7Xhp*MYzBN3t7yGeQx`MuV$2)8W5B(Ei@Ybp}##Y!mk0t0`Lsx!O zmc(oq2^a0g_AvC*2t6iB@Zx}V{S2QAA2H`ymqi&0#Y9q6Pun1 zpC4I)J=l({OnqS1bhni_K3Kt=kg&W$QdL5#(cA7|iw!8l%y;A6&?5v1{Rb;nTYE~h z3U@xRXoNd9JUEq13~BF6O|is_^1f-%?0ux1vxaTBS40qxKwO*edih3ROJ`GxuQdA@ zc*{Bnn|Ci|u_SZ*g!u1Ti86O)tKmqMAY1#oUOGTtd?;|@fy#^PS6m+qxchq4w5EcN z7YlO<^WO%`gl*yrcTdGppy-q9@N>1n_mB2eDh15W(l@!|J!)!;@GG@rEf4oD%6__} z?B709Uda`FBvY$qap6<|@cPOvA4y(x52a_{+N^)$AN{1YB-+J$uIB>NkxraqqiK?2 z8zv35iT{$;6L#YJ_L8^^UxvC)+55x0_=b%hbhTyW1`paqbnfFk!LH^0%ma2DDa0P| zDNK6L+Ux8ueBd!C#PNdWsnad*9z9dS1tF>=rRVw|_YYsZaxD-$q))u#jhJH)Bqk^n zfrs!=jGGtXUykp;Sx7cPd!8@;_B`**w#4w`dHyCc5*Bjwc?@nJeCQs!i8Ba5ssQzd;fv*WIHyJyIz{_^05$AB>M04z$Ms#aNGg&ib z{x$hp4x)a=mJmzU%?BKmiBBjH=k!btY{3x>bP*0DaSHTUgljISBM6LnQO=#%2DlIf zswgIku#n6q;R9yqW8Z}UpOnv=L=2Na7Y+4ZHe(~?cB0?qknjHcBrtc-ecfcv%j9&R zs0ch6J`$=)?9D?w{h=oqW7extAd_N!JSV0ZHm~^@gxthhusG*pQ~dBCY&jqOpSMF5 ziQS%NYcXPiODowIuSFK={bCOvYo|6wGXeR}c0&J?nSP^#qj~M7{V}A?=U#cO-(o{* zsm&o3KdctroJ)aDl0()bz}K6}9nDCotM3b^>BuBHg4i+8vR;|Q>-wYj#Ret3RlV>f z*!TM;RF62^hL89kDfcuDqZ|FiBu((R+v2a*v7GWo1u+^j;+E9;;d+KxRW%1(EKxUl6*3DF1-J9G1+(kyWj*o?g9e;goPm3NDYI=5|6@TY>EBL z%SykL!{+rLQLVllO+H1dK8-g8t8`kk%E@%-p_}L?)ex$8_L<`C5bxpPm$8GE;AzC9 zmTj2{{FfF93Zy|`8zN;rWcw=8<`EERttIb4|EIY3 z64R>DV;vwa4*~7?JHP6diL1ljL&I3mH6^j+^cdL8dhktTB>DP02o2j(AP#J;B-xD^ zu>HTq``_0bgsuM@nm_!-?okM^)Id`6*4&Z2(3YpyNkTO*n6F%7`O+>&x}VxK{@FIv zZ@6K;IU+nq@b+n&3nZ>&bZb#NStDh>J{-7F;3PJome@Dld;=lhi~_y8L%vIe!tVX0J{1W6E75-s^Y5Ifb_Z!OQsH1Op=U{sMdrMEG6((?Bq| zT*6;kfo#g<-GiwgB)fT!luD7)+pxGjVBq{+Gg5)!?`{8v*}arG1n%te#q*YNpqq{( z@En+C7T_O(b8+ZOb1acsix$iix@rx5=sX=%Lv=5)Vx1@R!@AaE*f zfM4Jhy(~>6YG>%81)nkhz`<%Q-CKKKY2=;~5UN(e(Jgzv{HVT_r7=#mjzB+7fl9?n zOUki>A`R&IZSX!8#a*V$g-cxemsdWnl+QLR-=Ej|HO}>$wcD!?2>)Wj4?G}HpdLKB zAB=j}MICZWcLm2rO4Y_(S1Acst8Lw{?@s>|mZ{v_wH8yS!E-PuWh8T%{Y?0PXd|M<{tcqFA$xgQuQF7(jVS5sWZawmjM?(?_MVqpy-&X? z(~5q2d<%Mqp~yPQ_2N!LMMAu)`hp+Cn>xIlhBb@a@iv2hLZ8Bz4fbl#)lbIu&VjX<56sSo z6V8w0`Y6yCz1XS9Z6YZ}MoB>jjwJhEI5@`YwJqLX$&h=NdvY3<-l3Bv;}*^y+_Oy1 zV;DqN!{mLNwdO3bgZH2l z(vDB97c8#^t-;HjV%k4$7^)vDz}hFukJ)?DGcK!Nfq%zM-vrjp#QpH7nK~E2&DVSX zwSAOmSXI}3?vuB|s+W;(OY}vEosEWiI8s>0bq!1+$Ck*13$sVxGJN(~N6gM$3T0 z;of6GH^57Qs2)#4>;hKXPv%y!WNM-T>@I5jo^R;*Os$oQuAd*eWQJ5vfn?4kzu!ZF zQij3nzK`kvug$0u*tk3Y*02l^1>EUVlvC9oYI< z9%oy}Y;g9oqOa1i&Pl>fDPl&8UBVng&D=T8 zrI+KePaTr0orSQI8Y=maj7IG{C@iSZ26nPaHMM)o+D;Le8*EN67- z`H!Yg@6P3tGnH-eVi}i!UAlPib~O45tNqAq-_2o(w@l6j-f^TSZH^ueIh_tZhVRx& zrZ(L1d6o!`_&@L%#0mu&1$hT~1fBBL!Yv)1;~Fdj|9i*G!dtslzFX^Dn+dMlB5XhT z@Y(x3@~7C7ZW@sJ);(CS;o4UpLr;HkxIHSjzSE3cH$lXENp2IoRbYEa?yZJ5Wb&36 z)ZPfY4~s&~g(<@Cpv8F`OKJzE1$?{SZ8%`x7E|V-SW150W?NB_{3y9Q@o?v0^qP|o zg#!`6iDI1fEhDaLcs9}T*pxI_ujqG1wICI4W+Cr?{Cx9Z7qWug2BB(Hi5?aaea=q| z2ey~?9X{C~TWu&)EDq-&hd0UX@L|7m9<$_AS~af(vkG6fD<(9q3@wXWjxw5#N7y~a z9O-kibYQ%=@XmXwGNwJyQ5(4UNBHMp>AdN52L!H*g}A9QrdQ7LXxi}lr^ww+Ue|eK zcdg-Kyo_r&4WEr8qeg@FFJ=cdHcXS~rsKup1j8>~dvXpfgU;}2d59mFE#+*k=VDxE ze(>Pz2GEggjhcj#;eGz$c-y>{1oFAcnEPPCEZ}L5D#Q*wcW`i>Q_k6%eF4Lc7!MN> zopt5bXAXFVbj}JF+0}35NE=q^(z)|5w7gSBpc-?Zj{ZX=xD?06$ zBr8ZgD**vZLt`t5_T(!sFx~6B`iHSf0f&mn7h0ZYVB{NSGVJ#aj&3Syh)p2FjRN}J z!0v~BP2QBYD1TX^xG2)SMPV;O%G}qlOTQ0^v(9mqPlJeU(OT z{j!VlcRPFj>E^JAjm@79C+d3WrjHDd9x_LY-`wQ?5+3ZEpZjBA~^ojMx~ywk*^FHEPGtoomhHNfU5)>y8yOm>`GB-gJ;Z#}G5nR4jOZX+e+J z3qr6__=`he{vRtBWL!I#x!2dbItW#eSA;p*C>`7!^IpgQ|6}jHMBB`VSk5J3?_Nh}npks5kLs#K--s7NOuT@Z+rBy=R9I3dJuy7oQi z?6vn==iGJf{_g$f{NYdFH|IO&e9L&pc*ZlHw*YaZiru8G!sxIYx0w)kDtnb^ytT@^ zcT}ijbk>%ON$$|hQ1}UDFKgoPt@Z$s0=|gxQ92n*wrBvxNK$=81kr9YpuIEIFjWJ4 z`&h~6L5CxbP0^{Ysq48exf=;$m!h#A(M}*+I^k|f3kzTO*VdPvuTDTz4hxUcbfH-n zsJ?U(k*pIBc@HEO+l(X8HUnry1+gaEUX;#=JNNe0OfuC?#5-w4I`;DB(ZL}|(i33a zMu)HTeylpH_KIbNzr8k#U$~%EtG4au`liyF94vuIOF*YIyVG#-fy>w}jhjvM`WWTL z@NB@p-+hB1qTF#_Vnr|3ul5%^m0R6cp-e{wus7noIqFO8s=XiDhvW=?P2x}v)t{Ym zC?t&{Lge^CGFtCFlnV#}cQxOorjP3+&|kYz^aQbe+&HX!wo_1Xi(4+)gzboF z4konmo@~!}=NyJrj6$A%ga8j&I6NLyyEWFVy*=|@usL{K@(GH=xknHeNE^{mf<$p%VBB7;v%@f6m?(z4d1Y+{B8{ zG@ShaV)&VfeO6_gHFV+t-EBp$`8Q*}P>;%q4OuWFLY|uXA!nT)jn5S9%e?MYOX0qw zuF9@eVK3F=={MwV36+s7(E3+i5W6qVaJI7_NPIjIOEO|%4l>0FOPJzO4Avw zbZZJyGJA$mo(eJUIr_%wytUP-Te=|Kz=S(6d{cc?g=0Q-`SNZm==70ml= zIolo1(yvxZw%mN*<8Z!&vs86*| z@yDdht-VtF`(k$3k3Xng_)ksobG!_CY5_byld=AN8c>LFH3dF+!8-1h@U#h4&NKjne8vVn1NBNjYka)r}( zx9od}Ny*?=^4>l$MfWK$8xQXJ5zf%BS+Bq!e10&ot(9O-@8WCtH!c>e?c!(R!8#zV zYmimu534 zVSIdim@uaf?~X3*PICH}#VpS4kd}QlOsq>n%Dg(|D*M5Qi1AJD-2K{ZGJ&ywbm}BY z0XhT&%4G1LVzSp^>qh9rOSqZC_|)5s_h@n>|Gbvj&o>sLh7f1C@TutEknwf!6S-r4 zn;qy2_6&hY0L+$yfP5MMhQMz_kNw}f{Ll{Dknhi72d=EGvw%Sq{nsB%1V8kr(7#PC zSQjVy`5gwB;{f4y_&fC%e{?n2cgJ-8HmedO!CBZ!2Q#?ur0Anzdx!6-f#Z-%&+`2q zDn-Wq1pOQTr1AED>BT3pWjeA6eclH;Lz%GG z!2KCs_(#0>-zOA7Ui{xB6hWs|2Kv*+D4?fD<;SOt+jWsL6VKR|k1qeelHm}r{|!>X z(D4UTeF9pKLBIZee<1%_fBY$7@=p`2Kf41xdl7_BOWih0QP}JuJcSQ`-Urc#gG?bs zuU2O6nm*I59Tu#rZm6t?4L+fH)@)5z`(;wDPAl=HiniUikIH$ja_tdFR+eknTBI$* zOR=vv^G-DtmxQ$+3Vi>_nQfts+`G?;Jtsb`kHt0J{1{T2=vjFNk|GcTxh~H&8(eM> zD%j;!3OZ4oeWWsR8=%knnPnA~u$8ZYaVyNr&ND7|u+{TA`L^&%>Bcemg=6jEv!=RY zHq!;ID&O|iZkH$V#6FHa%kO=S1O-~vmHPN@y`k15=8X6l`QF?_Wjk&*Tu|AOflyIY zziiE`(J{-aridh`bQzrp?Z>xcI64KmBF{^XKq=gT4KEkR^TLYkmlRX;B7N0ka^ah4 zIvcAJIj*_JUhldltaS_HSRLb@M7?`4XC@Y&O#s(!7MhCKv)jZ0yoeu6cL5Ey7*X^m zJfOrV_3xwqtW7Ns*xtq_a zZot#j0RBK>D#LY9`$OTnj(4o?V#|GVUG<6+A~gq9?swVlMkZqP($3YkBm9t_6<}h4 zkOlbOXzceHBuj`|yg?h&OzK?)lN58WnU_4t+Rx_CUi(G%mZNg`@oVkL2~Ikx)}S5y z!8AwQsat|lRf&vFs-3uBEEo>=D$Jj*R#eUC1|o$kX(`B}ckba`cjmRr|M-{qpK+ zTSQ@zyPj|=lQi4Gh5d=!I9d$Kdaz7#V|OJJAa;~%?aecIuV zKIeZL{GUGjyEXhj(}vOce`}>A0tO7POYMD1{)yP6ykRMk{*8sIAoEoPUd67n0b-A? zr6NTdbREsL1V>8VfV-20-J90NXj^BZQ2`YXqcsVDj@j3Biy(r8%c?6(wk};BfNBAyM%c;ir+*+g$pVT3DsWC=|+U3Op;B zVIpuZY1_iTBopW1TQF|lhwxr+>Jz&>ESao>21}=Ss68>u;Q^hdb!sIJJgU-~QjFX#P5<_K#Ak z@$+lI2ck+R5Ckl|0-6jC%LiC^Ts~K%kW<5^_3))%rR3KDvSOfyq#WOtpZE709IL32 zMF%qs)c`!?o%RBk-Y?khq>;i;FKS4f>F-3653-6~RXQ0u^B4>}eBwVjXR4rOSp1r{ zzs;=}OZ{ps>uZj}hLn*w6ROZ1=uW8g=g-HWz4&Ae-^lLq{N(X~@L!(J(9CLV-VG${ zu(LQ9KF(D4RUjml-yiA{-no1>@KEc=m{gAUXMR~!!ndw648Z*R+}aB;{)f~79w5%O zxYg`NovfruWjGIIIyI!u>Lppm1X$eQGP!ac+5T?l8HP_KEEQS45Ji%}=<{w8x?5SS zs(xjUnJvj&B@2+;4ZdlpRW@a*dcuMvhyT4MX@s*R*4_U)nJd0w106sAy2%mu@3jZ*hu(%lFXBr zh-Ig71PL*RB`c*tWqvSS3@n;kG3jJDQ_ok84F;}A=Bsx(m^jLgcX)c_iO6e-9lgJ+ zcl{_&!D7Wsl()VGtNy+fXZi2m9Uo*~sg6M%XVK@z7ksDuspd(Q?3K1n0Y=X(IZ_3x z;uaOsV&%U)Q6MyXUp>Mz>CDE`N)0*$B8k2w$W;E`r7uW?=kl_=n2|a?=WWBsH*F*9 z4L_;yHD!yxwxB~3zeuZHV*mEbB9h*nHhvu&rK8zB$A1Oc*QI)h%nGszXEwvg2U8Vz z;RFzu(?Gs;NgB82{$jvsx`WxLBe-5CoAG>JM?dP_`y{J3Bx!}KmLGw-Ixihb!z*`I z*XGvImryr=L)T$IcTzJr=*3WRs2-~zuEhSr+a3G@%w)Mo-2rM5xjPl4vsQ9RUM+;+ssCEm_RuP!#Fz~Whp?UjU;oy27)3!sMOXvn%z(zpAHYKS7;KO0Z ztE#55+{+gj&KQfji?^i*uYb#JJZ>9z@<3$I0P0&J^M{1mdkTC^gw`6L<2$$R-&*gL z#2=5PCVUz)mfZSY=nB`OZv$S9PXvgTIS+3iK{gdNX zHsd;n-Co{<7)X2=I=CsJ+&3Ccq2s$3W1;Z%r-DZ0t!%*GjPsh=~ zX}bq!RRB+(KMShG6bSdkfZ1kFO#7OIde$Djng4#^#W~iBJapS({B>tbr#<$2E39h< zYiN)OGnWg(Hpw8<=2*t@e7fCkWIhNg1n~QzR9)hmpZ~7I(SM}s_@Baaf4DJ#?Nj(c z3bO1FekEFI@2c(B$RkkQ#%W-df=~kvb@O9wI^No|b`dRhN(hbKCByB*0&qW6g;38T z-3)WpCZiXK4!g!;&C+f`udloN_{ki{E*|_|`AL)=(uCT2`)x&kV@hF$i}tWb+})uA zqpu%akh++hd#W@!M&?=h+S}sLI3bzNfF#iyQY?=1d})X1qoI-W!yA1)V!P1>Jq)v95AHR+)PNKR3$cBjgv*kbdA3iIx}WFLK3(y8zQlJe zpRfFW?5a8kPJ!_dNh377f1;DT3bbKxj+1OJJ;aR!r?l2cl;Di+bSP;YB3lBCXWjjB7}2g@HM(IU zhMb{Yxn^|2fyS3mlNwTB<0aEuu8lm(8vf*tuW=U`Ir<% zlzgm@EP){>lB+iR6c@_(IYHi*W$_4DYm~kyId$j4a;`<EsZZ9I7Q-D$P4#)$*@P_uEw?ZlxxjTzIXBPI_Vy7 z56MjZ@b(h+RRQEwa$HrrVuW-Qi7z{DcK8fen>}9{@E+{PizNVpX3`6v6Cg?4n`m+K zcnMI&l%)_apBkKflzJ9E4}119BYpk;R|TDW&Kj7C+4z%&jmv>StJ+2O7o4!HiGfXh zxW;IJLV*g-H#<|8PuJ_DRKgUENBx^K$Y-_CXYFcDX$Dq z;l#Vbe&3bnLs#1)UwxN76jsPeK&NJUQ~9!wVGZII_c_Q}YM2exx#WR+P124-y{G(Aip1oULW*Erd2|5jGw>rgK4ez2UA_xUK&Uo`=9&&r~m$E{`_m#j~D~AcYj-euG9Wg zX#v1W@xlmq+s{a(lQLbN{}3J<#PZ;gewzN!2Xe(6edxVoccH>&dZ+h*@;@?Gs!tBu3&JC65R?@fKmc+3iOvLutZO(-?^63nC0m{b;-D?|kUFj`7g^DJJ z;tDG+utl46*5|Iq=Upn|dU-bOnT&=g51g})5+ zn9oBgN`WB&+M`$syU`8pDzbO!8GjdLB(8XRd?fdTKRZX(9MUEFfYBjI?MA<}hyJn8 zet{6G?!Dm|drbEZ3@JqS$}==kP7HH~Cj(UG?Ue^8y{e(v05AV2WHK8$z$|5AIyfwn zSh{?^JVuCH-eOSo$jP@~%@b7)_H-x~H)TifcyUUl5b< zam0jXBz=qCLVFZTVePYpmI1O~x)l|%s*e)k!uJiaHW7ASaelKAi<}A91l3^?LS7QV z_sZ{fTs`o7)NB|narp9?4AKrixL@>IqkA_#MiSEL7`XS~uY z+$E;%i_K7$*nW3&!#D$o>k)a=*7*s)bP181TklNdJe`XUMJKbii}ny{@p#(PdJ~co ziI+%Ti)&ApH-Jhknpy$4u1vqQYYmNX`0MQIP{zpYl~k+!9`Xg5Y4nHZG2CY5m8oDU zQsAKgy03D524~oDnZflbdLN;v^j{os{%20oZa_CD2TBLsE3n8HGyr!2!a?6usKfzz zLuZsNF|)7BUj;VsbgXT0)bg^HXoTsIY}C8t^@?wqW_tnz%<7xZ6sb=R!vLqm_8b^# z;gdk`8mw9j>=z$LJt1WnbU|s+_=L+kCsTVYFG6mpw>I8;JZ>=^srHm$o|rcM#3|d% z+S$vIhmpO9&uTa@`@CCjm49sKCiGIyfT7~woE*wPTvfi5;rP=p{RKw+Xbun5??_G)_pK{oZ^XQ?n7 z>~^lyPst{K`V?68b_{q=0-eEc+uw`mVmn%U?}8AE8u-!5-8BB~?Ec#6mL(pLi=dFJ zSfVYN&l(-|Veto(ttU?E*$e&B%!N{L`MAMV+exC7QPNEZV?|TOBjnNzT1a!vj%mk^ zdUX*R5u}m&X3zZUqM>-6vDxU5W6R4PKiB;(XNXc#QUQTg!L!n(?(w}u8m<{J0$LqG zND(;k4$KinY(eINCbbZ$V?oUzzZ}n~&Uf7GPOG!9j+-LH#~bHfDf_TqWFBHEgsI5p zao#`4P#ZIGFxHe7TVHiVd4pg0uHTkQ>w{s@akw~cow;ZXIj1?FZ2THtXty}3G(S=I z9d3PwZTuYzd_Btg0cjPt`AABaGK~2TbyjHs6HwsbS*|fCdG`GU8{(_`@|~^fdnVZ z9`l@g?;l5H`%nyPKw{rFDTPHMEf!@7zT{IXHnya(Oe2ycPeoObmA7-cEH{nU2gz)oYTsRm<^gF9b{V7Ae|L?_0#BvQvd=-xhL@c?XfrEl z51U0`D8HlJ3tb^=V$w(=Gh=gX|0wKc%_EtX zCEb0U?~WT@8dl!VBpl-u8+-2flX-3z${M9QGT+K|M~PyIlg|*+uZb8m99V8_FVyt# zKpYK@;JOntZN`4`fVnBtug@;2y5AjRX+uVrguC(u(fSgW73@X3rXG$4R^={rE-a;b zCKgOuf0@eXX!N}E^s4o>BPZ`a>OLPMdoJ^Ku(!V8v(dn};JiFb?h|HQ!+^Yx^L<5t zjx~QWE5!>4d9`$6VcQ`gRd;}ByipRTG&97(xjB#O%ip!es9(r5mZN%xzHH+Wpsf&w z2`hwF66s@&FV?$p)c1x;oVC-7Bwyb<267yF!b9m@`F#BvmrruLF=Tb?#Rs79nf~e!49`xndu))$n`ba z*!aHmyP(PyYkvdPms-Q{szOsh-&F~(_?7;4$g=APQ^J(lkPol9!ghK6kVthuxdFG~ z)KraQ+G%b5_@Yh!+P66N8d9t6gR~of-*JgKf7N0eG`CCGExvv?&_y?g1LgpThbj|a z1Npt8F#1dSM_NeYQ#f}`k^=9gmCeKFWxvet#DoPIJlD<@zB0+%d9-+-J{T6sPiq%Z zF@1d;yW`gA`cd?(BCAah=!dEpfQEa}m2sViml+3G}uj~5UGO|X`r z*C7fQ%p6!@Rxz%}dVIz1x}4{LY3i9Kj=kAPjn99)5oC|ZKt9ZuGS5Gg6NEO=C!r91 z#I7>n!!C@lqD4Ckg4N`NQIMI!r&(X~ri$KKPAz?nE?C^Y@t&oR7mM|%ZF+x5VDC5PUSFHKv^a{|RoV%(Ci;WrGVgC~0=tZd{g#aVI=_^OLiN-XZMG48gtXFM?XOnt4qON9- zKhBudYW~4=O$O`2rkJ!hyyF4HrditjE(!84-jjE3fQ$7a<7#zUu2$hK z+FRYz08$tunCX% zac3U2A57LU67tTs{Ph`aGT=~5gCj9bB6gVc3HiQeRaBzS5fdAu>d~(`=V$Z%Eyl4$ z3p*NRB};*jCI`r)Y5Q;YD)@wsC$yV9H;o@eQ-ms^-9z+95SXA{2ei#7;Py-r3+&G7 zCKHRl_~(4Y*0|!=IEywl5kjKFO*T7}CB8ClTat~n!N=!KX+FO~_K&QkKq)eGaCu+a zW_W`Zr;C3EF9Q%abmlR@IAknn$H1z7rw!xe#fbO)0KGA|sV@Kh8oPObrQAcgnU)i4 zyWNq+VF$0P6CY5Z=Ylfi7}D2v;-x@3gm}O|vC_2)|4UZ-pHd|M%60`BOv-7f0=)s? z2iE6I2>c3Ti>jedNSFaMta89H6yCnGiuHBk&xt4OcaAg8EjsrduAdRZS9YZP`Nsze z+cgW`QP%r0CPQ0m-3XvNgSiWx0n4bzq*fl&>gA_lV40~~O=xmicXw@866w}ZnMi$Q zUCg2MD_EJZn=i!Q>x#~Z$Cl5M`coXEgUmcz3)xffIiNlbg%3&*p+|$`zE0^Q5ag~7 z1`ZdY3>a><8S0X+l6d6^{_bo$Grcos&ei%g`Ee}XEHq5?lr7S>4CU2MvYzF5^g(aHw!p1wY6Sc#f*b9#R9om*X6`6Va+rmV%7V)$+SfcL~Xp7UwMg&2eDRtxv!`q-M z)i`9%b!z0JdTuKQ>sc8NGyC=X^G^iT^5m%e5IrWk$lF)A<1+Lw_;7dCj+DF5-m&Tk|L5lPe`kP^>T3`sM%!wwmrl7$bdA^YgoHZG; zS=LQfY^vYbv$q&0`6$`y>4u-m3f1I!%y+ZU{|>ia6nM~phGs&QwA`W4ceJ}O+6yQR z3mRfrGBg$ojc>j&*a%RH_OvX*u1EIaQf1w0xHDhG8k`J0d&J$Kg38VX=xW_Z?vuND zUDe}cR(#aTT!wam3IE~AcrZi%08TCHfzeX%33ytp1*joz=b%UBOq6^m0W-)PY4x#| z6bZAAb~u~_WZf;z<~17m(#L7e85AM`*3$=B zV6*$;rtyI0P*J+@Xfz_+i?=yDNTEkhwvBquM~~@N={vsQXqwa0gKX^TJS-I)u~HS_ z&W@)j3DQ8*QT74~g$jQil|M;ECoOLn8R(79KAl)(KDM_>AQZ2U+f8JDA)Fd0F*tZ^ z{es0!_xFSIaQ5Jxx|B`q3u9g`bTX)g1jbRIM@JEDOas>Dq`K8DU>7CY7x*<$)=L&i zY~y)3>v|_97V^$U2H)boR(ms+?MPgM*nmpQL9O7~SYp;#aE0TUt22tLlN-J%XbNcW zL=f^)K*tKF-dp7A)Blr^9a+O?+e1)0`s z4~fvQk8g7H_r8sf}GX3SBMf%o*01)oAY{y6>d7a^aKXslwU~Q z9>K#O8M&YLF6o=C1GLhx7XN>4THs)8NaNG_H_HhIGk>QV4eBG> z?*3r0v*$b#kF8okTDd=R#|s zDfRH#(ee|j%4Dv+2GF!agcHb7g5rsV@c{q&y_SQij46{M|DSRIyh{ohrA&S0?@8HdAVn+BU#@ks8 z+Af%(PM*p&(gWd)lU^US)tK5v^zLF$)`%lIc;$)TTR>d{^^}ck6_rp>`h?!{gDEa) ziE-;LSWKh%kQ=xDU{w-lvbP*G{e2#EqwHscUI?$|a~+U=z9N zkTDI4-DDj^!#-8Ptq|^%jfd)2T=#5|!?P$3!TKR?>HVH^uyGEV_kxO~?J!X-cJcm0 zeXCNH5FA;mOR5(NbguPCfkH6gQt4G;*t%-i#M{y=vGgpkj#k9AC~GOH+|}gKw?2g- z7UvlVUF3Qr8XcXitgoN+yz_6?!;xVBU?H$ZK?d}h*fd4 z9ui|6B<}WfYG$=RACFuK){jMq&qlLc!u&Olm$d;oO7RD=U@ND|m+H;5Qx)Zrubp-p79 z@0IE&jGk@e_E?OpKc7WiD135R_xrh-BM$nKRR} z6P*-~#B{i4m=@aa3*GEMojIw`&?p8%^3EwCr_}x zP|SPuc?}sp1}xHVG!akXr>~LGf+$bM9Rr_Sqzm{?afAc-)V3;da4M{PEc?}JtXPpI z*0)%gb-ZJrYM|{(;3hjq6ms46ru2yul24v6?14i)_*9KYRN@Or)?Ea>g&a9l@g@>= zq^m@DAaQ@O*Eu)gdx4j7wz_5KxMuDm57s)$VGpB{(7l!@OOy^$j&Z+?inFBW4LmHd za1EqCJWC`TcvFM9Ig;6?{%D+G*=Rb@)HwPmcjktGCKo2AtFCassZ-)=@MKaxkI+*Q zsXm-M%H}hY)tLTC}up>eKG>Kgr!{CwUa zobT603KhffvZbA%J?OH@C!bX9OT>eO2PyfYEJx8y`g$Si`JhNc;p@;d`)|mx*;``S z(lKlkPkx=)shxp9x-EF+%a2QHD#tVKf1$+<((qll7dtur8nI*;#AXr(+~|p)>=X$L zg1fn?&&6N!@n9KXZ=1x1N4~hzm}vg&7JV5a^a5dszX)Z!OcRd;(_c?<>6zA`cM45E zUNhH(W|$jpyHQ}`^Yx>n3btzSE32d4w#5Q>qQ7dX=9I?!+a^CVzbY`!mhhP5PI{HR ze_Q=5!@GgurPYaxhb8dSV*J}<6@uh?G7+@baG1Q^=f(1SazN-7W1!bh@}cr+`51eR zBl{!D1;qwth&b7=B{u4I<-J$z>XCB8ZjLeRLMdb#_!jrIX!(~vRdrK_8?i+|P1m^Y zC}a>Y%7wq31oDmFd=+-ff2;eQt?(V4qvq1%bkNf9qEz@L_kJ+lu&cbWuje8CWLYPS z7J^U7^rM$jl_&@D(*mPkBBlEL)5qgp>v9L|&k+uh9^9lRDoij9ix z*BCt{QZJnn;>nKDx%kc?D@Xz~G(XKBGv^))XBt!zPZ1yudagjQq%S7YZd3LHK5l|R z{%T9vh*Oib?AJiK1d$_-wdX!8h+V-uZMP0T3jY@TmIjT<>KvR$2t@6mR5{5?De{PK zlw_YZDOBQM)!HZ3=#h+_2RgVV8=tjdXV>Nm7wD`%0^J7SJOU4F_6b7w(~fQ8@|-pWD@nd9+5St%-JAPbsT#S0zYc~`fQQ?s`@TA(rk zEg&8)tntw1H4B;AvX3!RPPFJbL~UT)|3IUG;{S1}D;P4%=@SgkdB%egsHQ@&^C~;( z?00vK*SD8ow(S94k6exyu6Y&|wx)+jq@3|-;mJF^120qit}xrb-X_8*+U0u!`~+Cj z=Jxm*-ucurDxRhZ=`KQ|3H8qTuXSF+9URiGqy}^|8$@CX?e+Mw2TMWYnby*2$r_Zs{r#Cd*=&K;N9h&qo5-eQ+8%BU0J+&>C)YnbC(A?lHwMuWu zhuL-18{;HWH9a_b&Zl~si*MZYy~h)zSo7?p=4s#EFPq%P;^mM~;sY=uKvP>B=*jd> znhOb=lKXVlikds{UVXAgO4~0lTvCE;d|8@9>yq;Rn-(b*EeTGKlNXn0j>>a)kfF?A zCfVfQ3X@yL&{wVhJDKD^WiI}EhUllz@q`AY&j&iiA24ImW3pY3_}+z{fu{x`M4?9g zYfxG!$mK?v&_PHm{RO>_wvDSof6}<|32neg8U`i7eHMb?I!#q!+lp@qV%|x2VIjxF zZd^Xn!|SPXx8=e|YX#7I)rnK4hU+d%tp+`NiMkCk5Ey2t0AP*b9cD;h1xtq%>4Sy$ zP~?rSGY8itg)BuT;4^Ra%lnnCtciqdsvq20oar;$ zY1|s2mJLgC%ZUwJYt9Utju_}k@yR~lh}=!qy1{?YOmqmo7IdT-^sK>^*((a4au_W` zgCaVfc<94`j9)wgYXDy|MpzR;-c|b)p`w&hyt3kPPxp2wlM~5IX#M-!>|6qevSSP7 z)?SR}(2UTqq|_y$701qOhBX{SFjp`@dkH_yvbR2rL=Fj}cxXOcQ~JDsDay^IE^6HI zQF>(B$y0viQ*qI5xs{4`mg$(>#db?M_P}aV|8q7~*KlqMzV#^BP!cGS`T~5ztKh#2 z?{k3AO{gfI!qZq$G=GC}XHk*Ud1lLY@<8Qh;$p1U`A(ZJ?=Iarlva0%9eDzPG_x%G z=h}LFdP^UHo<6(d7_c_vD-9Jy!9nbJ3XZ2Gq~cQ*miWa`w}9EcoslZQ8fYj2t~HJ# z4o3T+JUtjix%QgpA|CPO3yFJG3B#VBJZB=p^6sknlO8L6I1kdxE?nM3sBZTZlyV+V z5r@Q+#qhvKR(XaIkO%4%Xu#=7@X^t8L-GsqUuqIi;SuL+b*F6|H-{^+skU;jLdB{s zw;N<9_@hHNqJF1BIHrT>G;`)S;YqA4*4S|O$`u)Qj02)issqz!A`5mJ6j^hVhDm(L zDus*yHBtK|A2JuQ%8nZ$T_rq8p?cPiPiMyJVh`&loy%5DRQTdpFc|eA+~>O-&-FLE zYP2$jcMFwB69OIHPGZuI^Ru}oW|}Om=MGE;1#{(dXdK*Fld^svP+*t48q=FMeuivz zwClQyvu*h3bMl1reOC&`)QPVCgXxf*V&RE*LZe&F7ifpD_=}L&9>9&#d0cWdP^R(r zBqxYdYFsrE+`Zy)X4cl)Y0%O%Bg4}$RPWV^D@-tx3=M^z@7==1T;I0O9-L6oW`D(c zigxPeE{$473uAa4VtBPJ(d1}K)V{vvyR_hDKkCwg0}NcvsG*I3f|>F-XT2tMEz|U- zst>~9Eva>Pqvx3P390nY4=4p4=00z?RX&$bw|Iv)Ea3V&P*|v=dT;D-Gp5Rq~v)#`a(l&W}4nwx2&s2ly9_4PJmExg8MbSD?j`0pue5S<1v}n)X zRh8UEum-5QQlmy1k!R!Hpgj?N#v6HmF4Qq;U&M|T@5N9^EhVxgWxBK~$Ya?Q-D}U# z|H1UB9o;KYiYp{8fEh{9QPr>=ZfpjjN!|?X=mA&-8+l&@9mf zGhc?lhDK{e5DYsC0_Xnfs@_xSHt~eKPJxK9LErAqPzi12?@6e_(jbm90uJaPb~PcW z?Vvl>qj6)DJcI`UG0NGTfm<|I5}_CO;HZ8zn;Y3W=4I!+m+ZoY!q|VwVa7x6{^3v-wBRK#|s+b8i6vIo1 zDSW#hQ3~hI!=m@U(Vb0*D3`IRIe5GEpom6aQh$Ov2sd1-Q&E^rcllN}Xc8U>0NsGs zPt&=dp^wsEK;2b>rl79VGNy{iQ1QL%>l$S);yWARq9d6Hs{JEBvz|;$n_2i)B{%)l z@y5l`oY9GC6Zzwr(oL;jm-kh#jiCk6 zy*lXLGbjh3jG9kCgC&w6Lg`BilG9g3q@pECATjaxOpp*c0sJt%&0}iSDOmRx1K)&( zLR>|MGe!gpnYo(nlJ$05?fE_FcOTns9@2*f9HK($bM14qDNv|z6pGs+##XLLGn|01 zp3|T^6IhsepNe{&eUCerFeCw%3Ae&VpY)HACVmJLmr(|5za z-Z=G9w*7v7tebU8xOT!mp@6RDR@Hd3Q*ZE9a$(@9j5M3UK4>D}qrv4$gKPApnxU1( zFp?XmS@Ynu(H+sJyQ8TL2ASb_N!g~Uf9BK`uYJGtU;SVPAz1`X#3@|o2)@2jpg#3A|kje4#c2vrDV%W)Xr zHQ`G4b85Kid|UFuG69sHqZHjk8PGUiKq}_S#27XJyw`WD9-C1DsW|?!q=;~5<@~D& zjqISn>lf}mdKk)Ttl(%`XD59#ILAH4!6=TfAoFWkY5*AnbmEkeEykm06QoHOXR|lW zIK+d5mqWR9=NlLkr zI8Zh`*`LstSrxe^0?3*ufm2s@wjam8+if=OsIJ`p z`GYs*%}z?)?vPV0_but-CqQY*4k+444JAmYPs50cNUMaZFL7HYSMdwoJ6->LK%&Y+ z$Ry0Lrm2$c9=p9zQ{&ONBIC|;h2@Fg@3-i1F$uax5~so!d*%#7o&woD^~+N(qnl`H zyM-Okc*QdBZHe6Z5z~e7pxOtO79-V*v278GOsw8|uT}1c9nR;wKBE{+Jv255o!t+6 zEvpU!#5I3}nEzJ*@n5BW|6vIuPlv#7@OYW=FnF}BtU_5AQG#J`4?OIvkAzF`IirA( zLc$jxxork?axYB5N`#rcH{oL#&P43YLis?}(_g`4d*p3`+%L?ZA?*@iwA>3Ghb`N< z0_c$^p&&=HehkDrAJ$SL+HaoT+P32$i##>GT_53^7N^3`!R>SM98a0Z1rmlOB-D>; zz*GCmHLDQ-o=~KEelW=`@_EzNk|hHPWcwSB8;2!pL&dm*uU?Hd6T0^66SFHZEyp2V zZOV>stmovEB)VBU-#ohXm(9js3GYv;o&1M_vV?yLhwM+8w||24|KUJRp()2ey92=i zMd0=-06duEhr03SH|Ce2uzM0Ydv|6=hj&Ub0Y0p2C3i#3XT>iNnIi^5U&bceOvJT^ zUXS@`ImHvrr##msB=H_!x5W?UazWUS!UmpbrydBxR?2v=mf{{R0Rpw^9_?$)x<+;*O9%<4ppk;FQCCsaz1WR`MDdz6#h4DYpHw(4Tr!$eG2v@t<( zK+GuB(tZ#v1UA{)N1y!yl=V#M(w30=v$Xobp0X1QoSz&Psy%YGNH5>78J2gyzsnxa z0I49SJQ9J&-a4aw-{F~)t5Q$3<>n`RnqdbO$T*;dAL#5m4_v49PC3$Zhuj%fjCgI6zF?)l$Lg;ys zJ0$JKIjTr~ACPa{{OZWpLkV*1=9f&y&lqQ$`<;(JL$amo1bE_%cBfgMtveV>S%40S zEByogJ)K5hp^DDINSoxESHPiOn<*>;aq5GPNB-ECMI~wL7Kzm?RVgWBZmHK7eP@g} zL`8XT-j0#&Kr&RNRo#r8rFrnY*Tc~iHgI?aztZ1T&`ay+RkfA0=Ip$_A~%2YRz@0& z<)ftHBDL`;y@%Bm@_}K(F&6ig#Ehuu^wyTvfPe_-MQmhf&3DL`E|58hP6liKh`2x^ zX-%?f6bluXn60Dr=Bp2vq<+qsdKs;6Z*-z-85H;qw_eh0%dzMr2kY)%MJni=%sH~} zRwxL6VzGfVN(pOM<~>>~medwr6q!>?%gjBKG|=n1;+*u^cwhU~q=&kZ-me~z?;VgP zr3CB!+UF~L=W)Vgk<11l8=Onwz%XE+3r%(Yw9-fe&zL6MaurKE7 zs?O*4VE3XaTpQ3Hd^gxuuZcYJggO25vo4#E>SuFnT_vKX9v7ClbK3SPjUeJMET*|b z#ywmI96Y~B97~-v3;y`abaNx4tw}Q3Smdt#L(*0wh+EiFeXsQYU{Vdt1$+Qoz>K`s zZ6bqgR@dlem=jYai&xL7mS!o}Ja)4woSMjOt&I5qy>5N^c!|ZYg-LF5@ljpgZ;7z1 z(EP(Erk`g|bc2##;9IUjK#Hh}LLoz!;b&_?3cv`tV#uuWfcMDil=bS(l6c$k+{xnq zkGJ;>YwBIozU}3Yh?OQ)x-{vbrrR?XmzP7-s9p%^`@(} zuN0qeZ3e~cejHml_wlEmE6o>d9Lb}=>D&zn8T>k?f1k!Rkot7r zcc=(LV_+eOdOn2+6oX9s|R+h&CC zcTd?L9cb02f(Z6PYClC=cWftSV6%S>C+@Vqs31?DEc^6he0ezKNPPiYSTI zJoVZx$!20{u!fN~>%H>Pj)fNnew<$Lgd2*d#%Bdl-eR-BJaE0DRcq6h&^6`Y?S$!> zexIXP&D_g8JgzsSad?z*JZ1H$Wn)|Ox@#$D@hfK4fl<(`JB+dQdl-U&?nR}hP?aTB zv2nD};IcvBNp=gh;2?Q-YEtYoA*`*?N6h3>zlD~`XgDVz$pwjc4MAr-UkjrW2SXs2 zdxQ8=6pB_*)Hi=Rf*GOP(T%}JzfH4+;)-;3y*t`ri716%udfS{Z)!{Xq7ZZf z`kulceW5to%&_)r!?_%f);}F7s&W44b*9JY7uI|e%<2U?W2ESytLrW(=p^pOlmggo zdS(G0xMNz~tJSTa;mnTcD|B??PgVhhoj&L11y=jy z%32!@>7!o~k0zo~i8p-~e=)7P)1uwVxoePhZ~_ka9EGw37fK@<4wUUpOc_*z3EvA_ zv_itnj78TZJ10Tk&19-fHsrRAX2m0mq=<)}-du&U29`UYmAa(1fWWj4wTG8gTUFs< zvcY_Y)Ket|%jR4duM#)q&H>{9;}n-`+A5u2eq0jHi8|`&XnW*{hmXzm>tYno7t*ra z_Ykvm&o#QY31zL%ANib$B3kXH5i?bJRdYYw^S24u9Yz~#t*=WsqUFqKI?KoC6EfGh z>d$L=b{PkE?Y#z~JK7qiM;DW&aCl zLq!ux2An*X`so2CcuGl`?4|@V8ob2zqbMb;6jXBo2Av{@P8#wifC{3>SAF3!;1Z(- zFi|3LS*TGDS(Nlw>(vA;;)-MrHhuNknBERk34UdG&TQ@?%ZJaDGbW=Z-?|>2nIKQ} zDZcwOhpc<<``PS-7Wp7c319&;Z7SsGLBOpZd@9|uu7=j!HtAG75j5+>pPW3U-@!5X z)Ha?XED$2v_*k(+n_anNB8l~py;H_gSRdcBj0^8R9(jn%2Jhb+P%? z-6^!j?DmpUFXR&h-vE17eqOJgXa19r-EOnw)pbFqMPuK1#iqhz18?k{ckD#UMODTL zt~K4PRqUL*KQW*xX-El?($j>jgp82kf-YP>l-(GoayM+!o_XTr%uZ|BYB#@@)_QJr zGV)SM`g0HKCujB**y3Uy3*PsJM5uqiFA`K}8NZR7bh?l9vKvCYAE(){L0bJ1NUY17?jh9@#F z{Gnek0jf1O`H)sf%k)}yeUA9!&Jon*{SMs1eX0TxlM&QGfGU1PzN1Ped!WY*YtDZZ zesa7dw}>}xBxyXl_|Cu{|K^Y=S4&Ix=*sVg?h3pV!O3&~ zA%)+aO+VAk1-pQ${?-k74eSt0aKM)epeGphh)Pc)pax4dKngoZ|NZ6dzj>>5o<%x zbTGmr8C`&>Kv;{~gU8akiCR5z#F`;mSf80uqd(4S=wtDVzDSv#W*+Axz9mkEWXF9n)5BSf@VUGN%b?l+|hj8B^1CseIA(XfwO znnILL+|XxtaA65mjC&^V&`K{o3xh6zTkeKUlH6u|I{r*~{%1F?l&H zX>@f-t~Bq5CLx$%JzzM8E0&t3U;;M6>87uTkT$gLsq&ySB1RF&eKZP*EM9r+s=jz_ zB_zquLyr4VK#QU5>+j*O^h=U)ondbo>o?p&LnTCStuJJthICLv>WEu?O)0c*cnnmm zWu1sunx`AyE7l;naf|BkX|8`^zn?US9nXs^7rzdE;H9@hxt<%&4;cl~kJ$=Ix-phmsv0z004jmZnrO|h*B%2QWBnw# zamVd-M>l61>7+ZWmS-k<9dej+MdsXnygakcd(^WqU05U>I1O=AQ!$SyCg6Bm1bj!_ zSkY~0FSK7z-a^lYbTgyY-N&f5;cZ#IMf0yV*n-**`Nt~;pRIvNMwSnHyo;)WOLWh%p#>dEJwby;qQ{Wn3eIg-6D`vO{%T5HN)di`#&XpknzOTfculw< zj?14c>(+Hs*Gj{f&ARQBnbZ{GkP$5s_W8+9#VD5U^_t4mXZ>5<>`L1Kf5WCwH@9Q@ zDx?r3I-`H@f*X~w-*m;G^=b0PDCwujg_8VNykLqXpT0%-5NlY4%mtq^UF!8FG*d%+ zW+aJ)L{QZ~4d(HbVrBi{a)>-vb|)e^!OzSuSn^R=l8c< z53M0p_PhQ}UOsMiPp$;ptw~kZB<5e~iZB>IA@M~0a>rRasgFT(D-YQOI9?2M>A-ur zsd3O`Ra=nOv_uaWX_+oSu!38(;|Nr2y_R9wxB2k#YKPjS*kmB9W4w~JOTk&mD<>!N zAKkV+r7e-A&zcipMbos2foSz2L8HwSV3>ymUYNxEl5w<&cuMxvF#G_)>cNkye} zWixh_6s*WAx7CX@Wc6~EUlRW2ydR&q*mHWuGFeADImcINYA(zntb+kku^Dg)=|_J^ z2hXs$&X#E)y#!1@&a$I$lTeA`V!l{~xZmp$S7Gbk9+KuyG>XN)t!6D7z2rkl+o)+pSjm_fQtG=*CT`Doch z;Cci@*v6?M`8;%q#q6ABW$}ZUr$5@kiin|f`+0bufMpXt!McQpbsvt=i=4wsVQ*n2 zHlgH2XsoIuI3SUyHTnTwxd;~hy2+ppc!gP8q?@1Dsn$Nx$i$4~%yHp}}a)#);a*3CP$1EYv=*hGP#3#hkyR7~fIzL{zQ*q%}@FtE4=(Zue z20+y(DB8X@7!Vo{Nk7ocv>Rl17)bV)&%4L_D&-N)voygoTIGp};+JOz+KQ<-^^g64$u8%n$cYuee*7 zv^27y-wY~$2sz7^{AQSXWi*wL_L48D*+x-K=X_0bKP(jsw&7EsEj$24*4^YnqCa|j zjY(9?u7v(Xd^eu}9cX5;kE0jVJ!2WI?F(o1`L_H{J1MGtKh3W9m>OS4u-Mgi-*3n$ zkPT^SRLnk#W<$dM%p`8)6X9bl`0r&Jk7p>s&^4wVGmmH7tKN(&JuHYYseal2C+Wl=X z(5@nDb(vz`KWMD%-dT|$Stf@FO)KYZJQz0*!MHgs&)pv3vRq6)i>Q5KwD_K`lOXNT zQc~z0_2?L1=t^7bk7zhBH24fPi0Ne-XvPW-mUjR`PNilug7qc$eacqX$}IZbm9P_K zHEWu!mtUeTWw;XkK_5$jRW}lzN!|*Df0*IEf7jzo=L2iSJkHqM;gAe5K($x+k#TRlGG}+Xm6UZbhua?dt{(DCYpo4Ar^D4;YC1Q zHE@_egM18hQ+{JmmAjLIN`TizrmI}eG1k+_ET;AWDEHL1oJ!V`Oew`XdWh?({bA;nEr_ry&#e zmWqP=av3*g86Wm*Mb8L@tmnLBF7w@raA#gOVMd#NI%XX=iq#fN`|=}oBVhKc90nMg z_KRdvy^Bw2$}epTrZqRyuqeq6QjtmDfwGlp8D?@j_>9YU@hCeJ2N!!GKeG!mmv8?# zs4$U~oSE^PLSpK7Mc2UY2?jltO6vp?{Gdre9Yl;M_+SnwYovV}rR9}((QsYdojd!p)@UC(#6l1ba--2!u}$R!QswO`zq>2`>jJ?ga~ zx-GTrz_L@d*;^obhWfZ|f*f*Y#O4(XcAVVMgc%FJs-(p$d(F#S7}puo@gnkVe2{mY z%x^SXjTGvO0h43!#ixG@x^wEkg-8C~;Dx`_u>UJ*zPd`R?GMA|t8P~V%fX(E(n&H@ z3V9bHME9E6(;2a)=*8|7`OWhgzPk2yg1-^14X_C%m76o)_G1%fzIsdW7nkYC*wIA7 zs>P7ESC}so!$5MVZRsXu3Kx$w2Rd}9@2m|e_{_Y~$tP`ARQJ#ol^b@lx~vHI#x8Aj z3-pCgAxC~Wn0f8TeJ9|q>Uc1H)5N^ENarHBkntQPwv8wQNY-Nj(9f;wp{*G5hxS|Arj=?Ow#+LeV4@hAt zetC*Ls)%@E)5ddmT}*eLqfkJVt@6$OB2(aNMG!e)u0h79;oM zt4W+t-KNH>nlnmL4UG}<(KmB_df%QpYab^2aE-(JI{qPQ$O$#1h=9?(_NcGH5e2AO zOWsp`LgmD!230wfpW-yL|W#=?b}-X zM;iw|kit*AuJno)Id+r-?*yJA%t7%XLWA!0OM@a9N@Rc!z?Bid1};qt7Lv4Nm+dL} z9dr4MwNZ(6Kf{yvd!KT;PZLzb#jVp`=1y|tEwm3#xSZlSLfWq%L?uJhRPWW-G*fZJ z&9s&@7bHD1YO*C?x!Zb5*~W+(MM&WcA9r^Hh{C|G53_$m>}) zEN|~HhO1aPzJrfyEPLk`vhZ$w{9XRrt_+If9UO!}6W`Y}Ty`>Xu2(bbUmmrfd3=jwP~U@{p1{1 z>;?nPPPoWfl~a_l-bW9ECWsBRd1A1XTp7nIdvc7J;5W-@aK>kKFiucclJ)vx{~%hE z;g2Px&xN&J79JOGu8hM0jb2zhcUl{2WNd)TVpx1A-0Oox97vffFDh6bwq6xeVz?zD zr(L4&r*h_SoC9AlOCW!E!+7a4tB}+a$fo7+4o2LKJtc+KQDC{;v=HODi!Mk)T)U^z zvXv#t5!Y~1Q&q{HpI=O_kDvVpEaltF!oZG;+&`rVfnctX|DSV({>dDjDX??C_+R6V z{~-zL-{#RP!9?hm+@O5zR~Li|$k@J2iGwObp`dK#+N_rsarRbj8PIUE6qV~cqbKJ5 zT_dBKzyg9&{TN?Z;Xx)WzlVqJ;3_e4*O=J4Y z9(S1O@*wV7*s#{r9elhe(xPV($?wo;I7Ex}E?)I^q29Ydk7+J?<~eScb?;CTrGbM| z-^n+z5LqzbtAZG#OIWF(4ksd~9#!FfGdOmH%obI?n%LkCq0dZ2)_=xYyw<}lTnnEj~VYFI>kfht7Hoa5`ta~f~=VEcI3xzN`M+XuU#YI6`v1+grV<}tLz zZW3o`f-h5lI=|jfSBzQh$YLcnTJ#y3Y;;-s;&W!d=44YnNkh$wl^$XB4`(!FY5I-D zw9^i2$->Wr-r~QtQgI6ol+#Jz#b3gtOl1YNR*iA(QJ$It3I^kxwjrFhARgkZmVHha z#p3MZV@-l3&wlFhsA!qw)G5gs!bAP&_pl|Wm*A&*g1`@18_-_5^9{D$1FKF62u?D? z-4E8^-&`?ps6B{$T8*u0)G{$1Q`?n>c(UqGxCFA~4siWJ;IntG3MbB3-YXwpTBWcq z<#Ju#tZzhmW26BvQV~n(@7ev+kxb=6;cCDG=4bVkCpeW0FHopHqNJAoR5(+ui_gA1i7c$hny18j)jg~~5; zIgaML-x}cZcs+#f%#>f6y*IICrs|GdnFbA-*OOV}Pv(YkQKU0a=IiP>ADLFS6H6)B0Lb@K@KkP~>ae-0e z1IkD##b$j!EiEkXkf4&iSBCr9Of)ne_4VC3VF*vL4NDGsvd7(+<5;N^BiTy8Plz2fn5GhIK^B<*uKU zLxoYWgZM;f5-bUe_5up;KobJmDgxiT(hX{>+YUwS$}RKfCu&En7R-XJ?cU{~3#t@S6kD{8yuodqw{( z2jrhM7ynJk(O z@6>aD?`rIBVxZ)+kO=||=)y>%hVED*vf=PrhF}>3Fg<<0Qc632C7@Z^d|qy9(kdg~ z=3K~$MXNT+`7Be`ozI9M<$e0`bd`%C61Vn|3}3K3SRUGUa1A(1)(R>ly8PIVRFUY@ zH5gQN8UNaCS754kw`J_+iRw$At~2(|ZQb{`*kOMeB5!{4iIT&ewKi}y$}prvg2MSJ z>S>A|bx)19TtlldB~t0{&{mUg5iTd*nM~DM6ggOY=w^l_e&E$RHuw{5Q<8Gw-BL$T zJ+`sQ-1%qPT}vY(EWifGgvSWZ#b%1N7od zr@g=c~^awzvwZedqY5*A>SAs?%Oe78-n@<+HW2SCl5h~29#jXqb24{sSRy2wFOW3Cz` z6p!soe{T-zPV{q>ekK=y>S`Cc1ktt*CAub&2Oh8k*kN2QvK%he-1PJS5?6eHBum- z7hrJtClAitxV)SzwXh?tf5f76ba~6k+>xmD>F}YoxU5O4U`0v z7%lpq!IF_~EmY%|?7HQEDVFuKAgDVeOmT}T7_+oZJeCN z8=+(@*yxgmtaug8AfObmWs~)^dE{Djt$VJENeabW?!oAH@x|CK*SsLZIS!eARv+PL zCGA*SlR6W$J8=^8VMf>HgK6JS>#uWNBf96R;>+XJze#_L1veLtRC(5mBe4HqM#O-f z82I0c@%ZmMG5@Rv_BS;`zAc3=gX&sCyTdhX@&mxI6el7ClZna1f|AD+M|pP{lW}8| zR8L+syA?V;eXJ)qez>cr5J*$Eb*+AGI?$Y6^R>nDmE?4$3>CDwY*IC-c&b|;s9#aK z3?~KOqBi&I(=AQu`WnQ{heHgf$F3(UnopS~1{?K3QsCTIZ(HlHv>G8?&WlxcUv9Tl zdFrP!G-uxldE~3@E!1>jRdL+=vGKaP%va` zss-rg(yj9DGQj05EX{h$teQVESV24m)dgR2h(tyHp`s*Bq$!oWN-+xQ=M|SwEtl#HDSE^O@N& zS0R*|8Wm*jbL_?HDGB7qFOal&o$PueF5$2G+|rT}(-%sATND;@_q5PT>nPn3kfD3I z(Y;*3V#B0|{kMpFfZ-~92(Nv=ZesLcS985J(A|s}@hExSb5CDabZa|V_71=65#_3O zu`wk?M8&6P)(wlHp*{0-hB=gUPzB&a!U6kJ#KBOKcv*B#9VTHVm@v<$Zy3L@X8zi2 zTu0M3_DWoCy-Z)R`oPPORT=IpWKOB?#9tN^b?Nc*l3h54DG8|TznNoDWDz-T5d0uG z13ZKAXTcKKTj@!s(tO~>CmXg)x2GQ~F1Vqr+!wWu!j0@bt?!uItKDU@`L@$cV}9KY zd8`y*ggmZ9!%|U+b`%sCx=o%!Z(M%VM8Og>RPRw8@=>GQut<~oG2NBp-jq(Uya?|3 z%D#`c(=rv;4zW?wpY7f_LZidEN!%&hSfCp&P1iu`A&?u)Ei~}DXT(-hH%jXUM3~>Y zm77bX*>BI~o3mKYEd}`Z+QkhC$k3qqY}ar8{DQhX*HS^w)E+`nGr)-%o*F~98LhF{ z>_1IWi7qT!jw+Zv>&GzWlKsW0wejrQLmh>(3+FqHE~)Z9h<8pr;rp{kX>+f>%h8N@ zydU03xkPtGlu&%=!64>Rah?nnkjP|7dqQ2`X7?!k@YQ1V)IcrhQxHJ7kFM~m#l_38 z+*CT@|A!&^-L!4AmF1U4_dP{Bv8t6EI~=NYZ~UW+4{FF7d_jknviGQ$kR3pg4yU$; zjjpTBw0$_3ak;KN`;xopMp?1vAA`ER`Tm2>vlmkI59VLuMPlw9U@{K6ib(S;^kA@@ zP>d=D{&4FFT5|$w`2eHs9ce2$ppB~hDNg<94nrfu=QncCWA79^-M16}^ZQU<C4=VAPl_s9Y}XOQ<ytfec0d|VeB+Dey- z-)8aE;ohR4E$sw7Il32uIsi>}GC}dJqF?oAYnNN<`33V_=&IJ@pL(o)OLTxUcgM2f zZgv}wk4@pb+;?ZGo<4ojX;K8rX8&PV=K49<7AqwfbZDgf%|;6B9|tu5v%>zrniJe# z0QCjwEioT@OA(@j=G_T92=|3aD+9H*hOrIvvwu{78J&fA=tmTZnzJ*VEAYHbs)~DA zndE}b%FkJqXYY#oV7a2)mgL2`kXCH=;HTxR<=ys0G@IRx<>gPm_u{K;*NZnH_Vl?|8+U%amszLP%^( zqFd4iX}uI=dSDKqK|MXtW<0WUY4C%Kxq2DG&fU}0%T7$5lB1&D9lP>wOI^Lkl#qD; z*k>&*TS;IzR^0vbndPeoNfSH7mPb8fYH^m9 znw0B#(L>qhFT?q~Jv%s_2>)SbpBNQiLBb5g4Cq1H9o)!pRUmSRdB%z6Q?@hsc=M5V za07kC!y#61Hb}PpoPOx2h(r8i(&K#^k+j@Wr4VmNHLl`LkdWv+>`pX3_~sIC_2Rvy zTq;Vf_dYk9`45FzP^=|!W1hpYBu7S{_L;g{RqCv2GeO&`SOxL@N%0F%F}D2EIeMEnmU@Sc!@@87la$)ABcz0Q4d1TcM0(@yLFJUJr=SpM%86{{IRA79 zrFf?luTg9@`##*5ZPVCBHtfX37o~)tv$UMJpS+fGAA`)S7FOh@GF!;OM0bUry*7`@ z3P@6}Wi2U=0BmmXkFI-g^bN`~>+*&u2qMlp+(s(U?abbJU0N*rniembD+s>HX`r8e z9V|LQ!o@7LaKC!ne;KuH0s+Nc#!*T#dteP-@vim_4cC9ZZ<^uwzSv@KFq;|}MaQSpYb%;_DPh4A-xb;mCzKi`b zkyv?GEnexpL+p{`y^a_l8%W7pJ=n$OBW)2FovD`b(k$o6b-%!`a5({RFhE$j(W_|d z8hqC+yyMuBvR9|Hjz4SvIC=hmp^5!Ji`~D)1~U^(CqosT516Zn!F+=OT}i}>n@R4d z{z?C-3#Rxh)4CHi9##Dh=f=l)o}4{FJ@=;P3hRPyWYyyzMw}pn;o)Bx4F3tH{%6DC z|2C#uf&SpX%(wm%!T|jZVSw%T>Cu$I@TlIeE)NU}U8WA&vhDI#j15-J3ktoi7Ni%N zca7q_ykx=_BZP;U{hvK4es7o=Vyw#`d<^d~18P>c}h!EYH3p!=Uq*1&eYD% zxU4X?^ibY>6XEL;y&h!9UuL%B)xmptqWXNYnXSFDs_*FbpoaN)&H6QsDvZHIty^ko zO{@F_yV-_>1c$~IDfRc&x0+8rI;kZ)kmGFT^{M*KZVi^Yi682TtLdaN#R}0nwV6gG z0R@)SZ>laAJV|;Jf1J_lXjP*HoquwEq}zWCiy9{()q|S$kPO{eVes(6j=G6bNEoP} z^q)B$OT!X=_4wkYfD#ZBu^g;A`>4S?&P+zuThr0;%C{;s`>AY)Q?!{6OC@v38OjLz zwr?F+MXVr=3S1=z;(3ryzTS5#v$%J4zGZhbV6y&MwV{R=T>Q#MDPybg3x*{}?yxzY z8yVyht{Mz6&F>H@LF%D~1Q0lC3}p;Po2jDi#nM6v7_l|oY&Z78j2(+8@#~GI>-;7z z#zW7II2O7h%x`OF$*!2otbxNhqxjj#2i_VHyLRA-76VH2QZex}EGa=tB`^edFuYAQ zEWqEPeWrxu$XRg(zTj-V2tAW3b+Pg40|n+qJ?6Yh*YAm`(RR5UGYGq58gW6JX%BDB z`-1u*@D_@sTn4iv;^fV?7Cz6ZWo-PI&Gf0^>*S>#AuitDH{YIs&sxxn zBUU$~e}2)MO9fL#BAtGpiTwB>JWQs3)*>ktVvI+jnwG2VZ}W3z zdp{f+cDLIY?N5B(6gqX)e!^bSrh{g(%lsq2`T5u)o&DFn3$#%RjJA}L)-nrLCNX4g zK4ClVOEt`DJHZ%6ef zx=PC-y!)lz+@ET0kaekAioU4CE`(ng0%0^+oQBu1tGYH ztj${LBDE)A#+9%1O1>gOhD3~XQ0&Tu7X<9p7ypQ;cI^LlUOc9wHH*V^$eXWWe^1p4 ze19lrSSA=&jihyd1pntttB&c#By&CbE}w>+GWSp3e!i$6W4_9=`>gIDYN+Vh&(Gi6 z4OTsEAJiXfL`QZWI3lG%mhIyF%PWVe;`Ri|&w$^bh_yt*Uq3{3X3_&5);$-&{)I*V)Q?sFQt+PYUP% z8Akp2-h%FPn(AlBY)9w*<8;hEN_SS?DxEIL9kXD`HB6_&m>Qtkw50c-B}j3Ns0Vby zdG7My5!X~T72D4%{fRjo#;6F>uUKlQmkRA@C0Rluhza>CgUY;7lQ3UpU!B> zFLr~a!BR0P0imQlA~YT{>r+T~T#j3F@clLKXP3n5R#M{FAbm1REn(u@R{t);MZrD$ zL`Oxt8*#+i+Pl)>i?NkTn|e7YGC`TE@B;!%Nv9?}n%v}n4T21B&bhSRpWuzYwkdJX zg@ff(-yQZc!`5Hy4aC*6cleL$SP$^1KPrd0&&JJ2@pt*-b_KCXSXv|s=;fw;t%L4d zCO&0Db@OgOy=~|slA#Nmk{W`cARD@g)~=_}DNq6wQkkd05Fh3rS9c6`^P6icT@A0+ zw#u1r`z*bST07}Wrs&rt;;mr{v;H6)6H5(8B`a`g($JGFW!Z=jMpR!+u)jN;z=;}Y zbD!)n(ek?`Ddob|So`SPEw$MA7tw;Uz6D2cS^lw1(X&cz=UEN4_B{Z}d!sd(4D{d$ zaN!Bgab`(jkA9m=ho^J0JZgGnVG+JAz9T8FapGgU@_qh?%kMubi;BoPfYe6C@CmT5 z5i@6b`^ebCmbSfNOd=|gt~neu255my_jG^>LEs zUs0aZcN_{QO`W&G?e}9?`zW`is)=!@`5m746?;qBg-N}63)2o7WFlY_P_j@k^GyiF zhmwROfYU&Bun&Rp!8KDBlkt|ugU5kPMV9!jgD-0yZ6%laZdT+73!is*PU%)0 z(r~e&9gq4J{`pbZf*efY_XrqnPKSXtqhvomkvqj2HnKg-)W;;ga=?-%x31bXGqYwo ziM|rQu}XPv2-&ziX0XaE%9DZ$BRzZ_@n|UpHat@Lq5p;Nq2xOsrH+5a{#;Q7P8}4k`Hu$8XGmlJgls% z+!?=Vyd-LoV*bKe-6H3U*Wx=pDO8|!1y65c4%=&*U}LRW`R6>fb)OGgwn^ zbi{ARZ8Oz-*hX-`e-ATBWb}95{dcgH=i7J~Y<=nCv)k0! zVG~pfpA%#^p%J0vu1FxCq&Ji)gM%5<2B^<6xe`d+()7qt{2H@YSusD%C{Vrbfp{Wc zyjt1Mo%!PP2^U|y4bVu_oUp$v(~4^prGfKW5OTLci>(>=-2~NY0}OaE7j#Wq>u$>O z%)*Rpr_s57c;LCMythV%O~STEP7I$@s`*OUl=9nD7gyJTX;s8mfJ1KqEF=g6M3R^W zGa0DIHlPDg*=g1Easa)%fYVP7)Z%|-z*HD`V(WTHU1XRV$KAK)5?^uJ(fSwpY&LcL zl=vig{8dR%zyO#A@&Vowm>VW(!LyN)m0f(hZYHJhYU=>Y#a!k);;nNAcZp{qS`W%} z&lL4Kwx7!>5RVoc`{E&(RtGkAmB8b;5(DW&OEXIvRJua0lY&VX585P7w$@apt^4&~ zC(V54EbG4#Iqq>&>L!TZ(J5CJyBGUQZ_UxqOkm&;r$mL5>M>wDH(Zj0O_yufsZhoF z*#)ZBiYKA@1`9gR$>*2xy>t&#dwHcOGSXm?(ZIqc0ixzCC3lVW#S}9_bxn*2X z>&S1{anAqqjj;sTLSux=Lo(gx9^E@)vrmtZ9y6rtsC&x7$4&G~Ez9~vYXJ*`3k+lW zRf4VtVD0mmTi(b`l3NHX{_UBQKVaE*7K+@qxXR*07Kp!#7gUuHV06$)`;qX zOJC|14}N?w&AvNO*?#Up+&xxD$M5XL;|UKELb-$&Ii#+z5_-i#2v1wNDYlq}W27o& zI>spB!Ur_>DH)&)paRXnyq}F9kV}rl%Vi2HEYE6PVzAI;c)__;TNBNCHT4L?iJ~Kh zgvyogq03jgB@o1esA{+*xGaE>xSc^igkVF4>LGY?z0Z>+0hXt%A$ z#xpm+)p!2Dmw4g|!)@tHBesbRVfY1F-gg_$`=hrgTv12k@y-YCJX#k46{d1FaQN-Xf?QHHXZm>eZ_G{3Zpf?&?<# z&>G@{dU?!H-PoJOFABL$3bSrYb^Uq5JYzZ1^-xRu_l)@^ZIC2xGPqzrMVl(e?UcC< z%tTF=l+2B0wLwpXg&7cYC1RYnH%UU1O2B!!7Rne5B>f5PzzX34BDCWl!zkT!d$^PhI;>6p-(n*C~8I{(ZsL!$n_hfZI zSz6R52ZtxWN7sF)_PjLnRR5w-f1HVc_cwK?w{*S-4EiTgd60Heu=_lg6$3v?`{b;M*MBShwcfZdxNfS z%i*9|;%4922Lx(h#=X2E8y^K%i=3)%ee3iJ_P}C04$<{(%i)~zh4a%f62tA6)qle& zy!o;Rd2ON2hwx+6)5Jmyt&HqMYnW=uE_R^@vgn(26YV@G)*$ad<>V{H4p8yL`>DG} zk*7#*AdL7f_sjVqNL7#ao2Z3GG8E|81bX%QH*e^XQSwNG)d2tGGF}CRyseU+=Lw)L^>FDg;De_~U5ftkn044w<{ZzZj3KNZFIA>zmwV zlyXPK(lH8^LLK5pFL;j7UK2R^w)fKIHcOG=qsS__+v=h5f_4!$*pFXIk~RC;eui=4 zRsM4of~HF`SE7#KxRmTu&iM-nP=!)zV}yZ7YYHay>7R~htkF%!J!&$&JI15ocPV|2 zuNEaAGe5__3De-WEl4`?F43M}%-c>l6%84+jOY9p30o>OC}5HiD9x2#9N%ck&bjYz zlc((t|FBv=wX1BD=&w+2S6g>5nX6JGF8f1-;{kE*FiFW+XSmx^y{wM4@K$zjh#Q)# zidbf6K-o)`osHtQ9Px0do~UWAk;1_tV&Idjo_$iY!0hZ<1`agwGG_!PR@nu+6(TvF z#x+3SfHH3k)3@99s7&++78StD1Uk?3uq&z)*U%IU-K*LQT`EA_T8{oNgMvT(v)Z}8 zn(Aqca8us|_^0f^z>KNhbUhjV$1bl;(Ti77kA)n}^eqNM9<9U5y05CNq$*R?*-TX0 zeiEEtDCHtiJ}c8p6A-Y_RO$rsy+E}>&%8F}7FAn=`U450r85%OT7y=Zr>1;nzMALc zg~Q=zUd&E7aV6&1c0c*Dc)X+V>UrUvg{DTRvA52?o^D013?-Dd$Q({)0(#*i`^MviE_&pC9ErT+KX7WiH(?su!{ zw?RgO3a1hL$tECSD-EzJa}MZEfmFGX7!`)rNDR|CW7cl&ayrb$-kNit6h;Qji6jC^ z?dU}VVda*sPL2>0|Jw7rTLquJ`&pw*(l(y&(U#z}MKU3{o3_;T8dw6F>1>nbG-?@$ z^V3bqXj$?hw6b?iPA)Evhi!^|Lu-}Km+{Bh!QUnT&#T;O&0AiJykRtHsC5DHs!~b} z*yr}#i709Wh8o3X1HRc$R19$lQ|yAzfF|k!2n95)3H_{P@A$(u<@}^{^TEJ8%P#{z zL*gUWVGq?L81x5x+`QlMP*OT}gqTw<4roYi1?>U%iA*4mV2FEAPYQ;BgRYiAe|$1H z@2HB0iA@9XtnS3-I)vVeRiNeghS=jFk;Ml!o*%b(-?_H`(e@BQ=sen~EL5hrpM5SK za`UTi{TT8I?G+780q>*?McO{Cl0vMA-)zAFBg7cVH7?7MpnjorSx4?XvY@7)RwSFX z!q|QS+gW3W?8R$RrwVyxy7@Zmm5=r*@+dl8w4~v=!O73(KONbrgeqXy+rhjadV1RY zzc;W{|E+F%6o&tEKEF@kjSc^BmUammGP4@vm@7MSt6t?S3jaFll>EON{|HZSSo;H&4d;{jCQV+UHP zmRT8DNYW$XGr>uSFdQlal`h9hc+lF5zyz51enW7!8CiJ81O0|-9{!^BviV$IPp|^- zNtXDjh{uh!z2~kUkBlV_PTFNz^L6099sV9fIE;(gga3dn&Z5LNDHTpK{S1#AFqz{lPo$HM>|k4!hJ9zj1~t&RiR13M6&tsJ z1gURBDxDt?(Ua1wcglcx+`tt2o#oqm`Z@RXtIE7(Ac))qpnGHbCWm4^6N#P)hS*a# z^$wph^>P0~fj$mskt4na+e!TStE2SCzlX_!*@Io{umO2)DphYF_?Bic`i2nMsNfQ@IA+Qhv8N1?jNBxPmy^)Ka4y4U8zwFsH>)jqo(W z9*LZRy@Ln%dN66qQ%STa;-Jrf0Ya~Tq@8h*l?-}mZIVsna+}}se5)b+kpxM3=i^Gz z2$7OSo>Z*)in|h4sVt4@2l))Wu>J}F%oytC)T3w&wZW*T!b$VD20pH}84m}wGo>z$ z$T7eq7Xsq)7cpk<6LnMsGw;=(R#CkgtuxkJkcyGA*xSHy3E$H{e_owVPFTh!bE#1^ z$O<$t0y+zN6DkZcz{({1u&HfNB8DjB0b}GNN@hZDspVPd12+X0V@hf0_(Rb@derA) zsV6;@-r1Z9_rxdFYFtPp=sYhO%1R@H2m)@P6U#^U0>2e8D?FfLPXiT88PTH^Ws2;q7*@jN-sf?5)qIlL?BTaK}345kq**S zx|FC$54|Y@8A=j*FaaSU3EvIQ%$+%-_Z-ie`@3_0&-~#$&pev_?su=X*IMsdpY>Tr zuz?8Wtd=bE_cxt&Sl&(Y^|$P?MQWuiZVZmIIAZ{_O5(X{|8(lZ870BCgECP|3*Jiw zU@vD74ik4D~BR078)dnM;?+8hKFdMrlqq>j5C2g4ooc}t`D;`mBjg|F*dgCiMok}1|t~Y-A&$x8IksKR@#Bgxuu8*_u%4Zle%qL0H z*fIJ-=v02eRfs%iW>=V1>+uF5^MEZ1b_dw zQ2v{F)@u+_*_v<^adwpn3w9x{viqYnq3A`DzbJT`X`*yD9=^ob)Z(21&dq`H0S5uYHxUjYr%V8UbB*`? zTQu^uJmWfSXqqRsN(?M6ntmmLeQ$n=r zU3N|OhQ_VBeOfvpxf^Ie%84NWDM=d}>W@!o`W%0}EFC`FtiUQwfnp3Cyt1Gdc86Il zUJo|n`edAL;ySAG+|tW9yIV~fs(r~*dhfeS?ssL-KuTqlLi`y{(saub!klF87e+BA z1j)7|E_E+dAHSqDJV4NpNYG?G*N2yT7=IV@!!u$3s*)V3pv@Zus*9)j&K_>xK^v#_ zli5JNQVmRylv4a)n+0Q7k|8~-OzI{u@m7|2pNnnGf^@!Q*!Y3qEh5IObtbyHI}_Pe z*|+ZsR=SlXj0urwhDZYkcch9ysT*%^X61z^Xm#FlLp7Q2pRh0}?><`o7(Y7r@q?*r zHLSo!4RKIBzW&ik)0?|DpMv?FP!AckPSAB>VpWTy2(%5uz&H-=KmwHC{t5+&VL(yS z90s{g?}~3-P1{&-$o#NTZraAY^xTa*4&6~#wem9yG&^p2%hg8%kEXOafy~r|1*~fU z)JouNjqwf1v+>>SN?xRbAEoGCMi2X+1bW=Hi3z){F8nM{Xg)0V_RRA62Ob5`K$ndC zxc&0ahj9n1Ke{8-RR`!azFz~Rt7dKGn39ic?jU8T- z2cmdYPwsb_(!!-Z$+WrqJowqUjb|{aWRTn;-&|$74CH*TR}_HAnt)9|&6zr2r{tz$ z@AbC1tL0L8*C?G`sd^=I!O=J%vYEM~J6oJ%`-Tm)mK9?_^2bY?TH)RYSaJ&SVt`E| zL=<5M*KXJDQGA07DeyVhZ4eC0!%mmFe$bdo-=};u-Svfuy3$F5)TiTww~}XHFWS{c zj>d*gP_KY6BXNn=6$wvXYKF$3qoGm5x5$qN#bP0+yivGrt3op$7$%|!d&&KF-MEWc z#TJUUr5{$D_rpAo-iu|j%dS`EGLR5~5QHYU%o>bq2z6r$N~I%TN=yc>(Dpd370f*X zEC83d7ds9Z-zZx=X4xa9XttHfm8A}b@DXAp4UqrjGngJJM!rG%^pF%)Q63Ti`<9qO|_FF zK5bqJQ_=%3)J5wg#nIjuN3E~Zi)%S zZd+q$XeUM`slb3)_1ro_rXVrap2OjNdJOoF3HblaM7h zdgFqrBU*2C_l8%9JNVZAf8c=r)BYD68sIgUnqA2TB|01G zn^uC$XMLLoUeQ;Hd*B`#phKy#wNWpO~ zZyXj6gMmKJAE-Ls=PUP<=3C)c?HfCuP#AFx?arJM1pISvQr z5}pmfU9Tn&j1IW%y`U(m=Gge@)$ZnI^&>qTH?*_ZrD5#HFLYy^7FK3Yk_g&8Gg;jw z%qKWFTbQ#44yA@&I>ZOEde;W`n3eCo;Fl`cweN>43kwo9wrVKP1n$)wzbg$7DDxJT zQc@;miU1OJqP|;W()4v9?|jgqfqR|G0@uP4-(5)7O54Y)62I+oxBFpEJ#?3}7jux1 zL019DLP%9MCNl@xKjLZ-mb`ET^j2QZ%iFM7m*^+4_uy`2P60sDp_53XWVfbKIGg4B z6Bq66ZK^7|7KE6CRPhRKZb6xz`Dp;J7IyW;{w?>WR8`@;8(gGf&o<5s^@n>CtN>iI zU3OTn4~*8$8!Sl@gT4!58{^9P8v!vab5+~?s7I=* zacFUPrBN|yDN5?F8ivY9netIl>2k2Cu0nMNWkz(B-M3I1;gBrZkorKo_E6(_B=l~pha z6<03D#&%9YOTmj_JzS@n4h04jYj5RxUjv|#U&uiGujgAD%>U0d7e2c-&RUd-tly5l zY`up2ULW0BO{@LgEZcv^%>TW(@2~a~4xtGwvdO{WhO!=1 zpVurbZ@Tjw#Zn(!wNyzDf1TZYfqie5RjkQ}*lUsgXKI#sH8vQKXgjWJ{9f6eQ+FO{UZ(ReYUjP(cKa z%-VN(#~zyJH5aE)-4);bBEhz=<^4@xE>-IJHp};lN_? zL54T2kA{9sXy2>M@zy4OxcgE?u<@P~pImC9HXN(cH%z@JI@7Isdty6X#DxBizXv#-hPHf^~FmsJ?E#YmPh>uQflg?fwsSpQwK4=9{;u62xtDA{R(;oDNXgp|hTOoIeqK{8Nwu&jh6I#)6(D+wgId)QhQZ;ppWN@&=*7F~Cf@24aCyAaNPDp|{B)Gc4iDZAJ}M=^`qqW$jGp*?jy6WYXxt^yL z7tZWNn{=XUQDk2H8o)fsVH2mt zk3XoeIN^L#9L2jNnP{&gKDUCsj4(o6f^&jC7l!LO@CDpo^^s86iau?O(E9-QZ%V#K zrqfHS2E5fQUKQ6Y%vnD;of5`wN;mD=&&-cKzT9KOZPpdN$CTOS#ps?EFkSLJEh&K{ zNvZ`6Tfx{^Y$7T$X82}BKU#!FrYh)@`YJ>sU-AfH+d3x=9h__(^U8Me2k?&xWeF0j zbraQxc9Mhjb}Z7h(?_1XIMk3eZG{B%f#Jhiv>(aa!o2UNPQA*^C8Xd?4;zxNT9}z$ zg4yO;Jax+XkiPr;MD~6(k^7w9Sekp@LR_2W4Y-?X*6w%b)szZjBt`1}A*X-<6Xe

VnL~@NoFxlr}4XwBOf$TE5&(6r4XgNTeQwQ0lRCe{72rjo&R~ zg}{AhR7q;3S#i6E0^?x_!x`A1YfB`sr5)zH zj3(z#S;JR;QmMc$2qVcs=oMCUG1810H^Tavha?b{UUy zen@+IsN?f_oUl#n+{DVojgtFmbHC1xlC%cjh-TVO-L5vX$Z1ocO^<3fQRyPoLZH#o5WYcVJ2r_HCXd#FiwinC=i0i8?PUX*a_6 z*iieVisHkETR5+2ZAgjbI_AzjMVEE-ARN=##~>3-)CjXnv~iKyy66&o zkTu`Sezy~&H@Zcoa`dj#IbI04sHa^$huY(Ku>kimMhKU7ziwm!7W~XgfV0D$NWt)& zoJ2)qW1%t7FjT0C&UhX)VGpMhm?V4VCeb8$>Vt3En_FeO-}H`BqKfE@R(woie3 z=ts204BV7dfx#RUXB}*BJU$OHP(hE?yS8NQ_Ta0R=L!uw)nqu%I(frAH1cesXw@V* zpmA2h5@;ztLL0KepYhOsN%|ayqsxo%G;`~Ay)hM$c)Ryv9XkXT0NK}JaR02nzFt&T z_Y?7_V}v%B1Yuu>vj@XPZ7t1plU$RFx2r1SNpj;k1#`-rW?W7tPC1)7huM_HUbL+E zVZO0)ALlKM3{LN`L9A_%`9Tv0jWN0;gwg~`d#A+;Cj?sKi{mq2d3z&ch9=17`1D3sz_t1Ng^-|vGaA9r-GPkeyN2LY2x8u0 zyNU=wY9LD-d>0HWf5&j^Rm7!E%iqa|#8fq0JDvfT{;3FM-kl#kI>)XxE@=65iR;|S zUXh)pBT3#6`&;f|3_)yNoE^Z;4TDw02e~RunNOKdpip3 zksQM9N_*6eJVh(Qv6v9_dJCml9H%-9FMCx^*Bwl4+m0)WRb z555vEk?LKT;qk(+fS0{N@I5!;PND^}&EsZ23e?IX(ebsU;T9dh*04t8`Ib~tvc(k`(eL?02yI_x}86Z&Ebe{hjSPG@dCf1 zPfBLmQ$^Xn)<7i<`R|*`zngp(WcOIa#tT=LSDD^{dev}ngL;F@hF=mYAblxlzrXCa z0H6Hp`Ts!w_a7h3SCgbX;~Tek`=mTZ&!33;4DCF~SaW2{-&MT(UUd2&u{hbl_ekGF zMZXdw6yi#=C}8IUNgCKKuHC4CazJg4=;6e&zgW?w(1{!@g3rwLHUmE95<04IWX@E?;)qqAjbm6+Z0MLbjt{Zcr1Pn zMG>Lcdp(m00*o?a7hm-iED9Cdsx8cl+z5E!8hl}krtI7}|3)$1(w1EDrjfUbYFO>E zgOL}xTw=B_nKGBtd^;V`3aPX#WE=4)($7}eod-YBd&FV4iIhdQXp7M8^1?aH&e#6* zLY<{J@oXg?o?Z05*ORME@LDeqMnf(GhHT@6C10gQ_M*=KON*4V1j&8d=tV&{;wjD$ zF)aL!K8)bkd!v{w{Gy|-rt9wUrzbW?*^H`Q2{f?|wTkrAAfr1z#HjLy1WSx^Px*l4 z%;{k31A}JVuh zM%N~!H|^SV3~zrb@xzZQW5o8gc~ABvFA|YqkQL)S1SdEN8r{^$fQL>E8~4z%vW+kC zZhmb2viBs}wD?Ij|K$xfTq?URxVlk^2hI5Omar4I$rCg==S@~a7g6L0EcuazHn6dF zMP5Fd$z%cya^{&vVJ?C6_HS?og ziv>NfGv?aia;KZy-T5Ho5FT=X0J#i&&9-6V?=ImvD6CD~8Z{j5Go|wUggDTUwJ;L) z9#*itc5%lRDR*I<$2$R|tRheb;!2(%!F}(iD{^Gkoml1KtIgC_;9fx z$I3lhMKPTD(T&pc54PB*yM#5~V`Y7ONa4KdsnDQLSPP=Bpq=RDt@^d*3XBsT(IA^z zc=7qC;EuH@?*5KbnV8<77nL} z9e|7F%KZ=nvKgIL@?3jR#KkLw85oHDq8vswW3O5|`cAhgRv; zp{<}URg(#LF`P~ens7|Y+?EV!x_gzQFJ`>HQ`9ngs@YED{h1j&ZlqYLck&?W>yx%;dn2>N&^#m;f+|2gS8Li+tSl zQP5Ctetlr}iiCyeFqbZ!9d>C}dtdCFk&80Pkzu*ETO#ph)ok9Ra_kdp51e{? zyA$PI;cmi3Ew+5*W_vy*@9;`<%BbDxXu8MVUHs)lldBu0tFy9`**9%6Fr#l}w~5<#ke<5A zlQG z9s<4q1b$*T4IoX?6Nyl=ACzLV$}~ShW}}aPVqED#D$MZYAS33Hva^tU?1Hu!rB;kq zgj~K&31pB!G5y38BC_9yAC)CMP%e6Put42Dd;$j zrxo<_c+mF+GH$m3rY|gmOX>P5Q&lpg`ECfo$9GYTgkZ(fvlc5E0pO={)_|KEw1e&9 z5l0T|@ZipsLP=Go2b>{0!5|Cyc zjAmi86DCBEaoq%V@a_u5V%e-U75c20?Y6v>M^$g+ z(RCC#0YVN%tYO!~LAV8=sNO-D_9g}q8Su;f=gQ0aua!L*DL7J7Q(>!LTJh@KL($NU zW*oj{=WcaO;`}yi_?0QTUVO{La1JClkh)3n-L0>XNekFB6V%|Ej+z)s2*tgi^;+%+ zzVrJWsoqO_Ci?}|vteo1s}gm4Jr7%$jY<}qt7V`o*#xx{Gb8~|K`vN%LO&F(a!3&`dDi@>Q9un<3VOgpa`Gos{$u5_ujVY4*?QWcE zW~<7b5moLxk9(3EMNc7EfI3BD0j-kMPiKYp7dwe-f-=?_DwMWm!gN5k7ov_xTtI7( zDxun_^i!_3KSU4mED;Ym3_5RoLX=4YG7SM&F5VKi3D>d zyi4#pO_Q^ZVpZtzp^N>Rpvz+}#ZF~tT9`}6#XMzSZ2YN1Exe~y3k=U}#z{D#Oz8Qc zeP_@9Fy5C7-mipW=mQ#BTazq!#3=a=fV8eECw;;~HE8yh%7B>>{LZv`)Z%WjM?pKg zb5A^K_PiR(`c^L$wM(4#5gl+PFXW&KKzJPzppE$~g)a~(OFRTzJN|f3wmn1338U_? zIHaIau4($|@Eg+Li8FaG)5EBxBzer^>AJ^ToPLb()#Y>78Z-2CdNq6Z zf?YXLOl`M;AqcoKoJS8cS7QR<}tujdNRhOa9o$77o`u;Hukl!7#|| zLr&*KW4W_~5L%c(`wS97tg%%Y6knc5;=S6-Cccl2%&eW$`-6g%I)CWUNj%Qi3S#E+X4<>6rWu zx5^Zex*5Ms0&?^_Hsg=rLDM@;c074-zSjqBe|q|u<@GJt_q4*+%G_Uynp0336{Pn~ zG}};={1UO1+zCq7ENX6ycqb`}KC%Q!9V8rH`IqQ^&}&24Nl@w>bQu`yp$OUP02-3D zYqAo$tOQ9}_D>*O{1;m~^%!UObHEA*{CHQHe(+uXFEmSy;`celZ}vNV!zuoXW;wCS z6aW}|3TiL14%`Bq z1=Ei{?)XFU`&)_YKLy|R&6bJpC?7`rZhFA))97E#7XM;5ew(Q-_z%C{nehngik4X=JfF`Tx>I{ID^fl|AhAXg$9X}na@<(_7pPGR0 z(1|sh3V1KhzOtoQgDz=LLhvCw9+R9(Pj(?NE<)I*0q^6c0b0A;;+g|mX z5ypRe6cpsxm+#TVszkb&szTKNTo1{=y7HgFq4d2W#_xQ|&q%)iE1`JKKMlpd5@k$- zA?9(4l`skn2JIX(#Xp}ouZxw`xui_1<})&Ccxj=%K@m;1sXU}JjxhMv)< zyj6jGw~xnmH$L~>e4g#7+6NsDPivoqVqQm8wD-f$jA}eoRD)vbYReNV)n6%dS+K-3 zTkFSph1)F9TG@fbdy|bM(KMZXqiVxEVHBKB%0GPBd?ir9BBQunNW!l;jcy`LI~_%5 zQmGl^Wd~)t6f|~^O}U0kU=MMXDV-kvY*57Yg4uHx5q-PSs4YJSeiCa``Cv@BYy5c+ zoHurMRGFhZWvpI4D0t9L^~OcdfK(Z!&*g~^vPo81q|dlWbd>w_VUyRp3_i3seJePVoD|VX&395 z0~(Hpubl}Smz6s1|AZo;uBpgIc#~dkM>TOYTG3vp2{hLv20gKgB|r2&x4q6(o3X`d zS)m=hc*GvN5R6*9a@2U0sfW?g;>${XN?}9#R)Grl<*n7A?|O2TN&nP5VU_91%DH(^ z+q}wij5zOsLQb9SUuBv+44KMQ1by}3w^i)u-ffK~j9p|RU7cfp2hxs zGCv>p-zT%Kh=1$M;+4N|)8BUHuV{gP@go30{u@WKYt4~Ba)AFy_EFwT;V}`0Y3rt2 z_LmX)%;%d=`wK$f9pl|YkYC{6eM#G&J1UMcYxE|>&oTpjldhi}W951vEbRQ2|3 zf9lN5fL?bTK!w|&i@Ijq&WJk*FAMZ(?UCibxWOdj60Cx+U&8a#rng&bhsPp90|i{# zX>%dBkkUNt9N(heKbJG%4lP4a?-PUvrV=j}%*Rf9fj*r_&zf2FlA`7CX|UD4|c zV*8g*ny)1yUcrf%Y00KMV)oD|lfpPRq@+grWc08HsXo_wPq%eXN{LYR@Oy0jOwp(0 z5&gbHN0<)Y*?VmMp+jA~QEOeUDEs&Ufv~}8wxw-7UN7r%uMVe{%&D4-+-Nr_hox`_ zDHq=CYi%2*8kthU%2Bo3`^I+$Cmg~b;z!}3Ni!QvolXs%j4+XOp ze0a|~50FzYw?h<>60@yVWUi8YV2!|2Gp4Xo(Hgy9C*C|k{x=(8-;txT_ z%^-_9!VJ^a<-(qRT7>^6Wd3bX#JW#wAr@kg??F$;Rp&2%8#11V45ZtmCoItt$f=bx z2wh|^7cxc?A+*R#;pIVMsRIDY0FCo0ne=b9gpdVza2V`kx+X0w1T1Px-^q&ioWvhe ziX8z_fM@dH+7nwS0;~Yp22f{~NXZq7pALnMm42mx;v_qY2ADLyQ5tmGYz=QAu`*5O z`Fv{aiP7ZsCkpU@ADR%U>|z)cwWb{!$+M{T<%#MH^#<$`qcnsz&W49NAg+;(SZPfS z6xW{@9RrJkh(%=!1@#dl;Uf+To>xCH%-VmmALzmn|Cx%4GOqn&ivK z{`r|aP3$X-Ri?g9Am<0Pmf1p#lKloSN>2_zT5P^7ye4QQ5VYh9+)pP{4mp(!X#vo! zU-x9s@Y_a)pkqN09R}2;SMiHf#7Npab&Qf)hRZgxSj`$uw$(Pe-p}HMggdVtA9&RV zYt_-*nMI27x^|hZX+p^O6A&gMr|ke@K^bBFxj&Of`W|TCPW+-_VkA`vSQ)h@m$9ta z8&oSGmr<`ZkzNrSPlN=n;U9me(>%DUb?u7?{4-RV@_UtDm$uWIw2@Aynid+?mDUyV z>t-B~9j_U-OJu+?Aj(6{3L&jYC4-?+yNvEDN4A}1STFVCAv2cXCV*347pEFYd+iOe z3#XuQkVT(lwBWjSttmnnxI$R3k}x%nl?Kl{&Q_c|ARKKi5P%~fQZ{?f4%EKuWbKoH-%Jo9t?wVErN03 z%gtN2J?JJmBpbD#mD0$AsiD#u=ug(~^O_9R85(P^Sjq5XCJQhMi~4cvO0|BSA>ran z^i`((Gyt91LW%ik5$oNz2{6VwGuE{V-NX*k0@S{BaRet{ienyUO%p{aUY^C!QvtO5g~Q9d8ieUiN;zO9R8>*Ys=sR;!Uz!N(nXu^34> zf|gjZ?`DmEjl^q%d%eCi@47i{Uz5$J?q99qnRO!-vwp41zM<1~e}+!eey`K(0xw$= zIHc_7%MOee3K-!pdnx^v!&ozzf0Dzf{jG)0SmH@W#lxgT7av$Ter^cK-QgTnFDdq-xOjG7=>v8(P)U2Tg@qvXix~ zqlI_ZEmWZe9e_%~VD|K+;TKP0xGt6$0U|Alw^l~nv+c(-54mj8u!`;~O| WUwF4)NjLw6cl(uW?q7JfAO0VK!o?l{ diff --git a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py index e7805fc..74cec11 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py @@ -1,156 +1,74 @@ from Screens.Screen import Screen -from Plugins.Plugin import PluginDescriptor -from Components.SystemInfo import SystemInfo from Components.ConfigList import ConfigListScreen -from Components.config import getConfigListEntry, config, ConfigBoolean, ConfigNothing, ConfigSlider +from Components.ActionMap import NumberActionMap +from Components.config import config, ConfigNothing, ConfigBoolean, getConfigListEntry from Components.Sources.StaticText import StaticText +from Components.SystemInfo import SystemInfo +from Plugins.Plugin import PluginDescriptor from VideoHardware import video_hw config.misc.videowizardenabled = ConfigBoolean(default = True) -class VideoSetup(Screen, ConfigListScreen): +class avSetupScreen(ConfigListScreen, Screen): + avSetupItems = [ + {"idx":1, "level":0, "text":"Video Output", "item":config.av.videoport}, + {"idx":2, "level":0, "text":"Mode", "item":config.av.videomode[config.av.videoport.value]}, + {"idx":3, "level":0, "text":"Refresh Rate", "item":config.av.videorate[config.av.videomode[config.av.videoport.value].value]}, + {"idx":4, "level":0, "text":"Aspect Ratio", "item":config.av.aspect}, + {"idx":5, "level":0, "text":"Display 4:3 content as", "item":config.av.policy_43}, + {"idx":6, "level":0, "text":"Display > 16:9 content as", "item":config.av.policy_169}, + {"idx":7, "level":0, "text":"Color Format", "item":config.av.colorformat}, + {"idx":8, "level":1, "text":"WSS on 4:3", "item":config.av.wss}, + {"idx":9, "level":1, "text":"Auto scart switching", "requires":"ScartSwitch", "item":config.av.vcrswitch}, + {"idx":0, "level":1, "text":"Dolby Digital default", "item":config.av.defaultac3}, + {"idx":0, "level":1, "text":"Dolby Digital downmix", "requires":"CanDownmixAC3", "item":config.av.downmix_ac3}, + {"idx":0, "level":1, "text":"General Dolby Digital delay(ms)", "item":config.av.generalAC3delay}, + {"idx":0, "level":1, "text":"General PCM delay(ms)", "item":config.av.generalPCMdelay}, + {"idx":0, "level":0, "text":"OSD visibility", "requires":"CanChangeOsdAlpha", "item":config.av.osd_alpha}, + {"idx":0, "level":0, "text":"Scaler sharpness", "item":config.av.scaler_sharpness}, + ] - def __init__(self, session, hw): + def __init__(self, session): Screen.__init__(self, session) - # for the skin: first try VideoSetup, then Setup, this allows individual skinning - self.skinName = ["VideoSetup", "Setup" ] + # for the skin: first try a setup_avsetup, then Setup + self.skinName = ["setup_avsetup", "Setup"] self.setup_title = _("A/V Settings") - self.hw = hw + + self.video_cfg = video_hw + self.audio_cfg = [ ] + self.onChangedEntry = [ ] - # handle hotplug by re-creating setup + # handle hotplug by re-createing setup self.onShow.append(self.startHotplug) self.onHide.append(self.stopHotplug) self.list = [ ] - ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry) - from Components.ActionMap import ActionMap - self["actions"] = ActionMap(["SetupActions"], + self["key_red"] = StaticText( _("Cancel")) + self["key_green"] = StaticText( _("OK")) + + self["action"] = NumberActionMap(["SetupActions"], { "cancel": self.keyCancel, - "save": self.apply, + "save": self.keySave, }, -2) - self["key_red"] = StaticText(_("Cancel")) - self["key_green"] = StaticText(_("OK")) + ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry) + + self.createScreen() - self.createSetup() - self.grabLastGoodMode() self.onLayoutFinish.append(self.layoutFinished) - + def layoutFinished(self): self.setTitle(self.setup_title) - - def startHotplug(self): - self.hw.on_hotplug.append(self.createSetup) - - def stopHotplug(self): - self.hw.on_hotplug.remove(self.createSetup) - - def createSetup(self): - level = config.usage.setup_level.index - - self.list = [ - getConfigListEntry(_("Video Output"), config.av.videoport) - ] - - # if we have modes for this port: - if config.av.videoport.value in config.av.videomode: - # add mode- and rate-selection: - self.list.append(getConfigListEntry(_("Mode"), config.av.videomode[config.av.videoport.value])) - if config.av.videomode[config.av.videoport.value].value == 'PC': - self.list.append(getConfigListEntry(_("Resolution"), config.av.videorate[config.av.videomode[config.av.videoport.value].value])) - else: - self.list.append(getConfigListEntry(_("Refresh Rate"), config.av.videorate[config.av.videomode[config.av.videoport.value].value])) - - port = config.av.videoport.value - if port not in config.av.videomode: - mode = None - else: - mode = config.av.videomode[port].value - - # some modes (720p, 1080i) are always widescreen. Don't let the user select something here, "auto" is not what he wants. - force_wide = self.hw.isWidescreenMode(port, mode) - - if not force_wide: - self.list.append(getConfigListEntry(_("Aspect Ratio"), config.av.aspect)) - - if force_wide or config.av.aspect.value in ("16_9", "16_10"): - self.list.extend(( - getConfigListEntry(_("Display 4:3 content as"), config.av.policy_43), - getConfigListEntry(_("Display >16:9 content as"), config.av.policy_169) - )) - elif config.av.aspect.value == "4_3": - self.list.append(getConfigListEntry(_("Display 16:9 content as"), config.av.policy_169)) - -# if config.av.videoport.value == "DVI": -# self.list.append(getConfigListEntry(_("Allow Unsupported Modes"), config.av.edid_override)) - if config.av.videoport.value == "Scart": - self.list.append(getConfigListEntry(_("Color Format"), config.av.colorformat)) - if level >= 1: - self.list.append(getConfigListEntry(_("WSS on 4:3"), config.av.wss)) - if SystemInfo["ScartSwitch"]: - self.list.append(getConfigListEntry(_("Auto scart switching"), config.av.vcrswitch)) - - if level >= 1: - self.list.append(getConfigListEntry(_("Dolby Digital default"), config.av.defaultac3)) - if SystemInfo["CanDownmixAC3"]: - self.list.append(getConfigListEntry(_("Dolby Digital downmix"), config.av.downmix_ac3)) - self.list.extend(( - getConfigListEntry(_("General Dolby Digital Delay"), config.av.generalAC3delay), - getConfigListEntry(_("General PCM Delay"), config.av.generalPCMdelay) - )) - - if SystemInfo["CanChangeOsdAlpha"]: - self.list.append(getConfigListEntry(_("OSD visibility"), config.av.osd_alpha)) - - if not isinstance(config.av.scaler_sharpness, ConfigNothing): - self.list.append(getConfigListEntry(_("Scaler sharpness"), config.av.scaler_sharpness)) - - self["config"].list = self.list - self["config"].l.setList(self.list) - - def keyLeft(self): - ConfigListScreen.keyLeft(self) - self.createSetup() - - def keyRight(self): - ConfigListScreen.keyRight(self) - self.createSetup() - - def confirm(self, confirmed): - if not confirmed: - config.av.videoport.value = self.last_good[0] - config.av.videomode[self.last_good[0]].value = self.last_good[1] - config.av.videorate[self.last_good[1]].value = self.last_good[2] - self.hw.setMode(*self.last_good) - else: - self.keySave() - - def grabLastGoodMode(self): - port = config.av.videoport.value - mode = config.av.videomode[port].value - rate = config.av.videorate[mode].value - self.last_good = (port, mode, rate) - - def apply(self): - port = config.av.videoport.value - mode = config.av.videomode[port].value - rate = config.av.videorate[mode].value - if (port, mode, rate) != self.last_good: - self.hw.setMode(port, mode, rate) - from Screens.MessageBox import MessageBox - self.session.openWithCallback(self.confirm, MessageBox, _("Is this videomode ok?"), MessageBox.TYPE_YESNO, timeout = 20, default = False) - else: - self.keySave() - + # for summary: def changedEntry(self): for x in self.onChangedEntry: x() - + def getCurrentEntry(self): return self["config"].getCurrent()[0] @@ -160,75 +78,116 @@ class VideoSetup(Screen, ConfigListScreen): def createSummary(self): from Screens.Setup import SetupSummary return SetupSummary + + def createScreen(self): + self.list = [ ] + self.audio_cfg = [ ] + + for x in self.avSetupItems: + item_level = int(x.get("level", 0)) + if item_level > config.usage.setup_level.index: + continue + + requires = x.get("requires") + if requires and not SystemInfo.get(requires, False): + continue + + item_text = _(x.get("text", "??").encode("UTF-8")) + + item = x.get("item", None) + if item is None: + continue + + idx = x.get("idx", 0) + if idx > 0: + if idx == 1: # Video Output + current_port = item.value + elif idx == 2: # Mode + item = config.av.videomode[current_port] + current_mode = item.value + # some modes (720p, 1080i, 1080p) are always widescreen. + force_wide = self.video_cfg.isWidescreenMode(current_mode) + elif idx == 3: # Refresh Rate + item = config.av.videorate[current_mode] + current_rate = item.value + if current_mode == "PC": + item_text = _("Resolution") + elif idx == 4: # Aspect Ratio + current_aspect = item.value + if force_wide: + continue + elif idx == 5: # Display 4:3 content as + if current_aspect == "auto" and not force_wide: + continue + elif current_aspect == "4_3": + continue + elif idx == 6: # Display 16:9 > content as + if current_aspect == "auto" and not force_wide: + continue + # Color Format, WSS on 4:3, Auto scart switching + elif (idx == 7 or idx == 8 or idx == 9) and not current_port == "Scart": + continue + if idx == 0 and item_level == 1: # audio + self.audio_cfg.append(item_text) + + # add to configlist + if not isinstance(item, ConfigNothing): + self.list.append(getConfigListEntry(item_text, item)) + + self["config"].setList(self.list) + + def keyLeft(self): + ConfigListScreen.keyLeft(self) + self.createScreen() + # show current value on VFD + if self.getCurrentEntry() not in self.audio_cfg: + self.summaries[0]["SetupTitle"].text = self.getCurrentValue() + + def keyRight(self): + ConfigListScreen.keyRight(self) + self.createScreen() + # show current value on VFD + if self.getCurrentEntry() not in self.audio_cfg: + self.summaries[0]["SetupTitle"].text = self.getCurrentValue() -class VideomodeHotplug: - def __init__(self, hw): - self.hw = hw - - def start(self): - self.hw.on_hotplug.append(self.hotplug) - - def stop(self): - self.hw.on_hotplug.remove(self.hotplug) - - def hotplug(self, what): - print "hotplug detected on port '%s'" % (what) - port = config.av.videoport.value - mode = config.av.videomode[port].value - rate = config.av.videorate[mode].value - - if not self.hw.isModeAvailable(port, mode, rate): - print "mode %s/%s/%s went away!" % (port, mode, rate) - modelist = self.hw.getModeList(port) - if not len(modelist): - print "sorry, no other mode is available (unplug?). Doing nothing." - return - mode = modelist[0][0] - rate = modelist[0][1] - print "setting %s/%s/%s" % (port, mode, rate) - self.hw.setMode(port, mode, rate) - -hotplug = None - -def startHotplug(): - global hotplug, video_hw - hotplug = VideomodeHotplug(video_hw) - hotplug.start() - -def stopHotplug(): - global hotplug - hotplug.stop() - + def startHotplug(self): + self.video_cfg.on_hotplug.append(self.createScreen) -def autostart(reason, session = None, **kwargs): - if session is not None: - global my_global_session - my_global_session = session - return + def stopHotplug(self): + self.video_cfg.on_hotplug.remove(self.createScreen) - if reason == 0: - startHotplug() - elif reason == 1: - stopHotplug() -def videoSetupMain(session, **kwargs): - session.open(VideoSetup, video_hw) +def avSetupMain(session, **kwargs): + session.open(avSetupScreen) -def startSetup(menuid): - if menuid != "system": - return [ ] +def startAVsetup(menuid): + if menuid != "system": + return [] - return [(_("A/V Settings"), videoSetupMain, "av_setup", 40)] + return [( _("A/V Settings"), avSetupMain, "av_setup", 40)] -def VideoWizard(*args, **kwargs): +def startVideoWizard(*args, **kwargs): from VideoWizard import VideoWizard return VideoWizard(*args, **kwargs) def Plugins(**kwargs): - list = [ -# PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart), - PluginDescriptor(name=_("Video Setup"), description=_("Advanced Video Setup"), where = PluginDescriptor.WHERE_MENU, needsRestart = False, fnc=startSetup) + plugin_list = [ + PluginDescriptor( + name = "Videomode-K", + description = "Videomode-K based videomode", + where = PluginDescriptor.WHERE_MENU, + needsRestart = False, + fnc = startAVsetup) ] + if config.misc.videowizardenabled.value: - list.append(PluginDescriptor(name=_("Video Wizard"), where = PluginDescriptor.WHERE_WIZARD, needsRestart = False, fnc=(0, VideoWizard))) - return list + plugin_list.append( + PluginDescriptor( + name = "Video Wizard", + where = PluginDescriptor.WHERE_WIZARD, + fnc=(0, startVideoWizard) + ) + ) + + return plugin_list + diff --git a/lib/python/Plugins/SystemPlugins/Videomode/videowizard.xml b/lib/python/Plugins/SystemPlugins/Videomode/videowizard.xml index 5dea661..84b1e62 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/videowizard.xml +++ b/lib/python/Plugins/SystemPlugins/Videomode/videowizard.xml @@ -1,107 +1,47 @@ - - - - + + + + -self["portpic"].show() self.clearSelectedKeys() self.selectKey("OK") - + - + self.clearSelectedKeys() self.selectKey("UP") self.selectKey("DOWN") -self["portpic"].hide() -self.condition = (self.port != "DVI" or self.mode == "PC") - - - - - -self.clearSelectedKeys() -self.selectKey("UP") -self.selectKey("DOWN") - - - -self.hw.saveMode(self.port, self.mode, self.rate) +self.video_cfg.saveVideomode(self.port, self.mode, self.rate) from Components.config import configfile -configfile.save() +configfile.save() - - - - + + + - + -- 2.7.4