From 7ce928e114b798a45a94f933c8eb69b96009f989 Mon Sep 17 00:00:00 2001 From: pin Date: Tue, 27 Jul 2010 12:27:07 +0000 Subject: [PATCH 01/16] =?utf8?q?Am=C3=A9lioration=20du=20layout=20de=20la?= =?utf8?q?=20barre=20de=20boutons.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@294 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/logapp.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 176d179..acc6529 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -24,6 +24,9 @@ class Application(Frame) : self.logDir = '' self.logFiles = [] self.resultsFrame = None + + # debug + self.chooseDirDialog(dir='/Users/pinbe/minwii_logs') def configureStretching(self) : top=self.winfo_toplevel() @@ -37,33 +40,30 @@ class Application(Frame) : def createWidgets(self) : # zone d'affichage des données' self.dataFrame = df = Frame(self) - #df.grid(sticky=NW) self.identFrame = Identification(df) self.identFrame.grid(sticky=NW) - self.nav = Navbar(df, incCallback=self.loadLogFile, decCallback=self.loadLogFile) -# self.nav.grid() - # barre de boutons self.btnFrame = bf = Frame(self) bf.grid(row=1, column=0, sticky=W+S+E) bf.rowconfigure(0, weight=1) - bf.columnconfigure(0, weight=1) - bf.columnconfigure(1, weight=1) - + for i in range(3) : + bf.columnconfigure(i, weight=1) - self.chooseLogDir = Button(bf, text="Parcourir…", command=self.openFileDialog) + self.chooseLogDir = Button(bf, text="Parcourir…", command=self.chooseDirDialog) self.chooseLogDir.grid(row=0, column=0, sticky=W) self.nav = Navbar(bf, incCallback=self.loadLogFile, decCallback=self.loadLogFile) - #self.nav.grid(row=0, column=1) self.quitButton = Button(bf, text='Terminer', command=self.quit) self.quitButton.grid(row=0, column=2, sticky=E) - def openFileDialog(self) : - self.logDir = tkFileDialog.askdirectory() + def chooseDirDialog(self, dir=None) : + if dir is None : + self.logDir = tkFileDialog.askdirectory() + else : + self.logDir = dir if self.logDir : self.logFiles = glob(pjoin(self.logDir, '*.log')) self._cleanupJunkFiles() -- 2.20.1 From 2acf10a88b2307eeb78f74b612586dd079c1b7bf Mon Sep 17 00:00:00 2001 From: pin Date: Tue, 27 Jul 2010 12:50:00 +0000 Subject: [PATCH 02/16] =?utf8?q?Affichage,=20d=C3=A9j=C3=A0=20plus=20?= =?utf8?q?=C2=AB=C2=A0user-friendly=C2=A0=C2=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@295 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 33 +++++++++++++++++++-------------- src/minwii/logapp.py | 2 +- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index 73581cb..a5f8be7 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -62,32 +62,34 @@ class LogFileAnalyser(LogFileReader) : } def analyse(self) : - results = {} + results = [] try : self.mode = mode = self.getMode() - results['playingMode'] = mode + results.append(('Mode de jeu', mode)) for name in self.POSSIBLE_ANALYSES[mode] : meth = getattr(self, name) - results[name] = meth() + results.append((meth.__doc__, meth())) except : pass return results def playingDuration(self) : - """ retourne la durée écoulée entre le premier et de dernier message - de type événement : correspond à la durée d'interprétation. - """ + 'Temps de jeu' + #retourne la durée écoulée entre le premier et de dernier message + #de type événement : correspond à la durée d'interprétation. + last = self.getLastEventTicks() first = self.getFirstEventTicks() return last - first def songDuration(self) : - """ retourne la durée de référence de la chanson - en prenant en compte le tempo présent dans la transcription - et en effectuant toutes les répétitions des couplets / refrains. - """ + 'Durée de la chanson' + #retourne la durée de référence de la chanson + #en prenant en compte le tempo présent dans la transcription + #et en effectuant toutes les répétitions des couplets / refrains. + songFile = self.getSongFile() song = musicXml2Song(songFile) duration = 0 @@ -97,6 +99,7 @@ class LogFileAnalyser(LogFileReader) : @statsresults def noteEndNoteOnLatency(self) : + 'Réactivité' eIter = self.getEventsIterator() latencies = [] lastnoteEndT = 0 @@ -122,10 +125,11 @@ class LogFileAnalyser(LogFileReader) : return cpt def realisationRate(self) : - """ taux de réalisation en nombre de note - peut être supérieur à 100 % car la chanson - boucle à l'infini. - """ + 'Taux de réalisation' + #taux de réalisation en nombre de note + #peut être supérieur à 100 % car la chanson + #boucle à l'infini. + songFile = self.getSongFile() song = musicXml2Song(songFile) songNoteCpt = 0 @@ -135,6 +139,7 @@ class LogFileAnalyser(LogFileReader) : return int(round(self.noteOnCount() / float(songNoteCpt) * 100, 0)) def missCount(self) : + "Nombre d'erreurs" eIter = self.getEventsIterator() miss = 0 if self.mode in ('EASY', 'NORMAL') : diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index acc6529..9306809 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -192,7 +192,7 @@ class ResultsFrame(Frame) : lfa = LogFileAnalyser(self.logFilePath) results = lfa.analyse() if results : - for i, kv in enumerate(results.items()) : + for i, kv in enumerate(results) : k, v = kv kl = Label(self, text='%s :' % k) kl.grid(row=i, column=0, sticky=E) -- 2.20.1 From e26832c9e7be68fc16059f7a2d3c2478afbcfa91 Mon Sep 17 00:00:00 2001 From: pin Date: Tue, 27 Jul 2010 13:49:43 +0000 Subject: [PATCH 03/16] =?utf8?q?Affichage=20des=20dur=C3=A9es=20bien=20com?= =?utf8?q?me=20il=20faut.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@296 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index a5f8be7..d7e136f 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -10,6 +10,7 @@ from minwii.logfilereader import LogFileReader from pprint import pprint from minwii.musicxml import musicXml2Song from statlib import stats +from datetime import timedelta DEFAULT_STATS = ('geometricmean', 'harmonicmean', @@ -71,10 +72,15 @@ class LogFileAnalyser(LogFileReader) : meth = getattr(self, name) results.append((meth.__doc__, meth())) except : - pass + raise return results + def _toTimeDelta(self, milliseconds) : + duration = milliseconds / 1000. + duration = int(round(duration, 0)) + return str(timedelta(seconds=duration)) + def playingDuration(self) : 'Temps de jeu' #retourne la durée écoulée entre le premier et de dernier message @@ -82,10 +88,11 @@ class LogFileAnalyser(LogFileReader) : last = self.getLastEventTicks() first = self.getFirstEventTicks() - return last - first + return self._toTimeDelta(last - first) + def songDuration(self) : - 'Durée de la chanson' + 'Durée de référence de la chanson' #retourne la durée de référence de la chanson #en prenant en compte le tempo présent dans la transcription #et en effectuant toutes les répétitions des couplets / refrains. @@ -95,7 +102,8 @@ class LogFileAnalyser(LogFileReader) : duration = 0 for note, verseIndex in song.iterNotes() : duration = duration + note.duration - return duration * song.quarterNoteDuration + duration = duration * song.quarterNoteDuration # en milisecondes + return self._toTimeDelta(duration) @statsresults def noteEndNoteOnLatency(self) : @@ -136,7 +144,7 @@ class LogFileAnalyser(LogFileReader) : for note, verseIndex in song.iterNotes() : songNoteCpt = songNoteCpt + 1 - return int(round(self.noteOnCount() / float(songNoteCpt) * 100, 0)) + return round(self.noteOnCount() / float(songNoteCpt) * 100, 1) def missCount(self) : "Nombre d'erreurs" -- 2.20.1 From 73301d45fc7fbc65d3dbb551be8ffddf97588cd2 Mon Sep 17 00:00:00 2001 From: pin Date: Tue, 27 Jul 2010 16:27:21 +0000 Subject: [PATCH 04/16] =?utf8?q?Affichage=20des=20statistiques=20comme=20i?= =?utf8?q?l=20faut.=20Suppression=20automatique=20des=20fichiers=20n'ayant?= =?utf8?q?=20pas=20d'=C3=A9v=C3=A9nements.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@297 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 28 +++++++++++++++------------- src/minwii/logapp.py | 9 +++++++-- src/minwii/logfilereader.py | 2 ++ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index d7e136f..03d0837 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -12,16 +12,16 @@ from minwii.musicxml import musicXml2Song from statlib import stats from datetime import timedelta -DEFAULT_STATS = ('geometricmean', - 'harmonicmean', - 'mean', - 'median', - 'medianscore', +DEFAULT_STATS = (#'geometricmean', + #'harmonicmean', + #'mean', + ('median', 'Médiane'), + #'medianscore', #'mode', - 'moment', - 'variation', - 'skew', - 'kurtosis', + #'moment', + ('variation', 'Variation'), + #'skew', + ('kurtosis', 'Kurtosis'), #'itemfreq', #'histogram', #'cumfreq', @@ -31,10 +31,12 @@ DEFAULT_STATS = ('geometricmean', def statsresults(m) : def computeList(self): l = m(self) - ret = {} - for name in DEFAULT_STATS : - ret[name] = getattr(stats, name)(l) - return ret + results = [] + for name, label in DEFAULT_STATS : + results.append('%s : %s' % (label, getattr(stats, name)(l))) + return '\n'.join(results) + computeList.__name__ = m.__name__ + computeList.__doc__ = m.__doc__ return computeList class LogFileAnalyser(LogFileReader) : diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 9306809..b10ca16 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -61,13 +61,14 @@ class Application(Frame) : def chooseDirDialog(self, dir=None) : if dir is None : - self.logDir = tkFileDialog.askdirectory() + self.logDir = tkFileDialog.askdirectory(title='Sélectionnez un dossier de fichiers de logs') else : self.logDir = dir if self.logDir : self.logFiles = glob(pjoin(self.logDir, '*.log')) self._cleanupJunkFiles() self.logFiles.sort() + self.logFiles.reverse() self.dataFrame.grid(row=0, column=0, sticky=NW) self.nav.setSize(len(self.logFiles)) self.nav.grid(row=0, column=1) @@ -80,8 +81,12 @@ class Application(Frame) : if not getsize(f) : os.remove(f) continue - # TODO : vérifier qu'il existe des événements else : + lfa = LogFileAnalyser(f) + if lfa.getLastEventTicks() is None : + os.remove(f) + continue + files.append(f) self.logFiles = files diff --git a/src/minwii/logfilereader.py b/src/minwii/logfilereader.py index b7f84a1..828b085 100755 --- a/src/minwii/logfilereader.py +++ b/src/minwii/logfilereader.py @@ -114,6 +114,8 @@ class LogFileReader(object) : for l in self.getBackwardLineIterator() : if l.startswith('EVT ') : break + else : + return None lastTicks = int(l.split(None, 2)[1]) return lastTicks -- 2.20.1 From e3d9c56514820753014ec6443abd553c0eb34dab Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 28 Jul 2010 09:07:28 +0000 Subject: [PATCH 05/16] =?utf8?q?Ajout=20ic=C3=B4ne=20pour=20l'analyseur=20?= =?utf8?q?des=20logs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@298 fe552daf-6dbe-4428-90eb-1537e0879342 --- graphics/icon.psd | Bin 238761 -> 369924 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/icon.psd b/graphics/icon.psd index 8264ec23b9f0643e5a1eb0a93d34b93193c3fd7f..e8b28cb610f3d93b2499d7d17ad5aee29c08d2cf 100644 GIT binary patch literal 369924 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 Zdvp_W%gc-MH{u7lmGw_G>Ph;^{|3OgK|=rl delta 31562 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

