;ELC   
;;; compiled by gsstark@lola-granola.MIT.EDU on Tue Jul 23 13:34:04 1996
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.2.37/lisp/gnus-gl.el
;;; emacs version 19.30.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`gnus-gl.el' was compiled for Emacs 19.29 or later"))


(byte-code "ÀÁ!ˆÀÂ!‡" [require gnus-score cl] 2)
#@58 *The line format spec in summary GroupLens mode buffers.
(defvar gnus-summary-grouplens-line-format "%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n" (#$ . -558))
#@79 User's pseudonym.  This pseudonym is obtained during the registration process
(defvar grouplens-pseudonym "" (#$ . 716))
#@32 Host where the bbbd is running
(defvar grouplens-bbb-host "grouplens.cs.umn.edu" (#$ . 843))
#@34 Port where the bbbd is listening
(defvar grouplens-bbb-port 9000 (#$ . 942))
#@52 *Groups that are part of the GroupLens experiment.
(defvar grouplens-newsgroups (quote ("comp.lang.c++" "rec.humor" "rec.food.recipes" "comp.groupware" "mn.general" "rec.arts.movies" "rec.arts.movies.current-films" "comp.lang.java" "comp.os.linux.announce" "comp.os.linux.misc" "comp.os.linux.development.apps" "comp.os.linux.development.system")) (#$ . -1025))
#@514 valid values are: 
      prediction-spot -- an * corresponding to the prediction between 1 and 5, 
      confidence-interval -- a numeric confidence interval
      prediction-bar --  |#####     | the longer the bar, the better the article,
      confidence-bar --  |  -----   } the prediction is in the middle of the bar,
      confidence-spot -- )  *       | the spot gets bigger with more confidence,
      prediction-num  --   plain-old numeric value,
      confidence-plus-minus  -- prediction +/i confidence
(defvar grouplens-prediction-display (quote prediction-spot) (#$ . 1394))
#@337 Offset the prediction by this value.  
Setting this variable to -2 would have the following effect on
GroupLens scores:

   1   -->   -2
   2   -->   -1
   3   -->    0
   4   -->    1
   5   -->    2
   
The reason is that a user might want to do this is to combine
GroupLens predictions with scores calculated by other score methods.
(defvar grouplens-score-offset 0 (#$ . 1988))
#@121 This variable allows the user to magnify the effect of GroupLens scores. 
The scale factor is applied after the offset.
(defvar grouplens-score-scale-factor 1 (#$ . 2377))
#@323 Tell Grouplens to override the normal Gnus scoring mechanism.  
GroupLens scores can be combined with gnus scores in one of three ways.
'override -- just use grouplens predictions for grouplens groups
'combine  -- combine grouplens scores with gnus scores
'separate -- treat grouplens scores completely separate from gnus
(defvar gnus-grouplens-override-scoring (quote override) (#$ . 2556))
#@30 Current session token number
(defvar grouplens-bbb-token "0" (#$ . 2954))
#@51 Process Id of current bbbd network stream process
(defvar grouplens-bbb-process nil (#$ . 3034))
#@41 Buffer associated with the BBBD process
(defvar grouplens-bbb-buffer nil (#$ . 3137))
#@41 Current set of  message-id rating pairs
(defvar grouplens-rating-alist nil (#$ . 3229))
(byte-code "ÀÁ!„ ÂÄÆ$ÁBÀÈ!„ ÉÈBÀÊ!„+ É\nÊBÀË!„: ÉËBÉ‡" [boundp grouplens-current-hashtable make-hash-table :test equal :size 100 current-load-list grouplens-current-group nil bbb-mid-list bbb-alist] 5)
#@126 Number of seconds to wait for some response from the BBB.
If this times out we give up and assume that something has died...
(defvar bbb-timeout-secs 10 (#$ . 3552))
#@38 Message-ID of the last article read.
(defvar grouplens-previous-article nil (#$ . 3724))
(byte-code "À	BÂ	BÀ‡" [bbb-read-point current-load-list bbb-response-point] 2)
(defalias 'bbb-connect-to-bbbd #[(host port) "„ ÁÂÃ\f\"!ŠqˆÅÆ!ˆe)ŠqˆÇ ˆ)È	ÊË�ˆ	‡" [grouplens-bbb-buffer get-buffer-create format " *BBBD trace: %s*" host make-local-variable bbb-read-point erase-buffer nil grouplens-bbb-process done (byte-code "ÀÁÂ�ˆ„ ÄÅÆ\"ˆŠqˆeÉ!„! ÄÅÆ\"ˆ)Æ‡" [error (byte-code "ÀÁ\n\f$À‡" [open-network-stream "BBBD" grouplens-bbb-buffer host port grouplens-bbb-process] 5) ((error (gnus-message 3 "Error: Failed to connect to BBB"))) grouplens-bbb-process throw done nil grouplens-bbb-buffer bbb-read-point bbb-read-response] 3)] 4])
(defalias 'bbb-send-command #[(process command) "dbˆcˆÁcˆ``Ä!`Æ“ˆÇ\"ˆÇÁ\"‡" [command "\n" bbb-read-point bbb-response-point process-mark process nil process-send-string] 3])
#@70 This function eats the initial response of OK or ERROR from the BBB.
(defalias 'bbb-read-response #[(process) "À‰bˆÄÅÀÆ#„ Ç	\"ƒ bˆ‚ `bˆ	ÊË!*‡" [nil match-end case-fold-search bbb-read-point search-forward "\n" t accept-process-output process bbb-timeout-secs looking-at "OK"] 4 (#$ . 4654)])
#@70 return the token number if login is successful, otherwise return nil
(defalias 'bbb-login #[nil "À\nÃš„9 Ä\"‰ƒ5 ŠÈ!qˆÉÊ\nP\"ˆË!ƒ/ Ì ‚4 ÍÎÏ\"ˆ))‚> ÍÎÐ\"ˆ	‡" [nil grouplens-bbb-token grouplens-pseudonym "" bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port bbb-process process-buffer bbb-send-command "login " bbb-read-response bbb-extract-token-number gnus-message 3 "Error: Grouplens login failed" "Error: you must set a pseudonym"] 5 (#$ . 4966) nil])
(defalias 'bbb-extract-token-number #[nil "ÀÁÂÃ#ÅÆ!… \fÇ•{)‡" [search-forward "token=" nil t token-pos looking-at "[0-9]+" 0] 4])
(gnus-add-shutdown (quote bbb-logout) (quote gnus))
#@23 logout of bbb session
(defalias 'bbb-logout #[nil "À	\n\"‰… ŠÄ!qˆÅÆP\"ˆÈ!))‡" [bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port bbb-process process-buffer bbb-send-command "logout " grouplens-bbb-token bbb-read-response] 5 (#$ . 5629)])
#@372 this function can be called as part of the function to return the 
list of score files to use. See the gnus variable 
gnus-score-find-score-files-function.  

*Note:*  If you want to use grouplens scores along with calculated scores, 
you should see the offset and scale variables.  At this point, I don't 
recommend using both scores and grouplens predictions together.
(defalias 'bbb-build-mid-scores-alist #[(groupname) "\n�… Ã Å\f\"ÇÉÊC\"*CCC‡" [groupname grouplens-current-group grouplens-newsgroups bbb-get-all-mids mid-list bbb-get-predictions predict-list nil grouplens-previous-article append "message-id"] 3 (#$ . 5889)])
#@60 Ask the bbb for predictions, and build up the score alist.
(defalias 'bbb-get-predictions #[(midlist groupname) "ƒ\n Ášƒ ÂÃÄ\"ˆÅ‡ÂÆÇ\"ˆÅÈ	\n#Ë\f\"ƒV ŠÑ!qˆÒ\"ˆÓ!ƒM Ô!‚U ÂÕÖ\"ˆ× ˆ)‰+‡" [grouplens-bbb-token "0" gnus-message 3 "Error: You are not logged in to a BBB" nil 5 "Fetching Predictions..." bbb-build-predict-command midlist groupname bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port bbb-process predict-command predict-list process-buffer bbb-send-command bbb-read-response bbb-get-prediction-response 1 "Invalid Token, login and try again" ding bbb-alist] 5 (#$ . 6539)])
(defalias 'bbb-get-all-mids #[nil "ÀÁ\n\"A@Ä‰Ä	ƒ0 @‰HA	B	‚ 	,‡" [assoc "message-id" gnus-header-index gnus-newsgroup-headers nil this art articles index bbb-mid-list] 5])
(defalias 'bbb-build-predict-command #[(mlist grpname token) "À	ÂÄ°Åƒ' @ÄQA‰„ ÉP‰*‡" ["getpredictions " token " " grpname "\n" nil art cmd mlist ".\n"] 6])
(defalias 'bbb-get-prediction-response #[(process) "À‰bˆÄÅÀÆ#„ Ç	\"ƒ bˆ‚ `\nË\\bˆÌ *‡" [nil match-end case-fold-search bbb-read-point search-forward ".\n" t accept-process-output process bbb-timeout-secs bbb-response-point 4 bbb-build-response-alist] 4])
(defalias 'bbb-build-response-alist #[nil "À`Ã\fÅÇ$ÉÊ!ƒ# Ë \fÍBB\nBÎyˆ‚ ÉÏ!ƒG Ë Ð ÑBB\nBÒË Ð Ó Ô E#ˆÎyˆ‚ ÉÕ!ƒi Ë Ð ÖBB\nBÒË Ð ×‰E#ˆÎyˆ‚ \n*‡" [nil match-end resp make-hash-table :test equal :size 100 grouplens-current-hashtable looking-at "\\(<.*>\\) :nopred=" bbb-get-mid gnus-summary-default-score (nil s) 1 "\\(<.*>\\) :pred=\\([0-9].[0-9][0-9]\\) :conflow=\\([0-9].[0-9][0-9]\\) :confhigh=\\([0-9].[0-9][0-9]\\)" bbb-get-pred (nil s) cl-puthash bbb-get-confl bbb-get-confh "\\(<.*>\\) :pred=\\([0-9].[0-9][0-9]\\)" (nil s) 0] 5])
(defalias 'bbb-get-mid #[nil "À”À•{‡" [1] 2])
(defalias 'bbb-get-pred #[nil "ÀÁ”Á•{!‰ÃVƒ Ä\n\\_!‚ Ç)‡" [string-to-number 2 tpred 0 round grouplens-score-scale-factor grouplens-score-offset 1] 5])
(defalias 'bbb-get-confl #[nil "ÀÁ”Á•{!‡" [string-to-number 3] 3])
(defalias 'bbb-get-confh #[nil "ÀÁ”Á•{!‡" [string-to-number 4] 3])
(byte-code "ÀÁ\nBÃÄ\nBÅÆ\nBÇÈ\nBÉ\nBÀ‡" [4.0 grplens-rating-range current-load-list 5 grplens-maxrating 1 grplens-minrating 12 grplens-predstringsize gnus-tmp-score] 2)
(defalias 'bbb-grouplens-score #[(header) "Á=ƒ\n Â!‡ÄÅÆ\"ÈÉ\n\"A@H‰\fÍ:ƒE Ñ\"‰@ƒ? @A‚A )‚N #+A@AA@ÙÚIˆÛÚIˆ�„š ßš„” ÙWƒŠ à‚” áVƒ” áÙÙâ!ƒ,ƒ,ãšƒ¸ ä\"‚8åšƒÌ æ#‚8çšƒÞ è\"‚8éšƒï êë\"‚8ìšƒ êë\"‚8ßšƒí!‚8îšƒ$ï#‚8ðñò\"ˆ‚8áóIˆôõIˆ.‡" [gnus-grouplens-override-scoring separate bbb-grouplens-other-score header make-string 12 32 rate-string assoc "message-id" gnus-header-index mid grouplens-current-hashtable nil def table key cl-hash-lookup found cl-builtin-gethash hashent gnus-tmp-score iscore low high 0 124 11 grouplens-current-group grouplens-newsgroups grouplens-prediction-display prediction-num 1 5 bbb-valid-score prediction-spot bbb-fmt-prediction-spot confidence-interval bbb-fmt-confidence-interval prediction-bar bbb-fmt-prediction-bar confidence-bar format "|   %4.2f   |" confidence-spot bbb-fmt-prediction-num confidence-plus-minus bbb-fmt-confidence-plus-minus gnus-message 3 "Invalid prediction display type" 78 6 65] 6])
(defalias 'bbb-grouplens-other-score #[(header) "	�„ Â‡ÃÄÅ\"ÈÉ\n\"A@H‰\fÍ:ƒD Ñ\"‰@ƒ> @A‚@ )‚M #+‰@†V ÕA@Ø8ÕÚIˆÛÚIˆÝš„Ž ÕWƒ„ Þ‚Ž ßVƒŽ ß„¤ ßàIˆáâIˆ‚'ãšƒ´ ä\"‚'åšƒÆ æ#‚'çšƒÖ è\"‚'éšƒå êë\"‚'ìšƒô êë\"‚'Ýšƒí!‚'îšƒï#‚'ðñò\"ˆÕÚIˆÛÚIˆ.‡" [grouplens-current-group grouplens-newsgroups "" make-string 12 32 rate-string header assoc "message-id" gnus-header-index mid grouplens-current-hashtable nil def table key cl-hash-lookup found cl-builtin-gethash hashent 0 pred low 2 high 124 11 grouplens-prediction-display prediction-num 1 5 78 6 65 prediction-spot bbb-fmt-prediction-spot confidence-interval bbb-fmt-confidence-interval prediction-bar bbb-fmt-prediction-bar confidence-bar format "|   %4.2f   |" confidence-spot bbb-fmt-prediction-num confidence-plus-minus bbb-fmt-confidence-plus-minus gnus-message 3 "Invalid prediction display type"] 6])
(defalias 'bbb-valid-score #[(score) "Áš† \nY… \n\fX‡" [grouplens-prediction-display prediction-num score grplens-minrating grplens-maxrating] 2])
(defalias 'bbb-requires-confidence #[(format-type) "Áš† Âš† Ãš‡" [format-type confidence-plus-minus confidence-spot confidence-interval] 2])
(defalias 'bbb-have-confidence #[(clow chigh) "?† 	??‡" [clow chigh] 1])
(defalias 'bbb-fmt-prediction-spot #[(rate-string score) "Á\nZ\f¥ÆZÇ\\_!ÈIˆ‡" [rate-string round score grplens-minrating grplens-rating-range grplens-predstringsize 4 1.49 42] 5])
(defalias 'bbb-fmt-confidence-interval #[(score low high) "À	\n\"ƒ ÃÄ	\n#‡Å!‡" [bbb-have-confidence low high format "|%4.2f-%4.2f |" bbb-fmt-prediction-num score] 4])
(defalias 'bbb-fmt-confidence-plus-minus #[(score low high) "À	\n\"ƒ ÃÄ\n	ZÆ¥#‡Ç!‡" [bbb-have-confidence low high format "|%3.1f+/-%4.2f|" score 2.0 bbb-fmt-prediction-num] 5])
(defalias 'bbb-fmt-prediction-bar #[(rate-string score) "À\nÄZ¥‰Æ¥Z		ÆZWƒ@ \n	Vƒ- 	ÌIˆ‚3 	ÍIˆ	À\\	\\	‚ ,‡" [1 i grplens-rating-range grplens-predstringsize 4 step 2 half-step grplens-minrating loc score rate-string 35 32] 4])
(defalias 'bbb-fmt-prediction-num #[(score) "ÀÁ\n\"‡" [format "|   %4.2f   |" score] 3])
(defalias 'bbb-put-ratings #[nil "ƒN 	\n�ƒN Ã\f\"Æ!‰ƒH ŠÉ!qˆÊËÌ\"ˆÍ\"ˆÎ!ƒ8 Ï‚@ ÊÐÑ\"ˆÒ ˆÊËÓ\")‚L ÊÔÕ\"*‡Ï‰‡" [grouplens-rating-alist gnus-newsgroup-name grouplens-newsgroups bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port bbb-build-rate-command rate-command bbb-process process-buffer gnus-message 5 "Sending Ratings..." bbb-send-command bbb-read-response nil 1 "Token timed out: call bbb-login and quit again" ding "Sending Ratings...Done" 3 "No BBB connection"] 4])
(defalias 'bbb-build-rate-command #[(rate-alist) "ÀÁ\nÃ\fÅ°ƒ4 @@ÉA@ÊËAAÌ°A‰„ ÍP*‡" [nil "putratings " grouplens-bbb-token " " grouplens-current-group " \n" cmd this rate-alist " :rating=" ".00" " :time=" "\n" ".\n"] 9])
(defalias 'bbb-summary-rate-article #[(rating &optional midin) "	�…Q \n†\f Ã ƒL YƒL XƒL \fƒL È\f	\"‰\nƒ8 \nËB¡ˆ‚B \fËBB	B	ÌÍÎ!\")‚P ÏÐÑ\")‡" [gnus-newsgroup-name grouplens-newsgroups midin bbb-get-current-id mid rating grplens-minrating grplens-maxrating assoc grouplens-rating-alist oldrating 0 gnus-summary-mark-article nil int-to-string gnus-message 3 "Invalid rating"] 5 nil "nRating: "])
#@42 Select unread article after current one.
(defalias 'grouplens-next-unread-article #[(rating) "ƒ Á!ˆÂ ‡" [rating bbb-summary-rate-article gnus-summary-next-unread-article] 2 (#$ . 13334) "P"])
#@42 Select unread article after current one.
(defalias 'grouplens-best-unread-article #[(rating) "ƒ Á!ˆÂ ‡" [rating bbb-summary-rate-article gnus-summary-best-unread-article] 2 (#$ . 13535) "P"])
#@158 Mark all articles not marked as unread in this newsgroup as read, 
    then exit.   If prefix argument ALL is non-nil, all articles are 
    marked as read.
(defalias 'grouplens-summary-catchup-and-exit #[(rating) "ƒ Á!ˆ§ƒ Â ‡Â!‡" [rating bbb-summary-rate-article gnus-summary-catchup-and-exit] 2 (#$ . 13737) "P"])
#@67 Raise the score of the articles in the current thread with SCORE.
(defalias 'grouplens-score-thread #[(score) "ÀŠÂ ‰ƒ' Ä@!ˆÅ ˆÆÈ@	ž8ÊH\"ˆA‰„\n )`)Ë\fÍÎÏË\"!„: 	bˆ*Ð ˆÑ ˆÒÓ!‡" [nil e gnus-summary-articles-in-thread articles gnus-summary-goto-subject gnus-set-global-variables bbb-summary-rate-article score 3 gnus-newsgroup-data 4 t gnus-summary-check-current zerop gnus-summary-next-subject 1 gnus-summary-recenter gnus-summary-position-point gnus-set-mode-line summary] 6 (#$ . 14065) "nRating: "])
(defalias 'bbb-get-current-id #[nil "ƒ ÁÂ\"A@H‡ÄÅÆ\"‡" [gnus-current-headers assoc "message-id" gnus-header-index gnus-message 3 "You must select an article before you rate it"] 4])
#@41 Say whether GROUP is a GroupLens group.
(defalias 'bbb-grouplens-group-p #[(group) "	�ƒ Â‡Ã‡" [group grouplens-newsgroups " (GroupLens Enhanced)" ""] 2 (#$ . 14768)])
(byte-code "ÀÁ!„ ÂÁBÂ‡" [boundp grouplens-current-starting-time nil current-load-list] 2)
(defalias 'grouplens-start-timer #[nil "À ‰‡" [current-time grouplens-current-starting-time] 2])
(defalias 'grouplens-elapsed-time #[nil "ÀÁ !‰À!Z)‡" [bbb-time-float current-time et grouplens-current-starting-time] 4])
(defalias 'bbb-time-float #[(timeval) "@Á_A@\\‡" [timeval 65536] 2])
(defalias 'grouplens-do-time #[nil "	�…7 \nƒ0 Ã Ä\n\"„% \nÈBBB‚/ ‰A@B¡ˆ*É ˆÊ ‰‡" [gnus-newsgroup-name grouplens-newsgroups grouplens-previous-article grouplens-elapsed-time assoc grouplens-rating-alist oldrating elapsed-time 0 grouplens-start-timer bbb-get-current-id] 4])
(byte-code "ÀÁ\nBÃÄ\nBÁ‡" ["gnus-gl.el 2.12" gnus-gl-version current-load-list "grouplens-bug@cs.umn.edu" gnus-gl-maintainer-address] 2)
#@41 Submit via mail a bug report on gnus-gl
(defalias 'gnus-gl-submit-bug-report #[nil "ÀÁ!ˆÂÄPÆÇÈÉÊËÌÍÎÏ¯\nÐÑ%‡" [require reporter reporter-submit-bug-report gnus-gl-maintainer-address "gnus-gl.el " gnus-gl-version grouplens-pseudonym grouplens-bbb-host grouplens-bbb-port grouplens-newsgroups grouplens-bbb-token grouplens-bbb-process grouplens-current-group grouplens-previous-article grouplens-mid-list bbb-alist nil gnus-gl-get-trace] 13 (#$ . 15761) nil])
#@46 Insert the contents of the BBBD trace buffer
(defalias 'gnus-gl-get-trace #[nil "… Á!‡" [grouplens-bbb-buffer insert-buffer] 2 (#$ . 16227)])
#@73 Minor mode for providing a GroupLens interface in Gnus summary buffers.
(defvar gnus-grouplens-mode nil (#$ . 16378))
(byte-code "ÀÁ!„ ÂÁB	„ Ä ÅÁÆ\"ˆÂ‡" [boundp gnus-grouplens-mode-map nil current-load-list make-keymap gnus-define-keys-1 ("n" grouplens-next-unread-article "r" bbb-summary-rate-article "k" grouplens-score-thread "c" grouplens-summary-catchup-and-exit "," grouplens-best-unread-article)] 3)
(defalias 'gnus-grouplens-make-menu-bar #[nil "ÀÁ!?…  ÀÁ!„ ÂÁBÄÁÅÆ#ˆÇÁÆÉ$‡" [boundp gnus-grouplens-menu nil current-load-list put variable-documentation "" easy-menu-do-define gnus-grouplens-mode-map ("GroupLens" ["Login" bbb-login t] ["Rate" bbb-summary-rate-article t] ["Next article" grouplens-next-unread-article t] ["Best article" grouplens-best-unread-article t] ["Raise thread" grouplens-score-thread t] ["Report bugs" gnus-gl-submit-bug-report t])] 5])
#@73 Minor mode for providing a GroupLens interface in Gnus summary buffers.
(defalias 'gnus-grouplens-mode #[(&optional arg) "Á=…Ë \n�…Ë ÄÅ!ˆ„ ?‚  Ç!ÈV‰…Ë ÉÊ!„3 ËÌÍ\"ˆ‚> ÊÌ!ˆËÌÍÎÏ$ˆÉÊ!„L ËÐÑ\"ˆ‚W ÊÐ!ˆËÐÑÎÏ$ˆÄÒ!ˆÔ=ƒ{ <ƒr ÕÖ\"‚� ÖD‚� ×=ƒŠ ËØÙ\"ˆ‚� ÖÄÚ!ˆÄÜ!ˆÎƒ« Þßà\"ƒ« á ˆÅ\"ž„¸ ã\"B\"Å$ž„È Å%B$B$æç!‡" [major-mode gnus-summary-mode gnus-newsgroup-name grouplens-newsgroups make-local-variable gnus-grouplens-mode arg prefix-numeric-value 0 fboundp make-local-hook add-hook gnus-select-article-hook grouplens-do-time nil local gnus-exit-group-hook bbb-put-ratings gnus-score-find-score-files-function gnus-grouplens-override-scoring combine append bbb-build-mid-scores-alist separate gnus-select-group-hook (lambda nil (bbb-build-mid-scores-alist gnus-newsgroup-name)) gnus-summary-line-format gnus-summary-grouplens-line-format gnus-summary-line-format-spec menu-bar-mode gnus-visual-p grouplens-menu menu gnus-grouplens-make-menu-bar minor-mode-alist (gnus-grouplens-mode " GroupLens") minor-mode-map-alist gnus-grouplens-mode-map run-hooks gnus-grouplens-mode-hook] 6 (#$ . 17264) "P"])
(provide (quote gnus-gl))
