From d8f7efd1ce52b6a692873cc41a208d32aca02a59 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sun, 9 Feb 2003 06:21:29 +0000 Subject: [PATCH] T-gnus 6.15.15 revision 00. --- ChangeLog | 4 + GNUS-NEWS | 4 +- README.T-gnus | 2 +- README.semi | 2 +- README.semi.ja | 2 +- etc/Makefile.in | 4 +- etc/gnus/gnus.xpm | 563 ++++++++++++++-------------- lisp/ChangeLog | 350 +++++++++++++++++- lisp/deuglify.el | 4 +- lisp/dgnushack.el | 2 +- lisp/dig.el | 2 +- lisp/dns.el | 2 +- lisp/gnus-agent.el | 974 ++++++++++++++++++++++++++++--------------------- lisp/gnus-art.el | 163 ++++----- lisp/gnus-async.el | 3 +- lisp/gnus-audio.el | 2 +- lisp/gnus-bcklg.el | 4 +- lisp/gnus-cache.el | 2 +- lisp/gnus-cite.el | 15 +- lisp/gnus-cus.el | 15 +- lisp/gnus-delay.el | 9 +- lisp/gnus-draft.el | 3 +- lisp/gnus-fun.el | 164 +++------ lisp/gnus-group.el | 4 +- lisp/gnus-int.el | 15 +- lisp/gnus-msg.el | 10 +- lisp/gnus-registry.el | 62 ++++ lisp/gnus-score.el | 10 +- lisp/gnus-sieve.el | 2 +- lisp/gnus-spec.el | 2 +- lisp/gnus-srvr.el | 8 +- lisp/gnus-start.el | 13 +- lisp/gnus-sum.el | 131 ++++--- lisp/gnus-topic.el | 4 +- lisp/gnus-util.el | 45 +-- lisp/gnus-vers.el | 4 +- lisp/gnus-win.el | 4 +- lisp/gnus.el | 47 ++- lisp/mail-source.el | 26 +- lisp/messcompat.el | 4 +- lisp/mm-decode.el | 18 +- lisp/mm-encode.el | 36 +- lisp/mm-url.el | 2 +- lisp/mm-util.el | 11 +- lisp/mml-sec.el | 4 +- lisp/mml.el | 3 +- lisp/nndraft.el | 2 +- lisp/nnfolder.el | 2 +- lisp/nnheader.el | 10 +- lisp/nnimap.el | 7 +- lisp/nnmail.el | 43 ++- lisp/nnrss.el | 2 +- lisp/nnslashdot.el | 2 +- lisp/nnsoup.el | 2 +- lisp/nnspool.el | 2 +- lisp/nntp.el | 7 +- lisp/nnvirtual.el | 2 +- lisp/nnweb.el | 2 +- lisp/pop3.el | 2 +- lisp/sieve-manage.el | 10 +- lisp/sieve-mode.el | 2 +- lisp/sieve.el | 8 +- lisp/smiley.el | 2 +- lisp/spam-stat.el | 2 +- lisp/spam.el | 92 +++-- texi/ChangeLog | 52 +++ texi/Makefile.in | 7 +- texi/gnus-ja.texi | 170 ++++++--- texi/gnus.texi | 142 +++++-- texi/message-ja.texi | 1 + texi/message.texi | 1 + texi/sieve.texi | 2 +- texi/texi2latex.el | 2 +- 73 files changed, 2058 insertions(+), 1280 deletions(-) create mode 100644 lisp/gnus-registry.el diff --git a/ChangeLog b/ChangeLog index 0476c2b..187fd1e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-02-09 Katsumi Yamaoka + + * lisp/gnus-vers.el: T-gnus 6.15.15 revision 00. + 2003-01-25 Katsumi Yamaoka * lisp/gnus-vers.el: T-gnus 6.15.14 revision 00. diff --git a/GNUS-NEWS b/GNUS-NEWS index 6ad89fd..dc49807 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -1,5 +1,5 @@ GNUS NEWS -- history of user-visible changes. -Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. See the end for copying conditions. Please send Gnus bug reports to bugs@gnus.org. @@ -8,6 +8,8 @@ For older news, see Gnus info node "New Features". * Changes in Oort Gnus +** The format spec %C for positioning point has changed to %*. + ** The new variable `gnus-parameters' can be used to set group parameters. Earlier this was done only via `G p' (or `G c'), which stored the diff --git a/README.T-gnus b/README.T-gnus index e9e0e85..5841ece 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -33,5 +33,5 @@ NEWS: * T-gnus 6.15 - this is based on Oort Gnus. - The latest T-gnus is T-gnus 6.15.14 (based on Oort Gnus 0.14). It + The latest T-gnus is T-gnus 6.15.15 (based on Oort Gnus 0.15). It requires SEMI 1.14, FLIM 1.14, and APEL 10.0 or later. diff --git a/README.semi b/README.semi index d098c74..ad0949a 100644 --- a/README.semi +++ b/README.semi @@ -4,7 +4,7 @@ What is T-gnus? =============== T-gnus is an improvement of Gnus with SEMI's MIME feature. T-gnus -6.15 is based on Oort Gnus v0.14. SEMI may stand for "SEMI is Emacs +6.15 is based on Oort Gnus v0.15. SEMI may stand for "SEMI is Emacs MIME Interface" and is developped to provide an easy interfaces for users to handle MIME message structures. For further information, refer to REASME.en of SEMI. diff --git a/README.semi.ja b/README.semi.ja index 7cd73e5..c2dc0cd 100644 --- a/README.semi.ja +++ b/README.semi.ja @@ -4,7 +4,7 @@ T-gnus $B$H$O!)(B ============= T-gnus $B$O!"(BSEMI $B$rMxMQ$7$F(B Gnus $B$K(B MIME $B5!G=$rDI2C$9$k$b$N$G$9!#(B -T-gnus 6.15 $B$O(B Oort Gnus v0.14 $B$r%Y!<%9$K$7$F$$$^$9!#(BSEMI $B$O(B Emacs $B$G(B +T-gnus 6.15 $B$O(B Oort Gnus v0.15 $B$r%Y!<%9$K$7$F$$$^$9!#(BSEMI $B$O(B Emacs $B$G(B MIME $B$r;H$($k$h$&$K$9$k$b$N$G!"(BMIME message $B$N9=J8$N9=B$$HMxMQ\$7$/$O!"(BSEMI $B$N(B README.en $B$r;2>H(B $B$7$F$/$@$5$$!#(B diff --git a/etc/Makefile.in b/etc/Makefile.in index a552a89..8ef7da1 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -30,7 +30,7 @@ install: done $(SHELL) $(top_srcdir)/mkinstalldirs $(etcdir)/smilies cd $(srcdir) \ - && for p in smilies/*.pbm; do \ + && for p in smilies/*.pbm smilies/*.xpm; do \ echo " $(INSTALL_DATA) $$p $(etcdir)/$$p"; \ $(INSTALL_DATA) $$p $(etcdir)/$$p; \ done @@ -43,7 +43,7 @@ uninstall: done rmdir $(etcdir)/gnus 2> /dev/null || true cd $(srcdir) \ - && for p in smilies/*.pbm; do \ + && for p in smilies/*.pbm smilies/*.xpm; do \ rm -f "$(etcdir)/$$p"; \ done rmdir $(etcdir)/smilies 2> /dev/null || true diff --git a/etc/gnus/gnus.xpm b/etc/gnus/gnus.xpm index 7c55dac..edcfea6 100644 --- a/etc/gnus/gnus.xpm +++ b/etc/gnus/gnus.xpm @@ -1,285 +1,280 @@ /* XPM */ -static char *gnus99[] = { -/* width height num_colors chars_per_pixel */ -" 271 273 4 1", -/* colors */ -". s thing c #bf9900", -"# s shadow c #ffcc00", -"a s oort c #808080", -"b c None", -/* pixels */ -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........######bbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.............#######bbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................######bbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..................######bbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....................#######bbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......................#######bbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........................#######bbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........................######bbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...........................######bbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb............................#######bbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..............................#######bbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..................bbbbbbbbbbbbbbbbbbbbbb...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............................#######bbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....................bbbbbbbbbbbbbbbbbbb......aaa......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............................#######bbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......................bbbbbbbbbbbbbbbb........aaaa........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................................########bbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......................bbbbbbbbbbbbbb..........aaaa..........bbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.................................#######bbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................aaa......bbbbbbbbbbb.............aaa............bbbbbbbbaabbbbbbbbbbbbbbbabbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..................................########bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.................aaa.......bbbbbbbbb.......................aaa....bbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...................................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...................aa........bbbbbbb........................aaa.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....................................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...............................bbbbb.........................aaaaaa...bbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......######.......................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb................................bbbb............................aaa....bbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......aa#######bb....................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..................................bb.............................aaa.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....aa######bbbbbbb.................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......aaa..........................b......................................bbbaaabbbbbbbbbbbbbbbbbaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......aa#####bbbbbbbbb................#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........aaa............................................aaa........aaa........bbaaabbbbbbbbbbbbbbbbbaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......a######bbbbbbbbbb...............#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........aa.............................................aaa........aaa.........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......aa######bbbbbbbbbb...............#######bbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........................................................aaaaa......aaaa.........bbbbbbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......aa#####bbbbbbbbbbbb..............#######bbbbb", -"bbbbbbbbb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...................................................aaa.....aaa.......aaa..........bbbbbbbbbbbbbbbbaaabbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......a######bbbbbbbbbbbb..............#######bbbbb", -"bbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....................................................aaa.....aaa.......aaa...........bbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......a######bbbbbbbbbbbbb.............#######bbbbb", -"bbbbbbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......aaa....####...................................aaa..............................bbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbb......a#######aabbbbbbbbbbb............########bbbbb", -"bbbbbbb.........bbbbbbbbbbbbbbbbbbbbbbbbbbb........aaa..########...............................................................aaa.bbbbbbbbbbbbbbaaabbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbb.......a#######aabbbbbbbbbbbb...........########bbbbb", -"bbbbbbb...........bbbbbbbbbbbbbbbbbbbbbbb..........aaa############.............................................................aaa..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......a######bbbbbbbbbbbbbbb...........########bbbbb", -"bbbbbbbb..........bbbbbbbbbbbbbbbbbbbbbb....aaa....aaa#############.................aaa.........................aaa............aaa...bbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbaaabbbbbbbbbbbbbbbbbb......b#######bbbbbbbbbbbbbbb...........########bbbbb", -"bbbbbbbb...........bbbbbbbbbbbbbbbbbbbb.....aaa....aaa######aaaaaaa##...............aaa.....##########..........aaa...................bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbaaabbbbbbbbbbbbbbbbbbb.....bb######bbbbbbbbbbbbbbbb..........########bbbbb", -"bbbbbbbb............bbbbbbbbbbbbbbbbbb............##########aaaaaaa###.aa.................###############..............................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....bbb#####bbbbbbbbbbbbbbbbb..........#######bbbbbb", -"bbbbbbbb............bbbbbaabbbbbbbbb..............##########aaaaaaa###aaa...............#####################..........................bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bbbbbb..bbbbb###bbbbbbbbbbbbbbbbbb..........#######bbbbbb", -"bbbbbbbb.............bbbbaabbbbbbbb..............################aa###aaa..............#######################.............aaa..........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..bbbbbb..bbbbb##bbbbbbbbbbbbbbbbbbb..........#######bbbbbb", -"bbbbbbbbb.............bbbbbbbbbbb...............##########bbaaa##########.............########aaa#####aaa######............aaa...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.aabbbbbbbbbbbbb##bbbbbbbbbbbbbbbbbbb..........#######bbbbbb", -"bbbbbbbbb.............bbbbbbbbb................#########bbbbaaa###########............########aaa#####aaa#######...........aaa............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaabbbaaaabbbbbbbbbbbbbbbbbbbbbbbbb..........########bbbbbb", -"bbbbbbbbb................bbbb..................#######bbbbbbaaaaa##########..........#########aaa#####aaa########..........aaa.............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.aabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb...aaabbbaaaabbbbbbbbbbbbbbbbbbbbbbbbb..........########bbbbbb", -"bbbbbbbbb.....................................######bbbbbbbbbbaab###########.........#############################............aa............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb...aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........########bbbbbb", -"bbbbbbbbb....................................######bbbbbbbbbbbaabbb#########........###############################...........aaa...........bbbbbbbbbbbbbbbbbbbbbbbbbbbbb.aaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaab....aabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........########bbbbbb", -"bbbbbbbbbb.................................#######bbbbbbbbbbbbbbbbbb#########.......aaaa###bbbbbbbbbbbaaaaaa########..........aaa...aaa.......bbbbbbbbbbbbbbbbbbbabbbbbbb.aaaabbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........#######bbbbbbb", -"bbbbbbbbbb.........................aaaa...#######bbbbbbbbbbbbbbbbbbbb########......#aaaabbbbbbbbbbbbbbaabaaa######aaa....aaa........aaaaaaa....bbbbbbbbbbbbbbbbbaaabbbbb......bbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........#######bbbbbbb", -"bbbbbbbbbb.........................aaaa..########bbbbbbbbbbbbbbbbbbbbb########....##aaaaabbbbbbbbbbbbbbabbab######aaa#...aaa........aaaaaaa.....bbbbbbbbbbbbbbbbbabaabb......bbbbbbbbbbbbbbbbbbaaabbbbbbbabaaaa.....b#bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbb..........#######bbbbbbb", -"bbbbbbbbb#.........................aaaa.########bbbbabbbbbbbbabbbbbbbbbb#.####...#####baabbbbaabbbbbbbbbaabbb#####aaa##..aaa...........aaaa.......bbbbbbbbbbbbbbbbbaab.......bbbbbbbbbbbbbbbbbbbaabbbbbbbbbaaaa....bb###bbbbbbbbbbbbbbbbbbbbbbbbbbaabbb..........#######bbbbbbb", -"bbbbbbbbb#.............................########bbbbaaabbbbbbaaabbbbbbbbbaaa###.aaa####bbbbbbbaaabbbbbbbbaabbbb##aaaaaa##...........................bbbbbbbbbbbbbbbbbbb......a#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....b####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........########bbbbbbb", -"bbbbbbbb###...........................#########bbbbbabbbbbbbbabbbbbbbbb.aaa####aaa###bbbbbbbbbabbbbbbbbbabbbbbb#aaaaaa###............................bbbbbbbbbbbbbbb........##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....bb###bbbbbbbbbbbbbbaabbbbbbbbbbbbbbbb.........########bbbbbbb", -"bbbbbbbb###...................aaa....#########bbbbbbbbbbaabbbbbbbbbbbbb.aaaaaaaaaa##bbbbbbbbbbbbbbbbbbaabbbbbbbbaaaaaaaaaaa.........................aaa..bbbbbbbb...........##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......b####bbbbbbbbbbbbbbaabbbbbbbbbbbbbbbb.........########bbbbbbb", -"bbbbbbbb###...................aaa...#########bbbbbbbbbbbaabbbbbbbbbbbb....baaaa#####bbbbbbbbbbbbbbbbbbaaabbbbbbbb####aaaaaa..................aa.....aaa..................aaa#bbbbbbaaabbbbbbbbbbbbbbbbbbbbb......a#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........#######bbbbbbbb", -"bbbbbbb####...................aaa..#########bbaabbbbbbbbbaaabbbbbbbbb....bbbaaa####bbbbbbbbbbbbbbbaabbbaaabbaaaabbb##aaaaaa#................aaa.....aaa..................aaa#bbbbbbaaa.bbbbbbbaabbbbbbbbbb.......a#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........#######bbbbbbbb", -"bbbbbbb####.......................########bbbbaabbbbbbbbbbaabbbbbbbb.....bbb#######bbbbbbbbbbbbbbbaabbbbaabbaaaabbbb#########...............aaa........aaa...aaa.........aaa#bbbbb.aaaaaaabbbbaabbbbbbbbb.......aaaa##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........#######bbbbbbbb", -"bbbbbb######....................####aaa##bbbbbbbbbbbbbbbbbbbbbbbbbb.....aabbb#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb####aaa##......aa.................aaa...aaa.aaaaaaaa.##bbbbbb.aaaaaaabbbbbbbbbbbbb.........aaaa##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........#######bbbbbbbb", -"bbbbbb######...................#####a.a#bbbbbbbbbbbbbbbbbbbbbbbbbb......aaaab####bbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbb###aaa###.....aaa................aaa...aaa.aaaaaaaa.##bbbbb..aaaaaabbbbbbbbbbbb..........aaaaa#bbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbb.........#######bbbbbbbb", -"bbbbbb#######.................######aaabbbbbbbbbbbbbbbbbbbbbbbbbbb.....aaaaabb###babbbbbbaabbbbbaabaaaabbbbbbbbbbbaabbb##aaa####....aaa..........................aaaaaaaa###bbbbb..aaaaa..bbbbbbb....aaa...aaaaa##aaaabbbbbbbbbaabbbbbbbbbbbbbbbbaaabbb........########bbbbbbbb", -"bbbbbbb#######...............#########bbbbbbbbbbbbbbbbbbbbbbbbbbb.....a#aaabbb##baaabbbbbaabbbbbaaabbbbbbbbbbbbbbbaabbbb###aaa###................aaa.....................##bbbbb.....................aaa...aaaaa##aaaaabbbbbbbbbbbbbbbbbbbbbbbbbbaaabb.........###aaa#bbbbbbbbb", -"bbbbbbb########............##########bbbbbbbbbbbbbbbbbbbbbbbbbbb.....a##aabbbb#bbbabbbbbbaabbbbbaaabbbbbbbbbbbaabbbbbbbbb##aaa####...............aaa.....................##bbbbb.....................aaa...aaaa###aaaaabbbbbbbbbbbbbbbbbbbbaabbbbaabbb.........###aaa#bbbbbbbbb", -"abbbbbbb##########.......###########bbbbbbbbbbbbbbbbbaabbbbbbbb.....aa####bbbbbbbbbbaabbbaabbbbbaabbbbbbbbbbbbaabbbbbbbbbb#aaa#####.aaa..........aaa....................###bbbbbaaaaaaaa.....................aa###aaaabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbb.........###aaa#bbbbbbbbb", -"aabbbbbbb##################aaa#####bbbbbbbbbbbbbbbbbbaabbbbbbbb.....aa###bbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#########aaa.................................##bbbbbaaaaaaaaa.......aaa..aaa...aa..#####bbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbb........########bbbbbbbbb", -"abbbbbbbb##################a.a####bbbbbbbbbbbbbaabbbbbbbbbbbbb.....#aa##bbbbbbbbbbbbbabbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbb########aa.................................###bbbbbaaaaaaaaa.......aaa..aaa...aa.#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........#######bbbbbbbbbb", -"bbbbbbbbbb##############aaaaaa###bbbbbbbbbbbbbbaabbbbbbbbbbbb.....a#####babbbbbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbaabbbbbbbbbbaaa########........................aaa...aaa##bbbbb.aaa.aaa.........aaaaaaaaaaaaa######bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbb........#######bbbbbbbbbb", -"bbbbbbbbbbb#############aaa#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbb....a#####baaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaabbbbbbbbbbaab#########.................aaa...aaa...aaa##bbbbb....................aaa..aaa.##aa###bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbb........#######bbbbbbbbbb", -"bbbbbbbbbbb#############aaa###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....a######bbabbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabb#########................aaa...aaa..#aaa##bbbb.....................aaa..aaa.##aa##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......########bbbbbbbbbb", -"bbbbbbbbbbbb#################bbbbbbbbbbbbbbbbbbbbbbbaabbbbb....a######bbbbbbbbbbaabaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbb##aaa####..aaa......aaa.aaa.......######bbbbb........................aaa..###aa##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb........#######bbbbbbbbbbb", -"bbbbbbbbbbbbb###############bbbbbbbbbbbbbbbbbbbbbbbaaabbbb.....a#####bbbbbbbbbbaaabaabbbbbbbbbbbbbbbbbbbbbbbbaa.bbbbbbbbbbbbbbbbb#aaa#####.aaaa.....aaa.aaa......#######bbbb.........................aaa.#aa####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaa..#######bbbbbbbbbbb", -"bbbbbbbbbbbbbbb###########bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....a#####bbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbaaa...bbbbaaabbaabbbbbaaa######aaaa.....aaa.aaa....#########bbbb.........................aaa##aa####bbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbb...aaa.a#######bbbbbbbbbbb", -"bbbbbaabbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaa##aabbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaa.bbbbaabbaabbbbbb####aa###aaa.....aaa.......#########bbbbb.......aaa..aaa..........aaa##aaaa#bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbb...aaa.#######bbbbbbbbbbbb", -"bbbbbaaabbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....aaa##aabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb....aaaa..bbbbbbbbbbbbbbb###aaaa####.............###########bbbbb.aaa...aaa..aaa..........#####aaaa#bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbb.......#######bbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbb....aaa##abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....aaaa...bbbbbbbbbbbbbbb##aaaa########....###############bbbbbbbaaa...aaa..aaa.........######aaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.......a#######bbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaaabbb....a#####bbbbbaaabbbbbaabbbbbbbbbbaaaaabbbaaabbbbb......aaa....bbbbbbbbbaabbbb#aaaaaaa###aaa##########aaa###bbaabbbbbaaaaaa...aaaaa.......############bbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa.....a######bbbbbbbaabbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabb.....#####bbbbbaaaabbbbbaaabbbbbbbbbaaaaaabbaaabbbba........aaaaaabbbbbbbaaabbbbb##aaaaa###aaa##########aaa##bbbaabbbbbb.aaaa...aaaaa......############bbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa.....a######bbbaabaaabbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....a#####bbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaabbbbbbbbaa........aaaaaaabbbaaabbbbbbbbb##aaaa###aaa##########aaa#bbbbaabbbbbb#aaaa...aaaaa....#############bbbbbaaabbbbbbbbbbbbbbbbbbbbaabbbbbaabbbaa.....#######bbaaaabbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbb....a#####bbbbbbbbbbbbbbbbbbbbbbbbbbaabaaaaa.bbbbbbaa........aaaaaaabbbbaabbbbbbbbbb########################bbbbbaabbbbbb#aaa.........aaaa#####aaa####bbbbbbbabbbbbbbbbbbbbbbbbbbbbaabbbbbaabbb......a#######bbaaaabbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbb.....#####bbbbbbbbbbbbbbbbbabbbbbbbbbbbbb.aaaabbbbb...................bbbbbbbbbbbbbbbb#aaa###aaa############bbbbbbbbbbbbb##aaa.........aaaa###aaaaa###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbb...aaa.a######bbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaabbbbbbbbb....a#####aabbbbbbbbbbbbbbaaabbbbbbbbbbb..aaaabbbb....................bbbbbbbbbbbbbbbbbaaa###aaa##########bbbbbbbbaabbbbb##aaa###..####aaaa###aaaaa##baabbbbbbbbbbbbbaabbbbbbbbbbbbbbaaaabbbbbb...aaa.a######bbbbbbbbbbbbbb", -"bbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaabbbbbbbb....a####aaaabbbbbbbbbbbbbbbaaabbbbbbbbb...aaaabaab.............aaaaa..bbbbbbbbbbaabbbbbaaa###aaa#########bbbbbbbbbaabbbbb##aaa######aaaaaaa###aaa###bbaabbbbbbbbbbbbbaabbbbbbbbbbbbbbaaaabbbbbaaa.aaaa#######bbbbbbbbbbbbbb", -"bbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbaa....#####aaaabbbbbbabbbbbbbbbaabbbbbbb.......bbbaaa.............aaaaa...bbbbbbbbbaabbbbbaaabb########aaabbbabbbbbbbbbbbbbb###########aaa#aaa########bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaa....a######bbbbbbbbbbbbbbb", -"bbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaaa...a####bbbbbbbbbbaaabbbbbbbbaabbbbbb.......bbbbbaa.............aaaaa...bbbbbbbbbbbbbbbaabbbbbbbbbbbbbaabbaaabbbbbbbbbbbbbb##########aaa#aaa#######bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbaa....a######bbbbbbbbbbbbbbb", -"bbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbaabbbaa..a#####bbbbbbbbbbaaabbbbbbbbaabbbbb.......bbbbbb.......................bbaabbbbbbbbbbbaabbbbbbbbbbbbbaabbaabbbbbbbbbbbbbbb########aaa###aaa##aaabbaabbbbbaabbbbbbbbbbaaabbbbaaaabbbbbbbbbbbbbb.......a######bbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbaabbbbaabb.....#####bbbbbbbbbbbaaabbbbbbbbbbbbbaa.aaa..aaa#aaa........................aaabbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbb#######aaa###aaa##aabbaaabbbbbaabbbbbbabbbaaaabbbaabbbbbbbbbbbbbbbb......a#######bbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....a####bbbbbaabbbbbbbbbbaabaabbbbbaaa.aaa..aaa#aaa........................bbbbbaabbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb######aaa###aaa##aabbaaaabbbbaabbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbb......a######bbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbb....a#####bbbbbaabbbbbbbbbbaabaabbaabaaa.aaa.aaaa#aaab................aaa....bbbbbaabbbbbbbbbbbbbaaaaabbbbbbbaabbbbbbbbbbbbbbbbbbb###############baabbbaaabbbbaabbbbbbabbbbbbbbbbbbbbbbaabbbbbbbbbb......a######bbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbabbb.....a####bbbbbbaabbbbbbbbbbbbbbbbbaaaa.......#####bbbbb#...aaa........aaa....bbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbb############bbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbb.aaa.aa######bbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbb....a####bbbbbbbbbbbbbbbbbbbbbbbbbbaaaa......#####bbbbbb##..aaa........aaa....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbb#######bbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaa.a######bbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbaaabb..aaaa####bbbbbbbbbbbbbbbbbbbbbbbaaa.aaa.....aaaa##bbaaaa####aaa........aaa....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbb..aaa.a######bbbbbbbbbbbbbbbbb", -"bbbbbbbbbbabbbbbbbbbbbaabbbbbbbbbbbbbbbbaabbb..aaaa###bbbbbbbbbbbbbaabbbbbbbbaaaa.......aaaaaa#bbbaaaa#####..................bbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbabbbbbabaaabbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbaaabbb......a######bbbbbbbbbbbabbbbb", -"bbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaaa##bbbbbbbbbbbbbaaaabbbbbbbaaaa.......aaaaaabbbbbbaa#####..................bbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaaabbbaaaaaabbbbbbbbbaaaabbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb......aa#####bbbbbbbbbbbaaabbbb", -"bbbbbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbbbbaaa...aaa##bbbbbbbbbbaabbbaaabbbbbbbaa.........aaa###bbbbb#########aaa..............bbbbbbabbbbbbbbbaabbbbbbbbbbbbbbbbbbbaaabbbbbbaabbbbbbbbbbabbbbbabbabbbbbbbbbbbaaabbbaaabbbbbbbbaabbbbbbaaabbbbbbbb......a#aaa##baabbbbbbbbbabbbbb", -"bbbbbbbbbbbbbbbbabbbbbbbbbbbaabbbbbbabbbbaaa....####bbbbbbbbbbaabbbbbbbbbbbbaaa........######bbbbb##########aaaaaa......aaa..bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbaabbbbbbaaabbbbbbbb......a#aaa##baabbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbaabbbbbaa...####bbbbbbbbbbbbbbbbbbbbbbb.aaaa.......#######bbbbbbb########aaaaaa......aaa..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......aa#aaa##bbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbbaabbbbaabbbb......####baabbbbbbaaabbbbbbbbbb..aaa.......#######bbbaabbbb#######aaaaaa......aaaa.bbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbaabbbbbbbbbbabbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaabbbb......aa#####bbbbbbbaabbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbb.....##aabaaabbbbbbaaabbbbbbbbb............#######bbbbaabbbbbb###aaaaaa.........aaa.bbbbbbbaaaabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbaabbbabbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbaaabbbb......a######bbbbbbaaabbbbabbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......##aaabbbbbbbbbaaabbbbbbb............#########bbbbbbbbbbbbb##aaaaaa.........aaa.bbbbbbbaaaabbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbb......aa#####bbbbbbbbbbbbbaaabbbb", -"bbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbbbbbb......##aabbbbbbbbbbbabbbaab........aaa..######aaabbbbbbbbbbbbbbb#aaa###.........aaa.bbbbbbbaaabbbbbabbbbaabbbbbbaabbbbbbbbbbbaabbbbbbaaabbbbaabbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbaaaabaabbbbbbbaabbbb.....aaa#####bbbbbbbbbbbbbbabbbbb", -"bbbbbbbaabbbbbbbbbbabbbbbaabbbbbbbbbabb........#bbbbbbbaaabbbbbbaaa.........aaa.#######aabbbbbbbbbbbbbbbbb#####aaa.......aaa.bbbbbbbbbbbbbbbbaabbaaabbbbbaabbbbbbbbbbbaabbbbbbaaabbbbaabbaaaabbbbbbbbbbbbbaabbbaaabbbabbbbaaaabaabbbbbbbbbbbbb.....aaa#####bbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbaabb........#bbbbbbaaaabbbbbaaaa..........aa########abbbbbbbbbbbbbbbbbbb####aaa.......aaa.bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaabbbbbbbbbbbbbaabbaaabbbaaabbbbbbbbbbbbbbbbbbbbbb......aaa####bbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbaabbbbaabbbbaaabaabb........#bbbbaaaaaabaabbaaa...aaa......#########aabbbbbbbbbbaabbbbbb####aaa......aaa..bbbbaabbbbbbbbbbaabbbbbbbbbbbbbaabbbbbbbbaaaabbbbbaabbbbbbbaaaaabbbbaaaabbbbbaabbaaabbbbabaabbbbaabbbbbbbbbbbbaa.....aaa#####bbbbbbaabbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaaabbbb...aaa.....baaaaabbbbaab.......aaa.....#####aaaaaaaabbbbbbbbbaabbbbbbaa####.......aaa..bbbbaabbbbbbbaaaaabbbbbbbbbbbbbaabbbbbbbbaaaabbbbbaabbbbbbaaaabbbbbbaaaabbbbbbbbbaaabbbbbbaaabbbaabbbbbbbbbbbbaa.....aa######bbbbbbaabbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbb...aaa......aaaabbbb.aa........aaa....######aaaaaaaabbbbbbbbbbbbbbbbaaa####.......aa...bbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba.....aa#####bbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbb..aaaaa......aaaa......aaa.....aa.....####aaaaaaabbabbbbbbbbbbbbbbbbbbab####....aaa....bbaaaabbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbaaaabbbbbbbb.....aaa#####bbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbb..aaaaa................aaa.....aa....#####aaabbbbbbbbbbbbbbbbbbbbbbbbbbbb###....aaa....bbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbbaabbbabbbbaaaabbbbbbbb.....aaa####bbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaabb........................aaa.........#######aaabbbbbbbbbbbbbbbbbbbbbbbbbbbb####..........bbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbaabbaaabbbaaabbbbbbbbb....aaa#####bbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbaabbbbbbbbbbaabbbabbbbbabb...............aaa......aaa..aa....####a.a#aaabbbbbbbbbbbbbbbbbbbbaabbbaaaa###..........bbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbaabbbbbbbbbbbbaabbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbaabbbabbbbbabbbbbbbbb.....aaa#####bbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbaaabbbbbbabbbaabbbbbbbbbbb............aaa.aaa......aaa..aaaa.###aaaaa#bbbabbbbbbbbbbbbbbbaaabaabbbaaaaa##..........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaabbbbbabbbbbbaababbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbb.aaa.aaa###aabbbbbbbbbbbbbbabbabbbbb", -"bbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbb..........aaaaa....aaa...aaa...aaa###aaaa#bbbbaaabbbbbbbbbbbbbbaaabbbbbbbbaaa##..........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbaabbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbb.aaa.aaa###aaabbbbbbbbbbbbaaaaaabbbb", -"baabbbbbbabbbbbbbbabbbbbbbaabbbbbbb..........aaaaa....aaa...aaa...aaa###aaaabbbbbbabbbbaaaabbbbbbbaaabbbbbbbbbab##..........bbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbaabbbbbbbbbbabbbbbbbbbabbbbbbbbabbbbaaabbaabbbbbbbaaaabbaabbbbbaabbbabbaab.aaaaaa####aabbbbbbbbbbbbbbabbabbbbb", -"baabbbbbbbbbbbbbbbbbbbbbbbaabbabbb..aaa......aaa......aaa.........####aaaaabbbbbbbabbbbaaaabbbbbbbaaabbbbbbbbbbb##..........bbbbbbbbbbbbbbbbbaabbbbaabbbbaabbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbb#bbbbbbbaaabbaabbbbbbbaaaabbbbbbbbbaabbbbbbaaaaaaaaaa###aabbbbaabbbbbbbbbbbbbbbbaa", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbb..aaa..aaa....................######aaa#bbbbbbbaaabbbbbaabbbbbbbbaabbbbbbbbbbbba......aaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbbbbbbb###bbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaa#aaaabbbbaabbbbbbbbbbbbbbbbaa", -"bbbbaabbbbbbbbbbbbbaabbaabbbbbabbb..aaa..aaa...................#######aaabbbbbbbbaaaabbbbabbbbbbbbbbabbbbbbbbbbaaa......aaa#bbbbbbaaabbbbbbbbaabbbbbbbbbbabbbbbaabbbbbbbbbbbbbabbbbbbbbbbb###bbbbaabbbabbbbbbbbbbaaabbbbbbbbbaabbbbbbbbbbbaaaaaaaa#aaaabbbbaabbbbbbbbbbbbbbbbaa", -"bbbbaabbbbbbbbbbbbbaabbaabbbbbbbbb.......aaa.aaa..............##########bbbbbbbbbaaaabaabbbbbbbbbbbbbbbbbbbbbbbaaa......aaa#bbbbbbaaababbbbbbaabbbbaabbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbb###bbbbaaabbbbbbbbbbbbbaaabbbbbbbbbaabbbbbbaabbb....aaa##aaabbbbbaabbbbbbbbbbbbbbbbbb", -"bbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaaaaaaa.aaa.....aaa.aaaaaaa######bbbbbbbbbbbaaaabaabbbbbbbbbbbbbbbbbbbbbbbbb#......aaa#bbbbbbaaaaaabbbbbbbbbbbaabbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbaa##bbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb...aaaaa#####bbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbaabbbbbbbbbbbbbbaabbbbbbbbbbbb..aaaaaaaa.aaa.....aaa.aaaaaaaa####bbaabbbbbbbbbaabbabbaabbbbbbbbbbbbbbaabbbbbb#......aaa#bbbbbbbabbabbbbbbbbbbbbabbbbbbaabbabbbbbbbbbbbbbbbbbbbbbbbbaaaa##bbbbaaabbbbbbbbbbaaabbbbbbaaabbbbbbbbbbbabbb...aaaa######bbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbabbbbbbbaabbbbbbbbbbbbb.aaaaaa...aaaaaa..aaa.aaaaaaaaaa#bbbaabbbbbbaaabbbbbbbaaabbbaabbaabbbbaabbbbbb#........##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbabbbbaabbbbbbbaabbbbbbbbbaaaa##bbb...bbbbbbabbbbaaabbbbbbaabbbbbbbbbbbbbbbaa..aaaa#####aaabbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbb#aaaaaa......aaa...aaa###aaa##aabbbbbbbbbbbaaaabbbbbbbbaaabbaabbaabbbbbbbbbbbb#........#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbbbaabbbbbbbbbb#####bbb...bbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa..aaaaaa###aaaabbbbbbbbbbbbbbbbbbbbbb", -"aaabbbbbbbbbabaaabbbbbbbbbaabbbbbbb#aaaaaa......aaa..#aaa###aaa##aabaaaabbbbbbbaabbbbbbbbbbabbbabbbbabbbbbbbbbbbb#.......##bbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbabbbbaaabbbbbbbabbbbbbbbb######bb....bbaaabaaabbbbaaaabbbaaabbbbbbbbbbbbbbaa..aaaaaa###aaabbbbbbbbbaabbbbbbbbbbbb", -"aaabaabbbbbbbbaaabbbbbbbbbaabbbbbbb#aaaaa.........####aaaaaa####bbbbaaaabbbbbbbabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbb#......###bbbbbbbbbbbbbbbbbbbbabbbaabbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbaa####bb...aabaaabbaabaaaaaabbbbaabbbaabbbbbaabb...aaaaaaaaaaaaabbbabbbbbbaabbbbbbbaabbb", -"bbbbaabbbbbbbbaaabbbbbbbbbbbbbbbbbbaaaa..aaa...aaa###aaaaaaa###bbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaa...aaa##bbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaa###bba..aaaabbbbbbbbaaaabbbbbbbbbbbaabbbbbaaab...aaaaa###aaabbbbaaabbbbbbbbbbbbbbaabbb", -"bbbbbaaabbbbbbbabbbbbbbbbbbbbbbbbbaaaaa##aaa###aaa###aaaaaaa##bbbbbbbbabbbbbbbbabbbbbbbbbbaabbbbbbaabbaabbbbaabbbaa...aaa#baabbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbaaa###aaa..aaabbbbbbbbbbaabbbbbbaabbbbabbbbbbbabb...aaaa####aabbbbbbabbaabbbbbbbbbbbbbbbb", -"bbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbbaa#####aaaaaaaaa###aaaaaa#aabbbbbbbbbbbbbbabbbbbabbbaabbaabaaaabaaabaabbbbaabbbaa...aaa#baabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaabbbbbbb#######baa..aabbbbbbbaaabbbbbbbbaaabbbbbbbaabbbbbaaa...aaa###aaaabbbbbaaaabbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbb#########aaa#######aaaaaaaaabbbbbbbbbbbbaaabbbaaabbaabbbbbaaaabaaabbbbbbbbbbbb#.....###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbaabbbbbbb####aabba....bbbbbbbbaaaabbbbbbaaaabbbbbbbaabbbbbaaa...aaa###aaaabbbbbaaaabbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbaabbbabbbbb########aaa#######aaaaaaaabbbaabbbbbbbbbabbbbbaaaaabbbbbbbaabbaaabbbbbbbbbbbb#....####bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaabbbbbbaaaaabbbbbbabaabbb#####aaaaa....bbbaaabbbaaaabbbbbbaabbbbbbbbaabbbbaaaa...aaa###aaabbbbbbbaabbbbbbbbbbbbaabbb", -"abbbbbbaabbbabbbbbbbbbbbbaabbbbbbbbbb###########aaaaaaabbbaaabbbbaabbbbbbbbbbbbabbbaaabbbaabbbbbbbbbbbbbbbbbbbbbb#....###bbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbaaabbbbbaaaaaabbbbbbaaabbb#####aaaaaaaaaabbbaabbbaaaabbbbaaabbabbbbbbaaaaabaaaa...aaaaaaaabaaaabaabbbbbbbbbbbbbbaabaa", -"aabbbbbaabbaaabbbbbbbbbbbbbbbbbbbbbbbb######aaa#aaaaaaabbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbaaabbbbbbbbbbbbbbbbbbbbbb#...####bbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbaaabbbbbbbbbaabbbbbbaaabb######aaaaaaaaaabbbbbbbbaaaabbbbaaaaaaabbbbbaaaaab......a#aaaaaabbaaaaaaabbbbbbbbbbbbbbaabaa", -"aaabbbbbbbbbabbbbbbbbbbaabbbbbbbbbbbbbb#####aaa#aaaaaaabbbbbbbbbbbbbaabbbbaaaababaaabbbaaabbbbbbaabbbbbbbbbaabbbb##..####bbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaaabbbbbaabbabbbbbbaaab#######a.aaaaaaabbbbbbbbbbaabbbbbbaabbabbbbaaaaaabb......a#aaaaaabbbaaaaabbbaabbaaabbaabbbbbb", -"baaabbbbbbbbbbaabbbbbbbaaaabbbbbbbbbbbaab###aaaabbaabaabbbbaabaabbbbaabbbbaaabbbaaabaaaaabbbaabbaabbbbbbaabaaabbb#######bbabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbaabbbaabbbbbbbb######aaaaaa.aaabbbbbbbbbbbaabaaabbbbbabbbbaabbbbbbaaaa..a####aaabbbbbaaaabbaabbbaabbaabbbbbb", -"bbaaabbbbbbbbbaaabbbbbbbbaabbbbbbbbbbbaabbbbbaaabbbbbbbbbbbaabaabbbbaabbbbaabbbbaabbaaaabbbbaabbbbbbbbbaaabbaabbb######bbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbba#####aaaaaaa..bbbbbbbbbbbbbaabaaaabbbaaabbbbbbbbbbaaaaa.aaa#####bbbbbbaaaabbbbbbbbbbbbbbbbbbb", -"bbbabbbbbbbbbbaaabbbaaaabbbbbbbbbbaabbbbbbbaaaaabbaabbbbbaaabbaaaabbbbbbaaabbbbbbbbbaaaabbbbbbbbbbbbbbaaabbbbbbbb######baaabbbbbbaabbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaaa#####aaaaaaa.bbbbbbbbbbbbaaaabaaabbbaaaabbbbbbbbbbaaaaa.a.a#####bbbbbbbaabbbbbbbbbbbbbbbaabbb", -"bbbbbbbaabbbbbaabbbbaaaabbbbbbbaabaabbbbbbaaabaabbaabbbbbbaabbaaaabbbbbaaabbbbaabbbbaaaaabbbbbbbbbbbbbaabbbbbbbbb#####bbaabbbbbbbaabbbabbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabaaa#aaaaaaaa....bbbbbbbbbbbbbaaaaaabbbbaaabbbbaaaaabb..aaa.aaa#####bbbbbbaabbbbbbbbbbbbbbbbaabaa", -"bbbbbbbaabbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbaaabbbbbbbbbbbbbbbbbaabbbbbbbaabbbbbaaabbbaaaaaabbbbbbbbbbbbbbbbbbbbbbb#####bbaabbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb##aaaaaa.aaaaabbbbbbbbbbbbbbbbaaaabbbbbbbbbbbaaaaaabaa....aaaaaaabbbbbbbaaabbbbbbbbbbbbbbbbbbaa", -"aabbaaaabbbbbbbbbbbbbbbbbbbbbbbbaabbbaaaaabbbbbbbbbaaaaaaabbbbbbbbbbbaaaabbbbbbabbbbaaaaaabbbbbbbbbbbbbbbaabbbbbb#####bbbbbbbbbbbbbbbbabbbbbbbbbaabbbbbbbbbbbbbaaabbbbbbbbbbbbb###aaaaaa.aaaabbbbbbbbbbbbbaaaabaabbaaaaaaabbbbaaabbaaa...aaaaaaaabbbbbbbaaaabbbaaabbaabbbbbbbba", -"abbbaaabbbbaabbbbbbbbbbbbbbbaabbaaaabaaaaabbbbbbbbbbaaaaaabbbbbbbbbbbbaaabaabbbbbaaaaaaaabbbbbbbaaaabbbbbaabbbbbb#####bbbbbbbbaaabbbaabbbabbbbbbaabbbbbbbbbbbbbaaabbbbbbaabbaab#aaaaaaaa.aaaabaabbbaaabbbbaaaabbbbbaaaaaaaabbbbbbbbaaaaaaaaaaaaaabbbaabbaaaaabaaaabbaabbbbbbabb", -"bbbbaabbbbbaaabbbbbbbbbbbbbbaabbaaaabbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaaaaaabbbbbbbbbaaaabbbbbbbbbbbbbaa##bbbbbbbbbaaaabbaabbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaaaaaaaaaaaa...bbaabbaaaabbbbaaaabbbbbbaaabbaabbbbbbbb.aaaaaaaaa###bbbaaabbbbbaabaaaabbbbbbbbbaaab", -"bbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaaabbbbbbaaabbbaaabbbaaaaaabaaaaabbbbbbbbbbaabbbbbbaabbbbbaaa#baabbbbbbbbaabbbaabbaaabbbbbbbbbbbaaaabbbbbbbbbbbbbbaaaaaaaaaaaaaaaaa...bbbbbbbbabbbaaaaabbbbbbbbbbbbbbbbbbbbbb.aaaaaaaaa###bbaaabbbbaaabbbaabaaabbbbbbaaab", -"bbbbbbbbbbbbbbbbbaabaaaabbaabbbbbbbaabbbaabbbbbbbbbbbbbaabbbbbbaaaabbaaabaaaaaaabbbaaabbbaaabaabbbbbbbbbbaabbbbbbaabbaabbbbbbbaabbbbaabbbabbbbbbbbbbbbaaaabbaabbbbaaabbbaaaaaaaa###aa.aaaaabbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbb..aaaaaaaa####bbaabbbbbaaabbbbbbaaabbbbabbabb", -"bbbbbbbbbbbbbbbbbaaabbaabbaabbbbbbbaabbaaabbbbbbbbbbbbbbbbbbbbbaaaabbaaaaaaaaabbbbbbbbbbbaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaaaabbaabbbbaaaabbaaaaaaaa##aaaaaaaabbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbb....aaaaaaa##bbbaabbbbbaaabbbbbbaaabbbaaabbbb", -"bbbbaabbbbbbbbbbbbbbbbaaabbbbbbbbbbaabbaaaabbaaaabbbbaabbaaabbbbbbbbbbbaaaaaaabbbaaaabbbbaaaaaaabbbbbaabbaabbbbbbbbaaabbaabbaaaaaabbbbbaabbbbbbbbbbaabaaaabbaabbbbbaaabbbaaa#aaa##aaaaaaaabbbbaabbbbbbbaabaabbbbbaaaaaaabbaaabbbbb....aaaaaaa##bbbbbbbbbbbbbbbbbbaaaabbbbbbbbaa", -"bbbbaabbbbbaabbbbbbbbbaaaaabbaaaabbaabbaaaabaaaaabbbbaaaabaabbbbbbbbaabaaaaaabbbbaaaabbbbaabaaaabbaabaabbaabbbbbbbbaaaabaabbbaabaaabbbbaabbbbbbbbbbaabaaabbbaaabbbbaabaabaaaaaaa#aaaaaaaabbbbaaabbbbbbbaabaaabbbbaaaaaaabbaaaabbbb......a#aaa##bbbbbbbbaaabbbbbbbaaaabbbbbbbbaa", -"bbbbbbbbbbbaaabbbbbbbbbaaaabbaaaabbaabbbaaabaaabbbbbbaaaabbbbbbbbbbaaabbbbbbbbbbbaaaabbbbbbbaaaabbaabbbbbbbbbbbbaabaaaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbaaabbbbbbaaaaaaa###aaaaaaaa.bbbaaaabbaabbbbbbbaaabbbaaaabaabbbbaabbb..aaa..a#aaa##bbbbbbbbaaabbbbbbbaaaabbbbbbbbaa", -"baabbbbbbbbbaaabbaaabbbbbbbbbbbbbbaaabbbbbbbaaaabbbbbaaabbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbaabbaaabbbbbbbbaabbbbbaaaabbbbbbbbbbbbbbbbbbbbbaaaaaabbbbbbbbbbbbbbbbbbbbbbbbaaaaaaa###aaaaaaaabbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaa..a#aaa##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"baaabbbbbbaabaabbaabaaaabbbbbbbbbbaaaaabbaabaaaaaaabaaabaabbbbbbbaaaaabbaabbbbbbbbbbbbbaaaabbaabbbbbbbbbaaabbbbaaaaaaabbbbbaaaabbbbbbbbbbabbabbbbbbaabbaaaabbbbaabbbbbaaaaaaaaaaaaaaa...bbaabbbbbaaaaabaaabbbbbbaabaaaaabbbbbbbbb..aaaaaa######bbbbbbbbbbbbbbbaabbbaabbbbbbbbbb", -"bbaaabbbbbaabbbbbbbbaaaabbbbbbbbbbbaaaabbaabbbbaaaaaaabbaabbbbbbbaaaaabbaaaaabbbbaaabbbaaabbbbbbabbbaabbbaabbbbbbbaaaabbbbbaaaabbbbbbbbbbbbaaaaabbbaaabaaaabbbbaabbbbbbbaaaaaaaaaaaaa..bbaaabbbbabaaaabaaaabbbbbaabaaaaaaabbbbbbbaa...aaa#####bbbbbbbbbbbbbbbbaabbaaabbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbaaabbbaabbbbbbbbbbbaaabbbaaaaaabbaaaaabbbbbbbbbbaaabaaaabaabbbbbbbbaaabbbbbbaaaabbbbbbbbaabaaaaaaabbaaaabbbbbbbbbbbbbbbbbbaaaaaaaaaaaa..bbbbaabbaaabbbbbbbbbbbbbbaabaaaaaaaabbbbbaaa...aaa#####bbbaabaabbbbbbbbaabbaaabbaabbbbbb", -"baabbbbbbbbbbbbbbbbbbbaaabbbbbbbbbaaabbbbbbbbbbaabbbaaabbbaabaabbbaaabbbbaaaabbbaaaaabaabaabbaaaaabaaaabaabaabbaabaaaabaaabaaa.bbbbbbbbaaaaaaaaabbbaaaabbbbbaabbbbbbbbaaaaaa##aa..aaa.bbaabaabbaaabbbbbbbbaabbaaaabaaabaaaabbbbaaaaaaa.a#aaaaabbbaaaaaabbbbaaaaabbbaabbaabbbbbb", -"baabbbbbbabbabbbbbbbbbaaaabbbbbbbbaabbbbaabbbbbbbbbaaaabbaaaaaabbbaaababbbaabbbaaaaabbaaaaabbaaaabbbaaabbbaaabbaabbaaaaaaabbb.bbbbbbbbabaaaaaaaabbbbaaabbbbbaabbbbbbbbaaaa###aaa..aaaabbaaabbbbaaaaabbbbbaaabbaaabbaabbaaaabbbbaaaaaaa.##aaaaaabbaaaaaabbbbaaaabbbbbbbbbbbbbbbb", -"bbbbbbbbaaaaaabbbbbbbbaaaabbbbbbbbbbbbbbaaabbbbbbbbbbbbbaaaabbbbbbbbbaaabbbbbbaaaabbbbaaaabbbbbbbbbaaaaabaaaabbaabbaaaaaaabb..bbbaabbaaabbaaaaaaabbbbbbbbbbbbbbbbbbbbbaaaa###aa...aaaabbaaaabbbbbaaaabbbaaaabbaaabbbbbbbbbbbbbbbaaaaaaa##aaaaaaabbbaaabbbbbaaaabbbbbbbbbbbaabbb", -"bbbbbbbbbaaaabbbbbbbbbaaaabbbbbaaabbbaaaaaabbbaabbbbbbbaaaabbbbbbbbbbbabbbbbbbbaaabbbbaaaaaaaabbbbbaaaaaaaaaabbaabbbaaabaab...bbbaabaaabaaaaaaaaaaabbbbbbbbbbbbbbbbbbaaaaa##aaaa..aaaabbaaaabbaaaaaaabbbbaaabbbabbbbbbbbbaabaabb......a#####aaaabbbbaabbaabaaaabbbbbbbaabbaabbb", -"bbbbbbbbbbaabbaabbbbbaaaabbbabbaaabbbaabaaabbaaabbbbabaaabbbbbbbabbbbbbbbbbbbbbbbbaabbbaaaaaaabaaabaaaaaaabbbbbbbbbbbbbbbbb...bbbbbbaabbaaaaaaabaaaabbbbbbbbbbbbbbbbaaaaa###aaaa..aaaabbbbbbbbaaaaaaaaabbbbbbbbbbbbbbbbbaaabaab....aaaa###aaaabbabbbbbbbaabbbbbbbbbbbaaabbaabbb", -"bbbbbbbbbbbbbaaaabbbaaaabbbbaabbbbbbbbbbbbbbaaabbbbaaabbbbbbbbbaaabbbbbbbbbbbbbbbaaaabbaaabbbbbaaabbbbbbbbbbbbbaabbbbbbbbb....bbbbbbbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbaaaaaa##aaaaa..aaaabbbbbbbbaabbbbaaaabbbbbbbbbbbbbbbaaaabbbb....aaa####aaaabaabbbbbbbaabbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbaaabbbbaaaabbbbaabaaabbbbbbaabbaaaabbbbabbbaaaabbbbabbbbaaaaaaabbbbbbaaabbaaaabaaaaaabbbaaabbbbbbaaabaaaaaaaaaa.bbbbbbbbbbaabbbbbbbaaaaabbbbaaabbbbbbbaaaa####aaaaa..aaaabaabbbbbaabbbbaaabaaaaaabbbbbbbbbbaaabbbb....aaaa###aaaabaabbbbbbbaabbbbbbbbbbbbbbbbbbaab", -"bbbbbbabbabbbbbabbbbbbabbbbbbbbaaabbbbbaaaabaaaabbbbbbbbaaaababbbbbbbaaaaaaabbbaabbbbbbbbaabaaaababbbaaabbabbbaaabaaaaaaaaaa.b#bbbbbbbaaabbbbbbbbbaaa#bbbaaabbbbbbb#aaa###aaaaaa..aaaabaabbbbbbbbbbbbbbbaaaaaabbbbabbbbbbbbbbbb..aaaaa.aa###aaaaabbbbbbbbbabbbbbbbbbbbabbbbaaab", -"bbbbbaaaaaabbbaaabbbbbaabbbbbbbbbbbbbbbaaaabaaaabbaabbbbbbbbaaabbbbbbbbbbbbbbbaaaabbbbbbbaabbaaaaabbbaabbaabbbbaabbaaaaaaaaa.#bbbbbbbaaabbaabbbbbaaa###bbbbbbbbbbbb#aaa###aaaaaa..bbbbbbbbbaabbbbbbbbbbbaaaaaaabbaaabbaabbbbaab..aaaaaaaa###aaaabbbbbbbbbaaabbbbbbbbbaaabbbaaaa", -"bbbbbbabaaabbbaaabbbbbaabbbbbbbbbbbbbbbbaaabaaaabaaaaabbaabbbabbbbbbbbbbbbaabbaaaabbbbbbbaaaaaaaaaaabaabbaaaabbaabbbaaaa.aaaaabbbbbbbbabbbaabbbbbbaaa##aabbbbbbbbb##aaaaaaaaa.....bbbbbbbbbaabaabbbbbbbbbaaaaaaaaaaaabaabbbbaaaa.aaaaaaaa###aaaabbbbbbbbaaaabbbbbbbbbaaaaaabaaa", -"bbbbbbbbaaabbbaaabbbbaaabbbbbbbbbbabbbbbbaaabbbbaaaaaabbaaabbbbbbbbbbbbbbbaaabaaaabbbbbbbbaaaaaaaaaabbbbbaaaababbbbbaaaa...aaabbbbbbbbbbbbbbbbbbabbaaaaaaabbbbbbb###aaaaaaaaa..aaabbabbbbbbbbbaabbbbbbbbbbbbaaaaaaaaabbbbbbbbaaa.aaaaaa#####aabbabbbbbbbaaaabbbbbbbbbaaaaaabbaa", -"bbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbaabbbbbbaaabbaabbaaabbaaaabbbbbbbbbbbbbbbaaabbbbbbbbbbbbaaaaaaaaabbbbbbaaabaaabbbaaaaa...aaabbbbbbbbbbbbbbbbbbaaaaaaaaabbbbbbb####aaaaaaaaa..aaaaaaabbbbbbbbaabbbbbbbbbbbaaabbbbbbbbbbbbbbbbaa.aaaaaa#####bbbaabbbbbbbaabbbbbbbbbbbbbaabaabbb", -"aabbbbbbbbaabaabbbbbbabbbbbbbbbbbbaabaabbbbaabaaabaaaabbaaaabaaabbbbbbbbbbbaaabbaabbbbbbbbaaaaaaaabbbbbbbaabbbaabbbbaa......##bbbaabbbbbbbbbbbbbaa##aaa##baabb##aaa###aaa....aaaaaaaaabbbbbbbbaaaaabbbbbbbbbaaabaaabbbbbbbbbbb......a#######bbbaabbbaabaaabaabbbaabbbbbaabaabba", -"aabbbbbbbbaabaabbbbbbbbbbabbbbbbbbbbbaabbbbabaaaabaaaaabaaaaaaaabbaaaaabbbaaaabbaababbbbbbbbaaabbbabbbbabbabbbbbbbbb........aabbbaabbbabbbbbbbbb##aaa####.aaa###a.a###aaaaaaaaaabbbbaaabbbbbbbbaaaabbbbbbbbabaabaaaabbbbaaaabb..aaaaaaa####bbbbbbabbaabaaabaabbaaaabbbbbbbbbbba", -"bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbaaaaaaabbbbaabbbbbbbaabaaaaaaabbaaaabbbbbaabbbbbbbaabbbbaabbaabaabbbbbbbbb........aaabbbbbbaaabbbbbbb###aaa###..aaa.##aaa###aaaaaaaaabbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaaaaab..aaaaaaa####bbbbbbaabbbbbbbbbbbbbbaabbbbbbbbbbbb", -"bbbbaabaabbbbbbbbbbbaaaabaabbbbbbbbbbbaabbbabbaaabbbbaabbbbbbbaabaaaaaaabbaaaaabbbbaabbbbbbbaaaaaaaabbaaaaabbbbaabb.........aabbbbbbbbabbbbbbbb###aaa##aaa....########a..aaaa..bbaabbaabbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbaaaaaa..aaaaaaa###aaaabbbaabbaaaabbbbaabbaabaabbbbbbbbb", -"bbbbaabaabbbbbbbabbbaaaabaaabbbaaabbbbaabbbbbabbbbbbaaabbaabbbbbbbbbaaaabbbaaaababbbbbbbbaaaaaaaaabbbbaaaabbbbbaab.........##bbbbbbbbbbbbbbbbb#########aaa....###aaa#.........bbbaabbaabbbbbbbaaabbbbbbbbabbbbbbbbbbbbbbbbaaaaaa....a#####aaaabbbbbbbaaaabbbbaaabbbbaabbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbaaaabbaaabbbbbbbbbbaabbbbbaaabbaaaabbbbbbbbbbbbbbbbbbbbaabbbbbbbaaaabbbbbbbbbbbbbbbbbbbbb.........##bbbbbbbbbbbbbbbbb########.aaa.....##aaa.........bbbbbbbbbbbbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbaaa...a######aaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbb", -"bbbbbbbbbbbaabbbaabbbbbbbaaabbbaaabbbbbbbbbbaabbbbbbabbbaaabbbbbbbbbbbbbaaaabbbbaabbbbbbbaaaabbbbbaaabbbbaabaabbb.......aaa##bbbbbbbbbbbbbbbb########...........aaaa...aaa...bbbbbbbaabbbbbbbbbbabbbbbbbbabbbbbbbbbbbbbbbbbbbaaaa..aaaa###aaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbb", -"bbbbbbbbbbbaaabbbbbbbbbbbaababbbbbbbbabbbbabaabbbbbbbbbbaabbbabbbaabbbbbaaaaabbbbbbbbbabbbaabbabbbaaaabbaaabaaab........aaa#bbbbbbbbbbabbbbbb########...........aaaa...aaa..bbbbabbbaabbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbab.aaa..aaaaaa#bbbbbbbaaaaaaabbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbaabbbbbbbbbbbbbaabbbbbbbaabbaabaabbbbbbbbbbbbbbaaabbaabbbbbaaaaaabbbbbbbbaabbbbbaaabbbaaaabaaabbaaa........aaa#bbbbbbbbbaaabbbb########............aaaa...aaa.bbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbaaa.aaa..aaaaaa#bbbbbbbaaaaaaaabbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbaaabbbaabbbbbbbaabbbbbbbabbbaabaaaabbbbbbbaabbbbabbbaabbaaabaaaaaabbbbbbbaabbbbbaaabbbbaaabaaabbbaa........#aaabbbaaabbbbabbbb#########.......................bbbaaaaabbbbbbbaabbaabbaaabbbbbaaaabbbbbbbbbbbbbaa.aaa..aaaaaaabaabbbbaaaaaaaaabbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbaabbbbbaabbbaaaabbbbbbbbabbbbbbbabbbbaaaabbbbbbaaababbbbbbbbbbaaaaaaaaaabbbbbbbbbbbbbbaabbbbbbbbabbabbb.........##a.abbbaaabbbbbbbbb########.......................bbbbaaaaabbbbaaaaabbaabbaaabbbbbaaaabbbbbbbbbbaaab.aaaa..aaaaaaabaabbbbbaaaabaaabbbbbbbbbbbbbbbbbbaaa", -"bbbbbbbaabbbbbbbbbbbaaaabbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbaaabbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaabaabb..........##aabbbbbbbbbbbbbbb#########......................bbbbbbbaaabbbaaaabbbbaabbbbbbbbbbaabbbbbbbbbbbaaaab.aaaa..aaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaa", -"bbbbbbbaabbbbbbbbbbbbaaabbbbbbbabbbbbbaaaaabbbbbbbbbbbbbbbaaabbbbaabbaaaaaaabbbbaabbbbaabbbbaaabbbbbbbbabaabb.....aaa.#####bbbbbbbbbaaaab#####aaa#......................bbbbbbbbbabbbbbaaabbbbaabbbbbaaabbaabbbbaabbbbbaaaab.aaaa.a######aabaaaabbbbbaabbbbbbbbbbaabbbbbbbbbaaa", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbbaaaaaabbbbbbbbbbbbbaabaabaabaaaaaaaabbbbaabbbaaabbbbaaabbbbbbbbbbbbb......aaa#####bbbbbbbbbbaaaab#####a.a.aaa........aaa.aaa....bbbbbbabbbbbbbbbbbbbbbaabbbbbaaaabbbbbbbaabbbbbaaaab..aaa.aaaa#aa.aaaaaabbbbbaabbbbaaabbbaabbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbbbbbaaaabbbbbbbbbbbbbbbbaabbbbaaaabbbbbbbbaabbaaabbbbbbbbbbbbbbbbbbbb.......aaa####bbbbbbbbbbbbbbb#########.aaa........aaa.aaa...bbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbb.......aaaa#aaaaabbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbabbbbbbbaaaabbbbbbbbbbbbbbbbaabbaaaaabbbbbbbaaaabbbabbbaabbbbbbbbbbbbbbbb.......aaa####bbbbbbbbbbbbbbb####aaa#..aaa........aaa.aaa...bbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaabbbbaaa....aaaaaaaaabbbbaaaabbbbbbbbaaabbbbbbbbbbbbbbbbb", -"abbbbbbbbabbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbaabbbbbbbbbbabbbaabbbbaaaaaaaabbbbbaaabbbbbbbbaabbbbbbbbbbabbbb.........#####bbbbbbbbbbbbbbb#aaa#aaa..............aaa.aaa..bbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbaaabbbbaaa....aaaaa###bbbbbaaaababbbbbbbbabbbaaabbbbbabbbbb", -"aabbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaabbbbaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaa....aa.#####bbbbbbbbbbbbbbbb#aaa####.....aaa..........aaa..bbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbb.......a#######bbbbbbbbbaaabbbbbbaaabbaaaabbbaaabbbb", -"abaaaabbbabbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbabbbaabbbbaaabaaaabbbbbbbbbbbaabbbbbbaabbbbbbbaaaaaaa...aaa#####bbbbbbbaabbbbbb##aaa###......aaa..........aaa.bbbbbbbbabbbbbbbbbbaabbbbbbbbbbbaaabbbbbbbabbbbbbbbbbb.......a######bbaabbbbbbbabbbbbbbbabbbaaabbbbbabbbbb", -"bbaaaabbbbbbbbbbbbabbaaabbbabbbbbbaababbaabbbbbaabbbbbbabbbbbbbbbbbbbaaababbbbbbaabbaabbabbbaabbbbbbbbaaaaaa...aaaa###bbbbbbbbaaabbbbb#######.......aaa...aaa........bbabbbbbbbbbbbbbbbbaabbbbbbbbbbbaaabbbbbbbbbbbaaabbbbb......baa#####bbaabbbbbbbbbbbaabbbbbbbbbbbbbbbbaabaa", -"bbbbbbbbbbbbbbbbbaaaaaaabbaaabbbbbbbaaabbbbbbbbaabbbbbaaabbbbbbbbbbbbaaaaaabbbbbaabbbbbaaabbbbbbbbbbbbbaa....aaaaaa##bbbbbbbbbaaaabbb######aaa............aaa.......bbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbb......baa#####bbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbaabaa", -"bbbbbbbbbbbbbbbbbbaaaaabbbaaabbaabbbaaabbbbbbbbaabbbaababbbbbbbaaabbbbabaaaabbbbaabbbbbbabbbbbbbbbbbbaaaa....aaaaaa#bbbbbbbbbbaaaabbb######aaa.......b....aaa.......bbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaaabbbbb.....bbaa####bbbbbbbbbbbbbbbbbabbbbbbbbbbaabbbbaabaa", -"bbbbbbbbbbbbbbbbbbbaaabbbbaabbbaabbbbaabbbbabbbaabbbaabbbbabbbbaaaabbbbbaaaabbbbbbbbbabbbbbbbbbbbbbbbaaaa....aaa####bbbbbbabbbbaaabb#######aaa......bbb............bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbbbaabbbbbb.....bb######bbabbbbbbabbbbbbbbbbbbbbabbbaabbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbaaabbbaaaabbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbb........aaa###bbbbbbaaabbbbbbbb#######........bbbbb..........bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbaaabbbbbbbbbbbbb....bbb#aaa#bbaabbbbbbaabbbbbbbbbbbbaaabbbbbbbbbbbbb", -"bbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbaaabbbbbbbbbaaabaaabbbaaabbbbbbbbbbbbbbbbaaaabbbbbbbbaabbb.........aaa##bbbbbbbbabbbbbbbb#######a.......bbbbbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbaaabbbbbbbbaaab....bbb#aaa#bbbabbbbbbabbbbbbbbbaabaaabbbbbbbbbbbbbb", -"bbbbbbbaaabbbbbabbbbbbbbbbbbaaabbbbbbaabbbbaabbaaaaabbbaabbaabbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbaaabb.........#####bbbbbbbbbbbbbbbbb##aaa#a.aaa....bbbbbbb.....bbbbbbbbaabbbbbbbbbbbbbbbbbbabbbbbbbbbbaaabbbbbaabbbbbbbbaabbaaabbbbbaaaaabbbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbbbbbb", -"bbbbbbbaaaabbbaaabbbbbbbbbbbbaabbbbbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbaaaa.aaa.....#####bbbbbbbbbbbbbbbbb###aaa#a.aaa...bbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbb###aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbaaabbbbbabbbbbbbbbbaabbabbbbbbbaaaaabbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaaa.aaa....#####bbbbbbbbbbbbbbbbbb###aaa#..aaa...bbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbaabaaabaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbb##bbabbbbbbaaabbbbaabbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbabbbbbbbbabbbbaabbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaa...aaa###bbbbbbbabbbbbbbbb#######a.......bbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbaabbaabaabbbaabbbbbaabbbbbbaaabbbbbbbbbbaab.bbbbbb##bbbbbbbbbaaaaabbaabbbbbbbaabbbbbbabbbbbbbb", -"bbbbbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaaa...aaa##bbbbbbbaaabbbbbbbb#######...aaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaabbbbbaaaabbbbbbbbbbaabbbbbbbb#bbbbbbbbbbbbbaabbbbbbbbbbbaabbbbbaaabbbbbba", -"bbbbbbbbbbbbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbb...aaaa..#aaa#baabbbbbbabaaabbbbb######a...aaa.bbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbaabbbbbbbbabbbbbbaabbbbbbbbbbbabbbbbbbbb#bbbbbbbbbbbbbabbbbbbbbbbbbbabbbbbaaaaaabbaa", -"abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaaabbbbabbbbbabbbbbbbbbbbb..........#####baabbbbbbbbbaabbbb#######a...aaabbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaaabbbabbbbbbbbabbbbbbbbbaaabbbaabbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbaabaabbaa", -"aabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbbbbbbbb.........#####bbbbbbbbbbbbbbbbbbb##aaa##.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbbbaaabbbbbbbbaaaabbaabbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"abbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbaaabbbbbbbbaa.........#####bbbbbbbbbbbbbbbbbbb###aaa#a.......bbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbaabbbbabbbaaaabbbbbbbabbbbbbaabbaaabbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbabbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabaabbbbaabbbbbbbbbbbbbaabbbbbbbaabbbbbaabbbbbbbbbaa.........####bbbbbbbbbbbbbbbbbbbb###aaa#.......bbbbbbbbbbbbbbbbbbbbbbaabbbaabbbbbbbbbbaabbbbbbbbaaaabbbbbbbbbbbbbbaabbaabbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbb..........#####bbbbbbbbbbbbbbbbbbb###aaaab.......bbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbabbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaaaaabbbbbbbbbbbbbbbbbbbbbbb.........#####bbbbbbbbbbbbbbbbbbbb###aaabb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbabaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbb", -"bbbbbbbbbbbbbaabbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbaaaaabbbbbbbbbbbbbbbbbbbbbb..........#aaaabbbbbbbbbbbbbbaabbbb###aaab.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbabbbbbbbaabbbbbbbaaaabbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbb", -"bbbbbbbbbbbbbaabbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........##aaaabbbbbbbbbbbbbbaabbb######bb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbaaabbbbbbaaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaabbbbbbbbbbbb.........###aaabbbbbbbbbbbbbbbaabbb######b.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbaaabbbbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbb", -"abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbaabbbbbbbbbbaaabbabbbbbbbbb.........#####bbbbbbbbbbbbbbbbbaabbb#####bb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbbaabbbbbbbbbbaabbbaabbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbb", -"aabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaabbbbbbb..........##aaabbbbbbbbbbbbbbbbbbbbbb####bb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbb", -"abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbaaabbbbbbb.........###aaabbbbbbbbbbbbbbbbbbbbb#####bb.......bbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaabbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaaabbabaabbbaabbaaa......####aaabbaaaabbbbbbbbbbbbbbb####bbbaa....bbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaabbbbbbaabbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbaaabbbbbaab.aaa......#####bbbbaaaabbbbbbbbbbbbbbbaa##bbaaa....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaa.....#####bbbbbbaabbbbbbbbbbbbbbbaaa#bbbaaa...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaabbbbbbbbbaaabbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbaaaa.........aaa##bbbbbbbbbbbbbbbbbbbbbbbbaaa#bbb.....bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbabbabbbbbbaabbbbbbbaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbaaabbaaaa.....aaa.aaa#bbbbbbbbbbbbbbbbbbbbbbbbb####bbb....bbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaabbbbbbbbbaaabbbbbaa.....aaa#aaa#bbbbbbbbbbbbbbbbbbbbbbaab###bbb.....bbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbabbbbbbbbbbaabbbbbb.......aaa#aaabbbbbbbbbbaabbbbbbbbbbbaab###bbb....bbbbbbbbbbbaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........##aaabbbbbbbbbaaabbbbbbbbbbbbb####bbb....bbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbb..........###aabbbbbbbbbaaabbbbbbbbbbbbbb###bbbb....bbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbaabbbabbbbbbbaaa.aaaaa...#####bbbbbbbbbbaabbbbbbaabbbbbbb###bbb....bbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbbbbaabaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbaaabbbbbbaaa.aaaaa.aaa###bbbbbbbbbbbbbbbbbbbaabbbbbbb##bbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa.aaaaa.aaa###bbbbbbbbaabbbbbbbbbbbbbbbbbb#bbbbb....bbbbbbaabbbbaabbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........aaa##bbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbbaa.bbbbbbbaabbbbaabbaabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbb.........#####bbbbaabbbbaabbbbbbbbbbbbbbbbbbbbbbbaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbaaabbbbbbbbbaaabbbbbbbbbbabbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbb..........#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa.baabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbaaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbb........aaa####bbbbaabaabbbbbbbbbbbbbbbbbbbbbbbbbbbb..bbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbaaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..aaa...aaa###bbbbbaabaaabbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbabbbbbbbbbbbabbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaa...aaa##bbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbaaabbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbbbbb..aaaaa...#####bbbbbbbbbbaabbbbbbaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbaabbbaabbbbbbbaabbbbbbbbbbaabbbbbbbbaaabbbbbbbbbbbbaabbbbbbbbbbbaabbbaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbb...aaaaa..#####bbbbbbbabbbbabbbbbbaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbaaabbaabbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbb...aaaaa..####bbbbbbbbaabbaabbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbaabbbbbbbb......aaaaaa###bbbbbbbbaabbaabbbaabbbbbbbbaabaabbbbbbbbbbaaaabbbbbbbbbbbbbbbbbaabbbbaabbbbbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbaaaaabbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbb..........aaa##bbbbbbbbbbbbbbbbbbaabbbbbbbbaabbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaabbbbaabbbbbbbabbbbbbbaaabbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.........#aaa#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbaaabbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbaabbbbbaaaabbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaa....aaa##bbbbbbbbbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbabbabbbbbbabbbbbbbbbbbbaabbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbabbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb...aaa...#aaa#bbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbbbbbbbbbbbaabaabbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbb", -"baabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaab....aaa...aaaa#bbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbaaabbbbbbbaabaabbbbbbabbbaabbbbbbbbaabbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbaabbbbbbbaabbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbb", -"baabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbb..........#aaa#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbabbbbbbbbbbbbbbbbbbbaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbaaaabbbbbbbbaabbbbbbbbbbbbbbaabbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..........##aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbb..........####bbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaaabbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbaabbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaaab.aaa......#####bbbbbbaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaabbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbaaabbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaaa.aaa.....#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaaa.aaa.....####bbbbbbbbbbbbbbaabbbbbaabbbaabbbbbbbbbbbbbbaabbbbbbbbaaabbbbbbbbaabbbbbbaaaabbbbbbbbbbbbbbbbbbbaabbbabbbbbbbbaaabbbbbbbbbbbaaabbbaaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbbbb...aaa.aaa#####bbbbbbbbbbbbbbaaabbbbaabbbaabbbaabbbbbbbbbaabbbbbbbbaaabbbbbbbbbbbbbbbbbaaaabbbbbbbbbbabbbbbbbaabbbbbbbbbbbaaaabbbbbbbbbbbaaabbbaaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbb...aaa.aaa####bbbbbbbbbbbbbbbbaaabbbbbbbbbbbbaaaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbaaabbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbaabbaabbbbbbbbbb........aaa###bbbbbaabbbbbbbbbbbabbbbbbbbbbbbbaaabbbbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbbbaabaabbaabbbbbabbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbaabbbbaabbbbbbbbbbbbbb......aa.#####bbbbbaabbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbabbbbbbbbbbbbaabaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbb......aa#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbaaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbb.......aa####aaaabbbbbbbbbbbaabbaabbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbabbbbbbbbbbbbaabbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....aa..###aaaaaabbbbbbbbaabaabbaabbbbbbbbbbbbabbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....aa.####aaaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....aa#####baaabbbbbbbbbbaabbbbbbbbbbbbbbbbbbbabbbaabbbbbbbaabbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...aaa.####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....aaa#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....aaa####bbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbaaabbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbabbbbbaaabbbbbbbbbbbbbbaabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......####bbbbbbbbbbbbbbbbbbbbbbbbaabbbaabbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbaaabbbbbbaaabbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbaabbbbbbbbbbbbbaaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb......##aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbb.....###aaabbbbbbbbbbbbbbbbbbbbbaabbbbbbabbbbbbbbaabbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabb.....####aaabbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.....#####bbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....#####bbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbaabbbbabbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbaabbbbbbbabbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaabbbbbbb....#####bbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaabbbbaabbbbbaabbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaabbbbbbb....#####bbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbabbbbbbb...#####bbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...#####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..a####bbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..####bbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..a####bbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b####bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bb###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb###bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", -"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" -}; -SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 271 NAXIS2 = 273 HISTORY Written by XV 3.10a END ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽŽŽ½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽŽ½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€Ž½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€½½½½½ÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€Ž½½½½€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€ŽŽ½½½€€€€€€ÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€½½½½€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€Ž½½½½½ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€½½½ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿ€€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€Ž€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿŽŽŽ€€€Ž€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€Ž€€€ŽŽŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€Ž€€€ŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿŽ€€€ŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿŽŽŽŽ€€€ŽŽŽ€€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽ€€€ŽŽŽ½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€ŽŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€€€€€½½½ÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽ€€€€€ŽŽ½½½½ÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿŽŽŽ€€€€€ŽŽ½½½½½ÿÿÿÿÿÿÿ€ÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽ€€€€€ŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€ŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€ŽŽŽ€€€½½½ÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€½½½½ÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Žÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€½½ÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Žÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Ž€€€€€Ž€€€½½½ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿŽŽŽŽÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€Ž€€€€€Ž€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½½ÿÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿ€€€Ž€€€€€ŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½½½ÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€½€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿ½½½ÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ŽŽŽŽŽ€€€½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ½½½ÿÿÿŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€€€ŽŽŽŽŽ€€€Ž€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ŽŽŽŽŽŽŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€½ÿÿÿŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€ŽŽŽŽŽ½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€½ÿÿÿ€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€ÿŽ€€€ŽŽŽŽŽŽ½½½½½ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€½½ÿÿ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€ÿ€€ÿÿÿ€€ÿÿ€€€ŽŽŽŽŽŽ½½½½€€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ÿÿÿ€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½ÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½½½½ÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½½½½½ÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½½½½½ÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½½€€€ÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€ÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€€ÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€½ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€½€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿ€€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½€€€½½ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½ÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½½½½½½€ŽŽŽ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€€ŽŽ½€€€½ÿ€€ÿÿÿÿÿÿ€ÿ€€€ÿÿÿÿÿ½½½½½½€ŽŽŽ€€€Žÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€ŽŽŽ€€€½½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ½½½½½½½ŽŽŽ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ŽŽŽ€€€½½½ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ½½½½½½½€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿ€€ÿ€€ÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿŽÿÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿ€€€€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€ÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€Ž€€€ŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€½ŽŽ€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ½½ÿÿ€ÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€€Ž€€€ŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€½€Ž€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€€€€ÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿ€€€ÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½€€€½€Ž€€€ŽŽŽŽÿÿÿÿÿÿÿŽŽŽŽŽÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽŽŽŽŽŽ€€€½½ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ½½½½½½½€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€ÿŽŽŽŽÿÿÿ½€€€½ÿÿÿ€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€½½½ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ½½½½½½½ŽŽŽŽŽŽŽŽÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽÿÿÿ½€€€½ÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿ€ÿÿÿ€€ÿÿÿ€€ÿÿÿÿ€ÿÿÿÿ€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽ€€€½½½½ÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿ½½½½½½½€€€ŽŽŽŽŽŽÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿŽŽŽŽŽÿÿ½½½½½½ÿÿ€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿ€€€ÿÿ€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿ€ÿÿÿÿÿÿÿ€€€ÿÿÿÿ€ÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽ€€€€€€½ÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ½½½½½½€€€ŽŽŽŽŽŽŽÿŽŽŽŽ€€€ŽŽŽŽŽŽŽÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿŽŽŽŽŽÿÿ€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿ€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽ€€€€€€½½ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ½½½½½½€€€ŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿŽŽŽŽŽŽÿ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€€€ÿÿÿ€ÿÿÿÿÿÿ€€ÿ€ÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€ÿÿÿÿÿÿ€€ÿÿ€€ÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€€€ŽŽŽ€€€€½½½ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ½½½½½½½ŽŽŽŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽŽŽŽŽŽÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿŽŽŽŽŽŽÿ€€½½½½½ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿ€€€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿ€€€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€€€ŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ½½€€€½½½ŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½ÿÿ€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿ€€€ÿÿÿÿÿ€ÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿ€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ŽŽŽŽ€€Ž½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½½½½ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽ€€€ŽŽÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½½ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿ€€€€ÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿ€€€€€€€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€Ž€€€ŽŽÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿÿÿ€€€ŽŽŽŽ€€€€€½½½ÿÿÿÿÿ€€€€ÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿ€€€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½€€€½ŽŽ€€€ŽŽŽŽŽŽŽŽ€€€Ž€€€ŽŽŽÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€ŽŽŽŽ€€€€€€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½Ž€€€ŽŽŽŽŽŽŽŽ€€€Ž€€€ŽŽŽÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€€½€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€ÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿ€€ÿ€€€€€€€€ÿÿÿÿ€€ÿÿÿ€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿ€€€€ÿ½½½½½€Ž€Ž€€€ŽŽŽŽŽŽŽŽ€€€Ž€€€ŽŽŽŽÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿŽŽ€€€Ž€€€€½€€Ž€€€€€€ÿÿÿÿÿ€€ÿÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿ€€€€€€€ÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€ÿ€€ÿÿŽŽŽŽŽ€€€Ž½½½½½ÿÿÿÿÿÿÿÿÿ€€€€ÿ½½½½½€€€½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿŽ€€€€Ž€½½½½½½€€ÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿŽŽŽŽŽŽŽŽŽŽ½½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿŽ€€€€ŽŽ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€ÿÿÿÿ€€€€ÿÿÿÿÿÿ€€€ÿ€ÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿŽŽŽŽŽŽŽŽŽ½½€Ž€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿ€€€€€ÿÿÿÿ€€€€€ÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿŽ€€€€ŽŽ€€€€€€€ÿ€€ÿÿÿÿÿ€€€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€ÿÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿ€€ÿÿ€€€ÿ€€€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿ€€€ÿ€€€ÿÿÿ€€ŽŽŽŽŽŽŽŽ½€€€ÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿ½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿ€€€€€ÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Ž€€€ŽŽ€€€€€€€ÿ€€ÿÿÿÿ€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿ€€€€ÿ€€€ÿÿ€€€ŽŽŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽ€€€Žÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€Ž€€€ŽŽ€€€€€€½ÿÿÿÿÿÿÿ€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿ€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿ€€ÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿ€ÿÿÿ€€€€ÿÿ€€€ÿ€€€ÿŽŽŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽ€€€ŽŽÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿŽ€€€ŽŽ€€€€€€½ÿÿÿÿÿÿÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€ÿÿÿÿ€€ÿ€€ÿÿÿŽŽŽŽŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽ€€€ŽŽŽÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽ€€€€½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½Ž€€€ŽŽŽŽŽ½½€€€ŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽ€½½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿ€ÿÿÿ€€€€ÿ€€€ÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿ€ÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€€ÿ€ÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿÿ€€€€ÿÿÿÿÿ€€ÿŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½€€€ŽŽŽŽ½½½€€€½ŽŽŽŽŽŽŽŽŽÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ŽŽŽŽ€½½½½½€€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿ€€€€€€€ÿÿ€€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€€€€ÿÿ€€€€€ÿÿÿÿ€€ÿÿŽŽŽŽŽŽŽŽŽ€€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ½½½€€€½½€€€ŽŽŽŽ½½½½½½½½€ŽŽ€€€€ŽŽÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ŽŽ€€€€€€€½½½€€€€ÿÿÿ€€ÿÿ€€€€ÿÿÿÿ€€ÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿ€€€€€€€ÿÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ½½½€€€½½½ŽŽ€€€Ž½½€€€½½½€€€€€€€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿŽŽ€€€€€€€½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€ÿ€€€€ÿ€€€€€ÿ€€€€€€€€ÿÿ€€€€€ÿÿÿ€€€€ÿÿ€€ÿ€ÿÿÿÿÿÿÿÿ€€€ÿÿÿ€ÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€ÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿ½½€€€½½½½Ž€€€½½½€Ž€½½½€€€€€€€€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€ÿ€€ÿ€€€€ÿÿÿÿ€€€€ÿÿŽŽ€€€€€€€½½½½ÿÿÿÿÿÿ€ÿÿ€€ÿ€€€ÿ€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿ€€ÿ€€€ÿ€€€€ÿÿ€€€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿ€€€€€€€€ÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿ€€ŽŽŽŽŽŽ½½ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€½½€€€½½ÿ€€ÿÿ½½€€€½½½€€€ŽŽŽŽ€€€€€€€€€ÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½½ÿÿÿ€€ÿÿÿ€€ÿ€€€ÿ€€ÿÿÿ€€ÿÿÿÿÿ€€ÿ€€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿ€€ÿÿ€€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿÿÿÿ€€€ÿ€€€ÿÿÿ€€€€€ŽŽŽ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿÿÿÿÿ½½½½€€€€€€€€€ŽŽ€€€€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Ž€€€€€€½½½½½ÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€€ÿÿÿÿ€€€€€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€€€ÿÿÿÿÿÿÿÿ€€€€€€€€€€ÿÿÿÿÿ€€€€ÿ€ÿÿÿÿÿ€€€€ŽŽŽ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€€€€€€€ÿÿÿÿÿÿÿ½½½€€€€€€€€€ŽŽ€€€ÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿÿÿÿÿÿ€€€Ž€€€€€€½½½½½€€ÿÿ€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿ€€ÿÿÿÿÿÿ€ÿ€€€ÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€€€ÿ€€€€€ÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿÿÿÿ€€€€€€€€€€€ÿ€€ÿÿ€€€€ÿÿ€€ÿÿÿ€€€€Ž€€€€€ÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿ€€€½½€€ÿÿÿÿÿÿÿÿÿ½½€€€€€€€€€ŽŽŽŽŽÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€ÿ€€ÿÿÿÿ€€€€Ž€€€€€€€€½½½€€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€€€€ÿ€€€ÿÿÿÿÿ€€€€€€ÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿ€€€€€ÿÿÿ€€ÿÿ€€ÿÿÿÿ€€ÿÿ€€€€€€€€€Ž½ÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½½½€€€€€€ŽŽÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿ€€€ÿÿ€€ÿÿÿÿ€€ÿŽŽ€€€€€€€€½½½€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€ÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿ€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€€€ÿ€€€€ÿÿÿÿÿÿÿÿ€€€€ÿ€ÿÿÿÿÿÿÿ€€€€€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿ€€€€ÿ€ÿÿÿ€€€ÿÿ€ÿÿÿ€€€ÿ€€€€€€€€€€Žÿ½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€½ÿÿÿ€€€ÿÿÿÿÿÿÿ½€€€½½½€€€€€€ŽŽ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€€Ž€€½½½€€€€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€€ÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿ€ÿÿÿ€€€€ÿÿÿÿ€ÿÿÿÿ€€€€€€€ÿÿÿÿÿÿ€€€ÿÿ€€€€ÿ€€€€€€ÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿ€€€€€€€€€€Žÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€€½½½½€€€€€ŽŽ€€€€ÿ€€ÿÿÿÿÿ€€ÿÿÿÿ€€€ÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿŽŽŽŽ€€€€½½½€€€€ÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€½½€€€€€ŽŽ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿŽŽŽŽ€€€½½½½€€€€ÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿ€€€€ÿÿÿ€ÿÿ€€€ÿÿÿ€€ÿ€€€ÿÿ€€€ÿÿÿÿ€ÿ€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€€€€€ÿ€€€ÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿ€€ÿÿ€€€€€€€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€½½½€€€€ŽŽ€€€€ÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€ÿŽŽŽŽ€€€€½½½€€€€ÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€ÿÿÿ€€€€€€ÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€€€€€€ÿÿÿÿÿ€€€€€€€€€€ÿÿ€€ÿÿÿ€€€ÿ€€ÿŽŽŽÿÿÿ€€ÿ€€€ÿ€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€½½€€€€ŽŽ€€€€ÿÿ€€€€ÿÿ€€€€€€€ÿÿÿÿ€€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿŽŽŽŽŽŽ€½½½½½€€€€ÿÿÿÿ€€ÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€€€ÿ€€€€ÿÿ€€ÿÿ€€€€€€€ÿÿŽŽÿÿÿ€€ÿÿ€€€ÿÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€½½½€€ŽŽŽ€€€€ÿÿ€€€€ÿÿÿÿÿ€€€€ÿÿÿ€€€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€½½€€€€€€€ÿÿÿ€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€€€€ÿÿÿ€€€ÿ€ÿÿÿ€€ÿÿÿ€€€€€ÿÿ€€€€€ÿÿ€€€€ÿÿÿ€€€ÿÿÿ€€€ÿÿ€€ÿÿ€€€€€€€ÿÿÿŽÿÿÿÿÿÿÿÿ€ÿ€€€€€€€€ÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€½½½€€€ŽŽ€€€€ÿÿ€€€ÿÿÿÿ€€€€€ÿÿÿÿÿ€€€ÿÿ€€€ÿÿ€€ÿÿ€€€€ÿÿÿÿ€€€€€€€Ž½½€€€€€€ÿÿ€€€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿÿ€€ÿ€€ÿÿÿ€€€ÿÿÿÿ€€€€ÿÿÿ€€€€€ÿ€€ÿ€€ÿÿ€€€€€ÿ€€€€ÿ€€ÿ€€ÿÿ€€ÿ€€€€ÿ€€€ÿ€€€Žÿÿÿÿÿÿÿÿ€€€€€€€€€ÿÿÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€€€½½€€ŽŽ€€€Žÿÿ€€ÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿ€€€ÿ€€€€ÿÿÿÿ€€€€€€€Ž€½€€€€€ÿÿÿ€€€€€€ÿÿÿÿ€€€€€ÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€€€ÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿ€€€€€€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€ŽŽÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€€€€€ÿÿÿÿÿ€€€ŽŽŽ€€€½½½½½ÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿ€€€€€€€ÿÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿ€€€€€ÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿ€€€ÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€€€€€€€€€ŽŽÿÿ€€€ÿÿÿÿ€ÿ€€€€ÿ€€€€ÿÿÿÿÿ€€ÿ€€€€€€€ÿÿÿÿÿÿÿ€€ŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿ€€ÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿ€€ÿ€€€€€€€ÿ€€€ÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿ€€€€€€€€€€€€€€€ŽŽŽÿÿ€€ÿÿÿÿÿ€€€€€ÿ€€€ÿÿÿÿÿÿ€€ÿ€€€€€ÿÿÿÿÿÿÿÿÿŽŽ€€€€€€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€½½½€€€€€€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€ŽŽ€½€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€€ÿÿ€€ÿÿÿ€€€ÿ€€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€€€€€½½½€€€€€€€€Žÿÿÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€ÿ€€ÿÿÿÿ€€ÿÿÿŽŽ€€€ŽŽ€½€€€½½ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€€€ÿÿ€€€€ÿÿ€€ÿÿ€€€€ÿ€€€€€ÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿ€€ÿ€€€€€€ÿÿÿÿ€€€€ÿÿÿÿ€€ÿ€€€€ÿÿ€€ÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿÿ€€ÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿ€€€ÿÿÿÿ€€ÿ€€ÿ€€€€€€€½€€€€€€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿ€€€€€€€ÿÿ€€€€ÿÿÿÿŽŽŽŽŽŽ€½€€€½½ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿ€€€€ÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿÿ€€€€ÿÿÿÿ€€€€€€€ÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿ€€€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€ÿÿ€€ÿÿÿÿÿ€€€ÿÿÿ€€€½€€€½½€€€€€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿ€€€€€€€ÿÿ€€€ÿÿÿÿÿŽŽŽŽ€€€€€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿ€€€€ÿÿ€€€€€€€€½½€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€€€€€½½ÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€€ÿÿ€€€ÿ€€€€€€€ÿÿÿ€€€ÿÿÿ€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿ€€€ÿÿÿ€€€€€€€€½½½€€Ž€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€€€€€½½½½ÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿ€€€€€€ÿ€€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€½ÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€€€€ŽŽŽÿÿÿÿÿÿÿÿ€ÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€€€€€€½½½ÿÿ€€€ÿÿÿÿ€€€ÿÿÿ€€ÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€½½ÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€€€€€€€€€€ŽŽŽÿÿ€€ÿÿ€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿŽ€€€€€€€€€½½½ÿÿÿ€€€ÿÿÿÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿ€ÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€€ÿ€€€€€ÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€ÿÿÿÿÿ€€€€€€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿ½½½½½ÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿ€€ÿ½€€€€€€€€Ž€€€€ÿ€€ÿÿÿ€€€ÿÿÿÿ€€€€ÿÿÿÿÿ€€€€€€€€ÿÿÿÿÿÿÿÿ€€€€€€€€€€€€€€ÿÿÿ€€ÿÿ€€€€€ÿ€€€€ÿÿ€€ÿÿÿÿÿÿ€ÿÿ€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿ€ÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€€€€Ž€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿ€€€€€€€ÿÿÿÿ€€€ÿÿ€€€ŽŽŽ€€€€€€€€ÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ½½€€€€€€Ž€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿ€€ŽŽŽŽ€€€€€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿ€€€ÿ€€ÿÿ€€ÿÿÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ½½½½½ÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€½€€€€€€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿ€€€ÿÿÿÿ€€€€€ÿÿŽŽ€€€Ž€€€½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿ€€ÿÿÿÿÿ€€€ÿÿ€€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ½½½½½½ÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€½½½½½€€€€€€€Žÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿ€€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿ€€€€€Ž€Ž€½½½½½ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿ½½½½½½ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€½½½½½€€€€€€€ŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€€€€Ž€€€½½½½½ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿ½½½€€€€ÿÿ€€ÿ€€ÿÿÿÿ€€ÿ€€ÿÿÿÿ€€ÿÿÿÿ€€€ÿÿÿ€€€ÿ€€€€€ÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿ€€ÿ€€€ÿÿÿ½½½½½½½ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿÿÿÿ½½½½½½€€€€€€Ž€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿ€ÿÿÿÿ€€ÿÿÿÿÿÿ€€€€ŽŽ€½½½½€€€ÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½€€€½€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€€ÿ€ÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½ŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿ€ÿÿÿÿÿÿ€€€ÿ½½½½½½½€Ž€€€€€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿ€ÿÿÿÿ€€€€€€ÿÿŽŽŽŽŽŽ€½€€€€€€ÿÿÿ€€€€€ÿÿÿ€€ÿÿ€€€ÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½€€€½€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿ½½½½½½€€€€€€€€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€€€€€€€ÿÿÿÿÿ€€€€€ÿŽŽŽŽŽŽ€½€€€€€€ÿÿ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½€€€€€€€ÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿ€€€ÿÿÿ½½½½½€€€€€€€€€€ÿÿÿ€€ÿÿÿ€€€€ÿÿÿÿ€€€ÿÿ€ÿÿÿÿÿÿ€€€€€ÿ€€€€ŽŽŽ€€€€€€€€ÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿ½½½½½½½½€€€½½½½½½½€€€€€€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿ€ÿ€€ÿÿÿ½½½½½€€€€€ŽŽŽŽÿÿÿ€€€ÿÿÿ€€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€€ŽŽŽ€€€½½½€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½½½½½½½½€€€½½½½½½½€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½½½½€€ÿÿ€ŽŽŽŽÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ŽŽŽ€€€½½½€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€½½½½½€€€€€€€€€½½½€€€€€€½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€ÿÿÿ€€ÿÿ€€ÿ€€€€ÿ€€€ÿ€€ÿÿÿÿ€€ÿÿÿ€€ŽŽŽ€€€½ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½½½½½½½ÿ€€ŽŽ€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ŽŽŽ€€€½½½€€€€ÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€½½€€€½½½€€€½½½€€€€€€€½½ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿ€€ÿÿÿ€€ŽŽŽ€€€½ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€€½½½€€€ŽŽ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿ€ÿÿÿÿÿÿÿ€ÿÿŽŽŽ€€€€½½½½€€ÿÿÿÿÿÿ€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽ€€€ŽŽŽ€€€½½½€€€€€€€½½½ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€½½½ÿÿ€ŽŽ€€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿŽŽŽ€€€€€½½½€€€ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½€€€€€ŽŽŽŽŽŽŽŽŽ½½½½€€€€€€½½½½ÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€½½½½ÿÿŽŽŽ€€ÿ€€€ÿÿ€€ÿ€€€€€€ÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿ€€ÿÿŽŽŽ€€€€€€€€€€€€€ÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€ÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½€€€€€€ŽŽŽŽŽŽ€€€ŽŽ½€€€½½½€€€½½€€ÿ€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ½½½½½½ÿÿŽŽŽŽÿÿ€€€ÿ€€€ÿÿÿÿ€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽ€€€€€€½½½€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€€€€ŽŽŽŽŽŽ€€€ŽŽŽ€€€½½½€€€½½€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽŽŽ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ½½½½½ÿÿÿŽŽŽÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽ€€€€€€½½½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€€€ŽŽŽ€€€€€€ŽŽ€€€Ž€€€€€€€€€€½ÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿ½ŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€€½½ÿÿÿŽŽŽÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽ€€€€½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€€€€€Ž€€€ŽŽŽŽŽ€€€Ž€€€€€€€€½½½½ÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿ€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ½ŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ€€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€½½ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿŽŽŽ€€€€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€€€€€Ž€€€ŽŽŽŽŽ€€€Ž€€€€€€€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€½½ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽ€€€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€Ž€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ÿÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿ€€€ÿ€ÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽ€€€½½€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿ€ÿÿÿŽŽ€€€ŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½€€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€½€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽ€€€ŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½€€€½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ½½½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€€½€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€ÿÿÿŽŽ€€€ŽŽŽŽŽŽ€€€ŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽ½½½½€€€€€ÿÿÿÿÿÿÿ€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ½½ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€€€€€€€€½½½€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽ€€€½½½€€€€ÿÿÿÿÿÿ€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€ÿ½½ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿ€€€€ÿÿ€€ÿÿÿÿÿ€€ÿÿÿ€ÿÿ€€ÿŽ€€€€€€½½½½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽ€€€½½½€€€€½ÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€½½ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿŽ€€€Ž€€€½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽ€€€Ž€€€ŽŽŽŽŽŽ€€€ŽŽ€€€€Ž½½½€€€€€½ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€ÿÿÿ€€€€€½½ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€ÿÿÿÿÿÿ€€ÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿŽ€€€Ž€€€½½½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿ€ÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽ€€€ŽŽ€€ŽŽŽŽ½½½½€Ž€½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€€½½½ŽŽŽŽŽŽŽŽŽŽÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽ½½½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ŽŽŽŽŽŽŽŽŽŽÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€ÿÿÿŽŽ€€€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ€€ŽŽŽŽ½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ŽŽŽŽ€€€ŽŽŽŽÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿŽŽ€€€€€ŽŽŽŽŽŽ€€€€ŽŽŽŽŽŽ€€€ŽŽŽŽŽ€€ŽŽŽŽŽ½½½½€€€€€€€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿ½½½½ŽŽŽŽ€€€ŽŽŽŽÿÿ€€€€ÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿŽŽŽ€€€ŽŽŽŽŽŽ€€€€ÿÿÿÿŽ€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽ½½½½½½€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€½½½½ŽŽŽŽŽŽŽ€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€€ÿÿÿÿŽŽŽ€€€ŽŽŽŽŽÿ€€€€€ÿÿÿÿ€€ÿŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ½½½½½€€€€€€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€½½½½ŽŽŽŽŽŽŽ€€€ŽŽÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽ€€½½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿ€€€ÿ€€ÿÿŽŽŽŽŽŽŽŽ½ÿÿÿÿ€€€€€€ÿ€€ÿÿ€€€ŽŽŽ€€€ŽŽŽŽŽŽ½½½½½½½½½€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ½½½½€€€ŽŽŽŽŽŽ€€€ŽŽÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€€€€ÿÿÿÿ€€€€ÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿ€ÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽŽŽŽŽŽ½ÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€€ŽŽŽŽŽŽŽŽŽŽ€€½½½½½½½½€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½€€€ŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€ÿÿŽŽŽŽŽŽŽŽ½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ŽŽŽŽŽŽŽŽŽ€€€Ž½½½½½½½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½€€€ŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿÿ€ÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ½½€€ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿ€€ÿŽŽŽŽŽŽŽŽ€€€ŽŽ½½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½½½ŽŽŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ€ÿÿÿÿ€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿŽŽŽŽŽ€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ½½€€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ½½€€€€€€ŽŽŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿ€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ½½€€ÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿ€€ÿÿÿÿÿÿ½½½€€€€€€ŽŽŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿ€€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿŽŽŽŽŽŽ½½½½ÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿŽŽ€€€ŽŽŽŽŽŽŽ½½½½½½½ÿÿÿ€€ÿÿÿÿ½½½½½½½€€€€€€ŽŽŽŽŽŽ€€€€Žÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€ŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿ½½½½½½½½€€€€€€ŽŽŽŽŽŽ€€€ŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿ€€€ŽŽŽŽ½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿ½½½½½½½½½½€€€€€€ŽŽŽŽŽŽ€€€ŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½€€€½½ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽ€€€½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽŽ€€€½½½ÿÿÿÿÿ½½½½½½½½½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½€€€½½ÿ€€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿ€€€€ŽŽŽŽŽŽŽ€€€€€€ÿÿÿÿÿÿ€€½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿ€€€€ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽ€€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽŽŽŽ€€€€€€½ÿÿÿ€€€€½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿ€ÿ€€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿŽŽ€€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€Ž€€€ŽŽŽŽŽ€€€€½½ÿÿ€€€€½½½½€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŽŽ€€€Ž€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽ€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽŽŽ½½½½½ÿÿÿÿÿÿ½½ŽŽ€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€Ž€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿŽŽŽŽŽ€½½½½ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽŽŽŽ½½½½½ÿÿÿÿÿ½ŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿŽ€€€Ž€€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿ€€ÿ€€€Ž€€€Ž€€€€½€€€ÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½ÿ€€ÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿ€€€Ž€€€ŽŽ€€€½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½€€€½½½€€€½½€€ÿÿ€€€€ÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿ€€ÿÿŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Ž€€€ŽŽ€€€½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½€€€½½½€€€½½€€ÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿ€ÿÿÿ€€€€ÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿ€€€ÿÿÿÿ€€ÿÿÿ€€ŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½€€€½½½€€€½½€€€ÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ŽŽŽ€½½½½ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿŽŽŽŽŽŽŽÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½€€€½€€€½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽ½½½½½€€€€ÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿŽŽŽŽŽŽŽÿÿÿ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽŽÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿ½½½½½½½½€€€ÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½€€€½€€€½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿŽŽŽ€€€€ÿ€€ÿŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€½½½€€€½½½½½½½½½ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ½½€€€½½½½½½€€€€€€€½½½€€€½½½ÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€Ž€€€€½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€€ÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€½½½€€€½½½½½½½½½½ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ½½€€€½½½ŽŽ½½½½€€€€½½½€€€€€½½ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿŽŽŽ€€€Ž€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€ÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½½½€€€½½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ½½€€€ŽŽŽŽŽŽŽŽŽ€€€€½½½€€€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿŽŽŽ€€€Ž€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€€€Žÿÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽ€€€€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½½½½½½½½½½ÿÿÿÿÿ€€ÿÿÿÿÿÿ½€€€ŽŽŽŽŽŽŽŽŽ€€€€½½½½½€€€½½½½ÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿŽŽŽŽŽŽ€½½½½½½½ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€€ÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽŽŽŽ€€€€€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ½½€€€€½½½€€€½½½½½½½½½½€€€½ÿÿÿÿ€€ÿÿÿÿÿÿ½€€€€ŽŽŽ€€€€€ŽŽŽŽ½½½½½½½½½½½½½ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿ€€ŽŽŽŽŽ½½½½½½½ÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿŽŽŽŽŽ½½½½½ÿÿÿÿÿ€€€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€€€€ÿÿ€€€ÿÿÿÿ€ŽŽŽŽŽŽŽŽ€€€€€€ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿ½½€€€€€½½½€€€½½½½½½½½½½€€€½½ÿÿÿ€€ÿÿÿÿÿÿŽ€€€€ŽŽŽ€€€€€ŽŽŽŽŽŽ½½½½½½½½½½½½ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽ€½½½½½½ÿÿÿ€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŽŽŽŽ€½½½½½ÿÿÿÿÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿ€€€ÿÿÿÿÿŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½€€€€€€€½½½€€€½½½½½½½½½½€€€½½½ÿÿ€€ÿÿÿÿÿ€€€€€€ŽŽŽ€€€€€ŽŽŽŽŽŽŽ½½½½½½½½½½½½ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€½½€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½€€€€½½½½½½½½ŽŽŽŽ½½½½½½½½½½½½½½½ÿÿÿÿÿÿÿ€€€ŽŽŽ€€€ŽŽ€€€ŽŽŽŽŽŽŽŽŽ½½½½½½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€½½€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€€ŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€€½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½ÿÿÿÿÿŽ€€€ŽŽŽ€€€ŽŽ€€€ŽŽŽŽŽŽŽŽŽŽ½½½½½€€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€½½€€ÿÿÿÿÿÿÿÿÿÿ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€€€Žÿÿÿÿ€€ÿÿ€€ÿÿÿÿÿÿ½½½½€€½½½€€€ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽ½½½½½½½½½ÿÿÿÿÿŽŽŽŽŽŽŽ€€€ŽŽ€€€ŽŽŽŽŽŽŽŽŽŽ€€€½½€€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€Ž½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ŽŽŽÿÿÿÿ€€€ÿÿ€€ÿÿÿÿÿ€€€½½½½½½€€€€ŽŽŽŽŽ€€€Ž€€€ŽŽŽŽ½½½½½½½½½ÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€½½€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€Ž€½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿŽŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿ€€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½€€€½½½½½Ž€€€€ŽŽŽŽŽ€€€Ž€€€ŽŽŽŽŽŽ½½½½½½½ÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€Ž½€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽ€€€ŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿ½½€€€½½½½ŽŽ€€€ŽŽŽŽŽŽ€€€Ž€€€ŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽ½½½€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½½ÿÿ€ÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€ŽŽ½€€€½½ÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽ€€€Ž½½€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€½½½½½ÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿ½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽ€€€½½ÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽ€€€Ž½½€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½€€€€€€½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€½½½½½ÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€€½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€½½ÿÿÿÿÿŽ€€€Ž€€€ŽŽŽŽŽŽŽŽŽ€€€€€€€€€€€€€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½½½½€Ž€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ½€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½ÿÿÿÿÿ€€€€€€€€€ŽŽŽŽŽŽŽ€€€ŽŽ€€€ŽŽŽ€€Ž½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ½½½½½½½½½½½½½½½½½½€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽŽ€€½½½ÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿ€€€€€€€€€ŽŽŽŽŽŽŽ€€€ŽŽ€€€ŽŽŽ€€ŽŽ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿ½½½½½½½½½½ŽŽŽŽŽŽŽ½½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽŽ€€½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ½€€€½½½½½Ž€€€ŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½ÿÿÿÿÿ€€€€€€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€½½½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€½½€€ÿÿÿÿ½ÿÿÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ½½€€€½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€€½½½€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿÿŽŽŽŽŽŽŽŽŽ½½½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€½€€€ÿÿÿ½½ÿ€€€ÿÿÿÿÿ€€ÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½½€€€½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€€€½½€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿŽŽŽŽŽŽŽŽŽ½½½€€€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€€€ÿÿ½½½ÿ€ÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½€€€½½½½ŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€€€€½½½ÿÿÿÿÿŽŽ€€€€€ŽŽÿÿÿÿÿÿÿŽŽŽŽ€€€ŽŽŽ€€€€€½½€€€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½€Ž€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€€€ÿ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½€€€½½½ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€Ž€€€€€€€€Ž½½ÿÿÿÿÿŽŽ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€€€½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€ÿÿÿ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½€€€½½ŽŽŽŽŽŽ€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€Ž€€€€€€€€Ž½½ÿÿÿÿÿÿŽ€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ€€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽŽÿÿÿ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ€€ÿÿ€€€€ÿÿÿÿ½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽŽŽŽŽŽŽ€€€½ÿÿÿÿÿŽ€€€€€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽ½½½½½½½½½ÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿŽŽŽŽÿÿÿ€€€½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ€€€ÿÿ€€€€ÿÿÿ½½€€€€€€½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿ€€€Žÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽÿ€€€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ½½½½€€€€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€½ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽ½½½½½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€€€€€€€½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€€€€€€€€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽÿ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ÿÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿŽ€€€½½½½€€€½½½ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿ½€€€€€€½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿ€€€ÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿ€€€½½½Ž€€€½½½½ÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿ½½€€€€€€½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽÿ½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€Ž½½½½½½½½ÿÿÿÿ€ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ½Ž½½½½ŽŽŽ½½½½½ÿ€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½½½½€€€½½ŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿ€€€€ŽŽŽŽÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽ½½€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿ½½½½½½€€€½ŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€€€€€ŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿ€€ÿÿŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿ€ÿ€€€€ŽŽŽŽŽÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½ŽŽŽŽŽŽ½€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€€½½½½½½€€€ŽŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€€€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½½½½½½½½½ŽŽŽŽŽŽŽ€€€€½½½ÿÿÿÿÿÿÿÿÿÿÿ€€€€€€½½½½½½½½ŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽ€€€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿŽ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿ½½½½½½½½½ŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿŽŽŽŽ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿ€€ÿ½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ€€ŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿ€€€€€½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½€€€½½½½½€€€½½½½½½½½ŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿŽŽŽ€€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ÿÿÿÿ€€€½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½€€€½½½½½€€€½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽ€€€ÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ÿÿ€€€½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½€€€½½½½½€€€½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿ€€ÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½€€½½½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽÿÿÿÿÿÿŽŽÿÿÿÿÿ½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½€€€€€€€½½½€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽÿÿÿÿÿÿŽŽÿÿÿÿÿ½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½€€€€€€€½½½Ž€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽÿÿÿ½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€€ŽŽŽŽ€€€½½½½½½€€€€€€€½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽÿÿ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽ€€€ŽŽŽŽ€€€½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽÿ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€ŽŽ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½½€€ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€ŽŽŽŽ½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½½€€ÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽ€€€ŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€ŽŽŽŽŽŽ€€€€ŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½½ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€½½½½½½ÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½ÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽ€€½½½½½½ÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€½½½½½½½ÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€€€€ŽŽŽÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽ½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€ŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽ€€€ŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ€€€€ŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽ€€€€ŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽ€€€ŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽŽŽŽŽ½½½½½½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +static char * gnus_new2_xpm[] = { +"271 273 4 1", +" s None c None", +". s thing c #BF9900", +"+ s shadow c #FFCC00", +"@ s oort c #FFFFFF", +" ", +" ", +" ... ", +" ..........++++++ ", +" .............+++++++ ", +" ................++++++ ", +" ..................++++++ ", +" ....................+++++++ ", +" ......................+++++++ ", +" ........................+++++++ ", +" .........................++++++ ", +" ..... ...........................++++++ ", +" ........... ............................+++++++ ", +" ............... ..............................+++++++ ", +" .................. ........... ...............................+++++++ ", +" .................... ............... ...............................+++++++ ", +" ...................... .................... ................................++++++++ ", +" ....................... ........................ .................................+++++++ ", +" ......................... ............................ ..................................++++++++ ", +" ........................... .............................. ...................................+++++++ ", +" ............................. ................................ ....................................+++++++ ", +" ............................... .................................. .......++++++.......................+++++++ ", +" ................................ ................................... ...... +++++++ ....................+++++++ ", +" .................................. ..................................... ..... ++++++ .................+++++++ ", +" .................................... ...................................... ...... +++++ ................+++++++ ", +" ............................................................................. ...... ++++++ ...............+++++++ ", +" .............................................................................. ...... ++++++ ...............+++++++ ", +" ................................................................................ ...... +++++ ..............+++++++ ", +" .. .................................................................................. ....... ++++++ ..............+++++++ ", +" .... .................................................................................... ....... ++++++ .............+++++++ ", +" ....... ..............++++.................................................................... ...... +++++++ ............++++++++ ", +" ......... .............++++++++................................................................... @ ....... +++++++ ...........++++++++ ", +" ........... .............++++++++++++.................................................................. ....... ++++++ ...........++++++++ ", +" .......... .............++++++++++++++.................................................................. @ ...... +++++++ ...........++++++++ ", +" ........... ............++++++++++++++++++.......................++++++++++................................ @ ..... ++++++ ..........++++++++ ", +" ............ ............++++++++++++++++++++....................+++++++++++++++.............................. .... +++++ ..........+++++++ ", +" ............ ..............+++++++++++++++++++++.................+++++++++++++++++++++.......................... .. .. +++ ..........+++++++ ", +" ............. ..............+++++++++++++++++++++++...............+++++++++++++++++++++++.......................... . .. .. ++ ..........+++++++ ", +" ............. ...............++++++++++ +++++++++++++.............+++++++++++++++++++++++++.......................... .. ... ++ ..........+++++++ ", +" ............. ................+++++++++ +++++++++++............++++++++++++++++++++++++++.......................... @ @ ... .... ..........++++++++ ", +" ................ ..................+++++++ +++++++++++..........++++++++++++++++++++++++++++..........................@ ... ..... ..........++++++++ ", +" .....................................++++++ +++++++++++.........+++++++++++++++++++++++++++++.......................... @ .... .... ..........++++++++ ", +" ....................................++++++ +++++++++........+++++++++++++++++++++++++++++++......................... ..... @ ..... ..........++++++++ ", +" .................................+++++++ +++++++++.......+++++++ @@ ++++++++++++++.......................... ..... .... ..........+++++++ ", +" ................................+++++++ ++++++++......+++++ @ ++++++++++++.......................... @@ ...... @ ..... ..........+++++++ ", +" ...............................++++++++ ++++++++....+++++ ++++++++++.......................... @ ...... @ ..... + ..........+++++++ ", +" +..............................++++++++ +.++++...+++++ @ ++++++++++........................... @ ....... .... +++ ..........+++++++ ", +" +.............................++++++++ ...+++..++++++ ++++++++++........................... @@ ...... + @ ..... ++++ .........++++++++ ", +" +++...........................+++++++++ ....++++++++++ @ ++++++++++............................ ........++ ..... +++ .........++++++++ ", +" +++..........................+++++++++ ....+++++++++ @ ++++++++++............................... @ ...........++ @ @ ...... ++++ .........++++++++ ", +" +++.........................+++++++++ .... +++++++++ @ ++++++++++................................................++ ... @...... +++++ .........+++++++ ", +" ++++........................+++++++++ .... +++++++ +++++++++...............................................++ .... ....... +++++ .........+++++++ ", +" ++++.......................++++++++ ..... +++++++ @ @ +++++++++..............................................++ ..... ....... +++++ .........+++++++ ", +" ++++++....................+++++++++ @ ..... + +++++@ @ @+++++++++............................................++ ...... ......... +++++ .........+++++++ ", +" ++++++...................+++++++++ @ ......++ ++++ @@ @ +++++++++...........................................++ @ ....... .......... ++++ .........+++++++ ", +" +++++++.................+++++++++ ..... +++ +++ @@@ +++++++++.........................................+++ @ ......... .............. +++++ ........++++++++ ", +" +++++++...............+++++++++ ..... ++++ ++ @ +++++++++........................................++ ............................... ++++ .........+++++++ ", +" ++++++++............++++++++++ ..... ++++ + @ @@@ @+++++++++.......................................++ @ ...............................+++++ @@ .........+++++++ ", +" ++++++++++.......+++++++++++ ......+++++ @ +++++++++.....................................+++ @ ..............................+++++ .........+++++++ ", +" ++++++++++++++++++++++++++ .....+++++ +++++++++....................................++ ...............................+++++@ ........++++++++ ", +" +++++++++++++++++++++++++ .....+++++ @ @ +++++++++..................................+++ ..............................+++++ ........+++++++ ", +" +++++++++++++++++++++++ ..... +++++ @ @ @@ +++++++++...............................++++ @..............................++++++ ........+++++++ ", +" +++++++++++++++++++++ .... +++++ @ @ @ +++++++++.............................+++++ .............................+++++++ ........+++++++ ", +" +++++++++++++++++++ .... ++++++ @ @ @ +++++++++...........................++++++ ..............................++++++ @ .......++++++++ ", +" +++++++++++++++++ @ .... ++++++ @ @ @@@ +++++++++.........................++++++ @ .............................+++++++ ........+++++++ ", +" +++++++++++++++ ..... +++++ @ @ @ @ @... +++++++++.......................+++++++ .............................+++++++ ........+++++++ ", +" +++++++++++ @.... +++++ @ @ @ ...... @ @ +++++++++....................+++++++++ @ ............................++++++++ @ @ ....... +++++++ ", +" +++ @ .... +++++ @ @ @ ....... +++++++++..................+++++++++@ ..........................+++++++++ @ .......+++++++ ", +" .....++++++ @ @@ .......... @ +++++++++++.............+++++++++++ .........................++++++++++ .......+++++++ ", +" .... +++++ @ @ @ @@@@ ............@ @ ++++++++++++++....+++++++++++++++ @@ .......................++++++++++ @ ....... +++++++ ", +" .... +++++ @ @@ @ @ @.............@ @@ ++++++++++++++++++++++++++++++ @@@ .....................++++++++++++ @ @ ....... ++++++ ", +" @ .....+++++ @ @ @ @@ @ @ @ ............... @@++++++++++++++++++++++++++++@@@ @ ...................++++++++++++ @@ @ ....... ++++++ ", +" @ @ .... +++++ @@ @@@.@@ @ ................ @ @@ ++++++++++++++++++++++++++ @ +................+++++++++++++ .......+++++++ ", +" @ .... +++++ @ @ .... @ .................@ @ @ ++++++++++++++++++++++++@ @ @ @@ ++..............+++++++++++++ @ @ ...... +++++++ ", +" .....+++++ @ @ @ @ ..... @ ................... @@@ ++++++++++++++++++++++ @ @@@ +++++.........+++++++++++++++ @ @ @ ....... ++++++ ", +" .... +++++ @ @@ @ ..... @@@....................@ @ @ +++++++++++++++++++ @++++++++..++++++++++++++++++ ....... ++++++ ", +" .... +++++ @@ @ @@ .....@@ .................... @ @ @++++++++++++++++ @ +++++++++++++++++++++++++++ @@ @ @ ...... +++++++ ", +" .....+++++ @ .......@ ......................@ @ +++++++++++@@ @@@ @@ @ ++++++++++++++++++++++++++ @@ @ ...... ++++++ ", +" .... ++++ @ ....... @@@....................... @ @ @ @ @ @ @@++++++++++++++++++++++++ ...... ++++++ ", +" .... +++++ @ @ @@ .......@@ ....................... @ @ @ @ @@@@ ++++++++++++++++++++++@ @ @ @ ....... ++++++ ", +" @ .....+++++ @ @@ @ @ ........@+++ ......................... @@ @ @ @ @ @ @@@@ ++++++++++++++++++++ @ @@ @ ...... +++++++ ", +" .... ++++ @@ @ @@ ........ ++++ ......................... @ @ @@@ @ @@ @ @ @ @++++++++++++++++++@ @ @@ @ @ @ @@ ...... ++++++ ", +" .... +++++ @@ @ @@ @........ +++++ @ ....................... @@@ @ @@ @ @@ @@@ @ +++++++++++++++ @ ...... ++++++ ", +" ..... ++++ @ @ @ @@ @ .........+++++ +.....................@@@@@ @ @ @@ @@@ @ @ @@ ++++++++++++ @@ @ @ @ ..... ++++++ ", +" .... ++++ @ @ @ @ ..........+++++ ++.................... @ @ @@ @ @ @ @@ @ @ @ +++++++ @@@@ @ @ @ @@@ @ ...... ++++++ ", +" .....+++++ @ @ @ @ ..........++++++ +++++.................. @@ @ @@ @ @ @ @@@ @@ @ @ @ ...... ++++++ ", +" .... ++++ @@@ @...........+++++ +++++++.................. @@ @ @@ @ @ @ @ @@ @@ @@ @@@ @@@ @ @ @@ @@ @ ...... ++++++ ", +" .....++++ @ @ @...........+++++@@ +++++++.................. @@ @ @@ @ @ @@@@ @ @@ @ @ @ @ @@@ @@ @ @ @@ @ @ ...... +++++ ", +" @ .....++++ @ @ ...........++++++@@@ +++++++++.................@ @ @ @ @ @@ @@@ @@ @@@ @ @ @ @ @@ @ ...... ++++++ ", +" @ .....++++@@@ @ @@ @ @ ...........++++++ @+++++++++++................ @@@ @@ @@ @ @@ @ @@@@@@ @@ @ @ @ @ @ @ @@ ...... ++++++ ", +" @ .....++++ @ @@ @@ @............+++++++ @@@++++++++++...............@ @@ @@@ @ @ @ @ @@@ @ @ @ @ @ @@ @ @ ...... ++++++ ", +" @ ......++++ @@ @ ............+++++++@ @@ +++++++++............... @ @@ @ @ @@ @ @ @@@ @@ @@ @ @ @ @@ @ @ @ ...... +++++ ", +" .....++++ @@@ @@ @@ @ ............+++++++ @@ ++++++++..............@@@ @ @ @ @@ @@@@@ @@@@@@@@@ @@@@ @ @ @ @ ...... ++++++ ", +" ......+++ @@ @ ............+++++++++@@ @ @@ @+++++++.............. @@ @@ @@@ @ @@@@ @@ @@@ @@ @ @ @ @ @ @ @ @ ...... +++++ ", +" ......+++@ @ @ .............+++++++++@@@@@ @@ +++++++............. @ @ @@@ @ @@ @ @@@@ @ @ @@ @@@ @@ @@@@ @ @ @@ @ @ ...... +++++ ", +" @ @ ........+ @ @@.............+++++++++ @ @ @@ ++++++............. @ @ @@ @ @ @@@ @@@ @ @ @ @ @ @@@ @ @ @@ @@ @@@@@ @@@ ..... ++++++ ", +" @........+ @@@ ..............+++++++++ @@@ @@@@ @ @ +++++............. @ @ @ @@@@@@@ @@@ @ @@ @@ @ @@@@ @@@@ @ @ @@@ @@@ @ ...... +++++ ", +" ........+@ @@ @@...............+++++++++ @@ @@ @ +++++............. @ @ @ @@ @ @ @ @@ @ @ @ @@ @@ @ @ @ @ @@@@@@ @ @ @ @ ..... +++++ ", +" ........... @ @...............+++++++++@@@ @@@@@ @@@@ @@ @ +++++............@@ @ @ @ @@ @@ @@@ @ @ @@ @@ @@ @ @@ @ @ @ @ @@ @@ @@ ..... ++++++ ", +" @ ............... ..................++++++++@ @@ @@@ @ @@@ ++++............ @@ @ @ @ @@ @@ @ @ @@@ @ @ @@ @@ @@@ @ @ @ @ @ @ ...... +++++ ", +" @@ ......................................++++++++ @@ @@ @ @@@@@ ++++........... @ @ @ @ @@ @@ @ @ @@@ @@ @ @ @ ..... +++++ ", +" @ .....................................++++++++ @ @ @@ @@ @ @+++........... @ @@ @ @ @@ @@ @ @@@ @@ @@ @ @ @ @@ @ @@@ @ @ @@ ..... ++++ ", +" @ ....................................+++++++++@@@ @@ @@ @ @ ++++.......... @@ @@@ @ @ @ @@ @@ @ @@@ @@ @ @ @@ @ @@@@ @@ @@@ @ @ @@ @ .... +++++ ", +" @ ...................................+++++++++ @@@@@@@ @@ @@ @@ @@ @@ +++.......... @@@ @ @@ @ @@ @ @ @@@@@ @ @ @ @ @@@@ @ @@@ @ @..... +++++ ", +" @...................................+++++++++ @ @@@@ @@ @@@ @@ @ @ @@@ +++..........@ @ @@@ @@ @@ @ @ @ @ @ @ @@ @ @ @ @ @@@ @ @@ ..... +++++ @ ", +" @ @ .................................+++++++++@ @ @@ @@@ @ @@ @ @ +++.......... @ @ @ @@@@@ @ @ @@ @@ @ @ @@@@ @@ @@ @ @ @ ..... ++++ ", +" @ @ ................................+++++++++ @ @ @@@@ @ @@@@++..........@ @ @@@@ @@@ @ @ @ @ @ @@ @@ @ @@ @ @ @ @ .... +++++ ", +" @ @ ................................+++++++++ @ @ @@@@ @ @@ @ @ ++.......... @@@ @@ @@ @ @@ @@@ @ @@@ +@@@ @@ @ @ @@@ @ @ ..... @ +++++ ", +" ..............................++++++++++ @ @@ @@ @@ @@ @@ @@ @ @@ +.......... @@ @ @ @@ @@ @@ @ @@ @@ @ @ @ @ @ +++ @@ @@ @ @ @ ..... +++++ ", +" @@ .............................++++++++++@@ @ @ @ @@@@ @ @ @@ @ +.........+ @ @ @ @@ @ @ @ @@ @@ @ @ @+++ @@ @ @@@ @ @ @ @ @ ..... ++++ ", +" @ ............................++++++++++ @ @ @@@ @ @@ @ @@@ @+.........+ @ @ @ @ @ @ @ @+++@ @@ @@@@ @ @ @ .... +++++ @ ", +" ...........................+++++++++ @ @ @ @ @@ @@ @ @ @ @ @@+.........+ @@ @ @ @ @@ @@ @@@@ @ @ @ @ @ ++++@@@@@@@@@@@ @ @ ..... +++++ @ ", +" @ .........................++++++++++@ @ @ @ @@ @@@ @ @@ @ @ +........++ @@ @@ @@ @@ @ @@ @@@ @ @++++ ..@@ @ @ @@ @@@ @@ @ @ ..... ++++++ ", +" ......................+++++++++++ @@@@ @@@ @@@@@ @@@@@@ @ @ @@ +........++ @ @ @ @@ @ @ @ @@ @@ @@@@ @ +++++ @... @ @@ @@@ @ @ ...... +++++ @ ", +" +...................++++++++++++ @ @@ @ @@ @@ @@@ @@@ @@ @@ +........+@ @ @ @ @@ @ @ @ +++++ @... @ @ @@ @@@ @@ @@ @@@@ @ ...... +++++@ ", +" @ ++................+++++++++++++ @@@@ @@@ @@@ @@@ @ @ @@ @@@ @ @@@@ +.......++ @@ @ @ @ @@ @@ @@ @ @ @@@@ @@++++++ @....@ @@@@ @@@@@@@@ @ @ ..... ++++++@@ ", +" @ +++............++++++++++++++@ @ @ @@ @@@@@ @@@@ @@@ @ @ @@ +......+++ @ @ @ @ @@ @ @ @@ @@ @@@@++++++@ ....@@ @@@ @@@ @@@@@ @ @ ......@ ++++++ ", +" @ ++++.........+++++++++++++++@@@@@@@ @ @ @@ @ @@@ @ @@ @@@@@ @ @@@ +......+++ @ @@ @ @ @ @@ @@@@ @@ @@ @@@ @++++++@@..... @@@ @ @@@ @@@ @@ @@ ...... ++++++ @ ", +" @@ @ ++++++..+++++++++++++++++++@ @ @@ @ @ @@@ @@ @ @@@ @@ @ @@ @ +.....+++ @@@@ @ @ @ @ @@ @ @@ @@ @ @ @@ @ @ @@++++++@ ....@@@@@@@@ @@@@ @@ @@@ @@ ...... ++++++ ", +" @ @ +++++++++++++++++++++++++@@@@ @@@@@ @@ @@@@ @@ @ @@@@@@@@@ @ @@ +.....+++ @ @ @ @ @@ @@@ @@ @@@+++++++ .....@ @@@@ @ @ @@@@@@@@@ @ @@@ @ @...... ++++++ ", +" @ @++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@ @@@ @ @ @ @@@ @@@ @@@ @ +.....+++ @ @@ @@ @ @ @ @@ @ @ @ @@ @ @ @ @@@++++++@ .....@ @ @@@@@@ @@@@@@@ @@ @@@ @ ...... +++++++ @ ", +" @ +++++++++++++++++++++@ @@@@@@@@ @@ @@@@@@@@@@@@ @ @@@ @@@@@ @@@@@@@@@ @@ +....++++@ @ @ @ @ @@@@@@@ @ @ @@@@@ @ @ @@ @@+++++++ ......@@@@@ @@@@@@@@@@@ @@@ @ @@@@@ @...... +++++++ @ ", +" @ @ ++++++++++++++++++@@ @@ @@ @@@@ @@@@@@@@@@@@@ @ @@@@@@@@@ @@@@@ @ @ +....+++ @@@ @ @ @ @ @ @ @@ @ ++++++@.......@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @ .......@++++++ @ ", +" @ @@ @ ++++++++++++++@@ @@ @ @@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@ @ @@ @@@@ @@+...++++ @ @@@ @ @ @ @@ @ @@@@ @@@ @ @@@ @@@++++++@@.......@@@@@@@@@@@@ @@@@@@@@ @@ @@@ @@ @ ...... +++++++ @ ", +" @@@ @@ +++++++++++@@ @ @@@@@@ @@@@@@@ @@@@ @@@@@@@ @@@@@@@@@ @ @@@@@@@ @@@@@ @@++..++++ @@ @ @ @@ @ @@@ @ @ @ @+++++++@.......@@@@@@ @@@@@@@@ @@@@@@@@@@@@ @@ ...... +++++++@ @@ ", +" @ @ @@@ @@ ++++@@ @@@@@@ @@@@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@@ @@@@@@ @@@@@@@@ @@@+++++++ @ @ @@ @ @@ @ @ @ @ @ @@@@@@ @ @++++++@@.......@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@ ...... ++++++ @ ", +" @ @@@ @@ @@@ @@@ @ @@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@ @@@@@@@@@@ @@ @@ ++++++@ @@@ @ @ @@@ @ @@ @ @@ @@@ @@@++++++@@.......@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @ ....... ++++++ @ ", +" @ @ @ @@ @@@@ @@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@ @ @++++++ @ @ @@@@@@@@ @@@ @ @@ @@@ @ @@ @@@++++++@@......@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@......@+++++++ ", +" @ @@@ @ @@@ @ @@@@@ @@ @@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +++++ @@ @ @ @@ @ @ @@ @ @ @ @ @@@@@@@@@@ @@@@++++++@@.......@@@@@@@@@@@@@@@@@@@@ @ @@ @@@@@ @@@@@...... +++++++ @ @ ", +" @ @ @@ @ @ @@@@@@ @ @ @@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++ @@@ @ @ @@@ @ @@@@ @ @@@ @@@@@@@@@@@+++++ @@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ ...... ++++++ ", +" @ @@@@ @ @@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ +++++@@ @@@@ @@ @ @ @@ @@@@@@@@@ @ @@ ++++++@@......@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@......@@++++++ @ ", +" @ @ @@@@ @ @@@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ +++++@ @@ @ @ @ @@@@ @ @@@@ @ @@@ @@@@@@@ @@+++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ ...... ++++++ @ ", +" @ @ @@ @@ @ @@ @@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++++ @@ @@ @ @@@ @@ @@ @@@@@@@@@@@@@@@@@@@@++++++@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...... ++++++ @ ", +" @@ @@ @@@@ @@@@@@@@@@ @@@@@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@++@ @@@ @ @ @@ @@ @ @ @ @ @ @@ @@@@@@ @@@@@@@@@@@+++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@...... ++++++ @@@@ @ @ ", +" @ @ @ @@@ @ @@@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@ @ @ @ @@@ @ @@ @@@@@@@@@@@@@@@@@++++++@@......@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@...... @++++++ @ @ @ ", +" @ @@@@ @ @@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@ @ @@ @@@@@@@@@@@@@@@@@ @@@@@@@@+++++@@@.....@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@......@ +++++ @ @ ", +" @ @@@ @ @ @@@@ @@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@ @ @@ @ @ @ @@@@@@@@ @ @@@@@ @@@@@@@@++++++@@......@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++@ @ ", +" @ @@ @ @ @@ @@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@ @@ @ @@@ @ @@ @@@@ @@ @@@@ @@@@@@@ @@@@@++++++@@@.....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++ @ @ @ @ @ ", +" @@ @ @@@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@ @@ @ @ @@ @@@@@@@@@@@ @@@@@@@@ @@+++++ @@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......@++++++ @@ @ @ ", +" @ @ @ @ @@@@ @@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@ @@@ @@ @@@ @ @@@@@@@@@@@@@@++++++@@@.....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......@++++++ @ @@@ @@ @ ", +" @ @@@@ @ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@+++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@+++++++ @@ @ @ ", +" @@@ @ @ @@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@ @@@@ @@@ @@@@@@@@ @@@@@@@@@@@@@@++++++@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++@@@ @ @ @ @ ", +" @@ @ @ @ @@ @@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@@+++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++@ @ @ @ @ @ ", +" @ @ @@ @ @@@ @@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@++++++@@......@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .......@++++++ @@@@ @ @@ @ @@ ", +" @ @@@ @@ @@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@+++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......+++++++@@ @ @ @ @ @ ", +" @@@ @ @ @ @ @ @@@@ @ @ @@@@@@@@@ @@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@++++++@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @......@+++++++@ @@@ @ @@@ ", +" @ @ @ @@@@@@@@@@ @@@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@... @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......@++++++ @ @ @ @ @ @ ", +" @ @ @ @ @@ @@ @@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@...@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@++++++@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......@++++++@@ @ @@@ @ ", +" @ @ @ @@ @@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@....@@ @@@ @@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@++++++@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......+++++++@ @ @@ @@@ @@@ @ ", +" @ @ @@ @@ @@@@@@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++++@@......@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......+++++++@ @@@ @@ @ ", +" @@ @@@ @ @ @@ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....@+@@@@@@ @@@@@@@@@@@@@@@+@@@@@@@@@@@@@+++++++@@@...... @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@......@+++++++@@ @ @@@@ @@ ", +" @ @ @ @@@@ @@@ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.....+@@@@@ @@ @@@@@@@@@@@ @+++@@@@@@@@@@@@+++++++@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@......@++++++ @@ @@ @ @@ @@ ", +" @ @ @ @ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......+ @@@ @ @@@@ @@@@@+++++@@@@@@@@ @++++++++@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@......@++++++ @@ @ @@@@@ @ ", +" @ @ @@@@ @ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......+@@@@@ @ @ @@ @@ +++++ @@@@@@@@++++++++@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@.......@++++++ @ @@ @@@ @ @ @ @ ", +" @ @ @@@@@@ @@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@.......+@ @@ @ @@+++++++@@ @@@@+++++++++@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......+++++++@@ @ @ @@ @ ", +" @ @ @ @ @@ @ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@.......++@@@@ @ @ @ ++++++++@..@@++++++++++@.......@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...... +++++++ @@ @@ ", +" @ @@ @@ @@@ @ @@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@........++@ @@ @ +++++++++....++++++++++@........@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@ ......@++++++@@ @@@@ @ @ ", +" @ @@@@@@@ @ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@........+ @@ @ +++++++++......+++++++++........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++ @ @ @@ @ ", +" @ @ @@ @@@@@@ @@@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.........+@ @ +++++++++......++++++++@........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++ @@@ @@ ", +" @ @ @ @ @ @ @@ @@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@.........++@ @ +++++++++.......+++++++.........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@++++++ @@ @ ", +" @ @@ @@ @@ @ @@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.........++ ++++++++.........+++++.........@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@......@+++++++@ @ @@ @@ @ ", +" @ @ @@ @@@@ @@@@ @@ @@ @@ @@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@.........+++ @@@ ++++++++........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......@+++++++ @@@@@ ", +" @ @ @@@@@@@ @@ @@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@ @@@.........+++ @ @ ++++++++.......................@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@ @@@@@...... ++++++@@ @ @@@ @ @ ", +" @ @ @ @@@ @@ @@@ @@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ ..........+++ @@ @@ @ ++++++++....................... @@@@ @@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@...... ++++++@ @ @ ", +" @@@@ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@ @@@ .........++++@ @@ +++++++++.......................@@@@ @@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @...... ++++++@ @ @ @ @@ @ ", +" @ @@@@ @@ @@@ @ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@ @@@.........+++++@ @@ @ ++++++++....................... @ @@@ @@@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@.......@++++++@@ @ @ ", +" @ @@ @@ @@@@ @@@@@@@@@ @@@@ @@ @@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@@ @@@ @@@@@..........++++@@ @ @ +++++++++......................@@ @@@@@ @@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@....... ++++++ @ @ ", +" @ @@ @ @ @@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@ @@ @@@@ @@@@ @ @@ @@ .........+++++@@ @ @+++++++++......................@@@@@@@ @@@ @@ @@@@@ @@@@@@ @@@@@@@ @@ @@@@@@ @@ ......@+++++++ @ @ @ @ @@ @ ", +" @@@ @ @ @@@@@@@@@@@@@@@ @@@@ @ @@@@@@@ @@@@@@@ @@ @ @@ @ .........+++++ ++++++++....................... @@@ @@ @@@@@@@@ @ @@@@@ @@@ @ @ @ @ @@ @@@......@+++++++ @ @ ", +" @ @@ @@ @ @@ @@ @@@ @ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@ @ @@@ @@ @@@ .........+++++ @ @ +++++++++...................... @ @@ @@@@ @@@@@@@@@ @@@@@@ @ @@@@@@@@@@ @@....... +++++++ @ @@ ", +" @ @ @@@ @ @@@ @ @@ @@ @@@@@@@@@@ @@@@@@@@@ @@ @@@@@@@@ @ @@@ @ @.........+++++ @ @ ++++++++.......................@@ @ @ @ @@@ @@@ @@ @@@ @ @@@@@@@@ @@@@ @ ....... +++++++@ ", +" @@ @ @ @ @ @@@ @ @@ @@ @@@@@@@@ @@ @@@@ @ @@ @@ @@ @@@ @ .........+++++ ++++++++.......................@ @@@@ @ @ @ @@@ @ @@ @@ @ @@ @@@ @@@ @@ .......@+++++++ ", +" @@ @@@@@@@ @@@@@@@@@@@@ @ @@@@@ @@@ @@@@@ @@@ @@ @@@@@@@ @@@.........+++++@ @@ ++++++++.......................@ @@@@@@@@@@@@@ @@@ @ @ @@ @ @ @@@@@@@@@@@@@@ ....... +++++++ @ ", +" @ @ @@ @@@@ @@@ @@ @@@@ @@ @@@@@@ @@ @@@ @ @@@ @ @ @@..........+++++ @ ++++++++.......................@ @@@ @ @ @ @ @ @@@@ @ @ @@ @@@@@ @@ @@@....... ++++++ ", +" @ @ @@ @ @ @ @ @@ @@@@@ @@@@@@@ @ @ @@@@@ @@ @ @@@ @ @@ @ .........+++++ +++++++........................ @ @ @ @@@ @@@@ @@ @@@ @ @ @ @ ...... ++++++ @ ", +" @ @@@ @@@ @ @@ @@@ @ @@@@ @ @@ @ @@ @@@ @ @@ .........+++++ @ ++++++++....................... @@ @ @@ @ @ @ @@ @@@ @ @ @@ @ @ @@ @@...... +++++++ @@ @@ ", +" @ @ @@ @@ @@@@ @@@@ @@ @ @@@@@ @ @@ @@@ @@@ @@@@@@ @ ..........++++@ @ +++++++......... ..............@@@ @@@@@@@@@ @ @ @@@ @@ @ @ @@@ @@@@ @ .....@ ++++++@ @ ", +" @ @@@@ @ @ @@@@ @ @@@@ @ @ @@ @ @@ @ @ @ @@@@ @ .........+++++ @ @ +++++++ ........ ............ @ @ @@@@@@ @ @@@ @@ @ @ @@@ @@@@ @ ..... ++++++ @@ ", +" @@ @ @@ @ @ @ @@ @ @@ @@ @ @ @ @ @ @ @ @@ .........+++++ @ @ +++++++........ .......... @ @@ @ @ @@ @ @ @ @ @@ @ .... +++++@@ ", +" @@ @ @ @@ @ @@ @ @ @@ @ @@@@ @ ..........++++ @+++++++ ....... .......@@ @ @ @ @ @@ @@ @ @ @@ @ @@ @ @@@ @@ .... +++++ @ @@ ", +" @ @@ @ @@ @@@ @@ @@@@ @ @@.........+++++ @ ++++++ ........ ..... @ @@ @@@ @ @ @ @ @@@ @... @ +++ @ ", +" @ @ @@@ @ @ @@ @ @ @ @@@ @@ @ @ @ @@@.........+++++ @ @ @ @ +++++++ ....... @ @ @ @ @ @@@ @@ @ @@@@@ ... +++ @ ", +" @@ @ @@@ @ @ @ @@ @ @ @ @@ .........+++++@ @@ @ +++++++........ @@ @@@ @ @ @ @ @ @ @ @@ @ .. @@ @ ++ @ ", +" @ @@ @ @ @ @@ @ @ @@@@@@ @@@ @ ..........+++++ @ @ @+++++++ ....... @ @ @@@ @@ @ @ @ @@ @ @ @ . @ @ ++ @ @@ ", +" @@@@ @@@ @ @ @ @ @@ @ @.........+++++ +++++++.......@ @ @ @ @@ @@ @ @ @ @@@ + ", +" @ @@ @ @@ @@ @@ @@ @ @@@ @ @ @@ @.........+++++ ++++++ ....... @@ @@ @ @@@@@@@ @ @@ @ @ @ @ @ @ @@ @ @+ ", +" @ @ @ @ @@ @ @ @ @ @ ..........+++++ @ +++++++ ......@ @ @ @ @ @ @ @@@ @ @ @@ @@@ @ @@ ", +" @ @ @@ @ @.........+++++@@ @@ +++++++....... @ @ @@ @ @ @ @@ @@ @ @ ", +" @ @@ @ @@@ @ .........+++++ @@ @@ +++++++ ....... @ @@ @ @ @ @ @ @ @@ @ @ @@@ @ @@ @ ", +" @ @ @ @@@ @@@ ..........++++ @@ @@ +++++++....... @ @ @ @ @@@ @@@@ @ @@ @@@@@ @ @ @ @ ", +" @ @ @ @ @@@@ ..........+++++@@ +++++++ .......@ @ @@ @ @ @ @ @ @@ @ @ @ @ ", +" @@ @ @ @ @ .........+++++ @ @@ ++++++ ....... @ @ @ @@@@ @ @ @@ @ @ @@@ @ @ @@@ @ @ @ @ @ ", +" @ @ @@ @@ @@@ @ @..........++++@ ++++++ ....... @ @@ @@@@ @ @ @ @ @ @ @ @ @ @ ", +" @ @ @@ @ @@ @ @ @ @@ @ @@@@ ..........+++++ @ ++++++@ ....... @ @@@ @@ @ @ @ @@@@ @@ @ ", +" @ @ @ @@ @ @ .........+++++@ @ @ ++++++@.......@ @ @@ @@ @ @ @ @ @ @ @@ @@ @ @ @@ ", +" @ @ @ @ @ @@@ @ @@@ .........+++++ @ @ +++++ ....... @ @ @ @ @@ @ @ @ @@ @ @@@ @@ @ @@ @ @ ", +" @ @ @ @ @ @@ @..........+++++ @@ @@ @ ++++ ....... @@ @ @@@ @@ @ @@ @@ @ @@ @ @@@ @ ", +" @ @ @ @ @ @@ @ @@@.........+++++@@ @ @ @ @ +++++ ....... @ @ @@ @@ @@ @@@ @@ @ @ @ @ @@ ", +" @ @ @ @ .........+++++@ @ @@ @++++ ...... @ @@ @ @ @ @ @ @@@ @@ @ @ ", +" @ @ @ @ @ @ @ @..........+++++@ @ ++++ ....... @ @ @ @@ @ @ @@ @@ @ @@ @ @@ @ ", +" @ @@ @@..........+++++@ @ +++ ......@@ @ @ @ @ @@ @@@ @ @ @ @@@@@@ @@ @ ", +" @ @@ @@ @ .........+++++ @@ @@@@ @ ++++ ..... @ @@ @ @ @ @ @@ @@ @ @@ @ @@@ @ ", +" @ @..........++++@@@ @@@@@ ++++ ....@ @ @ @@@@ @@@ @@ @ @@ @ ", +" @ @@ ..........+++++ @ @ +++ ..... @ @ @ @ @ @ @@@ @@ @@@ @ @ @ @ @ @ ", +" @ @ @@ .........+++++ @ @ @ @ +++ .... @ @ @ @@@ @ @@ @ @ @ @ @ @ @ @ @ ", +" @ @ @ ..........++++@ @@ @ @ @ @@ @ ++++ @.... @ @ @ @@ @@ @ @ @@ @@@@@ @ ", +" @..........+++++@ @@@ @ @ +++ .... @ @ @ @@ @ @@ @@ @@ @@@ @ @@ @ @ ", +" @ ..........+++++ @ @ @@ @ +++ .... @ @@ @@@@@ @@ @ @ @ @ @ ", +" @ .........+++++ @ @ @ @@@@ @ @ ++@ .... @ @ @ @@ @ @ @ @ @ @ @ ", +" @ @@ @ @@..........+++++ @ @ @@ @@@@ + .... @ @@ @@ @ @ @ @ @ @@ @@ @ @ @ @ @ ", +" @ @ @ @@@ ..........+++++@ @ @@ @@ @ ... @ @@ @ @ @ @ @@@ @ @ ", +" @ @ .........+++++ @ @ @@ @ ... @ @ @ @ @@@ @@ @ @ @ @ @ @ ", +" @@ @ ..........+++++@ @ @ @ @@@ @ ... @ @ @ @@ @ @@@@ @@@@ @ ", +" @@ ..........+++++ @ @@ @ @ @ @ @ @ .. @ @ @ @ @ @@ @ @@ @ @@@ @@ @@ @ @ @@ ", +" @ .........+++++@ @ @ @@@ @ @@ @ . @@@ @@ @@ @@ @ @ @ @ @ @@@ @ @@@ @ ", +" @ @ ..........++++ @ @@@ @ @ @@ @@ @ @ @@@ @ @@ @ @ @ @ @@ @@ @ @@ @ ", +" @ ..........+++++ @ @@@@ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +" ..........+++++ @ @ @ @ @ @ @ @ @@@ @ @ @@ @@ ", +" @ @ ..........++++ @ @ @ @ @ @@ @ @ @ @ @ ", +" @ ..........+++++ @ @ @ @ @ @ @ @ @ @ @ ", +" @ @ ..........+++++ @@ @ @ @ @ @ @@ @ @ @ @ @ ", +" @ .........+++++ @ @ @ @@ @@@ @@@ @@ @ @@ @ @ @ @ @ @ ", +" ..........+++++ @@ @ @ @ @ @@ @ @ @ @ ", +" @ ..........+++++ @ @ @ @@ @@ @ @ @ @ @ @@ @ @ ", +" .........+++++ @ @ @ @ @ @ ", +" ..........+++++ @@@ @ @@ @ @@ @ @ @ @@@ @ @ ", +" @ ..........+++++ @ @ @@ @ @@ @ ", +" ..........+++++ @ @ @ @ @@ @ @ @@ @@ @ @ @ @ @ ", +" ..........++++ @ @ @ @ ", +" @ @ ..........+++++ @ @ @ @ @ @ ", +" @ ..........+++++ @ @ @ ", +" @ ..........++++ @ @ @ @ ", +" ..........+++++@ @ @ @ @ @@ @ @@ @ @ ", +" .........+++++ @ @ @ @ @ @@ @ @ @ @ @ ", +" .........+++++ @ @ @ @ ", +" @.........+++++ @@ @ @@ @@ ", +" ........+++++ @ @ @ @ ", +" ........+++++ @ @ @ ", +" ........+++++ @ @ @ @ @ ", +" @ ........+++++ @ ", +" @ .......+++++ @@ @ @ ", +" .......++++ ", +" .......+++++ ", +" ......+++++ ", +" ......++++ ", +" ......+++++ ", +" .....+++++ ", +" .....+++++ ", +" .....+++++ ", +" ....+++++ ", +" ....+++++ ", +" ....+++++ ", +" ...+++++ ", +" ...+++++ ", +" ...++++ ", +" ...+++++ ", +" .. ++++ ", +" ..++++ ", +" .. ++++ ", +" . ++++ ", +" +++ ", +" . +++ ", +" +++ ", +" ++ ", +" ++ ", +" ++ ", +" + ", +" ", +" + ", +" ", +" ", +" ", +" "}; diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0f3847a..d04dbef 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,351 @@ +2003-02-08 23:23:27 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.15 is released. + +2003-02-08 Michael Welsh Duggan + + * nnmail.el (nnmail-split-it): If a message ends up matching the + same mailbox more than once, it will cause duplicates to appear + in the mailbox. + +2003-02-08 Simon Josefsson + + * gnus-sum.el (gnus-summary-select-article): Remove blink removal + code that only worked under Emacs. + + * pgg-gpg.el (pgg-gpg-process-region): Don't blink. From Satyaki + Das . + +2003-02-08 Jesper Harder + + * gnus-art.el (gnus-article-refer-article): Use + gnus-replace-in-string. + + * gnus-util.el (gnus-map-function): Remove unneeded let-binding. + (gnus-remove-duplicates): do. + +2003-02-07 Teodor Zlatanov + + * gnus-int.el (gnus-internal-registry-spool-current-method): new variable + (gnus-request-scan): set + gnus-internal-registry-spool-current-method to gnus-command-method + before a request-scan operation + + * gnus-registry.el (regtest-nnmail): use + gnus-internal-registry-spool-current-method + + + +2003-02-07 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch): Typo fix. + +2003-02-07 Teodor Zlatanov + + * nnmail.el (nnmail-spool-hook): new hook + (nnmail-cache-insert): call nnmail-spool-hook + + * gnus-registry.el: new file with examples of using the hooks + + * gnus.el (gnus-registry): added registry customization group + (gnus-group-prefixed-name): improve function to return full group + name optionally + (gnus-group-guess-prefixed-name): shortcut to + gnus-group-prefixed-name, using just the group name + (gnus-group-full-name): always get a group's full name + (gnus-group-guess-full-name): shortcut, using just the group name + + * gnus-sum.el (gnus-summary-article-move-hook) + (gnus-summary-article-delete-hook) + (gnus-summary-article-expire-hook): new hooks + (gnus-summary-move-article, gnus-summary-expire-articles) + (gnus-summary-delete-article): invoke the new hooks + +2003-02-07 Frank Weinberg + + * gnus-art.el (gnus-article-refer-article): Strip leading "news:" + from message-ID + +2003-02-07 Jesper Harder + + * gnus-util.el (gnus-run-hooks): Use save-current-buffer. + +2003-02-07 John Paul Wallington + + * mm-util.el (mm-delete-duplicates, mm-append-to-file) + (mm-write-region, mm-detect-coding-region): Doc fixes. + +2003-02-07 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch): Ignore errors. + (mail-source-ignore-errors): New variable. + + * gnus-sum.el (gnus-summary-refer-thread): Don't re-fetch current + articles. + + * gnus-msg.el (gnus-version-expose-system): Change default. + +2003-02-07 Vasily Korytov + + * gnus-msg.el (gnus-version-expose-system): New variable. + +2003-02-07 Simon Josefsson + + * mml-sec.el (mml-unsecure-message): Don't use kill-region. Tiny + patch from deskpot@myrealbox.com (Vasily Korytov). + +2003-02-02 Lars Magne Ingebrigtsen + + * gnus-art.el (article-display-face): Get the Face header from + the current buffer. + +2003-02-06 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-view-part-internally): Bind + buffer-read-only to nil. + +2003-02-05 Katsumi Yamaoka + + * gnus-agent.el (gnus-agent-expire-1,2): Pass the dir argument + from g-a-e-1 to g-a-e-2. + +2003-02-05 Teodor Zlatanov + + * spam.el (spam-check-BBDB): no need to regexp-quote the argument + of bbdb-search-simple, use spam-use-BBDB-exclusive + (spam-check-whitelist): use spam-use-whitelist-exclusive + (spam-use-whitelist-exclusive): new variable affecting + spam-use-whitelist + (spam-use-BBDB-exclusive): new variable affecting spam-use-BBDB + +2003-02-05 Simon Josefsson + + * gnus-agent.el (gnus-agent-expire-days): Change default to nil. + (gnus-agent-expire): Don't expire if g-a-e-d is nil. + (gnus-agent-expire): Move most code into gnus-agent-expire-1. + (gnus-agent-expire-1): New. + (gnus-agent-expire-1): Move code into gnus-agent-expire-2. + (gnus-agent-expire-2): New. + +2003-02-05 Jesper Harder + + * gnus-util.el (gnus-delete-if): Rename to gnus-remove-if. + "delete-if" is misleading because it isn't actually destructive. + + * gnus-topic.el (gnus-group-prepare-topics): Use new name. + + * nnmail.el (nnmail-purge-split-history): do. + + * gnus-win.el (gnus-get-buffer-window): do. + + * gnus-sum.el (gnus-simplify-whitespace): Remove unnecessary + let-binding. + (gnus-simplify-all-whitespace): do. + +2003-02-05 Katsumi Yamaoka + + * gnus-delay.el (gnus-delay-article): Fix binding of the + nndraft:delayed group. + +2003-02-04 Teodor Zlatanov + + * gnus.el (spam group parameters): change 'other to 'const in + the group parameter definitions to soothe XEmacs + +2003-02-04 Kai Gro,A_(Bjohann + + * gnus-delay.el (gnus-delay-article): Really create + nndraft:delayed group if it doesn't exist. + +2003-02-04 Jesper Harder + + * gnus-sum.el (gnus-summary-search-article): Speed up by + disabling various visual features while searching. + (gnus-summary-recenter): Test gnus-auto-center-summary first. + +2003-02-03 Jesper Harder + + * spam.el (spam-list-of-checks): Don't quote nil and t in + docstrings. From the elisp manual: + + When a documentation string refers to a Lisp symbol, write + it [..] with single-quotes around it. [..] There are two + exceptions: write t and nil without single-quotes. + + * messcompat.el (message-from-style): do. + + * message.el (message-send-mail): do. + + * gnus-util.el (gnus-use-byte-compile): do. + + * gnus-score.el (gnus-score-lower-thread): do. + + * gnus-int.el (gnus-server-unopen-status): do. + + * gnus.el (gnus-define-group-parameter, gnus-large-newsgroup) + (large-newsgroup-initial, gnus-install-group-spam-parameters): do. + + * gnus-cus.el (gnus-group-customize, gnus-score-parameters) + (gnus-group-parameters): do. + + * gnus-art.el (gnus-article-mime-match-handle-function): do. + + * mm-decode.el (mm-text-html-renderer): do. + +2003-02-02 Katsumi Yamaoka + + * nnheader.el (nnheader-directory-separator-character): Change the + way to compute the dafault value. + +2003-02-02 Jesper Harder + + * gnus-art.el (gnus-button-handle-describe-key): Implement it. + (gnus-button-alist): Fix regexp for describe-key. + (gnus-button-handle-describe-function) + (gnus-button-handle-describe-variable) + (gnus-button-handle-apropos, gnus-button-handle-apropos-command) + (gnus-button-handle-apropos-variable) + (gnus-button-handle-apropos-documentation): Docstring fix. + + * gnus-util.el (gnus-kill-buffer): Use get-buffer. + +2003-02-01 Lars Magne Ingebrigtsen + + * gnus-draft.el (gnus-group-send-queue): Bind gnus-posting-styles + to nil. + + * nnmail.el: Removed gnus-util autoload. + + * gnus.el: Use gnus-prin1-to-string throughout. + + * gnus-util.el (gnus-prin1-to-string): Bind print-length and + print-level. + + * gnus-art.el (article-display-x-face): Removed grey x-face stuff. + (gnus-treat-display-grey-xface): Removed. + + * gnus-fun.el (gnus-grab-cam-face): New. + (gnus-convert-image-to-gray-x-face): Removed. + (gnus-convert-gray-x-face-to-xpm): removed. + (gnus-convert-gray-x-face-region): Removed. + (gnus-grab-gray-x-face): Removed. + + * nnmail.el (nnmail-expiry-wait-function): Doc indent. + +2003-01-31 Jesper Harder + + * gnus-util.el (gnus-kill-buffer): Functions in gnus-util + shouldn't depend on the rest of Gnus, so test if gnus-buffers is + bound. + + * nnmail.el (nnmail-cache-close): Use gnus-kill-buffer. + +2003-01-30 Jesper Harder + + * gnus-cite.el (gnus-cite-reply-regexp, gnus-cite-always-check): + Remove -- these are bogus options which are never used. + +2003-01-29 Jesper Harder + + * gnus-art.el (gnus-article-mode): Use summary tool bar. + +2003-01-27 Teodor Zlatanov + + * spam.el (spam-check-blackholes) + (spam-blackhole-good-server-regex): new variable to skip some IPs + when checking blackholes; use it + (spam-check-bogofilter-headers) + (spam-bogofilter-bogosity-positive-spam-header): new variable, in + case more X-Bogosity is used than just "Yes/No" + (spam-ham-move-routine): semi-fixed, only first article is + properly moved now + +2003-01-27 Jesper Harder + + * gnus-util.el (gnus-kill-buffer): Remove buffer from gnus-buffers + as well. + + * gnus-sum.el (gnus-select-newsgroup): Use gnus-kill-buffer. + + * gnus-score.el (gnus-score-headers, gnus-score-find-bnews): do. + + * gnus-start.el (gnus-save-newsrc-file, gnus-clear-system): do. + + * gnus-bcklg.el (gnus-backlog-shutdown): do. + + * gnus-srvr.el (gnus-server-exit, gnus-browse-exit): do. + +2003-01-26 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-face-encode): New function. + (gnus-convert-png-to-face): Use it. + + * gnus-sum.el (gnus-summary-make-menu-bar): Added M-& to marks. + +2003-01-26 Jesper Harder + + * mm-decode.el (mm-dissection-list): Remove. + (mm-dissect-singlepart): Don't push to mm-dissection-list, it's + only used in mm-remove-all-parts. + (mm-remove-all-parts): Remove it, it's never called. + +2003-01-25 Simon Josefsson + + * gnus-group.el (gnus-group-make-group): Report errors. + + * nnimap.el (nnimap-request-create-group): Ditto. + + * sieve-manage.el (sieve-manage-is-okno): Parse literal strings. + + * sieve.el (sieve-upload): Fix error printing. + + * mm-encode.el (mm-qp-or-base64): Always QP iff + mm-use-ultra-safe-encoding and cleartext PGP. + + * gnus-sum.el (gnus-summary-select-article): Inhibit + redisplay (mainly for secured messages). + + * nnmail.el (nnmail-article-group): Copy body too (but don't + process it). + +2003-01-25 Jesper Harder + + * gnus-art.el (gnus-article-setup-buffer): Reset + gnus-button-marker-list. + +2003-01-25 Lars Magne Ingebrigtsen + + * nntp.el (nntp-read-timeout): Default to using a second delay + under Microsoft Windows. + +2003-01-24 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-directory-separator-character): New + variable. + +2003-01-24 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-max-fetch-size) + (gnus-agent-article-alist, gnus-agent-get-undownloaded-list) + (gnus-agent-catchup, gnus-agent-summary-fetch-group) + (gnus-agent-fetch-articles, gnus-agent-backup-overview-buffer) + (gnus-agent-flush-cache, gnus-agent-fetch-headers) + (gnus-agent-braid-nov, gnus-agent-load-alist) + (gnus-agent-article-alist-save-format) + (gnus-agent-read-agentview, gnus-agent-save-alist) + (gnus-agent-fetch-group-1, gnus-agent-expire) + (gnus-agent-uncached-articles, gnus-agent-retrieve-headers) + (gnus-agent-regenerate-group): Reformat to keep under eighty + columns. Reword docstrings so that first line is under eighty + chars and a complete sentence. Still need to work on the rear + end of the file, in particular gnus-agent-expire. + +2003-01-24 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agentize): Indent. + + * gnus.el (gnus-version-number): Bumped. + 2003-01-24 20:32:44 Lars Magne Ingebrigtsen * gnus.el: Oort Gnus v0.14 is released. @@ -5,7 +353,7 @@ 2003-01-24 Kai Gro,A_(Bjohann * gnus-sum.el (gnus-summary-prepare-threads): Reset state for %B - before beginning. Trivial patch from Mark Thomas + before beginning. Tiny patch from Mark Thomas . 2003-01-24 Teodor Zlatanov diff --git a/lisp/deuglify.el b/lisp/deuglify.el index 2628011..5ec5c13 100644 --- a/lisp/deuglify.el +++ b/lisp/deuglify.el @@ -1,7 +1,7 @@ ;;; deuglify.el --- deuglify broken Outlook (Express) articles -;; Copyright (C) 2002 Free Software Foundation, Inc. -;; Copyright (C) 2001,2002 Raymond Scholz +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002 Raymond Scholz ;; Author: Raymond Scholz ;; Thomas Steffen (unwrapping algorithm, diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index 67f7510..17227e4 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -131,7 +131,7 @@ to the specified name LIBRARY (a la calling `load' instead of `load-library')." (byte-optimize-form '(and (< 0 1) - (message "The subform `(< 0 1)' should be optimized to `t'")) + (message "The subform `(< 0 1)' should be optimized to t")) 'for-effect)) '(< 0 1)) (defadvice byte-optimize-form-code-walker diff --git a/lisp/dig.el b/lisp/dig.el index ae6a6ef..953dc1d 100644 --- a/lisp/dig.el +++ b/lisp/dig.el @@ -1,5 +1,5 @@ ;;; dig.el --- Domain Name System dig interface -;; Copyright (c) 2000, 2001 Free Software Foundation, Inc. +;; Copyright (c) 2000, 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: DNS BIND dig diff --git a/lisp/dns.el b/lisp/dns.el index 4be31e7..8268358 100644 --- a/lisp/dns.el +++ b/lisp/dns.el @@ -1,5 +1,5 @@ ;;; dns.el --- Domain Name Service lookups -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: network diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 69ac0c1..14506d5 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -1,5 +1,5 @@ ;;; gnus-agent.el --- unplugged support for Semi-gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -63,12 +63,14 @@ :group 'gnus-agent :type 'integer) -(defcustom gnus-agent-expire-days 7 +(defcustom gnus-agent-expire-days nil "Read articles older than this will be expired. -This can also be a list of regexp/day pairs. The regexps will -be matched against group names." +This can also be a list of regexp/day pairs. The regexps will be +matched against group names. If nil, articles in the agent cache are +never expired." :group 'gnus-agent - :type 'integer) + :type '(choice (number :tag "days") + (const :tag "never" nil))) (defcustom gnus-agent-expire-all nil "If non-nil, also expire unread, ticked and dormant articles. @@ -154,7 +156,9 @@ If this is `ask' the hook will query the user." :group 'gnus-agent) (defcustom gnus-agent-max-fetch-size 10000000 ;; 10 Mb - "gnus-agent-fetch-session is required to split its article fetches into chunks smaller than this limit." + "Chunk size for `gnus-agent-fetch-session'. +The function will split its article fetches into chunks smaller than +this limit." :group 'gnus-agent :type 'integer) @@ -164,16 +168,15 @@ If this is `ask' the hook will query the user." (defvar gnus-agent-buffer-alist nil) (defvar gnus-agent-article-alist nil "An assoc list identifying the articles whose headers have been fetched. - If successfully fetched, these headers will be stored in the group's overview file. - The key of each assoc pair is the article ID. - The value of each assoc pair is a flag indicating - whether the identified article has been downloaded (gnus-agent-fetch-articles - sets the value to the day of the download). - NOTES: - 1) The last element of this list can not be expired as some - routines (for example, get-agent-fetch-headers) use the last - value to track which articles have had their headers retrieved. - 2) The gnus-agent-regenerate may destructively modify the value. +If successfully fetched, these headers will be stored in the group's overview +file. The key of each assoc pair is the article ID, the value of each assoc +pair is a flag indicating whether the identified article has been downloaded +\(gnus-agent-fetch-articles sets the value to the day of the download). +NOTES: +1) The last element of this list can not be expired as some + routines (for example, get-agent-fetch-headers) use the last + value to track which articles have had their headers retrieved. +2) The gnus-agent-regenerate may destructively modify the value. ") (defvar gnus-agent-group-alist nil) (defvar gnus-category-alist nil) @@ -451,10 +454,11 @@ minor mode in all Gnus buffers." (gnus-open-agent) (add-hook 'gnus-setup-news-hook 'gnus-agent-queue-setup) (unless gnus-agent-send-mail-function - (setq gnus-agent-send-mail-function (or - message-send-mail-real-function - message-send-mail-function) + (setq gnus-agent-send-mail-function + (or message-send-mail-real-function + message-send-mail-function) message-send-mail-real-function 'gnus-agent-send-mail)) + (unless gnus-agent-covered-methods (mapcar (lambda (server) @@ -772,9 +776,11 @@ article's mark is toggled." (let ((a (caar alist)) (h (mail-header-number (car headers)))) (cond ((< a h) - (pop alist)) ; ignore IDs in the alist that are not being displayed in the summary + ;; Ignore IDs in the alist that are not being + ;; displayed in the summary. + (pop alist)) ((> a h) - ;; headers that are not in the alist should be + ;; Headers that are not in the alist should be ;; fictious (see nnagent-retrieve-headers); they ;; imply that this article isn't in the agent. (gnus-agent-append-to-list tail-undownloaded h) @@ -799,13 +805,19 @@ article's mark is toggled." gnus-newsgroup-unfetched (cdr unfetched)))))) (defun gnus-agent-catchup () - "Mark all articles as read that are neither cached, downloaded, nor downloadable." + "Mark as read all unhandled articles. +An article is unhandled if it is neither cached, nor downloaded, nor +downloadable." (interactive) (save-excursion (let ((articles gnus-newsgroup-undownloaded)) (when (or gnus-newsgroup-downloadable gnus-newsgroup-cached) - (setq articles (gnus-sorted-ndifference (gnus-sorted-ndifference (copy-sequence articles) gnus-newsgroup-downloadable) gnus-newsgroup-cached))) + (setq articles (gnus-sorted-ndifference + (gnus-sorted-ndifference + (copy-sequence articles) + gnus-newsgroup-downloadable) + gnus-newsgroup-cached))) (while articles (gnus-summary-mark-article @@ -817,7 +829,8 @@ article's mark is toggled." (when gnus-newsgroup-processable (setq gnus-newsgroup-downloadable (let* ((dl gnus-newsgroup-downloadable) - (gnus-newsgroup-downloadable (sort (copy-sequence gnus-newsgroup-processable) '<)) + (gnus-newsgroup-downloadable + (sort (copy-sequence gnus-newsgroup-processable) '<)) (fetched-articles (gnus-agent-summary-fetch-group))) ;; The preceeding call to (gnus-agent-summary-fetch-group) ;; updated gnus-newsgroup-downloadable to remove each @@ -849,8 +862,11 @@ Optional arg ALL, if non-nil, means to fetch all articles." (error "No articles to download")) (gnus-agent-with-fetch (setq gnus-newsgroup-undownloaded - (gnus-sorted-ndifference gnus-newsgroup-undownloaded - (setq fetched-articles (gnus-agent-fetch-articles gnus-newsgroup-name articles))))) + (gnus-sorted-ndifference + gnus-newsgroup-undownloaded + (setq fetched-articles + (gnus-agent-fetch-articles + gnus-newsgroup-name articles))))) (save-excursion (dolist (article articles) @@ -1041,9 +1057,11 @@ This can be added to `gnus-select-article-hook' or ;; new one. I do this after adding the article as I want at ;; least one article in each set. (when (< gnus-agent-max-fetch-size - (setq current-set-size (+ current-set-size (if (= header-number article) - (mail-header-chars (car headers)) - 0)))) + (setq current-set-size + (+ current-set-size + (if (= header-number article) + (mail-header-chars (car headers)) + 0)))) (setcar selected-sets (nreverse (car selected-sets))) (setq selected-sets (cons nil selected-sets) current-set-size 0)))) @@ -1081,7 +1099,8 @@ This can be added to `gnus-select-article-hook' or (goto-char (point-max)) (push (cons article (point)) pos) (insert-buffer-substring nntp-server-buffer))) - (copy-to-buffer nntp-server-buffer (point-min) (point-max)) + (copy-to-buffer + nntp-server-buffer (point-min) (point-max)) (setq pos (nreverse pos))))) ;; Then save these articles into the Agent. (save-excursion @@ -1100,8 +1119,9 @@ This can be added to `gnus-select-article-hook' or (while (looking-at "\\([^: \n]+\\):\\([0-9]+\\) *") (push (cons (buffer-substring (match-beginning 1) (match-end 1)) - (string-to-int (buffer-substring (match-beginning 2) - (match-end 2)))) + (string-to-int + (buffer-substring (match-beginning 2) + (match-end 2)))) crosses) (goto-char (match-end 0))) (gnus-agent-crosspost crosses (caar pos) date))) @@ -1109,12 +1129,14 @@ This can be added to `gnus-select-article-hook' or (if (not (re-search-forward "^Message-ID: *<\\([^>\n]+\\)>" nil t)) (setq id "No-Message-ID-in-article") - (setq id (buffer-substring (match-beginning 1) (match-end 1)))) + (setq id (buffer-substring + (match-beginning 1) (match-end 1)))) (write-region-as-coding-system gnus-agent-file-coding-system (point-min) (point-max) (concat dir (number-to-string (caar pos))) nil 'silent) - (gnus-agent-append-to-list tail-fetched-articles (caar pos))) + (gnus-agent-append-to-list + tail-fetched-articles (caar pos))) (widen) (pop pos)))) @@ -1156,11 +1178,11 @@ This can be added to `gnus-select-article-hook' or (let ((root (gnus-agent-article-name ".overview" gnus-newsgroup-name)) (cnt 0) name) - (while (file-exists-p (setq name (concat root "~" (int-to-string (setq cnt (1+ cnt))) "~")))) + (while (file-exists-p + (setq name (concat root "~" + (int-to-string (setq cnt (1+ cnt))) "~")))) (write-region (point-min) (point-max) name nil 'no-msg) - (gnus-message 1 "Created backup copy of overview in %s." name) - ) - ) + (gnus-message 1 "Created backup copy of overview in %s." name))) t) (defun gnus-agent-check-overview-buffer (&optional buffer) @@ -1219,7 +1241,8 @@ and that there are no duplicates." nil 'silent) (pop gnus-agent-buffer-alist)) (while gnus-agent-group-alist - (with-temp-file (gnus-agent-article-name ".agentview" (caar gnus-agent-group-alist)) + (with-temp-file (gnus-agent-article-name + ".agentview" (caar gnus-agent-group-alist)) (princ (cdar gnus-agent-group-alist)) (insert "\n") (princ 1 (current-buffer)) @@ -1261,34 +1284,43 @@ article numbers will be returned." (setq articles (gnus-range-add articles (cdr arts))))) (setq articles (sort (gnus-uncompress-sequence articles) '<))) - ;; At this point, I have the list of articles to consider for fetching. - ;; This is the list that I'll return to my caller. Some of these articles may have already - ;; been fetched. That's OK as the fetch article code will filter those out. - ;; Internally, I'll filter this list to just those articles whose headers need to be fetched. + ;; At this point, I have the list of articles to consider for + ;; fetching. This is the list that I'll return to my caller. Some + ;; of these articles may have already been fetched. That's OK as + ;; the fetch article code will filter those out. Internally, I'll + ;; filter this list to just those articles whose headers need to + ;; be fetched. (let ((articles articles)) ;; Remove known articles. (when (gnus-agent-load-alist group) ;; Remove articles marked as downloaded. (if fetch-all - ;; I want to fetch all headers in the active range. - ;; Therefore, exclude only those headers that are in the article alist. - ;; NOTE: This is probably NOT what I want to do after agent expiration in this group. + ;; I want to fetch all headers in the active range. + ;; Therefore, exclude only those headers that are in the + ;; article alist. + ;; NOTE: This is probably NOT what I want to do after + ;; agent expiration in this group. (setq articles (gnus-agent-uncached-articles articles group)) - ;; I want to only fetch those headers that have never been fetched. - ;; Therefore, exclude all headers that are, or WERE, in the article alist. + ;; I want to only fetch those headers that have never been + ;; fetched. Therefore, exclude all headers that are, or + ;; WERE, in the article alist. (let ((low (1+ (caar (last gnus-agent-article-alist)))) (high (cdr (gnus-active group)))) - ;; Low can be greater than High when the same group is fetched twice - ;; in the same session {The first fetch will fill the article alist - ;; such that (last gnus-agent-article-alist) equals (cdr (gnus-active group))}. - ;; The addition of one(the 1+ above) then forces Low to be greater than High. - ;; When this happens, gnus-list-range-intersection returns nil which indicates - ;; that no headers need to be fetched. -- Kevin + ;; Low can be greater than High when the same group is + ;; fetched twice in the same session {The first fetch will + ;; fill the article alist such that (last + ;; gnus-agent-article-alist) equals (cdr (gnus-active + ;; group))}. The addition of one(the 1+ above) then + ;; forces Low to be greater than High. When this happens, + ;; gnus-list-range-intersection returns nil which + ;; indicates that no headers need to be fetched. -- Kevin (setq articles (gnus-list-range-intersection articles (list (cons low high))))))) - (gnus-message 10 "gnus-agent-fetch-headers: undownloaded articles are '%s'" (gnus-compress-sequence articles t)) + (gnus-message + 10 "gnus-agent-fetch-headers: undownloaded articles are '%s'" + (gnus-compress-sequence articles t)) (save-excursion (set-buffer nntp-server-buffer) @@ -1304,9 +1336,11 @@ article numbers will be returned." (unless (eq 'nov (gnus-retrieve-headers articles group)) (nnvirtual-convert-headers)) (gnus-agent-check-overview-buffer) - ;; Move these headers to the overview buffer so that gnus-agent-braid-nov can merge them - ;; with the contents of FILE. - (copy-to-buffer gnus-agent-overview-buffer (point-min) (point-max)) + ;; Move these headers to the overview buffer so that + ;; gnus-agent-braid-nov can merge them with the contents + ;; of FILE. + (copy-to-buffer + gnus-agent-overview-buffer (point-min) (point-max)) (when (file-exists-p file) (gnus-agent-braid-nov group articles file)) (gnus-agent-check-overview-buffer) @@ -1337,8 +1371,9 @@ article numbers will be returned." (insert-buffer-substring gnus-agent-overview-buffer b e)))) (defun gnus-agent-braid-nov (group articles file) - "Merges the article headers identified by ARTICLES from gnus-agent-overview-buffer with the contents -of FILE placing the combined headers in nntp-server-buffer." + "Merge agent overview data with given file. +Takes headers for ARTICLES from `gnus-agent-overview-buffer' and the given +FILE and places the combined headers into `nntp-server-buffer'." (let (start last) (set-buffer gnus-agent-overview-buffer) (goto-char (point-min)) @@ -1349,7 +1384,8 @@ of FILE placing the combined headers in nntp-server-buffer." (forward-line -1) (unless (looking-at "[0-9]+\t") ;; Remove corrupted lines - (gnus-message 1 "Overview %s is corrupted. Removing corrupted lines..." file) + (gnus-message + 1 "Overview %s is corrupted. Removing corrupted lines..." file) (goto-char (point-min)) (while (not (eobp)) (if (looking-at "[0-9]+\t") @@ -1372,7 +1408,8 @@ of FILE placing the combined headers in nntp-server-buffer." t) ((= art (car articles)) (beginning-of-line) - (delete-region (point) (progn (forward-line 1) (point))) + (delete-region + (point) (progn (forward-line 1) (point))) nil) (t (beginning-of-line) @@ -1394,19 +1431,24 @@ of FILE placing the combined headers in nntp-server-buffer." (set-buffer nntp-server-buffer)) (insert-buffer-substring gnus-agent-overview-buffer start)))) -(eval-when-compile ; Keeps the compiler from warning about the free variable in gnus-agent-read-agentview +;; Keeps the compiler from warning about the free variable in +;; gnus-agent-read-agentview. +(eval-when-compile (defvar gnus-agent-read-agentview)) (defun gnus-agent-load-alist (group) - (let ((gnus-agent-read-agentview group)) ; Binds free variable that's used in gnus-agent-read-agentview - "Load the article-state alist for GROUP." + "Load the article-state alist for GROUP." + ;; Bind free variable that's used in `gnus-agent-read-agentview'. + (let ((gnus-agent-read-agentview group)) (setq gnus-agent-article-alist (gnus-cache-file-contents (gnus-agent-article-name ".agentview" group) 'gnus-agent-file-loading-cache 'gnus-agent-read-agentview)))) -;; Save format may be either 1 or 2. Two is the new, compressed format that is still being tested. Format 1 is uncompressed but known to be reliable. +;; Save format may be either 1 or 2. Two is the new, compressed +;; format that is still being tested. Format 1 is uncompressed but +;; known to be reliable. (defconst gnus-agent-article-alist-save-format 2) (defun gnus-agent-read-agentview (file) @@ -1420,34 +1462,39 @@ of FILE placing the combined headers in nntp-server-buffer." (end-of-file 0))) changed-version) - (cond ((= version 0) - (let ((inhibit-quit t) - entry) - (gnus-agent-open-history) - (set-buffer (gnus-agent-history-buffer)) - (goto-char (point-min)) - (while (not (eobp)) - (if (and (looking-at - "[^\t\n]+\t\\([0-9]+\\)\t\\([^ \n]+\\) \\([0-9]+\\)") - (string= (match-string 2) - gnus-agent-read-agentview) - (setq entry (assoc (string-to-number (match-string 3)) alist))) - (setcdr entry (string-to-number (match-string 1)))) - (forward-line 1)) - (gnus-agent-close-history) - (setq changed-version t))) - ((= version 1) - (setq changed-version (not (= 1 gnus-agent-article-alist-save-format)))) - ((= version 2) - (let (uncomp) - (mapcar (lambda (comp-list) - (let ((state (car comp-list)) - (sequence (gnus-uncompress-sequence (cdr comp-list)))) - (mapcar (lambda (article-id) - (setq uncomp (cons (cons article-id state) uncomp))) sequence))) alist) - (setq alist (sort uncomp (lambda (first second) (< (car first) (car second))))) - ) - )) + (cond + ((= version 0) + (let ((inhibit-quit t) + entry) + (gnus-agent-open-history) + (set-buffer (gnus-agent-history-buffer)) + (goto-char (point-min)) + (while (not (eobp)) + (if (and (looking-at + "[^\t\n]+\t\\([0-9]+\\)\t\\([^ \n]+\\) \\([0-9]+\\)") + (string= (match-string 2) + gnus-agent-read-agentview) + (setq entry (assoc (string-to-number (match-string 3)) alist))) + (setcdr entry (string-to-number (match-string 1)))) + (forward-line 1)) + (gnus-agent-close-history) + (setq changed-version t))) + ((= version 1) + (setq changed-version (not (= 1 gnus-agent-article-alist-save-format)))) + ((= version 2) + (let (uncomp) + (mapcar + (lambda (comp-list) + (let ((state (car comp-list)) + (sequence (gnus-uncompress-sequence + (cdr comp-list)))) + (mapcar (lambda (article-id) + (setq uncomp (cons (cons article-id state) uncomp))) + sequence))) + alist) + (setq alist (sort uncomp + (lambda (first second) + (< (car first) (car second)))))))) (when changed-version (let ((gnus-agent-article-alist alist)) (gnus-agent-save-alist gnus-agent-read-agentview))) @@ -1488,14 +1535,18 @@ of FILE placing the combined headers in nntp-server-buffer." (day-of-download (cdr pair)) (comp-list (assq day-of-download compressed))) (if comp-list - (setcdr comp-list (cons article-id (cdr comp-list))) - (setq compressed (cons (list day-of-download article-id) compressed))) + (setcdr comp-list + (cons article-id (cdr comp-list))) + (setq compressed + (cons (list day-of-download article-id) + compressed))) nil)) gnus-agent-article-alist) - (mapcar (lambda (comp-list) (setcdr comp-list (gnus-compress-sequence (nreverse (cdr comp-list))))) compressed) - (princ compressed (current-buffer)) - ) - ) - ) + (mapcar (lambda (comp-list) + (setcdr comp-list + (gnus-compress-sequence + (nreverse (cdr comp-list))))) + compressed) + (princ compressed (current-buffer))))) (insert "\n") (princ gnus-agent-article-alist-save-format (current-buffer)) (insert "\n")))) @@ -1583,11 +1634,10 @@ of FILE placing the combined headers in nntp-server-buffer." (gnus-activate-group group)) (let ((marked-articles gnus-newsgroup-downloadable)) ;; Identify the articles marked for download - (unless gnus-newsgroup-active ;; This needs to be a - ;; gnus-summary local variable - ;; that is NOT bound to any - ;; value above (It's global - ;; value should default to nil). + (unless gnus-newsgroup-active + ;; This needs to be a gnus-summary local variable that is + ;; NOT bound to any value above (its global value should + ;; default to nil). (dolist (mark gnus-agent-download-marks) (let ((arts (cdr (assq mark (gnus-info-marks (setq info (gnus-get-info group))))))) @@ -1667,7 +1717,8 @@ of FILE placing the combined headers in nntp-server-buffer." ;; predicate, add it to the download list (when (or (eq num (car marked-articles)) (let ((gnus-score - (or (cdr (assq num gnus-newsgroup-scored)) + (or (cdr + (assq num gnus-newsgroup-scored)) gnus-summary-default-score))) (funcall predicate))) (gnus-agent-append-to-list arts-tail num)))))) @@ -1675,10 +1726,15 @@ of FILE placing the combined headers in nntp-server-buffer." (let (fetched-articles) ;; Fetch all selected articles (setq gnus-newsgroup-undownloaded - (gnus-sorted-ndifference gnus-newsgroup-undownloaded - (setq fetched-articles (if (cdr arts) (gnus-agent-fetch-articles group (cdr arts)) nil)))) - - (let ((unfetched-articles (gnus-sorted-ndifference (cdr arts) fetched-articles))) + (gnus-sorted-ndifference + gnus-newsgroup-undownloaded + (setq fetched-articles + (if (cdr arts) + (gnus-agent-fetch-articles group (cdr arts)) + nil)))) + + (let ((unfetched-articles + (gnus-sorted-ndifference (cdr arts) fetched-articles))) (if gnus-newsgroup-active ;; Update the summary buffer (progn @@ -1687,11 +1743,13 @@ of FILE placing the combined headers in nntp-server-buffer." (gnus-summary-set-agent-mark article t))) (dolist (article fetched-articles) (if gnus-agent-mark-unread-after-downloaded - (gnus-summary-mark-article article gnus-unread-mark)) + (gnus-summary-mark-article + article gnus-unread-mark)) (when (gnus-summary-goto-subject article nil t) (gnus-summary-update-download-mark article))) (dolist (article unfetched-articles) - (gnus-summary-mark-article article gnus-canceled-mark))) + (gnus-summary-mark-article + article gnus-canceled-mark))) ;; Update the group buffer. @@ -1702,13 +1760,17 @@ of FILE placing the combined headers in nntp-server-buffer." (dolist (mark gnus-agent-download-marks) (when (eq mark 'download) - (let ((marked-arts (assq mark (gnus-info-marks - (setq info (gnus-get-info group)))))) + (let ((marked-arts + (assq mark (gnus-info-marks + (setq info (gnus-get-info group)))))) (when (cdr marked-arts) - (setq marks (delq marked-arts (gnus-info-marks info))) + (setq marks + (delq marked-arts (gnus-info-marks info))) (gnus-info-set-marks info marks))))) - (let ((read (gnus-info-read (or info (setq info (gnus-get-info group)))))) - (gnus-info-set-read info (gnus-add-to-range read unfetched-articles))) + (let ((read (gnus-info-read + (or info (setq info (gnus-get-info group)))))) + (gnus-info-set-read + info (gnus-add-to-range read unfetched-articles))) (gnus-group-update-group group t) (sit-for 0) @@ -2073,8 +2135,330 @@ return only unread articles." (or (gnus-gethash group gnus-category-group-cache) (assq 'default gnus-category-alist))) +(defun gnus-agent-expire-2 (expiring-group active articles overview day force + dir) + (gnus-agent-load-alist expiring-group) + (gnus-message 5 "Expiring articles in %s" expiring-group) + (let* ((info (gnus-get-info expiring-group)) + (alist gnus-agent-article-alist) + (specials (if alist + (list (caar (last alist))))) + (unreads ;; Articles that are excluded from the expiration process + (cond (gnus-agent-expire-all + ;; All articles are marked read by global decree + nil) + ((eq articles t) + ;; All articles are marked read by function parameter + nil) + ((not articles) + ;; Unread articles are marked protected from + ;; expiration Don't call gnus-list-of-unread-articles + ;; as it returns articles that have not been fetched + ;; into the agent. + (ignore-errors (gnus-agent-unread-articles expiring-group))) + (t + ;; All articles EXCEPT those named by the caller are + ;; protected from expiration + (gnus-sorted-difference + (gnus-uncompress-range + (cons (caar alist) (caar (last alist)))) + (sort articles '<))))) + (marked ;; More articles that are exluded from the expiration process + (cond (gnus-agent-expire-all + ;; All articles are unmarked by global decree + nil) + ((eq articles t) + ;; All articles are unmarked by function parameter + nil) + (articles + ;; All articles may as well be unmarked as the + ;; unreads list already names the articles we are + ;; going to keep + nil) + (t + ;; Ticked and/or dormant articles are excluded from expiration + (nconc + (gnus-uncompress-range + (cdr (assq 'tick (gnus-info-marks info)))) + (gnus-uncompress-range + (cdr (assq 'dormant + (gnus-info-marks info)))))))) + (nov-file (concat dir ".overview")) + (cnt 0) + (completed -1) + dlist + type) + + ;; The normal article alist contains + ;; elements that look like (article# . + ;; fetch_date) I need to combine other + ;; information with this list. For + ;; example, a flag indicating that a + ;; particular article MUST BE KEPT. To + ;; do this, I'm going to transform the + ;; elements to look like (article# + ;; fetch_date keep_flag + ;; NOV_entry_marker) Later, I'll reverse + ;; the process to generate the expired + ;; article alist. + + ;; Convert the alist elements to + ;; (article# fetch_date nil nil). + (setq dlist (mapcar (lambda (e) (list (car e) (cdr e) nil nil)) alist)) + + ;; Convert the keep lists to elements + ;; that look like (article# nil + ;; keep_flag nil) then append it to the + ;; expanded dlist These statements are + ;; sorted by ascending precidence of the + ;; keep_flag. + (setq dlist (nconc dlist (mapcar (lambda (e) + (list e nil 'unread nil)) unreads))) + (setq dlist (nconc dlist (mapcar (lambda (e) + (list e nil 'marked nil)) marked))) + (setq dlist (nconc dlist (mapcar (lambda (e) + (list e nil 'special nil)) specials))) + + (set-buffer overview) + (erase-buffer) + (when (file-exists-p nov-file) + (gnus-message 7 "gnus-agent-expire: Loading overview...") + (nnheader-insert-file-contents nov-file) + (goto-char (point-min)) + + (let (p) + (while (< (setq p (point)) (point-max)) + (condition-case nil + ;; If I successfully read an + ;; integer (the plus zero + ;; ensures a numeric type), + ;; prepend a marker entry to + ;; the list + (push (list (+ 0 (read (current-buffer))) nil nil + (set-marker (make-marker) p)) dlist) + (error + (gnus-message 1 (concat "gnus-agent-expire: read error occurred " + "when reading expression at %s in %s. " + "Skipping to next line.") + (point) nov-file))) + ;; Whether I succeeded, or failed, + ;; it doesn't matter. Move to the + ;; next line then try again. + (forward-line 1))) + (gnus-message 7 "gnus-agent-expire: Loading overview... Done")) + (set-buffer-modified-p nil) + + ;; At this point, all of the information + ;; is in dlist. The only problem is + ;; that much of it is spread across + ;; multiple entries. Sort then MERGE!! + (gnus-message 7 "gnus-agent-expire: Sorting entries... ") + ;; If two entries have the same + ;; article-number then sort by ascending + ;; keep_flag. + (let ((special 0) + (marked 1) + (unread 2)) + (setq dlist + (sort dlist + (lambda (a b) + (cond ((< (nth 0 a) (nth 0 b)) + t) + ((> (nth 0 a) (nth 0 b)) + nil) + (t + (let ((a (or (symbol-value (nth 2 a)) 3)) + (b (or (symbol-value (nth 2 b)) 3))) + (<= a b)))))))) + (gnus-message 7 "gnus-agent-expire: Sorting entries... Done") + (gnus-message 7 "gnus-agent-expire: Merging entries... ") + (let ((dlist dlist)) + (while (cdr dlist) ; I'm not at the end-of-list + (if (eq (caar dlist) (caadr dlist)) + (let ((first (cdr (car dlist))) + (secnd (cdr (cadr dlist)))) + (setcar first (or (car first) (car secnd))) ; fetch_date + (setq first (cdr first) + secnd (cdr secnd)) + (setcar first (or (car first) (car secnd))) ; Keep_flag + (setq first (cdr first) + secnd (cdr secnd)) + (setcar first (or (car first) (car secnd))) ; NOV_entry_marker + + (setcdr dlist (cddr dlist))) + (setq dlist (cdr dlist))))) + (gnus-message 7 "gnus-agent-expire: Merging entries... Done") + + (let* ((len (float (length dlist))) + (alist (list nil)) + (tail-alist alist)) + (while dlist + (let ((new-completed (truncate (* 100.0 (/ (setq cnt (1+ cnt)) len))))) + (when (> new-completed completed) + (setq completed new-completed) + (gnus-message 9 "%3d%% completed..." completed))) + (let* ((entry (car dlist)) + (article-number (nth 0 entry)) + (fetch-date (nth 1 entry)) + (keep (nth 2 entry)) + (marker (nth 3 entry))) + + (cond + ;; Kept articles are unread, marked, or special. + (keep + (when fetch-date + (unless (file-exists-p (concat dir (number-to-string + article-number))) + (setf (nth 1 entry) nil) + (gnus-message 3 (concat "gnus-agent-expire cleared download " + "flag on article %d as the cached " + "article file is missing.") + (caar dlist))) + (unless marker + (gnus-message 1 (concat "gnus-agent-expire detected a " + "missing NOV entry. Run " + "gnus-agent-regenerate-group to " + "restore it.")))) + (gnus-agent-append-to-list tail-alist (cons article-number fetch-date))) + + ;; The following articles are READ, UNMARKED, and ORDINARY. + ;; See if they can be EXPIRED!!! + ((setq type + (cond + ((not (integerp fetch-date)) + 'read) ;; never fetched article (may expire right now) + ((not (file-exists-p (concat dir (number-to-string + article-number)))) + (setf (nth 1 entry) nil) + 'externally-expired) ;; Can't find the cached + ;; article. Handle case as + ;; though this article was + ;; never fetched. + + ;; We now have the arrival day, so we see + ;; whether it's old enough to be expired. + ((< fetch-date day) + 'expired) + (force + 'forced))) + + ;; I found some reason to expire this entry. + + (let ((actions nil)) + (when (memq type '(forced expired)) + (ignore-errors ; Just being paranoid. + (delete-file (concat dir (number-to-string article-number))) + (push "expired cached article" actions)) + (setf (nth 1 entry) nil)) + + (when marker + (push "NOV entry removed" actions) + (goto-char marker) + (gnus-delete-line)) + + ;; If considering all articles is set, I can only expire + ;; article IDs that are no longer in the active range. + (if (and gnus-agent-consider-all-articles + (>= article-number (car active))) + ;; I have to keep this ID in the alist + (gnus-agent-append-to-list tail-alist + (cons article-number fetch-date)) + (push (format "Removed %s article number from article alist" + type) actions)) + + (gnus-message 7 "gnus-agent-expire: Article %d: %s" + article-number (mapconcat 'identity + actions ", ")))) + (t + (gnus-agent-append-to-list tail-alist (cons article-number fetch-date))) + ) + + ;; Clean up markers as I want to recycle this buffer over + ;; several groups. + (when marker + (set-marker marker nil)) + + (setq dlist (cdr dlist)))) + + (setq alist (cdr alist)) + + (let ((inhibit-quit t)) + (unless (equal alist gnus-agent-article-alist) + (setq gnus-agent-article-alist alist) + (gnus-agent-save-alist expiring-group)) + + (when (buffer-modified-p) + (gnus-make-directory dir) + (write-region-as-coding-system gnus-agent-file-coding-system + (point-min) (point-max) nov-file + nil 'silent) + ;; clear the modified flag as that I'm not confused by its + ;; status on the next pass through this routine. + (set-buffer-modified-p nil)) + + (when (eq articles t) + (gnus-summary-update-info)))))) + +(defun gnus-agent-expire-1 (&optional articles group force) + "Expire all old agent cached articles unconditionally. +See `gnus-agent-expire'." + (let ((methods (if group + (list (gnus-find-method-for-group group)) + gnus-agent-covered-methods)) + (day (if (numberp gnus-agent-expire-days) + (- (time-to-days (current-time)) gnus-agent-expire-days) + nil)) + gnus-command-method sym arts pos + history overview file histories elem art nov-file low info + unreads marked article orig lowest highest found days) + (save-excursion + (setq overview (gnus-get-buffer-create " *expire overview*")) + (unwind-protect + (while (setq gnus-command-method (pop methods)) + (when (file-exists-p (gnus-agent-lib-file "active")) + (with-temp-buffer + (nnheader-insert-file-contents + (gnus-agent-lib-file "active")) + (gnus-active-to-gnus-format + gnus-command-method + (setq orig (gnus-make-hashtable + (count-lines (point-min) (point-max)))))) + (dolist (expiring-group (gnus-groups-from-server + gnus-command-method)) + (if (or (not group) + (equal group expiring-group)) + (let* ((dir (concat + (gnus-agent-directory) + (gnus-agent-group-path expiring-group) + "/")) + (active + (gnus-gethash-safe expiring-group orig)) + (day (if (numberp day) + day + (let (found + (days gnus-agent-expire-days)) + (catch 'found + (while (and (not found) days) + (when (eq 0 (string-match + (caar days) + expiring-group)) + (throw 'found (- (time-to-days + (current-time)) + (cadar days)))) + (pop days)) + ;; No regexp matched so set + ;; a limit that will block + ;; expiration in this group. + 0))))) + + (when active + (gnus-agent-expire-2 expiring-group active + articles overview day force + dir))))))) + (kill-buffer overview))))) + (defun gnus-agent-expire (&optional articles group force) - "Expire all old articles. + "Expire all old agent cached articles. If you want to force expiring of certain articles, this function can take ARTICLES, GROUP and FORCE parameters as well. @@ -2085,261 +2469,14 @@ The articles on which the expiration process runs are selected as follows: Setting GROUP will limit expiration to that group. FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (interactive) - - (if (or (not (eq articles t)) - (yes-or-no-p (concat "Are you sure that you want to expire all articles in " (if group group "every agentized group") "."))) - (let ((methods (if group - (list (gnus-find-method-for-group group)) - gnus-agent-covered-methods)) - (day (if (numberp gnus-agent-expire-days) - (- (time-to-days (current-time)) gnus-agent-expire-days) - nil)) - gnus-command-method sym arts pos - history overview file histories elem art nov-file low info - unreads marked article orig lowest highest found days) - (save-excursion - (setq overview (gnus-get-buffer-create " *expire overview*")) - (unwind-protect - (while (setq gnus-command-method (pop methods)) - (when (file-exists-p (gnus-agent-lib-file "active")) - (with-temp-buffer - (nnheader-insert-file-contents (gnus-agent-lib-file "active")) - (gnus-active-to-gnus-format - gnus-command-method - (setq orig (gnus-make-hashtable - (count-lines (point-min) (point-max)))))) - (dolist (expiring-group (gnus-groups-from-server gnus-command-method)) - (if (or (not group) - (equal group expiring-group)) - (let* ((dir (concat - (gnus-agent-directory) - (gnus-agent-group-path expiring-group) "/")) - (active - (gnus-gethash-safe expiring-group orig)) - (day (if (numberp day) - day - (let (found - (days gnus-agent-expire-days)) - (catch 'found - (while (and (not found) - days) - (when (eq 0 (string-match (caar days) expiring-group)) - (throw 'found (- (time-to-days (current-time)) (cadar days)))) - (pop days)) - ;; No regexp matched so set a limit that will block expiration in this group - 0))))) - - (when active - (gnus-agent-load-alist expiring-group) - (gnus-message 5 "Expiring articles in %s" expiring-group) - (let* ((info (gnus-get-info expiring-group)) - (alist gnus-agent-article-alist) - (specials (if alist - (list (caar (last alist))))) - (unreads ;; Articles that are excluded from the expiration process - (cond (gnus-agent-expire-all - ;; All articles are marked read by global decree - nil) - ((eq articles t) - ;; All articles are marked read by function parameter - nil) - ((not articles) - ;; Unread articles are marked protected from expiration - ;; Don't call gnus-list-of-unread-articles as it returns articles that have not been fetched into the agent. - (ignore-errors (gnus-agent-unread-articles expiring-group))) - (t - ;; All articles EXCEPT those named by the caller are protected from expiration - (gnus-sorted-difference (gnus-uncompress-range (cons (caar alist) (caar (last alist)))) (sort articles '<))))) - (marked ;; More articles that are exluded from the expiration process - (cond (gnus-agent-expire-all - ;; All articles are unmarked by global decree - nil) - ((eq articles t) - ;; All articles are unmarked by function parameter - nil) - (articles - ;; All articles may as well be unmarked as the unreads list already names the articles we are going to keep - nil) - (t - ;; Ticked and/or dormant articles are excluded from expiration - (nconc - (gnus-uncompress-range - (cdr (assq 'tick (gnus-info-marks info)))) - (gnus-uncompress-range - (cdr (assq 'dormant - (gnus-info-marks info)))))))) - (nov-file (concat dir ".overview")) - (cnt 0) - (completed -1) - dlist - type) - - ;; The normal article alist contains elements that look like (article# . fetch_date) - ;; I need to combine other information with this list. For example, a flag indicating that a particular article MUST BE KEPT. - ;; To do this, I'm going to transform the elements to look like (article# fetch_date keep_flag NOV_entry_marker) - ;; Later, I'll reverse the process to generate the expired article alist. - - ;; Convert the alist elements to (article# fetch_date nil nil). - (setq dlist (mapcar (lambda (e) (list (car e) (cdr e) nil nil)) alist)) - - ;; Convert the keep lists to elements that look like (article# nil keep_flag nil) then append it to the expanded dlist - ;; These statements are sorted by ascending precidence of the keep_flag. - (setq dlist (nconc dlist - (mapcar (lambda (e) (list e nil 'unread nil)) unreads))) - (setq dlist (nconc dlist - (mapcar (lambda (e) (list e nil 'marked nil)) marked))) - (setq dlist (nconc dlist - (mapcar (lambda (e) (list e nil 'special nil)) specials))) - - (set-buffer overview) - (erase-buffer) - (when (file-exists-p nov-file) - (gnus-message 7 "gnus-agent-expire: Loading overview...") - (nnheader-insert-file-contents nov-file) - (goto-char (point-min)) - - (let (p) - (while (< (setq p (point)) (point-max)) - (condition-case nil - ;; If I successfully read an integer (the plus zero ensures a numeric type), prepend a marker entry to the list - (push (list (+ 0 (read (current-buffer))) nil nil (set-marker (make-marker) p)) dlist) - (error - (gnus-message 1 "gnus-agent-expire: read error occurred when reading expression at %s in %s. Skipping to next line." (point) nov-file))) - ;; Whether I succeeded, or failed, it doesn't matter. Move to the next line then try again. - (forward-line 1))) - (gnus-message 7 "gnus-agent-expire: Loading overview... Done")) - (set-buffer-modified-p nil) - - ;; At this point, all of the information is in dlist. The only problem is that much of it is spread across multiple entries. Sort then MERGE!! - (gnus-message 7 "gnus-agent-expire: Sorting entries... ") - (let ((special 0) ; If two entries have the same article-number then sort by ascending keep_flag. - (marked 1) - (unread 2)) - (setq dlist - (sort dlist - (lambda (a b) - (cond ((< (nth 0 a) (nth 0 b)) - t) - ((> (nth 0 a) (nth 0 b)) - nil) - (t - (let ((a (or (symbol-value (nth 2 a)) 3)) - (b (or (symbol-value (nth 2 b)) 3))) - (<= a b)))))))) - (gnus-message 7 "gnus-agent-expire: Sorting entries... Done") - (gnus-message 7 "gnus-agent-expire: Merging entries... ") - (let ((dlist dlist)) - (while (cdr dlist) ; I'm not at the end-of-list - (if (eq (caar dlist) (caadr dlist)) - (let ((first (cdr (car dlist))) - (secnd (cdr (cadr dlist)))) - (setcar first (or (car first) (car secnd))) ; fetch_date - (setq first (cdr first) - secnd (cdr secnd)) - (setcar first (or (car first) (car secnd))) ; Keep_flag - (setq first (cdr first) - secnd (cdr secnd)) - (setcar first (or (car first) (car secnd))) ; NOV_entry_marker - - (setcdr dlist (cddr dlist))) - (setq dlist (cdr dlist))))) - (gnus-message 7 "gnus-agent-expire: Merging entries... Done") - - (let* ((len (float (length dlist))) - (alist (list nil)) - (tail-alist alist)) - (while dlist - (let ((new-completed (truncate (* 100.0 (/ (setq cnt (1+ cnt)) len))))) - (when (> new-completed completed) - (setq completed new-completed) - (gnus-message 9 "%3d%% completed..." completed))) - (let* ((entry (car dlist)) - (article-number (nth 0 entry)) - (fetch-date (nth 1 entry)) - (keep (nth 2 entry)) - (marker (nth 3 entry))) - - (cond - ;; Kept articles are unread, marked, or special. - (keep - (when fetch-date - (unless (file-exists-p (concat dir (number-to-string article-number))) - (setf (nth 1 entry) nil) - (gnus-message 3 "gnus-agent-expire cleared download flag on article %d as the cached article file is missing." (caar dlist))) - (unless marker - (gnus-message 1 "gnus-agent-expire detected a missing NOV entry. Run gnus-agent-regenerate-group to restore it."))) - (gnus-agent-append-to-list tail-alist (cons article-number fetch-date))) - - ;; The following articles are READ, UNMARKED, and ORDINARY. - ;; See if they can be EXPIRED!!! - ((setq type - (cond - ((not (integerp fetch-date)) - 'read) ;; never fetched article (may expire right now) - ((not (file-exists-p (concat dir (number-to-string article-number)))) - (setf (nth 1 entry) nil) - 'externally-expired) ;; Can't find the cached article. Handle case as though this article was never fetched. - - ;; We now have the arrival day, so we see - ;; whether it's old enough to be expired. - ((< fetch-date day) - 'expired) - (force - 'forced))) - - ;; I found some reason to expire this entry. - - (let ((actions nil)) - (when (memq type '(forced expired)) - (ignore-errors ; Just being paranoid. - (delete-file (concat dir (number-to-string article-number))) - (push "expired cached article" actions)) - (setf (nth 1 entry) nil) - ) - - (when marker - (push "NOV entry removed" actions) - (goto-char marker) - (gnus-delete-line)) - - ;; If considering all articles is set, I can only expire article IDs that are no longer in the active range. - (if (and gnus-agent-consider-all-articles - (>= article-number (car active))) - ;; I have to keep this ID in the alist - (gnus-agent-append-to-list tail-alist (cons article-number fetch-date)) - (push (format "Removed %s article number from article alist" type) actions)) - - (gnus-message 7 "gnus-agent-expire: Article %d: %s" article-number (mapconcat 'identity actions ", ")))) - (t - (gnus-agent-append-to-list tail-alist (cons article-number fetch-date))) - ) - - ;; Clean up markers as I want to recycle this buffer over several groups. - (when marker - (set-marker marker nil)) - - (setq dlist (cdr dlist)))) - - (setq alist (cdr alist)) - - (let ((inhibit-quit t)) - (unless (equal alist gnus-agent-article-alist) - (setq gnus-agent-article-alist alist) - (gnus-agent-save-alist expiring-group)) - - (when (buffer-modified-p) - (gnus-make-directory dir) - (write-region-as-coding-system - gnus-agent-file-coding-system - (point-min) (point-max) nov-file - nil 'silent) - ;; clear the modified flag as that I'm not confused by its status on the next pass through this routine. - (set-buffer-modified-p nil)) - - (when (eq articles t) - (gnus-summary-update-info))))))))))) - (kill-buffer overview))))) - (gnus-message 4 "Expiry...done")) + (if (and (not gnus-agent-expire-days) + (or (not (eq articles t)) + (yes-or-no-p (concat "Are you sure that you want to expire all " + "articles in " (if group group + "every agentized group") + ".")))) + (gnus-agent-expire-1 articles group force) + (gnus-message 4 "Expiry...done"))) ;;;###autoload (defun gnus-agent-batch () @@ -2373,11 +2510,16 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (cdr unread))) (defun gnus-agent-uncached-articles (articles group &optional cached-header) - "Constructs sublist of ARTICLES that excludes those articles ids in GROUP that have already been fetched. - If CACHED-HEADER is nil, articles are only excluded if the article itself has been fetched." + "Restrict ARTICLES to numbers already fetched. +Returns a sublist of ARTICLES that excludes thos article ids in GROUP +that have already been fetched. +If CACHED-HEADER is nil, articles are only excluded if the article itself +has been fetched." + + ;; Logically equivalent to: (gnus-sorted-difference articles (mapcar + ;; 'car gnus-agent-article-alist)) -;; Logically equivalent to: (gnus-sorted-difference articles (mapcar 'car gnus-agent-article-alist)) -;; Functionally, I don't need to construct a temp list using mapcar. + ;; Functionally, I don't need to construct a temp list using mapcar. (if (gnus-agent-load-alist group) (let* ((ref gnus-agent-article-alist) @@ -2430,14 +2572,19 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." uncached-articles group fetch-old))) (nnvirtual-convert-headers)) ((eq 'nntp (car gnus-current-select-method)) - ;; The author of gnus-get-newsgroup-headers-xover reports that the XOVER command - ;; is commonly unreliable. The problem is that recently posted articles may not - ;; be entered into the NOV database in time to respond to my XOVER query. + ;; The author of gnus-get-newsgroup-headers-xover + ;; reports that the XOVER command is commonly + ;; unreliable. The problem is that recently + ;; posted articles may not be entered into the + ;; NOV database in time to respond to my XOVER + ;; query. ;; - ;; I'm going to use his assumption that the NOV database is updated in order - ;; of ascending article ID. Therefore, a response containing article ID N - ;; implies that all articles from 1 to N-1 are up-to-date. Therefore, - ;; missing articles in that range have expired. + ;; I'm going to use his assumption that the NOV + ;; database is updated in order of ascending + ;; article ID. Therefore, a response containing + ;; article ID N implies that all articles from 1 + ;; to N-1 are up-to-date. Therefore, missing + ;; articles in that range have expired. (set-buffer nntp-server-buffer) (let* ((fetched-articles (list nil)) @@ -2458,21 +2605,25 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (gnus-agent-append-to-list tail-fetched-articles (read (current-buffer)))) (forward-line 1))) - ;; Clip this list to the headers that will actually be returned + ;; Clip this list to the headers that will + ;; actually be returned (setq fetched-articles (gnus-list-range-intersection (cdr fetched-articles) (cons min max))) - ;; Clip the uncached articles list to exclude IDs after the last FETCHED header. - ;; The excluded IDs may be fetchable using HEAD. + ;; Clip the uncached articles list to exclude + ;; IDs after the last FETCHED header. The + ;; excluded IDs may be fetchable using HEAD. (if (car tail-fetched-articles) (setq uncached-articles (gnus-list-range-intersection uncached-articles (cons (car uncached-articles) (car tail-fetched-articles))))) - ;; Create the list of articles that were "successfully" fetched. Success, in - ;; this case, means that the ID should not be fetched again. In the case of - ;; an expired article, the header will not be fetched. + ;; Create the list of articles that were + ;; "successfully" fetched. Success, in this + ;; case, means that the ID should not be + ;; fetched again. In the case of an expired + ;; article, the header will not be fetched. (setq uncached-articles (gnus-sorted-nunion fetched-articles uncached-articles)) )))) @@ -2484,7 +2635,8 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (set-buffer nntp-server-buffer) (copy-to-buffer gnus-agent-overview-buffer (point-min) (point-max)) - ;; Merge the temp buffer with the known headers (found on disk in FILE) into the nntp-server-buffer + ;; Merge the temp buffer with the known headers (found on + ;; disk in FILE) into the nntp-server-buffer (when (and uncached-articles (file-exists-p file)) (gnus-agent-braid-nov group uncached-articles file)) @@ -2495,7 +2647,8 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." gnus-agent-file-coding-system (point-min) (point-max) file nil 'silent) - ;; Update the group's article alist to include the newly fetched articles. + ;; Update the group's article alist to include the newly + ;; fetched articles. (gnus-agent-load-alist group) (gnus-agent-save-alist group uncached-articles nil) ) @@ -2532,7 +2685,9 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." t))) (defun gnus-agent-regenerate-group (group &optional reread) - "Regenerate GROUP. If REREAD is t, all articles in the .overview are marked as unread. If REREAD is not nil, downloaded articles are marked as unread." + "Regenerate GROUP. +If REREAD is t, all articles in the .overview are marked as unread. +If REREAD is not nil, downloaded articles are marked as unread." (interactive (list (let ((def (or (gnus-group-group-name) gnus-newsgroup-name))) (let ((select (read-string (if def (concat "Group Name (" def "): ") @@ -2564,7 +2719,8 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (nnheader-insert-file-contents file))) (set-buffer-modified-p nil) - ;; Load the article IDs found in the overview file. As a side-effect, validate the file contents. + ;; Load the article IDs found in the overview file. As a + ;; side-effect, validate the file contents. (let ((load t)) (while load (setq load nil) @@ -2579,7 +2735,8 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." nil) ((< l1 l2) (gnus-message 3 "gnus-agent-regenerate-group: NOV entries are NOT in ascending order.") - ;; Don't sort now as I haven't verified that every line begins with a number + ;; Don't sort now as I haven't verified + ;; that every line begins with a number (setq load t)) ((= l1 l2) (forward-line -1) @@ -2596,8 +2753,9 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (setq nov-arts nil))))) (gnus-agent-check-overview-buffer) - ;; Construct a new article alist whose nodes match every header in the .overview file. - ;; As a side-effect, missing headers are reconstructed from the downloaded article file. + ;; Construct a new article alist whose nodes match every header + ;; in the .overview file. As a side-effect, missing headers are + ;; reconstructed from the downloaded article file. (while (or downloaded nov-arts) (cond ((and downloaded (or (not nov-arts) @@ -2628,14 +2786,18 @@ FORCE is equivalent to setting gnus-agent-expire-days to zero(0)." (push (cons (car nov-arts) nil) alist) (pop nov-arts)))) - ;; When gnus-agent-consider-all-articles is set, gnus-agent-regenerate-group should NOT remove article IDs - ;; from the alist. Those IDs serve as markers to indicate that an attempt has been made to fetch that - ;; article's header. - - ;; When gnus-agent-consider-all-articles is NOT set, gnus-agent-regenerate-group can remove the article - ;; ID of every article (with the exception of the last ID in the list - it's special) that no longer appears in the overview. - ;; In this situtation, the last article ID in the list implies that it, and every article ID preceeding it, - ;; have been fetched from the server. + ;; When gnus-agent-consider-all-articles is set, + ;; gnus-agent-regenerate-group should NOT remove article IDs from + ;; the alist. Those IDs serve as markers to indicate that an + ;; attempt has been made to fetch that article's header. + + ;; When gnus-agent-consider-all-articles is NOT set, + ;; gnus-agent-regenerate-group can remove the article ID of every + ;; article (with the exception of the last ID in the list - it's + ;; special) that no longer appears in the overview. In this + ;; situtation, the last article ID in the list implies that it, + ;; and every article ID preceeding it, have been fetched from the + ;; server. (if gnus-agent-consider-all-articles ;; Restore all article IDs that were not found in the overview file. (let* ((n (cons nil alist)) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 7915f1a..dffdb68 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -839,7 +839,7 @@ This is meant for people who want to view first matched part. For `undisplayed-alternative' (default), the first undisplayed part or alternative part is used. For `undisplayed', the first undisplayed part is used. For a function, the first part which -the function return `t' is used. For `nil', the first part is +the function return t is used. For nil, the first part is used." :version "21.1" :group 'gnus-article-mime @@ -1238,21 +1238,7 @@ See Info node `(gnus)Customizing Articles' and Info node :link '(custom-manual "(gnus)Customizing Articles") :link '(custom-manual "(gnus)X-Face") :type gnus-article-treat-head-custom) -(put 'gnus-treat-display-xface 'highlight t) - -(defcustom gnus-treat-display-grey-xface - (and (not noninteractive) - (or (featurep 'xemacs) - (and (fboundp 'display-images-p) - (display-images-p))) - (string-match "^0x" (shell-command-to-string "uncompface")) - t) - "Display grey X-Face headers. -Valid values are nil, t." - :group 'gnus-article-treat - :version "21.3" - :type 'boolean) -(put 'gnus-treat-display-grey-xface 'highlight t) +(put 'gnus-treat-display-face 'highlight t) (defcustom gnus-treat-display-smileys (if (or (and (featurep 'xemacs) @@ -2064,11 +2050,7 @@ unfolded." "Display any Face headers in the header." (interactive) (gnus-with-article-headers - (let ((face nil)) - (save-excursion - (when (gnus-buffer-live-p gnus-original-article-buffer) - (set-buffer gnus-original-article-buffer) - (setq face (message-fetch-field "face")))) + (let ((face (message-fetch-field "face"))) (when face (let ((png (gnus-convert-face-to-png face)) image) @@ -2095,7 +2077,7 @@ unfolded." ;; instead. (gnus-delete-images 'xface) ;; Display X-Faces. - (let (x-faces from face grey) + (let (x-faces from face) (save-excursion (when (and wash-face-p (progn @@ -2109,67 +2091,39 @@ unfolded." (set-buffer gnus-original-article-buffer)) (save-restriction (mail-narrow-to-head) - (if gnus-treat-display-grey-xface - (progn - (while (gnus-article-goto-header "X-Face\\(-[0-9]+\\)?") - (if (match-beginning 2) - (progn - (setq grey t) - (push (cons (- (string-to-number (match-string 2))) - (mail-header-field-value)) - x-faces)) - (push (cons 0 (mail-header-field-value)) x-faces))) - (dolist (x-face (prog1 - (if grey - (sort x-faces 'car-less-than-car) - (nreverse x-faces)) - (setq x-faces nil))) - (push (cdr x-face) x-faces))) - (while (gnus-article-goto-header "X-Face") - (push (mail-header-field-value) x-faces))) + (while (gnus-article-goto-header "X-Face") + (push (mail-header-field-value) x-faces)) (setq from (message-fetch-field "from")))) - (if grey - (let ((xpm (gnus-convert-gray-x-face-to-xpm x-faces)) - image) - (when xpm - (setq image (gnus-create-image xpm 'xpm t)) - (gnus-article-goto-header "from") - (when (bobp) - (insert "From: [no `from' set]\n") - (forward-char -17)) - (gnus-add-wash-type 'xface) - (gnus-add-image 'xface image) - (gnus-put-image image))) - ;; Sending multiple EOFs to xv doesn't work, so we only do a - ;; single external face. - (when (stringp gnus-article-x-face-command) - (setq x-faces (list (car x-faces)))) - (while (and (setq face (pop x-faces)) - gnus-article-x-face-command - (or force - ;; Check whether this face is censored. - (not gnus-article-x-face-too-ugly) - (and gnus-article-x-face-too-ugly from - (not (string-match gnus-article-x-face-too-ugly - from))))) - ;; We display the face. - (if (symbolp gnus-article-x-face-command) - ;; The command is a lisp function, so we call it. - (if (gnus-functionp gnus-article-x-face-command) - (funcall gnus-article-x-face-command face) - (error "%s is not a function" gnus-article-x-face-command)) - ;; The command is a string, so we interpret the command - ;; as a, well, command, and fork it off. - (let ((process-connection-type nil)) - (process-kill-without-query - (start-process - "article-x-face" nil shell-file-name shell-command-switch - gnus-article-x-face-command)) - (with-temp-buffer - (insert face) - (process-send-region "article-x-face" - (point-min) (point-max))) - (process-send-eof "article-x-face")))))))))) + ;; Sending multiple EOFs to xv doesn't work, so we only do a + ;; single external face. + (when (stringp gnus-article-x-face-command) + (setq x-faces (list (car x-faces)))) + (while (and (setq face (pop x-faces)) + gnus-article-x-face-command + (or force + ;; Check whether this face is censored. + (not gnus-article-x-face-too-ugly) + (and gnus-article-x-face-too-ugly from + (not (string-match gnus-article-x-face-too-ugly + from))))) + ;; We display the face. + (if (symbolp gnus-article-x-face-command) + ;; The command is a lisp function, so we call it. + (if (gnus-functionp gnus-article-x-face-command) + (funcall gnus-article-x-face-command face) + (error "%s is not a function" gnus-article-x-face-command)) + ;; The command is a string, so we interpret the command + ;; as a, well, command, and fork it off. + (let ((process-connection-type nil)) + (process-kill-without-query + (start-process + "article-x-face" nil shell-file-name shell-command-switch + gnus-article-x-face-command)) + (with-temp-buffer + (insert face) + (process-send-region "article-x-face" + (point-min) (point-max))) + (process-send-eof "article-x-face"))))))))) (defun article-decode-mime-words () "Decode all MIME-encoded words in the article." @@ -3259,6 +3213,7 @@ Directory to save to is default to `gnus-article-save-directory'." (save-restriction (widen) (if (and (file-readable-p filename) + (file-regular-p filename) (mail-file-babyl-p filename)) (rmail-output-to-rmail-file filename t) (gnus-output-to-mail filename))))) @@ -3648,9 +3603,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is (gnus-run-hooks 'gnus-article-menu-hook))) -;; Fixme: do something for the Emacs tool bar in Article mode a la -;; Summary. - (defun gnus-article-mode () "Major mode for displaying an article. @@ -3675,7 +3627,9 @@ commands: (push (list 'gnus-show-mime " MIME") minor-mode-alist)) (use-local-map gnus-article-mode-map) (when (gnus-visual-p 'article-menu 'menu) - (gnus-article-make-menu-bar)) + (gnus-article-make-menu-bar) + (when gnus-summary-tool-bar-map + (set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map))) (gnus-update-format-specifications nil 'article-mode) (set (make-local-variable 'page-delimiter) gnus-page-delimiter) (make-local-variable 'gnus-page-broken) @@ -3730,6 +3684,8 @@ commands: (set (make-local-variable 'gnus-article-edit-mode) nil) (buffer-disable-undo) (setq buffer-read-only t) + ;; This list just keeps growing if we don't reset it. + (setq gnus-button-marker-list nil) (unless (eq major-mode 'gnus-article-mode) (gnus-article-mode)) (current-buffer)) @@ -4446,7 +4402,8 @@ If no internal viewer is available, use an external viewer." (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets))) + gnus-newsgroup-ignored-charsets)) + buffer-read-only) (when handle (if (mm-handle-undisplayer handle) (mm-remove-part handle) @@ -5165,7 +5122,7 @@ Argument LINES specifies lines to be scrolled down." (let ((point (point))) (search-forward ">" nil t) ;Move point to end of "<....>". (if (re-search-backward "\\(<[^<> \t\n]+>\\)" nil t) - (let ((message-id (match-string 1))) + (let ((message-id (gnus-replace-in-string (match-string 1) "?\\)") (defun gnus-button-handle-describe-function (url) - "Call describe-function when pushing the corresponding URL button." + "Call `describe-function' when pushing the corresponding URL button." (describe-function (intern (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))) (defun gnus-button-handle-describe-variable (url) - "Call describe-variable when pushing the corresponding URL button." + "Call `describe-variable' when pushing the corresponding URL button." (describe-variable (intern (gnus-replace-in-string url gnus-button-handle-describe-prefix "")))) -;; FIXME: Is is possible to implement this? Else it should be removed here -;; and in `gnus-button-alist'. (defun gnus-button-handle-describe-key (url) - "Call describe-key when pushing the corresponding URL button." - (error "not implemented")) + "Call `describe-key' when pushing the corresponding URL button." + (let* ((key-string + (gnus-replace-in-string url gnus-button-handle-describe-prefix "")) + (keys (ignore-errors (eval `(kbd ,key-string))))) + (if keys + (describe-key keys) + (gnus-message 3 "Invalid key sequence in button: %s" key-string)))) (defun gnus-button-handle-apropos (url) - "Call apropos when pushing the corresponding URL button." + "Call `apropos' when pushing the corresponding URL button." (apropos (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))) (defun gnus-button-handle-apropos-command (url) - "Call apropos when pushing the corresponding URL button." + "Call `apropos' when pushing the corresponding URL button." (apropos-command (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))) (defun gnus-button-handle-apropos-variable (url) - "Call apropos when pushing the corresponding URL button." + "Call `apropos' when pushing the corresponding URL button." (funcall (if (fboundp 'apropos-variable) 'apropos-variable 'apropos) (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))) (defun gnus-button-handle-apropos-documentation (url) - "Call apropos when pushing the corresponding URL button." + "Call `apropos' when pushing the corresponding URL button." (funcall (if (fboundp 'apropos-documentation) 'apropos-documentation 'apropos) (gnus-replace-in-string url gnus-button-handle-describe-prefix ""))) @@ -6137,9 +6097,10 @@ positives are possible." 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2) ("\\b\\(C-h\\|?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET" 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2) - ("\\b\\(C-h\\|?\\)[ \t\n]+k[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+" 0 - ;; this regexp needs to be fixed! - (>= gnus-button-emacs-level 9) gnus-button-handle-describe-key 2) + ("`\\(\\b\\(C-h\\|?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'" 1 + ;; Unlike the other regexps we really have to require quoting + ;; here to determine where it ends. + (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3) ;; This is how URLs _should_ be embedded in text... ("]*\\)>" 1 t gnus-button-embedded-url 1) ;; Raw URLs. diff --git a/lisp/gnus-async.el b/lisp/gnus-async.el index 5dac280..0a8a798 100644 --- a/lisp/gnus-async.el +++ b/lisp/gnus-async.el @@ -1,5 +1,6 @@ ;;; gnus-async.el --- asynchronous support for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus-audio.el b/lisp/gnus-audio.el index e0c4d2d..0ae9b3c 100644 --- a/lisp/gnus-audio.el +++ b/lisp/gnus-audio.el @@ -1,5 +1,5 @@ ;;; gnus-audio.el --- Sound effects for Gnus -;; Copyright (C) 1996, 2000 Free Software Foundation +;; Copyright (C) 1996, 2000, 2003 Free Software Foundation ;; Author: Steven L. Baur ;; Keywords: news, mail, multimedia diff --git a/lisp/gnus-bcklg.el b/lisp/gnus-bcklg.el index 3a14103..c2b0cc3 100644 --- a/lisp/gnus-bcklg.el +++ b/lisp/gnus-bcklg.el @@ -1,5 +1,5 @@ ;;; gnus-bcklg.el --- backlog functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -58,7 +58,7 @@ "Clear all backlog variables and buffers." (interactive) (when (get-buffer gnus-backlog-buffer) - (kill-buffer gnus-backlog-buffer)) + (gnus-kill-buffer gnus-backlog-buffer)) (setq gnus-backlog-hashtb nil gnus-backlog-articles nil)) diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index a10deca..60e78fe 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -1,5 +1,5 @@ ;;; gnus-cache.el --- cache interface for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/gnus-cite.el b/lisp/gnus-cite.el index aca645a..ff551dd 100644 --- a/lisp/gnus-cite.el +++ b/lisp/gnus-cite.el @@ -1,6 +1,6 @@ ;;; gnus-cite.el --- parse citations in articles for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Per Abhiddenware @@ -42,19 +42,6 @@ :link '(custom-manual "(gnus)Article Highlighting") :group 'gnus-article) -(defcustom gnus-cite-reply-regexp - "^\\(Subject: Re\\|In-Reply-To\\|References\\):" - "*If headers match this regexp it is reasonable to believe that -article has citations." - :group 'gnus-cite - :type 'string) - -(defcustom gnus-cite-always-check nil - "Check article always for citations. Set it t to check all articles." - :group 'gnus-cite - :type '(choice (const :tag "no" nil) - (const :tag "yes" t))) - (defcustom gnus-cited-opened-text-button-line-format "%(%{[-]%}%)\n" "Format of opened cited text buttons." :group 'gnus-cite diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 3eebcd2..715007d 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -1,6 +1,7 @@ ;;; gnus-cus.el --- customization commands for Gnus ;; -;; Copyright (C) 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: news @@ -130,7 +131,7 @@ All posts will be sent to the specified group.") (string :format "%v" :hide-front-space t)) "\ Specify default value for GCC header. -If this symbol is present in the group parameter list and set to `t', +If this symbol is present in the group parameter list and set to t, new composed messages will be `Gcc''d to the current group. If it is present and set to `none', no `Gcc:' header will be generated, if it is present and a string, this string will be inserted literally as a @@ -339,7 +340,7 @@ Set variables local to the group you are entering. If you want to turn threading off in `news.answers', you could put `(gnus-show-threads nil)' in the group parameters of that group. `gnus-show-threads' will be made into a local variable in the summary -buffer you enter, and the form `nil' will be `eval'ed there. +buffer you enter, and the form nil will be `eval'ed there. This can also be used as a group-specific hook function, if you'd like. If you want to hear a beep when you enter a group, you could @@ -452,15 +453,15 @@ by ordinary scoring rules.") (sexp :format "%v" :hide-front-space t)) "\ This entry controls the adaptive scoring. -If it is `t', the default adaptive scoring rules will be used. If it +If it is t, the default adaptive scoring rules will be used. If it is `ignore', no adaptive scoring will be performed on this group. If it is a list, this list will be used as the adaptive scoring rules. -If it isn't present, or is something other than `t' or `ignore', the +If it isn't present, or is something other than t or `ignore', the default adaptive scoring rules will be used. If you want to use adaptive scoring on most groups, you'd set `gnus-use-adaptive-scoring' -to `t', and insert an `(adapt ignore)' in the groups where you do not +to t, and insert an `(adapt ignore)' in the groups where you do not want adaptive scoring. If you only want adaptive scoring in a few -groups, you'd set `gnus-use-adaptive-scoring' to `nil', and insert +groups, you'd set `gnus-use-adaptive-scoring' to nil, and insert `(adapt t)' in the score files of the groups where you want it.") (adapt-file (file :tag "Adapt-file") "\ diff --git a/lisp/gnus-delay.el b/lisp/gnus-delay.el index cb4fc91..4024a00 100644 --- a/lisp/gnus-delay.el +++ b/lisp/gnus-delay.el @@ -1,6 +1,6 @@ ;;; gnus-delay.el --- Delayed posting of articles -;; Copyright (C) 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Keywords: mail, news, extensions @@ -132,7 +132,12 @@ DELAY is a string, giving the length of the time. Possible values are: (t (error "Malformed delay `%s'" delay))) (message-add-header (format "%s: %s" gnus-delay-header deadline))) (set-buffer-modified-p t) - (nndraft-request-create-group gnus-delay-group) + ;; If group does not exist, create it. + (let ((group (format "nndraft:%s" gnus-delay-group))) + (unless (gnus-gethash group gnus-newsrc-hashtb) + (nndraft-request-create-group gnus-delay-group) + ;; Make it active. + (gnus-set-active group (cons 1 0)))) (message-disassociate-draft) (nndraft-request-associate-buffer gnus-delay-group) (save-buffer 0) diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el index 2aa1615..55b2fe8 100644 --- a/lisp/gnus-draft.el +++ b/lisp/gnus-draft.el @@ -1,5 +1,5 @@ ;;; gnus-draft.el --- draft message support for Semi-gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -187,6 +187,7 @@ (cdr (assq 'unsend (gnus-info-marks (gnus-get-info "nndraft:queue")))))) + (gnus-posting-styles nil) (total (length articles)) article) (while (setq article (pop articles)) diff --git a/lisp/gnus-fun.el b/lisp/gnus-fun.el index da12466..9fcb839 100644 --- a/lisp/gnus-fun.el +++ b/lisp/gnus-fun.el @@ -1,5 +1,5 @@ ;;; gnus-fun.el --- various frivoluos extension functions to Gnus -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -103,7 +103,6 @@ Output to the current buffer, replace text, and don't mingle error." (when (file-exists-p file) (let ((done nil) (attempt "") - (step 72) (quant 16)) (while (and (not done) (> quant 1)) @@ -121,127 +120,44 @@ Output to the current buffer, replace text, and don't mingle error." (if done (mm-with-unibyte-buffer (insert attempt) - (base64-encode-region (point-min) (point-max)) - (goto-char (point-min)) - (while (search-forward "\n" nil t) - (replace-match "")) - (goto-char (point-min)) - (while (> (- (point-max) (point)) - step) - (forward-char step) - (insert "\n ") - (setq step 76)) - (buffer-string)) + (gnus-face-encode)) nil)))) +(defun gnus-face-encode () + (let ((step 72)) + (base64-encode-region (point-min) (point-max)) + (goto-char (point-min)) + (while (search-forward "\n" nil t) + (replace-match "")) + (goto-char (point-min)) + (while (> (- (point-max) (point)) + step) + (forward-char step) + (insert "\n ") + (setq step 76)) + (buffer-string))) + ;;;###autoload (defun gnus-convert-face-to-png (face) + "Convert FACE (which is base64-encoded) to a PNG. +The PNG is returned as a string." (mm-with-unibyte-buffer (insert face) (ignore-errors (base64-decode-region (point-min) (point-max))) (buffer-string))) -(defun gnus-convert-image-to-gray-x-face (file depth) - (let* ((mapfile (mm-make-temp-file (expand-file-name "gnus." - mm-tmp-directory))) - (levels (expt 2 depth)) - (step (/ 255 (1- levels))) - color-alist bits bits-list mask pixel x-faces) - (with-temp-file mapfile - (insert "P3\n") - (insert (format "%d 1\n" levels)) - (insert "255\n") - (dotimes (i levels) - (insert (format "%d %d %d\n" - (* step i) (* step i) (* step i))) - (push (cons (* step i) i) color-alist))) - (when (file-exists-p file) - (with-temp-buffer - (insert (gnus-shell-command-to-string - (format "giftopnm %s | ppmnorm | pnmscale -width 48 -height 48 | ppmquant -fs -map %s | ppmtopgm | pnmnoraw" - (shell-quote-argument file) - mapfile))) - (goto-char (point-min)) - (forward-line 3) - (while (setq pixel (ignore-errors (read (current-buffer)))) - (push (cdr (assq pixel color-alist)) bits-list)) - (setq bits-list (nreverse bits-list)) - (dotimes (bit-number depth) - (setq mask (expt 2 bit-number)) - (with-temp-buffer - (insert "P1\n48 48\n") - (dolist (bits bits-list) - (insert (if (zerop (logand bits mask)) "0 " "1 "))) - (gnus-shell-command-on-region - (point-min) (point-max) - ;; the following is taken from xbmtoikon: - "pbmtoicon | sed '/^[ ]*[*\\\\/]/d; s/[ ]//g; s/,$//' | tr , '\\012' | sed 's/^0x//; s/^/0x/' | pr -l1 -t -w22 -3 -s, | sed 's/,*$/,/' | compface") - (push (buffer-string) x-faces)))) - (dotimes (i (length x-faces)) - (insert (if (zerop i) "X-Face:" (format "X-Face-%s:" i)) - (nth i x-faces)))) - (delete-file mapfile))) - -;;;###autoload -(defun gnus-convert-gray-x-face-to-xpm (faces) - (let* ((depth (length faces)) - (scale (/ 255 (1- (expt 2 depth)))) - (ok-p t) - (coding-system-for-read 'binary) - (coding-system-for-write 'binary) - (input-coding-system 'binary) - (output-coding-system 'binary) - default-enable-multibyte-characters - start bit-array bit-arrays pixel) - (with-temp-buffer - (dolist (face faces) - (erase-buffer) - (insert (uncompface face)) - (gnus-shell-command-on-region - (point-min) (point-max) - "pnmnoraw") - (goto-char (point-min)) - (forward-line 2) - (setq start (point)) - (insert "[") - (while (not (eobp)) - (forward-char 1) - (insert " ")) - (insert "]") - (goto-char start) - (setq bit-array (read (current-buffer))) - (unless (= (length bit-array) (* 48 48)) - (setq ok-p nil)) - (push bit-array bit-arrays)) - (when ok-p - (erase-buffer) - (insert "P2\n48 48\n255\n") - (dotimes (i (* 48 48)) - (setq pixel 0) - (dotimes (plane depth) - (setq pixel (+ (* pixel 2) (aref (nth plane bit-arrays) i)))) - (insert (number-to-string (* scale pixel)) " ")) - (gnus-shell-command-on-region - (point-min) (point-max) - "ppmtoxpm") - (buffer-string))))) - -;;;###autoload -(defun gnus-convert-gray-x-face-region (beg end) - "Convert the X-Faces in region to a PPM file." - (interactive "r") - (let ((input (buffer-substring beg end)) - faces) - (with-temp-buffer - (insert input) - (goto-char (point-min)) - (while (not (eobp)) - (save-restriction - (mail-header-narrow-to-field) - (push (mail-header-field-value) faces) - (goto-char (point-max))))) - (gnus-convert-gray-x-face-to-xpm faces))) +;;;#autoload +(defun gnus-convert-png-to-face (file) + "Convert FILE to a Face. +FILE should be a PNG file that's 48x48 and smaller than or equal to +740 bytes." + (mm-with-unibyte-buffer + (insert-file-contents file) + (when (> (buffer-size) 740) + (error "The file is %d bytes long, which is too long" + (buffer-size))) + (gnus-face-encode))) (defface gnus-x-face '((t (:foreground "black" :background "white"))) "Face to show X-Face. @@ -292,23 +208,25 @@ colors of the displayed X-Faces." (delete-file file) (buffer-string)))) -(defun gnus-grab-gray-x-face () +(defun gnus-grab-cam-face () "Grab a picture off the camera and make it into an X-Face." (interactive) (shell-command "xawtv-remote snap ppm") - (let ((file nil)) + (let ((file nil) + result) (while (null (setq file (directory-files "/tftpboot/sparky/tmp" t "snap.*ppm"))) (sleep-for 1)) (setq file (car file)) - (with-temp-buffer - (shell-command - (format "pnmcut -left 70 -top 100 -width 144 -height 144 '%s' | ppmquant 256 2>/dev/null | ppmtogif > '%s.gif'" - file file) - (current-buffer)) - (delete-file file)) - (gnus-convert-image-to-gray-x-face (concat file ".gif") 3) - (delete-file (concat file ".gif")))) + (shell-command + (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | ppmnorm 2>/dev/null | ppmnorm | ppmtopgm | pnmscale -width 48 -height 48 > /tmp/gnus.face.ppm" + file)) + (let ((gnus-convert-image-to-face-command + "cat '%s' | ppmquant %d | pnmtopng")) + (setq result (gnus-face-from-file "/tmp/gnus.face.ppm"))) + (delete-file file) + ;;(delete-file "/tmp/gnus.face.ppm") + result)) (provide 'gnus-fun) diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 2c662a3..de23c64 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -2262,7 +2262,9 @@ ADDRESS." (require backend)) (gnus-check-server meth) (when (gnus-check-backend-function 'request-create-group nname) - (gnus-request-create-group nname nil args)) + (unless (gnus-request-create-group nname nil args) + (error "Could not create group on server: %s" + (nnheader-get-report backend)))) t)) (defun gnus-group-delete-groups (&optional arg) diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 5b1af45..bf014d3 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -1,5 +1,5 @@ ;;; gnus-int.el --- backend interface functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -45,13 +45,16 @@ "The default status if the server is not able to open. If the server is covered by Gnus agent, the possible values are `denied', set the server denied; `offline', set the server offline; -`nil', ask user. If the server is not covered by Gnus agent, set the +nil, ask user. If the server is not covered by Gnus agent, set the server denied." :group 'gnus-start :type '(choice (const :tag "Ask" nil) (const :tag "Deny server" denied) (const :tag "Unplugg Agent" offline))) +(defvar gnus-internal-registry-spool-current-method nil + "The current method, for the registry.") + ;;; ;;; Server Communication ;;; @@ -488,9 +491,11 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (gnus-inhibit-demon t) (mail-source-plugged gnus-plugged)) (if (or gnus-plugged (not (gnus-agent-method-p gnus-command-method))) - (funcall (gnus-get-function gnus-command-method 'request-scan) - (and group (gnus-group-real-name group)) - (nth 1 gnus-command-method))))) + (progn + (setq gnus-internal-registry-spool-current-method gnus-command-method) + (funcall (gnus-get-function gnus-command-method 'request-scan) + (and group (gnus-group-real-name group)) + (nth 1 gnus-command-method)))))) (defsubst gnus-request-update-info (info gnus-command-method) "Request that GNUS-COMMAND-METHOD update INFO." diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index fb1b829..2488063 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -261,14 +261,14 @@ This variable is used only when `gnus-post-method' is `current'." (defcustom gnus-message-replysign nil - "Automatically sign replys to signed messages. + "Automatically sign replies to signed messages. See also the `mml-default-sign-method' variable." :group 'gnus-message :type 'boolean) (defcustom gnus-message-replyencrypt nil - "Automatically encrypt replys to encrypted messages. + "Automatically encrypt replies to encrypted messages. See also the `mml-default-encrypt-method' variable." :group 'gnus-message :type 'boolean) @@ -309,6 +309,12 @@ If nil, the address field will always be empty after invoking :group 'gnus-message :type 'boolean) +(defcustom gnus-version-expose-system nil + "If non-nil, `system-configuration' is exposed in `gnus-extended-version'. +Note that this variable is ineffective in T-gnus." + :group 'gnus-message + :type 'boolean) + ;;; Internal variables. (defvar gnus-inhibit-posting-styles nil diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el new file mode 100644 index 0000000..79b4ad5 --- /dev/null +++ b/lisp/gnus-registry.el @@ -0,0 +1,62 @@ +;;; gnus-registry.el --- article registry for Gnus +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. + +;; Author: Ted Zlatanov +;; Keywords: news + +;; This file is part of GNU Emacs. + +;; GNU Emacs 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 Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;;; Code: + +(eval-when-compile (require 'cl)) + +(require 'gnus) +(require 'gnus-int) +(require 'gnus-sum) +(require 'nnmail) + +;; (defcustom gnus-summary-article-spool-hook nil +;; "*A hook called after an article is spooled." +;; :group 'gnus-summary +;; :type 'hook) + +(defun regtest (action id from &optional to method) + (message "Registry: article %s %s from %s to %s" + id + (if method "respooling" "going") + (gnus-group-guess-full-name from) + (if to (gnus-group-guess-full-name to) "the Bit Bucket in the sky"))) + +(defun regtest-nnmail (id group) + (message "Registry: article %s spooled to %s" + id + (gnus-group-prefixed-name group gnus-internal-registry-spool-current-method t))) + +;;(add-hook 'gnus-summary-article-move-hook 'regtest) ; also does copy, respool, and crosspost +;;(add-hook 'gnus-summary-article-delete-hook 'regtest) +;;(add-hook 'gnus-summary-article-expire-hook 'regtest) +(add-hook 'nnmail-spool-hook 'regtest-nnmail) + +;; TODO: + +(provide 'gnus-registry) + +;;; gnus-registry.el ends here diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 4215774..abb791e 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -1,5 +1,5 @@ ;;; gnus-score.el --- scoring code for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Per Abrahamsen @@ -1519,7 +1519,7 @@ EXTRA is the possible non-standard header." (with-current-buffer gnus-summary-buffer (setq gnus-newsgroup-scored scored)))) ;; Remove the buffer. - (kill-buffer (current-buffer))) + (gnus-kill-buffer (current-buffer))) ;; Add articles to `gnus-newsgroup-scored'. (while gnus-scores-articles @@ -1544,7 +1544,7 @@ EXTRA is the possible non-standard header." "Lower the score on THREAD with SCORE-ADJUST. THREAD is expected to contain a list of the form `(PARENT [CHILD1 CHILD2 ...])' where PARENT is a header array and each CHILD is a list -of the same form as THREAD. The empty list `nil' is valid. For each +of the same form as THREAD. The empty list nil is valid. For each article in the tree, the score of the corresponding entry in `gnus-newsgroup-scored' is adjusted by SCORE-ADJUST." (while thread @@ -1951,7 +1951,7 @@ score in `gnus-newsgroup-scored' by SCORE." ;; with working on them as a group. What a hassle. ;; Just wait 'til you see what horrors we commit against `match'... (if (= gnus-score-index 9) - (setq this (prin1-to-string this))) ; ick. + (setq this (gnus-prin1-to-string this))) ; ick. (if simplify (setq this (gnus-map-function gnus-simplify-subject-functions this))) @@ -2668,7 +2668,7 @@ GROUP using BNews sys file syntax." (ignore-errors (string-match regexp group-trans)))) (push (car sfiles) ofiles))) (setq sfiles (cdr sfiles))) - (kill-buffer (current-buffer)) + (gnus-kill-buffer (current-buffer)) ;; Slight kludge here - the last score file returned should be ;; the local score file, whether it exists or not. This is so ;; that any score commands the user enters will go to the right diff --git a/lisp/gnus-sieve.el b/lisp/gnus-sieve.el index 106160c..d4e557c 100644 --- a/lisp/gnus-sieve.el +++ b/lisp/gnus-sieve.el @@ -1,5 +1,5 @@ ;;; gnus-sieve.el --- Utilities to manage sieve scripts for Gnus -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. ;; Author: NAGY Andras , ;; Simon Josefsson diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index e6f2c7d..dbd4ac5 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -1,5 +1,5 @@ ;;; gnus-spec.el --- format spec functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 2c846b9..796abbd 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -359,7 +359,7 @@ The following commands are available: (when entry (gnus-dribble-enter (concat "(gnus-server-set-info \"" server "\" '" - (prin1-to-string (cdr entry)) ")\n"))) + (gnus-prin1-to-string (cdr entry)) ")\n"))) (when (or entry oentry) ;; Buffer may be narrowed. (save-restriction @@ -378,7 +378,7 @@ The following commands are available: (when (and server info) (gnus-dribble-enter (concat "(gnus-server-set-info \"" server "\" '" - (prin1-to-string info) ")")) + (gnus-prin1-to-string info) ")")) (let* ((server (nth 1 info)) (entry (assoc server gnus-server-alist)) (cached (assoc server gnus-server-method-cache))) @@ -445,7 +445,7 @@ The following commands are available: "Return to the group buffer." (interactive) (gnus-run-hooks 'gnus-server-exit-hook) - (kill-buffer (current-buffer)) + (gnus-kill-buffer (current-buffer)) (gnus-configure-windows 'group t)) (defun gnus-server-list-servers () @@ -926,7 +926,7 @@ buffer. "Quit browsing and return to the group buffer." (interactive) (when (eq major-mode 'gnus-browse-mode) - (kill-buffer (current-buffer))) + (gnus-kill-buffer (current-buffer))) ;; Insert the newly subscribed groups in the group buffer. (save-excursion (set-buffer gnus-group-buffer) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index ded65bb..d007b35 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -1,5 +1,5 @@ ;;; gnus-start.el --- startup functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -677,9 +677,8 @@ the first newsgroup." (kill-buffer (get-file-buffer (gnus-newsgroup-kill-file nil)))) (gnus-kill-buffer nntp-server-buffer) ;; Kill Gnus buffers. - (let ((buffers (gnus-buffers))) - (when buffers - (mapcar 'kill-buffer buffers))) + (dolist (buffer (gnus-buffers)) + (gnus-kill-buffer buffer)) ;; Remove Gnus frames. (gnus-kill-gnus-frames)) @@ -2206,7 +2205,7 @@ If FORCE is non-nil, the .newsrc file is read." (setq list (cdr list)))))) ;;(defun gnus-re-read-newsrc-el-file (file) -;; "Attempt to re-read .newsrc.eld file. Returns `nil' if successful. +;; "Attempt to re-read .newsrc.eld file. Returns nil if successful. ;;The backup file \".newsrc.eld_\" will be created before re-reading." ;; (message "Error in %s; retrying..." file) ;; (if (and @@ -2622,7 +2621,7 @@ If FORCE is non-nil, the .newsrc file is read." (gnus-gnus-to-quick-newsrc-format) (gnus-run-hooks 'gnus-save-quick-newsrc-hook) (save-buffer-as-coding-system gnus-ding-file-coding-system) - (kill-buffer (current-buffer)) + (gnus-kill-buffer (current-buffer)) (gnus-message 5 "Saving %s.eld...done" gnus-current-startup-file)) (gnus-dribble-delete-file) @@ -2650,7 +2649,7 @@ If FORCE is non-nil, the .newsrc file is read." ;; Never delete this file -- if you want to force Gnus to read the ;; .newsrc file (if you have one), touch .newsrc instead.\n") (insert "(setq gnus-newsrc-file-version " - (prin1-to-string gnus-version) ")\n") + (gnus-prin1-to-string gnus-version) ")\n") (let* ((gnus-killed-list (if (and gnus-save-killed-list (stringp gnus-save-killed-list)) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 3cdf51e..054b0dd 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -873,6 +873,21 @@ automatically when it is selected." :group 'gnus-summary :type 'hook) +(defcustom gnus-summary-article-move-hook nil + "*A hook called after an article is moved, copied, respooled, or crossposted." + :group 'gnus-summary + :type 'hook) + +(defcustom gnus-summary-article-delete-hook nil + "*A hook called after an article is deleted." + :group 'gnus-summary + :type 'hook) + +(defcustom gnus-summary-article-expire-hook nil + "*A hook called after an article is expired." + :group 'gnus-summary + :type 'hook) + (defcustom gnus-summary-display-arrow (and (fboundp 'display-graphic-p) (display-graphic-p)) @@ -1410,26 +1425,24 @@ buffers. For example: (defun gnus-simplify-whitespace (str) "Remove excessive whitespace from STR." - (let ((mystr str)) - ;; Multiple spaces. - (while (string-match "[ \t][ \t]+" mystr) - (setq mystr (concat (substring mystr 0 (match-beginning 0)) - " " - (substring mystr (match-end 0))))) - ;; Leading spaces. - (when (string-match "^[ \t]+" mystr) - (setq mystr (substring mystr (match-end 0)))) - ;; Trailing spaces. - (when (string-match "[ \t]+$" mystr) - (setq mystr (substring mystr 0 (match-beginning 0)))) - mystr)) + ;; Multiple spaces. + (while (string-match "[ \t][ \t]+" str) + (setq str (concat (substring str 0 (match-beginning 0)) + " " + (substring str (match-end 0))))) + ;; Leading spaces. + (when (string-match "^[ \t]+" str) + (setq str (substring str (match-end 0)))) + ;; Trailing spaces. + (when (string-match "[ \t]+$" str) + (setq str (substring str 0 (match-beginning 0)))) + str) (defun gnus-simplify-all-whitespace (str) "Remove all whitespace from STR." - (let ((mystr str)) - (while (string-match "[ \t\n]+" mystr) - (setq mystr (replace-match "" nil nil mystr))) - mystr)) + (while (string-match "[ \t\n]+" str) + (setq str (replace-match "" nil nil str))) + str) (defsubst gnus-simplify-subject-re (subject) "Remove \"Re:\" from subject lines." @@ -2344,7 +2357,8 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) ["Kill" gnus-summary-kill-process-mark t] ["Yank" gnus-summary-yank-process-mark gnus-newsgroup-process-stack] - ["Save" gnus-summary-save-process-mark t])) + ["Save" gnus-summary-save-process-mark t] + ["Run command on marked..." gnus-summary-universal-argument t])) ("Scroll article" ["Page forward" gnus-summary-next-page ,@(if (featurep 'xemacs) '(t) @@ -2399,7 +2413,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) ["See old articles" gnus-summary-insert-old-articles t] ["See new articles" gnus-summary-insert-new-articles t] ["Filter articles..." gnus-summary-execute-command t] - ["Run command on subjects..." gnus-summary-universal-argument t] + ["Run command on articles..." gnus-summary-universal-argument t] ["Search articles forward..." gnus-summary-search-article-forward t] ["Search articles backward..." gnus-summary-search-article-backward t] ["Toggle line truncation" gnus-summary-toggle-truncation t] @@ -4945,13 +4959,13 @@ If SELECT-ARTICLES, only select those articles from GROUP." (gnus-activate-group group) ; Or we can activate it... (progn ; Or we bug out. (when (equal major-mode 'gnus-summary-mode) - (kill-buffer (current-buffer))) + (gnus-kill-buffer (current-buffer))) (error "Couldn't activate group %s: %s" group (gnus-status-message group)))) (unless (gnus-request-group group t) (when (equal major-mode 'gnus-summary-mode) - (kill-buffer (current-buffer))) + (gnus-kill-buffer (current-buffer))) (error "Couldn't request group %s: %s" group (gnus-status-message group))) @@ -6116,18 +6130,18 @@ displayed, no centering will be performed." ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. (interactive) - (let* ((top (cond ((< (window-height) 4) 0) - ((< (window-height) 7) 1) - (t (if (numberp gnus-auto-center-summary) - gnus-auto-center-summary - 2)))) - (height (1- (window-height))) - (bottom (save-excursion (goto-char (point-max)) - (forward-line (- height)) - (point))) - (window (get-buffer-window (current-buffer)))) - ;; The user has to want it. - (when gnus-auto-center-summary + ;; The user has to want it. + (when gnus-auto-center-summary + (let* ((top (cond ((< (window-height) 4) 0) + ((< (window-height) 7) 1) + (t (if (numberp gnus-auto-center-summary) + gnus-auto-center-summary + 2)))) + (height (1- (window-height))) + (bottom (save-excursion (goto-char (point-max)) + (forward-line (- height)) + (point))) + (window (get-buffer-window (current-buffer)))) (when (get-buffer-window gnus-article-buffer) ;; Only do recentering when the article buffer is displayed, ;; Set the window start to either `bottom', which is the biggest @@ -7966,16 +7980,16 @@ of what's specified by the `gnus-refer-thread-limit' variable." (let ((id (mail-header-id (gnus-summary-article-header))) (limit (if limit (prefix-numeric-value limit) gnus-refer-thread-limit))) - ;; We want to fetch LIMIT *old* headers, but we also have to - ;; re-fetch all the headers in the current buffer, because many of - ;; them may be undisplayed. So we adjust LIMIT. - (when (numberp limit) - (incf limit (- gnus-newsgroup-end gnus-newsgroup-begin))) (unless (eq gnus-fetch-old-headers 'invisible) (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name) ;; Retrieve the headers and read them in. (if (eq (gnus-retrieve-headers - (list gnus-newsgroup-end) gnus-newsgroup-name limit) + (list (min + (+ (mail-header-number + (gnus-summary-article-header)) + limit) + gnus-newsgroup-end)) + gnus-newsgroup-name (* limit 2)) 'nov) (gnus-build-all-threads) (error "Can't fetch thread from backends that don't support NOV")) @@ -8307,6 +8321,12 @@ Optional argument BACKWARD means do search for backward. (gnus-use-article-prefetch nil) (gnus-xmas-force-redisplay nil) ;Inhibit XEmacs redisplay. (gnus-use-trees nil) ;Inhibit updating tree buffer. + (gnus-visual nil) + (gnus-keep-backlog nil) + (gnus-break-pages nil) + (gnus-summary-display-arrow nil) + (gnus-updated-mode-lines nil) + (gnus-auto-center-summary nil) (sum (current-buffer)) (found nil) point treated) @@ -8894,8 +8914,14 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (nnheader-get-report (car to-method)))) ((eq art-group 'junk) (when (eq action 'move) - (gnus-summary-mark-article article gnus-canceled-mark) - (gnus-message 4 "Deleted article %s" article))) + (let ((id (mail-header-id (gnus-data-header + (assoc article (gnus-data-list nil)))))) + (gnus-summary-mark-article article gnus-canceled-mark) + (gnus-message 4 "Deleted article %s" article) + ;; run the move/copy/crosspost/respool hook + (run-hook-with-args 'gnus-summary-article-delete-hook + action id gnus-newsgroup-name nil + select-method)))) (t (let* ((pto-group (gnus-group-prefixed-name (car art-group) to-method)) @@ -8979,7 +9005,14 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (gnus-request-article-this-buffer article gnus-newsgroup-name) (nnheader-replace-header "Xref" new-xref) (gnus-request-replace-article - article gnus-newsgroup-name (current-buffer))))) + article gnus-newsgroup-name (current-buffer)))) + + ;; run the move/copy/crosspost/respool hook + (let ((id (mail-header-id (gnus-data-header + (assoc article (gnus-data-list nil)))))) + (run-hook-with-args 'gnus-summary-article-move-hook + action id gnus-newsgroup-name to-newsgroup + select-method))) ;;;!!!Why is this necessary? (set-buffer gnus-summary-buffer) @@ -9200,7 +9233,13 @@ This will be the case if the article has both been mailed and posted." (dolist (article expirable) (when (and (not (memq article es)) (gnus-data-find article)) - (gnus-summary-mark-article article gnus-canceled-mark)))))) + (gnus-summary-mark-article article gnus-canceled-mark) + (let ((id (mail-header-id (gnus-data-header + (assoc article + (gnus-data-list nil)))))) + (run-hook-with-args 'gnus-summary-article-expire-hook + 'delete id gnus-newsgroup-name nil + nil))))))) (gnus-message 6 "Expiring articles...done"))))) (defun gnus-summary-expire-articles-now () @@ -9249,6 +9288,12 @@ delete these instead." ;; after all. (unless (memq (car articles) not-deleted) (gnus-summary-mark-article (car articles) gnus-canceled-mark)) + (let* ((article (car articles)) + (id (mail-header-id (gnus-data-header + (assoc article (gnus-data-list nil)))))) + (run-hook-with-args 'gnus-summary-article-delete-hook + 'delete id gnus-newsgroup-name nil + nil)) (setq articles (cdr articles))) (when not-deleted (gnus-message 4 "Couldn't delete articles %s" not-deleted))) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index b99f3ac..7ef69f9 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -1,5 +1,5 @@ ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Ilja Weis @@ -462,7 +462,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher." (unless gnus-killed-hashtb (gnus-make-hashtable-from-killed)) (gnus-group-prepare-flat-list-dead - (gnus-delete-if (lambda (group) + (gnus-remove-if (lambda (group) (or (gnus-gethash group gnus-newsrc-hashtb) (gnus-gethash group gnus-killed-hashtb))) not-in-list) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 8806c74..71cc93e 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -1,5 +1,5 @@ ;;; gnus-util.el --- utility functions for Semi-gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -134,6 +134,8 @@ (defmacro gnus-kill-buffer (buffer) `(let ((buf ,buffer)) (when (gnus-buffer-exists-p buf) + (when (boundp 'gnus-buffers) + (setq gnus-buffers (delete (get-buffer buf) gnus-buffers))) (kill-buffer buf)))) (static-cond @@ -658,9 +660,13 @@ Bind `print-quoted' and `print-readably' to t while printing." (prin1 form (current-buffer)))) (defun gnus-prin1-to-string (form) - "The same as `prin1', but bind `print-quoted' and `print-readably' to t." + "The same as `prin1'. +Bind `print-quoted' and `print-readably' to t, and `print-length' +and `print-level' to nil." (let ((print-quoted t) - (print-readably t)) + (print-readably t) + (print-length nil) + (print-level nil)) (prin1-to-string form))) (defun gnus-make-directory (directory) @@ -953,17 +959,14 @@ with potentially long computations." (defun gnus-map-function (funs arg) "Applies the result of the first function in FUNS to the second, and so on. ARG is passed to the first function." - (let ((myfuns funs)) - (while myfuns - (setq arg (funcall (pop myfuns) arg))) - arg)) + (while funs + (setq arg (funcall (pop funs) arg))) + arg) (defun gnus-run-hooks (&rest funcs) - "Does the same as `run-hooks', but saves excursion." - (let ((buf (current-buffer))) - (unwind-protect - (apply 'run-hooks funcs) - (set-buffer buf)))) + "Does the same as `run-hooks', but saves the current buffer." + (save-current-buffer + (apply 'run-hooks funcs))) ;;; Various @@ -977,20 +980,20 @@ ARG is passed to the first function." (eq major-mode 'gnus-group-mode)))) (defun gnus-remove-duplicates (list) - (let (new (tail list)) - (while tail - (or (member (car tail) new) - (setq new (cons (car tail) new))) - (setq tail (cdr tail))) + (let (new) + (while list + (or (member (car list) new) + (setq new (cons (car list) new))) + (setq list (cdr list))) (nreverse new))) -(defun gnus-delete-if (predicate list) - "Delete elements from LIST that satisfy PREDICATE." +(defun gnus-remove-if (predicate list) + "Return a copy of LIST with all items satisfying PREDICATE removed." (let (out) (while list (unless (funcall predicate (car list)) (push (car list) out)) - (pop list)) + (setq list (cdr list))) (nreverse out))) (if (fboundp 'assq-delete-all) @@ -1112,7 +1115,7 @@ Return the modified alist." (defcustom gnus-use-byte-compile t "If non-nil, byte-compile crucial run-time codes. -Setting it to `nil' has no effect after first time running +Setting it to nil has no effect after first time running `gnus-byte-compile'." :type 'boolean :version "21.1" diff --git a/lisp/gnus-vers.el b/lisp/gnus-vers.el index 15628ca..1265b18 100644 --- a/lisp/gnus-vers.el +++ b/lisp/gnus-vers.el @@ -40,10 +40,10 @@ ;; Product information of this gnus. (product-provide 'gnus-vers (product-define "T-gnus" nil - (list 6 15 14 + (list 6 15 15 (string-to-number gnus-revision-number)))) -(defconst gnus-original-version-number "0.14" +(defconst gnus-original-version-number "0.15" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index ab6fb9c..f95e52e 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -1,5 +1,5 @@ ;;; gnus-win.el --- window configuration functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -571,7 +571,7 @@ should have point." (memq frame '(t 0 visible))) (car (let ((frames (gnus-frames-on-display-list))) - (gnus-delete-if (lambda (win) (not (memq (window-frame win) + (gnus-remove-if (lambda (win) (not (memq (window-frame win) frames))) (get-buffer-window-list buffer nil frame))))) (t diff --git a/lisp/gnus.el b/lisp/gnus.el index 6787076..fec355f 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -60,6 +60,10 @@ :link '(custom-manual "(gnus)Article Caching") :group 'gnus) +(defgroup gnus-registry nil + "Article Registry." + :group 'gnus) + (defgroup gnus-start nil "Starting your favorite newsreader." :group 'gnus) @@ -994,7 +998,7 @@ defaults to a proper value only if this file is byte-compiled by make.") (defmacro gnus-define-group-parameter (param &rest rest) "Define a group parameter PARAM. REST is a plist of following: -:type One of `bool', `list' or `nil'. +:type One of `bool', `list' or nil. :function The name of the function. :function-document The documentation of the function. :parameter-type The type for customizing the parameter. @@ -1369,7 +1373,7 @@ newsgroups." "*The number of articles which indicates a large newsgroup. If the number of articles in a newsgroup is greater than this value, confirmation is required for selecting the newsgroup. -If it is `nil', no confirmation is required." +If it is nil, no confirmation is required." :group 'gnus-group-select :type '(choice (const :tag "No limit" nil) integer)) @@ -1775,7 +1779,7 @@ posting an article." This number will be prompted as the initial value of the number of articles to list when the group is a large newsgroup (see -`gnus-large-newsgroup'). If it is `nil', the default value is the +`gnus-large-newsgroup'). If it is nil, the default value is the total number of articles in the group.") ;; group parameters for spam processing added by Ted Zlatanov @@ -1821,13 +1825,13 @@ This only makes sense for mail groups." (choice (variable-item gnus-group-spam-classification-spam) (variable-item gnus-group-spam-classification-ham) - (other :tag "Unclassified" nil)))) + (const :tag "Unclassified" nil)))) :parameter-type '(list :tag "Group contents spam/ham classification" (choice :tag "Group contents classification for spam sorting" (variable-item gnus-group-spam-classification-spam) (variable-item gnus-group-spam-classification-ham) - (other :tag "Unclassified" nil))) + (const :tag "Unclassified" nil))) :parameter-document "The spam classification (spam, ham, or neither) of this group. When a spam group is entered, all unread articles are marked as spam.") @@ -1915,7 +1919,7 @@ for mail groups." spam-process-destination :parameter-type '(choice :tag "Destination for spam-processed articles at summary exit" (string :tag "Move to a group") - (other :tag "Expire" nil)) + (const :tag "Expire" nil)) :function-document "Where spam-processed articles will go at summary exit." :variable gnus-spam-process-destinations @@ -1925,7 +1929,7 @@ for mail groups." another group, or expire them (the default). If non-nil, this should be a list of group name regexps that should match all groups in which to do spam-processed article moving, associated with the destination -group or `nil' for explicit expiration. This only makes sense for +group or nil for explicit expiration. This only makes sense for mail groups." :variable-group spam :variable-type '(repeat @@ -1935,7 +1939,7 @@ mail groups." (choice :tag "Destination for spam-processed articles at summary exit" (string :tag "Move to a group") - (other :tag "Expire" nil)))) + (const :tag "Expire" nil)))) :parameter-document "Where spam-processed articles will go at summary exit.") @@ -1944,7 +1948,7 @@ mail groups." :parameter-type '(choice :tag "Destination for ham articles at summary exit from a spam group" (string :tag "Move to a group") - (other :tag "Do nothing" nil)) + (const :tag "Do nothing" nil)) :function-document "Where ham articles will go at summary exit from a spam group." :variable gnus-ham-process-destinations @@ -1954,7 +1958,7 @@ mail groups." another group, or do nothing (the default). If non-nil, this should be a list of group name regexps that should match all groups in which to do ham article moving, associated with the destination -group or `nil' for explicit ignoring. This only makes sense for +group or nil for explicit ignoring. This only makes sense for mail groups, and only works in spam groups." :variable-group spam :variable-type '(repeat @@ -1964,7 +1968,7 @@ mail groups, and only works in spam groups." (choice :tag "Destination for ham articles at summary exit from spam group" (string :tag "Move to a group") - (other :tag "Expire" nil)))) + (const :tag "Expire" nil)))) :parameter-document "Where ham articles will go at summary exit from a spam group.")) @@ -3196,15 +3200,30 @@ that that variable is buffer-local to the summary buffers." (defsubst gnus-method-to-full-server-name (method) (format "%s+%s" (car method) (nth 1 method))) -(defun gnus-group-prefixed-name (group method) - "Return the whole name from GROUP and METHOD." +(defun gnus-group-prefixed-name (group method &optional full) + "Return the whole name from GROUP and METHOD. Call with full set to +get the fully qualified group name (even if the server is native)." (and (stringp method) (setq method (gnus-server-to-method method))) (if (or (not method) - (gnus-server-equal method "native") + (and (not full) (gnus-server-equal method "native")) (string-match ":" group)) group (concat (gnus-method-to-server-name method) ":" group))) +(defun gnus-group-guess-prefixed-name (group) + "Guess the whole name from GROUP and METHOD." + (gnus-group-prefixed-name group (gnus-find-method-for-group + group))) + +(defun gnus-group-full-name (group method) + "Return the full name from GROUP and METHOD, even if the method is +native." + (gnus-group-prefixed-name group method t)) + +(defun gnus-group-guess-full-name (group) + "Guess the full name from GROUP, even if the method is native." + (gnus-group-full-name group (gnus-find-method-for-group group))) + (defun gnus-group-real-prefix (group) "Return the prefix of the current group name." (if (string-match "^[^:]+:" group) diff --git a/lisp/mail-source.el b/lisp/mail-source.el index fd193b5..b1e7abd 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -1,5 +1,5 @@ ;;; mail-source.el --- functions for fetching mail -;; Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -231,6 +231,11 @@ See Info node `(gnus)Mail Source Specifiers'." (const :format "" :value :plugged) (boolean :tag "Plugged"))))))) +(defcustom mail-source-ignore-errors nil + "*Ignore errors when querying mail sources. +If nil, the user will be prompted when an error occurs. If non-nil, +the error will be ignored.") + (defcustom mail-source-primary-source nil "*Primary source for incoming mail. If non-nil, this maildrop will be checked periodically for new mail." @@ -478,15 +483,16 @@ Return the number of files that were found." (condition-case err (funcall function source callback) (error - (unless (yes-or-no-p - (format "Mail source %s error (%s). Continue? " - (if (memq ':password source) - (let ((s (copy-sequence source))) - (setcar (cdr (memq ':password s)) - "********") - s) - source) - (cadr err))) + (if (and (not mail-source-ignore-errors) + (yes-or-no-p + (format "Mail source %s error (%s). Continue? " + (if (memq ':password source) + (let ((s (copy-sequence source))) + (setcar (cdr (memq ':password s)) + "********") + s) + source) + (cadr err)))) (error "Cannot get new mail")) 0))))))))) diff --git a/lisp/messcompat.el b/lisp/messcompat.el index fc3d52c..ff7520f 100644 --- a/lisp/messcompat.el +++ b/lisp/messcompat.el @@ -1,6 +1,6 @@ ;;; messcompat.el --- making message mode compatible with mail mode -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -40,7 +40,7 @@ (defvar message-from-style mail-from-style "*Specifies how \"From\" headers look. -If `nil', they contain just the return address like: +If nil, they contain just the return address like: king@grassland.com If `parens', they look like: king@grassland.com (Elvis Parsley) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 9e127a0..02af749 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -1,5 +1,6 @@ ;;; mm-decode.el --- Functions for decoding MIME things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, +;; 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -110,7 +111,7 @@ The defined renderer types are: `links': using links; `lynx' : using lynx; `html2text' : using html2text; -`nil' : using external viewer." +nil : using external viewer." :type '(choice (const w3) (const w3m) (const links) @@ -355,7 +356,6 @@ If not set, `default-directory' will be used." ;;; Internal variables. -(defvar mm-dissection-list nil) (defvar mm-last-shell-command "") (defvar mm-content-id-alist nil) (defvar mm-postponed-undisplay-list nil) @@ -552,16 +552,8 @@ for types in mm-keep-viewer-alive-types." (if (equal "text/plain" (car ctl)) (assoc 'format ctl) t)) - (let ((res (mm-make-handle - (mm-copy-to-buffer) ctl cte nil cdl description nil id))) - (push (car res) mm-dissection-list) - res))) - -(defun mm-remove-all-parts () - "Remove all MIME handles." - (interactive) - (mapcar 'mm-remove-part mm-dissection-list) - (setq mm-dissection-list nil)) + (mm-make-handle + (mm-copy-to-buffer) ctl cte nil cdl description nil id))) (defun mm-dissect-multipart (ctl) (goto-char (point-min)) diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el index 4338eb9..770d106 100644 --- a/lisp/mm-encode.el +++ b/lisp/mm-encode.el @@ -1,5 +1,6 @@ ;;; mm-encode.el --- Functions for encoding MIME things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -164,21 +165,24 @@ The encoding used is returned." (pop rules))))) (defun mm-qp-or-base64 () - (save-excursion - (let ((limit (min (point-max) (+ 2000 (point-min)))) - (n8bit 0)) - (goto-char (point-min)) - (skip-chars-forward "\x20-\x7f\r\n\t" limit) - (while (< (point) limit) - (incf n8bit) - (forward-char 1) - (skip-chars-forward "\x20-\x7f\r\n\t" limit)) - (if (or (< (* 6 n8bit) (- limit (point-min))) - ;; Don't base64, say, a short line with a single - ;; non-ASCII char when splitting parts by charset. - (= n8bit 1)) - 'quoted-printable - 'base64)))) + (if (equal mm-use-ultra-safe-encoding '(sign . "pgp")) + ;; perhaps not always accurate? + 'quoted-printable + (save-excursion + (let ((limit (min (point-max) (+ 2000 (point-min)))) + (n8bit 0)) + (goto-char (point-min)) + (skip-chars-forward "\x20-\x7f\r\n\t" limit) + (while (< (point) limit) + (incf n8bit) + (forward-char 1) + (skip-chars-forward "\x20-\x7f\r\n\t" limit)) + (if (or (< (* 6 n8bit) (- limit (point-min))) + ;; Don't base64, say, a short line with a single + ;; non-ASCII char when splitting parts by charset. + (= n8bit 1)) + 'quoted-printable + 'base64))))) (provide 'mm-encode) diff --git a/lisp/mm-url.el b/lisp/mm-url.el index 38dedc2..aa3cfda 100644 --- a/lisp/mm-url.el +++ b/lisp/mm-url.el @@ -1,5 +1,5 @@ ;;; mm-url.el --- a wrapper of url functions/commands for Gnus -;; Copyright (C) 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 94bcabf..80fb3f2 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -1,5 +1,6 @@ ;;; mm-util.el --- Utility functions for Mule and low level things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -463,7 +464,7 @@ If the charset is `composition', return the actual one." (mm-mule-charset-to-mime-charset charset))) (defun mm-delete-duplicates (list) - "Simple substitute for CL `delete-duplicates', testing with `equal'." + "Simple substitute for CL `delete-duplicates', testing with `equal'." (let (result head) (while list (setq head (car list)) @@ -695,7 +696,7 @@ START, END and FILENAME. START and END are buffer positions saying what text to write. Optional fourth argument specifies the coding system to use when encoding the file. -If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." +If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'." (let ((coding-system-for-write (or codesys mm-text-coding-system-for-write mm-text-coding-system)) @@ -713,7 +714,7 @@ If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." coding-system inhibit) "Like `write-region'. -If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." +If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'." (let ((coding-system-for-write (or coding-system mm-text-coding-system-for-write mm-text-coding-system)) @@ -739,7 +740,7 @@ If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." (if (fboundp 'detect-coding-region) (defun mm-detect-coding-region (start end) - "Like 'detect-coding-region' except returning the best one." + "Like `detect-coding-region' except returning the best one." (let ((coding-systems (detect-coding-region (point) (point-max)))) (or (car-safe coding-systems) diff --git a/lisp/mml-sec.el b/lisp/mml-sec.el index 0b1be32..a55e170 100644 --- a/lisp/mml-sec.el +++ b/lisp/mml-sec.el @@ -1,5 +1,5 @@ ;;; mml-sec.el --- A package with security functions for MML documents -;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; This file is not part of GNU Emacs, but the same permissions apply. @@ -219,7 +219,7 @@ You can also customize or set `mml-signencrypt-style-alist' instead." (save-excursion (goto-char (point-max)) (when (re-search-backward "^<#secure.*>\n" nil t) - (kill-region (match-beginning 0) (match-end 0))))) + (delete-region (match-beginning 0) (match-end 0))))) (defun mml-secure-message-sign-smime () "Add MML tag to encrypt/sign the entire message." diff --git a/lisp/mml.el b/lisp/mml.el index 1018f39..d35cb8c 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -1,5 +1,6 @@ ;;; mml.el --- A package for parsing and validating MML documents -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/nndraft.el b/lisp/nndraft.el index b0ffdbb..9ca7314 100644 --- a/lisp/nndraft.el +++ b/lisp/nndraft.el @@ -1,6 +1,6 @@ ;;; nndraft.el --- draft article access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 4f8d585..251c6c7 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -1,5 +1,5 @@ ;;; nnfolder.el --- mail folder access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Simon Josefsson (adding MARKS) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index 0e3bb51..aa94eaa 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -1,7 +1,7 @@ ;;; nnheader.el --- header access macros for Semi-gnus and its backends ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, -;; 1997, 1998, 2000, 2001, 2002 +;; 1997, 1998, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA @@ -36,7 +36,7 @@ ;; Requiring `gnus-util' at compile time creates a circular ;; dependency between nnheader.el and gnus-util.el. -;(eval-when-compile (require 'gnus-util)) +;;(eval-when-compile (require 'gnus-util)) (require 'mail-utils) @@ -120,6 +120,10 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (t nil)) "Coding system of auto save file.") +(defvar nnheader-directory-separator-character + (string-to-char (substring (file-name-as-directory ".") -1)) + "*A character used to a directory separator.") + (eval-and-compile (autoload 'nnmail-message-id "nnmail") (autoload 'mail-position-on-field "sendmail") @@ -1397,7 +1401,7 @@ without formatting." (expand-file-name (file-name-as-directory top)))) (error ""))) - ?/ ?.)) + nnheader-directory-separator-character ?.)) (defun nnheader-message (level &rest args) "Message if the Gnus backends are talkative." diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 182f34f..699059b 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -1,5 +1,6 @@ ;;; nnimap.el --- imap backend for Gnus -;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Jim Radford @@ -1328,7 +1329,9 @@ function is generally only called when Gnus is shutting down." (deffoo nnimap-request-create-group (group &optional server args) (when (nnimap-possibly-change-server server) (or (imap-mailbox-status group 'uidvalidity nnimap-server-buffer) - (imap-mailbox-create group nnimap-server-buffer)))) + (imap-mailbox-create group nnimap-server-buffer) + (nnheader-report 'nnimap "%S" + (imap-error-text nnimap-server-buffer))))) (defun nnimap-time-substract (time1 time2) "Return TIME for TIME1 - TIME2." diff --git a/lisp/nnmail.el b/lisp/nnmail.el index b8d4de3..e377b86 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1,5 +1,5 @@ ;;; nnmail.el --- mail support functions for the Gnus mail backends -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -35,8 +35,6 @@ (require 'mail-source) (eval-and-compile - (autoload 'gnus-error "gnus-util") - (autoload 'gnus-buffer-live-p "gnus-util") (autoload 'gnus-add-buffer "gnus")) (defgroup nnmail nil @@ -166,10 +164,10 @@ can also be `immediate' and `never'." (defcustom nnmail-expiry-wait-function nil "Variable that holds function to specify how old articles should be before they are expired. - The function will be called with the name of the group that the -expiry is to be performed in, and it should return an integer that -says how many days an article can be stored before it is considered -\"old\". It can also return the values `never' and `immediate'. +The function will be called with the name of the group that the expiry +is to be performed in, and it should return an integer that says how +many days an article can be stored before it is considered \"old\". +It can also return the values `never' and `immediate'. Eg.: @@ -349,6 +347,11 @@ discarded after running the split process." :group 'nnmail-split :type 'hook) +(defcustom nnmail-spool-hook nil + "*A hook called when a new article is spooled." + :group 'nnmail + :type 'hook) + (defcustom nnmail-large-newsgroup 50 "*The number of the articles which indicates a large newsgroup or nil. If the number of the articles is greater than the value, verbose @@ -999,8 +1002,7 @@ FUNC will be called with the buffer narrowed to each mail." FUNC will be called with the group name to determine the article number." (let ((methods (or nnmail-split-methods '(("bogus" "")))) (obuf (current-buffer)) - (beg (point-min)) - end group-art method grp) + group-art method grp) (if (and (sequencep methods) (= (length methods) 1)) ;; If there is only just one group to put everything in, we @@ -1009,13 +1011,17 @@ FUNC will be called with the group name to determine the article number." (list (cons (caar methods) (funcall func (caar methods))))) ;; We do actual comparison. (save-excursion - ;; Find headers. - (goto-char beg) - (setq end (if (search-forward "\n\n" nil t) (point) (point-max))) + ;; Copy the article into the work buffer. (set-buffer nntp-server-buffer) (erase-buffer) - ;; Copy the headers into the work buffer. - (insert-buffer-substring obuf beg end) + (insert-buffer-substring obuf) + ;; Narrow to headers. + (narrow-to-region + (goto-char (point-min)) + (if (search-forward "\n\n" nil t) + (point) + (point-max))) + (goto-char (point-min)) ;; Decode MIME headers and charsets. (when nnmail-mail-splitting-decodes (mime-decode-header-in-region (point-min) (point-max) @@ -1107,6 +1113,7 @@ FUNC will be called with the group name to determine the article number." (goto-char (point-min)) (gnus-configure-windows 'split-trace) (set-buffer restore))) + (widen) ;; See whether the split methods returned `junk'. (if (equal group-art '(junk)) nil @@ -1325,7 +1332,7 @@ See the documentation for the variable `nnmail-split-fancy' for details." ;; correct match positions. (re-search-backward (concat "\\<" value "\\>") start-of-value)) (dolist (sp (nnmail-split-it (car split-rest))) - (unless (memq sp split-result) + (unless (member sp split-result) (push sp split-result)))))) split-result)) @@ -1470,13 +1477,15 @@ See the documentation for the variable `nnmail-split-fancy' for details." nnmail-message-id-cache-file nil 'silent) (set-buffer-modified-p nil) (setq nnmail-cache-buffer nil) - (kill-buffer (current-buffer))))) + (gnus-kill-buffer (current-buffer))))) ;; Compiler directives. (defvar group) (defvar group-art-list) (defvar group-art) (defun nnmail-cache-insert (id grp) + (run-hook-with-args 'nnmail-spool-hook + id grp) (when nnmail-treat-duplicates ;; Store some information about the group this message is written ;; to. This is passed in as the grp argument -- all locations this @@ -1880,7 +1889,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." "Remove all instances of GROUP from `nnmail-split-history'." (let ((history nnmail-split-history)) (while history - (setcar history (gnus-delete-if (lambda (e) (string= (car e) group)) + (setcar history (gnus-remove-if (lambda (e) (string= (car e) group)) (car history))) (pop history)) (setq nnmail-split-history (delq nil nnmail-split-history)))) diff --git a/lisp/nnrss.el b/lisp/nnrss.el index 00c10bd..6bbfeb0 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -1,5 +1,5 @@ ;;; nnrss.el --- interfacing with RSS -;; Copyright (C) 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: RSS diff --git a/lisp/nnslashdot.el b/lisp/nnslashdot.el index 3731a73..57de225 100644 --- a/lisp/nnslashdot.el +++ b/lisp/nnslashdot.el @@ -1,5 +1,5 @@ ;;; nnslashdot.el --- interfacing with Slashdot -;; Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index 56fc626..d39c999 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -1,6 +1,6 @@ ;;; nnsoup.el --- SOUP access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/nnspool.el b/lisp/nnspool.el index 343585e..a799687 100644 --- a/lisp/nnspool.el +++ b/lisp/nnspool.el @@ -1,7 +1,7 @@ ;;; nnspool.el --- spool access for GNU Emacs ;; Copyright (C) 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998, -;; 2000, 2002 +;; 2000, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA diff --git a/lisp/nntp.el b/lisp/nntp.el index 0b822a5..0c735f5 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -1,7 +1,7 @@ ;;; nntp.el --- nntp access for Gnus ;; Copyright (C) 1987, 1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996, -;; 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. +;; 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Katsumi Yamaoka @@ -237,7 +237,10 @@ NOTE: This variable is never seen to work in Emacs 20 and XEmacs 21.") "*Hook run just before posting an article. It is supposed to be used to insert Cancel-Lock headers.") -(defvoo nntp-read-timeout 0.1 +(defvoo nntp-read-timeout (if (string-match "windows-nt\\|os/2\\|emx\\|cygwin" + (symbol-name system-type)) + 1.0 + 0.1) "How long nntp should wait between checking for the end of output. Shorter values mean quicker response, but is more CPU intensive.") diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 08e2bdf..855e938 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -1,5 +1,5 @@ ;;; nnvirtual.el --- virtual newsgroups access for Gnus -;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: David Moore diff --git a/lisp/nnweb.el b/lisp/nnweb.el index 7937da5..8c83eda 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -1,5 +1,5 @@ ;;; nnweb.el --- retrieving articles via web search engines -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/pop3.el b/lisp/pop3.el index 4df3b6c..b09c6a0 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -1,6 +1,6 @@ ;;; pop3.el --- Post Office Protocol (RFC 1460) interface -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. ;; Author: Richard L. Pieri diff --git a/lisp/sieve-manage.el b/lisp/sieve-manage.el index 967c721..9193577 100644 --- a/lisp/sieve-manage.el +++ b/lisp/sieve-manage.el @@ -1,5 +1,5 @@ ;;; sieve-manage.el --- Implementation of the managesive protocol in elisp -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -535,7 +535,13 @@ password is remembered in the buffer." (when (looking-at (concat "^\\(OK\\|NO\\)\\( (\\([^)]+\\))\\)?\\( \\(.*\\)\\)?" sieve-manage-server-eol)) - (list (match-string 1) (match-string 3) (match-string 5)))) + (let ((status (match-string 1)) + (resp-code (match-string 3)) + (response (match-string 5))) + (when response + (goto-char (match-beginning 5)) + (setq response (sieve-manage-is-string))) + (list status resp-code response)))) (defun sieve-manage-parse-okno () (let (rsp) diff --git a/lisp/sieve-mode.el b/lisp/sieve-mode.el index 944b189..f47b5d0 100644 --- a/lisp/sieve-mode.el +++ b/lisp/sieve-mode.el @@ -1,5 +1,5 @@ ;;; sieve-mode.el --- Sieve code editing commands for Emacs -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson diff --git a/lisp/sieve.el b/lisp/sieve.el index edfd385..ad62856 100644 --- a/lisp/sieve.el +++ b/lisp/sieve.el @@ -1,5 +1,5 @@ ;;; sieve.el --- Utilities to manage sieve scripts -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -368,8 +368,10 @@ Server : " server ":" (or port "2000") " (with-current-buffer (get-buffer sieve-buffer) (setq err (sieve-manage-putscript name script sieve-manage-buffer)) (if (sieve-manage-ok-p err) - (message (concat "Sieve upload done. Use `C-c RET' to manage scripts.")) - (message "Sieve upload failed: %s" (nth 2 err))))))) + (message (concat + "Sieve upload done. Use `C-c RET' to manage scripts.")) + (message "Sieve upload failed: %s" + (replace-regexp-in-string "[\n\r\t]+" " " (nth 2 err)))))))) ;;;###autoload (defun sieve-upload-and-bury (&optional name) diff --git a/lisp/smiley.el b/lisp/smiley.el index c79a825..7ab84bc 100644 --- a/lisp/smiley.el +++ b/lisp/smiley.el @@ -1,6 +1,6 @@ ;;; smiley.el --- displaying smiley faces -;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: news mail multimedia diff --git a/lisp/spam-stat.el b/lisp/spam-stat.el index fc134f9..f4c5ec9 100644 --- a/lisp/spam-stat.el +++ b/lisp/spam-stat.el @@ -1,6 +1,6 @@ ;;; spam-stat.el --- detecting spam based on statistics -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Keywords: network diff --git a/lisp/spam.el b/lisp/spam.el index 75dcfe5..9050c3a 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -1,5 +1,5 @@ ;;; spam.el --- Identifying spam -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: network @@ -97,6 +97,13 @@ The regular expression is matched against the address." :type 'boolean :group 'spam) +(defcustom spam-use-whitelist-exclusive nil + "Whether whitelist-exclusive should be used by spam-split. +Exclusive whitelisting means that all messages from senders not in the whitelist +are considered spam." + :type 'boolean + :group 'spam) + (defcustom spam-use-blackholes nil "Whether blackholes should be used by spam-split." :type 'boolean @@ -125,6 +132,13 @@ Enable this if you want Gnus to invoke Bogofilter on new messages." :type 'boolean :group 'spam) +(defcustom spam-use-BBDB-exclusive nil + "Whether BBDB-exclusive should be used by spam-split. +Exclusive BBDB means that all messages from senders not in the BBDB are +considered spam." + :type 'boolean + :group 'spam) + (defcustom spam-use-ifile nil "Whether ifile should be used by spam-split." :type 'boolean @@ -152,6 +166,11 @@ All unmarked article in such group receive the spam mark on group entry." :type '(repeat (string :tag "Server")) :group 'spam) +(defcustom spam-blackhole-good-server-regex nil + "String matching IP addresses that should not be checked in the blackholes" + :type 'regexp + :group 'spam) + (defcustom spam-ham-marks (list 'gnus-del-mark 'gnus-read-mark 'gnus-killed-mark 'gnus-kill-file-mark 'gnus-low-score-mark) @@ -240,6 +259,11 @@ your main source of newsgroup names." :type 'string :group 'spam-bogofilter) +(defcustom spam-bogofilter-bogosity-positive-spam-header "^\\(Yes\\|Spam\\)" + "The regex on `spam-bogofilter-header' for positive spam identification." + :type 'regexp + :group 'spam-bogofilter) + (defcustom spam-bogofilter-database-directory nil "Directory path of the Bogofilter databases." :type '(choice (directory :tag "Location of the Bogofilter database directory") @@ -400,15 +424,15 @@ your main source of newsgroup names." (defun spam-ham-move-routine (&optional group) (let ((articles gnus-newsgroup-articles) article ham-mark-values mark) + (dolist (mark spam-ham-marks) (push (symbol-value mark) ham-mark-values)) - - (while articles - (setq article (pop articles)) - (when (and (memq mark ham-mark-values) + + (dolist (article articles) + (when (and (memq (gnus-summary-article-mark article) ham-mark-values) (stringp group)) - (let ((gnus-current-article article)) - (gnus-summary-move-article nil group)))))) + (let ((gnus-current-article article)) + (gnus-summary-move-article nil group)))))) (defun spam-generic-register-routine (spam-func ham-func) (let ((articles gnus-newsgroup-articles) @@ -501,9 +525,9 @@ your main source of newsgroup names." "The spam-list-of-checks list contains pairs associating a parameter variable with a spam checking function. If the parameter variable is true, then the checking function is called, and its value decides what -happens. Each individual check may return `nil', `t', or a mailgroup -name. The value `nil' means that the check does not yield a decision, -and so, that further checks are needed. The value `t' means that the +happens. Each individual check may return nil, t, or a mailgroup +name. The value nil means that the check does not yield a decision, +and so, that further checks are needed. The value t means that the message is definitely not spam, and that further spam checks should be inhibited. Otherwise, a mailgroup name is returned where the mail should go, and further checks are also inhibited. The usual mailgroup @@ -572,18 +596,20 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." ips))) (dolist (server spam-blackhole-servers) (dolist (ip ips) - (let ((query-string (concat ip "." server))) - (if spam-use-dig - (let ((query-result (query-dig query-string))) - (when query-result - (gnus-message 5 "(DIG): positive blackhole check '%s'" query-result) - (push (list ip server query-result) - matches))) - ;; else, if not using dig.el - (when (query-dns query-string) - (gnus-message 5 "positive blackhole check") - (push (list ip server (query-dns query-string 'TXT)) - matches))))))) + (unless (and spam-blackhole-good-server-regex + (string-match spam-blackhole-good-server-regex ip)) + (let ((query-string (concat ip "." server))) + (if spam-use-dig + (let ((query-result (query-dig query-string))) + (when query-result + (gnus-message 5 "(DIG): positive blackhole check '%s'" query-result) + (push (list ip server query-result) + matches))) + ;; else, if not using dig.el + (when (query-dns query-string) + (gnus-message 5 "positive blackhole check") + (push (list ip server (query-dns query-string 'TXT)) + matches)))))))) (when matches spam-split-group))) @@ -620,13 +646,15 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (spam-enter-ham-BBDB (spam-fetch-field-from-fast article))))) (defun spam-check-BBDB () - "Mail from people in the BBDB is never considered spam" + "Mail from people in the BBDB is classified as ham or non-spam" (let ((who (message-fetch-field "from"))) (when who - (setq who (regexp-quote (cadr - (gnus-extract-address-components who)))) + (setq who (cadr (gnus-extract-address-components who))) (if (bbdb-search-simple nil who) - nil spam-split-group))))) + t + (if spam-use-BBDB-exclusive + spam-split-group + nil)))))) (file-error (progn (defalias 'bbdb-search-simple 'ignore) @@ -780,12 +808,16 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." (insert address "\n") (save-buffer))) -;;; returns nil if the sender is in the whitelist, spam-split-group otherwise +;;; returns t if the sender is in the whitelist, nil or spam-split-group otherwise (defun spam-check-whitelist () ;; FIXME! Should it detect when file timestamps change? (unless spam-whitelist-cache (setq spam-whitelist-cache (spam-parse-list spam-whitelist))) - (if (spam-from-listed-p spam-whitelist-cache) nil spam-split-group)) + (if (spam-from-listed-p spam-whitelist-cache) + t + (if spam-use-whitelist-exclusive + spam-split-group + nil))) (defun spam-check-blacklist () ;; FIXME! Should it detect when file timestamps change? @@ -843,12 +875,12 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." (defun spam-check-bogofilter-headers (&optional score) (let ((header (message-fetch-field spam-bogofilter-header))) (when (and header - (string-match "^Yes" header)) + (string-match spam-bogofilter-bogosity-positive-spam-header + header)) (if score (when (string-match "spamicity=\\([0-9.]+\\)" header) (match-string 1 header)) spam-split-group)))) - ;; return something sensible if the score can't be determined (defun spam-bogofilter-score () diff --git a/texi/ChangeLog b/texi/ChangeLog index efeb708..477cd97 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,55 @@ +2003-02-07 Teodor Zlatanov + + * gnus.texi (BBDB Whitelists, Blacklists and Whitelists): + corrected existing docs, added spam-use-whitelist-exclusive and + spam-use-BBDB-exclusive to list of variables + +2003-02-07 Jesper Harder + + * gnus.texi (The problem of spam): Don't use @email for examples + -- it creates a mailto-link in HTML and PDF. + +2003-02-07 Lars Magne Ingebrigtsen + + * gnus.texi (Mail Source Customization): Addition. + +2003-02-04 Reiner Steib + + * message.texi (Mail Variables): Added index entry for + `message-send-mail-partially-limit' + +2003-01-30 Jesper Harder + + * gnus.texi (Batching Agents): Index. + (Agent Commands): do. + (Delayed Articles): do. + (Drafts): do. + (Web Archive): do. + (Article Washing): do. + (Slave Gnusae): do. + (Agent Basics): do. + (Exiting Gnus): do. + (Article Date): do. + (X-Face): do. + (Exiting the Summary Buffer): do. + (Charsets): do. + (Mail Group Commands): do. + + * gnus.texi: Mark-up fixes. + +2003-01-27 Teodor Zlatanov + + * gnus.texi: replace `H' mark with `$' mark + (Blackholes): add spam-blackhole-good-server-regex variable + +2003-01-26 Simon Josefsson + + * sieve.texi (Installation): Extension .sv is also used. + +2003-01-26 Jesper Harder + + * gnus.texi (Article Backlog): Update. + 2003-01-23 Lars Magne Ingebrigtsen * gnus.texi (NNTP): Addition. diff --git a/texi/Makefile.in b/texi/Makefile.in index 3ef328f..a45ab99 100644 --- a/texi/Makefile.in +++ b/texi/Makefile.in @@ -177,10 +177,10 @@ gnus.latexi gnus-faq.latexi message.latexi emacs-mime.latexi sieve.latexi: $(src TEXINPUTS=$(srcdir):$$TEXINPUTS $(PDFLATEX) gnus.tmplatexi mv gnus.pdf $@ -latexps: latex gnus.dvi-x +latexps: gnus.dvi-x TEXPICTS=$(srcdir) $(DVIPS) -t a4 -f $< > gnus.ps -latexpdf: latex gnus.pdf-x +latexpdf: gnus.pdf-x mv gnus.pdf-x gnus.pdf gnus-manual-a4.latexi: gnus.latexi @@ -208,8 +208,7 @@ psout: latexboth out latexboth: gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz out: - scp gnus-manual-*.ps.gz gnus-manual-*.pdf - www@quimby:html/gnus/documents + scp gnus-manual-*.ps.gz gnus-manual-*.pdf www@quimby:html/gnus/documents veryclean: clean rm -f gnus.dvi gnus.ps texi2latex.elc diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 28c5955..5de1d72 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -68,6 +68,8 @@ \newcommand{\gnusversion}[1]{{\small\textit{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} \newcommand{\gnusresult}[1]{\gnustt{=> #1}} +\newcommand{\gnusacronym}[1]{\textit{#1}} +\newcommand{\gnusemail}[1]{\textit{#1}} \newcommand{\gnusbullet}{{${\bullet}$}} \newcommand{\gnusdollar}{\$} @@ -1249,7 +1251,7 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B $BFs$D$N0c$C$?%5!<%P!<$+$iFI$_9~$`$?$a$K!"Fs$D$N0c$C$?(B gnus $B$rF0:n$5$;$F$$(B $B$k>l9g(B)$B!"$^$C$?$/LdBj$O$"$j$^$;$s!#$=$l$r9T$($PNI$$$@$1$G$9!#(B -$BLdBj$O!"F1$8(B @code{.newsrc} $B%U%!%$%k$r;H$&Fs$D$N(B gnus $B$rF0$+$=$&$H$7$?$H(B +$BLdBj$O!"F1$8(B @file{.newsrc} $B%U%!%$%k$r;H$&Fs$D$N(B gnus $B$rF0$+$=$&$H$7$?$H(B $B$-$K5/$3$j$^$9!#(B $B$3$NLdBj$KBP=h$9$k$?$a$K!"(Bgnus $B%?%o!<$N%7%s%/%?%s%/$K$$$k2f!9$O?7$7$$35(B @@ -1259,6 +1261,7 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B $B$j$^$;$s!#$b$C$A$m$s!"(B@dfn{$B%3%s%T%e!<%?!<%"%W%j%1!<%7%g%s$N%^%9%?!$l(B @kbd{M-x gnus-slave} $B$G5/F0(B $B$7$^$9!#%9%l!<%V$OIaDL$N(B @file{.newsrc} $B$OJ]B8$7$^$;$s$,!"Be$o$j(B @@ -1268,10 +1271,10 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B $B$j9~$_$^$9!#(B($B%9%l!<%V%U%!%$%k$O!":G=*E*$JJQ99$,M%@h$5$l$k$h$&$K$=$l$i$,(B $B:n$i$l$?=gHV$GFI$^$l$^$9!#(B) -$B$b$A$m$s!"%9%l!<%V%U%!%$%k$+$i$N>pJs$OIaDL$N(B ($B$9$J$o$A!"%^%9%?!<$N(B) $B%U%!(B -$B%$%k$h$j$bM%@h$5$l$^$9!#(B +$B$b$A$m$s!"%9%l!<%V%U%!%$%k$+$i$N>pJs$OIaDL$N(B ($B$9$J$o$A!"%^%9%?!<(B +$B$N(B) @file{.newsrc} $B%U%!%$%k$h$j$bM%@h$5$l$^$9!#(B -$B%9%l!<%V$r5/F0$9$k$H$-$K$b$7%^%9%?!<$N(B @code{.newsrc*} $B%U%!%$%k72$,%;!<(B +$B%9%l!<%V$r5/F0$9$k$H$-$K$b$7%^%9%?!<$N(B @file{.newsrc*} $B%U%!%$%k72$,%;!<(B $B%V$5$l$F$$$J$+$C$?$i!"<+F0J]B8$5$l$?%U%!%$%k$rFI$`$+$I$&$+$r?R$M$i$l$k$+(B $B$b$7$l$^$;$s!#(B"yes" $B$HEz$($k$H!"%^%9%?!<$K%;!<%V$5$l$F$$$J$$JQ99$O%9%l!<(B $B%V$KH?1G$5$l$^$;$s!#(B"no" $B$HEz$($k$H!"%^%9%?!<$GFI$^$l$?$$$/$D$+$N5-;v$,!"(B @@ -1639,7 +1642,7 @@ Gnus $B$O%I%j%V%k%U%!%$%k$r(B @code{gnus-dribble-directory} $B$KCV$-$^$9!#%G% $B%U%)%k%H$G$O$=$N$h$&$K$J$C$F$$$^$9$,!"$3$NJQ?t$,(B @code{nil} $B$G$"$k$H!"(B gnus $B$O%U%!%$%k(B@file{.newsrc} $B$NCV$+$l$F$$$k%G%#%l%/%H%j(B ($B$3$l$OIaDL$OMx(B $BMQC$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H(B $B%k%H$NCM$O(B @code{"X-Gnus-Delayed"} $B$G$9!#(B @end table -$BAw?.$N@h1d$P$7$O$3$s$J$U$&$K9T$J$o$l$^$9(B: +$BAw?.$N@h1d$P$7$O$3$s$J$U$&$K9T$J$o$l$^$9(B: @code{gnus-delay-article} $B%3%^(B +$B%s%I$G!"$"$J$?$O$I$N$/$i$$CY$i$;$k$+$r;XDj$7$^$9!#(Bgnus $B$O%a%C%;!<%8$rAw(B +$B?.$9$kF|;~$r7W;;$7$F(B @code{X-Gnus-Delayed} $B%X%C%@!<$K5-O?$7!"$=$N%a%C%;!<(B +$B%8$r(B @code{nndraft:delayed} $B%0%k!<%W$KG<$a$^$9!#(B -@code{gnus-delay-article} $B%3%^%s%I$G!"$"$J$?$O$I$N$/$i$$CY$i$;$k$+$r;XDj(B -$B$7$^$9!#(Bgnus $B$O%a%C%;!<%8$rAw?.$9$kF|;~$r7W;;$7(B -$B$F(B @code{X-Gnus-Delayed} $B%X%C%@!<$K5-O?$7!"$=$N%a%C%;!<%8(B -$B$r(B @code{nndraft:delayed} $B%0%k!<%W$KG<$a$^$9!#(B - -$B$"$J$?$,?7Ce%K%e!<%9$re$,$k$H$$$&$3$H$G$9!#;d$O$"$J$?J}A4$F$,855$$G$$$i$l$k(B $B$h$&$K$3$3$K=q$-2C$($^$7$?!#(B -$B$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{nil} $B$G$9!#(B +$B%G%#%U%)%k%HCM$O(B 20 $B$G$9!#(B @node Saving Articles @section $B5-;v$NJ]B8(B @@ -8113,7 +8116,6 @@ gnus $B$,5-;v$rI=<($9$k4{Dj$N$d$jJ}$rJQ$($?$$$H$-(B @item W m @kindex W m ($B35N,(B) @findex gnus-summary-morse-message -@c @icon{gnus-summary-morse-message} $B5-;v%P%C%U%!$r%b!<%k%9I|9f$7$^$9(B (@code{gnus-summary-morse-message})$B!#(B @item W t @@ -8168,12 +8170,14 @@ Sm*rtq**t*s $B$O$b$C$HB?$/$N0zMQJ8;z$rDs6!$9$k$?$a$K!"%^"#"#"#%="#"#$,>!.$*$h$S:GBg$ND9$5$rI=(B $B$9(B @code{gnus-outlook-deuglify-unwrap-min} $B$*$h(B $B$S(B @code{gnus-outlook-deuglify-unwrap-max} $B$rD4@0$9$k$3$H$K$h$C$F!"$I$N(B $B9T$N@^$jJV$7$,2r$+$l$k$+$r@)8f$9$k$3$H$,$G$-$^$9!#(B -(@code{gnus-outlook-deuglify-article})$B!#(B +(@code{gnus-article-outlook-unwrap-lines})$B!#(B @item W Y a @kindex W Y a ($B35N,(B) @@ -8533,6 +8537,7 @@ UT ($BJLL>(B GMT, ZULU) $B$GF|IU$rI=<($7$^$9(B (@code{gnus-article-date-ut}) X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago @end example +@vindex gnus-article-date-lapsed-new-header @code{gnus-article-date-lapsed-new-header} $B$NCM$G$3$N%X%C%@!<$r4{B8(B $B$N(B Date $B$N2<$KDI2C$9$k$+!"CV$-BX$($k$+$r;XDj$7$^$9!#(B @@ -9201,6 +9206,7 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @item B r @kindex B r ($B35N,(B) @findex gnus-summary-respool-article +@vindex gnus-summary-respool-default-method $B%a!<%k5-;v$r%9%W!<%k$7D>$7$^$9(B (@code{gnus-summary-move-article})$B!#(B @code{gnus-summary-respool-default-method} $B$,:F%9%W!<%k$9$k$H$-$N%G%#%U%)(B $B%k%H$NA*BrJ}K!$H$7$F;HMQ$5$l$^$9!#$3$NJQ?t$O%G%#%U%)%k%H$G(B @code{nil} $B$G!"(B @@ -9518,6 +9524,7 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @findex gnus-summary-exit @vindex gnus-summary-exit-hook @vindex gnus-summary-prepare-exit-hook +@vindex gnus-group-no-more-groups-hook @c @icon{gnus-summary-exit} $B8=:_$N%0%k!<%W$r=P$F!"%0%k!<%W$NA4$F$N>pJs$r99?7$7$^(B $B$9(B (@code{gnus-summary-exit})$B!#H4$1=P$k$?$a$N$?$$$F$$$N;v$r$9$kA0(B @@ -10507,6 +10514,14 @@ ISP $B$,(B POP-before-SMTP $B$NG'>Z$rMW5a$7$F$$$k>l9g$KM-MQ$G$9!#4X(B $B$J$/$H$b!"%a!<%j%s%0%j%9%H$X$N%U%)%m!<%"%C%W$O$?$$$F$$$N$H$-$KF0:n$7$^$9!#(B $B$3$l$i$N%0%k!<%W$KEj9F$9$k;v$O(B (@kbd{a}) $B$=$l$G$b6lDK$r0z$-5/$3$9$G$7$g(B $B$&$1$I!#(B + +@item gnus-version-expose-system +@vindex gnus-version-expose-system + +$B%G%#%U%)%k%H$G%7%9%F%`%?%$%W(B (@samp{i686-pc-linux} $B$N$h$&(B +$B$J(B @code{system-configuration} $BJQ?t$NCM(B) $B$,<+F0E*$K@8@.$5$l(B +$B$k(B User-Agent $B%X%C%@!<$K8=$l$^$9!#$=$l$O(B ($BC$9$3$H(B +$B$,K>$^$l$k$+$b$7$l$^$;$s!#$=$&$$$&>l9g$O!"$3$l$r(B @code{nil} $B$K$7$F2<$5$$!#(B @end table $B$"$J$?$O<+J,$,Aw$k%a%C%;!<%8$NDV$j$rD4$Y$?$$$H;W$&$+$bCN$l$^$;$s!#$b$7$/(B @@ -10894,13 +10909,17 @@ from date id references chars lines xref extra $B$N3F%X%C%@!<$+$i@.$k%Y%/(B $B$9(B (@pxref{Rejected Articles})$B!#(B @findex gnus-draft-send-all-messages +@kindex D s (Draft) @findex gnus-draft-send-message +@kindex D S (Draft) $B$=$l0J>eJT=8$7$J$$$GEj9F(B ($B$b$7$/$O%a!<%k(B) $B$7$?$$5qH]$5$l$?%a%C%;!<%8$,$?(B $B$/$5$s$"$k$N$G$"$l$P!"L?Na(B @kbd{D s} $B$r;H$&;v$,$G$-$^$9!#$3$NL?Na$O%W%m(B $B%;%9(B/$B@\F,0z?t$N=,47$rM}2r$7$^$9(B (@pxref{Process/Prefix})$B!#L?(B $BNa(B @kbd{D S} (@code{gnus-draft-send-all-messages}) $B$O%P%C%U%!$NA4$F$N%a%C(B $B%;!<%8$rAw$j=P$7$^$9!#(B +@findex gnus-draft-toggle-sending +@kindex D t (Draft) $BAw$j$?$/$J$$%a%C%;!<%8$,$$$/$D$+$"$k$N$G$"$l$P!"L?(B $BNa(B @kbd{D t} (@code{gnus-draft-toggle-sending}) $B$r;H$C$F%a%C%;!<%8$rG[Aw(B $BIT2D$N0u$rIU$1$k;v$,$G$-$^$9!#$3$l$O@Z$jBX$(L?Na$G$9!#(B @@ -12671,6 +12690,11 @@ UNDELETED} $B$O$*$=$i$/$?$$$F$$$N?M$K$O:GNI$NA*Br$G$7$g$&$,!"$H$-$I(B @code{nil} $B$G$J$1$l$P!"F~$C$FMh$?%U%!%$%k$O!"$=$l$r=hM}$7$?8e$K>C5n$5$l(B $B$^$9!#(B +@item mail-source-ignore-errors +@vindex mail-source-ignore-errors +$BHs(B-@code{nil} $B$@$C$?$i!"%a!<%k%=!<%9$+$i%a!<%k$rFI$`$H$-$N%(%i!<$rL5;k$7(B +$B$^$9!#(B + @item mail-source-directory @vindex mail-source-directory $B%U%!%$%k$,(B ($B$b$7$"$l$P(B) $BJ]B8$5$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B @@ -12750,7 +12774,7 @@ UNDELETED} $B$O$*$=$i$/$?$$$F$$$N?M$K$O:GNI$NA*Br$G$7$g$&$,!"$H$-$I(B @vindex nnmail-split-hook @item nnmail-split-hook -@findex article-decode-encoded-words +@findex gnus-article-decode-encoded-words @findex RFC1522 decoding @findex RFC2047 decoding $B$=$l$>$l$N%a%C%;!<%8$,$=$N%X%C%@!<$K4p$E$$$FJ,3d$,$J$5$l$kD>A0$K$=$l$,J](B @@ -14319,6 +14343,7 @@ http://www.tcj.com/messboard.ubbcgi/ RET}$B!#(B($B6=L#$N$"$k2q5D<<(B $B$FNI$$3&LL$G!"(Bgnus $B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3(B $B$H$,2DG=$G$9!#(B +@findex gnus-group-make-warchive-group @code{nnwarchive} $B$r;O$a$k$?$a$N0lHV4JC1$JJ}K!$O%0%k!<%W%P%C%U%!$G0J2<$N(B $B$h$&$J$b$N$r$9$k$3$H$G$9(B: @kbd{M-x gnus-group-make-warchive-group RET an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B @@ -16257,6 +16282,7 @@ Gnus $B$r(B ``$B%*%U%i%$%s(B'' $B$N%K%e!<%9%j!<%@!<$H$7$F;EN)$F$k$N$O6K$a$F @itemize @bullet @item +@findex gnus-unplugged Gnus $B$r(B @code{gnus-unplugged} $B$G5/F0$7$^$9!#$3$l$O(B gnus $B%(!<%8%'%s%H$r@Z(B $B$jN%$5$l$F$$$k>uBV$G5/F0$7$^$9!#$3$N>uBV$G$O!"$9$G$KpJs$rDs6!$7$^$9!#(B $B?4$KN1$a$F$*$/:G=i$N$3$H$O!"A4$F$N%U%i%0(B (read, ticked $B$J$I(B) $B$O(B nntp $B$N(B -$B>l9g$K$*$1$k(B @code{.newsrc} $B$G$O$J$/$F(B @sc{imap} $B%5!<%P!<$KJ];}$5$l$k$H(B +$B>l9g$K$*$1$k(B @file{.newsrc} $B$G$O$J$/$F(B @sc{imap} $B%5!<%P!<$KJ];}$5$l$k$H(B $B$$$&$3$H$G$9!#$7$?$,$C$F!"(Bgnus $B$O(B @dfn{unplugged} $B$N$H$-$N%U%i%0$NJQ2=$r(B $B3P$($F$*$$$F!":F$S@\B3$7$?$H$-$K$=$l$i$N%U%i%0$rF14|$5$;$kI,MW$,$"$j$^$9!#(B @@ -17093,6 +17121,7 @@ gnus $B$,%5!<%P!<$K@\B3$G$-$J$H$-$K2?$,5/$-$?$+$rJ*8l$j$^$9!#%(!<%8%'%s%H(B @node Batching Agents @subsection $B0l3g%(!<%8%'%s%H=hM}(B +@findex gnus-agent-batch Gnus $B%(!<%8%'%s%H$K5-;v$ro$K4JC1$G$9!#(B @@ -20438,6 +20467,8 @@ gnus $B$O!"30$K=P$9%a%C%;!<%8$K(B X-Face $B%X%C%@!<$r4JC1$KA^F~$9$k$?$a$N!"JX $BMx$J4X?t$HJQ?t$r>/$7$P$+$jDs6!$7$^$9!#(B @findex gnus-random-x-face +@vindex gnus-convert-pbm-to-x-face-command +@vindex gnus-x-face-directory @code{gnus-random-x-face} $B$O(B @code{gnus-x-face-directory} $B$K$"$k$9$Y$F(B $B$N(B @samp{pbm} $B$r$/$^$J$/C5$7$F%i%s%@%`$K0l$D$rA*$Se$N(B spam $B$O%G%#%U%)%k%H$G$OL$J,N`$G$9!#(B Spam $B%0%k!<%W$G$O!"%G%#%U%)%k%H$G$9$Y$F$N%a%C%;!<%8$,(B spam $B$G$"$k$H2rC$5$J$1$l$P$J$j$^$;$s!#(B@samp{H} $B0u$r>C$9$K$O(B @kbd{M-u} $B$G(B +@samp{$} $B0u$r>C$5$J$1$l$P$J$j$^$;$s!#(B@samp{$} $B0u$r>C$9$K$O(B @kbd{M-u} $B$G(B $B$=$N5-;v$r!VL$FI!W$K$9$k$+!"$"$k$$$O(B @kbd{d} $B$G(B spam $B$G$O$J$$$b$N$H$7$F(B $BFI$s$@$3$H$r@k8@$9$l$PNI$$$G$7$g$&!#%0%k!<%W$rH4$1$k$H$-!"$9$Y$F$N(B spam -$B0u(B (@samp{H}) $B$,IU$$$?5-;v$O(B spam $B%W%m%;%C%5!<$KAw$i$l!"$=$l$i$r(B spam $B$N(B +$B0u(B (@samp{$}) $B$,IU$$$?5-;v$O(B spam $B%W%m%;%C%5!<$KAw$i$l!"$=$l$i$r(B spam $B$N(B $BI8K\$H$7$F3X=,$7$^$9!#(B $B%a%C%;!<%8$OB>$N$$$m$$$m$JJ}K!$K$h$C$F$b>C5n$5$l$k$+$b$7$l$^$;$s$7!"(B @@ -20974,7 +21006,7 @@ Spam $B%0%k!<%W$G$O!"%G%#%U%)%k%H$G$9$Y$F$N%a%C%;!<%8$,(B spam $B$G$"$k$H2rC5n$r9T$J$&$H!"$?$^$K$=$l$O8+$F$$$J$$(B @samp{K} $B0u$,IU(B $B$$$?5-;v$G=*$o$k$+$b$7$l$^$;$s!#$=$7$F$=$l$i$O6vA3$K(B spam $B$r4^$s$G$$$k$+(B -$B$b$7$l$^$;$s!#:G$bNI$$$N$O!"K\Ev$N(B spam $B$K(B @samp{H} $B$,IU$$$F$$$F!"B>$K2?(B +$B$b$7$l$^$;$s!#:G$bNI$$$N$O!"K\Ev$N(B spam $B$K(B @samp{$} $B$,IU$$$F$$$F!"B>$K2?(B $B$bL5$$$3$H$r3N$+$a$k$3$H$G$9!#(B @emph{Spam} $B%0%k!<%W$rH4$1$k$H$-$K!"(Bspam $B0u$,IU$$$F$$$k$9$Y$F$N5-;v(B @@ -21060,29 +21092,44 @@ spam-check-bogofilter$B!"(Bspam-check-ifile $B$^$?$O(B spam-check-stat ($B$ @cindex spam @defvar spam-use-blacklist + $BF~$C$F$/$k%a!<%k$rJ,3d$9$k$H$-$K%V%i%C%/%j%9%H$r;H$$$?$$>l9g$O!"$3$NJQ?t(B $B$r(B @code{t} $B$K@_Dj$7$F2<$5$$!#Aw?.l9g$O!"$3$NJQ?t(B $B$r(B @code{t} $B$K@_Dj$7$F2<$5$$!#Aw?.$NJ}(B -$BK!$GEA$($i$l$J$+$C$?$J$i$P!"$9$Y$F$N?M$r(B spammer $B$G$"$k$H8+$J$7$^$9!#Cm(B -$B0U$7$F;H$C$F2<$5$$!#(B +$B%8$O!"l9g$O!"$3$N(B +$BJQ?t$r(B @code{t} $B$K$7$F2<$5$$!#Cm0U$7$F;H$C$F2<$5$$!#(B + @end defvar @defvar gnus-group-spam-exit-processor-blacklist + $B$3$N%7%s%\%k$r!"%0%k!<%W%Q%i%a!<%?$N%+%9%?%^%$%:$K$h$C$F%0%k!<%W(B $B$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($k$+!"$^$?(B $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B $B$,%0%k!<%W$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($i$l$k$H!"(Bspam $B0u$,IU$$(B $B$?5-;v$NAw?.o$K9-$$HO0O$rM-8z$HG'$a$k$+$^$?$O42MF$G$J$$$H!"$?$V$s$3$N%*%W%7%g(B -$B%s$O$[$H$s$I$N(B gnus $B$N%f!<%6!<$K$H$C$FM-1W$G$O$"$j$^$;$s!#(B -@ref{BBDB Whitelists} $B$b8+$F2<$5$$!#%[%o%$%H%j%9%H$N3F9`L\$O(B Emacs $B$N@5(B -$B5,I=8=%7%s%?%C%/%9$r;H$$$^$9!#(B +$B%$%H%j%9%H$K$"$k%"%I%l%9$+$i$d$C$FMh$?$9$Y$F$N%a%C%;!<%8$O!"Hs(B-spam $B$@$H(B +$B8+$J$5$l$^$9!#(B@ref{BBDB Whitelists} $B$b8+$F2<$5$$!#%[%o%$%H%j%9%H$N3F9`L\(B +$B$O(B Emacs $B$N@55,I=8=%7%s%?%C%/%9$r;H$$$^$9!#(B $B%V%i%C%/%j%9%H$H%[%o%$%H%j%9%H$N%U%!%$%k$N=j:_$O!"(B @code{spam-directory} $BJQ?t(B ($B%G%#%U%)%k%H$O(B @file{~/News/spam}) $B$^$?(B @@ -21124,12 +21170,23 @@ spam-check-bogofilter$B!"(Bspam-check-ifile $B$^$?$O(B spam-check-stat ($B$ @code{spam-use-whitelist} (@pxref{Blacklists and Whitelists}) $B$K;w$F$$$^(B $B$9$,!"%[%o%$%H%j%9%H$N%"%I%l%9$N8;$H$7$F!"@55,I=8=$G$O$J$$(B BBDB $B$r;H$$$^(B $B$9!#(B@code{spam-use-BBDB} $B$r$A$c$s$HF0:n$5$;$k$K$O(B BBDB $B$r(B load $B$7$J$1$l(B -$B$P$J$j$^$;$s!#(BBBDB $B$K$"$k%"%I%l%9$@$1$,5v$5$l!"B>$O$9$Y$F(B spam $B$H$7$FJ,(B -$BN`$5$l$^$9!#(B +$B$P$J$j$^$;$s!#$=$NAw?.l9g$O!"$3$NJQ?t(B +$B$r(B @code{t} $B$K$7$F2<$5$$!#Cm0U$7$F;H$C$F2<$5$$!#(BBBDB $B$K:\$C$F$$$kAw?.$N$9$Y$F$O(B spammers $B$H$7$FJ,N`$5$l$^$9!#(B @end defvar @defvar gnus-group-ham-exit-processor-BBDB + $B$3$N%7%s%\%k$r!"%0%k!<%W%Q%i%a!<%?$N%+%9%?%^%$%:$K$h$C$F%0%k!<%W(B $B$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($k$+!"$^$?(B $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B @@ -21137,6 +21194,7 @@ spam-check-bogofilter$B!"(Bspam-check-ifile $B$^$?$O(B spam-check-stat ($B$ $B$?(B @emph{ham} $B%0%k!<%W$N5-;v$NAw?.H9g$5$l$F$O$J$i$J$$(B IP $B$N@55,I=8=!#(B +@code{nil} $B$K@_Dj$5$l$k$HL58z$G$9!#(B + +@end defvar + @defvar spam-use-dig @code{dns.el} $B%Q%C%1!<%8$NBe$o$j$K(B @code{dig.el} $B%Q%C%1!<%8$r;H$$$^$9!#(B @@ -21225,12 +21290,12 @@ spam-check-bogofilter$B!"(Bspam-check-ifile $B$^$?$O(B spam-check-stat ($B$ Eric Raymond $B$N?WB.$J(B Bogofilter $B$r(B @code{spam-split} $B$K;HMQ$7$?$$>l9g$O!"(B $B$3$NJQ?t$r%;%C%H$7$F$/$@$5$$!#(B -Spam $B5-;v$@$1$N(B @samp{H} $B0u$r4XO"IU$1$k:G>.$N@$OC$K$h$C$F!"(BBogofilter $B%H(B +Spam $B5-;v$@$1$N(B @samp{$} $B0u$r4XO"IU$1$k:G>.$N@$OC$K$h$C$F!"(BBogofilter $B%H(B $B%l!<%K%s%0$O$9$Y$F$+$J$j<+F0E*$K$J$j$^$9!#3F%+%F%4%j!<$N(B spam $B$+$=$&$G$J(B -$B$$?tI4(B (a few hundreds) $B$N5-;v$rF~$H%G%#%l%/%H%jL>$NJQ?t$O!"$3$l$K$h$C$F=i4|2=$5(B $B$l$^$9!#%G%#%U%)%k%HCM$O(B @file{~/} $B$G$9!#(B @@ -24298,24 +24364,24 @@ Gnus $B%0%k!<%W>pJs(B (@pxref{Group Info}) $B$,JQ992U=j$H$7$F%P%C%/%((B @item (nnchoke-request-set-mark GROUP ACTION &optional SERVER) $B5-;v$N0u$r@_Dj(B/$B>C5n(B/$BDI2C$7$^$9!#IaDL$O(B gnus $B$O5-;v$N0u(B ($B4{FI!"2D;k!";~8B(B -$B>C5n$J$I(B) $B$rFbIt$G07$$!"(B@code{~/.newsrc.eld} $B$KJ]B8$7$^$9!#$7$+$7!"%P%C(B +$B>C5n$J$I(B) $B$rFbIt$G07$$!"(B@file{~/.newsrc.eld} $B$KJ]B8$7$^$9!#$7$+$7!"%P%C(B $B%/%(%s%I$K$O(B (@sc{imap} $B$N$h$&$K(B) $B5-;v$NA4$F$N>pJs$r%5!<%P!<$K<}$a$k$N(B $B$G!"(Bgnus $B$O0u$N>pJs$r%5!<%P!<$KEAC#$7$J$1$l$P$J$i$J$$$b$N$,$"$j$^$9!#(B -ACTION $B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9(B: +@var{action} $B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9(B: @example (RANGE ACTION MARK) @end example -RANGE $B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#(BACTION $B$O(B @code{add} $B$^$?(B -$B$O(B @code{del} $B$G!"0u$rDI2C$7$?$j>C$7$^$9(B ($B8@5Z$5$l$F$$$J$$$9$Y$F$N0u$OJ](B -$BB8$7$^$9(B)$B!"0u$N>C5n(B ($B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9(B) $B$G$9!#(BMARK $B$O0u(B -$B$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$$k0u(B -$B$O(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed}, -@code{dormant}, @code{save}, @code{download}, @code{unsend}, -@code{forward} $B$*$h$S(B @code{recent} $B$G$9$,!"$b$72DG=$J$i!"$"$J$?$N%P%C%/(B -$B%(%s%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j$^$;$s!#(B +@var{range} $B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#(B@var{action} $B$O(B @code{add} $B$^(B +$B$?$O(B @code{del} $B$G!"0u$rDI2C$7$?$j>C$7$^$9(B ($B8@5Z$5$l$F$$$J$$$9$Y$F$N0u$O(B +$BJ]B8$7$^$9(B)$B!"0u$N>C5n(B ($B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9(B) $B$G$9!#(B +@var{mark} $B$O0u$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$(B +$B$k0u$O(B @code{read}, @code{tick}, @code{reply}, @code{expire}, +@code{killed}, @code{dormant}, @code{save}, @code{download}, +@code{unsend}, @code{forward} $B$*$h$S(B @code{recent} $B$G$9$,!"$b$72DG=$J$i!"(B +$B$"$J$?$N%P%C%/%(%s%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j$^$;$s!#(B $BL7=b$9$kF0:n$,;XDj$5$l$?$H$-!"%j%9%H$N:G8e$NF0:n$,8zNO$r;}$D$b$N$K$J$j$^(B $B$9!#$9$J$o$A!"F0:n$K5-;v(B 1 $B$K(B @code{$B2D;k(B} $B0u$rDI2C$9$kMW5a$,$"$j!"%j%9%H(B diff --git a/texi/gnus.texi b/texi/gnus.texi index 7c20e90..8109b74 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -68,6 +68,8 @@ \newcommand{\gnusversion}[1]{{\small\textit{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} \newcommand{\gnusresult}[1]{\gnustt{=> #1}} +\newcommand{\gnusacronym}[1]{\textit{#1}} +\newcommand{\gnusemail}[1]{\textit{#1}} \newcommand{\gnusbullet}{{${\bullet}$}} \newcommand{\gnusdollar}{\$} @@ -1116,7 +1118,7 @@ are using the two different gnusae to read from two different servers), that is no problem whatsoever. You just do it. The problem appears when you want to run two Gnusae that use the same -@code{.newsrc} file. +@file{.newsrc} file. To work around that problem some, we here at the Think-Tank at the gnus Towers have come up with a new concept: @dfn{Masters} and @@ -1126,6 +1128,7 @@ conjunction with each other, you have to send $1 per usage instance to me. Usage of the patent (@dfn{Master/Slave Relationships In Computer Applications}) will be much more expensive, of course.) +@findex gnus-slave Anyway, you start one gnus up the normal way with @kbd{M-x gnus} (or however you do it). Each subsequent slave gnusae should be started with @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} @@ -1136,9 +1139,9 @@ information from them. (The slave files will be read in the sequence they were created, so the latest changes will have precedence.) Information from the slave files has, of course, precedence over the -information in the normal (i.e., master) @code{.newsrc} file. +information in the normal (i.e., master) @file{.newsrc} file. -If the @code{.newsrc*} files have not been saved in the master when the +If the @file{.newsrc*} files have not been saved in the master when the slave starts, you may be prompted as to whether to read an auto-save file. If you answer "yes", the unsaved changes to the master will be incorporated into the slave. If you answer "no", the slave may see some @@ -1510,7 +1513,7 @@ Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If this variable is @code{nil}, which it is by default, gnus will dribble into the directory where the @file{.newsrc} file is located. (This is normally the user's home directory.) The dribble file will get the same -file permissions as the @code{.newsrc} file. +file permissions as the @file{.newsrc} file. @vindex gnus-always-read-dribble-file If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will @@ -3424,6 +3427,7 @@ The dribble file will be saved, though (@pxref{Auto Save}). @vindex gnus-exit-gnus-hook @vindex gnus-suspend-gnus-hook +@vindex gnus-after-exiting-gnus-hook @code{gnus-suspend-gnus-hook} is called when you suspend gnus and @code{gnus-exit-gnus-hook} is called when you quit gnus, while @code{gnus-after-exiting-gnus-hook} is called as the final item when @@ -5525,6 +5529,7 @@ calculates the deadline of the message and stores it in the @code{X-Gnus-Delayed} header and puts the message in the @code{nndraft:delayed} group. +@findex gnus-delay-send-queue And whenever you get new news, Gnus looks through the group for articles which are due and sends them. It uses the @code{gnus-delay-send-queue} function for this. By default, this function is added to the hook @@ -7159,7 +7164,7 @@ variable is non-@code{nil} and is not a number, gnus will store bound before exploding and taking your machine down with you. I put that in there just to keep y'all on your toes. -This variable is @code{nil} by default. +The default value is 20. @node Saving Articles @@ -8279,7 +8284,6 @@ is rumored to have employed this form of, uh, somewhat weak encryption. @item W m @kindex W m (Summary) @findex gnus-summary-morse-message -@c @icon{gnus-summary-morse-message} Morse decode the article buffer (@code{gnus-summary-morse-message}). @item W t @@ -8336,12 +8340,14 @@ unwrap lines, repair attribution and rearrange citation. @item W Y u @kindex W Y u (Summary) @findex gnus-article-outlook-unwrap-lines +@vindex gnus-outlook-deuglify-unwrap-min +@vindex gnus-outlook-deuglify-unwrap-max Unwrap lines that appear to be wrapped citation lines. You can control what lines will be unwrapped by frobbing @code{gnus-outlook-deuglify-unwrap-min} and @code{gnus-outlook-deuglify-unwrap-max}, indicating the miminum and maximum length of an unwrapped citation line. -(@code{gnus-outlook-deuglify-article}). +(@code{gnus-article-outlook-unwrap-lines}). @item W Y a @kindex W Y a (Summary) @@ -8703,6 +8709,7 @@ Say how much time has elapsed between the article was posted and now X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago @end example +@vindex gnus-article-date-lapsed-new-header The value of @code{gnus-article-date-lapsed-new-header} determines whether this header will just be added below the old Date one, or will replace it. @@ -9110,6 +9117,7 @@ This knowledge is encoded in the @code{gnus-group-charset-alist} variable, which is an alist of regexps (use the first item to match full group names) and default charsets to be used when reading these groups. +@vindex gnus-newsgroup-ignored-charsets In addition, some people do use soi-disant @sc{mime}-aware agents that aren't. These blithely mark messages as being in @code{iso-8859-1} even if they really are in @code{koi-8}. To help here, the @@ -9704,6 +9712,7 @@ Create an empty article in the current mail newsgroups @item B r @kindex B r (Summary) @findex gnus-summary-respool-article +@vindex gnus-summary-respool-default-method Respool the mail article (@code{gnus-summary-respool-article}). @code{gnus-summary-respool-default-method} will be used as the default select method when respooling. This variable is @code{nil} by default, @@ -10039,6 +10048,7 @@ group and return you to the group buffer. @findex gnus-summary-exit @vindex gnus-summary-exit-hook @vindex gnus-summary-prepare-exit-hook +@vindex gnus-group-no-more-groups-hook @c @icon{gnus-summary-exit} Exit the current group and update all information on the group (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is @@ -11053,6 +11063,14 @@ really are mailing lists. Then, at least, followups to the mailing lists will work most of the time. Posting to these groups (@kbd{a}) is still a pain, though. +@item gnus-version-expose-system +@vindex gnus-version-expose-system + +Your system type (@code{system-configuration} variable, such as +@samp{i686-pc-linux}) is exposed in the auto-generated by default +User-Agent header. Sometimes, it may be desireable (mostly because of +aesthetic reasons) to turn it off. In this case, set it to @code{nil}. + @end table You may want to do spell-checking on messages that you send out. Or, if @@ -11447,7 +11465,9 @@ Rejected articles will also be put in this draft group (@pxref{Rejected Articles}). @findex gnus-draft-send-all-messages +@kindex D s (Draft) @findex gnus-draft-send-message +@kindex D S (Draft) If you have lots of rejected messages you want to post (or mail) without doing further editing, you can use the @kbd{D s} command (@code{gnus-draft-send-message}). This command understands the @@ -11455,6 +11475,8 @@ process/prefix convention (@pxref{Process/Prefix}). The @kbd{D S} command (@code{gnus-draft-send-all-messages}) will ship off all messages in the buffer. +@findex gnus-draft-toggle-sending +@kindex D t (Draft) If you have some messages that you wish not to send, you can use the @kbd{D t} (@code{gnus-draft-toggle-sending}) command to mark the message as unsendable. This is a toggling command. @@ -13286,6 +13308,10 @@ File where mail will be stored while processing it. The default is @vindex mail-source-delete-incoming If non-@code{nil}, delete incoming files after handling them. +@item mail-source-ignore-errors +@vindex mail-source-ignore-errors +If non-@code{nil}, ignore errors when reading mail from a mail source. + @item mail-source-directory @vindex mail-source-directory Directory where files (if any) will be stored. The default is @@ -13370,7 +13396,7 @@ use this hook to notify any mail watch programs, if you want to. @vindex nnmail-split-hook @item nnmail-split-hook -@findex article-decode-encoded-words +@findex gnus-article-decode-encoded-words @findex RFC 1522 decoding @findex RFC 2047 decoding Hook run in the buffer where the mail headers of each message is kept @@ -15004,6 +15030,7 @@ Some mailing lists only have archives on Web servers, such as interface, and it's possible to get the information Gnus needs to keep groups updated. +@findex gnus-group-make-warchive-group The easiest way to get started with @code{nnwarchive} is to say something like the following in the group buffer: @kbd{M-x gnus-group-make-warchive-group RET an_egroup RET egroups RET @@ -16638,6 +16665,7 @@ Let's take a typical Gnus session using the Agent. @itemize @bullet @item +@findex gnus-unplugged You start Gnus with @code{gnus-unplugged}. This brings up the Gnus Agent in a disconnected state. You can read all the news that you have already fetched while in this mode. @@ -17086,6 +17114,8 @@ Articles that have a score higher than this have a high score. Default @node Agent Commands @subsection Agent Commands +@findex gnus-agent-toggle-plugged +@kindex J j (Agent) All the Gnus Agent commands are on the @kbd{J} submap. The @kbd{J j} (@code{gnus-agent-toggle-plugged}) command works in all modes, and @@ -17325,7 +17355,7 @@ since there are some conceptual differences between @sc{nntp} and make Gnus Agent work smoother as a @sc{imap} Disconnected Mode client. The first thing to keep in mind is that all flags (read, ticked, etc) -are kept on the @sc{imap} server, rather than in @code{.newsrc} as is the +are kept on the @sc{imap} server, rather than in @file{.newsrc} as is the case for nntp. Thus Gnus need to remember flag changes when disconnected, and synchronize these flags when you plug back in. @@ -17511,6 +17541,7 @@ find out which of the other gazillion things you want to customize. @node Batching Agents @subsection Batching Agents +@findex gnus-agent-batch Having the Gnus Agent fetch articles (and post whatever messages you've written) is quite easy once you've gotten things set up properly. The @@ -20900,6 +20931,8 @@ Gnus provides a few convenience functions and variables to allow easier insertion of X-Face headers in outgoing messages. @findex gnus-random-x-face +@vindex gnus-convert-pbm-to-x-face-command +@vindex gnus-x-face-directory @code{gnus-random-x-face} goes through all the @samp{pbm} files in @code{gnus-x-face-directory} and picks one at random, and then converts it to the X-Face format by using the @@ -20913,6 +20946,7 @@ header data as a string. randomly generated data. @findex gnus-x-face-from-file +@vindex gnus-convert-image-to-x-face-command @code{gnus-x-face-from-file} takes a GIF file as the parameter, and then converts the file to X-Face format by using the @code{gnus-convert-image-to-x-face-command} shell command. @@ -21081,7 +21115,7 @@ requires its users to have a basic understanding of e-mail delivery and processing. The simplest approach to filtering spam is filtering. If you get 200 -spam messages per day from @email{random-address@@vmadmin.com}, you +spam messages per day from @samp{random-address@@vmadmin.com}, you block @samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you discard all messages with @samp{VIAGRA} in the message. This, unfortunately, is a great way to discard legitimate @@ -21366,7 +21400,7 @@ the following keyboard commands: @findex gnus-summary-mark-as-spam @code{gnus-summary-mark-as-spam}. -Mark current article as spam, showing it with the @samp{H} mark. +Mark current article as spam, showing it with the @samp{$} mark. Whenever you see a spam article, make sure to mark its summary line with @kbd{M-d} before leaving the group. This is done automatically for unread articles in @emph{spam} groups. @@ -21413,12 +21447,12 @@ considered @emph{unclassified}. All groups are unclassified by default. In spam groups, all messages are considered to be spam by default: -they get the @samp{H} mark when you enter the group. You must review -these messages from time to time and remove the @samp{H} mark for -every message that is not spam after all. To remove the @samp{H} +they get the @samp{$} mark when you enter the group. You must review +these messages from time to time and remove the @samp{$} mark for +every message that is not spam after all. To remove the @samp{$} mark, you can use @kbd{M-u} to "unread" the article, or @kbd{d} for declaring it read the non-spam way. When you leave a group, all -spam-marked (@samp{H}) articles are sent to a spam processor which +spam-marked (@samp{$}) articles are sent to a spam processor which will study them as spam samples. Messages may also be deleted in various other ways, and unless @@ -21446,7 +21480,7 @@ When you leave @emph{any} group, regardless of its to a spam processor, which will study these as spam samples. If you explicit kill a lot, you might sometimes end up with articles marked @samp{K} which you never saw, and which might accidentally contain -spam. Best is to make sure that real spam is marked with @samp{H}, +spam. Best is to make sure that real spam is marked with @samp{$}, and nothing else. When you leave a @emph{spam} group, all spam-marked articles are @@ -21533,30 +21567,45 @@ The following are the methods you can use to control the behavior of @cindex spam @defvar spam-use-blacklist + Set this variable to @code{t} if you want to use blacklists when splitting incoming mail. Messages whose senders are in the blacklist will be sent to the @code{spam-split-group}. This is an explicit filter, meaning that it acts only on mail senders @emph{declared} to be spammers. + @end defvar @defvar spam-use-whitelist + Set this variable to @code{t} if you want to use whitelists when splitting incoming mail. Messages whose senders are not in the -whitelist will be sent to the @code{spam-split-group}. This is an -implicit filter, meaning it believes everyone to be a spammer unless -told otherwise. Use with care. +whitelist will be sent to the next spam-split rule. This is an +explicit filter, meaning that unless someone is in the whitelist, their +messages are not assumed to be spam or ham. + +@end defvar + +@defvar spam-use-whitelist-exclusive + +Set this variable to @code{t} if you want to use whitelists as an +implicit filter, meaning that every message will be considered spam +unless the sender is in the whitelist. Use with care. + @end defvar @defvar gnus-group-spam-exit-processor-blacklist + Add this symbol to a group's @code{spam-process} parameter by customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the senders of spam-marked articles will be added to the blacklist. + @end defvar @defvar gnus-group-ham-exit-processor-whitelist + Add this symbol to a group's @code{spam-process} parameter by customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is @@ -21564,6 +21613,7 @@ added to a group's @code{spam-process} parameter, the senders of ham-marked articles in @emph{ham} groups will be added to the whitelist. Note that this ham processor has no effect in @emph{spam} or @emph{unclassified} groups. + @end defvar Blacklists are lists of regular expressions matching addresses you @@ -21573,11 +21623,9 @@ blacklist. You start out with an empty blacklist. Blacklist entries use the Emacs regular expression syntax. Conversely, whitelists tell Gnus what addresses are considered -legitimate. All non-whitelisted addresses are considered spammers. -This option is probably not useful for most Gnus users unless the -whitelists is very comprehensive or permissive. Also see @ref{BBDB -Whitelists}. Whitelist entries use the Emacs regular expression -syntax. +legitimate. All messages from whitelisted addresses are considered +non-spam. Also see @ref{BBDB Whitelists}. Whitelist entries use the +Emacs regular expression syntax. The blacklist and whitelist file locations can be customized with the @code{spam-directory} variable (@file{~/News/spam} by default), or @@ -21596,14 +21644,27 @@ directly. The whitelist and blacklist files will by default be in the @defvar spam-use-BBDB Analogous to @code{spam-use-whitelist} (@pxref{Blacklists and -Whitelists}), but uses the BBDB as the source of whitelisted addresses, -without regular expressions. You must have the BBDB loaded for -@code{spam-use-BBDB} to work properly. Only addresses in the BBDB -will be allowed through; all others will be classified as spam. +Whitelists}), but uses the BBDB as the source of whitelisted +addresses, without regular expressions. You must have the BBDB loaded +for @code{spam-use-BBDB} to work properly. Messages whose senders are +not in the BBDB will be sent to the next spam-split rule. This is an +explicit filter, meaning that unless someone is in the BBDB, their +messages are not assumed to be spam or ham. + +@end defvar + +@defvar spam-use-BBDB-exclusive + +Set this variable to @code{t} if you want to use the BBDB as an +implicit filter, meaning that every message will be considered spam +unless the sender is in the BBDB. Use with care. Only sender +addresses in the BBDB will be allowed through; all others will be +classified as spammers. @end defvar @defvar gnus-group-ham-exit-processor-BBDB + Add this symbol to a group's @code{spam-process} parameter by customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is @@ -21611,6 +21672,7 @@ added to a group's @code{spam-process} parameter, the senders of ham-marked articles in @emph{ham} groups will be added to the BBDB. Note that this ham processor has no effect in @emph{spam} or @emph{unclassified} groups. + @end defvar @node Blackholes @@ -21643,6 +21705,13 @@ The list of servers to consult for blackhole checks. @end defvar +@defvar spam-blackhole-good-server-regex + +A regular expression for IPs that should not be checked against the +blackhole server list. When set to nil, it has no effect. + +@end defvar + @defvar spam-use-dig Use the @code{dig.el} package instead of the @code{dns.el} package. @@ -21698,7 +21767,7 @@ There is no specific spam or ham processor for regular expressions. Set this variable if you want @code{spam-split} to use Eric Raymond's speedy Bogofilter. -With a minimum of care for associating the @samp{H} mark for spam +With a minimum of care for associating the @samp{$} mark for spam articles only, Bogofilter training all gets fairly automatic. You should do this until you get a few hundreds of articles in each category, spam or not. The command @kbd{S t} in summary mode, either @@ -22213,6 +22282,7 @@ Save table: (spam-stat-save) @table @code @item gnus-home-directory +@vindex gnus-home-directory All Gnus file and directory variables will be initialized from this variable, which defaults to @file{~/}. @@ -24815,21 +24885,21 @@ There should be no result data from this function. Set/remove/add marks on articles. Normally Gnus handles the article marks (such as read, ticked, expired etc) internally, and store them in -@code{~/.newsrc.eld}. Some back ends (such as @sc{imap}) however carry +@file{~/.newsrc.eld}. Some back ends (such as @sc{imap}) however carry all information about the articles on the server, so Gnus need to propagate the mark information to the server. -ACTION is a list of mark setting requests, having this format: +@var{action} is a list of mark setting requests, having this format: @example (RANGE ACTION MARK) @end example -RANGE is a range of articles you wish to update marks on. ACTION is -@code{add} or @code{del}, used to add marks or remove marks -(preserving all marks not mentioned). MARK is a list of marks; where -each mark is a symbol. Currently used marks are @code{read}, -@code{tick}, @code{reply}, @code{expire}, @code{killed}, +@var{range} is a range of articles you wish to update marks on. +@var{action} is @code{add} or @code{del}, used to add marks or remove +marks (preserving all marks not mentioned). @var{mark} is a list of +marks; where each mark is a symbol. Currently used marks are +@code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed}, @code{dormant}, @code{save}, @code{download}, @code{unsend}, @code{forward} and @code{recent}, but your back end should, if possible, not limit itself to these. diff --git a/texi/message-ja.texi b/texi/message-ja.texi index d416836..a355ff7 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -1432,6 +1432,7 @@ qmail-inject $B%W%m%0%i%`$KEO$90z?t$G$9!#$3$l$OJ8;zNs$N%j%9%H$G!"$=$l$>$l(B @c @item message-send-mail-partially-limit @c @vindex message-send-mail-partially-limit +@c @cindex split large message @c The limitation of messages sent as message/partial. @c The lower bound of message size in characters, beyond which the message @c should be sent in several parts. If it is nil, the size is unlimited. diff --git a/texi/message.texi b/texi/message.texi index 625748c..aad61a9 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1429,6 +1429,7 @@ the problem will actually occur. @item message-send-mail-partially-limit @vindex message-send-mail-partially-limit +@cindex split large message The limitation of messages sent as message/partial. The lower bound of message size in characters, beyond which the message should be sent in several parts. If it is @code{nil}, the size is unlimited. diff --git a/texi/sieve.texi b/texi/sieve.texi index 99be2da..e4403b9 100644 --- a/texi/sieve.texi +++ b/texi/sieve.texi @@ -111,7 +111,7 @@ commands in your @code{~/.emacs}: (autoload 'sieve-mode "sieve-mode") @end lisp @lisp -(setq auto-mode-alist (cons '("\\.si\\(v\\|eve\\)\\'" . sieve-mode) +(setq auto-mode-alist (cons '("\\.s\\(v\\|iv\\|ieve\\)\\'" . sieve-mode) auto-mode-alist)) @end lisp diff --git a/texi/texi2latex.el b/texi/texi2latex.el index 42b0793..b9da0d4 100644 --- a/texi/texi2latex.el +++ b/texi/texi2latex.el @@ -262,7 +262,7 @@ (latexi-exchange-command (concat "gnus" command) arg)) ((member command '("sc" "file" "dfn" "emph" "kbd" "key" "uref" "code" "samp" "var" "strong" "i" - "result")) + "result" "acronym" "email")) (goto-char (match-beginning 0)) (delete-char 1) (insert "\\gnus")) -- 1.7.10.4