Dl*h88IqiW8QgF7QNR|P>Aj-Y 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 f;t7?V0ZhwJ(9hMFmV Date: Wed, 28 Jul 2010 09:08:02 +0000 Subject: [PATCH 06/16] =?utf8?q?Affichage=20en=20fran=C3=A7ais=20du=20mode?= =?utf8?q?=20de=20jeu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@299 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index 03d0837..1a1f676 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -9,9 +9,12 @@ $URL$ from minwii.logfilereader import LogFileReader from pprint import pprint from minwii.musicxml import musicXml2Song +from minwii.globals import PLAYING_MODES from statlib import stats from datetime import timedelta +PLAYING_MODES = dict(PLAYING_MODES) + DEFAULT_STATS = (#'geometricmean', #'harmonicmean', #'mean', @@ -69,7 +72,7 @@ class LogFileAnalyser(LogFileReader) : try : self.mode = mode = self.getMode() - results.append(('Mode de jeu', mode)) + results.append(('Mode de jeu', PLAYING_MODES.get(mode, mode))) for name in self.POSSIBLE_ANALYSES[mode] : meth = getattr(self, name) results.append((meth.__doc__, meth())) -- 2.20.1 From 9dc58a99930c4951aa561d75e572416221c3aa33 Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 28 Jul 2010 09:23:22 +0000 Subject: [PATCH 07/16] =?utf8?q?Ajout=20de=20l'ic=C3=B4ne=20de=20l'analyse?= =?utf8?q?ur=20de=20logs=20au=20format=20windows.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@300 fe552daf-6dbe-4428-90eb-1537e0879342 --- logapp.ico | Bin 0 -> 270398 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logapp.ico diff --git a/logapp.ico b/logapp.ico new file mode 100644 index 0000000000000000000000000000000000000000..56060a84d4213e330966855220a98333413a97fd GIT binary patch literal 270398 zcmeF4ceqqlmiGO==lf@DLwB1MMZf@p2#91!lC$I>h(rmJqvV`(k{m?^#Q-Aa96P7U zGd-cFd%7p*Jo{U}b!ye!b?&Kr>VjJMZ0p{tx>cu6op*(Iy=(2uF8e?7AOHT(Ww&2e z`}Y5L+4b^s?ck2fF8ja1{rq~FJa)}DF4LvI%l~!^Z|lmduye3o&fT_0+PJO5TDy%y z9&~F4v~X_{yWdUk+|W(w*uYKhaG#s>P<>q!id{hGUV16#UH@_t)~wQ<|!{W*^EcUV3L-jDai{*>`wwcmRgXXW$F zHGuCm-@kf53%B&)W^R7Z2NbJdcCug>3_sq!z8ln{uIqY#9rsX!+OAvUI{JGU@8RDy zW{?=*33;7q5=+dInBqx!ecp%n+c@|^x20?Y%CS#5{;Tq9!1w+5;+6fIYkWSZdl2`7 z*`5#F<7(BY<$mkh>XGXk*Hw4*@4C|sZCNjEPLRw4B#$7U;Pn^wYT}mnZSK~V^MES< z-pjtf?EBUCCvty{{RM~16M6r%uJ^kxP406y-(K5YeqD`7+(+4iI<@X_W7^&uX$Q;( z5L3+PQjrH>bIN%@`Fbqdq^iFL%>To~tr7e$lbC#T$EL1&ohI(8+Z(wns?~Mhxbe=M z@sCZoy?QM-zFlP-V0i%f1U6unZ~=ZEuwihkavo5Qfy=Q_6w_JARh?x0Q_z?fO>-F0m20=&^(}7IS;79@4f76tKQdM zis#(Ne~%8G-SrK7xNGn2?5>Hy26Sv#JFN|%o?v+Zbq4AIo+O@8Yhh`;hzg-499}&{X1ph7t$V%_|PL;`-aua)Oft|K&WO zjQ6iHw!RFX4g62+*V9#NGuqwKYJ|JF`4D$wlm708`+K|V8gzHp*6ZlLUAv9@<{i!5 z)d@ZzpIqSPYBjZP7|sRCc|aNaUj}@9)sJ!WBkf(CE)(5t4^42lwj1lJwSLUq(()0B z1qQntALv&R3ur#j(p_ESes^WHdU?eGP42m?oClP1`!cV030?!k2MlvHyU%vFcbV?0 zcX}ei4kU5{iv=VfxVq*8dD(!=MIZ2R(|e+AK!!Y^tP3i~2w!#odoe%Xmf`K)z5N%s zJ9;m4wR+B1J5ZzR40n5{Dekro6O-}4&BOyu2L?HT@B*3-NNwQCTkp*|4!HK_8j-qy zs63#o3o7IOV&dZK^4{}D^mq3^vfAA@WTm@jz%qB|!;4+5UJG2!9&=rdZnGpNnC7Z? zoaAn6KTh+4n_CQ(oS?6}?!IpB+jZJ%eGnUvt3Du8P0+6gl=}n9`2V_K@M3<>siQ`_ zHsdzAR--q#<|Eg+#>3aR218f6x?x)&F+uf?lO-M)rySu;O$WH^B_Ft^PCKm)TzPAK zu>p7Gqz^z#9OeR57m&yU{Qdy6NY)=fe?qxOsB9N5CSJa3?>*)5CtQzdJ6+c)J6xwp z+gyhUTV31no7EmPeRQpBG;EctH*mSTqt7DA59T>?gX)qORBJs-YlUb9&$7rn(tpGX!>VsF^*1&z^ zrn|Go0rl>@BRU31*Z_1vmHLE58(i)aF57}j1v_7b<5)T2Q8#+|F9(9i{ zIpRhvKJ11rIH^#61V7VUfrM>3L_`RfT_?B4{-P$9syLCrX*P6o@ z+{%OJ9kyV>u9w`btz+}b0A8S-)C%ekUZJ%C>Vs&9Z)`F^^Z{M9ZwRgM6*t#$ zzjfX1X*t2`MHe(S&8z^c2UMCH>dy?6*=1!Ml=Fk~HBj6&ux00AxB2O}+?JDX>*D9l zC*E=!j=kZq1H=c!0@#3wYfrl2iw+AfxJx;~+WnTQUg)-m9@pN1N?bq|Z9t>i>1PF4 zk6<_tU{*-E9#GtOUdBxM{3Wk}NrTOO^pxK2JC)W zIf1b&Pbep7c>o$>^n%m{gFHa$f@lMzcQ~6)_;TqF=+`WJ9>6Se@&IO(F{>z;9p1V; zJG>lEmt(*fu7O=^R=THN_`vOz#qI9X@2f4?E_Q)e5kenJD@f|@`1HSF1V$8&$&5L8-NddWYHnj2ecTq-re1AN#;Bti#DiP z-3)!gUOj->W43v_=ZtrUUjEn}ly%^xzzz@(m<=EoSbgX<63Yyt6r*??`&yrZ1piUa4}lTs5vFNALJVW|huOLVW)1JDR-9`N8uoh798fE@FH zTW+oCCdfV`Q8u6=52%o%r32RQeVGDyip!s8x2lOQm5N%+A^?+9Q-dzd*evhC(JG|T@Sia`txaP~R zk$N5NTfJ2AAGQJTg47164O$*BUGe~Q!sG$;3^7w6qb^A2hNRa8v7gYeR+aY>^78x(Kpyl<_R!Qgnr>zUV!um$b5137tsCy zog0+BKj13aKVW3*=scjT4KDt>E#sqn4zpbYJ4F+4^o2K4Y=G4S_B{W-^YZ}u2I(E9 zUzlFu)?+v7{GggW=E&TjN$!>hAJv)S>@C8+BD$Xd{Q=je?+>`UW`eN760S{@PRCBKx!UvLHh;i4$DW(UgrP-X}x_Y%m^C(Nvns6EB02l$$R@;-vOeV65HzI>kYy#{uU?&gla_)cUV zfHsgkV7>GTQV(Eu2z|oL5$h#+z=LBp>U{B<-RJ1O0_-!!9C7v;WuIZ)XZ+^c8S{XK zcW3Vr4DTmi-an*#o#%U zp!0&5C(ImS<^?fFT;~Qh>Xn!sD)WPNhWMRn=L9e-BvX%|zn^${|B&?GVfp$lpPOQ? zfy4U`r{n?X1O0jcc>ps*m=`il@&M+Fk_WVZe2dNyW}hMU8Pgf!vZoMxjIy85)ioOj z`wL%RGp!A{saob9LEBF}W&e=!oPbJo-D1A~^51^F?Z>Whz1{Jb-%qgtRu8Z|fH^{z z2hbzPtPp03v(HGK{!4YAG4>nPJV5pvzxLivk_WWZJ;t-m4sKB|vo<)qe@J;=*w_1d zE!(U3zyEzpXQ$5tq(6W>fSEz$0rUutTNTU-={$M6dtk&G%>&qPROg4we&f1_K#sFQ zGHHW-O+eJ#VBJ5cJTI&q50tfjMPCC)4xdcg0P2BO51>DQxj`F`2YCQJg2`DSvcCv3 z19cC9O0z;_PeJm48sq`@xXUxl3PBqj)&**R5cL306F?qd+TilMu=xEz*|&au&*`p- z{oL_aKFpd2FgtY4_A}nBkYHwD>a39A?uNz>2YEn_dx+$s4KB|M`}$s=W!qHx?|%QP zMadYz`h=4G0bU-kNalvxtPu7avsod<%nbbI4Oz6o5%a>?2k{k6_e(;+5tE$h@$!CZKEw%66bM*T8{wE0ZyRp9jz*$h;t{2e5wt zc|dYji0mPxvqE~wexmdUCTEBDP;GE7dkCQo&a{6>Srbs2@4Sqq@_9{O1CKuBj-Gru zX#*?|U}l(K4`5~>v%^zn2Kuu?LOp`ty4$qDnR^5q*GV%sSmp#!4=8H_%GYZ0TKy8n z*k6WY-!pBvJMrqL5qUr`FNl3a&;^BO26msiQ)h)l_Xs}Z?IoIC8_fP8>E;G!(gY;; z4k&8^%DiCNE);zY9NfG<83Tm#0G$;gx}fmPz{;~i5YJ+dPEyLX444Qx~L(BV! zei{5r`4}(#7;fjtj_%m0^GO>J&I8y(1YJ;gW}wXqsXJhqXoI~TLDdE)dIYOCblJ4Q zxoZN-a{|hEy7ck%W&Doz%p8@(zs(B?`U5KR0A`2#GXrf_NNSJZSa);tp`r~=^a$p# ze@NDOVX6seJb>BZ-poK|g;eel?C-7%?;nz3Zg7)(%9?;Ow!XU9`Z9dC%nUs7(mP2T zkW(Izm>I~dklOv0rrA%N{X_0^-^j3kNLdq5zV^Qi82PFnp9q!Kz)L9|D z7rNWKr0yr4IyX4|ys+xk^V0;B_YNrAjITN#FUIF%W*}UEzn2(&!jXFjd3gY{Lh7@h zxb_I9?jK@vgTHYTbAzj=U1d!`8PgZznlHa+#dWu9d~bK+mG@Kf0Op2Te*n55s|WbA z!s%B1rk43|(kL#_&+PJO5TI)i0Y>PgGT$lZgy$-MGzlXiAe=KDzTv}N8x_%!= z4;@e1fOPc$e-9yMhxe74fjTS1_7kT^ko`ka<_0&&stwLp6R>VzOSfsrgM!tBua4*s z@i7MO42OnuunMku9o9zH;9xP2aJ?;=OSI0Gyf5#aT#5UcU8GC?hQDR$Yb9Qr*XO-> z&%icR98Wk___|(y<pb41SwUNuTcR(h*`&c)egKu!XR`9%rHK3*LPr9mq3ukL(|K@H* zzlycIZ*$$lkbMk;pDP~Yxh(rz_(~S9&3o`(yr*v$Dr`cuJt$-1;$q_KcK*o&PG0yT zg$wZa4+!T0Hana=Aea>*`-!uUU~Ab&uqoQ$t}-{cwag8^-(A68!q=tWOSowUO~4c3 zIRWe=DtHCU_*3)kcFTR{+j$QDIEi)nJ1}b42FuGHZswLe+*IcgFP43Z7xiwUi@8J# zlIsEYWY5ZLL9Yk&IXu_?j@MxEn!GmefgLgXz_FW6&{!c6CvePueBj3hU$<+q{CO{q z?ep^hzegxtJ>aorM_u1pPq{YZHo1Gr1LzU-wZZi|x^FQzI3`U1{XyUiJb@wb4Q^~{ zEH809@i>p;gTXt`UnV#NlZJ7y4W{SIBDUbQS?o_RN9K|-qnI^|CGiJ~ID}=t>tl)M z@i+Rn^7p(BugPok9=sRFowN%Ho4~Pgj2tV+OnhMZf^XZ(w&3F6;p=9H^34O-L+Fu3 zha?Y>Ss{`K=&TTb|B!|~+%YuUoRF{wmNW2Khz%lbL84~yb-OmppSNmkpydIk3qTu~E)QTYQStz0hj)}bpwX~k zKk;B6!N=T7qiMTE&sWRzqi-pwe5W>Y(rodI3|vbW8_#lW{#blfzLv0VD^o; zfEXv>5CguzVuCU*ss?K^MZBBa$*S#~dCIAd$1MuhOLsNZx5WC}d!*~zlJPOODxG%*% zm`#YV2jmU*xy%+|+sF~9IS>;lSCEn$lO)Q4b&w=r$!WD})}w&a!_`^(tRb`3=30qiMGkI?SZ?>k=?WP6EP9>A;+?Gd#7L;ShHk_Tkc1${&I z4j9t1ZY+2PgO9YT=XyL)$34`bwrf=TPS@b>U@@P(+O5IL)UU{6Xcg_bchsnre2upE z-R*iexkuk4U%Y2}zS#oh5WT#|as%HEPz#}cNbS&c5!QoX`p9hGb@}nKJ&3vnjvP3W zcOJm(@CV0iOw0-}a2H1`SHfkZq&Ed-uWbrGU5L~o3KAe<9KeZN(8-)pCi zyWjoY-*vzE#V_11fBDOz)~|p4YxkSq{N|$PH!tm4?SB9Fe?OMb6h0@v`qi)WGoIbH z?Hj8O>$%zn>Y8`etfj{|{K3NQL6jW`@`9iig5HpN0U82w0&0e)9k>)? zfkk5nyQ4>sx*z@MNA7oi=XZ))fAmLxsHbW5?$H6+YufFFk#6KcnzShfbW1)CBB*@k6)kbj4nxi)1g+>508W`_0+wm=&V?iT9Z6 zZtE~H=n<59fa-#@KcKO@A_Eryc1E|ow~`GYKW|?5E_b7Fg}LJJQh6SE#QnAJat}AX zr_$%jX6ty|>_9RvNbm#jgw#SS^ij<*o$0Jm^08^ZoCC-~Hb2{hoXK>Ae>X8(T(o zcPmz`a2GCIDC)DMvjM~vKmF-X9kI@VDg7_n=Ug+kpIf_jt-J8%Tkhm*pXt0Xn;ClG zrH_*H!Zw|FQ+0t0nH!wgKZF>d^4ws_1DXwT*E2i3?n6P3klBDVGlQ5Jm>=$LS9`(? zBIc2@N7)rO*H+FETXSW#dcl(X2TS^tuJo7QFOSP}uehbI+9d+!y68SoF6 z@WtEbFCH!)AMCbn-RjKe^H${^1|GQ>&(5w9mP0;&8WT&mQ;w`|rCq zKlt2%eZMb&83DGB=$gY9QuYvo2cRCY5KoFH%#{A~#c;^DTK#_A;kGfnMcr*KQNB z#?)}H2VgYoLXoxHp zNb&-Sd?0B9&54(>){;i$g|8M~0IY0bF zFjhr2I{ZHK=g)U9zx;CYbAJ5k=h71xV4vK7*Qxj1wr7Gpgz^7N_ny=J!=`L_PWKQ* z55Sy|CL`7+Vt`q$x@ZEbwHc)~L9+qi2_KA)RsRZ()VBt)H$FC4brZ3BeZ?C5f%3En4Kx zo;{nyMW$md^f9X~5a;X}+pWrNz~)ii^mCp+e?H}NzV_}X>i3EJ!T#o_-*W3^??Czj z*+Urr&)z}w1+ae@GXmHiX& zvvrP1%^q`{E}3bNTicCO8^QaaaiGRY9D(iOn69~}T_Qec zqV@_~K-`iapAp!KdeR^DSewfA5I+~NpOdiwyg;HxVEF)bLNr5g0;U_R3LCKHk#??k z@7`|r?%nRAk3LGdrt-ze4}S0i#s7tao2wib>&HH3Y*Gz-Kkw)ma&hKqTQaR3(%ZK-lQw`}4Fw|DPe<^IB-;iFGJ6YRgC zIX`|M?Bn~N-1U;1z3l}@{Ez=m=OXG2zI~>m{cE%4UiZcPLNmtJ3u^Oxi>jF z@wMgXH$Gso{NO|!KSKW=jUjmjejR^ZOZF$ZLwXRvIhX~%^d}RCFthBT30pKTVQ*97 z6ZSP=uj4*5_vrC*%*;3Amc{)%&U5)2avENPxd+TY!bYHVxV!I?z$RehM zIHn9=U)g>)4)Aw=_LC~d#nKs*+^JKiiq2uOeMTO)TE}-TLaigr{rSg>hU3Kx?1=TykMSIy%ioNUza_pIJpX{cE;gj|iT$9=vvU`t))D6Z?3lp*XPnbU;}NoFF?h#k z6N_+sV4d6q?1E$T%H%BME-Me7SN;+ngFTPd9erJS4fa6Wc>K+j#eHxdJcsA|`46@N zJHmT$K8P1MmH~73>G5%_95-}axeEs0o zD#JgzztyW(JD=kO`z-XEVE^5B-&HNg?xQcLU*%c{bIb&^*qB%wOoB}?iZ8@ZlLx>B zfCIGy!pp(UvB=xGPq8lfG`0e~Gh>v$wYZ*Gn|(+O^ThMS<%W6uJN_9w8s3-fJLgs$ zIPX>qXMtV;9D{Fa81R|YGte_o+n~1reFJq)bWY*L{XEX|{8|XFhYi7|U|+B|XpjRyOle)_4_ZqRV@ z{k`(aE85dBbKPOh^@+8~t%-k$z485UXW*YaoO~Sof@APZjtmCs4P36bVLqPcffMWo z^Tmj#$+N*cwuSctQ^XtK3!e+t@bkp-_+#_&_-Xt#e%mn536fJ_B^1si8%-C ziOdXS`W={mV*1DMEsya$bW!{*uYp~_o=_vf)(~fqJ8*o&NN}T88_~IGV*98`Qd11< zK%!4V_fe4j)I@viV?Eu^%uk5gW7)R@Y6IW}6ZJuj1G*CjRMZ7hY=G!b;?fDC1DZT} za*D1bA3WG|EjO-84shX|nXzye_8D@y<#Yb_Z~wOY-74fd7fpLybsFHEV>Il4{PD*c z`w$lx_Q~aT?>*=S&Iveku*vdybLNBMufZ@eFgAeL9ei7@4St^cc#P-JJ3!2UuLSd! z&y!OSQ{(H2Igo-i$BDfnUcydtZpaO^XIeNB@&fn)}d)%Oz+ZE&B6}}J5#Nbib_kBKbJz8e-_h1(PZn!thgY{?M_^x|S)~PqY=T5&BtmohQ zz6&oN<2gJZJAv)6z6tCMc89ot447dUR81q06Ry12FCIG#`S~!x88b7Yqw~h(QzI+bjWSpA@TjB4aqp& za17S*`QYC0&+p(HjvlPr;<-EzdqJHYUk?`G@`&-ly~X+D_wbDPP9OU|uV;BaF@I{F z|EAk^?5x{%_<6TO*J-!&z=>e(KjwDq+3$Aj-WRMr``qsRN8MA0Pr5y__8vRs4n2F; z9e(bdJ9+kf_rg0r&~-*`Uwrq6?xpuCFYedpz5RW)7uW-01Z)9u0XYY;2sVmb#qXWu zJi>dRFVel$q;5#90KH>Au>dnwGxZaNZ2Iabs1X16(=j(X@J)Vm?DIe`|WjPhOSlHU=A<={44k>7(2q`MuBg(d&qAgSY_f z)Bm(~%P!Y+_zKn7;IoM3iQ)0-W(UB#*#PW-E$*}X@%M0fa0U2#xC1x@#lF-Lh>^+h z1MH{zeT(_Ytu5a-{I5OmvfH@-l-vB&akqW=fD9lC+H{N`@H1%UpZlzVgioO z=liI6GVg?bKxR2DTfg1a?H6$NT%YjyXlc>RVgrcjeVtu^@gOI_&-;s5AME#?y;u41 zB=!@2pV*jOAKonN`+fW`-gU;U-F?Ds*>%8?lhC{T)KgEX-QKrvpT?ZTod*sa(8WB8 zsAZ4yTo!+e7LwQEHO)SlUBD(_4>oSx=ypDJz#Tq$#+{a#DX)I?ljJ)0;ZNMz4+Gnf zv;`6ukWY|fkau7Q;3TO}V9%&sVgs?0$_9`y;Q1 z>tk8Y@AG{tHtcY_B{JLUW3wrt(*4n6(6JM;R-?zNA9>dq$?c0uid#0umMHiaX`-!!@w|Kk_uZ$9qU z?KtT6JhfN-Gnn+T4t_aaa+Q-OPiou(=gfNUx#v{FjgC9r;yEmyPt3z>@LIek_5r(a zCw5s(+a55N;ruOzR5 z@1SM~heDjCd#;NPni>If3D6NU!{~CILy|rgzy@TRKbW)ust*c!1>ghe8;+9;=-IQU z+Dx=0#o(tZI6!)Su;;N2r@&gH;keq4_Hp%#{y^v&@#e-z>&hSkaykQd5ZQ&Q6JF#R&%Hk z(o3AKhcL_qFh2y1Fg?S}4TvKT7}vYKn=)mJp4Vb+Uotv-Q!ou!7Z*g%$tA5SA$K%y5XBT2FpGZpNsYO z+i&Zlt`S~5X3yi6ny~y2h{Obz8~AqMz_I7t`Hw2{ z0{8*y2yg?$0@MuABcW45yNJGlo(8x#EjhpU=?>twmmg;%N0h}(uOi=Wl3nk9sdgYoo zzW2^kNFb`Trz z_|koD^Ui&W9rA4R^~55?;NZ>2ypMPAY8a=+%!0>+&tQ?;u$V&=wd`?wK7UI*#Os)C zFq>fZz~Td91CEVj>u%kx?%gkR;n(@#ksHFFZs2?Vu)%zG{~dw5LS=pJIV0crApV(S6ufcp3E zuh(0#aW&jHvvNz}7uSvNuiwwb(EWt%i0K{To(Zb6pk)^9%xP2fdgZec>v9cu9X?$- zCU_?L)ab>pz`yu^i9I#`ms}M74{plvZyEsfJ@5dw;IMpckktmU0R!jkajUlMO~E}m zJux=^mAD&>fj2OZox(T!csHzrW2<9O%S6k>Lf60wpI`gk9=GT7w_KyV7WM+WzM<9OU*!c|DFy9W47Z7hzGuR}&!20#;-R^yd+}U>nZoqf}^aFlA zfL0L=Bl;$EkE53#)A|av7q}Q~Gqr)h20Wni&%^aV|9AE@jN0!sT^^wN;23m4y?S(0 z`^UMob6?1@C+4c8ObkX?&hSB1P*sb+$L|1BfhyO}d* z>UGLBj1PN!_6ouNAYB!+Gb`eMYSGl9bpD3$|Mco{4JK#pBy_#R0ptR#q~=fJRKlQ*%56FGn6i!At5Ti8{W z{m!jDk6ZrMUWeD@`?K%U>;dtC*#eG@xPW8Dj&kf#b^!hoejuC^Y}mNT9Xs_(N{s*; zfYuOQF?B+Elc*1%8KRe9?8+0GN1+p_Yy-#zGRFbUWKSi(N63Co<^f(k0Bs<%gi~}u z1#p3byFa8_Q|x9Tc(A`QzgP+maPjP^Meke0^}_XGxgtN?vFCHkHOPKran1xa-@op$ z?r!no#pe3Mw0Z%t z0677%09x~HJNLMk-~J+{K7b8?6F@VBRsb7-#+lv+vjNN-sbm9k-~-qv*>LaQ`gs6z zMA>JIUSXdLEJPbTQF;N#j~}nGQa(5cKbP-=8bI6}U>vi4xju*;@mcH{NUq1V5dI9g z{?4^Xt`k?R1ODN0mW~^w@h5)j@Uf>|?G7U=;{N2^>E*r#zZoEf|xc?WSmcF4y)xi{Ft*PEX=%$sjFyc^EJ zHT{#e&mw!raILVYr$#M%oafr#@fy6A*#ztXi))Yf#x`>-78h`g*m;hbd=L)6}L?sCOI_<5z`05{6KALd{X&xPMJ*Wc}$ z0P~y2_0isE^1woK0E>0vm1-6Gmz-3jW&-ni}wZ;9mUx&G>!e{Ux{5`MNT@ z#`pcq;ez|e|KopH)B&*t@Bu8f30|M?sQFvn-hKP^`X|;mUeEG-^Y>r~EE(?Y+?k&@ z{|+|6D3~>zgYQ51gFjH4N!;YGKmOxCc2UcJ4nJdWc@16*+hBIV?19AxzAfMwu~Eb) zW(SB}EHChRLO#3I3jA0AUVvI5vA{vuht)X2bh!X=0DVws1gNVpSAf~XS{I-;D0?iR z56CoUkezTxc2 z!^%ydd*pj9l=HAy=ezH`Ry5aPzMtNXX%ok3jcV$`^~&?X^`R@#m_Lkt;(l~LJ(#;G zx(BrE&mGIZ&z@(0$7}Ff_PV}3z}}cG;Fz${ zd`}!}lpWx+8Bb{30Qru^0`LM>EA;b$-TRNYb07RjYlBf50cID$2QZHjP7q#|`6|p6 zxkYB9Gf$cMVppLPWPhbJJp--oy}ME#U@-taLi7iq4Q5t=)dQ3LL3zdiam@thykno^ zii@dP((^-}X8tA$+u82p8sJ(uvoq-39p1aE?yG?>$o98UkK^;W*0>I%>Z-Zk=llNk zL))qrW5bpmu4Y@A!Hd67_Yd8*alONh!!=s0Pn=Bd9EE$%BiO>_NWe131_-uSe?11G2Rx>0PARoXs zq8Tu5kUAmtf$gHhdikC2CG`O>c$#7A0`w6wR{*UbGZ?A4Fng3bEpZ%s6|tWo`zxi} ze}EZ6Lt9qX1sE4-F#vtS#l`?}%>=i&I8F|*Slth?KX~QXj?N#gcpcySp`zy>#lZpi zzJKM2u5QkpIj&{@CxZFg;_n08%l=rBKbqDjtoMcUv%NHIh8MTQ0{*hc8V+6I7O&f( z*f(yUT-ba*Hj!AL*a%*oTpAmQzYpUcUvGZiFptkRoEp{*J za#{9#{?=XxyTEJP`|zIF1G5Dj6USyTK{`9YXQW=hXZB+O;{}L|j2om*Xq*5xVDq+} z?!~vilk6#0y|DBXhxGyUM-5weNV!(NE9y1WahWs9{z~jelr9FSc59kEAhDM~r5K<< z9w4rn;1(Ch#Q|=XJ-*Q=^W8-G;au+X@xNzuSH=I6{oA@?_dzpTcXn6d^FYYe$l1_x z&L7#&^&b_)h>CmB_o&a8T%UP#s`ZzApEy$aKAGFA^Esv7PtDI3aRBxJ9e}^MufD_w zOV;g7=K5Ucmgk3kK76U2JK}ub-}|_?xZeCc*aWABb;I~?e)Aj0`m4YCD_wv6*MIGD zS@wMUdwV_Xg4qP#)3*g26LE;;2iO6N2ly=b13nv{5pKX@0nPzjC+7qX#_|F50&oJ@ z0D1|~4XR#f>kfD3t?wlDLDU6JC&)}A<_n<{q;CkVF#Id?$I)%G|A6U(GHC=`)Qipo z!aRWW2>U!hu5oBwGr>8poa?ys@$1G9P;CM>Iv1>`dk)9-(HpNOV|6%>9zA*}*H);e zfa?exe0u(cEkh9y!$A@z5CMiFCh9e7<0xYb6r=^wcP`Vi=h@%+uZ3OUJ+KG9EwH%2Vgj=R77t(t_)L5@pBo?+;2an) zz_}qGAU7gM!Uh;8kZJ?AyXW8hLUjSmAVVW)J;cl(rFW2i0p=#qV+sF)R*T+Y_E^fs z2a*Rw)&u+)z^euLdVqYc$GB#KbAIFE09Q;MqrM6bHyyTfxu5U))zIwj{#`p1)%#?& z?)QH7(}MBOJSXNltq~npt6tLABbe7%UwyvpmnrpqYJAM7ukic9zFJ^B>E9E$SGAN= z77G|JVEF*&h}?*p2pklgK$H#GvVFIE;qC9KK2Y<3MBkuk1dR`*hZ>C)xfnfL=s4Lk zRr`iBZ~@E_^|b)}9OeOhJ%G&$%Lo5)%><8=1B_$VFF56UKDlgi3QouNYFBjc6W0)! z$af~F`F`fQqT!zQa0hoAm`~t7i1!nF0=e_8pi+eAOF!st$+Hbe{%kc zdJgy5>qOZDdw*4n zSPn2Q-H+ja-{gKN=VNxib~*zY+m8LuC5{L`$824`9Dw1U?}&L0_jei*giThbee=oX!u+DRs1ETx+NL`Sh2R*S;eHQ-9{65#U@%wOm7Vlf0 zPi=#m*n$NM)J9I5HqA|+KHbfjF+=sq)We9C!5X;p{d_vS8@~Vfpa0p}`j>zC7nf<- z^SHIY=hn9m*aWi&eq0c?1C|#UPiPz=u>jl#pWX5S&Ix(}&JmmdHh}ZNwPLk_a2%k0 z0|!s&9AbC?W)3sI7>zJ_0Q;OULxjFzdaJ0v@;zbmZ=hdL=7{NB;WT>;+!DbBY7CI* z4PsUp{lWAFtWER<t__X6*Jes4ZsaWAz%ctM_TtNo*k z^z)Iw!u8?zjpyU~=5vF6vytS!%!R-5$}8PvmtB^1U3Jw}svQF#hI_*%I5qr6Vfb`yV^_}guY!A48{1(_Zzt45e^^JYx{1C^? zojW&Y+(+4lTW`HpHAG-Dj9J6^zx~_4x$ye;fB$zEwZhNicYB@i>sx$awg+2aIf&T- z;|i%67&kyHK>ila2aFTQWCM&3u(|*?K>G(pFMRyvca;aUIpf3t%oC&@uypS^ote%a zD(J7V;hG1?OyO*Kz_qfs*yHW%r*Hw-fG9l>JYdxIm+8JZW`Yw#83&l@y|O*FWX2?| zzZ4pq6RU$yeDrf`W=Ecjk=@&ATuaR-9NXveyM0!!pYu1pIBdfzWRFEtCPQ>4-j6dX4mO%!HNya_ff;5o|Osvy?gi0>g%I0 zA9Wvf6)*-?4Z~6RF6KUa-LO4KX9p}VNEZvB8z3Km8zlEJPJnA5n+>qqp!E#se6h{j z+{xEI(^??2gP1E!3_!my`e5b?k6-gta1<)>#5AZ!wC(OkLzzJGy@UYBlF`c0G3+&i;G>LySLDT~L znZoQ(%$_RrV#DKd4WRedIihzqPdiJP{YAsQ0qJ9@k88;{ea@S{aGEY{!A_ zXZiBwMeBZuDh;_at7K-=Q=7 zlKH;qdIjTP-LS7bzt{rh`4s#3eDU{!d9@!JKTL8D^qV1i)!kaFg6|`?0sEHkW9JO} z_%6e2+_zU>eYKt!!?WQ#eEVPj^}avNAMpR?>CD_* zkFK3n%LP8NVLj?`-hw`Apd<@>oViJz!tQ{%II->{F5Ytp1i$?%Uosb9ao`gE`x zh4Dh~Gh4u|*#kc|h_VC54OlE-ya2UAvjK2}#t9GyP#dsZ0K3UKw7LK>73UWlKwXvI zLHdX38A2bVGsib?bw^+MFuCs_`x5Uu^`7zo)B`mJNc0Dw+r*aN(lXH>z%21w>qqto z-BhhcB@Uoc4j^>^yYBM2jbkP_n1BP!1rt%nwrtAiqIEx3%YI?=;*95EShw~??SsVo zfF(G9Y_re6KboI;13L$CJN}-P0sB_xqxMHVkNI-M3i$j0_m3y*2M>>#ry5ms>%{%| zDQu|K`1oG9o;hCbkK5-*y&jk-6z948o!Nq1?10q^!m$AP02-z+FBr}R%m!djiK(yw za4XbS{JNm^3cv;IkUb5}|62~g{z7Pi-~osMs0TKeo^0wk^m$ZhgP9vvC$c{vynjGA z2cQlRg{^G&#W54yFhMMp?fs%2Uo>~7YA&MuZ7%omJ;D7Eha8$QEaNdueYl+)J9eyo zkGZ^d)N_mj$Tky{+#k(P_uh{Lm{;7-RQ_J~@1Vw?i21=i`o4;|f1bt%#QaI@i&lW^ zg;l%D<1*KNi|TyHOR33Gqes(bH9n3LZkFqs+I|#X!E3jH)Tz%+v7R6ZB5L1u^SKmCTr|KOj#0C+(5 zL8lf_DF$GUIJ!XDOF;J;*8N28sAL1`)JoL^hU)wY|a% zDd$JrFVBPPGwh=gRJ~wAGdyP6BK7^o`BBR!RyAE8#|ZYxRj|t)J9exR{9{k}F2cC~ zpa1zEm&*$Oo&S3}dk~cu_;vt((9Z{q6RD|ILvfx>BWQde zT!5bkY~C(&)uaY!_-9@idyCN{%&ZW41DLs-uaT%Y6H0Q)&?3$n!mevJT5AZ!E31^l{z*#NF< z&MAB`HUNDPd6v%wSf7BO2kbodlHmVC_5W}H%nyeLT*RK^vez*CifJuCzI)>Vv^U`H zR>7>08!E>D;Ta*C19;G)If15tz70=0d-{bngKD~T!LHK|5{qi_*g690955n(jpOE05 zK4I2`nTvF09eF>oC~>LvHF6&4QvmzaDX4XGT{myuyvp$3rcIkj{QvL&{;$ilum{xH z&?Me>-+gJ1w{`2*s#AuGi?Rb@ZUEhY)d-9e2-^VT1kDCuH#vu#OU^0Rf$@Pp7Z8;P zP!HH7^8)AvVE+*C4+nrI*!CA?UKo3@&>u*wM{JieKV0Voq{aX@+!EpeL;V2$^_S1j zam)nA{}#dl7Q4r{<^Fs}Ht!?bXP?lkZP9xnlkdO*o?P^Jq|G7sUpb_MyQAk^so^Dh zbI|Q4@_n!m?yZlX-;=)I;(qB5Q0&WW0A>M_CpPRhR=H;M=v;gFesWXde!c@@R(Nc% z&+(ysrRH6g_=f|?g!8D!h+p`-eEA6Kj>H?(_skZgiv=>-0ILgdt~h7dP0pe93vhk; zTtGMvu-PHx0j3Syar7nC01*G92WB53asb`zry1#UvFMR)!f$fw7Aa}-oMEUq^_gTJ^ZYC)6 zeMbx!B00Wb-c|_vHm?Ue0Pja$puS(@{>RlPsLvPNb8WE3O?y&n&cvK>{`eyJDUR22 zesUAAPi+fsi~P1lixzofD_<=7&yT`*y8EV1om%vjsRL*ZAiaUi3QO)I zB-$?31kxLX9-wC9L@gjS2540K&SWhxg##!8|8dO(&zA$-B(r{3u3TAg9Bvrpd&xET zH(OBbJP`arIu5{c|7H(QRiCatKcVY0zi;!oumKwT%j4t-%K1r+pPZjPf2a@ZJYbm% zT)X`U)h?hr;d(>sgYU;LaXc3H!(oy08}_-b$Bi3TG{$^Q-x1F&m5-`lumf}2mwl>=NOx*zmYg=%rY zf4;fDog3zXELpNd{ioTHd~P#w0N{V+uudA+5!NANO0%52r<)8=f1zN;b^K`8e@>80+ER zIsb9Kr@a~+JN&R&%3@+FP#%~weBfgc@Lrf&FUs?fN_8`x-=>{{*P-W zIQ9{rn5zzO`SkHRXQfaruI2vNo$$O5!+E;fF+JP5Ns}h&Ossrx??0F80sj!52Lk@b z3>u=CSKKFfKEpnWOywA0v)g?9g4X}g02uz^0N78M9DteO%xzEdfHEua+Ik&zUg(w8 z>Q&MNHod1}-!O6j_6T7nNV;o1m;2+G32q$V7a8he{;@2WSKJ=ohJS4Go-x6!Pyh8Z z{X9R$nV{!FGeP10x(uACHr@Dr{5*c&=5jNeo8Phf%KK68C+}C^|Cr|b_@C~o z;W3)uqBTM5%QZ(H%C(3c!arH9&yV}Lp2=^yzNvYX5_A4*XTyKoalilG_A|U-Ive2Y z1EOjIVJ-kW@7Dvk_DmOKTwpi`Fdkszo)hZ(;s441@&5~VzpPpy>HrUm79hw07U;ZS z?7q$nrxsYfL8bkJ*e}F#0Pt`9z?rW1Y>&k;6Wn5A&Q-Sei$nK=FXlZzeEnS3_X{5n zF;A~vy|j*I{F(3DbNLy+3r8HD3A*i(wyxoTh3eZ4_u+jy4F4MY!~03SA8mi&`-f{D z2=;FfK8U%Ib~WevA8wfyry}{lvKVGkWz5AEms_hJX0F zQocX0&3j<~aS*RIvrpFEz}AAG_4k@s^9*j%6Q_v3ziKl(TFU9Q66-AILc}8-U&59Fhn4`e4%qaouq}V1wacGsOVt0oEOOQL)ed z;p+bd|Lh|U2QX~mA>Esu>!czF7!b?{xkGw`=?e<+fZZBb^aL6QnCo>P^}M)df*S|; z;-&=|@sI9@8n)?H!r02?ckow8?r)!eWRGAT2zt(3-Y@DoaPDBww|C=*J)&{G#rlSO zv>q&M0FP1kBld^)L+4xJ`z7vg+}GV8JP^9@_I*d`o^;ff={tey@oA38IKdxKf z_j6qn<5K$~@1;gnYW!uwKfQ9Let&y?v`AsiV7M-5TtGMv@aq9S7g$IPuzuH3od-t! zf7!lsIvbGLVC)qzLO1~S4nz-34H(U*OnDKzuRn!6-*QwwD;=n(cC{`B>KCp}M zP;WmSJ%h`zw{YeY+DBDr{oQhZ@E@M_Y44HkHqM!#zP%eTY*NZTd|;k^Ir)Cso73>G zxql+|=R1e<=X=+G>KL+4j8W(82!hQ^3JOH29j{&gL)*D2P zYvZVbv-Wj;`l14v)sEp=0PK%WDM3;%J< z1PA||pKKf;{b+IMexhc5X2ZQb9@k7za_~g}=<9kj)0P8lYX*h2F+76Wn4_Y9{H91Km%tdwdgX@V%y+^_lLy!}mYjt+VFVZ{FJ>wd88l-b( znK40a8NENp3hz&k51hZ{{ZYQ(kNeH{_nKDJ@3gw``oMh zdhvKY@Pc0lr!0QvKH`k9hKJwt#XtTr>TgPQA90g?J|F)U1NeDBJ~05?3;8FuI2Rsp z?Y8}jeP)57|3L!?{>QC4;fBh5V6?!*jBo(#8;U=;zM&)CNh3!o-r4&R%s)70 zqia2Oqu%nn;Xlaz(fmx)n!m>WO@;GU-``cS&wi2Pr_56P8TUt>315Tl!v}?RzTv#z zI6uRG*!NppZ1{-6ceeYYaGS~hbIehHQ>y#0VfOj#^IGhaYYbpHfYk!5KM-GsEhYxA zz5uHQk^`XCvK)Xtgz@|HcfRQ6?l`0MKjQ!KG7o?nK#yrV)prmVDhFV7K)DXsJDB~$ zH3zt^hRz0PRyW`PO#_teTF>S2IA(%p;{X>wIlrj+JI4Ke=hIKp<`}trR-QxMqi^57 zs@pD9hiLYWc_1T4O-W*&-Y#9^f?LBsF&=e)&HY95gVtYTf64dA`-%I(KHSf;*2?V@uP5?3IF^}rvBcj*DK~eAOC#D zd}07NRO<~eT`=($aT44Mu^-pF&jZ5Grpp25Z$GWPAHJViK=6OyfB2%q+7HY%LXQYq zQ1%Q}4nXz``_`Q;0xi%@k^@{{OYwhq&0r=_ocNDpCU_y|(CtVxCJA1yh^A^7o3*i5${b}7lk^A#Kqw`1e!8~ZOgVsG2UxiEgvR|dw>+==15*D3|I7wwzhL}@a)443#xKAJb4^eO zq#r=FK;!^Y3uHF9?G1_sIM?ev)AQn(37&}qME7I)WHxRs-Q&DIHYVGw&rF}we+-*9 zZ{ECu`w;o=xeo9N-N&!dehzv%9-6R4XS^`y1zSKK0RIQ~PmITGPp$h&pC3B^>l^h9 ze82R6e!F&S*SzxpohuFZM-B_81jo#IG0q{Z^|hLx&-eSd)b;QvvW z&4z#evZ`W$F#glU0Ct|jdH~KTw$*BZmIILUQGc}@!1REA9RRI1bpY!NUb^Lw`u*wR z`-%N0t$RlEfACKYkn4o&LpeavgW(s53E4LsEg<~>s{DC2*zqOKN{`%;4X+zjU!bbu9c?De`_F`}|xe z{^2l6sX?&gGW-`B16VDP{3@IS_*wwJ4qzOB^#n1i4GwqZmc7dPfqi^G`ak%8@Xt&@ zt`n^RNIw|7F#X?fLd*mRIDq=HPk`hAH`LNv05but2O!t$J=^o*mz;iKJVw>|FPC^sN-~=yxnzqV!Ph*J2nCQQx`<{3&#uh zr@6m;$LRft^Z1_e{p5SY$4pY)AAKa${+Nvg4^O-S{^8LsM(iIK{&}6M$OGcSKQVyi z0KOK$>Hu6HRtJCsK;J^l#@>O%Z*aKlx9(Bg8}^w8PW_+!pS?l2PN)yzAE*m6|Am^+ zwe@5+sOSLb2VzDz`-Kq$3~5;}cKpXN6FiCoWRLHK3m5AA)J#~)_89U1yE)GK%+&^T z?b=oQwb9jPd;h4%`Mhs@@P*cJsN=Bc>*N+YKs*5c(E*a*X}>SrU)wQ>+`qTR{^b4m z{%_vV%uSv)D+T}5&A>mOAHM_l=i|RBV*fDq`Q7}if16AEZ?A<7C}kYr<3Ah&`1ugr zXjBf6jsw8{!U32b*f;>@S@>E&X0^ZpFt=sP_Fd}p@%vz(+<)})V>%BM{BxaX4N&I8 zQUjnaoa6vyj}Z0>yrNoN-7AO~pjVT+ivPIsfAA8=Oz@h=a|>db=GID_>W^I z=!>s^s5KnwIR3&0kOvt4sr|wIW8dNasQYW~5AT=o{okzB#Lb<*Q2STVkC8)ye{e;; z3BD2ho94&*{K8s)yPh-g{$Wl()9;2^|JKL7{hSZ}c`b5*Qt<(q@bA|G{90fX2f#Tt z4uHIi^B=_l;6va5&}tB~`Ln@xNG`|xZx+}m_J3^IQLXm%R*AJBe4>HzS758f9){^ObnZXBTPmA!Vs%%b-A_VJ$$&-p$c#|*Unr(V|@4s{&3 zTvl(f0rYmk2N?df_AmHXen;{VAgN z@U7v@zbzF1_S(b)V4A(k>EW~30Ic&n_k(MmXa9&>{9~}6SX%>~ny= z4rt=a!-{+Qe!xE5A9KLCUhw~L#Po)s4Gn655+70nklc`Kvt>lU21>I{mXox>qPI1eTUSq?x>6~zJg93b^rY!TNewJmrW z(*aox01lAva^i|ZihISr^!~CJ2>O5g2Km2_fBFEl1}L>*tpNxxbd~f1PzQtuY<6z~ z|FRE=UCVLY#xWDzY5=bv-m0}aG%VP}DE=&$`z-fAcW`U0pViJ+u`@xp9Xsdx&)KJo zelC7yuSa44H~=(2^!^ds1+{;v{ZZe6-xZA)8V_nb=sa$%+d}((a>ak4++U_#Km1ra z4EngYpDzafIX-)T|2FLZGvU8b4$x`<#sTvA;Q*}$K<|dt046TquRb5Y5ATomf8f0R z>L=j;!9OvgUL!IO4sEFR0+S!!DgHsO4`zap12m~8{2%^5X8gxd6DLn6PW|q?uemc@ zm*}~`F6M&u@N@jw|K!riCBgp~*%xH;+wLi>|HUAHnME&3Rf6M>z|C#U~2ltl_`{^+EWx~H7 z1Ej-0F@UcFqV9qY=;vu_0ET~N%P_0iuK`Y6zEAl+H2+|q*q`eJt|%4%#E7B+!biv~ z0JI_0g|CJKlzl?U0q(C`&&AdMZ+?*5IPzhxQ{tkZ{rE@j&1Vki%v9>5VQlB}yN~~T zXMOsgE7Q+U4rr(S@MyMpzg&*Xf6k`EujqHl_h}0oKrTQ%pfdg?woBUf4vFu!vF3L* z?`x&_H~&xl-+KS?G3d_1_|Jv==UQi3{2TW1>3;t@;oouqi~nsd5cv0N0Hy=9ULf*a zu6g=M!ZkqVfxvB|0hq9KZ}R#e?)R?|bffTpf&UNiuQ8%%!-)|qd_)7y0UFgS4gTYr z2~G?EH~RU9LC?C6mwbQb+d_W7BP!Z6^nS1LV8) z{XcvAG4F?Y?{NQ``zK<%8ueQw{Xg|T>c{vI^#7bUYR-oLOtrtbH2+^m{D*4*`Qo4N z3jdGYws}Bk0LCtUN-+=aSzI5)h}4P9M^tb`=` zaJ!Yboy7Ng^WBYA`%C-}{_!1X$>5aGnUil?{XYu-aqE7|_z&WL-~UHx0JzTieyDMS ze>4E#-`4;=wqTFOgy5b<-4Bk~IHFXJ7=8HgKp(0caqA>UL=Mobet`dJor|0QZ`Z$n z8^=s=!*8*-oLBhOV&{GMpD*g?5#8E4_Ml^-*_>!249yIb$%m4lOzl{IOl3d`DME{?k+gSc% z`H<-VeGO1L|4$!)KNB#W1}F;u#Q($Q?b7Q3pU>jjAU;GVPK~${M@)Z6N{y(QasXT_ z&1IitdVi*u0RM5#1TPl*e(t|-a^I40e`X72^$j=xd~LoQz|k{rsFn*o7b{%b<@@z( zJF5M+{;p(gS9l%ab-#6M-6a0e|AT*g2zH73B()X#4XH!>_^)d1&sUNEv;033{?T1T z`F~>FO#UDI51hR-MJHw&F>3$xh@<}xIAZ!k6a8U|f6)MXHDc<3ts4pVAH)7XcK!Re zam@se3;)H;`t(0nrk|M!$~+M8mhU`}lP|rcx(?HInYIf)fH)5g05idu?@*)bOwo2E zYP+7cL+d(H*JaMr>NRUr1A``k+9^3Cb0y%G$c5mYxCZe@UM)b!+ct&6<_BR_VgqA0~S{=7t|Iq(Z|A+stg#Wv> zw{!B8>8k%{{s+74(@MuxBE+y7soLZ zycqmj?oYm3?5t12cedN9ecBc@6ZE5xKa<|hlgWh*AP#^F7$Q0kI9|SEzTf10my{W= z;{R>Fi_Ca@WaJpdKeMCB8>s;@Q<52g)Fi@)L>FWRJ{}!zcbYRqi!903jZuuSG06(nrA*BC5m<=oYLNFgf{eJ@gvM(sL zVtN6Fw+Zk+r+aDeAJG=j!NTF(vgS>LG9dRs*0% zEgSyBbH6fS-hb??jDO?)xlO14i_-t+tN(*jn!Gre1A!kP-sgH?p$#YZhx^xk;n)ve z`hVew0{k-{M({5>5p?1K2hh}wYu`}!{+`#PaY_7tTr%|M-7ufN+55 zNa+LiIRN7T!9O{G_5WD!KRJMZjTfT-!xp6bXL+`NdolFC9HV~>_H(xQ-#<5n;y+6N z@6Q0T{=X4(HYex8Q|klwEM`NJ`@{X)e2CjS`?H}v{3m8aTzgkD&Hds2=J$M{B=`p> zam)lS6#wM@aNTju`pkxVdz}8K`Sa)JJri{Gfmd|C8~Zxgj5lHcasYGy@IAzM@H^Ez zJrT@zVy|cPe-h6H@jv*l?ry4eui~HiztjNfALlwk2S{&;>3~cJXdD1FKw{TS8UTy` zx%K^grk}qm`1e11Chp(je{5=$|IgO{XL|wB|Htj$R)+A4+n>U_M;J|4R)J4&csu0sd!6?!TZ{lak>-j+x+v;NN0@a{styeHy;A z-7*hk+_-Uh&jZ>0%mv46SJt#mfej!JAO}DTh|YuWp6{6WPUkzx?7wU3%6zxv9uEQj zFP9u(_3AY`mkj*F0U8IuK69o6Kz{-UfHsZmw5l}#=4bueOWFS${*4PU|DQ?wWAi`I zTEMsF)Bg`=L;uF^Jx>Y7gMDDxAIfY1*vI#y`-2;z_MhArPWA!R{or*zr0fYNa{!qG zKn`$!!=|eHA@^U@yL9-EVz?aG=`ld}e|^{qoz6+3qa%cfbz# zGv46zXN+avd4?=^B}nZF#tILeV*{W^>xPkY~^>D{m=XlI34sq%ytF)tWG`pss?}> zARHhZ60sz8K=MoYNqQ`QE`6wI(kurEa{zt~0Dl)J2Vgk!Z>!q>Ti)UygZ-Qj{*5!S z*gx0WAGH|2_HXn5toMiSZQT3~8sC%SgLSh3V4uDabU$cA!uvv^5x>F1KU#5gfc+k9 z?5O)cDY^ghzRgO8fAA8=Oz?d1Z#_S8&-%<2|AlBDKK|r0-P?`*-B{QG;s9a*ctHAs z(S8IRpv-ue89;o$aJ%Gm%y!Z}-V*q~yFs&L4FC=h4uDvan35bITnDfm!0=xc9Dw1> zzr9rPZ@!;fKljHbn(oh^{R94^a{qj|f9y56TbFUGG`=Ut#|97wfO{6#13rPi-&%10 ziM=7Ju{R9+!m>9M{$Jumoe?iNz?g^bcXK57C-z_2zj;aVAID7aeDH6%KQ*qnXMN_1 ze`cUem@q+O?R<`X<^HoN`#jn{uke6q0nvLC^P%z78Sm5p+2>VaIyBwixasbs|G(mf z8gA{nbR>#phZdXAID7ad@uz5sr$kG<%-w1pSNH@dpB&@Fs-?9Jh>kKQ_sHc z7Vdu8vClL6y%GnI2TYb2fE<8%AaDTGdC+)Z-#S>_b2wBw|uj5zI^BCKiT7p zcpu!eum{|aPk{Sl_P^HtrT35dzZL$Uye z|D~Mwk=hUn3=|1lZ_q?LF*nm0P&uCrHasYGyeCPB5P~$=071RKlX#d}D zCH8p61~hHmF@*!L8~`m4JRn*C>=QGA@Jr~^;j66HuUP zFnYX*@%V1hb)o@aZzuErSKV04ty{m|nGT5Si5!4y3x0_@Gc#wIKjqf~O$$_t901(e zKf{@STNU^ZW1rvsW3ZpY_&2*(NZrq3e{|Qj|1U8rTosyZKDW*Nr0!4bzf)rW`u!KE z<^vl*|EI5PL)57tsDy!oP3;!`nAW^8UpB8wWpFQv8F5LN#%@ zV8(xr<^JHmRI@$}-`Q@*_G;&*Oqr7RJdibq&%0&&&gsGy5DSn8pb4Tcm>dAz2j98s zfZzbczQX}B*M_&s17xZL;1{DXmFYfgfZ@!)Ej9kr z9g}|y_A~g;yqO?j+x*-&eQ$u z)rI_#%A z79aoFe81KG(rNyT_fHr5+sq#{n)GW@v*|V(J>OjQ?X_fIKaBwrJOFtBzMq%?O{nJn zaDNgLq77p{?2S!){C9H=nzVOwyEk@=h4)+4zlGZ{xRu*d1^AC+CU_Vp>3%2o|LBcZ zOK#H)=jm>l2U5sP(3ju%z^y!ZUe}5P=hY4@O2h!v0_h2+4iMx3QU?^SmpG5y4jnLi zJNW*ez1|ltTB13CX#wGtxW=dj!UK?ZqE$kR{&Ud-pi{$tg?WIe7yw+DkIaOxsK?CD zhHu%khgoXaq&WUXy?6M&@GC-TpN-FHaX+_FzMu02{!Q~|yq~Z6Gu}TO`=iOA zKZCf8?`OlNE$*(Kv$fxoJzq5j@Nxk10DQm3{t_R+2N4f48v1S^Bq1W7+!x!`x zTR=WQO@J5x9*~(J)B!99z}Bk{Ky^U(>i+J&4d~W;K#CTS*b*Lq7yy66tVw1AVLO=( zVtqlT3CuMH$Tts&!d&=1_U(G~(MPprnXfGfV?5LE;rI3NU#Rc5c^}66*}T87<`4Ue zCWE?+>V3ucKROki=S;=5#Q=T|0QTYixR1KO=KjY0N$n492>MXv|6~s!W<^Zy(llA~ zhxa4)-}Xr9@gLVr@G#cHzgy2wsb_r}zO&tq?B32zpFUmj6+YHXzwbTumRoz|f-dX; zaR7M$JOH&ov;g!2SsehaC*L#LE_4844&b`#b#x}6@qpw2=z)y~Am%3igolC)q&|%% z5KWNj0ZLH|h{9Z^``GInTY&8%K8gC53FDa_i+W%DerYPaGA+`*Dt~-`{vY zd_UR@Y%{Z)8}t?IOFoZZXXXR^9&tW4AKbIl_Y?a|&kwnOb?FON?oVoeN&Jic?*^F@ zf7b(D0^k3z`2GPc-NuCP-(Cgy2PbjN1kZ#SKld;7tj}z?x5wcCMvfe*J~kf?fc?PN z9erKb+9R)PEC45fHh>s_o*-sFqXi-^)H*;S2VfRJpaTeWz!nD#8a6V82jn_~W2P1W zN5O0W>VceNUlT+uiwz*Z<$4d-0!Orm8ur6_Ke&{1zMty>{RQV7-%lKdJtjw+ID47sc&4bv1HVpgkB?8{Uvhr(e)s^s z|BBpyg1fcNXx$q!z`x}G;9vFt>e{BQ`u-LDf|{TC{_TQIyIxCqTk4tMhX1OV^_lB= zS~;Y>&I92Z&1W9S$C3kVJpQJx4aeS4J3vmbbniKh0jLGi6UYo0@<23S><1du0a|J= z(B+;E02^>)&3cY~RQ(u$JdHrnJKo$cG9Wkm>3_vW6 zCJ-)=7?c_`c>w&B%?Kh7;QGb}aNS4Q0E?523(SQJh{9YP_rV#!ALe5VqTbiXKYXA0 zeINVg`-zjtNvzM;*ZYL?etZ=*7izC?FT`Jb5AV?LgN0Jh1h?G(g)NJ#B%U#RXS*HRwOwH|LErtv zZGQT#V4ZkNV*xk;@_>0eUQ|60wLoS-5evfoDi2t{tM&u47l7g3Zg07>eo7309*7u# zJOC~b{)v5Oxh~P9*ovy6Mjt~UmFmGxw!8$&VW5o!#>~tJ?ecIEn1ZH z|33cH#r@bxI6t_PFz4_4e$)G)zv8&Czw~Hs*s#Gh>Mb0;^mbL38BgQ@Z~%V%kN;2l zevAD@3$D5!@d4ES4FA-H-~jtQ)GpHZS0(2IP zc|GcV#`%To{q*?~kC@gMzSZaa*stl)$<%YlDW3zL(ehWs{{jC8{x$Cx-cNad;Rmr3 z*bKNoYJcFL{2%;RYueAv?bS^C{Cv*8s<97F3h9f@gb{np@L!d)KC|K89xo>DdExbs z-1cYRaoe5=>;N_ZUXXeKnjmI{5(6*~5}$z2;CsLJ-p-L)0OEkFZ@$AVUA8<$4?tfK zF#vuD8-P#3H_;;uPi@-3d~JZw2}b1uQJAaB``WZ=qxm-Vj;Qwq|Jkr_wSJ5Hea?^9 zrJjn`k9>;j)sOqhxv;%(GRs!1ba!_euX!AKyy74Kul!%Y|C8@0@sIDf*q^$;{Ec$| zQu|BdU;2OAx9#Gz-k;?BgS`J@;J=hJ!Qrf`de*05Jlk!daSt;Ac0Tv6t{rlV9oQ_n z0C@oQz*$?LR~~>EfL_ob2A~$$JLm~U5A5{=SRO!M5H%*74Fd0Ec>whQ;{xEOj1Od1 z4f6tXwESt z596X#Gr=#_+}}R`fG+I{nhA=(c=pu~-LBK`xm~B;Q#*hSfDc?Hc>wi5G=bCt-~oad zU~<+N06Q>Y^3>#P0D6O|2U;FLJpe8MZ6I+fK8x5D8vvi}+kmh($matx*?@F0_oamY zg$oxZ`A&=Zjqfw;lk;ba`{7XVP3S9)?rT4iFE(39J_`04|XJU^Icu2V@=$S`qv}k_V8v zKv6uv4K?m@Yu2u`%d`RMY(O|4=+&!NWZZqJ*Z{+SKG=sV zA?~-?esEG;qvTT5R;cw6W5K;r>s!8jg{#*|YIcHKxVsAc3;!>?UYPsSnx7Z@!x69_ z1U>)Q55>Rq{=x-6Ci_v*<7Ya5w0;*O?l&B8+o5#}-6LnMTzh=}I2L&;=huIqOX=rD z{oA~kCo7A(+uN0i2g&uuwB zwLX8Yr)m7bKKu#ijq^u5g&HY8&=g0nN zfY1VB7pM)W<{$14?qBe){GYtmeQo+H=XbH{ed+Mmr%e-g|NZyJx;k{|;MUBaamnJJ zb5YD^?%b`n+jr(eUDyF^0DJ&k0C@mhAp3_gBUCkk5*r430GSOUGau0dgf+p&1&kW| z|JytB|EkL?kI%22`l2(nQ#+;BX)TI_3RJKlo5(6ekVQxWgf(E0uqA}B$r=RN1QHNr z2U%nj0l}8GDq`)7?Kti9?|J6D&-b2hp8L%Wi-KJ6@OnM3OOkuP_vV}P`JB&Lp7Z4I z54K!@aRB*1s|#Yo%nLxzk`u(&S)Z`=2V~=cEC*zHAj<{B$LyP?hJUxY0Q}zw`{et; zK71I*{IVJvbH1|jEPg?h1l%MxYwZHWI5&KJ?pc(&DRYP>{JGSU_ zzvKPZ@SeS2P1R*#&)HAIp7-H^&r}P*0ptUz2@(e|BZOQa^+57O_z`Bnu{W4~0r7lL z!#|IYwC^0&uTSO#*&bob2ihJ1>=zEej}gaG7a%`DZHxXkd>}b+@L@dySuK#w3m6X+ z(gayvAf_f(q-OVRaRK;8*I2HvHSDuz+GhGt=g(?>?j3xJ-v|5573erHna`#87yXZJ zx7a_e`xnUjrP^QWg4F#r_m}hkV4RS}fBZFC13ZyG zypuTt&T%vB^E+9*pY{9nNz*5V=I4IEjn>~|vwXO(>t!DE%9Sg_^CPC{+(!Cyz(4)^ z7W-@6FU|W!zF+v986auTkLUw(sTW z4_Z8cCN?b)=LNF)L3rS1xWG7}wMTTxoyZ^7*Vm_Wyt3Gj<9)Et?+^Cl8ebvo4=t_K z+6;4B6a1I!-v{5Vb-y(4CpCY`^`YbP`hDs7q3%cQFVAJK0I$=&!M@W%&4_+F(~r46 z#gOm6m+@ANpMCe*72)88Kk3^4!RKMG=mBzq)C9-{ut$*d1II1hr#%7K4?cqZV0u+Q4pJ{*W1Vm}XjM17xoN1qkBzE!JMg|U-o>Y44- zW)=Sun-Tk~_Lux!p6{pMCx`tM|K$Be(=ivMCH`lG!7q*u#n9(djJUaPKGVd0;lPQD z;n2k|lmpNL#sSm>$OW)RkltYC1aVd*nvwdj&I*_Pft(ePof8;yK(%`(9iGy`N1p?#9WZ&1Jek%^2jw<n% zPU?5X^tyu zK%5gq2cU1Ucl@1c0cwP30kklEuha>_3^75>0~Qz1TN7&nxFE|1hUc4kwAW`J>BphZ zwxp!wrn#WDwpME!@m@ai95%m;y*&7Q;vjesP9!fu4t3L}Ozto>&WG@V*8OArlmC|(VDj*ibe1=u^pTpRYek_)$(Am#z$0`|+p1Jn!91g&vF7RxvDHJrlY zn%2L^d$7PWb!UFY`@>47NbR-1?#E<4>yKp)XX^W@`AMyg++DNomwdlyeg00& z_oSCIKlV>@e~N#}|M9xV233U>V_wiX-k$F(E}dQox3}|qZ`V!<$3FV+WC;(T2TTXh z8^HV^%?C<}=^Goi}{6F{?4Ny5^cyr7zajNV7?-mE_ ze``}X{@X8g!3F4nm;(Z2jQ}4>&rr+*Ut6&yR zFkUcjfFFz_?EgISbC&sd>)qjcTo=CKec&GUG@|k0BY26=Wczl|`NT5B_~;sbCw@nI zBhW*fuWWjs9DiN?qR_GTFzvTs78^Ae&fZbq-&Nv%sl!l@MfbzQ7W0$uv-ACk)xbYG zKy!b&y1(ZBQ~b{h1750V#=gh=MU|twoqqm$*J_k{z`Mu9E`Rrza3aS8Z~%Eh@&WV* zF*hi#3G|q{LHCrPJ;_5Qb-^2R0CU7=&7P+=PhQaCfkIkzma09sA!&>>Dras2Ukg$ee(a zSN@_4J&?x%(jUZrVK{)Wh|Aunlr^muQ4J+VFU3ZD<{f{wx8lk)`k@E&zNd_J{3^gcQM;bSL;A3fef z_gYY2Nqv7#_j4BCPl@?uj}O{Q_x6gOkFn2r4y+XaQSP7k0ImT4?S{+`OUDj!>=#*G z&hU6Q9(UKj8ctvNGMxVXUzG#U1II)MP#aJkARM5*0Wvd$y@DwRNM2cWfaub^bA&VV z!?QfVo`Lzb3)K&1wE)`KY6Qju78h8pz%&8AHRb|z0X=kJkvM@mA~^#%0sjnU@zvlL zZeW4u?Be_6?RYM)F|2bPI0oIp{v5c6d8cR+a+YX(dYs8)kkg29PkxVi9p>}F{=Aw6 z;Xk_#lzD5vk$h_R)c0%L&zYMR^Hb}ye4oVa%xM7oDYJdx6nNM-&_?=|KWd2iZH6%?FIBe@D*~#}~1e z9F0ny`iJd%>seyg>k~8{ATKak<_M4rqy9~epfw(_njt(8a{>O=a)$5$^#gn{xkKXw z;sxUcxPjOKEZf45+y4#YJfGKrb*{tp;2L_Ch(~x|vpChQ`;xQQcwh4ToZXAhXLd7ln|Oo+ zV*ICP{4n!FbXxxrGs0WrCCBgaeyjFxIQY&!R=g079Xb-;|M;tL_K#mBJRn+t+#vNq z_6$%Pq%OdoVXX_~W(Z?%)RfxF{0RC~h+%*5%PuX>6gJ#vAD`;lD=b{JM72O697WZ{ovP5`qkxB(2q54O+__J4cic|0FJ0qa~3-2vX=9^T(DkFSTf4EOkZ zaF5n!P7gjGj(fBdeN#_`HZoW32QpVB!M^DJEcVs!i{?+`{amh3uupuCujlL*_Gz-< zfY$I2H$OLGcGxt&uVdeR{|&jXangYB-bwLwpZssi184zq0^|kRGeDnU+#fK0**={g z#<}wJmyn}IyJ~IVSKX5{#R{A!kmUfrex}C@=}eKB2f!FTg!tH)3&^R1MHYUTx;pp- zr?%h*;|DMtbA)jP_~!ro+?HXT>vDbY&U^D24D;kKV%!tso7TtY&y-oIPju;{HB$CZ z5*sm7iJ1x-^QYLCcwaUDD>~CFt?}jR`{;RMeSCelN$WKS%e*H34;Qq+ztsQe|9NI) zZCE$1zt;A>zW?2-?|)q#(^Od!PM`ZId>|ZPJYewvc|m#v*f+==LHY!1wwwx+Rvgs% zLHH(gD)A~g0eV+79uS-V{=c_xwMQV!1y4WQJIt(}t8szl2P`(oa)IRvz$Yu_1aO;O z;5oZ^4zFX`b-1qK9quvA^EvoT#4HxyXK_EHYF6m{TtD3_^}tV`&^{@8rdwiP>U@$n zK{HWL)%t#4+0Q5O6#Y7AcWV3SeSAHb?`7AauML&^gZtn=BeXZd~g1~X2HTRV5s2uQTZK3?|lC!?UeH#Xxl;eOMv|}-hbkG zovj2v($@=D($~ifFXAZ6@uR8m?S}h4m74;qm-J%60es*5KOBKZ;5E;VSri(^4f38o z$Nnv2-?%_I-~-`+s|g372gnVe1;`1I7o<@PAJNCae_VYME zVu1@+|DN&yT7Vh>^#O7MTB>yzW}qdx!N=z7p5xW;#o_X^ zA<7?*cj^{?*`bTBeBYjb?eu-b|EIVo&NtjkPoLsm>Y&Y9pMIXWuGd`Cr+1$?9!!IK zFwg7-TZ5~&>GuZ6UTpM0pXr;l_ktcQasVSLYQp9T{T%!5_wT3;9BtejE(r(3Jb)G; zH%L4X*9SOj3@uQ<{jBy4bKWp^jZS4>DtRt^Ah|E)0om^cX6PG0JL}Bx8}t&VILu)G zPJf@=MS}bGIu})I`t}UVrA|0)^`cB^vW>1>rxObobt=quvx#i*f zrH{kq&;OC~fW-t^Ens;8&K_qUA!iOUTa2>?@Ok8|(F4Q<-hPXYj%c_ zatHb!8~U#vX{aZIaBsn@-ukBG=Rkbx4*_S6FlUr=hu{J90CtZKCZC0$BsQQP zPF+0Vg5=yQYG?Rb>WJjk(FfEM(FpX{&|g5@KwSa+l9NL>kW*-0@-^6I$vk82%M(7q zufr`|i)-qhJmH*l78mn4a{F?%ekXbS1oO!}u4FEUoVzP}hCO;{8-5>h_KC)CQoj!7 z#|q}jiR3Mrvjh+Db9fOAkl?>544b_*%&)9;pYM9V=xkue^b*kmhr&mH`bQoQ5EB&2 z57IkGoq(PJ;{oCVdI-S-nitHV3Fu|z>^kKF(FN4Y*%OO4U=A5Q1z-|RAohkAz$@Iq z8OG!iz;UvA%OflIwfyYCC;FdYstV~$8KV5vyQZC4GK&$~K%w7}LO?s*5{_gIB zi^B&O%im$|;;L}r@+T<|P%FsB1lBi1&w%oP%oaco&__&ufIJ~{MyMNt8MHFG87{!5 z;#=vD#n+~1SPLGN6C~~?kBDz3hrm80_yLWMZlLcVUGg>G*PqMtz&LzDJ%Vcx!*flv zhn|rovvgL$ycEM?o7@U&}pOCX7?%-PZcC-ha)4Ot`@{iT)_zbG+<@4ab!8^GOa84{ULq0E`IbM8^ zpYfbL4#;VMsdbyfs>*WL`X1-s7dAkC@Zy!vQy#FG!0Lt8H=zAPxtU|^DR}2>az;6Q zMD!CH7tl|{*(9@ME;%@Y575o{UE*x~F#Z@`pid5Nu)VTy1bue#;(NBI9)AwT>93(C z!F9;HlaB!FSv}8t8`i-%aSL-&`E1NbvBlS%tH{r)-Z-j!5OV<6nYwIOSoYcs*ZPk8 z`vUi|E@_}2*n#f$IpGoHh9 z;Q`|S(*dupcqc5Yo)xxE9B|+L-D4Z@|KFQB{&xP|5*}C?hs103o`h43SEyB>JF?sob3pBe zcf<0<%frU$qaE`e-@6SIvH|gj`)pEAyT=DfD+q=ydvU&erLAzjY!9Ix(j_=tW&RxEm&K{zdun-SWJ0MqJy1=-A znj*0R^#u4}&-Gip$B3fKoc;Zj2OXm z!L4#ZmIu%U=z)|2_Ff3aX=auSR zXq1@Y?YZN_-qrPC&zi;IKvScx!$(eqLr2eqgYU{ZawZ%)_p!zV2hU#%dk>xrdk(x8 zcJDnJ-rl?=?3A@b&hBYiRvQ|Z%33rhY@byYwof1Kf9E3kI~S85^3UR0$8ErEz-_>7 zz-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7 zz-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7 zz-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7 zz-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7z-_>7;8twlpZuTS z0lx!&2mB8B9q>Egcfjv}-vPe^eh2&x_#N;&;CI09fZqYX1AYhm4)`7LJK%S~?||O{ TzXN^;{0{gX@H=qN-+})JAm6JW literal 0 HcmV?d00001 -- 2.20.1 From a697b3d25f51aa781aa3f08762efba3395f26c26 Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 28 Jul 2010 11:52:26 +0000 Subject: [PATCH 08/16] Prise en charge de l'analyseur de logs dans l'installateur Windows. git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@301 fe552daf-6dbe-4428-90eb-1537e0879342 --- minwii_installer.iss | 1 + setup_win_exe.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/minwii_installer.iss b/minwii_installer.iss index 26feec8..7f7507b 100644 --- a/minwii_installer.iss +++ b/minwii_installer.iss @@ -36,6 +36,7 @@ Source: "chansons\*.mscz"; DestDir: "{app}\chansons" [Icons] Name: "{group}\MINWii"; Filename: "{app}\runminwii.exe" Name: "{group}\MINWii (mode fenêtre)"; Filename: "{app}\runminwii.exe"; Parameters: "--no-fullscreen" +Name: "{group}\MINWii analyseur"; Filename: "{app}\logapp.exe" Name: "{group}\Désinstaller MINWii"; Filename: "{uninstallexe}" Name: "{commondesktop}\MINWii"; Filename: "{app}\runminwii.exe"; Tasks: desktopicon diff --git a/setup_win_exe.py b/setup_win_exe.py index 2e3cd98..9b0807a 100755 --- a/setup_win_exe.py +++ b/setup_win_exe.py @@ -161,7 +161,7 @@ class BuildExe: }, { 'script' : "src/minwii/logapp.py", - 'icon_resources': [(0, self.icon_file)], + 'icon_resources': [(0, 'logapp.ico')], 'copyright' : self.copyright } ], -- 2.20.1 From 323c312f13c8d50918c0b8e6350454e6112487ab Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 28 Jul 2010 14:11:21 +0000 Subject: [PATCH 09/16] =?utf8?q?Bizarrerie=20Windows=20:=20il=20n'arrive?= =?utf8?q?=20pas=20=C3=A0=20virer=20un=20fichier=20imm=C3=A9diatement=20ap?= =?utf8?q?r=C3=A8s=20lui=20avoir=20demand=C3=A9=20sa=20taille=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@302 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/logapp.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index b10ca16..323e293 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -26,7 +26,7 @@ class Application(Frame) : self.resultsFrame = None # debug - self.chooseDirDialog(dir='/Users/pinbe/minwii_logs') + #self.chooseDirDialog(dir='/Users/pinbe/minwii_logs') def configureStretching(self) : top=self.winfo_toplevel() @@ -76,19 +76,23 @@ class Application(Frame) : def _cleanupJunkFiles(self) : files = [] + junk = [] while self.logFiles : f = self.logFiles.pop() if not getsize(f) : - os.remove(f) + junk.append(f) continue else : lfa = LogFileAnalyser(f) if lfa.getLastEventTicks() is None : - os.remove(f) + junk.append(f) continue files.append(f) + for f in junk : + os.remove(f) + self.logFiles = files -- 2.20.1 From 3a63a57ad7692cd3da1818b6b22002c113dd62f0 Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 28 Jul 2010 17:07:04 +0000 Subject: [PATCH 10/16] =?utf8?q?ok,=20=C3=A7a=20le=20fait=20l'erreur=2032?= =?utf8?q?=20Windows=20=C3=A0=20la=20con.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@303 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/logapp.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 323e293..950a478 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -13,6 +13,7 @@ import os from os.path import join as pjoin from os.path import basename from os.path import getsize +import os.path from minwii.loganalyse import LogFileAnalyser from pprint import pprint @@ -65,34 +66,34 @@ class Application(Frame) : else : self.logDir = dir if self.logDir : - self.logFiles = glob(pjoin(self.logDir, '*.log')) - self._cleanupJunkFiles() - self.logFiles.sort() - self.logFiles.reverse() - self.dataFrame.grid(row=0, column=0, sticky=NW) - self.nav.setSize(len(self.logFiles)) - self.nav.grid(row=0, column=1) - self.loadLogFile(self.nav) + self.logFiles = glob(pjoin(self.logDir, '*.log')) + self._cleanupJunkFiles() + self.logFiles.sort() + self.logFiles.reverse() + self.dataFrame.grid(row=0, column=0, sticky=NW) + self.nav.setSize(len(self.logFiles)) + self.nav.grid(row=0, column=1) + self.loadLogFile(self.nav) def _cleanupJunkFiles(self) : files = [] - junk = [] while self.logFiles : f = self.logFiles.pop() if not getsize(f) : - junk.append(f) + os.remove(f) continue else : - lfa = LogFileAnalyser(f) + of = open(f) + lfa = LogFileAnalyser(of) if lfa.getLastEventTicks() is None : - junk.append(f) + of.close() + os.remove(f) continue + else : + of.close() files.append(f) - for f in junk : - os.remove(f) - self.logFiles = files -- 2.20.1 From 9d54560da837e13b9f6fd3705c4db1616ab73d1a Mon Sep 17 00:00:00 2001 From: pin Date: Thu, 29 Jul 2010 12:00:29 +0000 Subject: [PATCH 11/16] =?utf8?q?Ouverture=20par=20d=C3=A9faut=20du=20dossi?= =?utf8?q?er=20courant=20des=20logs,=20s'il=20existe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@304 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/logapp.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 950a478..555c9fd 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -15,6 +15,7 @@ from os.path import basename from os.path import getsize import os.path from minwii.loganalyse import LogFileAnalyser +from minwii.config import LOGS_DIR from pprint import pprint class Application(Frame) : @@ -26,8 +27,8 @@ class Application(Frame) : self.logFiles = [] self.resultsFrame = None - # debug - #self.chooseDirDialog(dir='/Users/pinbe/minwii_logs') + if os.path.exists(LOGS_DIR) : + self.chooseDirDialog(dir=LOGS_DIR) def configureStretching(self) : top=self.winfo_toplevel() -- 2.20.1 From e26d95d9dbadcbfcd71e6569b277dd4b8888582d Mon Sep 17 00:00:00 2001 From: pin Date: Thu, 29 Jul 2010 15:57:35 +0000 Subject: [PATCH 12/16] =?utf8?q?Enregistrement=20des=20m=C3=A9tadonn=C3=A9?= =?utf8?q?es=20des=20patients.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@305 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 4 ++-- src/minwii/logapp.py | 46 +++++++++++++++++++++++++++---------- src/minwii/logfilereader.py | 37 +++++++++++++++++++++++++---- 3 files changed, 69 insertions(+), 18 deletions(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index 1a1f676..ec1b025 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -16,8 +16,8 @@ from datetime import timedelta PLAYING_MODES = dict(PLAYING_MODES) DEFAULT_STATS = (#'geometricmean', - #'harmonicmean', - #'mean', + ('harmonicmean', 'Moyenne harmonique'), + ('mean', 'Moyenne '), ('median', 'Médiane'), #'medianscore', #'mode', diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 555c9fd..a97e849 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -25,6 +25,7 @@ class Application(Frame) : self.createWidgets() self.logDir = '' self.logFiles = [] + self.currentFilePath = '' self.resultsFrame = None if os.path.exists(LOGS_DIR) : @@ -101,12 +102,14 @@ class Application(Frame) : def loadLogFile(self, nav) : index = nav.index - 1 filepath = self.logFiles[index] - filename = basename(filepath) - self.identFrame.setFileName(filename) + self.currentFilePath = filepath + lfa = LogFileAnalyser(self.currentFilePath) + self.identFrame.refresh(lfa) if self.resultsFrame : self.resultsFrame.destroy() - self.resultsFrame = ResultsFrame(self.dataFrame, filepath) - self.resultsFrame.layResults() + self.resultsFrame = ResultsFrame(self.dataFrame) + self.resultsFrame.layResults(lfa) + lfa.close() self.resultsFrame.grid() @@ -170,10 +173,19 @@ class Identification(Frame) : def __init__(self, master=None) : Frame.__init__(self, master) self.fileName = StringVar() + self.patientName = StringVar() self.createWidgets() - def setFileName(self, name) : - self.fileName.set(name) + #def setFileName(self, name) : + # self.fileName.set(name) + + def refresh(self, lfa) : + filename = basename(lfa.logfile.name) + self.fileName.set(filename) + metadata = lfa.getMetadata() + self.patientName.set(metadata.get('PatientName', '')) + self.commentsText.delete(1.0, END) + self.commentsText.insert(1.0, metadata.get('Comments', '')) def createWidgets(self) : fileLbl = Label(self, text='Fichier :') @@ -185,7 +197,7 @@ class Identification(Frame) : nameLbl = Label(self, text='Patient :') nameLbl.grid(row=1, column=0, sticky=E) - self.nameEntry = Entry(self, width=40) + self.nameEntry = Entry(self, width=40, textvariable=self.patientName) self.nameEntry.grid(row=1, column=1, sticky=W) commentsLbl = Label(self, text='Commentaires :') @@ -193,14 +205,24 @@ class Identification(Frame) : self.commentsText = Text(self, width=40, height=4, undo=True, wrap=WORD) self.commentsText.grid(row=2, column=1, sticky=W) + + self.saveBtn = Button(self, text='Enregistrer', command=self.saveMetadata) + self.saveBtn.grid(row=3, column=1, sticky=E) + + def saveMetadata(self): + app = self.master.master + filepath = app.currentFilePath + lfa = LogFileAnalyser(filepath, mode='r+') + patientName = '%s\n' % self.nameEntry.get().replace('\n', ' ').strip() + comments = '%s\n' % self.commentsText.get(1.0, END).replace('\n', ' ').strip() + metadata = (('PatientName', self.nameEntry.get()), + ('Comments', comments)) + lfa.setMetadata(metadata) + class ResultsFrame(Frame) : - def __init__(self, master, logFilePath) : - Frame.__init__(self, master) - self.logFilePath = logFilePath - def layResults(self) : - lfa = LogFileAnalyser(self.logFilePath) + def layResults(self, lfa) : results = lfa.analyse() if results : for i, kv in enumerate(results) : diff --git a/src/minwii/logfilereader.py b/src/minwii/logfilereader.py index 828b085..50da29c 100755 --- a/src/minwii/logfilereader.py +++ b/src/minwii/logfilereader.py @@ -31,12 +31,12 @@ class LogFileReader(object) : classe utilitaire pour l'accès aux données d'un fichier de log MinWii. """ - def __init__(self, logfile) : + def __init__(self, logfile, mode='r') : """ logfile : chemin d'accès au fichier de log MinWii. le format supporté est actuellement la version 1.0 uniquement. """ if isinstance(logfile, StringTypes) : - self.logfile = open(logfile, 'r') + self.logfile = open(logfile, mode) else : self.logfile = logfile @@ -121,7 +121,7 @@ class LogFileReader(object) : return lastTicks def __del__(self) : - self.logfile.close() + self.close() def __iter__(self) : return self @@ -160,6 +160,36 @@ class LogFileReader(object) : while line : yield line.strip() line = br.readline() + + @inplaceread + def getMetadata(self) : + metadata = {} + self.next() # skip identification line. + line = self.next() + while line.startswith('METADATA ') : + line = line.split(None, 1)[1] + name, value = [v.strip() for v in line.split(':', 1)] + metadata[name] = value + line = self.next() + return metadata + + def setMetadata(self, metadata) : + f = self.logfile + f.seek(0) + before = f.readline() + after = f.read() + + lines = [] + for name, value in metadata : + lines.append('METADATA %s : %s' % (name, value.encode('utf-8'))) + metadata = '\n'.join(lines) + f.seek(0) + f.write(before) + f.write(metadata) + f.write(after) + + def close(self) : + self.logfile.close() @@ -232,5 +262,4 @@ class LogFilePlayer(PlayingScreenBase) : previousTicks = ticks self.stop() - \ No newline at end of file -- 2.20.1 From 3af57b5c16f81e9def6aa3e108d3395ea17ca143 Mon Sep 17 00:00:00 2001 From: pin Date: Fri, 30 Jul 2010 12:35:57 +0000 Subject: [PATCH 13/16] =?utf8?q?D=C3=A9sactivation=20du=20logging=20dans?= =?utf8?q?=20des=20fichiers=20par=20positionnement=20de=20la=20variable=20?= =?utf8?q?'WINWII=5FNO=5FLOG'.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@306 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/log.py | 53 +++++++++++++++++++++++--------------------- src/minwii/logapp.py | 12 ++++++---- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/minwii/log.py b/src/minwii/log.py index 9e40e01..e612491 100755 --- a/src/minwii/log.py +++ b/src/minwii/log.py @@ -25,34 +25,37 @@ hiddenEvents = {pygame.MOUSEMOTION:True, if not os.path.exists(logsdir) : os.mkdir(logsdir) - -class MinWiiStreamHandler(logging.StreamHandler) : - logfile = None - stream = None - env = [] +if os.environ.has_key('WINWII_NO_LOG') : + class MinWiiStreamHandler(logging.Handler) : + def emit(record) : pass +else : + class MinWiiStreamHandler(logging.StreamHandler) : + logfile = None + stream = None + env = [] - def __init__(self) : - logging.Handler.__init__(self) - if self.stream is None : - self.setNewStream() + def __init__(self) : + logging.Handler.__init__(self) + if self.stream is None : + self.setNewStream() - @classmethod - def setNewStream(cls) : - if cls.stream and not cls.stream.closed : - cls.stream.close() - logfile = os.path.join(logsdir, datetime.datetime.now().strftime('%Y-%m-%d-%H_%M_%S.log')) - cls.stream = open(logfile, 'a') + @classmethod + def setNewStream(cls) : + if cls.stream and not cls.stream.closed : + cls.stream.close() + logfile = os.path.join(logsdir, datetime.datetime.now().strftime('%Y-%m-%d-%H_%M_%S.log')) + cls.stream = open(logfile, 'a') - def emit(self, record) : - if record.name == 'minwii.env' : - if record.getMessage()=='NEW_LOG_FILE' : - self.setNewStream() - for rec in self.env : - logging.StreamHandler.emit(self, rec) - return - else : - self.env.append(record) - logging.StreamHandler.emit(self, record) + def emit(self, record) : + if record.name == 'minwii.env' : + if record.getMessage()=='NEW_LOG_FILE' : + self.setNewStream() + for rec in self.env : + logging.StreamHandler.emit(self, rec) + return + else : + self.env.append(record) + logging.StreamHandler.emit(self, record) class EventLoggerAdapter(logging.LoggerAdapter) : diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index a97e849..1210bf6 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -6,10 +6,11 @@ $Id$ $URL$ """ +import os +os.environ['WINWII_NO_LOG'] = '1' from Tkinter import * import tkFileDialog from glob import glob -import os from os.path import join as pjoin from os.path import basename from os.path import getsize @@ -237,7 +238,10 @@ class ResultsFrame(Frame) : msg.grid() +def main() : + app = Application() + app.master.title("Analyseur des sessions MINWii") + app.mainloop() -app = Application() -app.master.title("Analyseur des sessions MINWii") -app.mainloop() +if __name__ == '__main__' : + main() \ No newline at end of file -- 2.20.1 From fd41523cab5f6d32f3222dd43c299f895a582450 Mon Sep 17 00:00:00 2001 From: pin Date: Fri, 30 Jul 2010 13:24:02 +0000 Subject: [PATCH 14/16] Abaissement du niveau d'optimisation de la compilation des modules python pour conserver les docstrings (utiles dans loganalyse.py). git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@307 fe552daf-6dbe-4428-90eb-1537e0879342 --- setup_win_exe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup_win_exe.py b/setup_win_exe.py index 9b0807a..e122fef 100755 --- a/setup_win_exe.py +++ b/setup_win_exe.py @@ -166,7 +166,7 @@ class BuildExe: } ], #console = ["src/minwii/logapp.py"], - options = {'py2exe': {'optimize': 2, + options = {'py2exe': {'optimize': 1, 'bundle_files': 3, #'compressed': True, #'excludes': self.exclude_modules, -- 2.20.1 From fa75b1df8242dff846bd0fd6c2a274170892b73a Mon Sep 17 00:00:00 2001 From: pin Date: Fri, 30 Jul 2010 14:00:44 +0000 Subject: [PATCH 15/16] Affichage du titre de la chanson. git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@308 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 23 +++++++++++++++++++++++ src/minwii/logfilereader.py | 5 ++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index ec1b025..ab8c819 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -12,6 +12,8 @@ from minwii.musicxml import musicXml2Song from minwii.globals import PLAYING_MODES from statlib import stats from datetime import timedelta +from xml.etree import ElementTree +import os.path PLAYING_MODES = dict(PLAYING_MODES) @@ -73,6 +75,10 @@ class LogFileAnalyser(LogFileReader) : try : self.mode = mode = self.getMode() results.append(('Mode de jeu', PLAYING_MODES.get(mode, mode))) + + self.songTitle = LogFileAnalyser.getSongTitle(self.getSongFile()) + results.append(('Chanson', self.songTitle)) + for name in self.POSSIBLE_ANALYSES[mode] : meth = getattr(self, name) results.append((meth.__doc__, meth())) @@ -81,6 +87,23 @@ class LogFileAnalyser(LogFileReader) : return results + @staticmethod + def getSongTitle(file) : + if os.path.exists(file) : + it = ElementTree.iterparse(file, ['start', 'end']) + creditFound = False + + for evt, el in it : + if el.tag == 'credit' : + creditFound = True + if el.tag == 'credit-words' and creditFound: + return el.text + if el.tag == 'part-list' : + # plus de chance de trouver un titre + return os.path.basename(file) + else : + return os.path.basename(file) + def _toTimeDelta(self, milliseconds) : duration = milliseconds / 1000. duration = int(round(duration, 0)) diff --git a/src/minwii/logfilereader.py b/src/minwii/logfilereader.py index 50da29c..a5a2d35 100755 --- a/src/minwii/logfilereader.py +++ b/src/minwii/logfilereader.py @@ -177,7 +177,10 @@ class LogFileReader(object) : f = self.logfile f.seek(0) before = f.readline() - after = f.read() + line = f.readline() + while line.startswith('METADATA ') : + line = f.readline() + after = line + f.read() lines = [] for name, value in metadata : -- 2.20.1 From fe914ab0f0814933a07c70bc8730bc646f722929 Mon Sep 17 00:00:00 2001 From: pin Date: Fri, 30 Jul 2010 16:34:59 +0000 Subject: [PATCH 16/16] Ajout de l'affichage des erreurs en fonction du temps. git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@309 fe552daf-6dbe-4428-90eb-1537e0879342 --- src/minwii/loganalyse.py | 66 +++++++++++++++++++++++++++++++++++----- src/minwii/logapp.py | 33 +++++++++++++++----- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index ab8c819..f3e5e32 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -44,29 +44,41 @@ def statsresults(m) : computeList.__doc__ = m.__doc__ return computeList +def timebased(m) : + m.timebased = True + return m + class LogFileAnalyser(LogFileReader) : POSSIBLE_ANALYSES = {'BEGINNER' : ('songDuration', 'playingDuration', 'noteEndNoteOnLatency', 'realisationRate') + ,'EASY' : ('songDuration', 'playingDuration', 'noteEndNoteOnLatency', 'realisationRate', - 'missCount') + 'missCount', + 'getMissPerTimeFrame') + ,'NORMAL' : ('songDuration', 'playingDuration', 'realisationRate', - 'missCount') + 'missCount', + 'getMissPerTimeFrame') + ,'ADVANCED' : ('songDuration', 'playingDuration', 'realisationRate', - 'missCount') + 'missCount', + 'getMissPerTimeFrame') + ,'EXPERT' : ('songDuration', 'playingDuration', 'realisationRate', - 'missCount') + 'missCount', + 'getMissPerTimeFrame') } def analyse(self) : @@ -74,14 +86,14 @@ class LogFileAnalyser(LogFileReader) : try : self.mode = mode = self.getMode() - results.append(('Mode de jeu', PLAYING_MODES.get(mode, mode))) + results.append(('Mode de jeu', PLAYING_MODES.get(mode, mode), False)) self.songTitle = LogFileAnalyser.getSongTitle(self.getSongFile()) - results.append(('Chanson', self.songTitle)) + results.append(('Chanson', self.songTitle, False)) for name in self.POSSIBLE_ANALYSES[mode] : meth = getattr(self, name) - results.append((meth.__doc__, meth())) + results.append( (meth.__doc__, meth(), getattr(meth, 'timebased', False)) ) except : raise @@ -202,6 +214,46 @@ class LogFileAnalyser(LogFileReader) : miss = miss + 1 return miss + + @timebased + def getMissPerTimeFrame(self, timeFrame=10000) : + "Nombre d'erreurs en fonction du temps" + eIter = self.getEventsIterator() + firstTicks = self.getFirstEventTicks() + frames = [0] + + if self.mode in ('EASY', 'NORMAL') : + catchColUp = False + for ticks, eventName, message in eIter : + if ticks - firstTicks > timeFrame : + firstTicks = ticks + frames.append(0) + + if eventName == 'COLDOWN' : + colState = message.split(None, 2)[1] + colState = colState == 'True' + if colState : + catchColUp = False + continue + else : + catchColUp = True + elif eventName == 'NOTEON' : + catchColUp = False + elif eventName == 'COLUP' and catchColUp : + frames[-1] = frames[-1] + 1 + else : + for ticks, eventName, message in eIter : + if ticks - firstTicks > timeFrame : + firstTicks = ticks + frames.append(0) + + if eventName == 'COLDOWN' : + colState = message.split(None, 2)[1] + colState = colState == 'True' + if not colState : + frames[-1] = frames[-1] + 1 + + return frames diff --git a/src/minwii/logapp.py b/src/minwii/logapp.py index 1210bf6..1bbebd4 100755 --- a/src/minwii/logapp.py +++ b/src/minwii/logapp.py @@ -177,9 +177,6 @@ class Identification(Frame) : self.patientName = StringVar() self.createWidgets() - #def setFileName(self, name) : - # self.fileName.set(name) - def refresh(self, lfa) : filename = basename(lfa.logfile.name) self.fileName.set(filename) @@ -226,13 +223,33 @@ class ResultsFrame(Frame) : def layResults(self, lfa) : results = lfa.analyse() if results : - for i, kv in enumerate(results) : - k, v = kv + for i, kvt in enumerate(results) : + k, v, timeBased = kvt kl = Label(self, text='%s :' % k) kl.grid(row=i, column=0, sticky=E) - - vl = Label(self, text=v) - vl.grid(row=i, column=1, sticky=W) + + if not timeBased : + vl = Label(self, text=v) + vl.grid(row=i, column=1, sticky=W) + else : + maxv = max(v) + if maxv : + cw, ch = 200, 100 + c = Canvas(self, background='#fff', width=cw, height=ch) + rectW = int(float(cw) / len(v)) + unitRectH = float(ch) / maxv + for j, fv in enumerate(v) : + if not fv : continue + x0 = j * rectW + y0 = ch - int(unitRectH * fv) + x1 = (j + 1) * rectW + y1 = ch + c.create_rectangle(x0, y0, x1, y1, fill="#9085ba") + c.grid(row=i, column=1, sticky=W) + + else : + vl = Label(self, text='—') + vl.grid(row=i, column=1, sticky=W) else : msg = Label(self, text="Pas de données exploitables.") msg.grid() -- 2.20.1