
(defun vm-summary-mode nil "\
Major mode for VM folder summaries.
This major mode uses the same keymap as vm-mode.  See the vm-mode documentation
for a list of available commands." (byte-code "ŉ	!" [mode-name major-mode mode-line-format vm-mode-line-format buffer-read-only t vm-summary-pointer nil truncate-lines vm-mode-map "VM Summary" vm-summary-mode use-local-map] 2))

(put (quote vm-summary-mode) (quote mode-class) (quote special))

(defun vm-summarize (&optional display) "\
Summarize the contents of the folder in a summary buffer. 
The format is as described by the variable vm-summary-format.  Generally
one line per message is most pleasing to the eye but this is not
mandatory." (interactive "p") (byte-code " ! q	! 	!?  	?O p \"!	q!! )ŉ* } !?z 	j =		!=y  ) 	! ! q " [vm-mail-buffer vm-summary-buffer nil b inhibit-quit t vm-summary-redo-start-point display vm-mutable-windows pop-up-windows buffer-name bufferp vm-error-if-folder-empty get-buffer-create format "%s Summary" abbrev-mode 0 auto-fill-mode vm-summary-mode vm-set-window-configuration summarize display-buffer vm-proportion-windows switch-to-buffer vm-update-summary-and-mode-line] 17))

(defun vm-do-summary (&optional start-point) (byte-code "	 
 !\"\\!q	A @HH< @HHb`d\"> dbH  ȉ	 
q@\"q@H I\"@H IAT\"! \"I ))!," [mp start-point vm-message-list n modulus summary vm-summary-buffer buffer-read-only nil vm-summary-pointer vm-mail-buffer 0 % vm-abs random 11 10 message "Generating summary..." 1 2 delete-region erase-buffer vm-sprintf vm-summary-format point-marker insert "  " 3 zerop "Generating summary... %d" "Generating summary... done"] 16))

(defun vm-do-needed-summary-rebuild nil (byte-code " 	$ : ! @!8 8 	8 8 @!" [vm-summary-redo-start-point vm-summary-buffer nil vm-message-pointer vm-need-summary-pointer-update vm-do-summary vm-set-summary-pointer] 5))

(defun vm-update-message-summary (m) (byte-code "		H	HHJH= 	HHBw @HH0 @HH!!n @\"@HH!q@HHbgU^ ҂_ 
\"`@HH\")*)A *" [m-list m summary inhibit-quit t buffer-read-only 2 0 6 7 nil 1 buffer-name marker-buffer vm-sprintf vm-summary-format insert 32 "  " "->" delete-region 3] 10))

(defun vm-set-summary-pointer (m) (byte-code "c !p͎̎q	\"  	!9 HHbc!		HHbc!!	^ 
^  ))))+" [vm-summary-buffer w old-window nil inhibit-quit t vm-sbe-buffer buffer-read-only vm-summary-pointer m vm-auto-center-summary get-buffer-window ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) ((byte-code " !" [old-window select-window] 2)) selected-window select-window 1 2 "  " delete-char "->" forward-char -2] 8))

(defun vm-mark-for-display-update (message) (byte-code "	B" [vm-messages-needing-display-update message] 2))

(defun vm-force-mode-line-update nil (byte-code " q !)" [other-buffer set-buffer-modified-p buffer-modified-p] 4))

(defun vm-update-summary-and-mode-line nil (byte-code "  ?  @HH@HH' Ή9 @HH6 ω9 Љ@HHH P@HHW P@HHf P@HHu P@HH P@HH P@HH P ? & @!A  ! " [vm-message-pointer nil vm-ml-message-number vm-ml-attributes-string t vm-summary-buffer vm-real-buffers vm-messages-needing-display-update vm-deferred-message vm-do-needed-renumbering vm-do-needed-summary-rebuild 1 0 2 "new" "unread" "read" 7 " edited" 3 " filed" 5 " written" 4 " replied" 6 " forwarded" " deleted" " MARKED" vm-copy-local-variables vm-ml-highest-message-number vm-buffer-modified-p vm-message-list vm-update-message-summary message vm-force-mode-line-update] 9))

(defun vm-auto-center-summary nil (byte-code " = !? !" [vm-auto-center-summary t one-window-p recenter (4)] 3))

