;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\"\210\304\307\306\"\210\304\310\306\"\210\304\311\306\"\210\312\313\314\315\316\317\320\321&\210\322\323\324\325\326DD\327\330\331%\210\322\332\324\325\333DD\334\316\335\330\336&\210\322\337\324\325\340DD\341\316\335\330\342&\207" [require parse-time nnimap range autoload epg-make-context "epg" epg-context-set-passphrase-callback epg-decrypt-string epg-encrypt-string custom-declare-group gnus-cloud nil "Syncing Gnus data via IMAP." :version "25.1" :group gnus custom-declare-variable gnus-cloud-synced-files funcall function #[0 "\300\207" [("~/.authinfo.gpg" "~/.gnus.el" (:directory "~/News" :match ".*.SCORE\\'"))] 1 #1=""] "List of files that should be kept up-to-date via the cloud.\nEach element may be either a string or a property list.\nThe latter should have a :directory element whose value is a string,\nand a :match element whose value is a regular expression to match\nagainst the basename of files in said directory." :type (repeat (choice (string :tag "File") (plist :tag "Property list"))) gnus-cloud-storage-method #[0 "\300\301!\203 \301\207\302\207" [featurep epg base64-gzip] 2 #1#] "Storage method for cloud data, defaults to EPG if that's available." "26.1" (radio (const :tag "No encoding" nil) (const :tag "Base64" base64) (const :tag "Base64+gzip" base64-gzip) (const :tag "EPG" epg)) gnus-cloud-interactive #[0 "\300\207" [t] 1 #1#] "Whether Gnus Cloud changes should be confirmed." boolean] 8)
(defvar gnus-cloud-group-name "Emacs-Cloud")
(defvar gnus-cloud-covered-servers nil)
(defvar gnus-cloud-version 1)
(defvar gnus-cloud-sequence 1)
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable gnus-cloud-method funcall function #[0 "\300\207" [nil] 1 ""] "The IMAP select method used to store the cloud data.\nSee also `gnus-server-set-cloud-method-server' for an\neasy interactive way to set this from the Server buffer." :type (radio (const :tag "Not set" nil) (string :tag "A Gnus server name as a string"))] 6)#@14 

(fn ELEMS)
(defalias 'gnus-cloud-make-chunk #[257 "\301\302\303\"r\211q\210\304\305\"\216\306\307!\210\310\311\"c\210\312!c\210\313 *\207" [gnus-cloud-version generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] set-buffer-multibyte nil format "Gnus-Cloud-Version %s\n" gnus-cloud-insert-data buffer-string] 5 (#$ . 2123)])#@14 

(fn ELEMS)
(defalias 'gnus-cloud-insert-data #[257 "\302\303\304\"r\211q\210\305\306\"\216\307 \210\211\203\215 \211@\310\311\"\312=\203[ \313\211\302\303\304\"r\211q\210\305\314\"\216\307 \210\315\310\316\"!\210\317 \262\320 *\266\202\321\322\310\316\"\310\323\"$c\210\211c\210\324c\266\202\206 \310\311\"\325=\203t \313\211\326p\"*\210\324c\210\202\206 \310\311\"\327=\203\206 \321\330\310\316\"\"c\210A\266\202\202 \210\331 \210\320 *\207" [print-length print-level generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] mm-disable-multibyte plist-get :type :file nil #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] insert-file-contents-literally :file-name buffer-size buffer-string format "(:type :file :file-name %S :timestamp %S :length %d)\n" :timestamp "\n" :newsrc-data print :delete "(:type :delete :file-name %S)\n" gnus-cloud-encode-data] 12 (#$ . 2516)])
(defalias 'gnus-cloud-encode-data #[0 "\302\267\202Z \303ed\304\305p\306\307&\210\310ed\"\207\310ed\"\207\311\312!\313!	>\204- \314\315\316D\"\210\211\317\305I\210\313!	>\204A \314\315\316D\"\210\211\320\305I\210\321\322ed\"\306#ed|\210\211c\207\323\320\324\"\207\325\326\327#\207" [gnus-cloud-storage-method cl-struct-epg-context-tags #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (base64-gzip 6 base64 22 epg 27 nil 85)) call-process-region "gzip" t nil "-c" base64-encode-region epg-make-context OpenPGP type-of signal wrong-type-argument epg-context 4 5 epg-encrypt-string buffer-substring-no-properties gnus-message "Leaving cloud data plaintext" gnus-error 1 "Invalid cloud storage method %S"] 8])
(defalias 'gnus-cloud-decode-data #[0 "\301\267\202! \302ed\"\207\303\304!\305\306ed\"\"ed|\210\211c\207\307\310\311\"\207\312\313\314#\207" [gnus-cloud-storage-method #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (base64 6 base64-gzip 6 epg 11 nil 28)) base64-decode-region epg-make-context OpenPGP epg-decrypt-string buffer-substring-no-properties gnus-message 5 "Reading cloud data as plaintext" gnus-error 1 "Invalid cloud storage method %S"] 6])
(defalias 'gnus-cloud-parse-chunk #[0 "\212\300\301!\204 \302\303!\210\304y\210\305\306\304!!`d{\307\310\311\"r\211q\210\312\313\"\216\314 \210c\210\304U\203: \315 \210eb\210\316 \202> \302\317\"*\262\266\202)\207" [looking-at "Gnus-Cloud-Version \\([0-9]+\\)" error "Not a valid Cloud chunk in the current buffer" 1 string-to-number match-string generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] mm-disable-multibyte gnus-cloud-decode-data gnus-cloud-parse-version-1 "Unsupported Cloud chunk version %s"] 6])
(defalias 'gnus-cloud-parse-version-1 #[0 "\300m\204h m\204 \301\302!\204 \303y\210\202 m\204 \3041$ \305p!0\202& \210\300\300:\203c \306\307\"\310>\203U \306\311\"\262\312\313`T`T\\{D\"B\262`T\\b\266\202 \306\307\"\314=\203c B\262\266\202 \211\237\207" [nil looking-at "(:type" 1 (error) read plist-get :type (:file :delete) :length append :contents :newsrc-data] 9])#@14 

(fn ELEMS)
(defalias 'gnus-cloud-update-all #[257 "\211\211\2054 \211@\300\301\"\211\302\267\202& \303\300\304\"\"\266\202- \305\"\266\202- \306\307\310#\266A\266\202\202 \207" [plist-get :type #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:newsrc-data 17 :delete 29 :file 29)) gnus-cloud-update-newsrc-data :name gnus-cloud-update-file gnus-message 1 "Unknown type %s; ignoring"] 8 (#$ . 5699)])#@62 Update the newsrc data for GROUP from ELEM.

(fn GROUP ELEM)
(defalias 'gnus-cloud-update-newsrc-data #[514 "\302\303\"\302\304\"\206\f \305\306\"A@\262\203c @;\203c A@\250\203c \211\203\\ \307\310\"\307\310\"\232\203= \311\312\313#\207	\203L \314\307\315#!\205k \311\316\317#\210\320\"\210\321!\207\322\323\324#\207\322\323\325$\207" [gnus-newsrc-hashtb gnus-cloud-interactive plist-get :contents :timestamp "0" gethash format "%S" gnus-message 3 "Skipping cloud update of group %s, the info is the same" gnus-y-or-n-p "%s has different info in the cloud from %s, update it here? " 2 "Installing cloud update of group %s" gnus-set-info gnus-group-update-group gnus-error 1 "Sorry, group %s is not subscribed" "Sorry, could not update newsrc for group %s (invalid data %S)"] 10 (#$ . 6154)])#@70 Apply Gnus Cloud data ELEM and operation OP to a file.

(fn ELEM OP)
(defalias 'gnus-cloud-update-file #[514 "\301\302\"\301\303\"\301\304\"\305!\306!\203~ \307\267\202| \211\2038 \203/ \310\311\312#!\2038 \313\314!@\"\207\315\316\317#\207\211\203v \211\205} \320\321\322\"r\211q\210\323\324\"\216\325 \210\326!\210\327 \232*?\262\205} \203v \310\311\330#!\205\204 \331#\207\332\207\315\333\334#\207" [gnus-cloud-interactive plist-get :file-name :timestamp :contents file-exists-p gnus-cloud-file-covered-p #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:delete 27 :file 63)) gnus-y-or-n-p format "%s has been deleted as of %s, delete it locally? " rename-file find-backup-file-name gnus-message 3 "%s was already deleted before the cloud got it" generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] mm-disable-multibyte insert-file-contents-literally buffer-string "%s has updated contents as of %s, update it? " gnus-cloud-replace-file nil 2 "%s isn't covered by the cloud; ignoring"] 11 (#$ . 6978)])#@36 

(fn FILE-NAME DATE NEW-CONTENTS)
(defalias 'gnus-cloud-replace-file #[771 "\300\301\302\"r\211q\210\303\304\"\216\305 \210c\210\306!\203\" \307\310!@\"\210\311ed\312\211\211\313&\210\314\315!\316#*\207" [generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] mm-disable-multibyte file-exists-p rename-file find-backup-file-name write-region nil excl set-file-times parse-iso8601-time-string nofollow] 12 (#$ . 8115)])#@18 

(fn FILE-NAME)
(defalias 'gnus-cloud-file-covered-p #[257 "\301\211\203E \211@\211;\203 \211\232\203> \302\262\202> \211:\203> \303\304\305\"!\303\306!!\232\203> \307\304\310\"\311!\"\203> \302\262A\266\202\202 \210\207" [gnus-cloud-synced-files nil t directory-file-name plist-get :directory file-name-directory string-match :match file-name-nondirectory] 8 (#$ . 8608)])
(defalias 'gnus-cloud-all-files #[0 "\301\211\203I \211@\211;\203 \211B\262\202B \211:\203B \302\303\304\"\301\303\305\"#\211\203A \211@\306\307\310\303\304\"!#B\262A\266\202\202% \210A\266\202\202 \210\211\237\207" [gnus-cloud-synced-files nil directory-files plist-get :directory :match format "%s/%s" directory-file-name] 11])
(defvar gnus-cloud-file-timestamps nil)#@23 

(fn &optional FULL)
(defalias 'gnus-cloud-files-to-upload #[256 "\301\211\302 \211\203B \211@\303!\203+ \304\"\211\262\203; \305\306\307\310\257B\262\202; \311\"\203; \305\312\307FB\262A\266\202\202 \210\237\207" [gnus-cloud-file-timestamps nil gnus-cloud-all-files file-exists-p gnus-cloud-file-new-p :type :file :file-name :timestamp assoc :delete] 11 (#$ . 9385)])#@56 Return a general timestamp string for TIME.

(fn TIME)
(defalias 'gnus-cloud-timestamp #[257 "\300\301\"\207" [format-time-string "%FT%T%z"] 4 (#$ . 9779)])#@18 

(fn FILE FULL)
(defalias 'gnus-cloud-file-new-p #[514 "\301\302!\3038\262!\304\"A@\204 \211\203 \211\231\205 \207" [gnus-cloud-file-timestamps gnus-cloud-timestamp file-attributes 5 assoc] 6 (#$ . 9942)])
(defalias 'gnus-cloud-ensure-cloud-group #[0 "\303	\"\206 \304\305\211\n$?\205$ \306\n\"\205$ \304\305\211\n$\205$ \307!\207" [gnus-cloud-group-name gnus-active-hashtb gnus-cloud-method gethash gnus-activate-group nil gnus-request-create-group gnus-subscribe-group] 5])#@55 Upload all data (newsrc and files) to the Gnus Cloud.
(defalias 'gnus-cloud-upload-all-data #[0 "\300\301!\207" [gnus-cloud-upload-data t] 2 (#$ . 10441) nil])
(autoload 'gnus-group-refresh-group "gnus-group")#@149 Upload data (newsrc and files) to the Gnus Cloud.
When FULL is t, upload everything, not just a difference from the last full.

(fn &optional FULL)
(defalias 'gnus-cloud-upload-data #[256 "\304 \210\305\306\307\"r\211q\210\310\311\"\216\312\313!\314 \"\315	\"\n\206  \316T\317\320\n\203. \321\202/ \322$c\210\323c\210\324c\210\325!c\210\326	\307\211$\203Y \327!\210\330\331\332#\210\333!\266\202\202` \334\335\336#\266\202*\207" [gnus-cloud-group-name gnus-cloud-method gnus-cloud-sequence gnus-cloud-storage-method gnus-cloud-ensure-cloud-group generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] append gnus-cloud-files-to-upload gnus-cloud-collect-full-newsrc gnus-group-full-name 0 format "Subject: (sequence: %s type: %s storage-method: %s)\n" :full :partial "From: nobody@gnus.cloud.invalid\n" "\n" gnus-cloud-make-chunk gnus-request-accept-article gnus-cloud-add-timestamps gnus-message 3 "Uploaded Gnus Cloud data successfully to %s" gnus-group-refresh-group gnus-error 2 "Failed to upload Gnus Cloud data to %s"] 9 (#$ . 10657) nil])#@14 

(fn ELEMS)
(defalias 'gnus-cloud-add-timestamps #[257 "\211\211\205* \211@\301\302\"\303\"\211\203 \304\"\301\305\"DB\266A\266\202\202 \207" [gnus-cloud-file-timestamps plist-get :file-name assoc delq :timestamp] 9 (#$ . 11778)])
(defalias 'gnus-cloud-available-chunks #[0 "\305\306\211	$\210\307	\"\310\n\"\306\211\311\312!\"\203: rq\210eb\210\313 \211\262\2039 \f\2031 \f!\210\211B\262\202! )\314\237\315\"\207" [gnus-cloud-group-name gnus-cloud-method gnus-active-hashtb nntp-server-buffer gnus-alter-header-function gnus-activate-group nil gnus-group-full-name gethash gnus-retrieve-headers range-uncompress nnheader-parse-head sort #[514 "\300\301H!\300\301H!V\207" [gnus-cloud-chunk-sequence 1] 6 "\n\n(fn H1 H2)"]] 7])#@15 

(fn STRING)
(defalias 'gnus-cloud-chunk-sequence #[257 "\300\301\"\203 \302\303\304\"!\207\305\207" [string-match "sequence: \\([0-9]+\\)" string-to-number match-string 1 0] 5 (#$ . 12538)])#@16 

(fn HEADERS)
(defalias 'gnus-cloud-prune-old-chunks #[257 "\302!\303\203  \211\204  \304\305@\306H\"\203 \307\262A\262\202 \205/ \310\311\312\237\"\313	\"\"\207" [gnus-cloud-group-name gnus-cloud-method reverse nil string-match "type: :full" 1 t gnus-request-expire-articles mapcar #[257 "\211\300H\207" [0] 3 "\n\n(fn H)"] gnus-group-full-name] 8 (#$ . 12739)])#@95 Download the Gnus Cloud data and install it.
Starts at `gnus-cloud-sequence' in the sequence.
(defalias 'gnus-cloud-download-all-data #[0 "\300\301!\207" [gnus-cloud-download-data t] 2 (#$ . 13120) nil])#@320 Download the Gnus Cloud data and install it if UPDATE is t.
When SEQUENCE-OVERRIDE is given, start at that sequence number
instead of `gnus-cloud-sequence'.

When UPDATE is t, returns the result of calling `gnus-cloud-update-all'.
Otherwise, returns the Gnus Cloud data chunks.

(fn &optional UPDATE SEQUENCE-OVERRIDE)
(defalias 'gnus-cloud-download-data #[512 "\304\304\305 \211\203Q \211@\306\307H!\211\206 \206 \310V\203I \311\312\313	\"\307H\"\203< \314HB\262]\262\210\202J \315\307\316\314H	\307H%\210\210A\266\202\202 \210\203{ \317\237\n\"\210rq\210eb\210\320\321\304\322#\203z \323 \210\324 B\262\307y\210\202c )\203\206 \325\326\"\207\207" [gnus-cloud-sequence gnus-cloud-storage-method gnus-cloud-group-name nntp-server-buffer nil gnus-cloud-available-chunks gnus-cloud-chunk-sequence 1 -1 string-match format "storage-method: %s" 0 gnus-message "Skipping article %s because it didn't match the Gnus Cloud method %s: %s" nnimap-request-articles re-search-forward "^Gnus-Cloud-Version " t beginning-of-line gnus-cloud-parse-chunk mapcar gnus-cloud-update-all] 15 (#$ . 13330)])#@15 

(fn SERVER)
(defalias 'gnus-cloud-server-p #[257 "\211\235\207" [gnus-cloud-covered-servers] 3 (#$ . 14451)])#@15 

(fn SERVER)
(defalias 'gnus-cloud-host-server-p #[257 "\232\207" [gnus-cloud-method] 3 (#$ . 14569)])#@15 

(fn SERVER)
(defalias 'gnus-cloud-host-acceptable-method-p #[257 "\211\211\203 \211<\203 \211\206)\306\"A\206)\211\307\232\203  	\206\306\n\"A\206\306\"A\206\f\211\203M \310\311@@@@@A@#\232\204M \211A\262\2021 \211@@\262\206\211\203p \310\311@@@A@#\232\204p \211A\262\202V \211@\262\206A\312\211\203\211A\262\242\3138\262\262;\204| \312\314C\3152\211\242\206\243 	\240\210\204\261 \316\317\320\"\"\210\nD\211\203\311 \211@\316\317\321\"\"\210A\266\202\202\264 \210\211\242A@\322\235\203\334 \310\323\242@\"\202\346 \310\311\242@\242A@#\211\242B\204 \211\235\204 \306@\"\204 \211B\266\2020\266\204\232\203| \262\312\262\202| \266\202\211\203&\306\"\204&BB\211\262\262\242\324=\207" [gnus-server-method-cache gnus-select-method gnus-server-alist gnus-predefined-server-alist gnus-opened-servers gnus-secondary-select-methods assoc "native" format "%s:%s" nil 4 t server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil "") "%s" nnimap gnus-newsrc-alist] 16 (#$ . 14680)])#@56 Collect all the Gnus newsrc data in a portable format.
(defalias 'gnus-cloud-collect-full-newsrc #[0 "\305A\211\203\234 \211@\306\307@!\305\211C\3102~ \211\242\206 	\240\210\204+ \311\312\313\"\n\"\210\fD\211\203C \211@\311\312\314\"\"\210A\266\202\202. \210\211\242A@\315\235\203V \316\317\242@\"\202` \316\320\242@\242A@#\211\242B\204z \211\n\235\204z \321@\n\"\204z \211\nB\266\2020\266\204!\203\225 \322\323\324@\325\326\327\305!\257B\262A\266\202\202 \210\207" [gnus-newsrc-alist gnus-select-method gnus-server-method-cache gnus-server-alist gnus-predefined-server-alist nil gnus-cloud-server-p gnus-find-method-for-group server-name mapc make-closure #[257 "\211A\300\242\232\205 \301\302@\"\207" [V0 throw server-name] 4 "\n\n(fn NAME-METHOD)"] #[257 "\302A\300\242\"\205 \211	\235\204 \211	B\303\304@\"\207" [V0 gnus-server-method-cache gnus-methods-equal-p throw server-name] 4 "\n\n(fn NAME-METHOD)"] (nil "") format "%s" "%s:%s" assoc :type :newsrc-data :name :contents :timestamp gnus-cloud-timestamp] 14 (#$ . 15978)])
(provide 'gnus-cloud)
