diff -Nru pmw-4.29/debian/changelog pmw-4.30/debian/changelog --- pmw-4.29/debian/changelog 2018-08-08 23:54:26.000000000 +0000 +++ pmw-4.30/debian/changelog 2018-08-08 23:54:26.000000000 +0000 @@ -1,3 +1,9 @@ +pmw (1:4.30-1) unstable; urgency=medium + + * New upstream release + + -- Wouter Verhelst Wed, 08 Aug 2018 17:22:53 +0200 + pmw (1:4.29-2) unstable; urgency=medium * Register the spec PDF file with doc-base diff -Nru pmw-4.29/doc/ChangeLog pmw-4.30/doc/ChangeLog --- pmw-4.29/doc/ChangeLog 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/doc/ChangeLog 2018-06-15 15:50:03.000000000 +0000 @@ -2,51 +2,116 @@ --------------------------------------------------------- +Version 4.30 15-June-2018 +------------------------- + +1. If a "movement" was coded without any staves (for example, for a title + page), there was the possibility of a segmentation crash due to memory + corruption. This is a very old bug, surprisingly never triggered before. + +2. Added the "tripletize" feature, somewhat of an experiment. + +3. Allow semicolon and comma after any note, not just quavers and shorter, to + make life easier when halvenotes and doublenotes are being used. + +4. Implement [doublenotes] and [halvenotes] to alter note lengths without + affecting time signatures. + +5. Make -norepeat a synonym of -norepeats because I keep forgetting. + +6. Make "stafflines" a synonym of "stavelines" because staff/stave are supposed + to be interchangeable throughout. + +7. Added an optional thickness to -drawstavelines. + +8. Repeats in the middle of bars are now honoured in MIDI output. + +9. If there were more than 20 text strings preceding a note, PMW could crash. + The limit has been increased to 50, and a test for overflow is now in place. + +10. Arrange to free heap memory so tests can run with -fsanitize=address. + +11. If a chord was repeated multiple times by 'x' followed by a number greater + than 1, a data overrun could occur. There is now also a hard error if there + are too many notes in a chord (the limit is now 16). + +12. If a midichannel directive contained a volume setting, undefined memory was + being copied accidentally (but never used). + +13. Several code refactorizations to tidy up suspect code picked up by gcc and + clang sanitizers. + +14. "Printtime" and "printkey" directives used to apply to the entire piece; + even if set in the second movement they would affect the first. Now they + apply only to the movement they are set in and any that follow. + +15. Some other changes for "printkey": + + (a) At a mid-stave change of key, PMW used to check for C major or A minor + when deciding whether to automatically insert a previous key cancellation + signature using natural signs, though in one case the test for A minor was + missing. Now it checks for a key signature of zero width, which means that + if "printkey" defines an empty string for the new key, a cancellation + signature will be generated. + + (b) Previously, a cancellation signature took no notice of any "printkey" + setting. There is now an optional second argument for "printkey" that + specifies what to print for a cancellation. If not supplied, an empty + string is used. + +16. Added four new characters to the music font: reverse turns and half circles. + +17. Characters from the PMW-Alpha font were not being correctly included in the + documentation PDF (something changed and I didn't notice). This has been + fixed by including the type 3 PostScript font explicitly when building the + PDF from SDoP's PostScript output. + + Version 4.29 26-June-2016 ------------------------- 1. Added -norc to the scripts for running tests to ensure that the user's .pmwrc file, if it exists, is ignored. - -2. Running with a lot more compiler warnings turned on threw up a number of + +2. Running with a lot more compiler warnings turned on threw up a number of infelicities in the code. Refactoring has got rid of the compiler warnings. - -3. Compiling with clang threw up a few that gcc missed; it also found a genuine - bug, a misplaced ) in an expression. By pure fluke there appeared to be no - way of provoking misbehaviour, because what was being checked was re-checked - (correctly) later. - -4. Allow ! as a modifier to notes as well as rests. + +3. Compiling with clang threw up a few that gcc missed; it also found a genuine + bug, a misplaced ) in an expression. By pure fluke there appeared to be no + way of provoking misbehaviour, because what was being checked was re-checked + (correctly) later. + +4. Allow ! as a modifier to notes as well as rests. Version 4.28 08-February-2014 ----------------------------- -1. On a 64-bit system, stretching and shearing fonts did not work. I only - noticed when I upgraded to a 64-bit system; clearly not many people use this +1. On a 64-bit system, stretching and shearing fonts did not work. I only + noticed when I upgraded to a 64-bit system; clearly not many people use this feature. - -2. Under some circumstances, a spurious error "An input line is too long when - macros are expanded" could be generated. This showed up on a 64-bit system + +2. Under some circumstances, a spurious error "An input line is too long when + macros are expanded" could be generated. This showed up on a 64-bit system with 4G of memory, but I'm not sure which exact condition provoked it. - + Version 4.27 04-December-2013 ----------------------------- 1. If a bar containing a long rest symbol is wider or narrower than normal, - the |----| symbol is now drawn instead of using the font character. This - means it can be made longer or shorter. In particular, it is now possible to - have one long bar right across the page as is common in instrumental parts - for tacet movements. - -2. Updated font-handling to add the remaining Unicode characters in the Latin-A + the |----| symbol is now drawn instead of using the font character. This + means it can be made longer or shorter. In particular, it is now possible to + have one long bar right across the page as is common in instrumental parts + for tacet movements. + +2. Updated font-handling to add the remaining Unicode characters in the Latin-A extended font, together with the infinity character, all of which are present in modern fonts. - -3. The PDF index in the manual now has clickable links to the individual letter - headings in the index. - + +3. The PDF index in the manual now has clickable links to the individual letter + headings in the index. + Version 4.26 05-March-2013 -------------------------- @@ -55,14 +120,14 @@ pointers in the same table (space-saving back in the 1990s) which caused trouble on systems where addresses could be negative and in any case is bad style these days. In fact, the additional space used is very small. - + 2. Removed a number of unused variables that were thrown up by the warning -Wunused-but-set-variable in a modern gcc. - + 3. If a mid-stave bar at the start of a system starts with both a time change and a key change, it is now possible to have just one of them as a warning at the end of the previous system. - + 4. Added [no]codemultirests. @@ -70,50 +135,50 @@ ---------------------------- 1. Allow tremolo markings to be moved up and down (but not left and right). - The syntax is odd (e.g. G\//d4\ moves a single tremolo down 4) but it is + The syntax is odd (e.g. G\//d4\ moves a single tremolo down 4) but it is consistent with everything else. - -2. In read2.c there was a local variable called oo, which could be confused + +2. In read2.c there was a local variable called oo, which could be confused with the macro oo in that module - a shorthand for offsetof. The variable is renamed, and a couple of explicit offsetof appearances now use the macro. - -3. When writing a MIDI file, simple "scrubbing" (single or double tremolos) on - minims and crotchets (possibly dotted) is now recognized. Previously the - notes were played as single long notes. + +3. When writing a MIDI file, simple "scrubbing" (single or double tremolos) on + minims and crotchets (possibly dotted) is now recognized. Previously the + notes were played as single long notes. Version 4.24 23-March-2012 -------------------------- -1. There was a bug in the debugging code invoded by -dsb (used only by +1. There was a bug in the debugging code invoded by -dsb (used only by developers) which caused it to generate incorrect output for some ornaments. - + 2. On 64-bit systems, if there was more than one ornament on a note or chord - (e.g. arpeggio plus fermata), only the first of them was shown. - -3. Fixed a uninitialized value in the data block for certain ornaments. + (e.g. arpeggio plus fermata), only the first of them was shown. + +3. Fixed a uninitialized value in the data block for certain ornaments. 4. In rare circumstances, when a specific item happened to occur right at - the end of a memory block, the code for moving on to the next block was + the end of a memory block, the code for moving on to the next block was incorrect, and so the output was not right. These are specific cases: - + (a) Amalgamation of a right repeat immediately followed by a left repeat. - - (b) A final first time bar at the end of a line: the terminating jog might + + (b) A final first time bar at the end of a line: the terminating jog might be missing. - + (c) Beam breaks on 64-bit systems. - -5. The structure lengths for "assume time", "assume key", and "assume clef" - were incorrect. This could lead to overwriting for "assume time" - by luck - the other two were not affected. The only visible effect was small + +5. The structure lengths for "assume time", "assume key", and "assume clef" + were incorrect. This could lead to overwriting for "assume time" - by luck + the other two were not affected. The only visible effect was small positioning variations when systems were stretched. - + 6. Code for advancing through a chord would have gone wrong on 64-bit systems, but for the lucky coincidence that the length of the structure involved - happens to be a multiple of 8. There was a similar issue with the code for + happens to be a multiple of 8. There was a similar issue with the code for linking between multiple memory blocks. - + Version 4.23 ------------ @@ -123,29 +188,29 @@ 2. Updated the documentation Makefile to ensure that (a) it uses the local versions of PMW's font metrics and PostScript header, and does not look for - installed versions, when building the PMW examples; (b) the PMW fontmetrics - are made available to SDoP when it processes the spec. This is done by - making a fontmetrics directory containing only those files rather than just - pointing SDoP at the main PMW directory, for two reasons: (1) PMW also uses a - PSheader file, which SDoP picks up in error (the main reason), and (2) we - want SDoP to use its own fontmetrics for other fonts. - + installed versions, when building the PMW examples; (b) the PMW fontmetrics + are made available to SDoP when it processes the spec. This is done by + making a fontmetrics directory containing only those files rather than just + pointing SDoP at the main PMW directory, for two reasons: (1) PMW also uses a + PSheader file, which SDoP picks up in error (the main reason), and (2) we + want SDoP to use its own fontmetrics for other fonts. + 3. Changed documentation to suggest making two symbolic links for the PMW fonts - intead of a single directory link, which does not always work. + intead of a single directory link, which does not always work. Version 4.22 re-release ----------------------- -There are no changes whatsoever to the code, just to the packaging and the +There are no changes whatsoever to the code, just to the packaging and the documentation: 1. Added support for DESTDIR to the Makefile. -2. Reformatted the specification using the latest version of SDoP, which turns +2. Reformatted the specification using the latest version of SDoP, which turns cross-references and index page numbers into clickable links in the PDF. - -3. Added some newly contributed files to the contrib directory. + +3. Added some newly contributed files to the contrib directory. Version 4.22 @@ -166,10 +231,10 @@ 4. Tidied up the copyright string, which for some crazy reason appeared twice in the source code. Added "Built" to the date that is shown by -V etc. - - 5. When righttoleft was set with -eps, the bounding box values in the EPS file + + 5. When righttoleft was set with -eps, the bounding box values in the EPS file were incorrect whenever the magnification was not 1.0. - + 6. When a layout directive caused a system to be squashed to fit onto a line, underlaid words could crash into each other because of the squashing. (Bars are initially spaced to avoid underlay crashes, but this did not take @@ -180,31 +245,31 @@ values 0, 1, or 2; oldstretchrule (dating from a much earlier change) is equivalent to setting stretchrule to 0. The default is 2, and 1 is the situation prior to this change. - + 7. Related to 6, when PMW was adjusting note spacing so that underlaid syllables did not collide, it was ignoring leading and trailing # characters, treating them as spaces (which of course, they print as). However, this means that using # to move a syllable left or right did not work as expected. It now ignores leading and trailing spaces only if they are actual space characters. - + 8. Updated the AFM files in the fontmetrics directory to later versions that - include additional characters in current versions of the text fonts. - - 9. When a bar was not of the correct length, the error message always said it - was too long, even when it was too short. I am amazed nobody has noticed + include additional characters in current versions of the text fonts. + + 9. When a bar was not of the correct length, the error message always said it + was too long, even when it was too short. I am amazed nobody has noticed this bug before; it was introduced by change 30 of version 4.20. - -10. Allow /u, /d, /l, and /r in strings for drawing calls. + +10. Allow /u, /d, /l, and /r in strings for drawing calls. 11. Add -MF to allow overriding of the directory in which the music fonts are stored. - -12. Process the files in the testdist directory with -includefont (requiring - the new -MF option) so that the output can be directly viewed in + +12. Process the files in the testdist directory with -includefont (requiring + the new -MF option) so that the output can be directly viewed in environments where the fonts are not installed. - -13. Added ||| to print an "end-of-piece" barline in the middle of a piece. + +13. Added ||| to print an "end-of-piece" barline in the middle of a piece. 14. Added /), /(, /b, and /B for bracketing expression marks and ornaments. diff -Nru pmw-4.29/doc/examples/ex47 pmw-4.30/doc/examples/ex47 --- pmw-4.29/doc/examples/ex47 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/doc/examples/ex47 2018-06-15 15:50:03.000000000 +0000 @@ -1,9 +1,10 @@ +justify top left key G +printkey G treble "\37\" "\40\" printkey E$ treble "x~\39\x~\191\ww\191\" printkey E$ bass "~\39\x~\191\ww\191\" -printkey G treble "\37\" [stave 1 treble 1] -GG | [key E$] GG [bass 0] | [key E$] GG || +GG | [key C] GG | [key E$] GG [bass 0] | [key E$] GG || [endstave] diff -Nru pmw-4.29/doc/examples/ex56 pmw-4.30/doc/examples/ex56 --- pmw-4.29/doc/examples/ex56 1970-01-01 00:00:00.000000000 +0000 +++ pmw-4.30/doc/examples/ex56 2018-06-15 15:50:03.000000000 +0000 @@ -0,0 +1,14 @@ +*define 3a() [slur/a] {/u6 &&1-&&2-&&3-}; [endslur] + +Key B$ +Time 2/4 +Notespacing *1.3 +Unfinished + +[stave 1 treble 2 triplets above nobracket] +&3a(f,e,f,) &3a(d,c,b`) | &3a(f,e,f,) &3a(d,c,b`) | +[endstave] + +[stave 2 bass 0] +"Default"/a/u8 f-.g=; a-.b=; | [tripletize] "Tripletized"/a/u8 f-.g=; a-.b=; | +[endstave] diff -Nru pmw-4.29/doc/Makefile pmw-4.30/doc/Makefile --- pmw-4.29/doc/Makefile 2018-08-08 23:54:26.000000000 +0000 +++ pmw-4.30/doc/Makefile 2018-08-08 23:54:26.000000000 +0000 @@ -15,13 +15,17 @@ # ensure that SDoP sees the metrics for the PMW fonts. Just pointing it # at the PMW directory is dangerous because it also uses a file called # PSheader. Instead, we make temporary copies for it to use. +# +# It seems that gs doesn't pick up the PMW-Alpha font from GS_FONTPATH as +# it does for the PMW-Music font (perhaps because it's a Type 3?) so we +# include it explicitly when making the PDF. PMW=../src/pmw -F ../fontmetrics -H ../PSheader all: spec.pdf spec.pdf: spec.ps - GS_FONTPATH=$(CURDIR)/../psfonts gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=spec.pdf spec.ps + GS_FONTPATH=$(CURDIR)/../psfonts gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=spec.pdf ../psfonts/PMW-Alpha spec.ps spec.ps: Makefile \ spec.xml \ @@ -85,7 +89,8 @@ postscript/music52 \ postscript/music53 \ postscript/music54 \ - postscript/music55 + postscript/music55 \ + postscript/music56 sdop -S . spec.xml spec.xml: spec.xfpt @@ -277,6 +282,9 @@ postscript/music55: examples/ex55 ${PMW} -eps -nowidechars -o postscript/music55 examples/ex55 +postscript/music56: examples/ex56 + ${PMW} -eps -nowidechars -o postscript/music56 examples/ex56 + clean:; /bin/rm -rf *.ps *.pdf *.xml postscript/* fontmetrics # End diff -Nru pmw-4.29/doc/pmw.1 pmw-4.30/doc/pmw.1 --- pmw-4.29/doc/pmw.1 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/doc/pmw.1 2018-06-15 15:50:03.000000000 +0000 @@ -30,24 +30,28 @@ before printing. .TP \fB-c\fR \fI\fR -Print \fI\fR copies. +Arrange to print \fI\fR copies. This number is honoured by PostScript +printers. It may not be honoured by other programs that interpret PostScript. .TP \fB-debug\fR Write general debugging information to stderr (not currently very comprehensive). This option is of use only to the program maintainer. .TP \fB-drawbarlines\fR -Instead of using characters from the font to print bar lines, generate -PostScript drawing instructions. Some PostScript interpreters do not display +Instead of using characters from the music font to print bar lines, generate +PostScript drawing instructions. Some PostScript interpreters do not display the font bar line characters correctly on the screen when several of them are -used to generate a long vertical line; drawing them instead may give a better +used to generate a long vertical line; drawing them instead may give a better result. \fB-dbl\fR is an abbreviation for \fB-drawbarlines\fR. .TP -\fB-drawstavelines\fR -Instead of using characters from the font to print stave lines, generate +\fB-drawstavelines\fR [\fI\fR] +Instead of using characters from the music font to print stave lines, generate PostScript drawing instructions. Some PostScript interpreters do not display the font stave characters correctly on the screen; drawing them instead may -give a better result. \fB-dsl\fR is an abbreviation for \fB-drawstavelines\fR. +give a better result. The default thickness of drawn stave lines is 0.3 points, +scaled according to relative stave size and overall magnification. An integer +number given with this option specifies the thickness in tenths of a point. +\fB-dsl\fR is an abbreviation for \fB-drawstavelines\fR. .TP \fB-dsb\fR [[\fI\fR,]\fI\fR,]\fI\fR Write debugging data for the bar to stderr. This option is of use only to the @@ -135,7 +139,8 @@ printing staves. Instead, staves are constructed entirely from the 10-point wide characters. This option is provided because it seems that some PostScript interpreters cannot deal correctly with the very wide characters. \fB-nw\fR is -an abbreviation for \fB-nowidechars\fR. +an abbreviation for \fB-nowidechars\fR. The \fB-drawstavelines\fP option +overrides this option. .TP \fB-o\fR \fI\fR Send the output to the given file, or, if "-" is given, to stdout. The default @@ -194,7 +199,7 @@ .sp pmw myscore pmw -format A5 -a5ona4 -pamphlet myscore - pmw -s 3 -o quartet.ps-viola quartet.pmw + pmw -s 3 -o quartet-viola.ps quartet.pmw . .SH AUTHOR .rs @@ -204,6 +209,6 @@ Email domain: \fIcam.ac.uk\fR .sp .in 0 -Last updated: 26 October 2013 +Last updated: 15 June 2018 .br -Copyright (c) 2013 Philip Hazel +Copyright (c) 2018 Philip Hazel Binary files /tmp/tmpSy4OgE/TyI91Yu9Gc/pmw-4.29/doc/spec.pdf and /tmp/tmpSy4OgE/DxNMsHLfnb/pmw-4.30/doc/spec.pdf differ diff -Nru pmw-4.29/doc/spec.xfpt pmw-4.30/doc/spec.xfpt --- pmw-4.29/doc/spec.xfpt 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/doc/spec.xfpt 2018-06-15 15:50:03.000000000 +0000 @@ -12,7 +12,7 @@ . the element must also be updated for each new edition. . ///////////////////////////////////////////////////////////////////////////// -.set version "4.29" +.set version "4.30" . Zero-width space .set B "​" . Right-pointing hand @@ -34,6 +34,8 @@ . Zero-width space, 15 point, to create a 15-point deep line .set D15 "" +.flag &! !& "" "" + .flag &{ }& "" "" .flag &{{ }}& "" "" .flag &{{{ }}}& "" "" @@ -147,16 +149,16 @@ Philip's Music Writer (PMW) A Music Typesetting Program PMW -21 June 2016 +15 June 2018 PhilipHazel PH
Cambridge, England
- 4.29 - 21 June 2016 + 4.30 + 15 June 2018 PH -2016Philip Hazel +2018Philip Hazel
.literal off @@ -213,10 +215,10 @@ This edition of the manual describes PMW version &version;. Version 4.00 was the first version for Linux and other Unix-like environments. Earlier versions -were called &'Philip's Music Scribe'&, and were run on Acorn's RISC OS -operating system in the 1990s. From version 4.10 onwards, PMW interprets text -strings as UTF-8 encoded Unicode, giving access to all the available characters -in the standard PostScript text fonts. Access to non-ASCII characters is also +were called &'Philip's Music Scribe'&, and ran on Acorn's RISC OS operating +system in the 1990s. From version 4.10 onwards, PMW interprets text strings as +UTF-8 encoded Unicode, giving access to all the available characters in the +standard PostScript text fonts. Access to non-ASCII characters is also available using escape sequences. Section &<>& discusses the issues of backwards compatibility with previously-existing PMW input files. @@ -237,9 +239,9 @@ The PMW input encoding is designed to be easy for a musician to remember. It makes use of as many familiar music notations as possible within the limitations of the computer's character set. Normally it is input by a human, -using any available word processor or text editor. There is no reason, however, -why PMW input should not form the &'output'& of some other computer program -that captures (or generates) music in another fashion. +using any available word processor or text editor. However, PMW input could +also be be the output of some other computer program that captures (or +generates) music. This introduction ends with a short summary of the music and other terminology used in this manual. The following two chapters describe how PMW @@ -253,7 +255,7 @@ fonts, the PMW music fonts, summaries of the syntax of input files, and an index. Many cross-references are given in a shortened form using a pointing hand symbol, for example, &R; &<>&. These cross-references are -clickable when this PDF is being displayed by software that supports this +clickable when this PDF is being displayed by software that supports the facility. @@ -346,7 +348,8 @@ The reader is assumed to be familiar with using shell commands in Unix-like environments. PMW is installed from source in the same way as many other applications. First, download the tarball from the web site -&url(http://www.quercite.com/pmw.html) into a suitable directory. You should +&url(http://people.ds.cam.ac.uk/ph10/pmw.html) +into a suitable directory. You should end up with a file such as &_pmw-&version;.tar.gz_&. Uncompress the file with &'gunzip'& and then unpack the archive: .display @@ -662,6 +665,7 @@ .vitem &%-drawbarlines%& +.index "bar lines" "drawing" Bar lines are normally output using characters from the music font. This option causes them to be output using PostScript drawing commands. It may produce better output in environments where some PostScript interpreters leave little @@ -669,11 +673,22 @@ for &%-drawbarlines%&. .vitem &%-drawstavelines%& + +.index "stave lines" "drawing" +.index "stave lines" "thickness" Staves are normally output using characters from the music font. This option causes them to be output as individual lines, using PostScript drawing commands. It may produce better output in environments where some PostScript interpreters -leave gaps in staves. &%-dsl%& is a synonym for &%-drawstavelines%&, and this -option overrides &%-nowidechars%&. +leave gaps in staves. The default thickness of drawn stave lines is 0.3 points, +scaled according to the relative stave size and any overall magnification. You +can change this by giving a number after the option. The units are tenths of a +point, so specifying, for example +.code +-drawstavelines 4 +.endd +draws stave lines whose thickness is 0.4 points. A value of zero disables the +drawing of stave lines. &%-dsl%& is a synonym for &%-drawstavelines%&; a +non-zero value for this option overrides &%-nowidechars%&. .vitem &%-duplex%& @@ -1506,13 +1521,19 @@ .index "notes" "types of" .index "flags" PMW can handle eight different kinds of note, from breves to -hemi-demi-semiquavers. The encoding for crotchets, quavers, and minims was -introduced in the previous chapter. For notes longer than a minim the &`+`& +hemi-demi-semiquavers. The default encoding for crotchets, quavers, and minims +was introduced in the previous chapter. For notes longer than a minim the &`+`& character is used to double the duration, and for those shorter than a quaver, the character &`=`& is used for `two flags'. The complete set is as follows: .music "music02" 36 0,-14 +If a stave consists mostly of notes that are shorter than a crotchet, some +typing can be saved by the use of the &%[halvenotes]%& stave directive, which +halves the length of subsequent notes. For more detail see section +&<>&. + + .subsection "Rests" .index "rests" .index "whole bar rests" @@ -1544,11 +1565,11 @@ .index "notes" "beaming" .index "rests" "beaming across" Notes that are shorter than a crotchet are automatically beamed together within -a bar, unless they are separated by a beam breaking character. A semicolon -breaks the beaming completely, and a comma breaks all but the outermost beam. -Beams carry on across rests that are shorter than a crotchet, but they are -always broken at the end of a bar, unless a continuation over the bar line is -explicitly requested (&R; &<>&.) +a bar, except when a note is followed by a beam breaking character. A semicolon +breaks the beaming completely, whereas a comma breaks all but the outermost +beam. Beams carry on across rests that are shorter than a crotchet, but they +are always broken at the end of a bar, unless a continuation over the bar line +is explicitly requested (&R; &<>&.) .music music03 40 0,-10 centre @@ -2597,6 +2618,7 @@ indicate that another number follows. .endlist + .subsection "Macro insertion" .index "&& (insert) character" .index "insert character" @@ -2756,6 +2778,7 @@ preceded by an asterisk (spaces before the asterisk are permitted), and it occupies the whole line. + .subsection "*Comment" .index "&%*comment%&" This directive causes the remainder of the input line to be written to the PMW @@ -3153,16 +3176,17 @@ .section "MIDI output" SECTmidi .index "MIDI" "output" -A number of directives whose names all start with `midi' are available for -controlling the allocation of MIDI voices and channels to staves. The -&%midichannel%& (&R; &<>&) heading directive is used to -specify the allocation of a MIDI voice and/or particular PMW staves to a MIDI -channel, and the &%[midichannel]%& (&R; &<>&), -&%[midivoice]%& (&R; &<>&), and &%[midipitch]%& (&R; -&<>&) directives are used to change the setup in the middle -of a piece. For percussion staves, where the playing pitch selects different -instruments, the &%[printpitch]%& (&R; &<>&) directive can -be used to force the printed notes to a single pitch. +When MIDI output is requested by the &%-midi%& command line option, a number of +directives whose names all start with `midi' are available for controlling the +allocation of MIDI voices and channels to staves. The &%midichannel%& (&R; +&<>&) heading directive is used to specify the allocation +of a MIDI voice and/or particular PMW staves to a MIDI channel, and the +&%[midichannel]%& (&R; &<>&), &%[midivoice]%& (&R; +&<>&), and &%[midipitch]%& (&R; &<>&) +directives are used to change the setup in the middle of a piece. For +percussion staves, where the playing pitch selects different instruments, the +&%[printpitch]%& (&R; &<>&) directive can be used to force +the printed notes to a single pitch. If the input file contains no MIDI-specific directives, all notes are played through MIDI channel 1. The voice allocation on the channel is not changed, so @@ -3428,9 +3452,9 @@ .itable none 0 0 2 90 left 200 left .row "&`roman`&" "the roman font" -.row "&`italic`&" "the italic font" -.row "&`bold`&" "the bold face font" -.row "&`bolditalic`&" "the bold italic font" +.row "&`italic`&" "the &'italic'& font" +.row "&`bold`&" "the &*bold face*& font" +.row "&`bolditalic`&" "the &*&'bold italic'&*& font" .row "&`symbol`&" "the symbol font" .row "&`music`&" "the music font, at 0.9 size" .row "&`bigmusic`&" "the music font, at full size" @@ -3846,14 +3870,14 @@ .index "small caps" -Changing to &&SMALL CAPS&& does not in -fact change the typeface, nor does it force subsequent letters to be capitals; -it just changes to a smaller font of the same typeface as the current font. The -effect lasts until the next font change. The relative size of small caps can be -set by the &%smallcapsize%& heading directive, whose argument should be a -number between 0 and 1. The default value is 0.7, because this makes small caps -whose height is equal to the x-height of the normal font in the &'Times'& -series of fonts, and this is the usual typographic convention. +Changing to &!SMALL CAPS!& does not in fact change the typeface, nor does it +force subsequent letters to be capitals; it just changes to a smaller font of +the same typeface as the current font. The effect lasts until the next font +change. The relative size of small caps can be set by the &%smallcapsize%& +heading directive, whose argument should be a number between 0 and 1. The +default value is 0.7, because this makes small caps whose height is equal to +the x-height of the normal font in the &'Times'& series of fonts, and this is +the usual typographic convention. @@ -3986,7 +4010,9 @@ symbol on a string. The guitar ring (open string) and cross (silent string) characters (117, or `u', and 183) behave exactly as the dot. To print them above the first fret you need to move up one and a half times the normal fret -distance. +distance. This can be achieved by making use of two other special moving +characters, `|' and `~' (124 and 126), which move down and up half a fret +distance, respectively. .display &~ &`"\mu\\131\xxxx~\183\|wwwtxtwwtxxxtx~u"`& prints &&& @@ -4470,7 +4496,7 @@ &%curveto%&: This operator draws a Bézier curve. There must be six numbers on the stack when it is called; they are treated as three pairs of coordinates. The final pair are the end point of the curve, which starts from -the existing current point. The two middle pairs of coordinates give the +the existing current point. The two other pairs of coordinates give the Bézier curve control points. If you are not familiar with Bézier curves, you will need to discover a bit about them before you can fully understand this operator. They are described in many books on computer @@ -5146,14 +5172,18 @@ .subsection "Accspacing" .index "&%accspacing%&" .index "accidentals" "spacing" -The &%accspacing%& directive must be followed by five numbers. These give the -printing widths of the accidental characters in the order double sharp, flat, -double flat, natural, and sharp. The default values are equivalent to: +The &%accspacing%& directive must be followed by five numbers. They set the +printing widths that are used for accidentals in time signatures and when +printing notes, in the order double sharp, flat, double flat, natural, and +sharp. The default values are equivalent to: .code accspacing 5.25 4.5 8.0 4.25 5.0 .endd -It should not be necessary to change these widths unless a non-standard music -font is being used. +The values for sharp and flat also apply to half sharps and half flats (&R; +&<>&). These are not the same as the character widths that are +set in the PMW music font, where the values are better suited for including the +characters in text. It should not be necessary to change these widths unless a +non-standard music font is being used. .subsection "Bar" @@ -5166,6 +5196,7 @@ movements. + .subsection "Barcount" .index "&%barcount%&" .index "bars" "maximum number of" @@ -5177,6 +5208,7 @@ subsequent movements. + .subsection "Barlinesize" .index "&%barlinesize%&" .index "bar lines" "for different sized staves" @@ -5197,6 +5229,7 @@ whose size is greater than 1. + .subsection "Barlinespace" .index "&%barlinespace%&" .index "bar lines" "space after" @@ -5215,6 +5248,7 @@ lines can be broken, but no space must be inserted. + .subsection "Barlinestyle" SUBSECTbarlinestyle .index "&%barlinestyle%&" .index "bar lines" "style" @@ -5252,6 +5286,7 @@ line can be broken by using &%[breakbarline]%&. + .subsection "Barnumberlevel" .index "&%barnumberlevel%&" .index "bar numbers" "level adjustment" @@ -5264,6 +5299,7 @@ would otherwise have been. + .subsection "Barnumbers" SUBSECTheadbarno .index "&%barnumbers%&" .index "bar numbers" "requesting" @@ -5351,9 +5387,10 @@ The values can be changed for an individual page by means of the &%[topmargin]%& and &%[bottommargin]%& directives. The default values for the margins are zero for the bottom margin and 10 points for the top margin. The -use made of these values depends on the justification mode for the page. The -phrase `the contents of the page' below excludes any text that is defined as a -footing or as a page heading, but includes start-of-piece headings. +use made of these values depends on the vertical justification mode for the +page. The phrase `the contents of the page' below excludes any text that is +defined as a footing or as a page heading, but includes start-of-piece +headings. .ilist If the justify mode is `top' only, the contents of the page are moved down by the top margin, provided there is enough room on the page to do this. If not, @@ -5505,12 +5542,14 @@ of &%nocheck%& in a previous movement. + .subsection "Checkdoublebars" .index "&%checkdoublebars%&" This directive, which has no arguments, can be used to override an occurrence of &%nocheckdoublebars%& in a previous movement. + .subsection "Clefsize" .index "&%clefsize%&" .index "size" "of clefs" @@ -5525,6 +5564,7 @@ the normal size. + .subsection "Clefstyle" SUBSECTclefstyle .index "&%clefstyle%&" .index "style of clef" @@ -5550,13 +5590,14 @@ space before the clefs. + .subsection "Clefwidths" .index "&%clefwidths%&" .index "key signatures" "alignment" When it is laying out a system, PMW inspects the clefs of all the staves, and positions the key signature immediately to the right of the widest clef. When the clefs change between systems, it can happen that the key signatures do not -all line up vertically on the page, and some people want that to happen. +all line up vertically on the page, a feature that is sometimes required. Unfortunately, it is not easy to arrange for PMW to do this automatically, because it does the layout in a single pass through the input, and so does not know what clef arrangements lie ahead. However, the &%clefwidths%& directive is @@ -5577,6 +5618,7 @@ would ensure that all the key signatures line up. + .subsection "Codemultirests" SUBSECTcodemultirests .index "&%codemultirests%&" .index "rests" "repeated bars" @@ -5596,6 +5638,7 @@ &%nocodemultirests%&. + .subsection "Copyzero" .index "&%copyzero%&" This directive makes it possible to have copies of stave zero printed over any @@ -5604,6 +5647,7 @@ &%copyzero%& are given in section &<>&. + .subsection "Cuegracesize" .index "&%cuegracesize%&" This directive, which takes a single number as an argument, specifies the font @@ -5636,20 +5680,29 @@ note occupies 1.3 times the space of an undotted note. -.subsection "Doublenotes" + +.subsection "Doublenotes" SUBSECTdoublenotes .index "&%doublenotes%&" .index "doubling note lengths" .index "notes" "doubling length" +.index "time signatures" "modified" This directive, which applies to the current movement only, causes the length -of each note to be doubled. It also affects time signatures as follows: +of each note to be doubled throughout the movement. It also affects time +signatures as follows: .ilist &`C`& and &`A`& are turned into &`2*C`& and &`2*A`&, that is, they are printed as before, but the bar length is doubled. .next Other time signatures are changed by halving the denominator, unless the denominator is 1, in which case the numerator is doubled instead. For example, -4/4 becomes 4/2, but 4/1 becomes 8/1. See also &%halvenotes%&. +4/4 becomes 4/2, but 4/1 becomes 8/1. .endlist +An entire movement can be formatted in different ways by adding or removing +&%doublenotes%&, without any other changes. If you do not want time signatures +to be affected, use the &%[doublenotes]%& stave directive instead (&R; +&<>&). Note length adjustment is cumulative; for +example, if &%doublenotes%& appears twice, notelengths are quadrupled. See also +&%halvenotes%& (&R; &<>&). @@ -5705,6 +5758,7 @@ can be used to place them nearer the middle of the text characters. + .subsection "Fbsize" .index "&%fbsize%&" .index "figured bass" "size" @@ -5718,6 +5772,7 @@ strings can have an explicit size specified (&R; &<>&). + .subsection "Footing" .index "&%footing%&" .index "footing" "for first page" @@ -5805,6 +5860,7 @@ the distance between multiple grace notes to 8 points. + .subsection "Gracestyle" .index "&%gracestyle%&" .index "grace notes" @@ -5825,6 +5881,7 @@ .index "plainsong" + .subsection "Hairpinlinewidth" .index "&%hairpinlinewidth%&" .index "width" "of hairpin lines" @@ -5837,6 +5894,7 @@ printers. + .subsection "Hairpinwidth" .index "&%hairpinwidth%&" .index "width" "of hairpin openings" @@ -5850,6 +5908,7 @@ absolute value. The default value for this parameter is 7 points. + .subsection "Halfflatstyle" .index "&%halfflatstyle%& .index "accidentals" "half sharps and flats" @@ -5860,6 +5919,7 @@ of the different styles in section &<>&. + .subsection "Halfsharpstyle" .index "&%halfsharpstyle%& .index "accidentals" "half sharps and flats" @@ -5870,19 +5930,29 @@ of the different styles in section &<>&. -.subsection "Halvenotes" + +.subsection "Halvenotes" SUBSECThalvenotes .index "&%halvenotes%&" .index "halving note lengths" .index "notes" "halving length" +.index "time signatures" "modified" This directive, which applies to the current movement only, causes the length -of each note to be halved. It also affects time signatures as follows: +of each note to be halved throughout the movement. It also affects time +signatures as follows: .ilist &`C`& and &`A`& cannot be halved. The signatures &`2*C`& and &`2*A`& can be halved, and turn into &`C`& and &`A`& respectively. .next Other time signatures are changed by doubling the denominator. For example, 4/4 -becomes 4/8. See also &%doublenotes%&. +becomes 4/8. .endlist +An entire movement can be formatted in different ways by adding or removing +&%halvenotes%& without any other changes. If you do not want time signatures to +be affected, use the &%[halvenotes]%& stave directive instead (&R; +&<>&). Note length adjustment is cumulative; for +example, if &%halvenotes%& appears twice, notelengths are divided by four. See +also &%doublenotes%& (&R; &<>&). + .subsection "Heading" SUBSECTheading @@ -5994,6 +6064,7 @@ setting up headings for pages other than the first. + .subsection "Hyphenstring" .index "&%hyphenstring%&" .index "hyphen" "printing in underlay" @@ -6010,6 +6081,7 @@ control exactly what is printed between underlaid syllables. + .subsection "Hyphenthreshold" .index "&%hyphenthreshold%&" .index "hyphen" "multiple in underlay" @@ -6054,6 +6126,7 @@ between them. + .subsection "Justify" SUBSECTjustify .index "&%justify%&" .index "horizontal justification" @@ -6137,6 +6210,7 @@ control the layout of pages. + .subsection "Key" .index "&%key%&" .index "key signatures" "specifying" @@ -6153,6 +6227,7 @@ If no key signature is given for a movement, the default is C major. + .subsection "Keysinglebar and keydoublebar" .index "&%keysinglebar%&" .index "&%keydoublebar%&" @@ -6165,6 +6240,7 @@ &%keydoublebar%& can be used to reset the default for a new movement. + .subsection "Keywarn" .index "&%keywarn%&" This directive can be used at the start of a new movement to cancel the effect @@ -6183,6 +6259,7 @@ or &%sheetsize%& directives. + .subsection "Lastfooting" .index "&%lastfooting%&" .index "footing" "for last page" @@ -6196,6 +6273,7 @@ directive. + .subsection "Layout" SUBSECTlayout .index "&%layout%&" .index "page layout, forcing" @@ -6297,7 +6375,6 @@ - .subsection "Magnification" .index "&%magnification%&" .index "magnification" @@ -6468,6 +6545,7 @@ &<>&). + .subsection "Midifornotesoff" .index "&%midifornotesoff%&" .index "MIDI" "for invisible notes" @@ -6527,7 +6605,6 @@ - .subsection "Miditranspose" .index "&%miditranspose%&" .index "MIDI" "transposing parts" @@ -6588,6 +6665,7 @@ preceding bar line. + .subsection "Musicfont" .index "&%musicfont%&" .index "fonts" "alternative music" @@ -6597,12 +6675,14 @@ versions of the font. The default music font is PMW-Music. + .subsection "Nobeamendrests" .index "&%nobeamendrests%&" This directive, which has no arguments, can be used to cancel the effect of &%beamendrests%& in a previous movement. + .subsection "Nocheck" .index "&%nocheck%&" .index "checking bar lengths" @@ -6611,6 +6691,7 @@ suppress this check for individual bars (&R; &<>&). + .subsection "Nocheckdoublebars" .index "&%nocheckdoublebars%&" .index "checking bar lengths" @@ -6621,17 +6702,20 @@ signature. + .subsection "Nocodemultirests" .index "&%nocodemultirests%&" This directive cancels the effect of &%codemultirests%& in a previous movement. + .subsection "Nokerning" .index "&%nokerning%&" This directive is permitted only in the first movement. It disables the use of kerning for text strings (&R; &<>&). + .subsection "Nokeywarn" .index "&%nokeywarn%&" .index "key signatures" "suppressing warning" @@ -6643,6 +6727,7 @@ option on the &%[key]%& stave directive that changes the key signature. + .subsection "Nosluroverwarnings" .index "&%nosluroverwarnings%&" .index "warning signatures" @@ -6707,6 +6792,7 @@ &%layout%&, it is not usually necessary to use &%notespacing%& as well. + .subsection "Notime" .index "&%notime%&" .index "time signatures" "suppressing" @@ -6717,6 +6803,7 @@ subsequent movements. See also &%startnotime%&. + .subsection "Notimebase" .index "&%notimebase%&" .index "time signatures" "one number only" @@ -6728,6 +6815,7 @@ another way of customizing time signatures. + .subsection "Notimewarn" .index "&%notimewarn%&" .index "time signatures" "suppressing warning" @@ -6773,6 +6861,7 @@ . .......................................................................... + .subsection "Nounderlayextenders" .index "&%nounderlayextenders%&" This directive suppresses the printing of extender lines at the ends of @@ -6791,6 +6880,7 @@ separate parameters. + .subsection "Overlaysize" .index "&%overlaysize%&" .index "overlay" "size" @@ -6859,24 +6949,28 @@ &<>& (&'Linelength and pagelength'&) above. + .subsection "Playtempo" .index "&%playtempo%&" This directive is a synonym for &%miditempo%&. It dates from the early days of PMW running on Acorn hardware, when playing was possible without using MIDI. + .subsection "Playtranspose" .index "&%playtranspose%&" This directive is a synonym for &%miditranspose%&. It dates from the early days of PMW running on Acorn hardware, when playing was possible without using MIDI. + .subsection "Playvolume" .index "&%playvolume%&" This directive is a synonym for &%midivolume%&. It dates from the early days of PMW running on Acorn hardware, when playing was possible without using MIDI. + .subsection "PMWversion" .index "&%pmwversion%&" This directive checks that a given version of PMW is in use. It must be @@ -6887,6 +6981,7 @@ If the wrong version is used, a message is output and PMW stops. + .subsection "Printkey" SUBSECTprintkey .index "&%printkey%&" .index "key signatures" "specifying print format" @@ -6901,40 +6996,50 @@ also be used to specify the appearance of half sharps and half flats in key signatures. The syntax is as follows: .display -&`printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string'&>&`"`& +&`printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string'&>&`" ["`&<&'string'&>&`"]`& .endd -There may be many occurrences of &%printkey%&, for different combinations of -key signatures and clefs, in a single input file. The use of &%printkey%& -affects only what is printed for the given key/clef combination. It has no -other effect on PMW's behaviour. If there are two occurrences of &%printkey%& -that refer to the same key and clef, the later one is used. - -The string is normally a sequence of characters in the music font. The size is -fixed at 10 points, scaled to the stave's magnification. You can change to -other fonts by means of the usual escape sequences, but the size cannot be -varied. The starting vertical position is the bottom line of the stave; you can -use the up and down moving characters in the music font to position accidentals -(or other characters) where you want them. +There may be many occurrences of &%printkey%& in a single input file. The +directive applies to the movement in which it occurs, and any subsequent +movements, unless overridden by a subsequent &%printkey%& directive with the +same key and clef. The most recent occurrence is always the one that is used. +The use of &%printkey%& affects only what is printed for the given key/clef +combination. It has no other effect on PMW's behaviour. + +The first string specifies what is to be printed instead of the normal key +signature. The second, optional string specifies what is to be printed for a +`cancellation' key signature, that is, when there is a change to a key with an +empty signature. If not supplied, this string is set empty. + +The string is normally a sequence of characters in the music font, which is set +as the default font at the start of the string. The size is fixed at 10 points, +scaled to the stave's magnification. You can change to other fonts by means of +the usual escape sequences, but the size cannot be varied. The starting +vertical position is the bottom line of the stave; you can use the up and down +moving characters in the music font to position accidentals (or other +characters) where you want them. .code key G -printkey G treble "\37\" +printkey G treble "\37\" "\40\" printkey E$ treble "x~\39\x~\191\ww\191\" printkey E$ bass "~\39\x~\191\ww\191\" [stave 1 treble 1] -GG | [key E$] GG [bass 0] | [key E$] GG || +GG | [key C] GG | [key E$] GG [bass 0] | [key E$] GG || [endstave] .endd .music "music47" 32 4,-16 -In the above example, the G major key signature is a single sharp (character 37 -in the music font), printed in the initial vertical position. For the E-flat -treble clef signature, characters 120 (&`x`&) and 126 (&`~`&) are used to move -up four and two points, respectively, so that the flat (character 39) prints on -the middle line of the stave. Further appearances of &`x`& and &`~`&, and also -character 119 (&`w`&), which moves down four points, are used to position the -half flats (character 191) that follow. A similar string is used for the bass -clef. Details of the music font characters are given in chapter &<>&. +In the above example, the custom G major key signature is a single sharp +(character 37 in the music font), printed in the initial vertical position, +with a natural (character 40) in the same position for cancellation. For the +E-flat treble clef signature, characters 120 (&`x`&) and 126 (&`~`&) are used +to move up four and two points, respectively, so that the flat (character 39) +prints on the middle line of the stave. Further appearances of &`x`& and &`~`&, +and also character 119 (&`w`&), which moves down four points, are used to +position the half flats (character 191) that follow. A similar string is used +for the bass clef. Details of the music font characters are given in chapter +&<>&. + .subsection "Printtime" @@ -6946,27 +7051,30 @@ .display &`printtime `&<&'time signature'&>&` "`&<&'top'&>&`" "`&<&'bottom'&>&`"`& .endd -There may be many occurrences of &%printtime%&, for different time signatures, -in a single input file. Whenever the given time signature is to be printed, the -two given strings are printed instead, one above the other, with their centres -aligning. If the second string is empty, the first is printed on the second -stave line; otherwise they are printed on the third and first stave lines, -respectively. Some examples of possible uses are: +There may be many occurrences of &%printtime%& in a single input file. The +directive applies to the movement in which it occurs, and any subsequent +movements, unless overridden by a subsequent &%printtime%& directive for the +same time signature. The most recent occurrence is always the one that is used. +Whenever the given time signature is to be printed, the two strings are printed +instead, one above the other, with their centres aligning. If the second string +is empty, the first is printed on the second stave line; otherwise they are +printed on the third and first stave lines, respectively. Some examples of +possible uses are: .code printtime 8/8 "3+3+2" "8" printtime 12/8 "3 2" "2 2" printtime 3/4 "" "" .endd The last example suppresses all printing for the 3/4 time signature. The -default font at the start of each string is the font specified in the most -recently preceding &%timefont%& directive, so the order of &%timefont%& and -&%printtime%& matters. If &%timefont%& is not used, the default font is the -bold font. However, changes of font are permitted within the strings. The -default size of the text printed by &%printtime%& is that specified by -&%timefont%&, with 11.8 points as the ultimate default. However, it is possible -to follow each text string with &`/s`& and a number, to specify a particular -size for a given string. The number refers to the list of text sizes specified -by the &%textsizes%& directive. +default font at the start of each string is the font specified by the +&%timefont%& directive for the current or a preceding movement. If &%timefont%& +is not used, the default font is the bold font. However, changes of font are +permitted within the strings. The default size of the text printed by +&%printtime%& is that specified by &%timefont%&, with 11.8 points as the +ultimate default. However, it is possible to follow each text string with +&`/s`& and a number, to specify a particular size for a given string. The +number refers to the list of text sizes specified by the &%textsizes%& +directive. @@ -7013,6 +7121,7 @@ prologue that is output by PMW before the PostScript for the first page. + .subsection "Rehearsalmarks" .index "&%rehearsalmarks%&" This directive controls the way rehearsal marks are printed. It has this @@ -7154,6 +7263,7 @@ Any tests that rely on a particular stave selection must follow this directive. + .subsection "Sheetdepth, Sheetwidth, and Sheetsize" .index "&%sheetdepth%&" .index "&%sheetsize%&" @@ -7212,6 +7322,7 @@ points (provided the &%shortenstems%& limit allows this). + .subsection "Sluroverwarnings" .index "&%sluroverwarnings%&" .index "slurs" "over warning signatures" @@ -7222,6 +7333,7 @@ the slur or tie over the warning. This directive requests it to do so. + .subsection "Smallcapsize" .index "&%smallcapsize%&" When the escape sequence &`\sc\`& is used in a string to change to small caps, @@ -7273,7 +7385,6 @@ - .subsection "Startnotime" .index "&%startnotime%&" .index "time signatures" "suppressing" @@ -7289,9 +7400,9 @@ .index "&%stavesizes%&" .index "size" "of staves" This directive specifies that certain staves are to be printed at different -sizes to the rest. It is followed by pairs of numbers, separated by slashes. The -first of each pair is a stave number, and the second is the size of the stave -relative to the standard stave size. +sizes to the rest. It is followed by pairs of numbers, separated by slashes. +The first of each pair is a stave number, and the second is the size of the +stave relative to the standard stave size. .code stavesize 1/0.8 stavesizes 4/1.2 5/1.2 6/1.2 @@ -7314,6 +7425,7 @@ ugly joins. + .subsection "Stavespacing" .index "&%stavespacing%&" .index "staves" "spacing" @@ -7369,6 +7481,7 @@ stave. + .subsection "Stemlengths" .index "&%stemlengths%&" .index "stems" "length adjustment" @@ -7386,6 +7499,7 @@ 2 and 4 points, respectively. + .subsection "Stemswap" SUBSECTstemswap .index "&%stemswap%&" .index "stems" "direction" @@ -7421,6 +7535,7 @@ swap level, their stem direction is taken from the preceding note. + .subsection "Stemswaplevel" SUBSECTstemswaplevel .index "&%stemswaplevel%&" .index "stems" "direction" @@ -7441,6 +7556,7 @@ the second space. + .subsection "Stretchrule" .index "&%stretchrule%&" .index "compatibility" "pre-4.22" @@ -7468,6 +7584,7 @@ first movement. + .subsection "Suspend" SUBSECTheadsuspend .index "&%suspend%&" .index "suspending staves" @@ -7482,6 +7599,7 @@ the stave directive of the same name (&R; &<>&). + .subsection "Systemgap" .index "&%systemgap%&" .index "system gap" @@ -7501,6 +7619,7 @@ &<>&. + .subsection "Textfont" .index "&%textfont%&" .index "fonts" "additional" @@ -7530,6 +7649,7 @@ The capitalization of font names is important. + .subsection "Textsizes" SUBSECTtextsizes .index "&%textsizes%&" .index "text" "sizes" @@ -7551,6 +7671,7 @@ must be used (&R; &<>&). + .subsection "Thinbracket" .index "&%thinbracket%&" .index "bracket, thin" @@ -7563,6 +7684,7 @@ join staves containing multiple parts for the same instrument. + .subsection "Time" .index "&%time%&" .index "time signatures" "specifying" @@ -7573,6 +7695,7 @@ signature is 4/4. + .subsection "Timebase" .index "&%timebase%&" This directive can be used at the start of a new movement to cancel the effect @@ -7641,6 +7764,7 @@ details about transposition. + .subsection "Transposedacc" .index "&%transposedacc%&" .index "accidentals" "in transposed staves" @@ -7654,6 +7778,7 @@ (&R; &<>&). + .subsection "Transposedkey" .index "&%transposedkey%&" .index "transposition" "control of keys" @@ -7713,6 +7838,7 @@ 10-point roman font is used for printing triplet numbers. + .subsection "Tripletlinewidth" SUBSECTtripletlinewidth .index "&%tripletlinewidth%&" .index "line width for triplets" @@ -7720,6 +7846,7 @@ irregular note groups. The default width is 0.3 points. + .subsection "Underlaydepth" .index "&%underlaydepth%&" .index "underlay" "line depth" @@ -7732,6 +7859,7 @@ parameters for underlaid and overlaid text are separate and independent. + .subsection "Underlayextenders" .index "&%underlayextenders%&" This directive restores the printing of extender lines at the ends of underlay @@ -7739,6 +7867,7 @@ by &%nounderlayextenders%& in an earlier movement. + .subsection "Underlaysize" .index "&%underlaysize%&" .index "underlay" "size" @@ -7753,6 +7882,7 @@ are separate and independent. + .subsection "Underlaystyle" SUBSECTunderlaystyle .index "&%underlaystyle%&" .index "underlay" "multiple notes per syllable" @@ -8161,7 +8291,7 @@ are adjacent on most keyboards, and next to the sharp sign on some, are used: the dollar sign for flat and the percent sign for natural. Double sharps and double flats are indicated by two sharp signs or two dollars. Here are some -examples of notes of different pitches, when the octave is set at 0 (the +examples of notes of different pitches, when the octave is set at 0 (the default): .itable none 0 0 2 40 left 300 left .row &`c'`& "middle C" @@ -8298,7 +8428,6 @@ - .subsection "Rests" .index "rests" .index "rests" "invisible" @@ -8316,7 +8445,8 @@ candidates for amalgamation with surrounding rest bars, leading to the printing of `long rest' bars where possible (&R; &<>&). When a rest bar is specified using S instead of R, it is always printed as an individual bar -and never amalgamated. You can think of S as standing for `single'. +and never amalgamated. You can think of S as standing for `single' or +`separate'. @@ -8340,6 +8470,34 @@ signs are four flags for a hemi-demi-semiquaver. If the note letter is followed by quotes or grave accents as part of its pitch, the flags follow these. +.index "&%[doublenotes]%&" +.index "&%doublenotes%&" +.index "doubling note lengths" +.index "notes" "doubling length" +.index "&%[halvenotes]%&" +.index "&%halvenotes%&" +.index "halving note lengths" +.index "notes" "halving length" +Some music contains long runs of quavers or semiquavers, which requires typing +minus or equals signs after every note letter by default. This can be avoided +by making use of the &%[halvenotes]%& stave directive (&R; +&<>&). Notes that follow this directive have their +length halved, so upper case letters are now crotchets and lower case letters +are quavers. The effect is cumulative, so using &%[halvenotes]%& twice turns +lower case letters into semiquavers. The effect can be reversed with +&%[doublenotes]%& (&R; &<>&). For example, these three +bars contain exactly the same notes: +.code +a-b-c-d-; a-b-c-d- | +[halvenotes] abcd; abcd | +[doublenotes] a-b-c-d-; a-b-c-d- | +.endd +There are also &%halvenotes%& and &%doublenotes%& heading directives (&R; +&<>&, &<>&), which cause every stave to +begin with halved or doubled notes, but these directives also affect time +signatures and are more useful for adjusting the overall format of a piece than +for minimizing typing. + .index "dotted notes" .index "notes" "dotted" One or two dots may follow a note or rest as in conventional music, to extend @@ -8358,7 +8516,7 @@ .endd This example prints a semibreve followed by a plus, indicating a note whose length is equal to five crotchets. Here are some examples of notes and rests of -different lengths: +different lengths without any halving or doubling: .itable none 0 0 2 60 left 200 left .row &`A++`& "breve" .row &`#B`+`& "semibreve" @@ -8391,13 +8549,16 @@ .index "chords" "beaming" Chords consisting of quavers or shorter notes are beamed in the usual way (&R; &<>&); a semicolon after the closing parenthesis breaks all the -beaming, whereas a comma breaks secondary beams only. If the chord is tied (&R; -&<>&), the underline character that indicates a tie must -appear after the closing parenthesis. Note that an underline character cannot -be used for a short slur when chords are involved (as it can for single notes), -because if two chords are joined by an underscore, all the notes in each that -are of the same pitch are joined by a tie mark. The &%[slur]%& directive must -be used to obtain just a single slur mark. +beaming, whereas a comma breaks secondary beams only. +.index "chords" "ties" +.index "ties" "chords" +If the chord is tied (&R; &<>&), the underline character that +indicates a tie must appear after the closing parenthesis and before any beam +break character. Note that an underline character cannot be used for a short +slur when chords are involved (as it can for single notes), because if two +chords are joined by an underscore, all the notes in each that are of the same +pitch are joined by a tie mark. The &%[slur]%& directive must be used to obtain +just a single slur mark. .index "accidentals" "moved" .index "moved accidentals" @@ -9175,6 +9336,38 @@ +.subsection "Treating certain regular groups as triplets" SUBSECTtripletize +.index "triplets" "assumed for alignment and MIDI" +.index "&%[tripletize]%&" +In some music, note pairs consisting of a dotted quaver followed by a +semiquaver are intended to be performed as triplets, that is, with the +semiquaver taken as a third of a crotchet, instead of a quarter. This notation +can be seen in some Telemann manuscripts, for example. In light popular music, +such groups may also be `swung' into triplets. This performance convention does +not cause any problems when printing a single part, but when a score is printed +and there are actual triplets in another part, semiquavers after dotted quavers +are not by default vertically aligned with the final triplet notes in other +parts. However, PMW has a facility for adjusting the output so that the +noteheads do line up. In the following example, the first bar shows what +happens by default; in the second bar the bass part has been `tripletized'. + +.music "music56" 76 4,-20 + +The form of the printed notes remains the same, but their performance length +has been adjusted, which affects the horizontal position of the semiquavers. +The adjusted note lengths are also used when MIDI output is generated. + +The &%[tripletize]%& directive controls this behaviour. It can be followed by +one of the words `on' or `off'. If neither is present, `on' is assumed. At the +start of a stave, tripletizing is turned off. When turned on, in addition to +dotted quaver pairs, groups consisting of a dotted crotchet followed by two +semiquavers (notes or rests) are also adjusted. For such groups, the +semiquavers are each treated as having the length of one third of a crotchet, +and the dotted crotchet's length is appropriately shortened. + + + + .subsection "Ties and short slurs" SUBSECTshortslur .index "ties" "specifying" .index "slurs" "over two notes, specifying" @@ -9354,17 +9547,19 @@ &`;`& break all beams (semicolon) &`,`& break secondary beams only (comma) .endd +These characters are ignored if they follow longer notes. .index "beaming" "across rests" .index "rests" "beaming across" PMW automatically beams across rests that are shorter than a crotchet, unless a break in the beam is specified. A beam breaking character must be entered immediately after the end of a note or after the closing parenthesis of a -chord, without any intervening space. If the note or chord is tied (with an -underscore character), the beam break must follow the underscore. If any other -character follows a note or chord, no breaking happens. If the note or chord is -the last of an irregular group (for example, triplets), the beam break may -appear after the closing curly bracket. Three pairs of beamed quavers could be -notated like this: +chord, without any intervening space, though if the note or chord is tied (with +an underscore character), the beam break must follow the underscore. If any +other character follows a note or chord, no breaking happens. If the note or +chord is the last of an irregular group (for example, triplets), the beam break +may optionally appear after the closing curly bracket as long as there is no +space between the last note and the bracket. Three pairs of beamed quavers +could be notated like this: .code g-e-; f-a-; b-a- .endd @@ -9624,10 +9819,14 @@ qualified to indicate its type. Underlay, overlay, and figured bass text is by default printed in the roman typeface. The directives &%[underlayfont]%&, &%[overlayfont]%&, and &%[fbfont]%& can be used to change the default font for -these kinds of text. +these kinds of text on individual staves. Text strings are coded in among the notes of a stave, and are, like all -strings, enclosed in double quote characters. The escape character conventions +strings, enclosed in double quote characters. +.index "strings" "limit on number of" +There may be no more than 50 text strings before any one note; this large limit +is intended to cover all possible applications. +The escape character conventions using the backslash character that apply to all PMW strings are relevant (&R; &<>&). In particular, within any text string, the font can be changed by the use of the appropriate escape sequences. The closing @@ -9819,7 +10018,7 @@ .index "fingering indications" The small caps feature of text strings is useful for selecting a smaller than normal font for printing fingering indications. Alternatively, a specific font -size can be defined, and used with the &`\s`& text option. The music font +size can be defined, and used with the &`/s`& text option. The music font contains the special characters &{a}&&~&~ and &{b}&&~&~ for indication the use of the thumb in cello parts. The use of macros is suggested when setting music with lots of fingering. Note the use of the &`/c`& option in this @@ -9966,9 +10165,8 @@ left with the initial note. The circumflex character can still be used to specify that particular multinote syllables be centred. -Text for two or more verses (up to any number) can be specified in -multi-syllable fashion before the relevant notes by giving each verse as a -separate string. +Text for two or more verses can be specified in multi-syllable fashion before +the relevant notes by giving each verse as a separate string. .code "God save our gra-cious Queen" "Thy choi-cest gifts in store" @@ -10585,6 +10783,17 @@ means of the &`\:\`& note option (&R; &<>&). +.subsection "[Doublenotes]" SUBSECTstavedoublenotes +.index "&%[doublenotes]%&" +.index "doubling note lengths" +.index "notes" "doubling length" +This directive causes the length of subsequent notes in the current stave to be +doubled. Unlike the heading directive with the same name (&R; +&<>&), it does not affect time signatures. It is, however, +cumulative with the heading directive and with &%[halvenotes]%& +(&R; &<>&). + + .subsection "[Draw]" The &%[draw]%& directive is described in chapter &<>&. @@ -10725,6 +10934,20 @@ points. +.subsection "[Halvenotes]" SUBSECTstavehalvenotes +.index "&%[halvenotes]%&" +.index "halving note lengths" +.index "notes" "halving length" +This directive causes the length of subsequent notes in the current stave to be +halved. Unlike the heading directive with the same name (&R; +&<>&), it does not affect time signatures. It is, however, +cumulative with the heading directive and with &%[doublenotes]%& +(&R; &<>&). For example, if there are many bars +consisting mostly of quavers in a stave, using &%[halvenotes]%& saves having to +type hyphens after each lower case note letter. &%[Doublenotes]%& can be used +to restore the previous state. + + .subsection "[Hclef]" .index "&%[hclef]%&" .index "percussion clef" @@ -10765,10 +10988,12 @@ .endd There is also a heading directive, &%nokeywarn%&, for suppressing all cautionary key signatures. Key signature changes are printed in `modern style'. -That is, unless the new key is C major (or A minor), all that is printed is the -new signature. If `old style' is required, where the new key signature is -preceded by an explicit cancelling of the old one with naturals, the new -signature should be preceded by a change to C major. +That is, unless the new key signature is empty (default for C major or A minor +or an empty string from &%printkey%&), all that is printed is the new +signature. If `old style' is required, where the new key signature is preceded +by an explicit cancelling of the old one with naturals, the new signature +should be preceded by a change to a key with an empty signature. For example, +in the default configuration (no &%printkey%& settings): .code [key C key A] .endd @@ -11360,7 +11585,7 @@ number, requests transposition by the number of octaves given. The octave can also be specified at the same time as the clef (&R; &<>&). -Each octave setting replaces the previous one; they are not cumulative. The +Each octave setting replaces the previous one; they are not cumulative. The argument for &%[octave]%& may be positive or negative: .display &`[octave -1] `& C is the note two octaves below middle C @@ -12420,27 +12645,28 @@ .index "&%[textfont]%&" .index "fonts" "default for text" .index "text" "default font" -The default typeface for non-underlay, non-overlay text -can be set for an individual stave by means of the &%[textfont]%& -directive, which takes as its argument one of the standard font -names. +The default typeface for text other than underlay, overlay, or figured bass can +be set for an individual stave by means of the &%[textfont]%& directive, which +takes as its argument one of the standard font names. .code [textfont extra 3] .endd This example supposes that the third extra font has been defined for some -special use in the stave's text. The default font for non-underlay, non-overlay -text is italic. In any given text string it is always possible to change font -by using the appropriate escape sequence. +special use in the stave's text. The default font for this kind of text is +italic. The defaults for underlay, overlay, and figured bass text are set by +&%[underlayfont]%&, &%[overlayfont]%&, and &%[fbfont]%&, respectively. In any +given text string it is always possible to change font by using the appropriate +escape sequence. .subsection "[Textsize]" .index "&%[textsize]%&" This directive must be followed by a number in the range 1 to 12. It selects the default size to be used for text that is neither underlay nor overlay nor -figured bass. The actual font sizes that correspond to the twelve numbers are -set by the &%textsizes%& heading directive. If this directive is not used, the -default size is size 1. Individual text strings can have their sizes set by -means of the &`/s`& option. +figured bass, which have their own size setting directives. The actual font +sizes that correspond to the twelve numbers are set by the &%textsizes%& +heading directive. If this directive is not used, the default size is size 1. +Individual text strings can have their sizes set by means of the &`/s`& option. .subsection "[Tick]" @@ -12633,6 +12859,15 @@ necessary. + +.subsection "[Tripletize]" +.index "&%[tripletize]%&" +This directive enables and disables `tripletizing', which causes certain +groups of regularly notated notes to be positioned (and played if MIDI is +generated) as triplets. Details are given in section &<>&. + + + .subsection "[Triplets]" SUBSECTtriplets .index "irregular note groups" "suppressing the number" .index "irregular note groups" "forcing position" @@ -13138,9 +13373,9 @@ sequence of music font characters is required. Most of the characters in the music font print `on the baseline' in the typographic sense, though some have `descenders'. The only exceptions to this are the constituent parts of notes, -such as stems and quaver tails. The typographic character widths, which are not -used by PMW when setting music, are set to values that are useful when these -characters are printed as part of a text string. +such as stems and quaver tails. The typographic character widths, which may or +may not be used by PMW when setting music, are mostly set to values that are +reasonable when these characters are printed as part of a text string. Here is a list of the characters in the font, giving both their numbers (in decimal) and, where relevant, the corresponding ASCII characters. The printing @@ -13334,6 +13569,10 @@ .row "" 193 0.6 &{{Á}}& "pause comma, inverted for R-to-L music" .row "" 194 0.0 &{{Â}}& "staccatissimo" .row "" 195 0.0 &{{Ã}}& "staccatissimo, inverted" +.row "" 196 0.0 &{{Ä}}& "reversed turn" +.row "" 197 0.0 &{{Å}}& "inverted reversed turn" +.row "" 198 0.0 &{{Æ}}& "top half circle" +.row "" 199 0.0 &{{Ç}}& "bottom half circle" .row "" 247 10.0 "" "long 2-line stave" .row "" 248 10.0 "" "long 3-line stave" .row "" 249 10.0 "" "long 4-line stave" @@ -13782,7 +14021,7 @@ &` Playtranspose `&<&'n'&>/<&'m'&> ... &` Playvolume `&<&'n'&>&` `&<&'n'&>/<&'m'&> ... &` Pmwversion `&<&'n'&> -&` Printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string'&>&`"`& +&` Printkey `&<&'key'&>&` `&<&'clef'&>&` "`&<&'string 1'&>&`" "`&<&'string 2'&>&`"`& &` Printtime `&<&'time'&>&` "`&<&'string 1'&>&`" "`&<&'string 2'&>&`"`& &` Psfooting `&"<&'PostScript string'&>" &` Psheading `&"<&'PostScript string'&>" @@ -13843,14 +14082,14 @@ .itable none 0 0 2 100 left 250 left .row "accidental" "&`# ## $ $$ %`& -.row "&~&~half sharp" "&`#-`& -.row "&~&~half flat" "&`$-`& -.row "&~&~invisible" "&`?`&" -.row "&~&~over note" "&`o`&" -.row "&~&~under note" "&`u`&" -.row "&~&~transposed" "&`^# ^## ^$ ^$$ ^% ^- ^+`&" -.row "&~&~bracketed" "&`) ]`&" -.row "&~&~moved" "&`<`& &~or&~ &`<`&&'number'&" +.row "&~&~&~half sharp" "&`#-`& +.row "&~&~&~half flat" "&`$-`& +.row "&~&~&~invisible" "&`?`&" +.row "&~&~&~over note" "&`o`&" +.row "&~&~&~under note" "&`u`&" +.row "&~&~&~transposed" "&`^# ^## ^$ ^$$ ^% ^- ^+`&" +.row "&~&~&~bracketed" "&`) ]`&" +.row "&~&~&~moved" "&`<`& &~or&~ &`<`&&'number'&" .row "note letter" "&`a-g A-G q Q r R s S`&" .row "octave sign" "&`'`& &~to raise,&~ &```& &~to lower" .row "note flags" "&`- = =- ==`& &~following a small letter" @@ -13860,9 +14099,9 @@ .row "dot(s)" "&`.`& &~or&~ &`..`& &~or&~ &`.+`&" .row "expression/options" "&`\`&&'expression and options indications'&&`\`&" .row "tie/slur" "&`_`&" -.row "&~&~above/below" "&`/a /b`&" -.row "&~&~editorial" "&`/e`&" -.row "&~&~dashed/dotted" "&`/i /ip`&" +.row "&~&~&~above/below" "&`/a /b`&" +.row "&~&~&~editorial" "&`/e`&" +.row "&~&~&~dashed/dotted" "&`/i /ip`&" .row "full beam break" "&`;`&" .row "partial beam break" "&`,`&" .endtable @@ -13959,21 +14198,21 @@ rests: .itable none 0 0 2 30 left 300 left -.row &`|`& "bar line" -.row &`||`& "double bar line" -.row &`|||`& "end-of-piece bar line" -.row &`|?`& "invisible bar line" -.row &`|=`& "bar line with beam carried over it" -.row &`|`&<&'n'&> "bar line in style <&'n'&>" -.row &`:`& "dotted bar line in middle of bar" -.row &`(:`& "start repeated section" -.row &`:)`& "end repeated section" -.row &`{`& "start triplet" -.row &`{`&<&'n'&> "start non-standard group" -.row &`}`& "end non-standard group" -.row &`//`& "caesura" -.row &`>`& "decrescendo hairpin" -.row &`<`& "crescendo hairpin" +.row &D15;&`|`& "&D15;bar line" +.row &D15;&`||`& "&D15;double bar line" +.row &D15;&`|||`& "&D15;end-of-piece bar line" +.row &D15;&`|?`& "&D15;invisible bar line" +.row &D15;&`|=`& "&D15;bar line with beam carried over it" +.row &D15;&`|`&<&'n'&> "&D15;bar line in style <&'n'&>" +.row &D15;&`:`& "&D15;dotted bar line in middle of bar" +.row &`(:`& "start repeated section" +.row &`:)`& "end repeated section" +.row &`{`& "start triplet" +.row &`{`&<&'n'&> "start non-standard group" +.row &`}`& "end non-standard group" +.row &`//`& "caesura" +.row &`>`& "decrescendo hairpin" +.row &`<`& "crescendo hairpin" .endtable .section "Stave text item options" @@ -14152,6 +14391,7 @@ .row "&`[deepbass `&<&'octave'&>&`]`&" "select deep bass clef" .row "&`[dots above]`&" "augmentation dots above" .row "&`[dots below]`&" "augmentation dots below" +.row "&`[doublenotes]`&" "double note lengths" .row "&`[draw <&'name'&>]`&" "obey a drawing definition" .row "&`[el]`&" "synonym for &`[endline]`&" .row "&`[endcue]`&" "end cue notes before bar end" @@ -14169,6 +14409,7 @@ .row "&`[hairpins below]`&" "put hairpins below" .row "&`[hairpins middle]`&" "centre hairpins between two staves" .row "&`[hairpinwidth `&<&'n'&>&`]`&" "set hairpinwidth for this stave" +.row "&`[halvenotes]`&" "halve note lengths " .row "&`[hclef `&<&'octave'&>&`]`&" "select percussion H-clef" .row "&`[justify +`&<&'edge'&>&`]`&" "add to justification edges" .row "&`[justify -`&<&'edge'&>&`]`&" "take away a justification edge" @@ -14252,6 +14493,8 @@ .row "&`[trebletenor `&<&'octave'&>&`]`&" "select trebletenor clef" .row "&`[trebletenorB `&<&'octave'&>&`]`&" "select trebletenorB clef" .row "&`[tremolo]`&" "print tremolo between notes" +.row "&`[tripletize off]`&" "disable tripletizing" +.row "&`[tripletize on]`&" "treat certain groups as triplets (`&`on`&' is optional)" .row "&`[triplets off]`&" "don't print triplet indications" .row "&`[triplets on]`&" "print triplet indications" .row "&`[triplets `&<&'options'&>&`]`&" "control triplet printing" @@ -14342,8 +14585,8 @@ .row "Hairpin line width" "0.2 points" .row "Hairpin width" "7 points" .row "Heading type sizes" -.row "&~&~first heading" "17, 12, 10, 8" -.row "&~&~movement heading" "12, 10, 8" +.row "&~&~&~first heading" "17, 12, 10, 8" +.row "&~&~&~movement heading" "12, 10, 8" .row "Hyphen string" "one hyphen character" .row "Hyphen threshold" "50 points" .row "Justify" "top bottom left right" diff -Nru pmw-4.29/fontmetrics/PMW-Music.afm pmw-4.30/fontmetrics/PMW-Music.afm --- pmw-4.29/fontmetrics/PMW-Music.afm 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/fontmetrics/PMW-Music.afm 2018-06-15 15:50:03.000000000 +0000 @@ -174,6 +174,10 @@ C 193 ; WX 600 ; N icomma ; B 0 0 300 600 ; C 194 ; WX 0 ; N accent7 ; B 280 -16 420 420 ; C 195 ; WX 0 ; N accent8 ; B 280 -16 420 420 ; +C 196 ; WX 0 ; N rturn ; B -50 -50 850 450 ; +C 197 ; WX 0 ; N irturn ; B -50 -50 850 450 ; +C 198 ; WX 0 ; N bhcirc ; B 200 -20 1040 400 ; +C 199 ; WX 0 ; N bhcirc ; B 200 0 1040 420 ; C 247 ; WX 10000 ; N stave210 ; B 0 380 10000 1220 ; C 248 ; WX 10000 ; N stave310 ; B 0 -20 10000 1620 ; C 249 ; WX 10000 ; N stave410 ; B 0 -20 10000 1220 ; diff -Nru pmw-4.29/NOTICE pmw-4.30/NOTICE --- pmw-4.29/NOTICE 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/NOTICE 2018-06-15 15:50:03.000000000 +0000 @@ -1,7 +1,7 @@ PHILIP'S MUSIC WRITER --------------------- -Copyright (c) 2003 - 2016 Philip Hazel +Copyright (c) 2003 - 2018 Philip Hazel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff -Nru pmw-4.29/psfonts/PMW-Music.pfa pmw-4.30/psfonts/PMW-Music.pfa --- pmw-4.29/psfonts/PMW-Music.pfa 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/psfonts/PMW-Music.pfa 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ -%!PS-AdobeFont-1.0: PMW-Music 058.001 -%%CreationDate: November 2010 -% Copyright (c) 2010 Philip Hazel +%!PS-AdobeFont-1.0: PMW-Music 059.001 +%%CreationDate: June 2018 +% Copyright (c) 2018 Philip Hazel %%BeginExitServer: 000000 %%serverdict begin 000000 exitserver @@ -11,8 +11,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -44,8 +44,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -171,451 +172,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/README pmw-4.30/README --- pmw-4.29/README 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/README 2018-06-15 15:50:03.000000000 +0000 @@ -1,7 +1,7 @@ PHILIP'S MUSIC WRITER --------------------- -Copyright (c) 2016 Philip Hazel +Copyright (c) 2018 Philip Hazel UNIX AND UNIX-LIKE SYSTEMS @@ -42,7 +42,7 @@ the file MacOS.txt in the doc directory. Philip Hazel -June 2016 +June 2018 LICENCE diff -Nru pmw-4.29/src/barhdr.h pmw-4.30/src/barhdr.h --- pmw-4.29/src/barhdr.h 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/barhdr.h 2018-06-15 15:50:03.000000000 +0000 @@ -2,13 +2,13 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2010 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: December 2010 */ +/* This file last modified: February 2018 */ /* This is the header file that contains definitions of the structures used for -holding musical data. */ +holding musical data, and various flags and enumerations. */ /* Offset for overlay string levels */ @@ -88,6 +88,7 @@ #define nf_noplay 0x00400000 /* Do not play - note tied */ #define nf_smallhead 0x00800000 /* Small notehead */ #define nf_halfacc 0x01000000 /* Half accidental */ +#define nf_tripletize 0x02000000 /* Check note for tripletizing */ #define nf_couple (nf_coupleU+nf_coupleD) #define nf_dotted (nf_dot+nf_dot2+nf_plus) diff -Nru pmw-4.29/src/debug.c pmw-4.30/src/debug.c --- pmw-4.29/src/debug.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/debug.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains debugging functions. */ @@ -678,12 +678,12 @@ uschar *c = ""; debug_printf("%s = ", s); -for (i = 0; i <= max_stave; i++) +for (i = 0; i <= MAX_STAVE; i++) { if (mac_teststave(map, i)) { int s = i; - while (++i <= max_stave && mac_teststave(map, i)); + while (++i <= MAX_STAVE && mac_teststave(map, i)); if (s == i-1) debug_printf("%s%d", c, s); else debug_printf("%s%d-%d", c, s, i-1); last = i-1; @@ -859,17 +859,15 @@ debug_printf("fontsize_clefs = %f\n", m->fontsizes->fontsize_clefs); debug_printf("fontsize_cue = %f\n", m->fontsizes->fontsize_cue); debug_printf("fontsize_cuegrace = %f\n", m->fontsizes->fontsize_cuegrace); -debug_printf("fontsize_fbass = %f\n", m->fontsizes->fontsize_fbass); debug_printf("fontsize_grace = %f\n", m->fontsizes->fontsize_grace); debug_printf("fontsize_music = %f\n", m->fontsizes->fontsize_music); -debug_printf("fontsize_olay = %f\n", m->fontsizes->fontsize_olay); debug_printf("fontsize_rehearse = %f\n", m->fontsizes->fontsize_rehearse); debug_printf("fontsize_repno = %f\n", m->fontsizes->fontsize_repno); debug_printf("fontsize_restct = %f\n", m->fontsizes->fontsize_restct); comma = ""; debug_printf("fontsize_text = "); -for (i = 0; i < MaxTextFont; i++) +for (i = 0; i < MaxFontSizes; i++) { debug_printf("%s%f", comma, m->fontsizes->fontsize_text[i]); comma = ", "; @@ -878,8 +876,11 @@ debug_printf("fontsize_trill = %f\n", m->fontsizes->fontsize_trill); debug_printf("fontsize_triplet = %f\n", m->fontsizes->fontsize_triplet); -debug_printf("fontsize_tsfont = %f\n", m->fontsizes->fontsize_tsfont); -debug_printf("fontsize_ulay = %f\n", m->fontsizes->fontsize_ulay); + +debug_printf("fontsize_tsfont = %f\n", (m->fontsizes->fontsize_text)[ff_offset_tsfont]); +debug_printf("fontsize_ulay = %f\n", (m->fontsizes->fontsize_text)[ff_offset_ulay]); +debug_printf("fontsize_olay = %f\n", (m->fontsizes->fontsize_text)[ff_offset_olay]); +debug_printf("fontsize_fbass = %f\n", (m->fontsizes->fontsize_text)[ff_offset_fbass]); debug_printf("fullbarend = %B\n", m->fullbarend); debug_printf("gracespacing = %f %f\n", m->gracespacing[0], @@ -965,7 +966,7 @@ } debug_printf("stavesizes = "); -for (i = 1; i <= max_stave; i++) +for (i = 1; i <= MAX_STAVE; i++) { int size = (m->stavesizes)[i]; if (size != 1000) debug_printf("%d/%f ", i, size); diff -Nru pmw-4.29/src/error.c pmw-4.30/src/error.c --- pmw-4.29/src/error.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/error.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 2nd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for handling errors. There are some spares in the @@ -36,7 +36,7 @@ { rc_disaster, "Internal failure - store overlap downwards (%x %d %x)\n" }, { rc_serious, "Unable to open file \"%s\": %s\n" }, /* 5-9 */ -{ rc_serious, "%s\n" }, +{ rc_serious, "Mis-placed %s (does not immediately follow a note)\n" }, { rc_serious, "Wrong data type on stack for \"%s\" while drawing \"%s\" %s\n" }, { rc_disaster, "Unable to open font file \"%s\": %s (check PMW installation)\n" }, { rc_serious, "Defined name expected after \"&\"\n" }, @@ -206,11 +206,13 @@ { rc_failed, "Metrics file for font \"%s\" not found in \"%s\" or \"%s\"\n" }, { rc_serious, "Unknown accent number %d\n" }, { rc_serious, "Can't have both staccato and staccatissimo\n" }, -{ rc_disaster, "PostScript font \"%s\" not found in \"%s\" or \"%s\"\n" } /* 130-134 */ +{ rc_disaster, "PostScript font \"%s\" not found in \"%s\" or \"%s\"\n" }, +{ rc_disaster, "Too many text strings before a note (%d maximum)\n" }, +{ rc_disaster, "Too many notes in a chord (%d maximum)\n" } }; -#define error_maxerror 130 /* Tests are in misctests/Errors */ +#define error_maxerror 132 /* Tests are in misctests/Errors */ /* Save some typing */ diff -Nru pmw-4.29/src/font.c pmw-4.30/src/font.c --- pmw-4.29/src/font.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/font.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,11 +2,11 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2013 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ /* Re-coded for Unicode support: August 2005 */ -/* This file last modified: December 2013 */ +/* This file last modified: May 2018 */ /* This file contains code for handling text fonts */ @@ -802,7 +802,7 @@ font_addbasefont(uschar *psfont) { fontstr *fs = &(font_List[font_basecount]); -if (font_basecount >= max_fonts) { error_moan(26, max_fonts); return; } +if (font_basecount >= MAX_FONTS) { error_moan(26, MAX_FONTS); return; } fs->psname = malloc(Ustrlen(psfont)+1); Ustrcpy(fs->psname, psfont); fs->widths = NULL; @@ -945,7 +945,7 @@ lastc >= 0 && lastc <= 0xffff && c <= 0xffff) { int top, bot, mid; - unsigned int pair = (lastc << 16) | c; + unsigned int pair = (unsigned int)((unsigned int)lastc << 16) | c; bot = 0; top = kerncount; diff -Nru pmw-4.29/src/globals.c pmw-4.30/src/globals.c --- pmw-4.29/src/globals.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/globals.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2013 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: October 2013 */ +/* This file last modified: May 2018 */ /* This file contains all the global data */ @@ -108,8 +108,8 @@ int main_lastmovement = 0; int main_lastpage; int main_magnification; -int main_max_bars = def_max_bars; -int main_max_movements = def_max_movements; +int main_max_bars = DEF_MAX_BARS; +int main_max_movements = DEF_MAX_MOVEMENTS; int main_maxvertjustify; uschar *main_musicchoice = US"PMW-Music"; int main_notenum; @@ -127,7 +127,7 @@ int main_sheetwidth; BOOL main_shownlogo = FALSE; int main_stavemagn; -int main_staves[stave_bitvec_size] = { -1, -1 }; +int main_staves[STAVE_BITVEC_SIZE] = { -1, -1 }; int main_storetotal = 0; int main_storestaves = 0; int main_stretchrespacethresh = 1075; @@ -223,7 +223,7 @@ BOOL out_lastnotebeamed; int out_lastnotex; int out_laststave; -uschar out_laststemup[max_stave+1]; +uschar out_laststemup[MAX_STAVE+1]; BOOL out_lineendflag; BOOL out_makedraw = FALSE; int out_manyrest; @@ -260,8 +260,8 @@ sysblock *out_sysblock; int out_textnextabove; int out_textnextbelow; -b_textstr *out_textqueue[20]; -b_textXstr *out_textXqueue[20]; +b_textstr *out_textqueue[TEXT_QUEUE_SIZE]; +b_textXstr *out_textXqueue[TEXT_QUEUE_SIZE]; int out_textqueueptr; b_textXstr *out_textX; int out_timecount; @@ -325,7 +325,7 @@ workposstr *page_postable; BOOL page_savehadmovt; int page_sgnext; -unsigned int page_showtimes[stave_bitvec_size]; +unsigned int page_showtimes[STAVE_BITVEC_SIZE]; int *page_ssnext; int *page_ssehere; int *page_ssenext; @@ -333,7 +333,7 @@ startlinestr *page_startline; BOOL page_startlinebar; int page_stave; -unsigned int page_stavemap[stave_bitvec_size]; +unsigned int page_stavemap[STAVE_BITVEC_SIZE]; uschar *page_sysclef; sysblock *page_sysblock; sysblock **page_sysprevptr; @@ -449,6 +449,8 @@ int stave_maxpitch; int stave_minpitch; BOOL stave_notes; +int stave_noteden; +int stave_notenum; int stave_octave; int stave_olfont; int stave_olsize; @@ -488,9 +490,10 @@ int stave_transpose; int stave_transpose_letter; BOOL stave_transposedaccforce; +BOOL stave_tripletize; int stave_ulfont; int stave_ulsize; -BOOL stave_use_draw = FALSE; +int stave_use_draw = 0; BOOL stave_use_widechars = TRUE; int string_font; diff -Nru pmw-4.29/src/init.c pmw-4.30/src/init.c --- pmw-4.29/src/init.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/init.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains initializing and other housekeeping functions. */ @@ -87,29 +87,27 @@ *************************************************/ /* This is called before argument decoding is done. It is passed the argument -list, and it has the opportunity of modifying that list. Unless configured not -to include this code, we search for a .pmwrc file and stuff it on the front of -the arguments. +list, and it has the opportunity of modifying that list as it copies it into a +new vector. Unless configured not to include this code, we search for a .pmwrc +file and stuff it on the front of the arguments. Arguments: argc argc from main() argv argv from main() - newargvptr where to return the possibly modified argv + nargv where to return the possibly modified argv arg_pattern the argument decoding pattern, to check for validity Returns: new argc value */ int -init_command(int argc, char **argv, char ***newargvptr, const char *arg_pattern) +init_command(int argc, char **argv, char **nargv, const char *arg_pattern) { -char **nargv; int ap = 0; int nargc = 0; (void)argc; /* Unused; avoid compiler warning */ -*newargvptr = nargv = malloc(100 * sizeof(char *)); nargv[nargc++] = argv[ap++]; /* Program name */ /* This will need to be cut out on non-Unix-like systems */ diff -Nru pmw-4.29/src/main.c pmw-4.30/src/main.c --- pmw-4.29/src/main.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/main.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains initializing code, including the main program, which is @@ -48,7 +48,7 @@ "c/k/n," "debug/s," "dbl=drawbarlines/s," - "dsl=drawstavelines/s," + "dsl=drawstavelines=drawstafflines/n=3," "dsb/k," "dtp/k/n," "duplex/s," @@ -65,7 +65,7 @@ "midi/k," "mb=midibars/k," "mm=midimovement/k/n," - "nr=norepeats/s," + "nr=norepeats=norepeat/s," "nw=nowidechars/s," "o/k," "p/k," @@ -133,6 +133,9 @@ static int dsb_movement = -1; static int dsb_stave = -1; +/* Vector for modified command line options */ + +static char **newargv; /************************************************* @@ -152,9 +155,9 @@ printf("-debug write debugging info to stderr\n"); printf("-dbl synonym for -drawbarlines\n"); printf("-drawbarlines don't use characters for bar lines\n"); -printf("-drawstavelines don't use characters for stave lines\n"); +printf("-drawstavelines [] don't use characters for stave lines\n"); printf("-dsb ,, write debugging bar data (movement, stave, bar) \n"); -printf("-dsl synonym for -drawstavelines\n"); +printf("-dsl [] synonym for -drawstavelines\n"); printf("-dtp write debugging position data (-1 for all bars)\n"); printf("-duplex set duplex printing in the PostScript\n"); printf("-eps output encapsulated PostScript\n"); @@ -250,10 +253,10 @@ pagestr *p = main_pageanchor; int movt; int laststave = -1; -int toppitch[max_stave+1]; -int botpitch[max_stave+1]; -int totalpitch[max_stave+1]; -int notecount[max_stave+1]; +int toppitch[MAX_STAVE+1]; +int botpitch[MAX_STAVE+1]; +int totalpitch[MAX_STAVE+1]; +int notecount[MAX_STAVE+1]; info_printf("Data store used = "); if (main_storetotal < 10000) info_printf("%d", main_storetotal); @@ -403,7 +406,7 @@ sss++; t = strtol(sss, &sss, 0); } - if (t < s || t > max_stave) return; /* Not reached end will give error */ + if (t < s || t > MAX_STAVE) return; /* Not reached end will give error */ for (i = s; i <= t; i++) mac_setstave(map, i); while (*sss == ',' || *sss == ' ') sss++; } @@ -546,9 +549,14 @@ if (results[arg_norepeats].number != 0) play_repeats = FALSE; if (results[arg_nowidechars].number != 0) stave_use_widechars = FALSE; -if (results[arg_drawstavelines].number != 0) stave_use_draw = TRUE; if (results[arg_drawbarlines].number != 0) bar_use_draw = TRUE; +/* Draw stave lines instead of using font characters: the thickness can +optionally be altered. */ + +if (results[arg_drawstavelines].presence != arg_present_not) + stave_use_draw = results[arg_drawstavelines].number; + /* Deal with stave selection */ if (results[arg_s].text != NULL) @@ -665,6 +673,19 @@ /************************************************* +* Exit function * +*************************************************/ + +/* Used to free various chunks of memory. */ + +static void +clean_up(void) +{ +free(newargv); +} + + +/************************************************* * Entry Point * *************************************************/ @@ -672,7 +693,6 @@ main(int argc, char **argv) { int newargc; -char **newargv; uschar to_buffer[256]; verify = FALSE; ps_file = stdout; @@ -685,17 +705,19 @@ midi_voices = US MIDIVOICES; midi_perc = US MIDIPERC; +(void)atexit(clean_up); version_init(); -font_List = malloc(max_fonts * sizeof(fontstr)); +font_List = malloc(MAX_FONTS * sizeof(fontstr)); font_table = malloc(font_tablen * sizeof(int)); -beam_stemadjusts = malloc(max_beamsize); +beam_stemadjusts = malloc(MAX_BEAMSIZE); movement = malloc((main_max_movements+1) * sizeof(movtstr *)); /* Decode the (possibly modified) command line. */ -newargc = init_command(argc, argv, &newargv, arg_pattern); +newargv = malloc(100 * sizeof(char *)); +newargc = init_command(argc, argv, newargv, arg_pattern); decode_command(newargc, newargv); if (verify) { diff -Nru pmw-4.29/src/midi.c pmw-4.30/src/midi.c --- pmw-4.29/src/midi.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/midi.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for writing a MIDI file */ @@ -20,6 +20,8 @@ uschar data[8]; } midi_event; +enum { HR_NONE, HR_REPEATED, HR_PLAYON }; + /************************************************* * Local variables * @@ -33,27 +35,30 @@ static int last_written_time; static int running_status; -static uschar midi_channel[max_stave+1]; -static uschar midi_channel_volume[midi_maxchannel]; +static uschar midi_channel[MAX_STAVE+1]; +static uschar midi_channel_volume[MIDI_MAXCHANNEL]; static FILE *midi_file; -static uschar midi_note[max_stave+1]; +static uschar midi_note[MAX_STAVE+1]; static int play_bar; +static int play_bar_moff; static movtstr *play_movt; static int play_nextbar; +static int play_nextbar_moff; static BOOL play_onebar_only = FALSE; -static int play_staves[stave_bitvec_size] = { -1, -1 }; +static int play_staves[STAVE_BITVEC_SIZE] = { -1, -1 }; static int play_tempo; static int play_volume = 127; static int repeat_bar; +static int repeat_bar_moff; static int repeat_count; static int repeat_endbar; -static uschar stavetie[max_stave+1]; -static signed char midi_transpose[max_stave+1]; -static uschar stave_volume[max_stave+1]; +static uschar stavetie[MAX_STAVE+1]; +static signed char midi_transpose[MAX_STAVE+1]; +static uschar stave_volume[MAX_STAVE+1]; /************************************************* @@ -333,8 +338,9 @@ static void writebar(BOOL is_lastbar) { -BOOL hadrepeat = FALSE; BOOL oknbar = TRUE; +int hadrepeat = HR_NONE; +int maxmoff = 0; int stave; int *ptc = play_movt->play_tempo_changes; int this_barlength = find_barlength(); @@ -371,6 +377,8 @@ for (stave = 1; stave <= play_movt->laststave; stave++) { + int moff = 0; + if (mac_teststave(play_staves, stave)) { bstr *p = ((play_movt->stavetable)[stave])->barindex[play_bar]; @@ -379,7 +387,6 @@ { int midi_stave_status, midi_stave_pitch, midi_stave_velocity; int playtranspose = midi_transpose[stave]; - int moff = 0; int adjustlength = 0; int type = p->type; int tremolo = -1; @@ -406,22 +413,47 @@ moff = 0; break; + /* If a previous stave saw a repeat, hadrepeat is set to indicate + what has been done. */ + case b_rrepeat: - if (play_repeats && moff == this_barlength && !play_onebar_only && !hadrepeat) + if (play_repeats) { - if (repeat_count == 1) + if (!play_onebar_only) { - play_nextbar = repeat_bar; - repeat_endbar = play_bar; - repeat_count++; + switch (hadrepeat) + { + case HR_PLAYON: + break; + + case HR_REPEATED: + goto NEXT_STAVE; + + default: + case HR_NONE: + if (repeat_count == 1) + { + hadrepeat = HR_REPEATED; + play_nextbar = repeat_bar; + play_nextbar_moff = repeat_bar_moff; + repeat_endbar = play_bar; + repeat_count++; + goto NEXT_STAVE; /* Skip rest of bar */ + } + else + { + hadrepeat = HR_PLAYON; + if (play_bar == repeat_endbar) repeat_count = 1; + } + break; + } } - else if (play_bar == repeat_endbar) repeat_count = 1; - hadrepeat = TRUE; } break; case b_lrepeat: - if (moff == 0) repeat_bar = play_bar; + repeat_bar = play_bar; + repeat_bar_moff = moff; break; case b_nbar: @@ -434,8 +466,11 @@ if (second > 0) { play_bar = second; + play_bar_moff = 0; play_nextbar = play_bar + 1; + play_nextbar_moff = 0; repeat_bar = play_bar; + repeat_bar_moff = 0; repeat_count = 1; writebar(is_lastbar); } @@ -536,7 +571,7 @@ /* nf_noplay is set when a note has already been played, because of a previous tie, which might have been in a previous bar. */ - if ((noteson || midi_for_notes_off) && + if ((noteson || midi_for_notes_off) && moff >= play_bar_moff && note->spitch != 0 && (note->flags & nf_noplay) == 0) { /* Get a list of pitches in a chord, and leave the general @@ -553,7 +588,7 @@ while (note->type == b_chord); /* Advance to start of following note */ - + nstart += length; /* If the note is followed by a tie, find the next note or @@ -564,12 +599,12 @@ accumulating will be output at the end of this bar. Set the noplay flag in the next notes, to stop them playing again later. Continue for multiple ties. */ - + while (note->type == b_tie) { int i, nlength; note = misc_nextnote(note, NULL); - + if (note == NULL && play_bar + tiebarcount <= play_movt->barcount) { @@ -579,7 +614,7 @@ note = misc_nextnote(note, NULL); } if (note == NULL) break; - + nlength = note->length; do { @@ -600,7 +635,7 @@ note->flags |= nf_noplay; pitchstart[pitchcount++] = nstart; } - + mac_advancechord(note); } while (note->type == b_chord); @@ -608,7 +643,7 @@ } /* Handle some common scrubbing */ - + if (tremolo > 0 && !thisnotetied) { int ttype = (tremolo == or_trem1)? 1 : 2; @@ -622,26 +657,26 @@ } for (scrubcount = 0; scrubcount < scrub; scrubcount++) - { + { int pc = pitchcount; - + /* For each required pitch, set up the events to make a sound. The lengths may be different because of tied/non-tied notes in chords, but these can only happen when not scrubbing. */ - + while (--pc >= 0) { int pitch = pitchlist[pc] + playtranspose; - int start = moff + pitchstart[pc] + + int start = moff - play_bar_moff + pitchstart[pc] + scrubcount * (pitchlen[pc]/scrub); - + /* We have to schedule a note on and a note off event. Use note on with zero velocity for note off, as that means running status can be used. MIDI middle C is 60; PMW uses 48, so first adjust the pitch. */ - + pitch = midi_stave_pitch? midi_stave_pitch : (pitch + 12); - + next_event->time = start; next_event->seq = next_event_seq++; next_event->data[0] = 3; @@ -649,7 +684,7 @@ next_event->data[2] = pitch; next_event->data[3] = midi_stave_velocity; next_event++; - + next_event->time = start + (pitchlen[pc]/scrub); next_event->seq = next_event_seq++; next_event->data[0] = 3; @@ -658,7 +693,7 @@ next_event->data[3] = 0; next_event++; } - } + } } stavetie[stave] = thisnotetied; @@ -674,9 +709,10 @@ } } } + NEXT_STAVE: + if (moff > maxmoff) maxmoff = moff; } - /* Sort and output the items we've created, along with any events left over from the previous bar (ending tied notes). We relativize the times, and make use of running status. Stop when we hit either the end, or an event that is @@ -724,7 +760,7 @@ /* Set time for start of next bar */ -last_written_time -= this_barlength; +last_written_time -= (maxmoff - play_bar_moff); } @@ -775,7 +811,7 @@ /* Stave selection is the main stave selection */ -for (i = 0; i < stave_bitvec_size; i++) +for (i = 0; i < STAVE_BITVEC_SIZE; i++) play_staves[i] = play_movt->staves[i] & main_staves[i]; /* Initialize the tie information */ @@ -842,7 +878,7 @@ /* Assign MIDI voices to MIDI channels if required. */ -for (i = 1; i <= midi_maxchannel; i++) +for (i = 1; i <= MIDI_MAXCHANNEL; i++) { if (play_movt->midi_voice[i-1] < 128) { @@ -963,14 +999,17 @@ /* Now write the bars */ repeat_bar = play_bar; +repeat_bar_moff = 0; repeat_endbar = -1; repeat_count = 1; for (play_bar = start_bar; play_bar <= end_bar;) { play_nextbar = play_bar + 1; + play_nextbar_moff = 0; writebar(play_bar == end_bar); play_bar = play_nextbar; + play_bar_moff = play_nextbar_moff; } /* Mark the end of the track, and fill in its length before closing the file */ diff -Nru pmw-4.29/src/misc.c pmw-4.30/src/misc.c --- pmw-4.29/src/misc.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/misc.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2008 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: December 2008 */ +/* This file last modified: May 2018 */ /* This file contains code for miscellanous functions used when paginating, @@ -84,21 +84,32 @@ misc_keywidth(int key, int clef) { pkeystr *pk; +int width; +int key63 = key & 63; + +DEBUG(("misc_keywidth() key=%d clef=%d\n", key, clef)); for (pk = main_printkey; pk != NULL; pk = pk->next) - { if (key == pk->key && clef == pk->clef) break; } + { + if (key63 == pk->key && clef == pk->clef && + pk->movt_number <= curmovt->number) + break; + } if (pk != NULL) { - return string_width(pk->string, font_mf, 10000); + width = string_width((key>63)? pk->cstring : pk->string, font_mf, 10000); } else { - int n = main_keysigtable[key & 63]; - return abs(n) * + int n = main_keysigtable[key63]; + width = abs(n) * (curmovt->accspacing)[(key>63)? ac_natural : (n>0)?ac_sharp : ac_flat]; } + +DEBUG(("misc_keywidth() = %d\n", width)); +return width; } @@ -130,11 +141,12 @@ if (!curmovt->showtime) return 0; /* First see if this time signature has special strings specified for its -printing. */ +printing. The specification must have happened in this movement or earlier to +be applicable. */ while (pt != NULL) { - if (pt->time == ts) break; + if (pt->time == ts && pt->movt_number <= curmovt->number) break; pt = pt->next; } diff -Nru pmw-4.29/src/out1.c pmw-4.30/src/out1.c --- pmw-4.29/src/out1.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/out1.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for outputting a page */ @@ -572,7 +572,7 @@ (curmovt->startline)->clefspace, out_ystave, out_cont[stave].clef, 10000, FALSE); - if ((out_sysblock->cont[stave]).key != 2) + if (misc_keywidth(out_cont[stave].key, out_cont[stave].clef) != 0) out_writekey(out_sysblock->keyxposition + out_sysblock->xjustify, out_ystave, out_cont[stave].clef, out_cont[stave].key); @@ -633,7 +633,7 @@ if (out_sysblock->systemdepth > 0) { - int bracketed[stave_bitvec_size]; + int bracketed[STAVE_BITVEC_SIZE]; int bar = out_bar; DEBUG(("joining signs\n")); diff -Nru pmw-4.29/src/out2.c pmw-4.30/src/out2.c --- pmw-4.29/src/out2.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/out2.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2009 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: January 2009 */ +/* This file last modified: May 2018 */ /* This file contains miscellaneous subroutines for outputting a page */ @@ -247,22 +247,28 @@ out_writekey(int x, int y, int clef, int key) { int i, ch, chwidth, n, *order; +int key63 = key & 63; pkeystr *pk; for (pk = main_printkey; pk != NULL; pk = pk->next) - { if (key == pk->key && clef == pk->clef) break; } + { + if (key63 == pk->key && clef == pk->clef && + pk->movt_number <= curmovt->number) + break; + } /* There is a special string for this key. */ if (pk != NULL) { - out_string(pk->string, font_mf, 10*main_stavemagn, x, y, 0); + out_string((key >63)? pk->cstring : pk->string, font_mf, 10*main_stavemagn, + x, y, 0); return; } /* Handle "normal" key signature printing */ -if ((n = main_keysigtable[key & 63]) > 0) +if ((n = main_keysigtable[key63]) > 0) { ch = mc_sharp; chwidth = (curmovt->accspacing)[ac_sharp]; @@ -323,11 +329,12 @@ if (!curmovt->showtime) return; /* First see if this time signature has special strings specified for its -printing. */ +printing. The printtime directive must have happened in this movement or +earlier for it to be applicable. */ while (pt != NULL) { - if (pt->time == ts) break; + if (pt->time == ts && pt->movt_number <= curmovt->number) break; pt = pt->next; } diff -Nru pmw-4.29/src/pagehdr.h pmw-4.30/src/pagehdr.h --- pmw-4.29/src/pagehdr.h 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/pagehdr.h 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2013 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: March 2013 */ +/* This file last modified: May 2018 */ /* This is the header file for the pagination routines. It contains mostly definitions of shared variables. Many of the structures used are more global, @@ -75,7 +75,7 @@ extern workposstr *page_postable; /* working position table */ extern BOOL page_savehadmovt; /* temp save */ extern int page_sgnext; /* system gap for next system */ -extern unsigned int page_showtimes[stave_bitvec_size]; /* which staves require time sigs */ +extern unsigned int page_showtimes[STAVE_BITVEC_SIZE]; /* which staves require time sigs */ extern int *page_ssnext; /* spacing table for next system */ extern int *page_ssehere; /* ensure table for this system */ extern int *page_ssenext; /* ensure table for next system */ @@ -83,7 +83,7 @@ extern startlinestr *page_startline; /* current start line data */ extern BOOL page_startlinebar; /* flags start of line */ extern int page_stave; /* current stave */ -extern unsigned int page_stavemap[stave_bitvec_size]; /* copy of movement stave bits */ +extern unsigned int page_stavemap[STAVE_BITVEC_SIZE]; /* copy of movement stave bits */ extern uschar *page_sysclef; /* clef maintenance */ extern sysblock *page_sysblock; /* current block */ extern sysblock **page_sysprevptr; /* points to where to hang the next on */ diff -Nru pmw-4.29/src/paginate.c pmw-4.30/src/paginate.c --- pmw-4.29/src/paginate.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/paginate.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for splitting the music bars into systems and making @@ -27,14 +27,14 @@ * Pagination function * *************************************************/ -/* This function is called when the music has been successfully read in to +/* This function is called when the music has been successfully read in to memory. Arguments: none Returns: nothing */ -void +void paginate_go(void) { int i; @@ -111,12 +111,12 @@ page_justify = curmovt->justify; page_topmargin = curmovt->topmargin; -/* Working clefs while measuring. The current clef is needed only for measuring -special keys, which may depend on the clef. We can't use the page_cont versions -because they are not updated until after we know which bars are to be included +/* Working clefs while measuring. The current clef is needed only for measuring +special keys, which may depend on the clef. We can't use the page_cont versions +because they are not updated until after we know which bars are to be included in this system. */ -page_sysclef = store_Xget(sizeof(uschar) * (max_stave + 1)); +page_sysclef = store_Xget(sizeof(uschar) * (MAX_STAVE + 1)); /* Loop that does the job; page_state controls which action is taken. */ @@ -135,13 +135,13 @@ { page_barlinewidth = (curmovt->notespacing)[minim]/2 - 5000; if (page_barlinewidth < 3000) page_barlinewidth = 3000; - curmovt->barlinespace = page_barlinewidth; + curmovt->barlinespace = page_barlinewidth; } else page_barlinewidth = curmovt->barlinespace; - memcpy(page_stavemap, curmovt->staves, stave_bitvec_size*sizeof(int)); - page_ulaysize = (curmovt->fontsizes)->fontsize_ulay; - page_olaysize = (curmovt->fontsizes)->fontsize_olay; + memcpy(page_stavemap, curmovt->staves, STAVE_BITVEC_SIZE*sizeof(int)); + page_ulaysize = ((curmovt->fontsizes)->fontsize_text)[ff_offset_ulay]; + page_olaysize = ((curmovt->fontsizes)->fontsize_text)[ff_offset_olay]; /* Deal with heading texts if we know the movement is to go on this page. If we are at the top of a page, do the page heading unless it has been turned @@ -163,12 +163,12 @@ (barposstr *)store_Xget(curmovt->barcount * sizeof(barposstr)) - 1; /* Now set up to process the bars. Start by finding the highest possible - stave number. */ + stave number. If no staves are present in the movement, the result is -1. */ page_lastwanted = -1; { int x; - for (i = stave_bitvec_size - 1; i >= 0; i--) + for (i = STAVE_BITVEC_SIZE - 1; i >= 0; i--) { if ((x = curmovt->staves[i]) != 0) { @@ -190,7 +190,7 @@ /* Initialize values in the accepted data structure */ - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) page_accepteddata->notsuspend[i] = curmovt->staves[i] & (~curmovt->suspend[i]); memcpy(page_accepteddata->notespacing, curmovt->notespacing, 8*sizeof(int)); @@ -204,12 +204,13 @@ page_accepteddata->stavenames[i] = sn; } - /* Stavespacing is set only if it has been mentioned */ + /* Stavespacing is set only if it has been mentioned. If not, set the + default. */ - if (curmovt->stave_spacing == NULL) + if (curmovt->stave_spacing == NULL && page_lastwanted >= 0) { page_ssnext = store_Xget((page_lastwanted+1)*sizeof(int)); - page_ssnext[0] = 0; + page_ssnext[0] = 0; /* No space for stave 0 */ for (i = 1; i <= page_lastwanted; i++) page_ssnext[i] = 44000; } else page_ssnext = curmovt->stave_spacing; @@ -324,7 +325,7 @@ page_sysblock->flags = 0; page_sysblock->movt = curmovt; memcpy(page_sysblock->notsuspend, page_accepteddata->notsuspend, - stave_bitvec_size*sizeof(int)); + STAVE_BITVEC_SIZE*sizeof(int)); mac_initstave(page_sysblock->showtimes, 0); page_sysblock->barstart = page_barnumber; page_sysblock->barend = page_barnumber; @@ -334,14 +335,14 @@ page_sysblock->cont = misc_copycontstr(page_cont, page_lastwanted, TRUE); - /* Set up working clefs at start of system; these are needed only for use - when measuring the widths of special key signatures, which may depend on - the clef. We can't use the page_cont values because they don't get updated + /* Set up working clefs at start of system; these are needed only for use + when measuring the widths of special key signatures, which may depend on + the clef. We can't use the page_cont values because they don't get updated dynamically ('cause we don't want to go past the bars we accept). */ - + for (i = 1; i <= page_lastwanted; i++) - page_sysclef[i] = page_sysblock->cont[i].clef; - + page_sysclef[i] = page_sysblock->cont[i].clef; + page_sysblock->ulevel = store_Xget((page_lastwanted+1) * sizeof(int)); page_sysblock->olevel = store_Xget((page_lastwanted+1) * sizeof(int)); @@ -370,17 +371,17 @@ page_accepteddata->endtime = FALSE; page_accepteddata->endbar = page_barnumber - 1; page_accepteddata->count = 0; - + /* Save the initial notespacing so that it can be restored for re-spacing bars when there's a big stretch factor. */ - + memcpy(save_notespacing, page_accepteddata->notespacing, 8*sizeof(int)); /* If all staves are suspended (can happen during part extraction with the use of [newline] or with S! bars) unsuspend the lowest numbered stave. If any staves get resumed in the system, this gets undone again later. */ - if (!mac_anystave(page_sysblock->notsuspend)) for (i = 0; i < stave_bitvec_size; i++) + if (!mac_anystave(page_sysblock->notsuspend)) for (i = 0; i < STAVE_BITVEC_SIZE; i++) { if (curmovt->staves[i] != 0) { @@ -473,7 +474,7 @@ if (tw > timewidth) timewidth = tw; } } - memcpy(page_sysblock->showtimes, page_showtimes, stave_bitvec_size * sizeof(int)); + memcpy(page_sysblock->showtimes, page_showtimes, STAVE_BITVEC_SIZE * sizeof(int)); mac_initstave(page_showtimes, 0); } @@ -482,7 +483,7 @@ /* Set the first note position */ page_sysblock->firstnoteposition = - timexposition + timewidth + page_leftbarspace + page_startline->notespace; + timexposition + timewidth + PAGE_LEFTBARSPACE + page_startline->notespace; /* The xposition is an absolute position, used during calculations */ @@ -523,13 +524,13 @@ of a system so that re-measuring the bar, for the next system, doesn't give a length warning again. If we back up two bars, in order to fit in a key/time signature, lengthwarn is set to 2. */ - + nextbarwidth = page_makepostable(lengthwarn-- < 1); - + /* Compute position if bar were accepted */ xposition = page_accepteddata->xposition + nextbarwidth; - + /* If a stave has been resumed in this bar, or if a stave name has changed, it may be necessary to change the width of the stave name space (i.e. startxposition). This may make the bar unacceptable. @@ -543,7 +544,7 @@ adjustkeyposition = 0; adjusttimeposition = 0; - + if (mac_diffstave(page_nextdata->notsuspend, page_accepteddata->notsuspend) || page_nextdata->stavenames != page_accepteddata->stavenames) { @@ -602,16 +603,16 @@ accept one bar - it gets squashed (with a warning). If a fixed layout has been specified, accept bars until we have one more than required. */ - if ((page_layoutptr < 0 && page_accepteddata->count > 0 && + if ((page_layoutptr < 0 && page_accepteddata->count > 0 && xposition > curmovt->linelength) || - (page_layoutptr >= 0 && + (page_layoutptr >= 0 && page_accepteddata->count >= curmovt->layout[page_layoutptr])) { int overrun = xposition - curmovt->linelength; - lengthwarn = 1; /* Don't warn when we reprocess the bar */ + lengthwarn = 1; /* Don't warn when we reprocess the bar */ /* See if cautionary signature(s) are needed. */ - + if (!page_startlinebar && (page_warnkey || page_warntime)) { xposition = page_accepteddata->xposition + page_xxwidth; @@ -630,7 +631,7 @@ page_barcount -= page_lastbarcountbump; page_barnumber -= page_lastbarcountbump; overrun = xposition - curmovt->linelength; - lengthwarn++; /* Two bars not to warn for */ + lengthwarn++; /* Two bars not to warn for */ } else { @@ -640,7 +641,7 @@ } /* Room for key/time -- set flag(s) and xposition */ - + else { page_accepteddata->xposition = xposition + page_barlinewidth; @@ -688,11 +689,11 @@ page_previousdata->endkey = page_warnkey; page_previousdata->endtime = page_warntime; } - else + else { page_previousdata->endkey = FALSE; page_previousdata->endtime = FALSE; - } + } /* Allow for key & time signature positioning adjustment */ @@ -706,7 +707,7 @@ /* Update xposition, endbar number, and counts */ page_accepteddata->xposition = xposition + page_barlinewidth; - + if (page_manyrest >= 2) { page_accepteddata->endbar += page_manyrest; @@ -742,9 +743,9 @@ case page_state_donesystem: { int startxposition = page_accepteddata->startxposition; - int barlinewidth = page_barlinewidth; + int barlinewidth = page_barlinewidth; int justbits, stretchn, stretchd, sysdepth, sysfootdepth; - + page_sysblock->stavenames = page_accepteddata->stavenames; page_sysblock->barend = page_accepteddata->endbar; @@ -754,7 +755,7 @@ there was one. */ if (mac_anystave(page_accepteddata->notsuspend)) - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) page_sysblock->notsuspend[i] = page_accepteddata->notsuspend[i]; /* Fix various initial positions */ @@ -811,14 +812,14 @@ main_stretchthreshden) || xposition > curmovt->linelength) { - int save_xxwidth = page_xxwidth; + int save_xxwidth = page_xxwidth; int xxadjust = page_sysblock->firstnoteposition + - ((page_accepteddata->endkey || page_accepteddata->endtime)? + ((page_accepteddata->endkey || page_accepteddata->endtime)? page_xxwidth + barlinewidth : 0); stretchn = curmovt->linelength - xxadjust; stretchd = xposition - xxadjust; - + page_sysblock->xjustify = 0; page_sysblock->flags |= sysblock_stretch; @@ -827,47 +828,47 @@ should not get any wider. Then compute revised stretching factors. Repeat if necessary, up to 4 times. Note that we have to keep re-stretching the barlinewidth. - - From release 4.22 we also do this when the stretching is actually + + From release 4.22 we also do this when the stretching is actually squashing by a large enough amount, which can happen when the layout directive forces more bars onto a line than would normally fit. This is necessary when there is underlay, where words might crash when a bar is squashed. (While testing this, it turns out that the squashing version - also sometimes kicks in after a stretching time round the loop, which + also sometimes kicks in after a stretching time round the loop, which sometimes overdoes things, it seems. It does no harm.) - + There's an option to prevent this new logic from happening, for old - files. It currently selects between three states: do nothing, do it only + files. It currently selects between three states: do nothing, do it only for over-stretching, do it for both over-stretching and squashing. */ page_layout_stretchn = stretchn; page_layout_stretchd = stretchn; /* sic - see below - it changes cumulatively */ - i = 0; + i = 0; while (i++ < 4 && ( - (mac_muldiv(stretchd, 1000, stretchn) > main_stretchrespacethresh && + (mac_muldiv(stretchd, 1000, stretchn) > main_stretchrespacethresh && opt_stretchrule >= 2) || (mac_muldiv(stretchn, 1000, stretchd) > main_stretchrespacethresh && opt_stretchrule >= 1) )) { - int j; + int j; page_layout_stretchd = mac_muldiv(page_layout_stretchd, stretchd, stretchn); xposition = page_sysblock->firstnoteposition; page_startlinebar = TRUE; /* becomes FALSE after one acceptance */ page_lastendwide = FALSE; /* at start of line */ page_lastenddouble = FALSE; /* ditto */ - - barlinewidth = mac_muldiv(barlinewidth, stretchn, stretchd); + + barlinewidth = mac_muldiv(barlinewidth, stretchn, stretchd); memcpy(page_nextdata->notespacing, save_notespacing, 8*sizeof(int)); - + /* Reset clefs at system start */ - + for (j = 1; j <= page_lastwanted; j++) - page_sysclef[j] = page_sysblock->cont[j].clef; - - for (page_barnumber = page_sysblock->barstart; + page_sysclef[j] = page_sysblock->cont[j].clef; + + for (page_barnumber = page_sysblock->barstart; page_barnumber <= page_sysblock->barend; page_barnumber++) { @@ -875,21 +876,21 @@ store_free(bp->vector); xposition += page_makepostable(FALSE) + barlinewidth; page_startlinebar = FALSE; - if (page_manyrest >= 2) page_barnumber += page_manyrest - 1; + if (page_manyrest >= 2) page_barnumber += page_manyrest - 1; } xposition -= barlinewidth; - if (page_accepteddata->endkey || page_accepteddata->endtime) + if (page_accepteddata->endkey || page_accepteddata->endtime) xposition += save_xxwidth + curmovt->barlinespace; /* Unstretched barlinewidth */ stretchd = xposition - xxadjust; - if (main_tracepos == (-1) || + if (main_tracepos == (-1) || (page_sysblock->barstart <= main_tracepos && - page_sysblock->barend >= main_tracepos)) + page_sysblock->barend >= main_tracepos)) debug_printf("i=%d bars %d-%d old=%d new=%d\n", i, - page_sysblock->barstart, page_sysblock->barend, - mac_muldiv(page_layout_stretchn, 1000, page_layout_stretchd), - mac_muldiv(stretchn, 1000, stretchd)); + page_sysblock->barstart, page_sysblock->barend, + mac_muldiv(page_layout_stretchn, 1000, page_layout_stretchd), + mac_muldiv(stretchn, 1000, stretchd)); } } @@ -930,7 +931,7 @@ the bar. For big stretches, it is in fact not enough to do this, as the stretched barlinewidth can make their positioning look silly. We move them to the left in this case. - + This is probably less relevant now that we re-lay-out lines to get the stretching factor down. */ @@ -1202,7 +1203,7 @@ curpage->spaceleft -= sysdepth + page_sysblock->systemgap; page_state = page_state_newsystem; page_lastsystem = page_sysblock; - + /* Update the vertical justification parameters if they changed in this system. */ diff -Nru pmw-4.29/src/pmwhdr.h pmw-4.30/src/pmwhdr.h --- pmw-4.29/src/pmwhdr.h 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/pmwhdr.h 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This is the main header file, imported by all other sources. */ @@ -31,6 +31,44 @@ #define DEBUG(x) if (debugging) debug_printf x + +/************************************************* +* Program parameters * +*************************************************/ + +#define DEF_MAX_BARS 500 /* Default max bars per movement */ +#define DRAW_BLOCKSIZE 256 /* Chunk size for draw routines */ +#define DRAW_STACKSIZE 100 /* Size of draw stack */ +#define LAYOUT_MAXSIZE 200 /* Max items in layout list */ +#define MAX_BEAMSIZE 100 /* Should be large enough for anything */ +#define MAX_CHORDSIZE 16 /* 16-note chords should be enough */ +#define MAX_DRAW_VARIABLE 19 /* Max number of a draw variable */ +#define MAX_FONTS 50 /* Maximum number of different fonts */ +#define MAX_INCLUDE 10 /* Max depth of included files */ +#define DEF_MAX_MOVEMENTS 50 /* Default max movements */ +#define MAX_POSTABLESIZE 400 /* Max number of entries */ +#define READ_BUFFERSIZE 1000 /* Input buffer size */ +#define MIDI_MAXCHANNEL 16 /* Maximum MIDI channel number */ +#define TEXT_QUEUE_SIZE 50 /* Max texts before a note */ + +/* Maximum stave is defined in terms of the length of the bit vector +that maps stave presence, suspension, etc. If STAVE_BITVEC_SIZE is +increased, some tables in tables.c must also be extended. Also, the +mac_initstave, mac_anystave and mac_samestave macros below must be +suitably modified. */ + +#define STAVE_BITVEC_SIZE 2 /* Number of ints in the bit vector */ +#define MAX_STAVE (STAVE_BITVEC_SIZE * 32 - 1) + +/* Typesetting parameters */ + +#define PAGE_LEFTBARSPACE 8000 /* Space at left of bar */ + + +/************************************************* +* Macros etc for character handling * +*************************************************/ + /* Some operating systems (naughtily, imo) include a definition for "uchar" in the standard header files, so we use "uschar". Solaris has u_char in sys/types.h. This is just a typing convenience, of course. */ @@ -229,39 +267,6 @@ /************************************************* -* Program parameters * -*************************************************/ - -#define def_max_bars 500 /* Default max bars per movement */ -#define draw_blocksize 256 /* Chunk size for draw routines */ -#define draw_stacksize 100 /* Size of draw stack */ -#define layout_maxsize 200 /* Max items in layout list */ -#define max_beamsize 100 /* Should be large enough for anything */ -#define max_chordsize 10 /* 10-note chords should be enough */ -#define max_draw_variable 19 /* Max number of a draw variable */ -#define max_fonts 50 /* Maximum number of different fonts */ -#define max_include 10 /* Max depth of included files */ -#define def_max_movements 50 /* Default max movements */ -#define max_postablesize 400 /* Max number of entries */ -#define read_buffersize 1000 /* Input buffer size */ -#define midi_maxchannel 16 /* Maximum MIDI channel number */ - -/* Maximum stave is defined in terms of the length of the bit vector -that maps stave presence, suspension, etc. If stave_bitvec_size is -increased, some tables in tables.c must also be extended. Also, the -mac_initstave, mac_anystave and mac_samestave macros below must be -suitably modified. */ - -#define stave_bitvec_size 2 /* Number of ints in the bit vector */ -#define max_stave (stave_bitvec_size * 32 - 1) - -/* Typesetting parameters */ - -#define page_leftbarspace 8000 /* Space at left of bar */ - - - -/************************************************* * Global Macros * *************************************************/ @@ -282,11 +287,11 @@ /* If MaxExtraFont is increased, check that font_IdStrings in tables.c contains sufficient identifying strings, and that ps_IdStrings in ps.c is of the right -size too. If MaxTextFont is changed, the initializing table init_fontsizes in +size too. If MaxFontSizes is changed, the initializing table init_fontsizes in tables.c must be made to be the correct size. */ -#define MaxTextFont 12 /* for different text sizes */ -#define MaxExtraFont 12 /* for different faces */ +#define MaxFontSizes 12 /* for different text sizes */ +#define MaxExtraFont 12 /* for different faces */ /* It is helpful to have names for the vertical offsets of the various lines @@ -387,7 +392,7 @@ #define mac_clearstave(a, z) \ a[z >> 5] &= ~main_bit[z & 0x1f] -/* Needs manual adjustment when stave_bitvec_size changes */ +/* Needs manual adjustment when STAVE_BITVEC_SIZE changes */ #define mac_initstave(a, b) \ a[0] = a[1] = b @@ -410,15 +415,15 @@ #define mac_testNstave2(a, b, z) \ ((a[z >> 5] & b[z >> 5] & main_bit[z & 0x1f]) == 0) -/* Needs manual adjustment when stave_bitvec_size changes */ +/* Needs manual adjustment when STAVE_BITVEC_SIZE changes */ #define mac_anystave(a) \ ((a[0] | a[1]) != 0) -/* Needs manual adjustment when stave_bitvec_size changes */ +/* Needs manual adjustment when STAVE_BITVEC_SIZE changes */ #define mac_diffstave(a, b) \ (a[0] != b[0] || a[1] != b[1]) -/* Needs manual adjustment when stave_bitvec_size changes */ +/* Needs manual adjustment when STAVE_BITVEC_SIZE changes */ #define mac_samestave(a, b) \ (a[0] == b[0] && a[1] == b[1]) @@ -537,6 +542,16 @@ } fontstr; +/* Offsets for special text font sizes and matrices, which follow in the same +vector as sizes specified by the user. */ + +#define ff_offset_ts (MaxFontSizes) +#define ff_offset_ulay (ff_offset_ts+1) +#define ff_offset_olay (ff_offset_ulay+1) +#define ff_offset_fbass (ff_offset_olay+1) +#define ff_offset_init (ff_offset_fbass+1) +#define SIZES_SIZE (ff_offset_init+1) + /* Structure for overall font sizes at standard magnification, and pointers to matrices for font stretching and shearing, where defined. */ @@ -550,16 +565,11 @@ int fontsize_footnote; int fontsize_rehearse; int fontsize_triplet; - int fontsize_repno; /* repeat bar number */ - int fontsize_restct; /* long rest count */ - int fontsize_trill; - int fontsize_vertacc; /* vertical accidentals */ - int fontsize_text[MaxTextFont]; - int fontsize_tsfont; /* These fonts are sometimes accessed */ - int fontsize_ulay; /* as additional text fonts, using */ - int fontsize_olay; /* the offsets defined below, so if */ - int fontsize_fbass; /* changing, keep the offsets in step. */ - int fontsize_init; /* This one too... */ + int fontsize_repno; /* repeat bar number */ + int fontsize_restct; /* long rest count */ + int fontsize_trill; + int fontsize_vertacc; /* vertical accidentals */ + int fontsize_text[SIZES_SIZE]; /* vector of sizes */ /* These must be in the same order as the font sizes, and music must be first. */ @@ -577,22 +587,9 @@ int *fontmatrix_restct; int *fontmatrix_trill; int *fontmatrix_vertacc; - int *fontmatrix_text[MaxTextFont]; - int *fontmatrix_tsfont; - int *fontmatrix_ulay; - int *fontmatrix_olay; - int *fontmatrix_fbass; - int *fontmatrix_init; + int *fontmatrix_text[SIZES_SIZE]; } fontsizestr; -/* Offsets for special text fonts */ - -#define ff_offset_ts (MaxTextFont) -#define ff_offset_ulay (ff_offset_ts+1) -#define ff_offset_olay (ff_offset_ulay+1) -#define ff_offset_fbass (ff_offset_olay+1) -#define ff_offset_init (ff_offset_fbass+1) - /* Data for spacing at the start of a line */ @@ -630,7 +627,8 @@ typedef struct ptimestr { struct ptimestr *next; - int time; + int movt_number; /* movement in which defined */ + int time; uschar *top; uschar *bot; uschar offsettop; @@ -641,9 +639,11 @@ typedef struct pkeystr { struct pkeystr *next; + int movt_number; /* movement in which defined */ int key; int clef; uschar *string; + uschar *cstring; } pkeystr; /* One transposed key masquerade item */ @@ -690,9 +690,9 @@ int moff; int xoff; int space; /* additional space required */ - int stemup[stave_bitvec_size]; /* bitmap of staves where there is an */ + int stemup[STAVE_BITVEC_SIZE]; /* bitmap of staves where there is an */ /* actual stem up, aka "posstaves" */ - int stemdown[stave_bitvec_size]; /* ditto for stem down */ + int stemdown[STAVE_BITVEC_SIZE]; /* ditto for stem down */ int auxid; /* identification of auxiliary items */ /* (may be -ve) */ } workposstr; @@ -723,7 +723,7 @@ int endbar; /* end bar number */ int count; /* count of bars */ int notespacing[8]; /* notespacing values */ - unsigned int notsuspend[stave_bitvec_size]; /* not suspended staves */ + unsigned int notsuspend[STAVE_BITVEC_SIZE]; /* not suspended staves */ snamestr **stavenames; /* stave name vector */ CBOOL endkey; /* line ends with key signature */ CBOOL endtime; /* line ends with time signature */ @@ -836,6 +836,7 @@ int maxbeamslope1; int maxbeamslope2; int movt_opt; + int number; int overlaydepth; int play_tempo; int rehearsalstyle; @@ -855,9 +856,9 @@ int underlaydepth; int underlaystyle; - unsigned int breakbarlines[stave_bitvec_size]; - unsigned int staves[stave_bitvec_size]; - unsigned int suspend[stave_bitvec_size]; + unsigned int breakbarlines[STAVE_BITVEC_SIZE]; + unsigned int staves[STAVE_BITVEC_SIZE]; + unsigned int suspend[STAVE_BITVEC_SIZE]; int clefwidths[clef_count]; int tailadjusts[8]; @@ -880,7 +881,7 @@ CBOOL underlayextenders; CBOOL unfinished; - signed char playtranspose[max_stave+1]; + signed char playtranspose[MAX_STAVE+1]; } movtstr; /* Layout of the data for an active line gap */ @@ -1022,9 +1023,9 @@ int keyxposition; /* position for key signature */ int timexposition; /* position for time signature */ int firstnoteposition; /* sic */ - unsigned int notsuspend[stave_bitvec_size]; + unsigned int notsuspend[STAVE_BITVEC_SIZE]; /* staves not suspended in this system */ - unsigned int showtimes[stave_bitvec_size]; + unsigned int showtimes[STAVE_BITVEC_SIZE]; /* staves which have starting time signatures */ short int barstart; /* starting bar number */ short int barend; /* ending bar number */ @@ -1206,7 +1207,7 @@ extern int main_sheetwidth; /* Width of paper */ extern BOOL main_shownlogo; /* FALSE if need to show logo on error */ extern int main_stavemagn; /* Magnification for current stave */ -extern int main_staves[stave_bitvec_size]; /* External stave selection */ +extern int main_staves[STAVE_BITVEC_SIZE]; /* External stave selection */ extern int main_storetotal; /* Total store used */ extern int main_storestaves; /* Store used for staves */ extern int main_stretchrespacethresh; /* Threshold for re-spacing */ @@ -1269,7 +1270,7 @@ extern int stave_bottoms[]; /* Levels of top/bottom lines of staves */ extern int stave_tops[]; -extern BOOL stave_use_draw; /* Use direct drawing for staves */ +extern int stave_use_draw; /* Use direct drawing for staves */ extern BOOL stave_use_widechars; /* Use 100-pt chars for staves */ extern const int utf8_table1[]; /* Various tables for UTF-8 processing */ @@ -1316,7 +1317,7 @@ extern int format_vsprintf(uschar *, const char *, va_list); /* ditto */ extern void info_printf(const char *, ...); -extern int init_command(int, char **, char ***, const char *); +extern int init_command(int, char **, char **, const char *); extern void main_tidyup(void); diff -Nru pmw-4.29/src/postable.c pmw-4.30/src/postable.c --- pmw-4.29/src/postable.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/postable.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains the main code for creating a position table for a bar. It @@ -68,7 +68,7 @@ int MaxTimeWidth = 0; /* widest final time signature */ int Oldlastendwide = page_lastendwide; /* previous bar's value */ int Oldlastenddouble = page_lastenddouble; /* this for double bar */ -int ulaymap[stave_bitvec_size]; /* map underlay staves */ +int ulaymap[STAVE_BITVEC_SIZE]; /* map underlay staves */ int largestmagn = 0; mac_initstave(ulaymap, 0); @@ -254,8 +254,8 @@ int flags = note->flags; int notetype = note->notetype; int pitch = note->spitch; - int upflags[stave_bitvec_size]; - int downflags[stave_bitvec_size]; + int upflags[STAVE_BITVEC_SIZE]; + int downflags[STAVE_BITVEC_SIZE]; mac_initstave(upflags, 0); mac_initstave(downflags, 0); @@ -331,7 +331,7 @@ /* Or in the stem flags and save extra space value if greater than what is there. */ - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) { pp->stemup[i] |= upflags[i]; pp->stemdown[i] |= downflags[i]; @@ -1579,7 +1579,7 @@ page_xxwidth += (page_warnkey && page_warntime)? ((MaxKeyWidth > MaxTimeWidth)? MaxKeyWidth:MaxTimeWidth) : (page_warnkey? MaxKeyWidth : MaxTimeWidth); - + /* Add notespace to midline bars */ /*** This would make the spacing as at line start, but stretching makes it diff -Nru pmw-4.29/src/preprocess.c pmw-4.30/src/preprocess.c --- pmw-4.29/src/preprocess.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/preprocess.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: Jun 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for handling "preprocessing" functions. */ @@ -74,14 +74,14 @@ if (Ustrcmp(word, "score") == 0) { - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) if (curmovt->staves[i] != ~0u) { OK = !OK; break; } } else if (Ustrcmp(word, "part") == 0) { - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) if (curmovt->staves[i] != ~0u) break; - if (i >= stave_bitvec_size) OK = !OK; + if (i >= STAVE_BITVEC_SIZE) OK = !OK; } /* For a stave list, we can't use a common routine with other directives @@ -90,7 +90,7 @@ else if (Ustrcmp(word, "staff") == 0 || Ustrcmp(word, "stave") == 0 || Ustrcmp(word, "staves") == 0) { - unsigned int map[stave_bitvec_size]; + unsigned int map[STAVE_BITVEC_SIZE]; mac_initstave(map, 0); mac_setstave(map, 0); /* Staff zero is always selected */ sigchNL(); @@ -113,7 +113,7 @@ } if (t < s) error_moan(21); - else if (t > max_stave) error_moan(22, max_stave+1); + else if (t > MAX_STAVE) error_moan(22, MAX_STAVE+1); else { for (i = s; i <= t; i++) mac_setstave(map, i); @@ -127,7 +127,7 @@ } } - for (i = 0; i < stave_bitvec_size; i++) + for (i = 0; i < STAVE_BITVEC_SIZE; i++) if (map[i] != curmovt->staves[i]) { OK = !OK; break; } } @@ -325,8 +325,8 @@ { FILE *f; - if (read_filestackptr >= max_include) - { error_moan(15, max_include); return; } + if (read_filestackptr >= MAX_INCLUDE) + { error_moan(15, MAX_INCLUDE); return; } if (read_ch == '\n' || !read_plainstring(word)) { error_moan(10, "File name in quotes"); return; } diff -Nru pmw-4.29/src/ps.c pmw-4.30/src/ps.c --- pmw-4.29/src/ps.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/ps.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for outputting things in PostScript */ @@ -485,7 +485,7 @@ unsigned int pair; GETCHAR(cc, p); - pair = (c << 16) | cc; + pair = ((unsigned int)c << 16) | cc; while (bot < top) { @@ -792,16 +792,18 @@ /* Output the stave using PostScript drawing primitives. */ -if (stave_use_draw) +if (stave_use_draw > 0) { int gap; - int thickness = (3*main_stavemagn)/10; + int thickness = (stave_use_draw*main_stavemagn)/10; if (ps_chcount > 0) ps_printf("\n"); switch(stavelines) { case 1: y -= 4*main_stavemagn; + /* Fall through */ case 2: y -= 4*main_stavemagn; + /* Fall through */ case 3: gap = 8*main_stavemagn; break; diff -Nru pmw-4.29/src/rdargs.c pmw-4.30/src/rdargs.c --- pmw-4.29/src/rdargs.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/rdargs.c 2018-06-15 15:50:03.000000000 +0000 @@ -27,7 +27,7 @@ where each keyitem is of the form - keyname[=keyname][/a][/k][/n|/s][/] + keyname[=keyname]*[/a][/k][/n|/s][/] Keynames separated by '=' are synonyms. The flags are as follows: diff -Nru pmw-4.29/src/read1.c pmw-4.30/src/read1.c --- pmw-4.29/src/read1.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read1.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 2nd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains part I of the code for reading in a PMW score file. */ @@ -24,7 +24,7 @@ *************************************************/ static int read_count; -static int read_staves[stave_bitvec_size]; /* Map of staves actually read */ +static int read_staves[STAVE_BITVEC_SIZE]; /* Map of staves actually read */ static int read_prevstave; /* Previous stave number */ static BOOL read_in_quotes; @@ -42,9 +42,9 @@ * Expand string with macros substitutions * *************************************************/ -/* This is called for input lines, and also for the arguments of nested macro -calls. It copies the input string, expanding any macros encountered. If a -comment character is encountered, the rest of the line is copied, for error +/* This is called for input lines, and also for the arguments of nested macro +calls. It copies the input string, expanding any macros encountered. If a +comment character is encountered, the rest of the line is copied, for error messages, but the returned end value does not include the comment. Arguments: @@ -53,10 +53,10 @@ outbuffer where to put the expanded line outlen length of the output buffer addNL if TRUE, add a newline character on the end - + Returns: pointer one past the end of the active part of the expanded string in outbuffer -*/ +*/ static uschar * expand_string(uschar *inptr, uschar *inend, uschar *outbuffer, int outlen, @@ -106,9 +106,9 @@ { if (s->data != NULL) { - macrostr *mm = (macrostr *)s->data; + macrostr *mm = (macrostr *)s->data; int k = Ustrlen(mm->text); - + /* Optimize the case with no arguments */ if (mm->argcount == 0) @@ -118,74 +118,74 @@ Ustrcpy(temp, mm->text); temp += k; } - + /* Otherwise have to process char by char, and read arguments, if any. */ - + else { int argcount = mm->argcount; uschar *pp = mm->text; - uschar *args[20]; + uschar *args[20]; uschar argbuff[2048]; - uschar *ap = argbuff; - + uschar *ap = argbuff; + /* Set up the default arguments */ - - for (i = 0; i < argcount; i++) args[i] = mm->args[i]; - + + for (i = 0; i < argcount; i++) args[i] = mm->args[i]; + /* Read given arguments, if any, increasing the count if more than the default number. */ - + if (*inptr == '(') { for (i = 0;; i++) { - int bracount = 0; - BOOL inquotes = FALSE; - uschar *ss = ap; - while (++inptr < inend && + int bracount = 0; + BOOL inquotes = FALSE; + uschar *ss = ap; + while (++inptr < inend && ((*inptr != ',' && *inptr != ')') || - bracount > 0 || inquotes)) + bracount > 0 || inquotes)) { - int cch = *inptr; - if (cch == '&' && !isalnum(inptr[1])) - *ap++ = *(++inptr); + int cch = *inptr; + if (cch == '&' && !isalnum(inptr[1])) + *ap++ = *(++inptr); else - { - if (cch == '\"') inquotes = !inquotes; + { + if (cch == '\"') inquotes = !inquotes; if (!inquotes) - { + { if (cch == '(') bracount++; - else if (cch == ')') bracount--; - } + else if (cch == ')') bracount--; + } *ap++ = cch; - } + } } - + if (inptr >= inend) error_moan(99); if (i >= argcount) { args[i] = NULL; argcount++; } - if (ap - ss > 0) { *ap++ = 0; args[i] = ss; } - + if (ap - ss > 0) { *ap++ = 0; args[i] = ss; } + if (inptr >= inend || *inptr == ')') - { inptr++; break; } - } + { inptr++; break; } + } } - + /* Process the arguments for nested macro calls */ - + for (i = 0; i < argcount; i++) { - uschar *new_ap; + uschar *new_ap; if (args[i] == NULL || Ustrchr(args[i], '&') == NULL) continue; new_ap = expand_string(args[i], args[i] + Ustrlen(args[i]), - ap, argbuff + sizeof(argbuff) - ap, FALSE); + ap, argbuff + sizeof(argbuff) - ap, FALSE); args[i] = ap; ap = new_ap + 1; /* final zero must remain */ - } - - /* Now copy the replacement, inserting the args */ - + } + + /* Now copy the replacement, inserting the args */ + while (*pp != 0) { if (*pp == '&' && isdigit(pp[1])) @@ -198,21 +198,21 @@ uschar *ss = args[arg]; if (ss != NULL) { - if (read_buffersize - 2 - (temp - outbuffer) < - Ustrlen(ss)) error_moan(88); /* hard */ + if (READ_BUFFERSIZE - 2 - (temp - outbuffer) < + Ustrlen(ss)) error_moan(88); /* hard */ Ustrcpy(temp, ss); - temp += Ustrlen(ss); - } - } + temp += Ustrlen(ss); + } + } } else { - if (temp - outbuffer + 2 >= outlen) + if (temp - outbuffer + 2 >= outlen) error_moan(88); /* hard error - buffer overflow */ - *temp++ = *pp++; - } - } - } + *temp++ = *pp++; + } + } + } } } else error_moan(9, name); /* Couldn't find name */ @@ -234,27 +234,27 @@ temp[0] = '\n'; temp[1] = 0; } -else *temp = 0; - -/* Return the end of the active data */ +else *temp = 0; + +/* Return the end of the active data */ return comment? comment : temp; -} +} /************************************************* * Read next character * *************************************************/ -/* This function updates the global variable read_ch with the next character, -including a newline at the end of each line. It deals with macro expansions and +/* This function updates the global variable read_ch with the next character, +including a newline at the end of each line. It deals with macro expansions and preprocessing directives, and it skips comments. Arguments: none Returns: nothing */ -void +void next_ch(void) { for (;;) /* Loop until a character is obtained or very end is reached */ @@ -284,12 +284,12 @@ for (;;) { if (input_file != NULL) - { - if (Ufgets(this_buffer, read_buffersize - 4, input_file) != NULL) break; + { + if (Ufgets(this_buffer, READ_BUFFERSIZE - 4, input_file) != NULL) break; fclose(input_file); input_file = NULL; } - + Ustrcpy(this_buffer, "--- End of file ---"); /* for reflection */ read_chptr = this_buffer + 19; /* just in case */ read_endptr = read_chptr + 1; /* nothing left */ @@ -306,7 +306,7 @@ } /* Pop stack at end of included file */ - + DEBUG(("end of %s: popping include stack\n", main_filename)); store_free(main_filename); main_filename = read_filestack[--read_filestackptr].filename; @@ -318,7 +318,7 @@ /* Another line has been read; take care with the final one which may not have a newline on the end. */ - + read_linenumber++; len = Ustrlen(this_buffer); @@ -326,7 +326,7 @@ read_chptr = this_buffer; read_endptr = this_buffer + len; - if (len >= read_buffersize - 5) error_moan(81); /* give-up error */ + if (len >= READ_BUFFERSIZE - 5) error_moan(81); /* give-up error */ if (len > 0 && read_endptr[-1] == '\n') read_endptr--; @@ -337,9 +337,9 @@ if (read_skipdepth <= 0) { uschar *temp; - read_endptr = expand_string(read_chptr, read_endptr, next_buffer, - read_buffersize, TRUE); - + read_endptr = expand_string(read_chptr, read_endptr, next_buffer, + READ_BUFFERSIZE, TRUE); + /* Swap this buffer and next buffer, initialize pointer. */ temp = this_buffer; @@ -379,7 +379,7 @@ Returns: nothing */ -void +void read_word(uschar *word) { int i = 0; @@ -405,13 +405,13 @@ /* This procedure is used for reading file names and the like in heading directives. These are in quotes, but are not to be -interpreted as PMW strings. +interpreted as PMW strings. Argument: where to put the string Returns: TRUE if OK, FALSE if quote missing */ -BOOL +BOOL read_plainstring(uschar *s) { sigch(); @@ -438,10 +438,10 @@ /* Called when the first character is known to be a digit or a dot. Argument: TRUE to read a fixed point number; FALSE for an integer -Returns: the value +Returns: the value */ -int +int read_integer(BOOL fixed) { int yield = 0; @@ -483,11 +483,11 @@ yield where to put the value fixed TRUE for a fixed point value, FALSE for an integer allowsign TRUE if a sign is permitted - + Returns: TRUE if OK, FALSE on error */ -BOOL +BOOL read_expect_integer(int *yield, int fixed, int allowsign) { int sign = 1; @@ -521,7 +521,7 @@ Returns: the value, or zero after an error */ -int +int read_movevalue(void) { int x; @@ -542,7 +542,7 @@ Returns: the keysignature or zero on error */ -int +int read_key(void) { int key = 0; @@ -567,14 +567,16 @@ * Double/halve time signature * *************************************************/ -/* The global variables main_notenum and main_noteden contain the numerator and -denominator of any time scaling that has been set up. +/* The global variables main_notenum and main_noteden contain the numerator and +denominator of any note scaling (doublenotes, halvenotes) that was set up in +the movement's header. This affects time signatures. The stave directives +[doublenotes] and [halvenotes] do not affect time signatures. Argument: the time signature Returns: the scaled time signature */ -int +int read_scaletime(int ts) { int m, n, d; @@ -590,16 +592,16 @@ if (main_noteden > 1) { if (m%main_noteden == 0) m /= main_noteden; - else error_moan(102); - } - return (m << 16) | d; + else error_moan(102); + } + return (m << 16) | d; } d *= main_noteden; if (d % main_notenum == 0) d /= main_notenum; else n *= main_notenum; - -return (m << 16) + (n << 8) + d; + +return (m << 16) + (n << 8) + d; } @@ -614,10 +616,10 @@ Returns: the packed up time signature */ -int +int read_time(void) { -int gotnum = FALSE; +BOOL gotnum = FALSE; int m, n, d; sigch(); @@ -636,7 +638,7 @@ if (!gotnum) { - read_ch = tolower(read_ch); + read_ch = tolower(read_ch); if (read_ch == 'a' || read_ch == 'c') { int type = (read_ch == 'c')? time_common : time_cut; @@ -645,7 +647,7 @@ } if (!read_expect_integer(&n, FALSE, FALSE)) return 0; } - + sigch(); if (read_ch != '/') { @@ -655,9 +657,7 @@ next_ch(); if (!read_expect_integer(&d, FALSE, FALSE)) return 0; - if (d < 1 || d > 64 || d != (d & (-d))) error_moan(87); /* hard error */ - return read_scaletime((m << 16) | (n << 8) | d); } @@ -667,12 +667,12 @@ * Compute barlength from time signature * *************************************************/ -/* +/* Argument: the time signature Returns: the bar length */ -int +int read_compute_barlength(int ts) { int m = (ts >> 16) & 255; @@ -691,39 +691,39 @@ * Get MIDI number from string * *************************************************/ -/* This function scans a list of MIDI voice or percussion names to find the -number for a given name. If we are not generating MIDI (midi_filename is NULL), +/* This function scans a list of MIDI voice or percussion names to find the +number for a given name. If we are not generating MIDI (midi_filename is NULL), there is no search, but we do not give an error. Just return zero. Arguments: list the list of MIDI names string the string to search for text text for use in the error message - + Returns: the MIDI number -*/ +*/ -int +int read_getmidinumber(uschar *list, uschar *string, uschar *text) { int yield = -1; if (list != NULL) while (*list) { - int len = Ustrlen(list); + int len = Ustrlen(list); if (Ustrcmp(list, string) == 0) { yield = list[len+1]; - break; + break; } - list += len + 2; - } - + list += len + 2; + } + if (yield < 0) { - if (midi_filename != NULL) error_moan(110, text, string); + if (midi_filename != NULL) error_moan(110, text, string); yield = 0; - } + } return yield; } @@ -735,24 +735,25 @@ * Start of movement initialization * *************************************************/ -/* This function resets values that must be reset at the start of every -movement. Other per-movement data is initialized to default values (the -init_movtstr variable) for the first movement, then copied to subsequent +/* This function resets values that must be reset at the start of every +movement. Other per-movement data is initialized to default values (the +init_movtstr variable) for the first movement, then copied to subsequent movements. Argument: option for type of movement (same page, new page, etc) Returns: nothing */ -static +static void init_movt(int opt) { int i; -curmovt->stavetable = store_Xget((max_stave+1) * sizeof(stavestr *)); +curmovt->stavetable = store_Xget((MAX_STAVE+1) * sizeof(stavestr *)); stavetable = curmovt->stavetable; -for (i = 0; i <= max_stave; i++) stavetable[i] = NULL; +for (i = 0; i <= MAX_STAVE; i++) stavetable[i] = NULL; +curmovt->number = main_lastmovement; curmovt->barcount = 0; curmovt->baroffset = 0; curmovt->barnovector = NULL; /* Got when first stave encountered */ @@ -770,7 +771,7 @@ curmovt->showtime = TRUE; curmovt->startbracketbar = 0; curmovt->startnotime = FALSE; -memcpy(curmovt->staves, main_staves, stave_bitvec_size*sizeof(int)); +memcpy(curmovt->staves, main_staves, STAVE_BITVEC_SIZE*sizeof(int)); curmovt->time = 0x00010404; /* 1*4/4 */ curmovt->transpose = main_transpose; curmovt->unfinished = FALSE; @@ -807,11 +808,11 @@ Returns: nothing */ -static void +static void read_endmovement(void) { int i; -for (i = 0; i < stave_bitvec_size; i++) +for (i = 0; i < STAVE_BITVEC_SIZE; i++) curmovt->staves[i] &= read_staves[i]; /* Disable those not read */ /* If there was a playtempo directive, adjust the bar numbers so that they are @@ -849,15 +850,15 @@ * Top-level reading control * *************************************************/ -/* Called from the main control function. This function reads the input stream, -alternating between heading directives and music staves for the different +/* Called from the main control function. This function reads the input stream, +alternating between heading directives and music staves for the different movements that are present. Arguments: none Returns: nothing */ -void +void read_go(void) { DEBUG(("read_go() start\n")); @@ -905,7 +906,6 @@ next_ch(); read_word(word); - /* It's another stave. Check that a valid number is given. If so, set up the index for its bars and get ready to read the rest of the data. */ @@ -920,8 +920,8 @@ /* Error if number too big or stave supplied twice */ - if (curstave > max_stave) - { error_moan(22, max_stave+1); break; } + if (curstave > MAX_STAVE) + { error_moan(22, MAX_STAVE+1); break; } if (stavetable[curstave] != NULL) { error_moan(31, curstave); break; } @@ -964,23 +964,25 @@ stave_couplestate = stave_octave = 0; stave_notes = TRUE; stave_noteflags = (curstave == 0)? nf_hidden : 0; + stave_notenum = main_notenum; + stave_noteden = main_noteden; stave_matchnum = 0; /* indicates "unset" */ - stave_totalnocount = stave_slurcount = + stave_totalnocount = stave_slurcount = stave_hairpinbegun = stave_hairpiny = 0; stave_stemforce = stave_ties = stave_textflags = 0; stave_textabsolute = 0; stave_accentflags = stave_restlevel = stave_stemlength = 0; stave_pletflags = stave_plety = 0; stave_ornament = -1; - stave_printpitch = 0; + stave_printpitch = 0; stave_stemflag = nf_stem; stave_pendulay = NULL; stave_hairpinflags = hp_below; - stave_hairpinwidth = curmovt->hairpinwidth; + stave_hairpinwidth = curmovt->hairpinwidth; stave_clef = clef_treble; stave_clef_octave = 0; - stave_barlinestyle = curmovt->barlinestyle; + stave_barlinestyle = curmovt->barlinestyle; stave_transposedaccforce = main_transposedaccforce; stave_transpose = curmovt->transpose; @@ -1011,9 +1013,9 @@ stave_suspended = mac_teststave(curmovt->suspend, curstave); stave_stemswaplevel = curmovt->stemswaplevel; - + read_prev_had_dbar = read_prev_had_ibar = FALSE; - read_prev_barlinestyle = stave_barlinestyle; + read_prev_barlinestyle = stave_barlinestyle; /* Set the bar number, and enter the normal reading state, with a @@ -1022,7 +1024,7 @@ stave_barnumber = 1; read_stavestart = read_endstave = FALSE; sigch(); - if (read_ch == '\"' || (read_ch == 'd' && Ustrncmp(read_chptr, "raw ", 4) == 0)) + if (read_ch == '\"' || (read_ch == 'd' && Ustrncmp(read_chptr, "raw ", 4) == 0)) Ustrcpy(read_stavedir, "name"); else read_stavedir[0] = 0; read_chptr--; @@ -1037,9 +1039,9 @@ { int opt = movt_default; int ph = 0; - int lf = 0; + int lf = 0; movtstr *newcurmovt; - + if (main_lastmovement >= main_max_movements) { error_moan(120, main_max_movements); break; } /* disaster */ @@ -1052,7 +1054,7 @@ else if (Ustrcmp(word, "thisline") == 0) opt = movt_thisline; else if (Ustrcmp(word, "newpage") == 0) opt = movt_newpage; else if (Ustrcmp(word, "nopageheading") == 0) ph = movt_nopageheading; - else if (Ustrcmp(word, "uselastfooting") == 0) lf = movt_uselastfooting; + else if (Ustrcmp(word, "uselastfooting") == 0) lf = movt_uselastfooting; else error_moan(10, "\"thispage\", \"thisline\", \"newpage\", \"nopageheading\", or \"uselastfooting\""); } @@ -1143,13 +1145,13 @@ if (input_file != NULL) fclose(input_file); while (read_filestackptr > 0) fclose(read_filestack[--read_filestackptr].file); - + /* Warn if the format word was never tested. By giving the error after resetting reading_input, it won't try to reflect the input line. */ reading_input = FALSE; if (main_format[0] != 0 && !main_format_tested) error_moan(104, main_format); - + DEBUG(("read_go() end\n")); } @@ -1159,27 +1161,27 @@ * Set up for reading routines * *************************************************/ -/* This function is called at the start of reading. +/* This function is called at the start of reading. Arguments: none Returns: nothing */ -void +void read_start(void) { int i; /* Stack for included files */ -read_filestack = store_Xget(max_include*sizeof(filestr)); +read_filestack = store_Xget(MAX_INCLUDE*sizeof(filestr)); /* Set up buffers for line reading */ read_stavedir = store_Xget(64); -next_buffer = store_Xget(read_buffersize); -this_buffer = store_Xget(read_buffersize); -prev_buffer = store_Xget(read_buffersize); +next_buffer = store_Xget(READ_BUFFERSIZE); +this_buffer = store_Xget(READ_BUFFERSIZE); +prev_buffer = store_Xget(READ_BUFFERSIZE); this_buffer[0] = prev_buffer[0] = 0; /* Variables for controlling reading of the file */ @@ -1199,6 +1201,7 @@ /* Initialize movement table for first movement */ +main_lastmovement = 1; for (i = 0; i <= main_max_movements; i++) movement[i] = NULL; curmovt = movement[1] = store_Xget(sizeof(movtstr)); *curmovt = init_movtstr; /* Default settings */ @@ -1223,21 +1226,22 @@ if (font_table[font_rm] < 0 || font_table[font_mf] < 0) error_moan(25); /* Hard */ - + /* Point current page at a dummy (relevant for string escape checking) */ -curpage = &dummy_page; +curpage = &dummy_page; /* Miscellaneous start-of-file initialization */ baraccs = store_Xget(baraccs_len); baraccs_tp = store_Xget(baraccs_len); -stave_tiedata = store_Xget(max_chordsize * sizeof(tiedata)); +stave_tiedata = store_Xget(MAX_CHORDSIZE * sizeof(tiedata)); stave_beamstack = store_Xget(beamstacksize); stave_stemstack = store_Xget(stemstacksize); +beam_overbeam = FALSE; /* For misc_nextnote() while reading */ -page_postable = store_Xget(max_postablesize * sizeof(workposstr)); +page_postable = store_Xget(MAX_POSTABLESIZE * sizeof(workposstr)); define_tree = draw_tree = draw_variable_tree = NULL; draw_thickness = 500; @@ -1250,7 +1254,6 @@ main_format_tested = FALSE; main_htypes = NULL; main_kerning = TRUE; -main_lastmovement = 1; main_magnification = 1000; main_maxvertjustify = 60000; main_pageanchor = NULL; @@ -1258,7 +1261,7 @@ main_printtime = NULL; main_pssetup = NULL; main_sheetheight = 842000; -main_sheetwidth = 595000; +main_sheetwidth = 595000; opt_sheetsize = sheet_A4; opt_stretchrule = 2; /* The latest rule */ main_transposedaccforce = TRUE; @@ -1267,7 +1270,7 @@ draw_lgx = draw_lgy = 0; -out_depthvector = store_Xget((max_stave+1) * sizeof(int *)); +out_depthvector = store_Xget((MAX_STAVE+1) * sizeof(int *)); font_reset(); /* To set no transformation */ font_xstretch = 0; /* No justification */ diff -Nru pmw-4.29/src/read2.c pmw-4.30/src/read2.c --- pmw-4.29/src/read2.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read2.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains part II of the code for reading in a PMW score file. It @@ -72,7 +72,7 @@ * Local static variables * *************************************************/ -static int read_map[stave_bitvec_size]; /* For reading lists of staves */ +static int read_map[STAVE_BITVEC_SIZE]; /* For reading lists of staves */ /************************************************* @@ -155,8 +155,8 @@ *sizeptr = read_integer(TRUE); *matrixptr = NULL; - - /* Handle stretch and shear */ + + /* Handle stretch and shear */ if (read_ch == '/') { @@ -307,7 +307,7 @@ } if (t < s) error_moan(21); - else if (t > max_stave) error_moan(22, max_stave+1); + else if (t > MAX_STAVE) error_moan(22, MAX_STAVE+1); else { stave_list *q = store_Xget(sizeof(stave_list)); @@ -347,7 +347,7 @@ } if (t < s) error_moan(21); - else if (t > max_stave) error_moan(22, max_stave + 1); + else if (t > MAX_STAVE) error_moan(22, MAX_STAVE + 1); else while (s <= t) { mac_setstave(read_map, s); s++; } /* Can't put */ /* s++ inside */ sigchNL(); @@ -356,7 +356,7 @@ if (read_dir->arg1 != 0) memcpy(((uschar *)curmovt) + read_dir->arg1, read_map, - stave_bitvec_size*sizeof(int)); + STAVE_BITVEC_SIZE*sizeof(int)); } @@ -961,7 +961,7 @@ static void layout(void) { -int *temp = store_Xget(layout_maxsize * 2 * sizeof(int)); +int *temp = store_Xget(LAYOUT_MAXSIZE * 2 * sizeof(int)); int stack[20]; int ptr = 0; int level = 0; @@ -1111,9 +1111,9 @@ if (!read_expect_integer(&channel, FALSE, FALSE)) return; -if (channel < 1 || channel > midi_maxchannel) +if (channel < 1 || channel > MIDI_MAXCHANNEL) { - error_moan(109, "channel", midi_maxchannel); + error_moan(109, "channel", MIDI_MAXCHANNEL); channel = 1; } @@ -1133,7 +1133,7 @@ } } - copy_midi_map(rh_midivoice, midi_maxchannel, &(curmovt->midi_voice)); + copy_midi_map(rh_midivoice, MIDI_MAXCHANNEL, &(curmovt->midi_voice)); curmovt->midi_voice[channel-1] = voicenumber - 1; /* There may be an optional volume setting */ @@ -1146,7 +1146,7 @@ { if (vol > 15) error_moan(10, "Number between 0 and 15"); else { - copy_midi_map(rh_midivolume, max_stave+1, &(curmovt->midi_volume)); + copy_midi_map(rh_midivolume, MIDI_MAXCHANNEL, &(curmovt->midi_volume)); curmovt->midi_volume[channel-1] = vol; } } @@ -1161,7 +1161,7 @@ int i; int pitch = 0; - copy_midi_map(rh_midichannel, max_stave+1, &(curmovt->midi_channel)); + copy_midi_map(rh_midichannel, MAX_STAVE+1, &(curmovt->midi_channel)); movt_mapproc(); /* read stave list into read_map */ @@ -1172,12 +1172,12 @@ if (string[0] == 0) pitch = 0; /* => don't do MIDI pitch forcing */ else if (string[0] == '#') pitch = Uatoi(string+1); else pitch = read_getmidinumber(midi_percnames, string, US"percussion instrument"); - copy_midi_map(rh_midinote, max_stave+1, &(curmovt->midi_note)); + copy_midi_map(rh_midinote, MAX_STAVE+1, &(curmovt->midi_note)); } /* Now update the per-stave data */ - for (i = 1; i <= max_stave; i++) + for (i = 1; i <= MAX_STAVE; i++) { if (mac_teststave(read_map, i)) { @@ -1273,6 +1273,7 @@ } + /************************************************* * Oldstretchrule * *************************************************/ @@ -1414,8 +1415,8 @@ return; } -curmovt->play_volume = vv = store_Xget(max_stave + 1); -for (i = 1; i <= max_stave; i++) vv[i] = v; +curmovt->play_volume = vv = store_Xget(MAX_STAVE + 1); +for (i = 1; i <= MAX_STAVE; i++) vv[i] = v; /* Now look for additional data giving stave volumes */ @@ -1486,7 +1487,7 @@ { next_ch(); if (!read_expect_integer(&fo, FALSE, FALSE)) return FALSE; - if ((fo -= 1) >= MaxTextFont) error_moan(39, MaxTextFont); + if ((fo -= 1) >= MaxFontSizes) error_moan(39, MaxFontSizes); } else { @@ -1508,6 +1509,7 @@ { ptimestr *p = store_Xget(sizeof(ptimestr)); p->next = main_printtime; +p->movt_number = main_lastmovement; main_printtime = p; if ((p->time = read_time()) == 0) return; if (!ptstring(&(p->top), &(p->offsettop))) return; @@ -1524,15 +1526,16 @@ { pkeystr *p = store_Xget(sizeof(pkeystr)); p->next = main_printkey; +p->movt_number = main_lastmovement; main_printkey = p; p->key = read_key(); p->clef = read_clef(); p->string = string_check(string_read()); +sigch(); +p->cstring = (read_ch == '"')? string_check(string_read()) : US""; } - - /************************************************* * Pssetup * *************************************************/ @@ -1684,8 +1687,8 @@ static void stavesize(void) { -int *stavesizes = store_Xget((max_stave+1)*sizeof(int)); -memcpy(stavesizes, curmovt->stavesizes, (max_stave+1)*sizeof(int)); +int *stavesizes = store_Xget((MAX_STAVE+1)*sizeof(int)); +memcpy(stavesizes, curmovt->stavesizes, (MAX_STAVE+1)*sizeof(int)); curmovt->stavesizes = stavesizes; sigch(); @@ -1693,7 +1696,7 @@ { int size; int stave = read_integer(FALSE); - if (stave > max_stave) { error_moan(22, max_stave+1); stave = 1; } + if (stave > MAX_STAVE) { error_moan(22, MAX_STAVE+1); stave = 1; } if (read_ch != '/') { error_moan(10, "/"); return; } next_ch(); if (!read_expect_integer(&size, TRUE, FALSE)) return; @@ -1713,14 +1716,14 @@ { BOOL first = TRUE; int i; -int *newsp = store_Xget((max_stave+1) * sizeof(int)); -int *newen = store_Xget((max_stave+1) * sizeof(int)); -unsigned int done[stave_bitvec_size]; +int *newsp = store_Xget((MAX_STAVE+1) * sizeof(int)); +int *newen = store_Xget((MAX_STAVE+1) * sizeof(int)); +unsigned int done[STAVE_BITVEC_SIZE]; newsp[0] = newen[0] = 0; mac_initstave(done, 0); -for (i = 1; i <= max_stave; i++) +for (i = 1; i <= MAX_STAVE; i++) { newsp[i] = 44000; newen[i] = 0; @@ -1741,7 +1744,7 @@ { space = stave*1000; if (read_ch == '.') space += read_integer(TRUE); - for (i = 1; i <= max_stave; i++) newsp[i] = space; + for (i = 1; i <= MAX_STAVE; i++) newsp[i] = space; goto NEXT; } else @@ -1844,8 +1847,8 @@ stemswaplevel(void) { int i, x; -int *new = store_Xget((max_stave+1) * sizeof(int)); -for (i = 0; i <= max_stave; i++) new[i] = P_3L; +int *new = store_Xget((MAX_STAVE+1) * sizeof(int)); +for (i = 0; i <= MAX_STAVE; i++) new[i] = P_3L; if (!read_expect_integer(&x, FALSE, TRUE)) return; @@ -1865,7 +1868,7 @@ } } -else for (i = 0; i <= max_stave; i++) new[i] = P_3L + x*2; +else for (i = 0; i <= MAX_STAVE; i++) new[i] = P_3L + x*2; curmovt->stemswaplevel = new; } @@ -1926,7 +1929,7 @@ if (n >= 0) font_table[fontid] = n; else { fontstr *fs; - if (font_count >= max_fonts) { error_moan(26, max_fonts); return; } + if (font_count >= MAX_FONTS) { error_moan(26, MAX_FONTS); return; } fs = &(font_List[font_count]); fs->psname = store_copystring(s); fs->widths = NULL; @@ -1953,7 +1956,7 @@ textsizes(void) { int i; -for (i = 0; i < MaxTextFont; i++) +for (i = 0; i < MaxFontSizes; i++) { set_fontsize(oo(fontsizestr,fontsize_text) + i*sizeof(int), TRUE); if (read_ch == ',') next_ch(); @@ -2094,7 +2097,7 @@ { "endlinetieadjust", movt_intproc, oo(movtstr,endlinetieadjust), int_f }, { "endlinetiestyle", movt_intproc, oo(movtstr,endlinetiestyle), int_u }, { "extenderlevel", movt_intproc, oo(movtstr,extenderlevel), int_f }, - { "fbsize", movt_fszproc, oo(fontsizestr,fontsize_fbass), TRUE }, + { "fbsize", movt_fszproc, oo(fontsizestr,fontsize_text)+ff_offset_fbass*sizeof(int), TRUE }, { "footing", movt_headproc, oo(movtstr,footing), rh_footing }, { "footnotesep", movt_intproc, oo(movtstr,footnotesep), int_f }, { "footnotesize", movt_fszproc, oo(fontsizestr,fontsize_footnote), TRUE }, @@ -2153,7 +2156,7 @@ { "oldstemlength", opt_boolproc, glob_oldstemlength, TRUE }, { "oldstretchrule", oldstretchrule, 0, 0 }, { "overlaydepth", movt_intproc, oo(movtstr,overlaydepth), int_f }, - { "overlaysize", movt_fszproc, oo(fontsizestr,fontsize_olay), TRUE }, + { "overlaysize", movt_fszproc, oo(fontsizestr,fontsize_text)+ff_offset_olay*sizeof(int), TRUE }, { "page", page, 0, 0 }, { "pagefooting", movt_headproc, oo(movtstr,pagefooting), rh_pagefooting }, { "pageheading", movt_headproc, oo(movtstr,pageheading), rh_pageheading }, @@ -2204,7 +2207,7 @@ { "thinbracket", movt_listproc, oo(movtstr,thinbracketlist), 0 }, { "time", timeproc, 0, 0 }, { "timebase", movt_cboolproc, oo(movtstr,showtimebase), TRUE }, - { "timefont", movt_fontproc, oo(movtstr,font_time),oo(fontsizestr,fontsize_tsfont) }, + { "timefont", movt_fontproc, oo(movtstr,font_time),oo(fontsizestr,fontsize_text)+ff_offset_ts*sizeof(int) }, { "timewarn", movt_cboolproc, oo(movtstr,timewarn), TRUE }, { "topmargin", movt_intproc, oo(movtstr,topmargin), int_u+int_f }, { "transpose", transpose, oo(movtstr,transpose), int_s }, @@ -2215,7 +2218,7 @@ { "tripletlinewidth", movt_intproc, oo(movtstr,tripletlinewidth), int_u+int_f }, { "underlaydepth", movt_intproc, oo(movtstr,underlaydepth), int_f }, { "underlayextenders",movt_cboolproc, oo(movtstr,underlayextenders), TRUE }, - { "underlaysize", movt_fszproc, oo(fontsizestr,fontsize_ulay), TRUE }, + { "underlaysize", movt_fszproc, oo(fontsizestr,fontsize_text)+ff_offset_ulay*sizeof(int), TRUE }, { "underlaystyle", movt_intproc, oo(movtstr,underlaystyle), int_u }, { "unfinished", movt_cboolproc, oo(movtstr,unfinished), TRUE }, { "vertaccsize", movt_fszproc, oo(fontsizestr,fontsize_vertacc), FALSE } diff -Nru pmw-4.29/src/read3.c pmw-4.30/src/read3.c --- pmw-4.29/src/read3.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read3.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,14 +2,14 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains part III of the code for reading in a PMW score file. It -contains top-level code for reading in a bar. */ +contains top-level code for reading in one bar on one stave. */ #include "pmwhdr.h" @@ -38,11 +38,11 @@ Arguments: ba the table that is to be set (baraccs or baraccs_tp) key the key signature - -Returns: nothing + +Returns: nothing */ -void +void read_initbaraccs(uschar *ba, int key) { int i; @@ -80,20 +80,20 @@ * Read up/down movement * *************************************************/ -/* This is used for options for plets. On entry, read_ch should contain either -'u' or 'd', which may either be the first letter after / or might follow 'l' or -'r'. We don't come here for /lx and /rx, but they are mentioned in the error -message for unknown letters because they are something that could have been +/* This is used for options for plets. On entry, read_ch should contain either +'u' or 'd', which may either be the first letter after / or might follow 'l' or +'r'. We don't come here for /lx and /rx, but they are mentioned in the error +message for unknown letters because they are something that could have been present. Arguments: value1 pointer to where the value read is added value2 if not NULL, the value is added here as well - -Returns: nothing + +Returns: nothing */ -static void +static void read_updown(int *value1, int *value2) { int sign, x; @@ -104,12 +104,12 @@ default: error_moan(37, "/l, /r, /lx, /rx, /lu, /ld, /ru or /rd"); next_ch(); - return; - } + return; + } x = sign * read_movevalue(); *value1 += x; if (value2 != NULL) *value2 += x; -} +} /************************************************* @@ -122,7 +122,7 @@ Returns: TRUE if not reached the end of the stave */ -BOOL +BOOL read_bar(void) { void *bardatastart; @@ -145,6 +145,7 @@ stave_lastwasdouble = stave_overbeam = FALSE; stave_firstinbar = TRUE; stave_hadnocount = FALSE; +stave_tripletize = (stave_noteflags & nf_tripletize) != 0; stave_stemstackptr = stave_beamstackptr = 0; read_lastensuredtie = NULL; @@ -171,21 +172,21 @@ b_notesstr *p = store_getitem(b_notes); p->value = FALSE; } - + /* If we are in an omitempty stave and the previous bar contained only an ibar or dbar item, or ended with an unusual barline style, we must insert a prevbar item here. */ if (stavehead->omitempty && - (read_prev_had_dbar || - read_prev_had_ibar || + (read_prev_had_dbar || + read_prev_had_ibar || read_prev_barlinestyle != stave_barlinestyle)) { b_prevbarstr *p = store_getitem(b_prevbar); - p->dbar = read_prev_had_dbar; - p->ibar = read_prev_had_ibar; - p->style = read_prev_barlinestyle; - } + p->dbar = read_prev_had_dbar; + p->ibar = read_prev_had_ibar; + p->style = read_prev_barlinestyle; + } /* Remember where the real data starts for detecting an empty bar */ @@ -212,35 +213,35 @@ if (read_ch == '|') { next_ch(); - (void)store_getitem(b_ebar); + (void)store_getitem(b_ebar); } else - { + { (void)store_getitem(b_dbar); if (!curmovt->checkdoublebars) stave_checklength = FALSE; stave_lastwasdouble = TRUE; - } + } } else if (read_ch == '?') /* Invisible bar */ { next_ch(); (void)store_getitem(b_ibar); } - else if (isdigit(read_ch)) /* Specific bar line type */ + else if (isdigit(read_ch)) /* Specific bar line type */ { - read_barlinestyle = read_integer(FALSE); - } + read_barlinestyle = read_integer(FALSE); + } if (read_ch == '=') /* Continue beam over bar line */ { next_ch(); stave_overbeam = TRUE; } - + /* Cancel the ensured space for a tied chord with seconds at the end of a bar. */ - - if (read_lastensuredtie != NULL) read_lastensuredtie->value = 0; - + + if (read_lastensuredtie != NULL) read_lastensuredtie->value = 0; + break; /* Exit the loop */ } @@ -278,33 +279,33 @@ for (;;) { - accent *ap; + accent *ap; sigch(); if (read_ch == '\\') { next_ch(); break; } /* End default */ - + /* Search the table of accents and ornaments */ - + for (ap = accent_chars; ap->string != NULL; ap++) { - int i; + int i; int ln = (int)Ustrlen(ap->string); for (i = 0; i < ln; i++) if (read_chptr[i-1] != ap->string[i]) break; if (i >= ln) { read_chptr += ln - 1; - next_ch(); - break; - } + next_ch(); + break; + } } /* Found in the table */ - + if (ap->string != NULL) { if (ap->flag < 256) stave_ornament = ap->flag; - else stave_accentflags |= ap->flag; - } + else stave_accentflags |= ap->flag; + } /* Not found in the table */ @@ -322,9 +323,9 @@ else { error_moan(45); next_sigch(); } } - + if ((stave_accentflags & (af_staccato|af_staccatiss)) == - (af_staccato|af_staccatiss)) error_moan(129); + (af_staccato|af_staccatiss)) error_moan(129); } /* Deal with repeated bars; expect number > 0, but subtract one from it. @@ -348,9 +349,9 @@ b_nbarstr *p = store_getitem(b_nbar); p->x = p->y = 0; p->n = n; - p->s = NULL; + p->s = NULL; p->ssize = 0; /**** Not currently in use ****/ - + sigch(); while (read_ch == '/') { @@ -362,44 +363,46 @@ switch(read_ch) { case 'd': - ysign = -1; + ysign = -1; + /* Fall through */ case 'u': next_ch(); read_expect_integer(&n, TRUE, FALSE); p->y += n * ysign; - break; - + break; + case 'l': - xsign = -1; - + xsign = -1; + /* Fall through */ + case 'r': next_ch(); read_expect_integer(&n, TRUE, FALSE); p->x += n * xsign; - break; - + break; + /* One day we might want individual sizes for strings, but for the moment this is not implemented. */ - + /***************** - case 's': + case 's': next_ch(); read_expect_integer(&n, FALSE, FALSE); p->ssize = n; - break; - *****************/ - + break; + *****************/ + case '\"': - p->s = string_read(); - break; - + p->s = string_read(); + break; + default: error_moan(10, "\"u\", \"d\", \"l\", \"r\", or quoted string"); - break; + break; } } - + read_stavedir[0] = 0; done = TRUE; } @@ -446,53 +449,53 @@ else { b_pletstr *p; - int sign; + int sign; int flags = 0; int adjustx = 0; int adjustyleft = stave_plety; - int adjustyright = adjustyleft; + int adjustyright = adjustyleft; next_sigch(); - + /* The length of each note in the plet will be multiplied by stave_pletsupnum, and divided by stave_pletlen times stave_pletsupden. */ - + stave_pletsupnum = 0; /* Indicates not explicitly set */ stave_pletsupden = 1; /* Normal case */ stave_pletlen = 3; /* Default to triplet */ - + /* Read an explicit specification */ - + if (isdigit(read_ch)) { stave_pletlen = read_integer(FALSE); /* First number */ - + /* A minus indicates that we are dividing a smaller number of notes - than the default. This is accomplished by dividing by 2. */ - + than the default. This is accomplished by dividing by 2. */ + if (read_ch == '-') { next_sigch(); stave_pletsupden = 2; } - + /* A slash indicates that the first number is really the number of - notes we are dividing, and the real value of stave_pletlen follows. */ - + notes we are dividing, and the real value of stave_pletlen follows. */ + if (read_ch == '/' && isdigit(*read_chptr)) { - stave_pletsupnum = stave_pletlen; + stave_pletsupnum = stave_pletlen; next_ch(); - stave_pletlen = read_integer(FALSE); - } + stave_pletlen = read_integer(FALSE); + } } /* If we are dividing into a power of two, assume we are dividing 3 into this number if a numerator was not provided; otherwise assume 2. */ - - if (stave_pletsupnum == 0) stave_pletsupnum = + + if (stave_pletsupnum == 0) stave_pletsupnum = ((stave_pletlen & (-stave_pletlen)) == stave_pletlen)? 3 : 2; - - /* If the number of irregular notes is more than twice the number of - regular notes, we double the numerator, because the irregulars must be - the next note size down; similarly quadruple the numerator for even more - notes. */ + + /* If the number of irregular notes is more than twice the number of + regular notes, we double the numerator, because the irregulars must be + the next note size down; similarly quadruple the numerator for even more + notes. */ if (stave_pletlen >= 4*stave_pletsupnum) stave_pletsupnum *= 4; else if (stave_pletlen >= 2*stave_pletsupnum) stave_pletsupnum *= 2; @@ -507,22 +510,22 @@ case 'a': flags &= ~plet_b; flags |= plet_a | plet_by; - sign = +1; - goto ABSPLET; + sign = +1; + goto ABSPLET; case 'b': flags &= ~plet_a; flags |= plet_b | plet_by; sign = -1; ABSPLET: - flags &= ~(plet_abs | plet_bn); - adjustyleft = adjustyright = 0; + flags &= ~(plet_abs | plet_bn); + adjustyleft = adjustyright = 0; next_sigch(); if (isdigit(read_ch)) { flags |= plet_abs; - adjustyleft = adjustyright = sign * read_integer(TRUE); - } + adjustyleft = adjustyright = sign * read_integer(TRUE); + } break; case 'n': @@ -532,12 +535,12 @@ break; case 'x': flags |= plet_x; next_sigch(); break; - + case 'u': case 'd': read_updown(&adjustyleft, &adjustyright); break; - + case 'l': next_ch(); if (isdigit(read_ch)) adjustx -= read_integer(TRUE); else @@ -575,7 +578,7 @@ p->flags = flags; p->x = adjustx; p->yleft = adjustyleft; - p->yright = adjustyright; + p->yright = adjustyright; } /* Prevent reset (but resets are forbidden inside plets anyway). */ @@ -601,11 +604,11 @@ case '<': { int flags = stave_hairpinflags; - int width = stave_hairpinwidth; + int width = stave_hairpinwidth; int type = read_ch; int ending = (type == '<' && stave_hairpinbegun == '<') || (type == '>' && stave_hairpinbegun == '>'); - int y = ending? 0 : stave_hairpiny; + int y = ending? 0 : stave_hairpiny; int x = 0, h = 0; int slu = 0, sru = 0; @@ -614,15 +617,15 @@ { next_ch(); - /* b is anomalous - /bar is always allowed, but /b only on + /* b is anomalous - /bar is always allowed, but /b only on beginning hairpins. */ - + if (read_ch =='b' && *read_chptr == 'a' && read_chptr[1] == 'r') - { - flags |= hp_bar; + { + flags |= hp_bar; + next_ch(); next_ch(); next_ch(); - next_ch(); } else switch(read_ch) @@ -631,7 +634,7 @@ case 'd': y -= read_movevalue(); break; case 'l': x -= read_movevalue(); break; case 'r': x += read_movevalue(); break; - + case 'h': next_ch(); h = 500; @@ -661,48 +664,48 @@ } else error_moan(37, "\"slu\", \"sld\", \"sru\" or \"srd\""); break; - + default: - if (!ending) + if (!ending) { - int sign; + int sign; switch(read_ch) { - case 'a': - flags &= ~hp_below; - sign = 1; + case 'a': + flags &= ~hp_below; + sign = 1; goto ABSHP; - - case 'b': - flags |= hp_below; + + case 'b': + flags |= hp_below; sign = -1; - ABSHP: - y = 0; + ABSHP: + y = 0; flags &= ~(hp_middle | hp_abs); - next_ch(); + next_ch(); if (isdigit(read_ch)) { flags |= hp_abs; - y = sign * read_integer(TRUE); - } + y = sign * read_integer(TRUE); + } break; - - case 'm': - flags |= hp_below | hp_middle; - next_ch(); + + case 'm': + flags |= hp_below | hp_middle; + next_ch(); break; - - case 'w': - next_ch(); - read_expect_integer(&width, TRUE, FALSE); + + case 'w': + next_ch(); + read_expect_integer(&width, TRUE, FALSE); break; - + default: error_moan(37, "\"u\", \"d\", \"l\", \"r\", \"a\", \"b\", \"m\", \"w\", \"slu\", \"sru\" or \"h\""); break; } - } + } else error_moan(37, "\"u\", \"d\", \"l\", \"r\", \"su\" or \"h\""); break; } @@ -732,7 +735,7 @@ p->y = y; p->su = slu; p->h = h; - p->width = width; + p->width = width; stave_hairpinsru = sru; stave_resetOK = FALSE; } @@ -768,7 +771,7 @@ else (void)store_getitem(b_dotbar); break; - /* A semi-colon used to be a general separator, way back in early days. + /* A semi-colon used to be a general separator, way back in early days. Later, it was used as a beam breaking character, but still kept as a separator. This meant that if a beam break was incorrectly placed, no warning was given. It is therefore no longer a general separator, unless @@ -776,19 +779,16 @@ anyone will every feed PMW files with that set, but you never know). */ case ';': - if (!opt_oldbeambreak) - error_moan(5, "Mis-placed semicolon (a beam break semicolon must " - "immediately follow a beamable note)"); - next_sigch(); + if (!opt_oldbeambreak) error_moan(5, "semicolon"); + next_sigch(); break; - - /* Might as well give a similar error for a comma (which isn't old enough - to be tied up with old beam breaks). */ - + + /* Might as well give a similar error for a stray comma (which isn't old + enough to be tied up with old beam breaks). */ + case ',': - error_moan(5, "Mis-placed comma (a beam break comma must " - "immediately follow a beamable note)"); - next_sigch(); + error_moan(5, "comma"); + next_sigch(); break; /* A bracket can be the start of a repeat, or the start of a chord. We peek @@ -820,46 +820,46 @@ if (stavehead->omitempty) { - void *nextitem = store_nextitem(); + void *nextitem = store_nextitem(); bstr *p = bardatastart; - + read_prev_had_ibar = FALSE; - read_prev_had_dbar = FALSE; - read_prev_barlinestyle = stave_barlinestyle; - + read_prev_had_dbar = FALSE; + read_prev_barlinestyle = stave_barlinestyle; + while (p != nextitem) { - int type = p->type; + int type = p->type; switch(type) { case b_Jump: p = (bstr *)(((b_Jumpstr *)p)->next); break; - + case b_ibar: read_prev_had_ibar = TRUE; break; - + case b_dbar: read_prev_had_dbar = TRUE; break; - - default: + + default: goto NORMALBAREND; - } + } p = (bstr *)((uschar *)p + length_table[type]); - } - + } + /* If control gets here, 'twas only ibar or dbar */ - - if (read_prev_had_ibar || - read_prev_had_dbar || + + if (read_prev_had_ibar || + read_prev_had_dbar || read_barlinestyle != stave_barlinestyle) { read_prev_barlinestyle = read_barlinestyle; bardatastart = nextitem; /* make empty */ - } - } + } + } NORMALBAREND: @@ -876,12 +876,12 @@ { b_Endstr *b = store_getitem(b_End); b->overbeam = stave_overbeam; - b->barlinestyle = read_barlinestyle; - + b->barlinestyle = read_barlinestyle; + /* Set stave_maxbarlength to the longest length encountered, allowing for [reset]s. */ - - if (stave_barlength > stave_maxbarlength) + + if (stave_barlength > stave_maxbarlength) stave_maxbarlength = stave_barlength; /* Check length. If the bar contains tuplets of prime numbers greater than @@ -898,13 +898,63 @@ format_movt = curmovt; error_moan(49, stave_barnumber, curstave, (extra > 0)? "long":"short", abs(extra)); - } + } } /* Deal with incomplete beams and unchosen stems */ if (stave_beaming) read_setbeamstems(); mac_setstackedstems(stave_laststemup? nf_stemup : 0); + + /* If tripletizing was set at any point in this bar, scan it for dotted- + quaver groups and adjust the note lengths. Also handle dotted crotchet + followed by two semiquavers. */ + + if (stave_tripletize) + { + b_notestr *first = (b_notestr *)((stavehead->barindex)[stave_barnumber]); + if (first->type != b_note) first = misc_nextnote(first, NULL); + + while (first != NULL) + { + b_notestr *next = misc_nextnote(first, NULL); + if (next == NULL) break; + + /* Both notes must be flagged for tripletizing */ + + if ((first->flags & next->flags & nf_tripletize) != 0) + { + b_notestr *third; + + if (first->length == (len_quaver * 3)/2 && + next->length == len_squaver) + { + first->length = (len_crotchet * 2)/3; + next->length = len_crotchet/3; + first = misc_nextnote(next, NULL); + continue; + } + + third = misc_nextnote(next, NULL); + if (third == NULL) break; + if ((third->flags & nf_tripletize) != 0 && + first->length == (len_crotchet * 3)/2 && + next->length == len_squaver && + third->length == len_squaver) + { + first->length = (len_crotchet * 4)/3; + next->length = len_crotchet/3; + third->length = len_crotchet/3; + first = third; + continue; + } + } + + /* No tripletizing this pair */ + + first = next; + } + } } /* Grumble if unclosed plet */ diff -Nru pmw-4.29/src/read4.c pmw-4.30/src/read4.c --- pmw-4.29/src/read4.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read4.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,20 +2,20 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains part IV of the code for reading in a PMW score file. It -contains code for handling stave directives. The main function is at the +contains code for handling stave directives. The main function is at the bottom, preceded by a table of directives, which refer to the other functions. -They all have the same interface: no arguments or results. The variable -read_dir is set to point to the found directive, and in its data structure +They all have the same interface: no arguments or results. The variable +read_dir is set to point to the found directive, and in its data structure there may be up to two arguments. The action of each function is either to set up a new item and add it to the list (done by store_getitem()), and if -necessary, fill in its data value(s), or to set flags or variables that affect +necessary, fill in its data value(s), or to set flags or variables that affect the way the stave's data is to be read. */ @@ -30,8 +30,8 @@ static uschar real_clef[] = { clef_treble, clef_soprano, clef_mezzo, clef_alto, clef_tenor, - clef_cbaritone, clef_baritone, clef_bass, clef_deepbass, - clef_treble, clef_treble, clef_treble, clef_treble, clef_treble, + clef_cbaritone, clef_baritone, clef_bass, clef_deepbass, + clef_treble, clef_treble, clef_treble, clef_treble, clef_treble, clef_bass, clef_bass }; static int clef_octave[] = { @@ -45,7 +45,7 @@ * Common routine for dataless item * *************************************************/ -static void +static void p_common(void) { (void)store_getitem(read_dir->arg1); @@ -56,7 +56,7 @@ * Common routine for above/below * *************************************************/ -static void +static void p_above(void) { int flag = FALSE; @@ -73,7 +73,7 @@ * Common routine for positive dimension * *************************************************/ -static void +static void p_pvalue(void) { sigch(); @@ -90,7 +90,7 @@ * Common routine for signed dimension * *************************************************/ -static void +static void p_svalue(void) { int x; @@ -105,7 +105,7 @@ * Common routine for font setting * *************************************************/ -static void +static void p_font(void) { int *p = (read_dir->arg1 == 0)? &stave_fbfont : @@ -120,7 +120,7 @@ * Common routine for size setting * *************************************************/ -static void +static void p_size(void) { int size; @@ -128,8 +128,8 @@ (read_dir->arg1 == 1)? &stave_textsize : (read_dir->arg1 == 2)? &stave_ulsize : &stave_olsize; if (!read_expect_integer(&size, FALSE, FALSE)) return; -if (--size < 0 || size >= MaxTextFont) - { error_moan(39, MaxTextFont); return; } +if (--size < 0 || size >= MaxFontSizes) + { error_moan(39, MaxFontSizes); return; } *p = size; } @@ -138,7 +138,7 @@ * Common routine for fixed noteheads value * *************************************************/ -static void +static void p_nh(void) { b_noteheadsstr *p = store_getitem(b_noteheads); @@ -151,7 +151,7 @@ * Beamacc and Beamrit * *************************************************/ -static void +static void p_beamaccrit(void) { b_charvaluestr *p = store_getitem(read_dir->arg1); @@ -170,7 +170,7 @@ * Clef setting * *************************************************/ -static void +static void p_clef(void) { if (!read_assumeflag) @@ -193,7 +193,7 @@ read_expect_integer(&stave_octave, FALSE, TRUE); stave_octave *= 12; } -stave_lastbasenoteptr = NULL; +stave_lastbasenoteptr = NULL; } @@ -202,12 +202,12 @@ *************************************************/ static const char *assume_list[] = { - "alto", "baritone", "bass", "contrabass", "deepbass", + "alto", "baritone", "bass", "contrabass", "deepbass", "hclef", "key", "mezzo", "noclef", "soprabass", "soprano", - "tenor", "time", "treble", "trebledescant", "trebletenor", + "tenor", "time", "treble", "trebledescant", "trebletenor", "trebletenorb" }; -static void +static void p_assume(void) { unsigned int i; @@ -226,7 +226,7 @@ * Barlinestyle * ************************************************/ -static void +static void p_barlinestyle(void) { (void)read_expect_integer(&stave_barlinestyle, FALSE, FALSE); @@ -235,7 +235,7 @@ /* The default, for use with totally empty bars, is the first style given. This isn't entirely satisfactory, but copes with most cases. */ -if (stavehead->barlinestyle == 255) +if (stavehead->barlinestyle == 255) stavehead->barlinestyle = stave_barlinestyle; } @@ -244,7 +244,7 @@ * Barnumber * *************************************************/ -static void +static void p_barnum(void) { b_barnumstr *p = store_getitem(b_barnum); @@ -300,7 +300,7 @@ * Couple * *************************************************/ -static void +static void p_couple(void) { uschar word[80]; @@ -316,7 +316,7 @@ * Cue * *************************************************/ -static void +static void p_cue(void) { stave_noteflags &= ~nf_cuedotalign; @@ -325,11 +325,11 @@ if (read_ch == '/') { uschar word[80]; - next_ch(); + next_ch(); read_word(word); if (Ustrcmp(word, "dotalign") == 0) stave_noteflags |= nf_cuedotalign; - else error_moan(10, "\"dotalign\""); - } + else error_moan(10, "\"dotalign\""); + } } @@ -337,7 +337,7 @@ * Dots * *************************************************/ -static void +static void p_dots(void) { uschar word[80]; @@ -349,10 +349,21 @@ /************************************************* +* Doublenotes * +*************************************************/ + +static void +p_doublenotes(void) +{ +stave_notenum *= 2; +} + + +/************************************************* * Draw * *************************************************/ -static void +static void p_draw(void) { tree_node *node; @@ -363,16 +374,16 @@ sigch(); while (isdigit(read_ch) || read_ch == '-' || read_ch == '+' || read_ch == '\"') { - if (read_ch == '\"') - { + if (read_ch == '\"') + { args[++argcount].d.ptr = read_draw_text(); - args[argcount].dtype = dd_text; - } - else + args[argcount].dtype = dd_text; + } + else { if (!read_expect_integer(&(args[++argcount].d.val), TRUE, TRUE)) break; - args[argcount].dtype = dd_number; - } + args[argcount].dtype = dd_number; + } sigch(); } @@ -387,7 +398,7 @@ { int i; d->args = store_Xget((argcount+1)*sizeof(drawitem)); - d->args[0].dtype = dd_number; + d->args[0].dtype = dd_number; d->args[0].d.val = argcount; for (i = 1; i <= argcount; i++) d->args[i] = args[i]; } @@ -399,7 +410,7 @@ * Endcue * *************************************************/ -static void +static void p_endcue(void) { stave_noteflags &= ~(nf_cuesize|nf_cuedotalign); @@ -410,7 +421,7 @@ * Endline & Endslur * *************************************************/ -static void +static void p_endline(void) { int id = 0; @@ -446,7 +457,7 @@ /* This sets the global read_endstave flag, which is detected in the stave-reading code. */ -static void +static void p_endstave(void) { read_endstave = TRUE; @@ -457,7 +468,7 @@ * Footnote * *************************************************/ -static void +static void p_footnote(void) { b_footnotestr *f = store_getitem(b_footnote); @@ -470,7 +481,7 @@ * Hairpins * *************************************************/ -static void +static void p_hairpins(void) { uschar word[80]; @@ -508,7 +519,7 @@ * Hairpinwidth * *************************************************/ -static void +static void p_hairpinwidth(void) { (void)read_expect_integer(&stave_hairpinwidth, TRUE, FALSE); @@ -516,19 +527,32 @@ /************************************************* +* Halvenotes * +*************************************************/ + +static void +p_halvenotes(void) +{ +if (stave_notenum > 1) stave_notenum /= 2; else stave_noteden *= 2; +} + + + +/************************************************* * Key * *************************************************/ -static void +static void p_key(void) { int warn = curmovt->keywarn; int oldkey = stave_key_tp; +int oldwidth, newwidth; + stave_key = read_key(); read_initbaraccs(baraccs, stave_key); stave_key_tp = transpose_key(stave_key, stave_transpose, TRUE); - read_initbaraccs(baraccs_tp, stave_key_tp); read_word(read_stavedir); @@ -538,11 +562,22 @@ warn = FALSE; } +oldwidth = misc_keywidth(oldkey | 64, stave_clef); +newwidth = misc_keywidth(stave_key_tp, stave_clef); + +/* If both the old (cancellation) width and the new key width are zero, there's +nothing we can do about warning. */ + +if (oldwidth == 0 && newwidth == 0) warn = FALSE; + +/* If not "assume" create a new key item, preceded by a cancellation key item +if the new signature is empty and the old one is not. */ + if (!read_assumeflag) { b_keystr *p = store_getitem(b_key); - if (stave_key_tp == 2 || stave_key_tp == 21) + if (newwidth == 0 && oldwidth != 0) { p->key = oldkey | 64; p->warn = warn; @@ -554,6 +589,9 @@ p->warn = warn; p->suppress = FALSE; } + +/* "Assume": insert a change of key without any printing. */ + else { b_setkeystr *p = store_getitem(b_setkey); @@ -567,7 +605,7 @@ * Justify * *************************************************/ -static void +static void p_justify(void) { uschar word[80]; @@ -604,7 +642,7 @@ * Linegap & Slurgap * *************************************************/ -static void +static void p_linegap(void) { b_linegapstr *p; @@ -640,23 +678,23 @@ sigch(); while (isdigit(read_ch) || read_ch == '-' || read_ch == '+' || read_ch == '\"') { - if (read_ch == '\"') + if (read_ch == '\"') { args[++argcount].d.ptr = read_draw_text(); - args[argcount].dtype = dd_text; - } - else + args[argcount].dtype = dd_text; + } + else { if (!read_expect_integer(&(args[++argcount].d.val), TRUE, TRUE)) break; - args[argcount].dtype = dd_number; - } + args[argcount].dtype = dd_number; + } sigch(); } if (argcount > 0) { int i; drawargs = store_Xget((argcount+1)*sizeof(drawitem)); - drawargs[0].dtype = dd_number; + drawargs[0].dtype = dd_number; drawargs[0].d.val = argcount; for (i = 1; i <= argcount; i++) drawargs[i] = args[i]; } @@ -694,14 +732,14 @@ if (!read_expect_integer(&x, TRUE, FALSE)) return; width = x; break; - + case '\"': - gaptext = store_Xget(sizeof(gaptextstr)); + gaptext = store_Xget(sizeof(gaptextstr)); gaptext->text = string_check(string_read()); gaptext->flags = 0; gaptext->size = 0; gaptext->x = 0; - gaptext->y = 0; + gaptext->y = 0; while (read_ch == '/') { @@ -719,23 +757,23 @@ } else error_moan(10, "/box, /ring, or /s"); break; - + case 'd': gaptext->y -= read_movevalue(); - break; - + break; + case 'l': gaptext->x -= read_movevalue(); - break; - + break; + case 's': next_ch(); read_expect_integer(&size, FALSE, FALSE); - if (--size < 0 || size >= MaxTextFont) - { error_moan(39, MaxTextFont); size = 0; } + if (--size < 0 || size >= MaxFontSizes) + { error_moan(39, MaxFontSizes); size = 0; } gaptext->size = size; break; - + case 'r': if (Ustrncmp(read_chptr, "ing", 3) == 0) { @@ -746,18 +784,18 @@ gaptext->flags |= text_ring; } else gaptext->x += read_movevalue(); - break; - + break; + case 'u': gaptext->y += read_movevalue(); - break; + break; default: error_moan(10, "/box, /ring, or /s"); break; } } - break; + break; default: error_moan(10, "=, l, r, or w"); @@ -767,7 +805,7 @@ sigch(); } -if (stave_slurcount <= 0) +if (stave_slurcount <= 0) error_moan(17, "%sgap directive", (read_dir->arg1)? "slur":"line"); /* Width defaults to width of text or 4 points */ @@ -776,14 +814,14 @@ { if (gaptext == NULL) width = 4000; else { - int fontsize = mac_muldiv((curmovt->stavesizes)[curstave], + int fontsize = mac_muldiv((curmovt->stavesizes)[curstave], ((curmovt->fontsizes)->fontsize_text)[gaptext->size], 1000); int *matrix = ((curmovt->fontsizes)->fontmatrix_text)[gaptext->size]; if (matrix != NULL) memcpy(font_transform, matrix, 4*sizeof(int)); width = font_stringwidth(gaptext->text, font_rm, fontsize) + fontsize; - font_reset(); + font_reset(); } - } + } /* Get data block and fill it in. */ @@ -805,7 +843,7 @@ *************************************************/ /* These are all variations on the same theme. All of them create a play change -item entry, with various different parameters. We start with a local subrouting +item entry, with various different parameters. We start with a local subrouting that they can all use. Arguments: @@ -814,11 +852,11 @@ note note pitch volume volumne transpose transpose value - -Returns: nothing + +Returns: nothing */ -static void +static void makechange(int channel, int voice, int note, int volume, int transpose) { b_playchangestr *p = store_getitem(b_playchange); @@ -836,7 +874,7 @@ /*** Midichannel ***/ -static void +static void p_midichannel(void) { int channel; @@ -844,9 +882,9 @@ int volume = 128; uschar string[80]; if (!read_expect_integer(&channel, FALSE, FALSE)) return; -if (channel < 1 || channel > midi_maxchannel) +if (channel < 1 || channel > MIDI_MAXCHANNEL) { - error_moan(109, midi_maxchannel); + error_moan(109, MIDI_MAXCHANNEL); return; } @@ -869,7 +907,7 @@ next_ch(); if (read_expect_integer(&vol, FALSE, FALSE)) { - if (vol > 15) + if (vol > 15) error_moan(10, "Number between 0 and 15"); else volume = vol; } } @@ -881,7 +919,7 @@ /*** Midivoice ***/ -static void +static void p_midivoice(void) { int voicenumber; @@ -905,7 +943,7 @@ /*** Midipitch ***/ -static void +static void p_midipitch(void) { int note; @@ -922,7 +960,7 @@ /*** Playtranspose ***/ -static void +static void p_playtranspose(void) { int transpose; @@ -932,7 +970,7 @@ /*** Playvolume ***/ -static void +static void p_playvolume(void) { int volume; @@ -954,7 +992,7 @@ * Move & Rmove * *************************************************/ -static void +static void p_move(void) { int x; @@ -983,7 +1021,7 @@ /* The stave magnification is used only if an explicit size is given; otherwise the fixed size is used. */ -static void +static void p_name(void) { sigch(); @@ -1053,8 +1091,8 @@ next_ch(); if (read_expect_integer(&size, FALSE, FALSE)) { - if (--size < 0 || size >= MaxTextFont) - error_moan(39, MaxTextFont); + if (--size < 0 || size >= MaxFontSizes) + error_moan(39, MaxFontSizes); } else return; } @@ -1088,21 +1126,21 @@ read_ch = ' '; sigch(); - while (isdigit(read_ch) || - read_ch == '-' || - read_ch == '+' || + while (isdigit(read_ch) || + read_ch == '-' || + read_ch == '+' || read_ch == '\"') { - if (read_ch == '\"') + if (read_ch == '\"') { args[++argcount].d.ptr = read_draw_text(); - args[argcount].dtype = dd_text; - } - else + args[argcount].dtype = dd_text; + } + else { if (!read_expect_integer(&(args[++argcount].d.val), TRUE, TRUE)) break; - args[argcount].dtype = dd_number; - } + args[argcount].dtype = dd_number; + } sigch(); } @@ -1110,7 +1148,7 @@ { int i; drawargs = store_Xget((argcount+1)*sizeof(drawitem)); - drawargs[0].dtype = dd_number; + drawargs[0].dtype = dd_number; drawargs[0].d.val = argcount; for (i = 1; i <= argcount; i++) drawargs[i] = args[i]; } @@ -1136,7 +1174,7 @@ /* [newmovement] is unexpected here - give a tidy error message */ -static void +static void p_newmovement(void) { error_moan(73); /* this stops processing */ @@ -1147,7 +1185,7 @@ * Nocheck * *************************************************/ -static void +static void p_nocheck(void) { stave_checklength = FALSE; @@ -1162,7 +1200,7 @@ ignore if two nocounts in the same bar (causes big trouble and can happen if a bar line is accidentally omitted). */ -static void +static void p_nocount(void) { if (!stave_hadnocount) @@ -1170,7 +1208,7 @@ if (++stave_totalnocount > (curmovt->barnovector)[stave_barnumber+1]) (curmovt->barnovector)[stave_barnumber+1] = stave_totalnocount; stave_hadnocount = TRUE; - } + } } @@ -1178,7 +1216,7 @@ * Noteheads * *************************************************/ -static void +static void p_noteheads(void) { int nh; @@ -1218,7 +1256,7 @@ * Notes * *************************************************/ -static void +static void p_notes(void) { int flag = FALSE; @@ -1237,7 +1275,7 @@ /* There are three possible formats */ -static void +static void p_ns(void) { sigch(); @@ -1280,7 +1318,7 @@ * Octave * *************************************************/ -static void +static void p_octave(void) { int x; @@ -1294,7 +1332,7 @@ * Omitempty * *************************************************/ -static void +static void p_omitempty(void) { stavehead->omitempty = TRUE; @@ -1305,7 +1343,7 @@ * Page * *************************************************/ -static void +static void p_page(void) { b_pagestr *p = store_getitem(b_page); @@ -1324,7 +1362,7 @@ * Percussion * *************************************************/ -static void +static void p_percussion(void) { stavehead->stavelines = 128 + 1; /* 128 => no clefs or keys */ @@ -1335,7 +1373,7 @@ * Printpitch * *************************************************/ -static void +static void p_printpitch(void) { sigch(); @@ -1352,7 +1390,7 @@ * Reset * *************************************************/ -static void +static void p_reset(void) { (void)store_getitem(b_reset); @@ -1378,7 +1416,7 @@ * Resume * *************************************************/ -static void +static void p_resume(void) { (void)store_getitem(b_resume); @@ -1390,7 +1428,7 @@ * Rlevel * *************************************************/ -static void +static void p_rlevel(void) { (void)read_expect_integer(&stave_restlevel, TRUE, TRUE); @@ -1402,7 +1440,7 @@ * Rspace & Space * *************************************************/ -static void +static void p_rspace(void) { int x; @@ -1418,7 +1456,7 @@ * Skip * *************************************************/ -static void +static void p_skip(void) { int x; @@ -1428,12 +1466,12 @@ if ((stavehead->barindex)[stave_barnumber] == store_nextitem()) (stavehead->barindex)[stave_barnumber] = NULL; -else +else { b_Endstr *b = store_getitem(b_End); b->overbeam = FALSE; - b->barlinestyle = stave_barlinestyle; - } + b->barlinestyle = stave_barlinestyle; + } /* Advance to the required bar */ @@ -1458,13 +1496,13 @@ src = 2c A local subroutine is used to find the relevant slurmod on the chain, or to -create a new one if it isn't found. +create a new one if it isn't found. Arguments: sequence the sequence number anchor points to the anchor of the chain - -Returns: pointer to the required slurmod + +Returns: pointer to the required slurmod */ static b_slurmodstr * @@ -1487,7 +1525,7 @@ /*** Slur ***/ -static void +static void p_slur(void) { b_slurstr *p; @@ -1601,7 +1639,7 @@ { mods->ly += x; mods->ry += x; - } + } break; case 'd': @@ -1611,7 +1649,7 @@ { mods->ly -= x; mods->ry -= x; - } + } break; case 'e': @@ -1621,7 +1659,7 @@ case 'l': case 'r': - if (mods == NULL) mods = findmods(0, &modchain); + if (mods == NULL) mods = findmods(0, &modchain); a = (read_ch == 'l')? &(mods->ly) : &(mods->ry); b = (read_ch == 'l')? &(mods->lx) : &(mods->rx); next_ch(); @@ -1648,20 +1686,20 @@ int s = 0; int *z = NULL; b_slurmodstr *tempmods; - - if (read_ch == 'l') - { - tempmods = findmods(1, &modchain); + + if (read_ch == 'l') + { + tempmods = findmods(1, &modchain); a = &(tempmods->ry); - b = &(tempmods->c); + b = &(tempmods->c); } - else - { + else + { tempmods = findmods(2, &modchain); a = &(tempmods->ly); - b = &(tempmods->c); + b = &(tempmods->c); } - + next_ch(); if (read_ch == 'u' || read_ch == 'd') { @@ -1700,10 +1738,10 @@ flags |= sflag_i; next_ch(); if (read_ch == 'p') - { + { flags |= sflag_idot; next_ch(); - } + } break; case 'o': @@ -1740,7 +1778,7 @@ { if ((flags & sflag_l) != 0) error_moan(33, "lines"); } - + /* We don't support editorial marks on dotted or dashed slurs */ /* ... but they have been requested, even though they may end up @@ -1749,8 +1787,8 @@ if ((flags & sflag_e) != 0) { if ((flags & sflag_i) != 0) error_moan(94); - } -*/ + } +*/ /* Now output the slur proper, and count for nesting check. */ @@ -1767,7 +1805,7 @@ * Smove * *************************************************/ -static void +static void p_smove(void) { b_movestr *p; @@ -1783,7 +1821,7 @@ * Stavelines * *************************************************/ -static void +static void p_stavelines(void) { int n; @@ -1797,10 +1835,10 @@ * Stavespacing * *************************************************/ -static void +static void p_ss(void) { -unsigned int done[stave_bitvec_size]; +unsigned int done[STAVE_BITVEC_SIZE]; sigch(); mac_initstave(done, 0); @@ -1824,16 +1862,16 @@ if (!read_expect_integer(&spacing, TRUE, TRUE)) return; } - if (stave > max_stave) error_moan(42, max_stave); else + if (stave > MAX_STAVE) error_moan(42, MAX_STAVE); else { b_ssstr *p = store_getitem(read_dir->arg1); p->opt = opt; p->stave = stave; p->value = spacing; } - + if (mac_teststave(done, stave)) error_moan(106, stave, read_dir->name); - mac_setstave(done, stave); + mac_setstave(done, stave); sigch(); if (read_ch == ',') next_sigch(); if (read_ch != '+' && read_ch != '-' && !isdigit(read_ch)) break; @@ -1845,7 +1883,7 @@ * Stems/Ties * *************************************************/ -static void +static void p_stems(void) { int *p = (read_dir->arg1 == 1)? &stave_stemforce : &stave_ties; @@ -1862,7 +1900,7 @@ * Stemlength = Sl * *************************************************/ -static void +static void p_stemlength(void) { (void)read_expect_integer(&stave_stemlength, TRUE, TRUE); @@ -1874,7 +1912,7 @@ * Suspend * *************************************************/ -static void +static void p_suspend(void) { (void)store_getitem(b_suspend); @@ -1886,7 +1924,7 @@ * Systemgap * *************************************************/ -static void +static void p_sg(void) { b_sgstr *p; @@ -1906,7 +1944,7 @@ * Text * *************************************************/ -static void +static void p_text(void) { int sign = 1; @@ -1948,7 +1986,7 @@ * Time * *************************************************/ -static void +static void p_time(void) { int warn = curmovt->timewarn; @@ -2014,7 +2052,7 @@ a facility, not a bug! However, we must call the routine in order to set up the letter count for transposing notes. The yield is discarded. */ -static void +static void p_transpose(void) { int x; @@ -2030,7 +2068,7 @@ * Transposedacc * *************************************************/ -static void +static void p_transposedacc(void) { uschar word[80]; @@ -2045,7 +2083,7 @@ * Tremolo * *************************************************/ -static void +static void p_tremolo(void) { b_tremolostr *p; @@ -2074,10 +2112,32 @@ /************************************************* +* Tripletize * +*************************************************/ + +static void +p_tripletize(void) +{ +read_word(read_stavedir); +if (Ustrcmp(read_stavedir, "off") == 0) + { + read_stavedir[0] = 0; + stave_noteflags &= ~nf_tripletize; + } +else + { + stave_noteflags |= nf_tripletize; + stave_tripletize = TRUE; /* Check bar for tripletizing */ + } +if (Ustrcmp(read_stavedir, "on") == 0) read_stavedir[0] = 0; +} + + +/************************************************* * Triplets * *************************************************/ -static void +static void p_triplets(void) { int hadone = FALSE; @@ -2147,11 +2207,11 @@ /* Knows that ulevelstr has the same form as olevelstr; the actual type required is in the argument. */ -static void +static void p_uolevel(void) { b_ulevelstr *p; -int autoflag; +int autoflag; int value = 0; sigch(); @@ -2200,6 +2260,7 @@ { "cue", p_cue, 0, TRUE }, { "deepbass", p_clef, clef_deepbass, FALSE }, { "dots", p_dots, 0, TRUE }, + { "doublenotes", p_doublenotes,0, TRUE }, { "draw", p_draw, FALSE, FALSE }, { "el", p_endline, 0, TRUE }, { "endcue", p_endcue, 0, TRUE }, @@ -2215,6 +2276,7 @@ { "h", p_nh, nh_harmonic, TRUE }, { "hairpins", p_hairpins, 0, TRUE }, { "hairpinwidth", p_hairpinwidth, 0, TRUE }, + { "halvenotes", p_halvenotes, 0, TRUE }, { "hclef", p_clef, clef_h, FALSE }, { "justify", p_justify, 0, TRUE }, { "key", p_key, 0, FALSE }, @@ -2269,6 +2331,7 @@ { "space", p_rspace, FALSE, FALSE }, { "sshere", p_ss, b_sshere, TRUE }, { "ssnext", p_ss, b_ssnext, TRUE }, + { "stafflines", p_stavelines, 0, TRUE }, { "stavelines", p_stavelines, 0, TRUE }, { "stemlength", p_stemlength, 0, TRUE}, { "stems", p_stems, 1, TRUE }, @@ -2288,6 +2351,7 @@ { "trebletenor", p_clef, clef_trebletenor, FALSE }, { "trebletenorb", p_clef, clef_trebletenorB, FALSE }, { "tremolo", p_tremolo, 0, TRUE }, + { "tripletize", p_tripletize, 0, TRUE }, { "triplets", p_triplets, 0, TRUE }, { "ulevel", p_uolevel, b_ulevel, TRUE }, { "ulhere", p_svalue, b_ulhere, TRUE }, @@ -2308,14 +2372,14 @@ *************************************************/ /* The directive name is already in read_stavedir. If processing -this one reads one word ahead, leave that word in read_stavedir -for next time. +this one reads one word ahead, it leaves that word in read_stavedir +for next time. Arguments: none Returns: nothing */ -void +void read_stavedirective(void) { dirstr *first = read_stavedirlist; @@ -2345,7 +2409,7 @@ * Read a clef name * *************************************************/ -/* This function is used by the printkey heading directive. It is here so that +/* This function is used by the printkey heading directive. It is here so that it can use the table above for the supported clefs, thus avoiding a duplicate list. @@ -2372,13 +2436,13 @@ if (c == 0) { if (d->proc == p_clef) return d-> arg1; - break; + break; } if (c > 0) first = d + 1; else last = d; } - + error_moan(126, word); -return 0; +return 0; } /* End of read4.c */ diff -Nru pmw-4.29/src/read5.c pmw-4.30/src/read5.c --- pmw-4.29/src/read5.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read5.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains part V of the code for reading in a PMW score file - code @@ -54,7 +54,7 @@ static int maxpitch, minpitch, chordcount; static int notetype, length, stemforce; static BOOL seconds; -static tiedata this_tiedata[max_chordsize]; +static tiedata this_tiedata[MAX_CHORDSIZE]; /* This variable is set true when the only notes in a bar so far are notated using "p" and "x" and are tied to their predecessors. It is used to determine @@ -523,44 +523,60 @@ } /* If a relevant note is followed by a comma, set for a secondary beam break. -If followed by a semicolon, set for a primary beam break. +If followed by a semicolon, set for a primary beam break. We used to give an +error when either of these characters did not follow a quaver or shorter note. +This makes it annoying to use doublenotes or halvenotes to set a piece in +different ways. We now allow comma and semicolon after any note at this +point, only generating the relevant break for short enough notes. Any other +occurrences still give an error. COMPATIBILITY FEATURE: For compatibility with the original program, if the -"oldbeambreaks" option is set, use space or ! for a primary break, and -semicolon for no break at all. */ +"oldbeambreak" option is set, use space or ! for a primary break. Semicolon +will be treated (elsewhere) as a general separator and ignored. */ -if (notetype >= quaver) +if (opt_oldbeambreak) { - if (read_ch == ',') + if (read_ch == ' ' || read_ch == '!') { - b_beambreak2str *b = store_getitem(b_beambreak2); next_ch(); - if (isdigit(read_ch)) + if (notetype >= quaver) { - b->value = read_ch - '0'; - next_ch(); + (void)store_getitem(b_beambreak); + if (stave_beaming) read_setbeamstems(); } - else b->value = 1; } - else if (!opt_oldbeambreak) + else if (read_ch == ',') goto SECBEAMBREAK; + } + +else /* Not oldbeambreak */ + { + if (read_ch == ';') { - if (read_ch == ';') + next_ch(); + if (notetype >= quaver) { - next_ch(); (void)store_getitem(b_beambreak); if (stave_beaming) read_setbeamstems(); } } - else + else if (read_ch == ',') { - if (read_ch == ' ' || read_ch == '!') + unsigned int v; + SECBEAMBREAK: + next_ch(); + if (isdigit(read_ch)) { + v = read_ch - '0'; next_ch(); - (void)store_getitem(b_beambreak); - if (stave_beaming) read_setbeamstems(); + } + else v = 1; + if (notetype >= quaver) + { + b_beambreak2str *b = store_getitem(b_beambreak2); + b->value = v; } } - } + } /* If we encountered '}' previously or here, end plet group */ @@ -634,7 +650,6 @@ stave_firstnoteptr = NULL; maxpitch = 0; minpitch = 256; -chordcount = 0; stemforce = 0; /* stem not forced */ seconds = FALSE; @@ -662,6 +677,7 @@ b_notestr *new; bstr *p = (bstr *)last_note_ornament; do_underlay(); + chordcount = 0; if (p != NULL) while (p != (bstr *)old) { @@ -702,6 +718,11 @@ stave_pitchtotal += new->truepitch; stave_pitchcount++; chordcount++; + + /* This error should never occur because the original chord should be + diagnosed. Paranoia. */ + + if (chordcount >= MAX_CHORDSIZE) error_moan(132, MAX_CHORDSIZE); /* Hard */ if (new->spitch > maxpitch) maxpitch = new->spitch; if (new->spitch < minpitch) minpitch = new->spitch; @@ -756,6 +777,7 @@ /* Loop to read all the notes of a chord */ +chordcount = 0; for (;;) { b_notestr *noteptr; @@ -1014,6 +1036,7 @@ which may have been in the previous bar. Save the information in case this note is tied. */ + if (chordcount >= MAX_CHORDSIZE) error_moan(132, MAX_CHORDSIZE); /* Hard */ this_tiedata[chordcount].pitch = pitch; if (acc) @@ -1222,11 +1245,11 @@ /* Handle doubled or halved note lengths - note that full bar rests must be skipped (the centre flag is an indicator). */ - if ((main_notenum != 1 || main_noteden != 1) && (flags & nf_centre) == 0) + if ((stave_notenum != 1 || stave_noteden != 1) && (flags & nf_centre) == 0) { - int i = main_notenum; + int i = stave_notenum; while (i > 1) { length += length; notetype--; i /= 2; } - i = main_noteden; + i = stave_noteden; while (i > 1) { length /= 2; notetype++; i /= 2; } } diff -Nru pmw-4.29/src/read6.c pmw-4.30/src/read6.c --- pmw-4.29/src/read6.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/read6.c 2018-06-15 15:50:03.000000000 +0000 @@ -63,10 +63,10 @@ b_notestr *ww; b_notestr *www = NULL; b_notestr *sorttop; -b_notestr sortvec[max_chordsize]; +b_notestr sortvec[MAX_CHORDSIZE]; tiedata *tt; -tiedata sorttievec[max_chordsize]; +tiedata sorttievec[MAX_CHORDSIZE]; sorttop = sortvec; /* End of list pointer */ ww = w; /* Working pointer */ @@ -256,7 +256,7 @@ if (!acc_explicit && acc_count > 1) { int state = 0; - accstr a_matrix[max_chordsize]; + accstr a_matrix[MAX_CHORDSIZE]; accstr *row = a_matrix; accstr *a_end; diff -Nru pmw-4.29/src/readhdr.h pmw-4.30/src/readhdr.h --- pmw-4.29/src/readhdr.h 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/readhdr.h 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This is the header file for the score reading routines; imported by error.c in order to access the input buffers. */ @@ -216,7 +216,9 @@ extern int stave_maxbarlength; /* High water mark length */ extern int stave_maxpitch; /* Max note on a stave */ extern int stave_minpitch; /* Min note on a stave */ +extern int stave_noteden; /* Divides note length */ extern int stave_noteflags; /* Default flags */ +extern int stave_notenum; /* Multiplies note length */ extern BOOL stave_notes; /* Notes on/off state */ extern int stave_octave; /* Octave number *12 */ extern int stave_olfont; /* Default font */ @@ -255,6 +257,7 @@ extern int stave_transpose; /* Current transposition */ extern BOOL stave_transposedaccforce; /* Default acc forcing */ extern int stave_transpose_letter; /* Current letter transposition */ +extern BOOL stave_tripletize; /* Tripletize dotted quaver pairs */ extern int stave_ulfont; /* Default initial font */ extern int stave_ulsize; /* Default size */ diff -Nru pmw-4.29/src/setbar.c pmw-4.30/src/setbar.c --- pmw-4.29/src/setbar.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setbar.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2012 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: March 2012 */ +/* This file last modified: May 2018 */ /* This file contains code for outputting one bar */ @@ -224,7 +224,7 @@ main_bit[out_stave & 0x1f]; if (!another) - for (i = (out_stave >> 5) + 1; i < stave_bitvec_size; i++) + for (i = (out_stave >> 5) + 1; i < STAVE_BITVEC_SIZE; i++) if (notsuspend[i] != 0) { another = TRUE; break; } if (another && out_sysblock->stavespacing[out_stave] > 0) @@ -506,8 +506,8 @@ int fontsize = mac_muldiv(main_stavemagn, overlay? - (curmovt->fontsizes)->fontsize_olay : - (curmovt->fontsizes)->fontsize_ulay, + ((curmovt->fontsizes)->fontsize_text)[ff_offset_olay] : + ((curmovt->fontsizes)->fontsize_text)[ff_offset_ulay], 1000); if (xx == 0) /* A complete system of hyphens or extender */ diff -Nru pmw-4.29/src/setbeam.c pmw-4.30/src/setbeam.c --- pmw-4.29/src/setbeam.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setbeam.c 2018-06-15 15:50:03.000000000 +0000 @@ -464,7 +464,7 @@ int sladjust = mac_muldiv(75*main_stavemagn, n_fontsize, 1000000) + n_cueadjust; int sradjust = mac_muldiv(115*main_stavemagn, n_fontsize, 1000000) + n_cueadjust; -uschar taildirflags[max_beamsize]; +uschar taildirflags[MAX_BEAMSIZE]; /* Add possible cue note adjustment into endpoints */ diff -Nru pmw-4.29/src/setdraw.c pmw-4.30/src/setdraw.c --- pmw-4.29/src/setdraw.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setdraw.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for supporting the "draw" directives in PMW. It @@ -162,8 +162,8 @@ static int gray; static int level; static int xp, yp, cp; -static drawitem draw_variables[max_draw_variable + 1]; -static drawitem draw_stack[draw_stacksize]; +static drawitem draw_variables[MAX_DRAW_VARIABLE + 1]; +static drawitem draw_stack[DRAW_STACKSIZE]; @@ -398,8 +398,8 @@ next_ch(); if (read_expect_integer(&size, FALSE, FALSE)) { - if (--size < 0 || size >= MaxTextFont) - { error_moan(39, MaxTextFont); size = 0; } + if (--size < 0 || size >= MaxFontSizes) + { error_moan(39, MaxFontSizes); size = 0; } textptr->size = size; } break; @@ -469,10 +469,10 @@ if (word[0] == 0) { error_moan(10, "name"); return; } drawnode->name = store_copystring(word); -drawnode->data = store_Xget(draw_blocksize); +drawnode->data = store_Xget(DRAW_BLOCKSIZE); ptr = (drawitem *)drawnode->data; -left = draw_blocksize/sizeof(drawitem); +left = DRAW_BLOCKSIZE/sizeof(drawitem); /* Loop to read the contents of the draw function */ @@ -523,9 +523,9 @@ node = Tree_Search(draw_variable_tree, word); if (node == NULL) { - if (draw_nextvariable > max_draw_variable) + if (draw_nextvariable > MAX_DRAW_VARIABLE) { - error_moan(100, max_draw_variable + 1); + error_moan(100, MAX_DRAW_VARIABLE + 1); draw_nextvariable--; } value = draw_nextvariable++; @@ -603,9 +603,9 @@ if (left < 4) { (ptr++)->d.val = dr_jump; - ptr->d.ptr = store_Xget(draw_blocksize); + ptr->d.ptr = store_Xget(DRAW_BLOCKSIZE); ptr = (drawitem *)(ptr->d.ptr); - left = draw_blocksize/sizeof(drawitem); + left = DRAW_BLOCKSIZE/sizeof(drawitem); } /* Add this item to the "program". Numbers, variable names, and variable @@ -887,7 +887,7 @@ while (p->d.val != dr_end) { int errornumber = 0; - if (out_drawstackptr > draw_stacksize - 4) + if (out_drawstackptr > DRAW_STACKSIZE - 4) errornumber = 121; else { @@ -1080,7 +1080,7 @@ case dr_def: { int n = draw_stack[out_drawstackptr-2].d.val; - if (n < 0 || n > max_draw_variable) draw_error(101, "", t); + if (n < 0 || n > MAX_DRAW_VARIABLE) draw_error(101, "", t); else draw_variables[n] = draw_stack[out_drawstackptr-1]; } out_drawstackptr -= 2; diff -Nru pmw-4.29/src/setnote.c pmw-4.30/src/setnote.c --- pmw-4.29/src/setnote.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setnote.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains the main code typesetting one note or chord */ @@ -310,7 +310,7 @@ /* Move back to the key signature if no left repeat, else add width of repeat */ leftx = (out_findTentry(posx_RLleft) == NULL)? - out_barx - page_leftbarspace : out_barx + 6 * main_stavemagn; + out_barx - PAGE_LEFTBARSPACE : out_barx + 6 * main_stavemagn; } else leftx = out_lastbarlinex; diff -Nru pmw-4.29/src/setother.c pmw-4.30/src/setother.c --- pmw-4.29/src/setother.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setother.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2012 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: March 2012 */ +/* This file last modified: May 2018 */ /* This file contains code for outputting non-note items in a bar */ @@ -475,7 +475,7 @@ { b_dynmovestr *d = (b_dynmovestr *)p; int z = d->dynamic; - out_dynmovef[z] = d->bflags; + out_dynmovef[z] = d->bflags; out_dynmovex[z] = d->x; out_dynmovey[z] = mac_muldiv(d->y, main_stavemagn, 1000); } @@ -486,18 +486,18 @@ case b_comma: { int y; - uschar *s; + uschar *s; b_notestr *pp = misc_nextnote((b_notestr *)p, 0); if (main_righttoleft) { y = 19; - s = US"\xc3\x81"; + s = US"\xc3\x81"; } else { y = 22; - s = US"N"; - } + s = US"N"; + } if (pp != NULL && pp->spitch > 148) y += pp->spitch - 148; out_string(s, font_mf, 10*main_stavemagn, out_barx + out_findXoffset(out_moff + posx_comma) + out_Xadjustment, @@ -616,6 +616,8 @@ } else { + if (out_textqueueptr >= TEXT_QUEUE_SIZE) + error_moan(131, TEXT_QUEUE_SIZE); out_textXqueue[out_textqueueptr] = out_textX; out_textqueue[out_textqueueptr++] = (b_textstr *)p; } diff -Nru pmw-4.29/src/setwarn.c pmw-4.30/src/setwarn.c --- pmw-4.29/src/setwarn.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/setwarn.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for outputting warning key/time signatures, in a @@ -92,13 +92,15 @@ } break; - /* If the key signature is C major (= 2), ignore it completely. - This occurs only when there has been a change to C major from some - other key, and it follows the cancellation signature. Leaving it in - messes up the spacing for any subsequent time signature. */ + /* If the key signature has zero width (C major, A minor, or a + custom empty signature), ignore it completely. This occurs only + when there has been a change from some other key, and it follows + the cancellation signature. Leaving it in messes up the spacing for + any subsequent time signature. */ case b_key: - if (((b_keystr *)p)->key != 2 && thiscount-- <= 0) + if (misc_keywidth(((b_keystr *)p)->key, out_cont[stave].clef) != 0 && + thiscount-- <= 0) { b_keystr *k = (b_keystr *)p; if (k->warn) @@ -119,7 +121,7 @@ (out_sysblock->notsuspend[stave >> 5] & (-main_bit[stave & 0x1f])) > main_bit[stave & 0x1f]; if (!another) - for (i = (stave >> 5) + 1; i < stave_bitvec_size; i++) + for (i = (stave >> 5) + 1; i < STAVE_BITVEC_SIZE; i++) if (out_sysblock->notsuspend[i] != 0) { another = TRUE; break; } if (another && mac_testNstave(curmovt->breakbarlines, stave)) diff -Nru pmw-4.29/src/shownote.c pmw-4.30/src/shownote.c --- pmw-4.29/src/shownote.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/shownote.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains the code for generating an image of one individual note @@ -668,39 +668,39 @@ { ps_musstring(multireststrings[out_manyrest - 2], fontsize, x, y - 2000); } - + /* Output a |----| long rest sign. If the bar is unusually long or unusually short, draw the long rest symbol; note that ps_line() works in conventional -coordinates relative to the base line of the stave. The variable n_longrestmid +coordinates relative to the base line of the stave. The variable n_longrestmid contains the mid-point of the long rest. */ - + else { - int wide; + int wide; int rs = out_barlinex - n_longrestmid; - + if ((wide = rs > 40*main_stavemagn) || x - out_barx < 6000) { posstr *p; int xl, xr; int vthick = (3*main_stavemagn)/10; - int hthick = 3*main_stavemagn; + int hthick = 3*main_stavemagn; int adjust = 0; - int min = wide? 15000 : 12000; - - /* Calculate an adjustment for anything at the end of the bar, e.g. a clef + int min = wide? 15000 : 12000; + + /* Calculate an adjustment for anything at the end of the bar, e.g. a clef change. */ - + for (p = out_posptr + 1; p->moff <= 0; p++); /* Skip preceding */ for (; p < out_poslast; p++) adjust += p[1].xoff - p->xoff; - /* Place the right hand end with respect to the the barline, nearer for a + /* Place the right hand end with respect to the the barline, nearer for a narrow bar, then place the left hand end symmetrically. */ if (adjust < min) adjust = min + adjust/3; else adjust += 5000; - + xr = out_barlinex - mac_muldiv(adjust, main_stavemagn, 1000); xl = 2*n_longrestmid - xr; @@ -708,11 +708,11 @@ ps_line(xl, 4*main_stavemagn, xl, 12*main_stavemagn, vthick, 0); ps_line(xr, 4*main_stavemagn, xr, 12*main_stavemagn, vthick, 0); } - + /* Use the long rest character */ - + else ps_muschar(x, y, mc_longrest, fontsize); - } + } } @@ -1007,7 +1007,12 @@ int i; int yextra = 0; int upflag = acc_upflag; - int f = n_acflags << 3; /* first bit to top position */ + + /* Sanitizing compilers may complain about shifting negative numbers and/or + shifting top bits off words, so be pedantic here. Start by getting the first + relevant bit to the top position. */ + + unsigned int f = (unsigned int)(n_acflags & 0x1fffffff) << 3; /* The order is: > v V ' down up. We assume that only one of the first four will exist, possibly with one of the last two. */ @@ -1043,7 +1048,7 @@ /* Print the accent if its bit is set. */ - if (f < 0) + if ((f & 0x80000000) != 0) { int d = dyn_list[i]; /* standard accent number */ int y; @@ -1071,7 +1076,7 @@ out_dynmovex[d] = out_dynmovey[d] = out_dynmovef[d] = 0; } - f = f << 1; + f = (f & 0x7fffffff) << 1; } } @@ -1129,6 +1134,7 @@ case or_trnat: *p++ = '('; + /* Fall through */ case or_tr: TR: @@ -1220,9 +1226,11 @@ case or_trem3: *p++ = 146; + /* Fall through */ case or_trem2: *p++ = 146; + /* Fall through */ case or_trem1: *p++ = 146; diff -Nru pmw-4.29/src/store.c pmw-4.30/src/store.c --- pmw-4.29/src/store.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/store.c 2018-06-15 15:50:03.000000000 +0000 @@ -14,10 +14,14 @@ /* If this is defined, every staff item is in a separate block, testing the code for jumping between blocks. */ -/* #define DEBUGJUMP 1 */ +// #define DEBUGJUMP 1 + +/* If this is defined, memory sanity checks are done. */ + +// #define sanity /* Store is taken from the system in blocks whose minimum size is parameterized -here. Then it is carved up into smaller blocks, as needed. It may be that +here. Then it is carved up into smaller blocks, as needed. It may be that Unix-like systems could do this efficiently enough with malloc/free these days, but this approach dates back to times when that was a performance hit. */ @@ -28,14 +32,14 @@ #define store_item_unit 8*1000 /* Free queue entries contain a pointer to the next entry and their length, in -a storestr at the start. Allocated blocks also have a storestr at their start, -but only the length field is set. We used just to have an int at the start, but -this doesn't work on 64-bit systems, because we need to return correctly -aligned blocks. */ +a storestr at the start. Allocated blocks also have a storestr at their start, +but only the length field is set. We used just to have an int at the start, but +this doesn't work on 64-bit systems, because we need to return correctly +aligned blocks. */ typedef struct storestr { struct storestr *next; - unsigned int length; + unsigned int length; } storestr; @@ -48,17 +52,17 @@ static FILE *tracefile = NULL; #endif -/* An anchoring free queue block - the queue is searched from the next block on +/* An anchoring free queue block - the queue is searched from the next block on the chain. */ static storestr store_freequeue = { NULL, sizeof(storestr) }; -/* An anchoring item buffer, just large enough to hold a b_Jump, which will be +/* An anchoring item buffer, just large enough to hold a b_Jump, which will be inserted when the first real item is required. */ static b_Jumpstr store_bstrbase; -static bstr *store_itemptr = (bstr *)(&store_bstrbase); /* Next item */ -static int store_itemspace = ROUND(sizeof(b_Jumpstr)); /* Space left */ +static bstr *store_itemptr = (bstr *)(&store_bstrbase); /* Next item */ +static int store_itemspace = ROUND(sizeof(b_Jumpstr)); /* Space left */ @@ -66,19 +70,19 @@ * Trace logging * *************************************************/ -/* This function is used for debugging memory handling by tracing gets and +/* This function is used for debugging memory handling by tracing gets and frees etc. Arguments: s a string to print a an address to print - b a number to print - + b a number to print + Returns: nothing -*/ +*/ #ifdef trace -static void +static void do_trace(char *s, void *a, int b) { if (tracefile == NULL) tracefile = fopen("storetrace", "w"); @@ -91,7 +95,7 @@ * Free queue sanity check * *************************************************/ -/* This function is used for debugging memory handling by checking the sanity +/* This function is used for debugging memory handling by checking the sanity of the free queue. The check is just that the chaining is valid. Arguments: none @@ -99,7 +103,7 @@ */ #ifdef sanity -static +static void store_freequeuecheck(void) { storestr *p = store_freequeue.next; @@ -112,8 +116,8 @@ * Get block * *************************************************/ -/* This function gets a new block of memory, searching the free queue first for -something that is big enough. If not, it gets a new large block, and starts to +/* This function gets a new block of memory, searching the free queue first for +something that is big enough. If not, it gets a new large block, and starts to carve it up. If it can't get any more store, it returns NULL. Argument: the size required, in bytes @@ -128,7 +132,7 @@ storestr *previous = &store_freequeue; storestr *p = store_freequeue.next; -/* Add space for one storestr to hold the length (and a pointer when the block +/* Add space for one storestr to hold the length (and a pointer when the block is freed), then round up to a multiple of storestrs. */ bytesize = (bytesize + 2*sizeof(storestr) - 1) & (-(int)sizeof(storestr)); @@ -166,6 +170,7 @@ #ifdef trace do_trace("get ", p, bytesize); #endif + return (void *)(p + 1); /* leave leading stavestr "hidden" */ } else @@ -178,7 +183,7 @@ /* No block long enough has been found. Get a new big block and recurse. */ main_storetotal -= bytesize; /* correction */ -newlength = (bytesize > store_allocation_unit)? +newlength = (bytesize > store_allocation_unit)? bytesize : store_allocation_unit; newblock = malloc(newlength); @@ -199,7 +204,7 @@ * Get store, failing if none available * *************************************************/ -/* This function gives a hard error if no store is available. In these days of +/* This function gives a hard error if no store is available. In these days of gigabyte memories, failure is a remote possibility. Argument: size of block required @@ -259,9 +264,9 @@ * Yield address of next staff item * *************************************************/ -/* This is used to initialize the bar index and on other occasions when we want -to know what the next item address will be without actually setting the item -up. There always is a next item available. +/* This is used to initialize the bar index and on other occasions when we want +to know what the next item address will be without actually setting the item +up. There always is a next item available. Arguments: none Returns: pointer to the next item @@ -286,7 +291,7 @@ Returns: pointer to the next item, with type initialized */ -void +void *store_getitem(int type) { void *yield; @@ -321,14 +326,14 @@ *************************************************/ /* The length is in the storestr precedes the address that the client was -given. The freed block is put onto the free chain, possibly amalgamated with a +given. The freed block is put onto the free chain, possibly amalgamated with a block that is already there. Argument: the client (usable) address Returns: nothing */ -void +void store_free(void *address) { storestr *previous = &store_freequeue; diff -Nru pmw-4.29/src/string.c pmw-4.30/src/string.c --- pmw-4.29/src/string.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/string.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMS Music Typesetter - 2nd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains code for reading and processing strings. */ @@ -1137,8 +1137,8 @@ next_ch(); if (read_expect_integer(&size, FALSE, FALSE)) { - if (--size < 0 || size >= MaxTextFont) - { error_moan(39, MaxTextFont); size = 0; } + if (--size < 0 || size >= MaxFontSizes) + { error_moan(39, MaxFontSizes); size = 0; } } break; @@ -1219,8 +1219,8 @@ next_ch(); if (read_expect_integer(sizeptr, FALSE, FALSE)) { - if ((*sizeptr -= 1) < 0 || *sizeptr >= MaxTextFont) - { error_moan(39, MaxTextFont); *sizeptr = 0; } + if ((*sizeptr -= 1) < 0 || *sizeptr >= MaxFontSizes) + { error_moan(39, MaxFontSizes); *sizeptr = 0; } } break; diff -Nru pmw-4.29/src/tables.c pmw-4.30/src/tables.c --- pmw-4.29/src/tables.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/tables.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,10 +2,10 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 1991 - 2016 */ +/* Copyright (c) Philip Hazel, 1991 - 2018 */ /* Written by Philip Hazel, starting November 1991 */ -/* This file last modified: June 2016 */ +/* This file last modified: May 2018 */ /* This file contains all the major tables used by the program; a few that are @@ -440,7 +440,7 @@ /* Stemswap level defaults to the third line. This table must be kept in -stem with stave_bitvec_size. */ +stem with STAVE_BITVEC_SIZE. */ static int init_stemswaplevel[] = { P_3L, P_3L, P_3L, P_3L, P_3L, P_3L, P_3L, P_3L, @@ -483,7 +483,7 @@ 10000, /* vertacc */ /* It doesn't seem possible in ANSI C to parameterize this initialization - using MaxTextFont, so we must keep this in step with its value. */ + using MaxFontSizes, so we must keep this in step with its value. */ { 10000, /* user font size 1 */ 10000, /* user font size 2 */ @@ -497,14 +497,13 @@ 10000, /* user font size 10 */ 10000, /* user font size 11 */ 10000, /* user font size 12 */ + 11800, /* tsfont */ + 10000, /* ulay */ + 10000, /* olay */ + 10000, /* fbass */ + 10000 /* init */ }, - 11800, /* tsfont */ - 10000, /* ulay */ - 10000, /* olay */ - 10000, /* fbass */ - 10000, /* init */ - /* Matrix pointers */ NULL, /* music */ @@ -522,7 +521,7 @@ NULL, /* vertacc */ /* It doesn't seem possible in ANSI C to parameterize this initialization - using MaxTextFont, so we must keep this in step with its value. */ + using MaxFontSizes, so we must keep this in step with its value. */ { NULL, /* user font size 1 */ NULL, /* user font size 2 */ @@ -536,17 +535,16 @@ NULL, /* user font size 10 */ NULL, /* user font size 11 */ NULL, /* user font size 12 */ - }, - - NULL, /* tsfont */ - NULL, /* ulay */ - NULL, /* olay */ - NULL, /* fbass */ - NULL, /* init */ + NULL, /* tsfont */ + NULL, /* ulay */ + NULL, /* olay */ + NULL, /* fbass */ + NULL /* init */ + } }; -/* Default relative stave sizes, must keep in step with stave_bitvec_size */ +/* Default relative stave sizes, must keep in step with STAVE_BITVEC_SIZE */ int init_stavesizes[] = { @@ -559,7 +557,7 @@ 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }; -/* Default relative stave volumes; must keep in step with stave_bitvec_size */ +/* Default relative stave volumes; must keep in step with STAVE_BITVEC_SIZE */ uschar init_play_volume[] = { 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -567,7 +565,7 @@ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }; -/* Default midi channels; must keep in step with stave_bitvec_size */ +/* Default midi channels; must keep in step with STAVE_BITVEC_SIZE */ uschar init_midi_channel[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -575,7 +573,7 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; -/* Default midi forced pitch; must keep in step with stave_bitvec_size. +/* Default midi forced pitch; must keep in step with STAVE_BITVEC_SIZE. Zero means use pitch of note (i.e. don't force). */ uschar init_midi_note[] = @@ -697,6 +695,7 @@ 310, /* maxbeamslope1 */ 330, /* maxbeamslope2 */ movt_default, /* movt_opt */ + 0, /* movement number */ 11000, /* overlaydepth */ 120, /* play_tempo */ text_box, /* rehearsalstyle */ @@ -718,7 +717,7 @@ { 0, 0 }, /* breakbarlines */ /*** must be kept in ***/ { -1, -1 }, /* staves */ /*** step with ***/ - { 0, 0 }, /* suspend */ /*** stave_bitvec_size ***/ + { 0, 0 }, /* suspend */ /*** STAVE_BITVEC_SIZE ***/ { 13, 15, 15, 15, 15, 15, 16, 16, 16, 15, 0, 13, 13, 13, 16, 16 }, /* clefwidths */ { 0, 0, 0, 0, 0, 0, 2000, 4000 }, /* tailadjusts */ @@ -742,7 +741,7 @@ FALSE, /* unfinished */ { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* playtranspose; must keep in */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* step with stave_bitvec_size */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* step with STAVE_BITVEC_SIZE */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }; diff -Nru pmw-4.29/src/version.c pmw-4.30/src/version.c --- pmw-4.29/src/version.c 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/src/version.c 2018-06-15 15:50:03.000000000 +0000 @@ -2,7 +2,7 @@ * The PMW Music Typesetter - 3rd incarnation * *************************************************/ -/* Copyright (c) Philip Hazel, 2016 */ +/* Copyright (c) Philip Hazel, 2018 */ /* This file contains one function, which sets up the current version string, the version in binary for comparison, and the copyright string. The version @@ -11,8 +11,8 @@ #include "pmwhdr.h" -#define version 4290 /* In fixed-point format */ -#define COPYRIGHT US"Copyright (c) Philip Hazel 2016" +#define version 4300 /* In fixed-point format */ +#define COPYRIGHT US"Copyright (c) Philip Hazel 2018" void version_init(void) { diff -Nru pmw-4.29/testdist/outfiles/Test01.ps pmw-4.30/testdist/outfiles/Test01.ps --- pmw-4.29/testdist/outfiles/Test01.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test01.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:05 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:12:46 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test02.ps pmw-4.30/testdist/outfiles/Test02.ps --- pmw-4.29/testdist/outfiles/Test02.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test02.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:05 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:14:07 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test03.ps pmw-4.30/testdist/outfiles/Test03.ps --- pmw-4.29/testdist/outfiles/Test03.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test03.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:05 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:14:39 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test04.ps pmw-4.30/testdist/outfiles/Test04.ps --- pmw-4.29/testdist/outfiles/Test04.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test04.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:05 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:15:00 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test05.ps pmw-4.30/testdist/outfiles/Test05.ps --- pmw-4.29/testdist/outfiles/Test05.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test05.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:05 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:15:17 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test06.ps pmw-4.30/testdist/outfiles/Test06.ps --- pmw-4.29/testdist/outfiles/Test06.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test06.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:06 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:15:30 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test07.ps pmw-4.30/testdist/outfiles/Test07.ps --- pmw-4.29/testdist/outfiles/Test07.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test07.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:06 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:15:46 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff -Nru pmw-4.29/testdist/outfiles/Test08.ps pmw-4.30/testdist/outfiles/Test08.ps --- pmw-4.29/testdist/outfiles/Test08.ps 2016-06-26 10:42:47.000000000 +0000 +++ pmw-4.30/testdist/outfiles/Test08.ps 2018-06-15 15:50:03.000000000 +0000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Philip's Music Writer 4.27 (Built 25-Oct-2013) -%%CreationDate: Tue Dec 3 17:23:06 2013 +%%Creator: Philip's Music Writer 4.30 (Built 30-May-2018) +%%CreationDate: Fri Jun 15 12:16:18 2018 %%Pages: (atend) %%DocumentNeededResources: font Times-Roman Times-Italic %%+ font Times-Bold Times-BoldItalic Symbol @@ -228,8 +228,8 @@ 11 dict begin /FontInfo 8 dict dup begin -/version (58.01) readonly def -/Notice (Copyright (c) November 2010 Philip Hazel) readonly def +/version (59.01) readonly def +/Notice (Copyright (c) June 2018 Philip Hazel) readonly def /FullName (PMW-Music) readonly def /FamilyName (PMW-Music) readonly def /Weight (Medium) readonly def @@ -261,8 +261,9 @@ /ped/uvtilde/dvtilde/nail/angle5/angle6/stave21/stave31/stave41/stave61 /hclef/oldbassclef/oldaltoclef/bratop/brabot/direct/five/major/dimsh /hdimsh/gcross/ledger2/srm1/srm2/u12/d12/halfsharp1/halfsharp2 -/halfflat1/halfflat2/icomma/accent7/accent8]putinterval -196 1 246 {Encoding exch /.notdef put}for +/halfflat1/halfflat2/icomma/accent7/accent8/rturn/irturn/thcirc/bhcirc] +putinterval +200 1 246 {Encoding exch /.notdef put}for Encoding 247 [/stave210/stave310/stave410/stave610 /.notdef/.notdef/.notdef/.notdef/.notdef]putinterval currentdict end @@ -388,451 +389,468 @@ 466f725090359c69e0fc91072df81fadd46069bbcefcaa77cfb7fa3e96034026 35a8296bf9c1d0a7fbab44a815ab741f36aefa60b2825671b0ab55db353d186e 90ed303b9caa7d0f52f9b74273042c3297e64b7264f38c0b849b1099a2b1ead1 -89c6b6ee20b3f32aee24ba734e809ae500f6d48a50e6eadbfe61e660028476d1 -254dd0467c140e698527a278c910e03f4341f0dece94a430db441f8a4fa73954 -edc0534e2bfbae3205749cf27945909d28da83e440a5558aaa8eca7a9a4c8243 -f0a60c5211ec2197fac453f01520ead1b20621962324543c2729d977cda3eac4 -0ff0c0fa1096315ba2eee3d71cdf2c5bb1d9a4d4ed2147dfbd673f79cc1dc21b -a77ac1096bd93b15f31467919e432c204640a81694abe315fcee9a3e9ef27f86 -57c1d4aae410a23e44d0ce9fab50f953c81e33f6ec39837b20cf8fd0cc76a029 -8f12e76a4c78b40798819f7919a0d24a42cef3074b8de0cb5e418201d41f431c -68e92c1827a4c9cfc968063e76038a494bdd4fb5e957d57aab2fa31bf1830b1e -d3bb12f34f3fb17bfd73a349d706138da54671b43450f22f40cd7cbf50476a5b -2c73dccace0b74fa671007e4e95bbd79173c5d37047e511d49a110f81ff7ca8b -5fe0ed67a5efa1a87670db0ea31a11ee76b4af2dda3a6367df3c2b4e7cd868c1 -604d872998326c710c206b78d6b9ebeaa14ff4841d18163a1b0738b3c9c2a952 -3ec59bca6623329181bbed1662963564b1a7b48e08b120c0b1e2e28e9f076196 -0f7a72f4118dfe57672c96ab72589dcdb652ff0580bed4a9c42ca35fcb1e6595 -bf4fb078cb8531d2b589b0258fb14aaa9752283e94da2822810fa00220ecc76b -fa0bf30ab93c612d2f6fa13c02443dd179c5ccfc0312d70d4509c558631a1b83 -00301b494062dd506e84bef5d3e734f6af4b506f9b6ef43641f25a699cb7f70b -646e8b334fa8305bbe6e2f9596579f7db9e28c6e3cbac6a244984cb1dbcf751c -748afeea4610cd4c1cbfac10c9852a32b6f912bbe967a68c9678a83b03d3a589 -55e21dfaec2921bafbd868fc6c5dbf9e6ff8d93c8d5a30a5903eaa82757ef344 -ef36e216f96cd68b0f90b54579e11a40cf33c17fae2ddba456e1b85458cbf05d -928fb1ccae12f39e215c4c68b7f22ddd26d0f271e77b0f2cc2d6a9a7f37db7a7 -621c4ec4e126ef4f231a2bd811cba54ac5ea84386cfd985ba17506d0d7c552c2 -aa2b5fefb49cf5b7b1b16bbaa38fb408cef612e7260d088712d60c57af8291e6 -9401fe2d8c879d563e7d988bc522100bd0e905a7dd25189a771076e75998d37e -df26f0dd5e302eec87c087bd54289ab3f3c013b3a64b8bd4a0acdbcb32858e0e -b407557f336b89be676f94fa5e41f2db1938288948b2eee549393213cebdc36d -9e241b237e78fb7226633fc67a127e48e43ddadbfe12aaa41bf7cff47115524b -b853d3bef16514c2723b057e3cb74f0e6f043a25e7ecff0bf7620140f11b57a8 -9e343a4fe17cafd950735383d05ea02d410d26c0ed305a619a461c08155ace2a -c0888f257a301272ca78d533bab54f54d001dc6c205ff6324ebc1942320e3f8c -7c00eddba2962f7d8b8b194ad83e47b13083caf11e64dc89119d7127b9be5538 -6b703d42d1edfd7db2f3fa122f1acde1ea43eedb955593c14dabea0ea66c6328 -f39d3de6562fe906da301dc1ab7a83bf88cab1eb9923c5f1085bcaf02b8fa410 -5c531836956c509ab18cc19bc5c248a2eef7566792982a43ec89d63b31e001fb -b2ccc234e03e4572ce089d02bdf9dc0190af8dbc2c7ccc22196e3bc17c3e37c8 -9a742f07edcadccc8d7597a4ed227f4ee37e843718e15da7208f8d2f2ffa12ee -c007346e4cad0bb1aacf73e0edfcdc725be54ff6103eb3080881b1ef78267290 -abc87920cf63f402a019e5c6e328f78707ac983bf0bc32cf4673d6bb966c9cd7 -3b3c64b76a925b15225054a970acf61f123c44e51dd944426493fdf54646ecec -87e538cd1a130a43e1fd6274ac12ce5663534f65210c1e438118e34112c119aa -0e311185ca3977c6da19e0e73f9ef47ede1bc60f1891dc3302d01d7138da0867 -1bae87b54e594f06e26c0e01b11693e994722daf37dfae35d1c63f7946f31167 -32415ceaa09a865c28ccd57f9d41e19123e2cdab7e3e2bd29dee275f30075bce -458ddb09c2d5fea6e0e2a744009f6abddf5c34fb3caf51ece4665704bbb215e4 -7107a1745424e6ab9071d2008cbe279c0b5ccb8ab61afa38b3d6195f652eb5e1 -7a32a358e8ba8e02888b97e3ba3b695ea0062bb1cdb5ac5fee551e9eda4f070c -3dcf504cad12914caa34b39a494f539f1bf2ef77223c233a57f11cccea4f79ef -f782c9c42efab4dbb360ca7518709ff4691fd9b9451e24fee60b2053167b96d4 -f47fdce601a10d0dba330116a5dd0adfa44f7ec578c5ccdefda203bc220e5ec8 -128e67fe500412d234fa0caeaf0a927d5cfd89d46bf3362e2ea172e09fd4d126 -51ae59dfb15484b29ef2d5abd39e387202cc9348d00ee7a6dafa810bb68ad460 -0c2e61a128d692502c2080311a7c99e30671d200ca812755a79ddc1e281a0c11 -359ffc8341a508486c7677cce56b24bd2cac1b9457d2aa9b701cf9d7a74f8d6b -a285e3b342e5232977abce1e51a95b0b148ba89fa492fc93e67f91042242ef87 -f0a83ca51a752255a9eee173e2b2e69b4d88394a8f5584f9265597cc42fec4c1 -cc727c7ade1b3407db4e0ebd6cf4848504df6cdecb476ce74aa817dca0e51c0d -a3f14a1bcce37adff3bd7d08b44876e1b08789b630a3d070b53f3a8fe7ef8bef -539522d521b1319455c3999ab3f6fdcf92f28a36152a6574f62ba51ef90e1f3b -c89ec530004dfcdd7a7b1c8038957ae361d921dc976b899b46f67eb824732282 -e0207eb3f113c267b2154ed423f9084b56cfa1dd26508c3295d844e1549b63f2 -26bb27f7ecb4ca36fe55ad817d952767b49d78f4576448eff1679851a415f918 -0cf5ae1157b06c47e44c70774d6ffba7d8f86ba0160d55e21db737e10b2a91c7 -05286b7c7dd9cc027ee23f3b3b46c3271a274868311d56931361dcd37542d1ac -67dc26954a733f9662dc9308f9639b944894f6f19848fbc3f44cb8bf3d5f6b39 -fc78127ddaa6243cac012fe0cd52efbbed8b4bf857b3a1bb2b7e7e44bc8b0faa -d715b0c6fbf4a4a9071cf299e0cacb88593fd61e5a0dc9fe7ed040e17dae132d -eb17ff933db6927e892b3919cc14ca1908f557607b1dfbf48dc3d6aaa862d8c6 -5dc9b2f3cc127e70d10c3a04ee17d357c93527eeffcf18792383b73459d50bcf -ced1527e0520a397f7ec692a12f0693150885fcee5087b5d94b2ed81ebe967e1 -fc32853cb465bb8b66453574c4ba998c91641e35a2fe6e521883fe344b27cb10 -7031369baca8bdc5f4b9a2f44180c0ac498f171a416c8fdae8ba089819eb0256 -17094a93681a3b3d100ec7f45839e9d42a09d0d75b8a05f6da5458eb6151be55 -3fa2413df3364cb39a368d22643cc13b695eda2ba739e77125516dcb203d4764 -e21c4075a931da7518471e4251a9782ee15bd2a5e94398e09a07fd265edf618f -71d439f8129c6b7402a05ff14547308fd9dc5e7c96f620a2682b50a7859eec5b -da71f4c6e12059e8dd3916bfdfd0e151fa4b5aaa90435d1d42ab092c9c421657 -d5bb283717759416257016e9314f54455ec9448f77df7e53c24fe8d96ec1c68c -a7fd651af1e71686d2347af1ec6f9b790c185fd352ac03047f6c920bbb872fcb -fbdb7566c75ab06d93278df61d8070a9951766b46720da236d8d4e7b4893aba8 -ed4ac9406fe383631457095ca9993db527e7a37c9419b7abedfb7d41a460b9c4 -9fb39efcf3631da0dbd315788ad98295fbb62e11655c0cc1ab2fb0e54e01ba9f -b16cc2c1f82e48b3bfef4b4d339d7f0df8e001dc2a5911b4b92fb7eb428873eb -8a5acce25fd9f47faff3e0733d38b86a244ea1952ce528b8abf9493b1b307bc4 -7a4fa41bbce361d2a6bf9a6820a231a58e89a9d214fadd6aadcbedaa150a4f27 -9efe67012114205991c643e6ea1411203926bc0804572e0b727913402a466f8b -f111844675dd5109212e5447f682e2959232ad21a218ff49479714aadb0618d3 -fb488ebb29b2939059d1f794c277515eb400e5c626a811ce2a7a247e9e904b64 -5609b594431433470ddcec6974f0f3d77651793ad7ce23ee72111474cfe2ca02 -51c4d90c0b02ac9d7670c3795df594074759f38fc2ebe6a2a797d54628a50676 -6f1e2263844d597fd845687a44f72a539a8661a9a9064c78071c040d1f0a45fd -e2cccd2268919227e8e2c05befee614a9535a6adb324624425290d7032f6dfce -19342467ccf344114425ca8f9ed74899dcbd8d373879ca8f83d953021259f998 -338d2e7a5cb54321f8057d70d5a02fa8aef3aea24854a9a21e45428a97397cc3 -58aec6ec45fa9199579406c2e842549e1639d80b2a6b2502f28c8f4f94fba297 -938a3c986ed1dba4c3b384bc43d7bb6becb71195475398313bf8774355562800 -bf86d8f75101683880ae686ac36b757ce0e4adee09ef68f8fb5e891e956ee62e -346adb50098c5b7ded6374bff775ef4fd58a5910d980a635576e20e7b11797a1 -7c44b0d347ec9b56cfca607866ea109d54fc992b1376eebd4d201a876e8564b9 -f8ebd34de83bfc90c10d8ea85b556cb5fb74c447bde7329334b29c788cae8f02 -de02daabf74f0bcdcf64064c91f366db4bb68794c9c41765bfaadfb514f487dd -096b2ad1f1404a836a809a20dc813a277c749ad0c4c45e6374630a4999ec512b -fe9f990a74a05ff7e6c2b1ade33fd14670c6ef97ad99ccbb996b12d0172a88e1 -b923f85a17213d52ae7e3886c50e125d38b8f97692cb2a5b3e03f21188f763e9 -7eec87182ae517e42d9590f73c2594a7e5f61b9a5bf15a7eed29a754f729d532 -dfa74519696cf75ae98a471ec88b3ed550730f50f519ac629691a47e19343c05 -1b6d466acb89f50db25a9beae2b0eb79a96d2c0189febc516e68f70aa6bc09f9 -129b0fd837e87d16fbe4a7a4456663cc7346218be042b965dedc22b7cb5f811e -a445a5651759ac076b49d476e5f89c218bda4ec9582c95149b5f2d8a49c80ead -3ce0df6ea52db964cdc0ef2164bd21f818ef287cb3337b4d8a6aa34a336be17c -d808a00949f82017f831b771473ef12a2661ab1fc21c3e344899d6a73ef7ff83 -694abb48072daa7841dbb31498a9cc29b07bb0dcf709cae5014c2cc9073a1e5b -a29d67f72a030496798f04171ed6a45105fbb58ca261d3ab9dcb57fc28b50cae -57c4203ae09a58bbca20a4613bcdff264adbbac8ad7ea0c2fabe4f07aa453618 -e1591258a2a18e0fd974135fb890beba5bb115a8dd6491ad3299e27506ecdb8a -e9c074ad5f1a553bb14f1aa35b9cabcd645ee452166f331319a5a953a922cc14 -5f683e88ccdfc3d64d61b317df7e6022e9d50b28aba224d6a03a34a9d8242f39 -e34cd7b5e46f37291f5d75bdc1bb586ac86778c1a496f321808cc0da6fb3a6e1 -d4cd8c8e37c1e2c1d98384ea5a1654caf3b360d4fc77c3c3faf94466de5208b3 -2935fde906ebf2d98ccba2cdabcd8197947f5e801ca0981a82b091a51c8ae0ba -de5b69f3c9c0026fdd590e1e2cd526e7f7096570a53bbf917ee0a2a519ea4f15 -f24cb5a8dd227ef2d8459ed65c31f5c19c9270028ad027c131e73c3c6f70b9d2 -f2288bf3b41affb66db183903f464999bc5cf41602a50db4cd4f06ef1105214c -cb7eadc45b06dc96636884a3d6d7a8374c57daaaecd35f52aa4db430e1c63995 -bbe2b7bca8360dd4ad7dfbb0aeac6ba567251655c0e587d9dbf612b92bfc10ce -db038669f091a3fb55034808c478ea0e0896037a1c5b442b8eb5923bda950ff5 -72d305439fa14d73563da1105b1cb0dd7feb729e7d02368071dc03f11d647e25 -46e5e870a784152f3317900f59f6f8f0d5a585ea6c1a0d5315625c0916906302 -df05d68b2514a493918d94d99cb53f6deba91893597a866fa8383288acc52dcd -c28693cb63d003a4a3248005b70e35cc45292fbdec55ae303f37ed3cecb8d0bd -cccd224b63a6328ebb6f1192e962b4d9c160f30b753a3f974767aa5f8d5e9f11 -5f6a834747814afd7f7e7d4e90d46ede92f8a810311bc28bcc0027e674efdcbe -3e40e2378ba1b9d7354e8be4e313322c2aba1e03d2f810cc09b78197e8214d46 -6f5531094a7b8cecee5aeb2c693d4b382edf7d9d715d4cd12ce39d510885240b -dbf096994f947ebf264ca3848ae72b3a2acf8cf2904a4b5b2fd5a3f590f4a475 -25b967f5bcb647a537b6a4bb99be6ba00c9e96a51b2345fc48a8ac1f7cf4c9eb -329915effc052bc6fae5e25b08151e54129c8f5ff8896d0d4ed79b43ed124865 -f79622a6cfd362e64e8e88e417a7b8204f133cfcaa7ac70df4b072bd808c6971 -a0f2cc29008d5afa6648411b5deba3aac749fba957b0be5dc72696d1ccd3bd95 -b2ada03d95bd1c2e7a10beffe96b9154cf9b1ea22c5ad3ed8d79af6df9c5fc46 -7aae44e7f8558889afee261b8bb6c43785152943785407b575aa9de5f6c921f9 -fa660b14626f5e1034cca473a6a7c16e597492013f9531c67a35fee2e56a2ab1 -e4b9e834fab1fe22a52d785dc1995badcc84f2d32e0f9d029eb0ff5eb2e69843 -fa738bf19d33087e9c0618371f5098b1e2e309d45485b4d6b37e557baab7152e -feebd0b2c10c1a45494853962e0345b6b72967c886c311e47a1e5896260757c3 -29d82d254d57e38e0e89ca1d9c746ad36e246978f307be1329914e7862a0f8cc -b14f06cff9c03fd6cab3bb4cdedab7f0e1711b3d31b022af53cd82585ae82145 -dcd76f76fa2bb84da98a2a3e46fca1d9e7ea0a91866201e08712220cf0d6d5f5 -91a3283ee986ec9e7f25efa757a93322d0eaf07e9cdfa316ca5f96169ce85895 -407ad045ce86d9f35b49cfd6bf116d22d70aad5777dd46aca0ac938cdb0859a0 -96a63b955eb4c8d8666179b1e6d95fb193889028666c17ff613ad70c8e9c84a8 -c66cafa7496fefc65a69b94b9ba5e1d5b944b8ffaa613fd3d04cc26796c0a5ba -2d6d6bb91772ca88f254a48ed8acfda7532d98f9d5b7d88cc0b0e57e5d02d327 -4be18983b93de871c80dd536b7cbc274729c142a869ca7d6247c769ce44fb92a -90b197da1818303000994e0a6cce0fd6a524b0d5d33802ff7bc6099ca05a77e1 -5f5b1a7a379baf044715bb6cc9943e5be7feda7733687e9e7f960594d1cd925d -dcc26c02a8f37102c39272fa0dc6fc3f5fb20f81d61131e7dc39e862aac67cb4 -bb9db02cea461eb5bc66b3d0b6bd78afd0f9536f5f907d53139b574fd40818fa -f3c85343b5b8e77b8d164bafa35075acf022679a99145c46339f12a31bccc31b -c17731415fd5a998d2a8e33c4fe39c1fe4d711dbe2b0ffc47a171a1ae9016c20 -98f041ce3a0240bed3fd2e2e174a19bf5c396965897b3b64019e4e22130be4fb -6b8f3589719040c2b123716934d430aaec0bf30c04ce6e1980552947d3233966 -1f72ec517f6318586521e5d4c45a58bc53530fa66efd6f7ef3d94fcc35afc26a -b4dab34757b5933c85717090211219dafdbcbea0d8dbfd99fc05288feaaf19bb -e8c905b49e7aebdc42529c6ec1f7c3ed523b399f2a71e61448b8829873afb8d9 -d3cdeeafcf60fdeb9c878f6386fb58f180bacf6e99374e89e2704d3e69262b16 -07547873c342d897940b8496d1f38e9088ce93dbda7e866ccc8c068fc7210223 -1b27bad26cb4eb65dead908f9542a0b68b7a5d0b4ed989a8fc74f5e4d5a1fe2d -e408abdae204cc186e0a2b67749500b3f8c51260ea094affc634a4953447c3cf -fd2fbc2698bb86143bce8b232722518ec936358c7fbf69effbebdf6c3610ecc5 -957fc30ab08d2e2f12ac47ddc6322a710b76f900c3dda591f048886f80165704 -1f712a84065107083c0f79ea7fe4f92faae9c9c04cea4384478390f1affd066d -18ec102b5154b78ee8d468a4162c0b3a10bd19e1312e9d8564d5aa5da77f7e56 -1b6852c00138225f9101fb1407fdb9ea605c8e0862d81aac19b869af18630b27 -38d8bb635ba12ec2461ad673a27aee5bdb592d8bf08da6c14815ea3e59466eae -b887ce5b0ec2f54dbdbd30424f317f45c6ae5d1cd6f44316c122ffd7c178fdbb -8a068cabba00c126bcad2f17a454d0810a0533629ff6b1069d5cccd5f5e52d1b -07869a59eaef3456267bf050eeda457c1029fee50b395fbea1dc6d7d7cd18d76 -76ed7a78cdda4f105166f61ac728ad25beb547d071e0e515840dc9559551bfdb -454b080cc49e268fdf556161a92fe7d93219b395625eadcfbcfa8a9ed61bd7e6 -f42d58a138020f2a69951d2f67641c39e98bb2a4441b0ebccaeab4e731e734f4 -136e6b193011bb221ee9d099ba6a23a5f1340a1234a50a4cbbd172cce6cd2b60 -15e10de447c4df7db80ab79c4840dff6c7eb06cd931aa58c001c02229220086e -c1f2c3544af0a581afb28103ff5ccb7488ba861edccab702611dcf1628f77669 -3bb25210bbcafa72dd0a5955a85419c425b9b176ee110f88e341751a56a2dc61 -209df3ba68eed540b6df151f60ca61a8a4f93456aa864e179ddab8844290677b -669ccf3a67a2025b5cf5b4d7d2dc7e1e665bb55e72b8d02ef4735d6c68764ed6 -93322f99d69636df06023648c22f86953046bcc662d6079ae2c7314bfff5f5d9 -bbfe514c8beb08eb4a469c2b8e496671de9227b64ec3a26db6202935f7b92a6d -a03d7c9d53126432b6337cccd64c650e0d4d6e3032ada066c9b2b891f5b74900 -a9c3b0481aacf53671ed0d841106f05792d76db3626655f8677323d0b5d817d0 -e7f0a221493ca7ffa8ad261e9663ea965a3bc82ef4d9031103337a868f80ab46 -4f4a0df2f735b25807c9f3268a7e0711ffe63eddad14787806e67ec144ef1d17 -083343ebd10a7e9aff9e6c1e349c7926ed0f3d878fa8b13f2904cf4efad6ca39 -1bcf1f1f4083e5cee93da0746c5cf983004657c5c8fe4eece7dc424f72866db6 -86212292fd27831b68e36bb169ed0df0d23eed7c87fa905de280da096e57e140 -69e00680deaf32aa3986d48eea8811c87d7082371d3d48049611253d1d0c5e17 -c80a7df4469c54882ab077cc8f0defd8b88232205c3406db6bbb157580bff648 -e16b07a670f7fde9388e018153644252dca0a7fb24b50991c2e699c90d827fd9 -b5ddf4cb8f2048f8d4476b649727d7654fd450ea19a29e4bd087a073404d6406 -58c8f54ff20565298cdbe2a6cce4a24e2861a92b14212a05e854d04aa4bfe13e -a5fb10d7736a8f03e6e306d669bc6f6cbb29b34958a8f4208e4b394959fe8668 -e540699edffc8aad936f803b2abcf963889c85bc44acf6c9cc2ce2a12716f7a6 -37c07d2d6879ce05971c3842d69bd02a41e3da3aa881eff4a38f9997494e922d -550f63938ceae8afd845a348c43f45f3f7173ddff3f885611d402f2477ee706d -8e530fcd2b6ea54093e445adca8c022ee291329e37228c5757270e9f21a5b2bb -deb0a0f2d25224b0fb67a610cfce5a7fe61dc6ff049f489f1e15699a229d1555 -fa976700d9fa69fb212aaa6d8a7d5604ded821ae4c63f87af0b4272ae421a29d -8801b6025ae855c0b1b978ad52c1a8869d81a2a50f65806fe9627bddede8891d -d8a37af1dfa7cd7293c3938d32e410bf39437bdf149cd0ceee8809e3e8bd9584 -aa3588ba05f51ed661bd48a1e11feafece70752b7b9ccd8b590afd25b0d91843 -189c395e9c3409117be9784048bac366cda47f117b9260318bc8a894045e5bee -3a1e39af73458bd24b269b5ff40b96abaa885d1e895447297375eb8493d7282b -ff7bd2b53ef951d02283d782e1bbb3068d2bfdaf811b6d4dcaf4b2a962783e12 -f9f6b211bd4356914f3e3e7a3dfee75d69123468815e6fc7bf6e037fde16f129 -ff01ab1eaf878bb0a12620a9aaa6907c4c88c18390d11553507d8d58a9ad0e51 -a34ab4ba2e2128ad04deb5cf7d232d245ca20323a5b797b566ff73fc6dfc8bfd -262ca73f501e8d62b807cf9239e32740a2c2c7e6e3b3049508cfa7bfe22e2795 -c469e5aa2c2b944c62b734b983024ee9541b60b9e9dbd27e72625f6cfe218ff9 -417a053298ee1042d72f2749fd4b21d6afbeca64cd21722628dc52e8d9a675aa -b4378ca91ee21bd5e41d78f78208db17434eb55be3eb95f8e69957c0ff3ad892 -bbed02be41e9b29d6dd30b94c0a8a0c3a23f5e1906a2930b434e4520148f17af -eb3a6f22d2bf6ba1f23c3eb89b66e14f20e409671c4b65f80490c8a3c60bae6e -9a2c69f153ae23b4117078eea05b7c40f0b484c8d11ee2b563533b23166b760a -d3e22fca2b5b5667b800ec7037de99a585a7081d565eb61f8e7641f58ac1901e -1030da028db2ff84da46b251061212dd2d90194e5a8f64edd40a2fc547d5ae86 -86bc73ff0a665456746074519505db6b1a96042b1674d89e1b00329deab4d97b -86a8d3edfc29fc47971b2e19dc715fe9a3369addb725a8f4b14094a4bd81b77b -5bb38ccbc7a8e1647767d3d660dcd19bcd09c1e5f9237ec7d37ee1930df5f0f1 -2d0881eebd0cca2fcd994fd445ad2e620a7386c3a10d7dbda53d5893c4fa70a2 -ddf4d0d5af1be8049bd3a57a580e5fb587eb5e3d0aaf73d40ff2134d17ef736a -36335066a493bdad7b4d5540a00cee82bf1b1832eb9c06325f7d2591bb1f6a2c -b4ddfb4df9814dad3c9a59b05d57d8be208810831fb650efd8bc629c4c006e9b -adbf2a6d0bc51cd88c47b6518e9183d9f25c4de7c6842f37cfd0c44518bcca18 -6cd7d8709bfe03d9cac1ed9e19e0119ec41b6028fc2870e465ef7c24118ed54e -d81de4113e04a7c4eca75d5c9f460324a84af18c3950b5d253fc11325a15af12 -0e36f90bee4787a175c6ab7c1a39be8ffe1324a827028101243f60844594737b -7f597005909fcba78840e6297b099163a356c77032055920da96bf7374a5cd38 -f71a74a4cc74c33d1be512f1a1af7aafd876e1d5eb115e945adc76d991b13bfe -165ef522d5e6b85f8da52053f20ba774670ba913e7fa1cce03293a4cbb5a8969 -6572e555aa0a83fca4557954d438000d29bfefb09d87962751c77f15793a83b7 -cdc6e6f0c4d7fad961d4ef287e00d44a1f61ba6fc0786c13ed8a2550a1914ae5 -f1eb15a53984f208e755a9ee908a48b8038d0c219aeadbe303c2cf28c6d7db63 -fd1777db279471c852890d0a018d7660617a94911be483486b2c3be1fae8070d -d929d68c2356d58d84986662ce0e783e27852b4afdbf8c97f1e47672a96aa0ac -f8ee51676e0be143cb4dae6cd40628d0b7012f1ffd638b14f7311f33103fb53b -d91e689cf8b6d4930fb4da13bd6343f97e51613b9e6ca03e2fab85f12b1cd835 -1078b58f1b82be751a2dcaa1907b2b7bec05ddc488d7388e9d1b29543de2ad43 -6b75f758b144fd7b93a4e3876dc06010507f3e7037f3f8f078f24fb5972f7e73 -5922b8942dc840cfa4e3d713026fe17362a47fc060c7282a9f7684d89921e1ac -2963a1cdfd4682857b4285e68483576bf2a05491d74a390dd017a95d0ebbe786 -8250bb41eb0aa7226bde3a4dfb5b27d7f97421029f2bcfd26fc1a0f3c256b9ae -837aa46745d5de4c5c275ae1f625630648840e9fd199a3c4d00262c696bcfbe0 -8c7870e1d46c02a919e381d27455dd4ed5049d33eac72c56810409a6cf74f242 -d35ca15c50cd05b546e643835cccf8b8b7ab291bb362bfc92bae2d06c815d612 -309ecb8d79321f1a633a934d61a4a0c873637fc83695b61135748ec860785f60 -6cd96e593035ccb3103ef1048ea34dec7e52a185915852151dbb086768085f47 -9e89ab18c2cfc112b6673118f12d7665c5adaa6853eb08b0bf6061e0b8a0adcb -86e2f9be796a4586cbba8946c9a797aa830858ac6358c4dc5ec98d6e3653ad65 -8428f17dcd36cceabdd86e4a2ae4792444b7daeb08958ec834d699e4f9e960e8 -5a883744174e66c192f05ab50e2d7978325436b90e06d67fe84a1010b3ad5e36 -3a477bcdd07f49becc828dc7f48fd214fb139b57a237ee1e3668255af55a4135 -ba74aa557ba6287fa08a4805235fbf4373ec0ed49aa31fa3f99f990f2ce9c12b -b54bf5b52f80dc67e494b0958f473f9d0bff8831a33d17dc910b6dd45bf2ff37 -b1eb44f40972d710a0d19f6046afe4484ad2a48412ae185ca10c3ac5cb192edf -b172b5626e7023012a6ea10d9c8d749b0d91c563c2b9c025fd7cb4ccacbc5478 -5bde2cb58d942e2c9fc3e4b22703c1db47f629ab36088cde1105e7a8c624ff7e -01d26899399ff91f4f39b1150dfee69f465f44a9f289c78fd050d7bf66200a93 -326acbef82918a3bc1829452b0c3a5bf15b974cc4c85b9aa0a8e9e437819a8af -5ef3df8c5f451e7dfb18bc2cae853988b550dd963c5f150324f5348bee3a5709 -c15026d9b4a90e50c8b0b8f13a46e63744e95b50f495ae6c30a612643316cb42 -0a737e142d8fd6322a635641bd24afcf438b121b178d004bb29fcde186f9f873 -b8172f44a6f75622d9d64b07b998d220bcde05d9f2839328105bd016cb80730f -a67fcd5598437d21f60b7b184d1ca74e661a3b3d100ec7f45839e96e0fb74c39 -faa05e9905e9074a8825683cd47f9efa112c3891cf8648e418f237c923208fb2 -bc20674bef2cf1de80fc61c3e30669c9b01976598849fe3d9155920ae3c009b7 -a7f9de4589b512b6219900c73731245412952085c619563c723d61c0270b2a94 -9340b5d26323bb7857e6eff428f18a49327242a5e7e4ae7ffa30e9385a02a454 -9edbe201c62fb7a47d1f217947eec329a8cf4ec750190bb8989aa848fc3762ee -db9ec2bd3cb7221bb4fa7654046fe8522e4768b5b01197dc84d4f868bcbdf293 -282da8a907a9ae670b6366bfbd07ef6534127eff7a7f99ef5441f750a7f0fdd7 -16ac827cbcee87ba2c9c3a4e4fd9e0ab389af7a9d524dce404a46d147607dc7c -cff13180b64a7ff61d4fa6b82ed0736a251f5d912d96569c2e454f52190180d8 -614a372969c52351ac3dd829bf24c08f6bb5bdce3dc7cface8a3ac69b2c54a49 -f61fcfaed3b3ad2e266a2099e19a9b6275f8e27769f0b4c13aaf831a0e9dfbb6 -18c83d8a278edea2cd628326ad659f1e1cc456d98916f0c6d1b4856bb1919f4d -ac7adddb448825967ae9a1c158b1f601a7efbec3e76bfd7869be9060622770ea -785279366700c330843b3bed717b82003c5569330da07c8b09ecbab3b013f084 -6a314a8a7bf3f03727e91e3c60bbfb7cb9ddaa30f5de85da4d2dd4911c9c61da -3767f9c533c58748d89f96fc94a25c89d0ef1120d3263568a911f0978a312a7a -faae86dc56ebe5af19b0b25c2df0947caf214ff95816b017481ef9e3ba594bbc -80bf7e3e8aeb52e397022b93ab95957753a094b1e52bff8e3d7f0d04a17cd286 -e274add583659138334576917cd517b0394969603e833ea4de0c5b38c84c0488 -1cd8c904f7b3da660cc12d37945325bf9f06bbace83f1b64fd8f997563ce8efb -82747a72c81691f88c898f11ea2c054aaa6bbf514cfca02b56cc99e5dff1a481 -94fe5039ad6acdbef5843c8e4fbd04bed9d9b6af1420fae38cfd1772b2e3e1cc -f7e4450a01668388fc4ddab08cc24af6bfabddcb99712100c58ccf5e9c9a17c5 -e40d316fadc3bfa62294a091ed266bda81880f3bfeb6f6cb9f8c9ab03c73ed64 -52ad9eeb2d3ac8635cd9d2459b2c2d34f952bd75def9f84a60be2254409d33dd -04ca06b44cbb8c4586ff98376b6aeef2fc171b07786381dd978e4c366345441b -280c8d25c53ed779369e14f6d7066db2c7dbe003500314505e1c3671fc3b0ddd -dee36439ac826862509d543302c387d54cebdcb6a5502376213596596380ba14 -b7880a934ab08a6abf6dd4093dec4128c8082f3d92b5d2d92cc286268f1be343 -312773834d2d1f8433d6ad2a938859502d867dc25f0cd96e98e4bf4de131dfb7 -a510583fba93ae8718a1f89d60e5b5ec026d91d28ab3e9ab81d44f8b010f1138 -83325a09382ac02e6f7fb07fa95f90c75d2d926c8ba15701bb16f608b91478e3 -bbe8762c90ec7d507f9ea95d4c3f46465a2331b859db5d6cd9b590e1130c4681 -297cf28679c41a91175d4a5f4c580a1de13371a453bd5e0d38a0b7c0807f0db0 -2deab94fb7aa3c7f3138042ae532fabdffdf953b8feb36631b29f5ab0bc0438c -5f9ab0ed3eb87ff056c5552083b2cc268689be24162942776f59b7f9e4f5b41f -81e5c947ae042d24df262097bb9218842738845fe30e36afd81ccf6e2c90d34c -5dfbda79c932d4baca44490de00b02ca929433e1f25000ccf537d144ecbf943a -c21727920d9beb432402fb17ebce944da34f6fcd02332c53ddc0c3cc2536cda6 -7f80282b423be2e01a464d062226b47b9cb5b4e45bd5079ccef3a064af2aaba0 -905c5f1a3a9a333bbcae9123c29153710fc66fcb65e318ac005e551729143d67 -da0dd0c698dd7e387844f603cc17451bbb725e2b531a85cac01ec08bf1b9ddef -a0f9483de34ce375c835aa613b2f289d124087071ed8b4a37a0aff1981a10b02 -fcf7281c0d03a84feca7443b91ae6653659df5e26fe1e0d5927daf090bf54fd4 -e730348d1e83f6cdd345b5331906d30858b8944043dd5ac14859db6e68360a18 -c7fd1b027d91a14312fc35a30dd12d6983fa9d9526e0559bfc376385715da2af -4908b2b2ee3388cf1fd9b7bbd5da15434739e2f12f44481527dec6241d7dc090 -79ca05f15d5aaa3507ebb89e0bf0bdd55f45fad40756621200e4b883facc6c00 -c0f6e41068e0a32547afe4dbc0be8e5e57836d47d81f746a931411c615a145f3 -afe966876ea51677709da171d16671ecaeb08c8e5799102210c7c0e4b2083148 -0ba6de1793b208efd7e5b958b04840c57b7042fd3cf0a7912e238315325f665d -458e6158aa22701949facece70812472f30bf5e8fc544ba99a643876cc41ed10 -48daeeb69ab01af53d9018687bee2bb47b6d4acdf1ee04a46b1a488708eb2cf5 -7733261d6453d095af9549b122c6e183b76cba9def22cbce32c49dc615c0988a -428dae015300fac0988ca0c6c710de1cec4bd2686562dd31c73d70bbf2697942 -7bb004e3b5e0039fe7f069073a17144ef3301bdc8b2f64bf80e69378dfe988f4 -bf3fcdb94b79673c06452035bc0b82acb500b8611a958a7882bd4542d895fbf4 -a0e0ed758057bd468c31e7a746a72ff9360340bab2e50ee83f152cfe04d8fceb -cf05f7198e08ea12f9b2b15f79a2c7c20025664b25dc6cd3866641dbb5b638f6 -cf50f20f6ddd40cfe3ec12be71746d38f82e71cb2fecbf616bf275e9911fc886 -c8dda19ae13c8359a162e7a5d643867c138b7a27af42cd13dbeb39675fc9bedb -f9ee5af9bef261dfe00b7a380866f5146460f4326c02591ff735c6c5edb7d2e2 -648a99d75b0c6e56e58e1ab20eb30c26df1cbbb93539de70fd5109089c085dc9 -86a1149ce85dde78d04629e2119c3b1defbd74348ee124188aa072c646eb4369 -61c2af77048a217f8a87d0c1be164877e38905b9c64c4ca7bb245e3f42604d2f -c444db2c200ae6dfcc4c121137174bffe00b8cfce8387ee395c9e2d7796d0b65 -da7a0e628f11141f1464b641f82a6d647a706189d18d5a400229ec79fa6e3c1e -561a53f006ffc78822f0a7e8517a920265e4ef96615ee775c1ab93d839dc4fad -5dcd0adb608f0d3812be8681e0b59f084761d99de6b08c026005ecd0ee54508c -238309ed46163b5fb393891d90d8cd03ba417a04d6784396e7e8d282a3b84431 -df3f324c703a4988c50004c716bdb31e4eadcc915e78a6b1898026d2dceaeaef -a6e82b0ee80fc15221de932095e35adccbcf4ae515b504e4763ad46ca8c568a5 -e2605171ad638caaeb21a80cb5877e2da5f053c3ba0db377121a6798d59ad99d -fab5488cd3b25bdd8b3a26a3805ede14114e72b50c9c8fe2a8c6384aebf27dbd -5df066b1f4476f4b9d457018fbb57c22622b9e4a3cffb970da1a887bcae6123c -b46af62e50ec8ee8fee48fb97f127897313af992c2ceb38b2e7cb704b851a492 -5fddb642aa7d5ff2db9dd54dc1980a33df42045e02a2ef62748384a976fc35d4 -702aadaccbe7cb9752d28c3a9d15fe8389c92c21ddabf3cba6b69e857565df1b -0139de5682df570e15411924a259f42a86a3d4d2d28c28252a66eedc95adedab -a7c61857886af046f66f314880e161176f93395cde18578d7d7596b8c3422841 -5fb26419e6316192efe069e49d948fba20bc602f81030806a0665c9cb9ff1449 -9ddc0b5fec5fe41f09092ff543a6557b399f57b9bb39ca2d86309eae7c9f91a8 -3fe58466c209c521aaa358aefb0b07a8125ab587c4f15fb38e6493fffd24f615 -492759cf86fe0caf7049c448929bba2ee8be67eaa0e0aaa9b5f636917cd01d66 -897982861ee57528c388adc791cdd1a857949ee4906ac4e85962866fa79d529b -7544adbe7fd7d6bec3fd3ce6bf589e6fe7a9f41962769bd41ea21b3a9e258fe5 -a5f8a6ce8ffac7016d5b2cd8b5f46f9d53bcc33658f5b23a851bf6803519da02 -426af58a0790a33efdb65e2d6cd034c264d1e1c18d6c8b0ddb845a4bc0425329 -88b00ebc782cb7c99a9fa21669a752e9e951c24309317da475601ac02d614bb1 -d16d3fccfe3d2f6535b7770dbbc7a7a44055fa5aee59ee1e83ae3af53c138e98 -7a5aba2257e904fb80fe99f6c98394084b3cce03dccfb9279fc1fdbd19472b58 -d8e5bcd8a3a7a3a5db4f5b50dc8e1ab20629f13d610a751b8a3609e782a2d9e7 -e9e703b5726a50229a3a479431c3640efedec0f5a84b217bd0b7d62071520179 -895001bb04a291c250a79f6e4ffb1e121f880872e5557cf73b3d5668b7cfb285 -f51310968de06ccee34bde0e84275f5ab2a72bc3f9a63f48f8955681f615f091 -c95b0e944030a4ab48a511b48015cbe8e01cd6322a500b702a9f85900e1ae8c7 -b98db59f0d6d8d73d546f1409d93689bf313e812bdd928e05b5488d9cb66b738 -3408a5815a170e93fd30f68f82818148a0bf8786d6bfcd09442046fd9748401c -a8d7e4598397eafe105882d035d45d1d6ec61079de963db02500e255c774e8bf -307bf9371f54258aa40237d5bd1581008a9875e30abdf7da39cc41ef4677662e -3f98d02015c91f234a541df1958cdf067918d71d054da3f3d3ef37d193690dfd -9d6a3212a0422c96e7b40e66b7a243a7acfcabe0c5466e7c0d425d228586864b -772d5a2b0912b061ce0d15fb76728df33e5c42b125a9fa7d5fb443d54de43df7 -a47a0106a80b7c2823bf7060a7e3e81e0cb7d7442057e93b6f38593b900b4e52 -1a0113c06ceaa6e5d632c7c5e9492ad0546f85313238d39bab419ab657d04ee0 -166667660ae8631ade889d60972b2908a6ca4c410e8c06451ce1eec3ecfa092a -f30b6046756ab995176ebee3683ba8570d69ca581b52a81a21322e744792df16 -9f035497dee5701193d55350b11978cf074444691b5cc3513a3cb8eff7f067f7 -96edee530ddd825671f5bccbafcc30718a1902b173652e114862815fd0ead797 -88362354737e832fa7dd46fd76f8e7b140d84053ebe209b5e9556b2f723ec229 -3424d02f8da40f6a4c5ee291b658eb17408bbb2bc98689d0826fdb41428ee6ae -39475c480489083bc7b7f606f68086b7b9b205b4e513af8b73da6c2d0f3eb1ff -70d97d205532cc0bd6f6d4f4fc37ae957a48353d45434c7257051b263b82333d -df2d8acd0b7c7bb6b8ad9643bc1fd0b5eb0732776022d6213932021a08f0734a -3b35694705a828587bb9c4196dfc4059a9837e7c46dbe6153def24dba61d3f25 -9bc5d63f030fd860e9801dca7b81d0d4dc3d8c4cbaec3b9a769fcc09d7fac8ed -4c046e0b64bb8db2bafed5c91b39fe0885cd5e6bb5fad3917d664238c4642fef -6c4c554296df92a9563a29430485ac48c2a0f02ad39398126843ba348005aada -3cbc9211dfeb94a6d1b4b14d7138d4e2583d721bc9595e05c733043ba6d86f91 -5dd250546f22f9746df5c4ac9f99106073336949dbdeb1ed3dc746587c1adfd8 -48dcbafe2cf0c204c44793e7892ecdb55c246cecce60f467c2991989f5be9d21 -4d72a888116d8a945376697b5d7034d62a680f9e91011a57b797d9576b043d1c -4b73666a7275e93a3b7b52feb6e8424f19a4914d4f4ce621efec308d83ba912b -7f5e0089ad1c15175216c27afef512f05312e2bee6c5778c5625354b9b3c70a6 -2923140eb3f350d73d06ab95c5232a86199f41695b6cfcad052a5dc27d0705ea -b4c94332d917236dc24f52172c94e05c3ff9203fbd34c13ad9d9e076dba1e23e -47bcf2c96a1c8b3ffcf2419f7d5b47795d9d2923fa5905b5ce3b4f332a89c5da -71afbfc57de12ad8d8678d1f67c1898c18249faf4d9f427019445425a11fff30 -9164be83b0594c5f312d653513ade66d5ddf29738cb823bee179ff864d01a740 -f759f64e5ce1d82f7841118b263929951fa7896a87c7949d9ffe0c5c5fa07fc3 -e3dd043a9e4ccfea80de6ab6f460c46f852753220acc9645419b13634bf351ba -35a1126d0164e6e64518a2ad5522a73fe38612a34cb6671c48bc18c919305bfb -35c57b0c8e221fa7519d5b1d6d168d8bc0375d174eab1ae6e9e44fbb7d9ca6a2 -f04c813f119939714322cb87c693a2499c9c269bfda53c78e7f04c775ad407be -49f8679e345bef9d531654e2377e61bddfa4f8aebe5bb6dd862d298519bcec25 -54c40969c9d1fd16e5a126cb22b8bd3976f68ecc8fc8dc9c0fbf51dd20c839d3 -b921da7d0aeb93aedc761f31f3a3401f83be4d38169ab5368ff41481d638736a -a71f624adb3c4a275e6b353f139e089f0e02a27bb003c8fa5eba4f1b989b3282 -8dd8d049529a84b2727733df2790637e437581de00fd5aa03c516360e4644d55 -aedaefa76f7f729dbdfe2fcbd2c05dd593c74f4eea31518b09d8bf2094354040 -c260b7b4bc3a6238bcb61b03e6de12e3d63be9f7b5f34441d9a44304911eb92f -93107eda8946de92bfebacdbd2d950d92150d1f831d6829fad5d62c75e5860d9 -cb3e3062cf867305a0ddc020bf4bac7a2d899a9481a391152151857cd53a97a6 -6f7cd99c190f119185d33e49f6ab5ce20e61540b21387358f1233d2b39e69924 -7ac33ac73e337a1a54e9d574ba856e0d3cd7267483581dba9491619f91b12996 -d1c33f89d5dd6407bb98323467e9a6e3be4afc06c5006e19ab8ad06b0a01fdd2 -ad742bff310f17f16193d7ab584c71c34372690521e0afbc4e6051025ec9a4db -affc01120edf545631e4fcc2a65c488f25f640260982b7458f83125581d36f18 -55ab4d823dd44112967e4fd41cdd60d6644617a638ffd5c9d89d2a95bc4b1b9b -8178777184d48f314554a19a444fdd509ebd345b19a411bedf5a0f59e9c4dfd5 -6facbb6ee71145168e06a6049f1e2b0e3f91ff26a2cce2db8a256400876db370 -17cb684540eea84942aa295cb079951554614e45f8d0910e15093aa1d4877c3f -543f0957ce9074aa051182c9ba6cf64058a403cc63cad5335f51aa32c76e3d8e -a3677bbdb623c2c5febec43e5490decf54bcf7d9cf35a4e5b9ab5577649cb61d -a65b3fb13156130c55b44a78849ff4d84136f8ee4f2a368de63f5799c822c3f0 -b27770a29973541c4e137774fa958c0ea6227a57610bc6f056662ab2f7ab4aac -6893826c13d3147b6fa6075cd4784cb799cfd972d9566227db5b25bef8641534 -6fb8cee4e06dc0fc49be6237a2720e3f9b7bc7f22a0a5ff2c276c2aaa00ab372 -7e59f1642709f1216403c0f694914e0be6c5165b21c1a736bdf04da8cd699fdb -1b9e1553a56314b73ba74d83ccdb0723469ebe15cf10d7bb4d16f1c0878ffe68 -f015da3e534334f53a2591d30199a0ccfc0f3a239559e4d0c7fa1fca44442141 -3bc003d6be7ebf1e9affec62467e98ece66bb2216b4cb5ce45113e75ee023635 -9a3ca384d603136fe5b5da21465e6d406931020d030ad932cbaa597e170298b2 -12b15b8434612b12d13844a3e5a46597b4c26148a3d6f5c42fe2d949dcb64b40 -44034791b7d780f75d119422d56fae911d5ec40189a4957b13b9b75d991ba190 -fd3944c8ea1b756747a0b14492b04053dab4418ea5a96e1b6b12ccdfe739d392 -d023e003e0463dfff9ad29e5a0547d5101e9d6ecb59f376860952fb748d15b68 -1070ba9d08b9436b65b80b20d7c6b65e4476553338f9f17dafb46471d293de8a -afe9d55d30c38a475b9e8d00d02690ce3562ba9583038b5fed7940cb4d7cd5d9 -79e2532f65689847 +89c6b6ee20b3f32aee24ba734e809ae50e20f701784f3fc152e57a530295e66b +9568fd0168027faaf2a3597671cacfc3154c3a915dbb77b55781174f2338c07e +129eee8bdcb5432ac2cf72ac6b4f3f63048c8b6a1daa5a4fb294c6841ee1cca2 +d58caba490dee09d7870f4fa854244f50adbbf0d9539ffefc70ad3e5191446a0 +94fe3697a275d60b2d8eb87bcd03ca4a94078eb1bc838686e278b37b2c8ca583 +8d799b5500151337b0f14c4cf056e94eb97a73c798d0efd52011e77e9c41636e +fca443a45369ec50c05766e676754abce79fa698b4855dcbf3bd96a9b59823c6 +013c64037a8858aba9681fd66e122547b3b8a766f1eaa1e0c222e8dd1bb5ab34 +990ad78c3e0d42d357ae2528fd59b4b4d7334248060e9b4f6aa268d568cda22b +8b3b536354e1197862ec6c7b0bbc4631c74d15a6a42c89543196fb0ff0a63f2d +54b070bf724b6bc3e77c4cb0711292e5ad6b9f764e268d0f82d70afc78d6f1b2 +f82b7e76b77f541cd59bc0e0df1429fda9c9af75737ac94a66f631e93bb0fc30 +cc7b6ae0e37fa085cfa82cf91854d04fd0594202bd221170d289b8d58aeef800 +727a9e9d6b42204b5479ebe5612ab895cee09097e66f20a4b3b83338e6b1de90 +a44f011cafc1aa95739e1cd11125a823a88c7e731f64f85711245c11bd291ea2 +df1dccc3099b45766b5a8303bf464e0b88e5c5def5d020c6774d13f346220d0b +e6b60f4a195ffd4c56085e6bd9fde12f9f14cb6c24d0f95ca09c7b7cf0642b0e +1f2d2b7bbfa7806b66b1bf8fa8d645803ebddb13f27e7fa18b6dee3083cb878b +b3558f1600ea8d69f20059742673b4addab632ef141f91d6f2d4caaabd63c49e +665e1e4aabf4135f4c47978d5a69fabc2b5c95c3d150412d396819cdb2bc26a3 +370c00595400d89642fd87c2957d5d56b7bc270ee7a3e7134256244b6b4a35e6 +5c24d289e70ac4c85434c88f8056638c876db131ca83ce326461ea7f206c39f8 +34a7b16854c980fa24de2891c5c15a86e0be8f179f58b0cbb254530fc6631f5c +725fa4cca3abd5844e4a9510b20bd915352458cfd581fd0869d6602a49a05b9d +108517f4f09068fa5638bf15503c4676718cd167258012e75f8f22dfc14f85a1 +adaebaf74ff120e81a712ac7e4f60e590e2f70adf0cb87473141e7656c8a99b1 +10007a8324065ea8fb6dc13e4a624b5060ed515288f1082339fa96fa33670ba8 +5e6ec27356660d9f7c5fc80d2e616ed6f0fbe5c0b7ad2dcb0d26737003d5cd85 +8c73f36e6bc77bc754cc07fe3f15f1b1b8ea0380ffd693e1c02e42f51cefb7b0 +655c536dd8df165dd37877573d5a80233bfe007e94240e49a1d3dfd82673643c +6153d4fdd95ee6046e5840a0be90965c2c34441bcff520af20bf025f607a3a94 +a016717dc022a8abeaf347e1d29bfa4a85c7053c82e0707f76e8a799a669f70e +bc49015f49b5a19bd0288c0baab6e8b3d453c671feee28509cee9b1371eae27c +6915ee72fb0162df187f9879daed4f16964e6c44133135bc6626b8a7cc8212b2 +f5cb05a14dda34cc670bf728b4417c4a6e13458e5102f35e722af9fac1fbe15f +0d27715296153dcefc4bdae20e0d6acf3dd244c32a9ec6a11255600edf9c37c2 +79e98e03c2c26839f950b3b5526e913df9118860699733f17caafc11483935cf +eda7842e0f4e12e7932c7db7b557a646f8125d4a5aa811730659ebc4025bd271 +b1c507423512be612652209fe288a782db646f2087ac0fa27300d634b6b2a800 +cf93991b03d3493305342fe0876c0687329ed6c54890c14da27f627b10a17226 +aa48bdeb4be9d3874350724d7c393db05160e373d8366dd8af18cf574127cb27 +8dbe285e67320f3b7bde6cffe2e5c2bb7c8db390515d91c6c70759dadec41de3 +650540a039e2600c17f13516e95dd21356e2898c98590394d11ac283e22657ab +d0883110dc70ce38999f3a8db3a2df21181651b9c6d919733fc7cb459b62f501 +01d34c7b72c3ed02c3df299cc14ce61e9c64768df75b1026ff840ae41d8789bd +174e7e32c084416241665a4e3fb7711ea762478d5af4ef4e1a903779aed4dfd7 +4b7fc3e50b31c3cf7a26bc07388fb68710c09700fb8da23d820655b07f678fa2 +2e719d4ca8ee0d00ef985cfe90322e1a9951e8d0541100e3dff190c12fade4ed +4ed020de1fa0116193555c6457c034775927542996f55372d82321d1c7992568 +170aed18da866b0116f86f88a7e9668a0510953ead605b85a585b78724ef9aff +3d4ab7f261731c9677e24cbee9f35aa7fc7c6e3b585efa7455a971c1ef0a65b7 +58e9b282520ba45c1acb7fa34a09e1574f86d598a79072f5d6b84dfab0f32c4d +5cc3bed4bdbd044753bc3f599fae394cfa627a2a274057c9da93337500467156 +14abf107a943993d37d6e9e8c2a85619fdb07f70141a6f4bd470436d8b7663a5 +c533472cce26e7553f565a22bdef2c96384887c6b4e1bc00f891ec2486f13dbb +233624047961c4e234939a3799085abf5a5462825973f010a08b41d6b7f82143 +1eef79bfc53f1210f5bead4186328c4d860198422507e8b68b65262846209803 +2a08580e475441238b27ddad31ef82ad6d8cf5d1d353a07f8f3da632eda62244 +e892aea26dd227aaeab108e1ff1193e88b59dc5a41f6d9ae6bf1b2040d1c72ee +792b22ec4f8d76d81a3d23059cdacb0699d427b739b1a0d2ded3c1e68a680a4c +c9a44e1e2b4809608c3ac1e07d01844ec067aefef6c77050b29b7871a6af7889 +930b5e6e4bfae8e42cc8f70dca90b99bf97e318bde853805cda36be0e7076895 +6d4c4fccdf2532da11f5caea696fc626f472736f2b9b075096742a71fee1a445 +6b1bbbbcb8acedaf13f870f4fe87d8bbfda7a3553e600248fac18433440fc4ac +c9b8f1ae504dc72d76f20df2df54b947125e14f605a35a2f32475c3844d8ab4a +e2ff3ae67d4ef17d6750effb1e8c0510dc6273880216422361ebc9d7e87a7685 +16e0a22e020600e1f26cf3daf67a24a1b74c8fa3c7fb9cb4aa9a2b64741efe9f +37b5960dcc988e6bd71fd41557163e632ede4c96c7d3176d46633b6d1ee98c1b +e82479066cc7a13eeee9ec1804e5129f17058bf618ce7e1739dceacc811366c5 +edc339a3b4032905b4783c306a6aa3ed8daa90c8ceaa20cf21428acb7ed1b3cb +6b69f788a682bd748a88af4ea069e7b52fbe2558a2bc9321be1b1674628f94e2 +8659dc08d6ece0ef013c054161affa931cb0858b31ede8d302c004221bd00a1c +aa1bbf1dfc2745cc98f2c77affc1038acc05a2a92908d147089aae099843e744 +a36fd07dca5d54053884ef8858ecea3431312bc7662f8783e9963e8c70566929 +4c68b06f373a130dbc4fddf0649d7560b5c2ba62d3221fbd3998e1faf95b38c3 +fdcfe78a2cc5623bf6ec5db90caf4e00eb319b03765a0f2e494c7c56d48d3d2a +af0681378ac940930017297841a20a0aca71e8df2ce5ef0f99023e47a6926455 +c7454ec766dab691149311a1820f0bf77466b946686aada1c81bc3d6de2a4541 +f3e3bb82e956097f394bb5c5d9d4ab006e44da60fd7dfae9cd9accebd5e5d954 +1c24bafc536f849bb29e410cbfe17575ba98aba30ebf28808af55075af6baca9 +658e48f6e07dbe4bebee2cea1edfe6210cad8d10fb7ca64cc2f7b1f4290b0217 +908ae3c8b0292db47cd5ee770eae2399671bad8f805c5701ab8dda81f18a4732 +a0841ab921c17ed06731607fb4d4e6835dd3f352368bcacbbb3a5283f0e064bb +7230f28c3659fac60d7c712da9c8070c019917f9792f991d854ef016415e2675 +aff8aed2a8331cfd4b8aee70f300ba4b370dcda476014751c2c9b89afbd64bb0 +c1257fe26c5adf41ed03f3ff61c10f2ba2347657824b03d76b6c6886a119e7a9 +e9ff7f7ad1f7e6dfdcc04069dfb225dd83abd4866f1d519b92380abdf593d206 +84ec4611f15dc88e0dec487665646f94d5634a2a1e34d0f790e42ce8b184bc5d +95714559bc69d21ac471458bc243108dde703bed9c48904c97c02e40b2290105 +82383903d4dd9e23ce458b07a336fcc65ec40a087959b3dd8a6a9ee4c6708e85 +ba7873260c2383f2c31b255ceaa09a865fc4282224000c87bbcbcd1624540a9e +177c65966fe3999c45edaff589313f01150fee28db8c1f3f674e09f3ae4ca517 +a3a206cd152e96458ac0099962b0608d014b0b30ee686a01af6c1a517f865214 +bb22d82192f16d9a235ced0f147431eb40d178a55b398afd387d1b767a99b6b4 +a05983824e9526e31b93eae6534b8dc45b37884a7617993c173d78ca388f0441 +0ee505dd445793d663465d9651718e7bf3187f522ff585d2a9a9e89e95af5e66 +adcd38add4ed35b061c63262f183528d7fc33ce82928a4a1ee502e3a2a713936 +eb0f71f6d7ff6b16ff4f0f75d96a877de6aea9c31716e8beb36ca65213001b42 +3d7909931103a0d015f6fc11502ff924b6e098ed685adcf67a39eef57345e4df +e7925d8626ac47c638b43aec6d37cdb285cccf03dcee1bffd13558181e2dbc52 +121eda89acae9d39a8ec1b8cd36e0cdc3375aa29ab6d6161310087e0f36b68aa +8c5fd2605b60ffb0129cf50ea762a928505cc7154239ebbef6608bcc1c8fda64 +a489ee62661c1d6788ae74668038774011dbf43511f61978764f33bfbe11b4f2 +045051bb526c83850151c32c4f528c7280e7b8655471c3720545b118b022c0af +0f137a4a23dc7f0239334d648b5963ec12953ba4fa496bb779b47f7be3a27040 +559453436d8672733be11dc5059175b08913c632053f21dd05cdbc88d6dc1a5b +bfdb21734fb6cf0e76fe8a23658526739c0994b5500887cef2971d93fa5bd735 +bd905b9a03ff4e214c911746322b74d5c8e8deb2be1c3cfc9be2c7dce755903d +3488cb615cc444318c5a5106a80ba166154de1aa69eb191393f015108c28aab5 +3a636fc398938d525d9a0604fc668bfe90be0f7c1705d1e51ef2ec55471b2f98 +2c7eb121f765d02edabb6609a998e40a270e43ceb89735647ee159c36d01b6cb +ca237dfc7faa9e520deffe0cacec31f4beb7299264bbd711e62a9d8e6729db4f +df0ff87885f6d49bc08a18c863a6287c335575c3bff795ab4d7935aa73e42d25 +f853cb2f55f7784a652a077856ea102df118ce13556dc982c53cfce2b68be9d5 +3fb606b3644e805f7ac940df416ee24bd28602424f102cd6fda28f45465ac16f +812e7fdd6f5ee7d2176c511bba278abad1371ea98567ad873bd38cb3de21f2e1 +977aad759b95665caa4334f11f683a212b434e267a4f70aa396ddfb548f207f6 +ea4f7bf4259daa8b446aa3f6356e61cbf17d04efe1479c8a55dcbf0feb172536 +0319cd3bec6d86a3444e29d03f16ff616671cb2960f2757587aec7f858bf7e67 +7205b38a4f5bfeb83cde088a8bdea51ade1f6b70b034e114fe6df36c873f2afa +555f388e5c8c129ae6ddc880b9f5752325c4262cf89bc20bade8fd1962356efa +348064c1062617e03dccb0a6ce3651a38c654246b83a3ab7d4b6d6feae77066b +4a4fb193aee3dd2fef5e05659b71533c16803c9c2744bcf6b60d581844b29984 +72475b8c238f3a083e04e8fd89a0a9d57a7c17efbdec72bb2f7001e23461a428 +7929f37208bfaa258b235ab856e54bd0492ea9b84fd7ace2ff2280345f9ff923 +9d818ccac73c9a17c5c61bbfd590ddd11ee20574d343942a2177abd321fc3938 +8733ca9cab3804a9f950b821b9633b92986d5a2d064bff4de552af30486dad7f +33ca5ec190327ebf0c6bc98f8c29bcfa5f2a1960bc8b39b07243dec0a28b3a63 +86a24bbb92e994b8310e0132693bf81849e143821f12550b11437abc891ef9b0 +d820ad32ddc94a67a4e0c2f2b3f8032c1a9926477916bed2960dab65b7138832 +ecc6e3c258dbe267da7980025ec2d24d47f9c72c4992bc3bdd904e3427772cf6 +59fe8f2a35b3453fa258dd01e2f86652ee5cbd43734d1a28bdb18d1833050023 +77568cc1b2be0b28b97a0dd77737f84f14f14c0ca465adcdfcf7a4fb0bdfbf41 +2caacf7920cf72df76225d1a63e440a7194dcead86735d68dc25a376d8ad29a4 +810ca843c5fe7f3952060d658a8a2c2309dc3b5c6c58cf21c5940d31a12f7257 +f855ce11533083845e02e4dfe5e9ebb60ce34ddb9a58411f4dd8a9e4d192135c +66572bea100d48fa9739c393c9a26d9a61574dbd10b720e75e91d2c6ee91996b +cd1c07df98a720638c800f4accc7c5a7c2af42df5f422f988c70bd456ea9546e +6ba7d6c9df14617b75605cc509fc574eeb45a3777bfe624b1aed5aa20154da1d +1f134536008aa8e58a6181e27a645535e3b31041181e6d3a74d4a083a1b8e977 +6a6c56644a722bf4fb5d30946694fa8d7cc8f2dd5dc58da26e2bb9e7a9420e50 +0dfda30b2172bdd311494cf3a21777dd3144568b5f61ab75724e34531818da50 +258cfa1f636b8c3a90da0d7ce090293cee2d0b1dd416bbc3ee99f98b5d08527f +39cbc7305af0a4793504327613faaf2d59c9c4862b1578ec26a9fde73db7ffc7 +45416444ea4755cb9fabdc897c3ffaf8af69115979a7323c0a69039d07d3bfe9 +546ee62b15d7a142462c09d2621fc030c84820f0275d2ca1dbfdafda0878a799 +e28f99e65c565b302bd3ac39cda505f3e7b7344e5d87bdf369a6e7ca64ef8003 +97a3a63cc5b7dfe88dd51c5c13c566cb246011fb8ce2f89b913bba29b415d408 +7d37efbefec9dfec5ec78834536358473f1809d3ae22ca43bec772501bb6e7e6 +024a353053f5a428059eefbe6443950df987e3d4399c7ac81f351568048a7d76 +565cd81f4a770db45c6664dd1e35970c59fe7381b326370e58bf1f76ecbc780f +47c36f3ab62fac0a43a9ffe6d42b465d1046b4604fc1e69b9c50e80cd595240b +71549688d65798da1f5d11616144ddddde3b4d2a5961e3116c54c7fa75499418 +ca0244f8a9ba4917801adbe116e0e90ee154a81659b248dc259fd8f8f9dad4c5 +053a8b32338d6197a1dc41ebff7c14f346b917e6e34796cb02a968fe823c00cd +730c7dd9429e390ae607f3790411040a8a51bfee1084c219ac873ea777f56f98 +9fcbffb1a1c7dedc6044126babae6acb3f4bc71004105b625b9de1484bf2f657 +5a0962dce7922d97bf0bceda6bdda018314c1a94eaecb18e79359ca825b3a081 +8175d6b254d1b6918192fbea6d6439bf623e6a4b2c9b2e746fe618a145a60533 +9dfe8e9ce2546bc82ba9fd5dbf57b22673d1f6b44a2552c20e9c97c197445462 +5125ab31f047c1bf4db34e1d4ce0aa02bb2321748fd58660b360349cafba3854 +9ac6ba561882e0aee348071077ac671a2d9979dfe2e48b696856eb38910d05e5 +aab0acff6e7f4cf980d7d869322d286225270bea6a8bdcd93e5fd46b6446e608 +b406a1a2a84ed3bf02ce5616f3a42009c19cd198f9188615b7a48d836a43e42d +c3b84a193b836cf6359461c37e7ba5610e273aea6d49184a9d6ee6829f200e63 +d1d4dc51a27c11f16e49df92062b7a8db68f19dbfcde92df8d187d1bee2dfac6 +4a6676aec5be64d10ba5ab269e3937e76010badee0169fc2f273cab5959c8097 +bd594591a794567226da5f13bc625c8709651adbe20f410215a0f41fa848e0f9 +f40af52c80b8e8512d32ca776727c055fd761306649530618a917518743d7ffc +bf7f886ffb84ea46200b2236cb61a889240b2e196c34d01e7c0edad9e0a82707 +26370efebcbb9cd0fd22d20c1570b217d7eae062e06c2c74e0c51c9220946113 +20dde4435093473249cf403781c049e8d802a35b4f0666fb61b826abe5094683 +19474d1f61818e58f480e74d8030ec995e3b30db39aeba8f27363742180be340 +eeeaf1d6faff7f89412840adc4d48a60c1930bb7df0c7721becf7e8dee334bf5 +0d2242bad946a039929ae62ae3bd6442dc147c63503f98acaa2fb6b31eff8531 +6de16b9bbd459c821afdee7bbf17dab050a6237bbad5d3f02e4391b362374378 +3a809ac14a1ace844ddbf4ed7c598d6f7c383a095d9af60be22ebb7527fc294f +684b55695a0bda3a6755802f2eda2658746e7565eb2d02acec7096e707ac2bd2 +e5ba6e9cddc18dee0dd6c8a658288b99fccaee12244e0e2e2c61ace47b56fd8b +81e0873dfdfbbe00928f2276e4285663745ded2a293c1c67d77f6039636a4d1e +3a033a39b5ee1b1db473d7ff5f3117e1dbc166620bf71265a7693aef1e32ebca +30dda116d602b7f4e9095885aea24beda70a1abe5c4937070ba98373096f4260 +9936dea2c4762cb23552703bc76f3b09c7a9330a23568a53e1a53f09e7d3e485 +bd40f6a451175de0e8eadc1cf1ff737d42d84857e55e7d6d941a52336f85c1e6 +df7203ecd754f04f281d0a0472c1d1ff845662f6f6c4f4112815763e038e6877 +e1ef8dd19fd17599230d272203e861578a318fe982bcc5358cb305f44bb5a69f +8a92a1db7798086589f59f027613485668b1bc34bfef5fa34f1804cffce2809b +f0dd27dd2bda635923c7f536735bfcda318718858f8bf2b4cefc34a485580ed7 +8125dc253460d6cdf5a592cac6c4317fa16790393d0e110b36ec22cc7ec7ed28 +9c8973527833cf8a0cd9eb30d8a00bce48bc4377cc1bc095b06bd18cfa8c716b +8cc402f0d9ba47ba267d52fd38ea1d2f2e465aa9f71730b1fd171a09f176d798 +22e70f9f075ca18576a6fe8e20e5f4c93defdc595eb0faee3a4d981789a45734 +e029732842d424eb805641616232cdcc40c0caf4970218db1c7d819094cd8e14 +74cb1605dac80b63f7c868ccf162b788a09584388a92b306e19f6604fb8cd55d +44525b61a9479c4245993a1c41b18311a57e8ec803639390b298d1ff950c5d9e +2ed691be7834c33320fe41deab3c6bcfb779d735e2c70822edaffd180a224603 +e6e8ea87a8c18d7391ee34782e6e4acac4627793dd506ff6ac3fb9fda1f9734c +08fe0b84903d6ddb441a685240c0ed26ed101ff057872a0dfe3cedc1042580b3 +776cc512fe0997899cffef242288a015eaa39c645aab5a98f5293131c47cac87 +1345a9918c0a329eabade935bae3cdb5bd108cc51ba99141570010a377b9730a +36cb89af3c199365b6d4ae9a5651a1c0e146155bb424fcd6b193da5eaf778ea7 +7112aeae3d3c7427a1330d77c1ac35e93d9d461364d16f4293dbaf72fb28d5cb +0ba3ad4713b71daef0d84f71f3360e3f6cbe2cce0106fca067bd5377b573c3f7 +21cbb6675466be0fa7e2d885057ee598357eb3ac50648923e8b2efb8e2803754 +882d8dd47dfc1d433f6a1f3c16f792067d27404d43bd59e33a6aacac2bf3a104 +8c8d37e0c1dc7774d3ebd80662c5bae23273e4b4ae4f539ec038e19f2b32694f +485087e7743548f739ebceb14f36c24532c96e17ed047ce278fd7001f022cf4e +17601ce00679fffacf9ccfba338835f3a1764f2172dea515fd7a2f522663aa87 +c6a91253ac9f7d42827c5ca0170139437f7bbe955727cdd41931ca044cc737c6 +aa190c8867ff5bae497ceb95ee28267ec0c4f85ca742784ec0cb75038c0ad9e4 +03d86cfc177d73c4bdaf2dfc5ef152cd193d909acb9628157cdfd2e40652bcae +6344ad22e7b078a34c4087825cabc21e905788995076b091bb776a291cef4767 +ccfe3a2950af6ea08bf3635ed50c48a6a02e882aa72aab703cf482aa8867aba3 +295aca88ce37840343df21b211e241cfeb76b3e908165fdbddf03f690eb288a1 +83987dca5e9b5f67789218e03eebd419a1cffc780fab4589e8b0d70934e81125 +bb1f89af1da41c5484a288a5a4e8129b6baf7fffb605305e85030dadc0414d8b +b55d8cdfa2b89c61d563f86bc885852f2a2112a31c1222d1a7a7aecef620fa18 +7a926c578d42cc910344458a4f4c399a4868a5e91576f71dd323f8b719cb6f72 +a6e3f2e425353857697e12e1dd4bbfc6935a66573d0b76c5be44064d44248c8d +ae1b8898662fa5171e846a26480039ca53bc83de50b086c1d645e07274dae64b +a8094d3f63d1b7d59809790d09c41511b64686ac0b5c82dfada814f674ffb293 +c120c82a1a29b9a377743c4837edded1270ea216b444444f80665b7335b5e004 +b6b69b42b6d22e4c45dccbd9b733f48fa07269e03e4d574744e301bfc87226c6 +96ccd893c5716dc474f3f9df3623e84952c1c7bbecf27414d92157e7a43446d6 +7cd4944006a08fe993a863add0f0b097f860af872e9b4f2d4a065ddd14eac64c +58234dd7ddd952db75b2ac5effb3126de50c7086082f22a94fd8720f59569f3b +3d04238e5524776438dfd3ea765bdcf3b6f545ee1ed74a85c1f204b6509d5281 +65f3e9d1f769cb63dbc62cb222871b0119ec16c15bec796a7bdcd4de26d9da4e +9b392d9ebfad5e5e118105782581e27cf7f81f4313830173919847f74bae8bae +a4caee6c8e487c75426ab79c14616ba08067e34bab0361a01e999022a9aa8b8a +750a892ddaef5087097dd2682a085f566003d625dd427188c8d3f6b33d183bcf +cc0a776d04fed7f8b063fcd86e56067936fcc405c0fe8b241c68399f6775f2b8 +54293b932fb626f4394846111131d2493cca2651e208a6e37e9ebd89a4987ccd +178843f68507e9e7fb627a8073d437e2b47e954ad2d2accb21c48767efa85e52 +d9d69740b1eb005ca9fd64e7ed0d12db3f8bb7d3c7933a9f419f7239ef7e3f2a +731ea1fc919e9fb3c3d2e60599fe151f52672471b0be33979cfaa58f1708b97f +b419afbac4ecbe80609827bb6711179bcdb973bc3bfc4496f73475229df17f98 +1eb0f1d5800a90e45c4a94fea499dc328054bf87eb3ba963d220725ea238c779 +3a2f827e01bf44546708b8642bb1bbdcb79245f1299032f980c08e6a0210617a +04bdc8cf4789cf3c0f53ba56d0e019a370daa995f89655e827d7f3fa6b3c557c +f5978c4c0c8fbb569e7288b1a23d5bfcbad272cbcc75ffeea3be06aa52483e4f +cbe08702507d062f99976ce74347cd15da48ad96e6ada062adbcc50d3a573db4 +c7615b4943ea1a13607b8df12aab3255535ea541c06092fa883e1e1a7770c877 +20eabcbca246a5131d1f2614290256d5dbf18b0b6d31a94fcaf6a64e2f4cdc62 +95b9ade58602e1645ee293092d9b23030b798a00f5c7c276f7365f68d0a5e365 +c36a16cf4ab3aa98a3f4501e82250c8c2c28e5716131877f1ae348a00ad6b140 +19d7b159a7aa183c3cbfbf4a8ddb0e89eae19f6bbb547fd2cd8ec1183b12316b +ef0abb61d4214999fe58949543bf546d2116735be050b8a06eb743468484620d +0a2739bcc859469ad44ab4f99841e2fd692f9fb7749ffb23f033b2a2ed4dc7eb +ffdf8a5916cf27ea30d8d9a0993fa03d129f4952136f3338a1e3328557f667b2 +6e1a240a1aaaaace86f7cc7617d6ba28e7c91eed04c8db0aa55ed717e0a163e0 +ce488fe5f0d1f11771af6c228b7b6b6361da2f6ff94f9e1e6f3d42fc007edf75 +445d6561a42d21e4822ecb9e69bc7352082c1e046b26196177273926eaa8e9c2 +c4fa891f2b2717c75e2b3fa481f9858e1fc7a302694893c6b1bc4c86a426283b +d3897165929c3086bad35434b3b6083ad52094d1057560bd43f06e712b0bc94d +5c8a20f64865958e0098edaab335292f381ce2f386228ff6aa2d9b0b02f2cee5 +b849d314d5001d680e7907252e56e4b43f9f2573d556d680975c7ec750107361 +8be4b6c529d1fb3d4657a8486b95733fb999d7290807438a5c88da8147804bd0 +9fd98fa8e7782cb8814f75e9e0edd939edb178ad31aeac27018cb45b83b2a4af +a561dad3014d030549f1a2a97e93ed31322d28632c11d313d5195049a02cf594 +4588424e527e49e7280e42490a8aa1423ce5650a8158266ef206aaa5bdc052b9 +43cec74ed0bf405cf75303bc4398a7f380f5ab9a66526e65b940243e109b6bbb +e74fc59c218cadfa1e453a42198d6f230aba3e99dc64f697e67d7557764214b0 +35328928b18edab60f405d414922623899dd563ac210509df0d3dbc6fb412dfd +b2b9e42ccd47ca60c5b16d970253057f879ba67d7ad0f0c2b0197a248d1c7c3e +94e68332b4e982329e7a8760541d7aa4a8d88daafed678ab27f7aba897501019 +932aa084a40948f2af5b564cb04e521ef21b5f8f9d8bb44d26cd4da68d66d432 +4218061442ecb240f696bcddd1a9708ba0e0545ed9998e986c8ef946b5ad2167 +46bac6fbfc8e3f1da69e3def33ef2c5ee64d2918742df7ca2d119c416fcaf745 +5440cc15a0add20b2e8a4496f757aacddabefd28817ab2a91e622c6d554c91de +9f8f3d0b04c9d6ccde729910c524686b42b48158b76f106006796dd62dbaa1b6 +b66a78bc4e34baaa81aba23cde6397d18c0ef586278aa98a8f3d550124c35412 +bc8908d4aecf409742ecb5abcdc05791fe45f069b794eb7a84db750ee41033da +276976154174eb9dc7b607c141f92857b3ce0f0c08df229f307adbaefcc0d72d +4dfe23e29f0a3a5677a8650c6bcd9a375450198cbf690600659451db154632e6 +a552db7e891290a2643009f742cd77d9cace83a841a68e2f0e784ee5eb489e16 +7721b039fbd5bc18a398751585b51ecfdcea9ed519a2e89ac7c90b08aeea83d3 +dd20ff35abd9aea060fc8764a6521368fb050ed5e28d7bb047f6e08af5057416 +a1060adabd4d3e7296e5ee380032d6cf19ad21819f9c113ba4e4c52cecbdf0e7 +f3b64cb252ec500fad6cf06b16ff4f0f768000b9bb455aa872818c46466ba50e +ae1637c6baf9bba7439f7d881786c299c9a1ed639e05a6f3355819580c470ba3 +cd1e94ca42695e6d7c93826da63dc29d179acd4e964f9582b6f630de1ed724d3 +bf9ba59c83b9d45d9c1a3e5efde1832dea2b90c91ef35596c72bac90f5355f45 +0498883e0342850c464ac6260b5b5ac27fc1cbb2d87b7d257b7942e896e084b4 +6d3c755a0da26066f6b3e2aef70d879f478f0f36cee714af62b21c1d26505b01 +5de093c30bb9400a1d3c763266922c00c69cb6c29a22f72983eba660f142565f +ef3a202dad3b56485a2200eccdedf261f9f46506026281902065eebccb5bf444 +45b45379ce597d8aa099ce560fa2cc4e6b521d8497ead7f43a4cbacc512c3897 +cebc1bf1a6845d6084d6cbfdd15df5786790abbbfcc5340592902e98dddb257b +2e827141085749e3543ba802d94742fbd26f2d30809f6309dbfbc49f9a5b997f +b4aa734906a97b9996618a90ac121ec61e4b58f2d814e0906dee583c8b6a3dd4 +7b353450898df14dd37819160cb69faadb8973940de3c3b3f32f5a665ab1dece +575f29db0404d0149b7d78c8038ca2e109cb0c7cd17d94588f80eecd7f0f803a +79904be1cdde64e46edfca3d17f12d574bd12c38651d38209e54feec95abf6b9 +6e3596bd59fd1e0b828aff7f3c8ef542313863bf0eb39c4d270a2c9b461518aa +e22da347fe109f8277bc26ebaad3a1f5fe5a0f7a3c355dee5ce26d9010bfe142 +586a9d185a876dfbbf1e9507be8e80fe9a474f6f7632fb0c637faac4980060f1 +fc2e8e652d53b9309bfb333a77ff1b02e0a7cd5f03d2cea96d9dc02b0be43017 +993d9e12b6bec07fa29534758bcbbafcddd29c628ab1bada1e850127b5a9c151 +b66e8e07e3200a14324264512b3412774dca4971bbb9e7587f877bfdbd94b27f +f1886eae3911cc82012a973b11f399edbddac64c5af54a89c781cccbb6eee3d9 +0fae1fa931e03af8f42df10c981f43bf4bdd88231e6bf13ab85dcc92769ea84b +9621807295b46ee02835db6a9a9e494c8d85fb7a5e5fad2b6c1d277a3a6a8ad4 +42c6099ab7ee950377f1f7aa444fb1107908c09e055119ba202635aae45691cc +3d8014b4562dfc54abfe9ec2bdf9c2d48c2743a18882c289458434a0503d56e3 +04f4bb53d70371629c24dc952f593b7ba760754bedf300bc2d5cc6ed149d964c +2e2fa0e0c2d2276e0c02a6151d9f3f9c5f7a56529f58a2b7bfbaa38b4e3e7316 +f549b4f7ebcae9dd7f9ca4decb5bac247562595d9f54b3b9b9c08a2ee85aaa11 +907fdee3936f664638afaee477514754b9b97232f8b0d9fcb9d24255a0aa7858 +e3ddc4113fdffdb78790a2a75005bbe4f8411d57bfac0e5a276481e0aae3bd96 +aa406e98d50e8c93b9efd4bd8cb785aa6bd835e461ed39e14d4b37f9d958dd2b +854a7ffac1652d3b3698b8d69bab17aad8a364790967a648f2b01fc525357cff +14ce3a675ba43b7d1f562ef6ed65d7636ff31d9b9cc4e4d4ab24f11fb59ac719 +4dc8319f58231d1917edb010ae3572b12485cc306ebe606e4b552fc1308f4b5d +813632c109429e9409d8b9555aff2b2ebc859058ca107ff6d2b01704d0b62560 +88374a49817a7ccc5b4de17883fc3f24949b722d2b7e4fa697803c9f5d1cd0b4 +5e847838b214ccbd21cbef6c93911bf5ea308379155547094403b671f205dfc3 +83249956e6751fb418f6f2d3c824e9ac1bc95fcff3761e19a65c8a98bd7d26d7 +33f370ad8263f311c41dce56f0f85b3756245ca922f2cb4d5bf588fba7adcd69 +833adc1db75e8f9a1ab318783ad8ac4855efcd60f67c8234a3f612cd6f109efd +8a719528654aaae8e5f3879805d13f32d24397195e10e5c1193ef62f7828e4b5 +bee0d504c06870e9cf9fdf2d05c70b6412c4e4370d3f135281a7b9aa21108d70 +60fd5520fccdd20b5013a754b63ecf09b7ac8e7bb934f3eddba6cb89f671c248 +f10229f17d88703c8c503cac8ec1b091a261f991e90d7850300db01d703be03b +fb1d36b6a2e7f986f0a40af8b4b978dd042a5450bd35aad0ea1f1e35356090d2 +848fc2a52d5a309d7cd177daeaa8b6203127f9328157f83e0c33e8e3d70f9465 +1c7a04b10ed8dbb69fedd70aad5a9ecae7f6362d00547cccb0642b45419ef50f +f7d87f2504a8bbc51a6d31945f3463d47c500af4762d7627d9c2b56d7a4aa491 +787232db1f3a97933acd4e041e285259c9c6ee3495a07cbf1bd05b68878a73cb +b2b4ae1f7aec040ffba3d1251cdc473e331b61be4fbea7c38736d99c5bd8c57a +fa9e13df11a4be5c7ef0ab45b03d0ff15c2acb6cb0b85847ee42983686bf00b4 +e1683259cd8118c92fdc0ebdcf6deafa96460a735daf488d8c28f020533fb7d5 +92e28ac481385823cb490e8cb0c15a9b3e51b53a0751ebe9c0cee31c3c7aa526 +9e66417b3411533ca4b6bc6a52f228ef0df1a98ae9e9b72de26f8425b57a311f +6195166d88263b161cd3fc986d6ef95e2bb1a472706a00758df5d608b586410a +3b457f2528777db7927f8d99309d9da4911b2c1806b7e579550c330d726a1683 +db7c11c8236a16b77afef495d87050232c78fe2f085bc14f52e68b7a84e9fb3c +39edd64dd9dc6e00051cf14d61849cc0cd02185de667b4cbfd31c9517b9ed783 +1859610ab1a0dc3dc47c97dcc23d30a6c14565c2afc6cb426b42395d588fc5c3 +2c22609728fa7b2c12ef51d606414bae3a74c2f441af4de5bc0d70cad6cec9c7 +27c26d1dd0760142e4558e8e4b8604c696b9a702a4e9618bf3308fc31ed644e5 +8a7504b6b867c1a2d8ab4d1da869f14e3863abffc842a78ceb51c01e20a6f987 +445365eea0a10e730e5b97fa740922e96a6971eae3b28c03389324964d6dc438 +66ded16896d06de794634e63eb67e63e017a1e7306318a90d1afd6a7dbf55288 +89deecb55f6c42b2b33fe4dadfcb1b2fa2ec3e48f91d1f25d419640205f6efb8 +d0c6e93f9be3fcc5c790457c7753d01f710fedf39ec9e44172a63e1153a147ef +a5e27ced65945521d8a7d175b7b2644e51901d5ba9f8cd5baa0884ab2fd13027 +6ea0a5f7caa1fcf768399d136dcc54e226e020123b05ae5a30184aabea304912 +287eaaa24daf4659dfcda1bebb5a8c09ad52dbd76e5b19f4c2276c3b58df2e26 +fdb2cf5a72c7518013806bd89658dccaf70948a4492b9806a03226a6367ed258 +fba4975b8d790aee99229d09dc896e67e3fad1667496cd657e2fd5ee71836e4e +acd7aa8cda58e2e73ee28c357cfe3565daf0b1bf9859a207a98a468342eeac02 +0fbea098366a232d016764cd6d4c3ca699121e617d7397db636a4e208404df64 +20f483629bb05069644487b786a62af657752225fe38705de8df723d39ebcfb7 +2fb1e38cc4ad8fb1a4cfb06ae3b744476163f7bf06801f0260eb9f704eafc07c +42ec4f30a1261a00962bc917172e2367f8a36f6428c66252b6b4c3d943c4b957 +5dec04dfea831f185acfa0f7e7ab2a4276132a5f9e455b41bc49cebc0ad2606c +4c008d082ac5c1c042fae2235e5e4b56f781b9286c43f8a4910ee209690bf4fb +77c1324d7d80855f1d313525a052ac9d548321a7b5886dd0b1d92cc9e20a508f +2132ed4ebdcbbe7ee9da44290353410ac2985f50e9113a6586df5585d930ce9f +3900741f0096f7ad32e935cb94a01e3102818796d494f11811a4b212acceea3b +6e650fc634cc182988e8815d4114bd16b5fb95c219dcefe66dec929b88642ef0 +9eaa02be14ae5cb80e13263d2200d70e6147697eb95b17bed52b3ac88c711367 +a10ab5e338f0d07bc63b7e721bcf7b6b43edf787cc16f7e5915eccf402738f0e +b3ed6e331f6a27322f7cc2b4bd2833acc55eadd6af8ea86a0e2790b92bee8fc5 +58a5152d4c6097ad11cb8b53d9a575a35ebea4a915e01f4da8e3d009f43e88cc +b0afcd609715c78ce218dc93a5c07c746097a37bdb95ac589e0df611ea1ea6ed +c53bc89bd433860ddb7e927128a49470b4737e570840777b5cf35b35740077a2 +1cb5b76b88926817e6bfeb8e64da2ea97ef9f31b5a0a33c7b7daa86277d09cb4 +3f67ac1c19643300beddbea67a979f45b616a2f1de82c17777474a9d51309409 +2c3399875fe61556e10be5cfe06d5a20ea41b99330616a82f7f21337a3a539e3 +6126ba42e275aa120d567c415bb99b3080ca014b9a2448f6f38053691befe000 +ecd9230435320467a1281a78d997f58bab816b0d12b7000d30b463d553499d02 +c8eedcc150b390f6d0178737f40d4e253c6a697a4cbe9058841d9821d7f9d591 +e8f6fb3794af3530a9487639ce8361393f140f366d2b4e31a85604d9cfa042ac +33a6ec2f592f00fea718c31d9e7335c47021c0565500dc426388ffdda9f46643 +8cfd5217c3b7b5682526537b1dbc5f629a0dab1e110160e7b2bd1ab594e30df9 +30415b7940b2f99fffb029e7e723ae44de1503d1ae473e86ce8729b719a60ae7 +14136c9553842867936d3077f04d3bfe90524fbf7a19ed1d97e98c19c8deeb25 +f7b0ab6d09ae40dc29213e7fd73300ab25e770bcfc5b83a6a8d34261340dc911 +fd8e8eef09be7c6fb3f34e96dcc1fb883663c8421a4e23c475dd292611ab823a +50008767063c0efe8d259f177cb8abcb3c72243f96f35768ef338be3a97bdd2f +1ea0ac51b9caa30d80500931a6a3caf811debb724d0cf64f215b5cac6d4459c0 +7631247022b555165459f9519bbd805b79fb0da13bbb2d13faa6bd7dd98b65be +891e5e26766b103507177e9cd5bc64c9d1e6d09cd4b56b91a01e225af780cfb2 +9ed7eb7a346328dbc9268b92e2857d8088e2531e67b057dbc41319d12d5c37fc +d0e3dbc1db24c762aba45450e7e6ef52b5b1d267007b178daba3189eefff3201 +9457718b64013208235445977d568b093fa68bdfbe37dba126f1f861e3d8399a +f5f6d451f63eb060009d8324c12cfb8a8287e74b77d7e26c6d5d200de081c92a +5f22bbae918bccb0eee8efc7159b93764256d0b1fe8d11a536d1524c8ac1c414 +079b64b9c7888d2df89cea9b419eef728b741523826e41146251b42a28063c27 +da070947f89450390096333d1bfe134d00e02ef384fefd0f55f15b99be55f8bb +3099e672cccb3151bcfcc52dc5d7c5b7af393db5efad2acc2854428bb5ff7b1a +e23003ebf0e5b1fe28e30c0e2d848e336a3c3030acf87a48727ba0b27b4909a5 +002686de1f125dcb87a0edc4b3fa262d7cca37e0ff5816dab01ca03340d1844b +5c85bfdd991dc23fc73b7054fe601df9336d162b73685d0cc297047e9bff741f +1576800d13135dc88c98fae358d97f8f3644471c74026f265a280d66448c043f +9c56062ade57f66636872c7e5543faadb0a093b6582d1cb46dca0d99104efd1b +633cd08bae5a2fd4526dbd06f990c4d114cf1a8878856a63d2e8025e4818800f +68bc3caa6bb8c4c33ee8e0d093e2110892035f6d634d07879689c731156eba66 +1b1173f425265c4773c49940fb94f8caf09afb0eecf90d3f1ec82a0a1386943c +a37d0f828c6999f6ab5d1e411ecbac5ca1fd844eed36199b17a0bda1f42bd7e1 +88bdaec6f37a286d1472bdbbaa55889ba042b74bb321203363b22fd80850c0c3 +2bb5f419b3be8b5d4436a1407b12f9d23cddf74fc6af723f9065d38d8fd2def5 +1aa7b5de7f5e5f9aa794691cd1e265db2f52bb4f3d1a52b8bcb8784f2a467c16 +89a9c9fd390b5f284ffa989a5d95af9e8da291c24c1167cf4e441571166b72ac +27dc803c16aff45117537cff39ec8547b276fe874cfde0e1c5a49af64f11fb5d +59c0220c5401343c4bd6da061cd7c88f2a12ef992fa540e9a9d20804e3cec5dd +04d226734b03d3837f55f545ce41abe05e8f139494749338a030f4db7505a3e9 +4cd735332ba7a8aff231c53b2ebb18fd0c33255636cc88d19d35093d07849bf1 +544a2260681f96eb32a30a6154e3e69bd4135af373aae56310443bab1d57dca3 +e5f01e28499677df13ceb7d10f1c61fcf4c372a22ce3c0a3b40439cea4d2e016 +942237447f236119c28fe2d95e985d804812e2651f281ec34c65f543c3e3a73e +c8ab36d44ffb35cc338ede82a44f64ab54c9c4cd83e281c47cf1bd0fe423cb09 +d6b0fcafbaa27d43da9bc0c7be0779a6edd5561e4688fc97ddb4e57cf3425869 +e347be098b558793500f5187e2d6b9f937968cb57bb8766a5bfc8063677aa269 +e2aa647b574e68bdc97a3baecec903e9abcb6adf242e8f5941cf8f20dbdedb8c +a1c553e0b346e6e2209d42ccb8882e962a718fa3f2c268cb5264483031071a9f +e8eee9cc9fb78d3f36336a8afb82c821b54fe79d4a624b1aa9421c0abe69177f +e94d14189b0501c3ad875d2efdeb2ef53aaec096b661e8a7907857ef1ef681a1 +fe9e9832f92e3a77b07278685c4cc54fe1416138d13f8b9d6ca502567009dcd8 +e57e5bb8bb924a39cc8e60c33a9d441092e60bcbbf88bb4619b9c0861b645973 +a02126dae76cf442844771b0ba419988e0550a6ed895214a1b35bff4e7787069 +4617b3369a404ca0f48be5356c5b1856a3e2c6b99e1414744c352d4ae1d6e511 +625115435fdbca6d96b5bb10a689eb655075ce7527ec8e3cda87a2e5cb92cb41 +90b5b8fb69ee44ee05da794d27fd4a295f319947e694bbb915ee5b0a24824766 +8b8433f5e70fe0376d74362e69a8dca893ea40eaf9ada27980ee0d6655961cb2 +4dcb60f072f35182b30267a75a7bedf12d8e1f42c423e22f6a315458a3608c09 +3c260932abdb98adbe1b129566dafa6a871573359e802fefcea2ed44a912b679 +7cf567f0e2b958d9bc404f5d1800b83233948ebd24876318254ceac40cef4e4d +1500b637810cb611802001b8ad6567411b7d59ef367f5a9e993e950a94f98b98 +fc24743ea7fd271a7d81bae5d87dcda9551f25c30f0c208d1e70adbf9ba26607 +5b980774b840e573d072cd605f5e64fcb11dba7d337e41cdebe2b863b7ef3125 +b8478e5e606b95467741ab522c4017da2276f87513137473b9c486fa5bed8950 +895100a2aca0a4b65d48b3c30a268a445a70b7ed99e2c27de59dba4666795b5d +52c95c9cbd90f86caffdb3aac0584cdc4fd300bcff6f3b5af86e50b8e463f14a +a01e7f7711ddbb9f50c77a50550b26452265263eea54c8c36ffd7fc49e0a0d73 +8f45749ad4bba960c6183a0c08b3a043ec6ebb16df12650d89e48628fc89bc62 +ab2ede456286590e7c4e11d6b796c4bb847954fe7b026764ec5531c9d4a6e217 +7a05dcde9d8bb3bde60524a55eb17ba3342afc0b48c32496a3d4203248bb2dc1 +23b98c9593cdbc6d5858cbbb04d77dc4955e0444850f5d1f38903e77da610927 +6db7f592cf5a4433b689febb370cc5774a206e11efc28866c9fc21fb125932de +c475388e9975fb1d84c7b4f94887f39680136b1644be2105b861fac6c353c317 +f27da9c1d49394fca1ff26bbd618af6b95bb089875893caec5bdade6657a1619 +d8d9ce8e2899e3c64aabca896da3a86c104408eac417bdb4e1ec13a03ddaab95 +4f139b83565c83a82cc2cdaf0dbe1a7ad203c0fd6e6ef5d1ae3403064e978ae2 +92229c0157200621f6fd298aa66788d81f8e7597b8eeda812a8182a1bad0ce12 +a53fbc46d4069e27f750f09d2625aaaaf2a0097944dd15d9db68f47c203ef1d1 +2f33a4a6fabf726c68600003309ebd39951a3908d71825b19cbe7902e9dbe57b +1267a9dd4141b476747cbe727824bf16e367dc8495ed76df0eaa1490849c0e6d +6d6cab0a90a6899ca783efa493c76956eee0e75fe14d7f62894c703b4d4fe84f +40540d030346ab887d2fc42b0be2bdb5232b7835803508cd83354f5156b431dd +f5c40c1a9e88ff27e01dea5ffcb161ebe97e25d232d942e5cb02ae38fb3cff8e +68eb36cc4a35bc2c05f1aea60ecdf9febe424c8de05c2b195a6ab418d0e2b88e +c5e2500fb22feccafef48f8aac3660c73fc952b5b78a823e5788a9a3152be4e0 +f5972bd72fee0727325b00092fe95ac517e7c25b2deb4e7d9a45b94be3056c5a +e7b82bbaabdd0d923b862a45126cb6d09b9f0f55f5e99bc8622e465033eedbf6 +930eae59c743309cea9ee890228316162a202f5cac05981b77b4e3aef683933c +165b850e72738f1b20b935e415f6c99ba48ed57633a620c007425362966ef2cf +63679add8834b43dd082ce150c258fd56aa7f809db525b8c1200aee1759631d7 +a650c47889dfaaf0e9b6be4c04c9937990ddc8305e7277c18f698a281e2f6b34 +ab0c1736ff2fb72ce964 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000