(defun vm-follow-summary-cursor nil (byte-code " 	= `q)?5 
@HHY5 
@HHW< Ȃ 
@HHWN 	U A	ȉ	=?g 
	@HHYt 	A	V 	=? q	\"ˉ
 )+" [vm-follow-summary-cursor major-mode point message-pointer message-list vm-mail-buffer vm-message-pointer vm-message-list nil mp vm-need-summary-pointer-update t vm-summary-mode 1 2 3 vm-record-and-change-message-pointer vm-preview-current-message] 3))

(defun vm-sprintf (format-variable message) (byte-code "NJ=? !
N!)" [format-variable vm-su-message message vm-compiled-format vm-compile-format eval vm-format-sexp] 4))

(defun vm-compile-format (format-variable) (byte-code "	J!!#!H>U: D
BWUJ D
BWUZ D
BWUj D
BWUz D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU
D
BWUD
BWU*D
BWU:D
BWUJD
BWUWD
B!r

@!!O!E\"!

@!!O!E\"!

@!!O!E\"@ !OBBA !OBB! GOBB C D !\"D 
!BBE 	F 
#E 	G #." [format format-variable sexp sexp-fmt conv-spec last-match-end case-fold-search nil store-match-data string-match "%\\(-\\)?\\([0-9]\\)*\\(\\.\\([0-9]+\\)\\)?\\([aAcdfFhilmMnstTwyz*%]\\)" match-end 0 match-beginning 5 (97 65 99 100 102 70 104 105 108 77 109 110 115 116 84 119 121 122 42) 97 vm-su-attribute-indicators vm-su-message 65 vm-su-attribute-indicators-long 99 vm-su-byte-count 100 vm-su-monthday 102 vm-su-from 70 vm-su-full-name 104 vm-su-hour 105 vm-su-message-id 108 vm-su-line-count 109 vm-su-month 77 vm-su-month-number 110 vm-su-message-number 115 vm-su-subject 84 vm-su-to-names 116 vm-su-to 119 vm-su-weekday 121 vm-su-year 122 vm-su-zone 42 vm-su-mark 1 setcar vm-left-justify-string string-to-int 2 vm-right-justify-string 3 vm-truncate-string 4 "%s" "%%" apply concat nreverse put vm-format-sexp vm-compiled-format] 30))

(defun vm-get-header-contents (message header-name) (byte-code "
\"HH!q HHb	!#L > !!\"QH !!\"  ))*" [contents regexp vm-header-regexp-format header-name message t nil format marker-buffer 0 widen re-search-forward vm-text-of ", " buffer-substring match-beginning 1 match-end] 14))

(defun vm-left-justify-string (string width) (byte-code "G	Y  	GZ\"P" [string width make-string 32] 4))

(defun vm-right-justify-string (string width) (byte-code "G	Y  	GZ\"P" [string width make-string 32] 3))

(defun vm-truncate-string (string width) (byte-code "G	X  	O" [string width 0] 3))

(defun vm-su-attribute-indicators (m) (byte-code "HH Â% HH ł% HH$ ǂ% HH1 ʂ> HH= ̂> HHJ ΂W HHV ЂW HHc ҂d R" [m t 2 "D" 0 "N" 1 "U" " " 3 "F" 5 "W" 4 "R" 6 "Z" 7 "E"] 5))

(defun vm-su-attribute-indicators-long (m) (byte-code "HH Ă& HH Ƃ& HH% Ȃ& HH2 ˂3 HH? ͂@ HHL ςM HHY тZ HHf ӂg &" [m t concat 2 "D" 0 "N" 1 "U" " " 4 "r" 6 "z" 3 "f" 5 "w" 7 "e"] 8))

(defun vm-su-byte-count (m) (byte-code "HH H!!Z!I" [m 3 0 int-to-string vm-text-end-of vm-text-of] 7))

(defun vm-su-weekday (m) (byte-code "HH !HH" [m 3 1 vm-su-do-date] 3))

(defun vm-su-monthday (m) (byte-code "HH !HH" [m 3 2 vm-su-do-date] 3))

(defun vm-su-month (m) (byte-code "HH !HH" [m 3 vm-su-do-date] 3))

(defun vm-su-month-number (m) (byte-code "HH !HH" [m 3 15 vm-su-do-date] 3))

(defun vm-su-year (m) (byte-code "HH !HH" [m 3 4 vm-su-do-date] 3))

(defun vm-su-hour (m) (byte-code "HH !HH" [m 3 5 vm-su-do-date] 3))

(defun vm-su-zone (m) (byte-code "HH !HH" [m 3 6 vm-su-do-date] 3))

(defun vm-su-mark (m) (byte-code "HH  Ç" [m 1 "*" " "] 2))

(defun vm-grok-From_-date (message) (byte-code "=
 / 
HH!q 
HHb!- !!\"))" [vm-folder-type nil message mmdf marker-buffer 0 widen looking-at "From [^ 	
]+[ 	]+\\([^ 	
].*\\)" buffer-substring match-beginning 1 match-end] 8))

(defun vm-su-do-date (m) (byte-code "	\" 	!?G 	HI	HI	HI	HI	HI	HI	HIB\" !d 	H!!OIj 	HI	H!!OI	!!O\"	H!!OI	H!!OI	H!!OIB\"	H!!OI	!!O\"	H!!OI	H!!OI	H!!OI!	H!!OIB	HI	HI	HI	HI	HI	HI	HI)" [date m t nil vm-get-header-contents "Date" vm-grok-From_-date 3 1 "" 2 15 4 5 6 string-match "\\(\\([a-z][a-z][a-z]\\),\\)?[ 	
]*\\([0-9][0-9]?\\)[ 	
---]*\\([a-z][a-z][a-z]\\)[ 	
---]*\\([0-9]*[0-9][0-9]\\)[ 	
]*\\([0-9:]+\\)[ 	
]*\\([a-z][a-z]?[a-z]?\\|[---+][0-9][0-9][0-9][0-9]\\)" match-beginning match-end vm-su-do-month 7 "\\([a-z][a-z][a-z]\\)[ 	
]*\\([a-z][a-z][a-z]\\)[ 	
]*\\([0-9][0-9]?\\)[ 	
]*\\([0-9:]+\\)[ 	
]*[0-9][0-9]\\([0-9][0-9]\\)[ 	
]*\\([a-z][a-z]?[a-z]?\\|[---+][0-9][0-9][0-9][0-9]\\)?"] 37))

(defun vm-su-do-month (m month-abbrev) (byte-code "!?& 	
؉ۏ" [vm-su-month-sym-jan vm-su-month-sym-feb vm-su-month-sym-mar vm-su-month-sym-apr vm-su-month-sym-may vm-su-month-sym-jun vm-su-month-sym-jul vm-su-month-sym-aug vm-su-month-sym-sep vm-su-month-sym-oct vm-su-month-sym-nov vm-su-month-sym-dec boundp ("January" "1") ("February" "2") ("March" "3") ("April" "4") ("May" "5") ("June" "6") ("July" "7") ("August" "8") ("September" "9") ("October" "10") ("November" "11") ("December" "12") nil (byte-code "	!P!J
H@I
HA@I)" [val month-abbrev m intern "vm-su-month-sym-" downcase 3 15] 5) ((error (byte-code "HIHI" [m 3 "???" 15 "?"] 3)))] 4))

(defun vm-su-full-name (m) (byte-code "HH !HH" [m 3 7 vm-su-do-author] 3))

(defun vm-su-from (m) (byte-code "HH !HH" [m 3 8 vm-su-do-author] 3))

(defun vm-grok-From_-author (message) (byte-code "=
 / 
HH!q 
HHb!- !!\"))" [vm-folder-type nil message mmdf marker-buffer 0 widen looking-at "From \\([^ 	
]+\\)" buffer-substring match-beginning 1 match-end] 8))

(defun vm-su-do-author (m) (byte-code "
\"
\" 
!	?, ɉ?) ɉ 	\"V !; ?H 	!!O	!!O 	\" ?l 	!!O	!!SO	!T!OP 	\" 	!!O! ! !? 	!!OP 	!! !O! ڂ %? \" 	
HI
H	I*" [full-name from m vm-gargle-uucp nil vm-get-header-contents "Full-Name" "From" vm-grok-From_-author "???" string-match "^\\([^< 	
]+\\([ 	
]+[^< 	
]+\\)*\\)?[ 	
]*\\(<\\([^>]+\\)>\\)" match-beginning 1 match-end 4 "[ -]*(\\([^)]+\\))[ -]*" 0 "\\([^!@:.]+\\)\\(\\.[^!@:]+\\)?!\\([^!@: 	
]+\\)\\(@\\([^!@:. 	
]+\\)\\(.[^ 	
]+\\)?\\)?[ 	
]*$" concat 3 "@" 5 2 6 "." "" ".UUCP" "^[ 	
]*$" 7 8] 34))

(autoload (quote rfc822-addresses) "rfc822")

(defun vm-su-do-recipients (m) (byte-code "\"\" \"\"  \"9 Q: !! @\" @\" !y @!!O
B @!!O
B @\" @!!O
B @
BAK 	$$@\"@!!O! ! !? @!!OP @!!!O!Ԃ%\"A H#IH
#I." [mail-use-rfc822 t names addresses to cc all list m vm-gargle-uucp nil vm-get-header-contents "To" "Apparently-To" user-login-name "Cc" ", " rfc822-addresses vm-parse-addresses string= "" string-match "^\\(\\([^<]+[^ 	
]\\)[ 	
]+\\)?<\\([^>]+\\)>" match-beginning 2 match-end 3 "[ -]*(\\([^)]+\\))[ -]*" 1 "\\([^!@:.]+\\)\\(\\.[^!@:]+\\)?!\\([^!@: 	
]+\\)\\(@\\([^!@:. 	
]+\\)\\(.[^ 	
]+\\)?\\)?[ 	
]*$" setcar concat "@" 5 6 "." ".UUCP" 13 mapconcat identity 14] 37))

(defun vm-su-to (m) (byte-code "HH !HH" [m 3 13 vm-su-do-recipients] 3))

(defun vm-su-to-names (m) (byte-code "HH !HH" [m 3 14 vm-su-do-recipients] 3))

(defun vm-su-message-id (m) (byte-code "HH H\" I" [m 3 9 vm-get-header-contents "Message-Id" ""] 5))

(defun vm-su-line-count (m) (byte-code "HH6 Hp
=! ! @HH!qʎ !!\"!)))I" [m vm-sbe-buffer major-mode vm-message-list vm-message-pointer 3 10 vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) widen int-to-string count-lines vm-text-of vm-text-end-of] 10))

(defun vm-su-message-number (m) (byte-code "HH" [m 1 0] 2))

(defun vm-su-subject (m) (byte-code "HH H\" I" [m 3 11 vm-get-header-contents "Subject" ""] 5))
