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


#@77 List of allowed paths to modify when guarded.

Do not modify this variable.
(byte-code "\302\303!\210\302\304!\210\305\306\"\203 	\307W\203 \302\310\311\312#\210\313\314\315\316#\210\313\314\317\320#\207" [emacs-version emacs-major-version require s dash version<= "28.1" 29 f-shortdoc nil t put f-guard-error error-conditions (error f-guard-error) error-message "Destructive operation outside sandbox"] 4)
(defvar f--guard-paths nil (#$ . 83))#@123 If PATH is allowed to be modified, yield BODY.

If PATH is not allowed to be modified, throw error.

(fn PATH &rest BODY)
(defalias 'f--destructive '(macro . #[385 "\300\301\300\302\303\304\305E\306\305	EE\307BB\310B\311\312\313	\314BBEFBBB\207" [if f--guard-paths --any? or f-same-p it f-ancestor-of-p (f--guard-paths) progn signal 'f-guard-error list (f--guard-paths)] 12 (#$ . 537)]))#@216 Join ARGS to a single path.

Be aware if one of the arguments is an absolute path, `f-join'
will discard all the preceeding arguments and make this absolute
path the new root of the generated path.

(fn &rest ARGS)#@12 

(fn ARG)
(byte-code "\300\301\302\303#\300\207" [function-put f--destructive lisp-indent-function 1] 4)
(defalias 'f-join #[128 "\300C\301@!C\302\303\304#\"\210\211\242\203 \305\242!\207\242\207" [nil f-relative-p mapc make-closure #[257 "\301\211\242\204\n \202 \302!\203 \300\303\240\210\202 \304\301\242\"\240\207" [V0 V1 f-absolute-p nil f-expand] 5 (#$ . 1157)] f-relative] 8 (#$ . 937)])#@57 Split PATH and return list containing parts.

(fn PATH)
(defalias 'f-split #[257 "\300\301 \302#\303\304\"\301 \230\203 \301 B\211\262\207\207" [split-string f-path-separator omit-nulls s-left 1] 5 (#$ . 1572)])#@274 Expand PATH relative to DIR (or `default-directory').
PATH and DIR can be either a directory names or directory file
names.  Return a directory name if PATH is a directory name, and
a directory file name otherwise.  File name handlers are
ignored.

(fn PATH &optional DIR)
(defalias 'f-expand #[513 "\301\302\")\207" [file-name-handler-alist nil expand-file-name] 5 (#$ . 1795)])#@37 Return the name of PATH.

(fn PATH)
(defalias 'f-filename #[257 "\300\301!!\207" [file-name-nondirectory directory-file-name] 4 (#$ . 2183)])#@49 Return the parent directory to PATH.

(fn PATH)
(defalias 'f-parent 'f-dirname)
(defalias 'f-dirname #[257 "\301\302\303\"!!\304\"?\205 \305!\203 \306!\207\302!\207" [default-directory file-name-directory directory-file-name f-expand f-same-p f-relative-p f-relative] 6 (#$ . 2331)])#@66 Return the deepest common parent directory of PATHS.

(fn PATHS)
(defalias 'f-common-parent #[257 "\211\204 \300\207\211A\204 \301@!\207\302\303\"\211@@\300@\203V \304\305\300\203> \210\242\211@\232\211\262\203> T\262A\262\202! \266\203V \302\306\"\262B\262@@\262\202 \211\204\\ \307\207\211G\310U\203m \311@!\203m \312 \207\313\314\237\"\315P\207" [nil f-parent -map f-split t 0 cdr "" 1 f-root-p f-root apply f-join "/"] 10 (#$ . 2629)])#@93 Return PATH but with EXT as the new extension.
EXT must not be nil or empty.

(fn PATH EXT)
(byte-code "\300\301\302\"\210\300\303\304\"\207" [defalias f-ext file-name-extension f-no-ext file-name-sans-extension] 3)
(defalias 'f-swap-ext #[514 "\300!\203\n \301\302!\207\303!\304Q\207" [s-blank-p error "Extension cannot be empty or nil" f-no-ext "."] 5 (#$ . 3100)])#@70 Return the name of PATH, excluding the extension of file.

(fn PATH)
(defalias 'f-base #[257 "\300\301!!\207" [f-no-ext f-filename] 4 (#$ . 3476)])#@41 Return long version of PATH.

(fn PATH)
(byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\207" [defalias f-relative file-relative-name f-short abbreviate-file-name f-abbrev] 3)
(defalias 'f-long #[257 "\300!\207" [f-expand] 3 (#$ . 3630)])#@131 Append slash to PATH unless one already.

Some functions, such as `call-process' requires there to be an
ending slash.

(fn PATH)
(defalias 'f-canonical 'file-truename)
(defalias 'f-slash #[257 "\300!\203\n \301!\207\207" [f-dir-p file-name-as-directory] 3 (#$ . 3890)])#@61 Return absolute path to PATH, with ending slash.

(fn PATH)
(defalias 'f-full #[257 "\300\301!!\207" [f-slash f-long] 4 (#$ . 4168)])#@61 Helper for `f-uniquify' and `f-uniquify-alist'.

(fn PATHS)#@11 

(fn IT)
(defalias 'f--uniquify #[257 "\211G\300\301\"\302\303\"GU\204! \302\303\304\305\300\306\"\"\"\262\202\n \207" [mapcar #[257 "\211\300!B\207" [f-filename] 4 (#$ . 4373)] -group-by cdr apply append #[257 "\211A\211G\300V\203 \301\302\"\207\207" [1 mapcar #[257 "\211@\300\301A@\"!\302 AQB\207" [f-filename s-chop-suffix f-path-separator] 6 (#$ . 4373)]] 5 (#$ . 4373)]] 11 (#$ . 4308)])#@89 Return unique suffixes of FILES.

This function expects no duplicate paths.

(fn FILES)
(defalias 'f-uniquify #[257 "\300\301\302!\"\207" [-map car f--uniquify] 5 (#$ . 4786)])#@112 Return alist mapping FILES to unique suffixes of FILES.

This function expects no duplicate paths.

(fn FILES)
(defalias 'f-uniquify-alist #[257 "\300\301\302!\"\207" [-map cadr f--uniquify] 5 (#$ . 4970)])#@196 Read binary data from PATH.

Return the binary data as unibyte string.  The optional second
and third arguments BEG and END specify what portion of the file
to read.

(fn PATH &optional BEG END)
(defalias 'f-read-bytes #[769 "\301\302\303\"r\211q\210\304\305\"\216\306\307!\210\310\311\307$\210\312ed\"*\207" [buffer-file-coding-system generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] set-buffer-multibyte nil binary insert-file-contents-literally buffer-substring-no-properties] 9 (#$ . 5184)])#@139 Read text with PATH, using CODING.

CODING defaults to `utf-8'.

Return the decoded text as multibyte string.

(fn PATH &optional CODING)
(defalias 'f-read 'f-read-text)
(defalias 'f-read-text #[513 "\300\301!\206	 \302\"\207" [decode-coding-string f-read-bytes utf-8] 5 (#$ . 5754)])#@167 Write TEXT with CODING to PATH.

TEXT is a multibyte string.  CODING is a coding system to encode
TEXT with.  PATH is a file name to write to.

(fn TEXT CODING PATH)
(defalias 'f-write 'f-write-text)
(defalias 'f-write-text #[771 "\300\301\"\"\207" [f-write-bytes encode-coding-string] 7 (#$ . 6047)])#@50 Determine whether S is a unibyte string.

(fn S)
(defalias 'f-unibyte-string-p #[257 "\300!?\207" [multibyte-string-p] 3 (#$ . 6357)])#@105 Write binary DATA to PATH.

DATA is a unibyte string.  PATH is a file name to write to.

(fn DATA PATH)
(defalias 'f-write-bytes #[514 "\300\301#\207" [f--write-bytes nil] 6 (#$ . 6499)])#@97 Append TEXT with CODING to PATH.

If PATH does not exist, it is created.

(fn TEXT CODING PATH)
(defalias 'f-append 'f-append-text)
(defalias 'f-append-text #[771 "\300\301\"\"\207" [f-append-bytes encode-coding-string] 7 (#$ . 6694)])#@85 Append binary DATA to PATH.

If PATH does not exist, it is created.

(fn DATA PATH)
(defalias 'f-append-bytes #[514 "\300\301#\207" [f--write-bytes :append] 6 (#$ . 6938)])#@123 Write binary DATA to FILENAME.
If APPEND is non-nil, append the DATA to the existing contents.

(fn DATA FILENAME APPEND)
(defalias 'f--write-bytes #[771 "\203V \304\305\304\203- \210\242\306\"\206 \307\"\211\262\204- T\262A\262\202 \266\203O \310!\204? \311\312\310D\"\210\313\304\211\314\304\315%+\304\207\311\316D\"\207\310!\204c \311\312\310D\"\210\313\304\211\314\304\315%+\304\207" [f--guard-paths write-region-post-annotation-function write-region-annotate-functions coding-system-for-write nil 0 f-same-p f-ancestor-of-p f-unibyte-string-p signal wrong-type-argument binary write-region :silent f-guard-error] 11 (#$ . 7119)])#@432 Create directories DIRS.

DIRS should be a successive list of directories forming together
a full path.  The easiest way to call this function with a fully
formed path is using `f-split' alongside it:

    (apply #\='f-mkdir (f-split "path/to/file"))

Although it works sometimes, it is not recommended to use fully
formed paths in the function. In this case, it is recommended to
use `f-mkdir-full-path' instead.

(fn &rest DIRS)#@12 

(fn DIR)
(defalias 'f-mkdir #[128 "\300C\301\302\303\"\"\207" [nil -each make-closure #[257 "\300\302\300\242\"\240\210\303\300\242!?\205S 	\203O \304	\305\304\203= \210\242\306\300\242\"\206, \307\300\242\"\211\262\204= T\262A\262\202 \266\203G \310\300\242!\207\311\312\300\242	D\"\207\310\300\242!\207" [V0 f--guard-paths f-expand f-directory-p nil 0 f-same-p f-ancestor-of-p make-directory signal f-guard-error] 8 (#$ . 8232)]] 7 (#$ . 7796)])#@169 Create DIR from a full path.

This function is similar to `f-mkdir' except it can accept a full
path instead of requiring several successive directory names.

(fn DIR)
(defalias 'f-mkdir-full-path #[257 "\300\301\302!\"\207" [apply f-mkdir f-split] 5 (#$ . 8702)])#@130 Delete PATH, which can be file or directory.

If FORCE is t, a directory will be deleted recursively.

(fn PATH &optional FORCE)
(defalias 'f-delete #[513 "\203N \301\302\301\203- \210\242\303\"\206 \304\"\211\262\204- T\262A\262\202 \266\203G \305!\204> \306!\203B \307!\207\310\"\207\311\312D\"\207\305!\204Z \306!\203^ \307!\207\310\"\207" [f--guard-paths nil 0 f-same-p f-ancestor-of-p f-file-p f-symlink-p delete-file delete-directory signal f-guard-error] 9 (#$ . 8974)])#@57 Create a symlink to SOURCE from PATH.

(fn SOURCE PATH)
(defalias 'f-symlink #[514 "\203> \301\302\301\203- \210\242\303\"\206 \304\"\211\262\204- T\262A\262\202 \266\2037 \305\"\207\306\307D\"\207\305\"\207" [f--guard-paths nil 0 f-same-p f-ancestor-of-p make-symbolic-link signal f-guard-error] 9 (#$ . 9487)])#@88 Move or rename FROM to TO.
If TO is a directory name, move FROM into TO.

(fn FROM TO)
(defalias 'f-move #[514 "\203? \301\302\301\203- \210\242\303\"\206 \304\"\211\262\204- T\262A\262\202 \266\2038 \305\306#\207\307\310D\"\207\305\306#\207" [f--guard-paths nil 0 f-same-p f-ancestor-of-p rename-file t signal f-guard-error] 9 (#$ . 9829)])#@141 Copy file or directory FROM to TO.
If FROM names a directory and TO is a directory name, copy FROM
into TO as a subdirectory.

(fn FROM TO)
(defalias 'f-copy #[514 "\203l \302\303\302\203- \210\242\304\"\206 \305\"\211\262\204- T\262A\262\202 \266\203e \306!\203= \307\"\207	\310V\203H \311\"\207\312!\203` \313\314\315!\"\210\316\317!\"\311\"\207\311\"\207\320\321D\"\207\306!\203w \307\"\207	\310V\203\202 \311\"\207\312!\203\232 \313\314\315!\"\210\316\317!\"\311\"\207\311\"\207" [f--guard-paths emacs-major-version nil 0 f-same-p f-ancestor-of-p f-file-p copy-file 23 copy-directory f-dir-p apply f-mkdir f-split f-expand f-filename signal f-guard-error] 9 (#$ . 10201)])#@65 Copy contents in directory FROM, to directory TO.

(fn FROM TO)
(defalias 'f-copy-contents #[514 "\300!\204 \301\302\"\210\303!\204 \301\304\"\210\305!\306\2051 \211A\262\242\307\310!\"\266T\202 \207" [f-exists-p error "Cannot copy contents to non existing directory %s" f-dir-p "Cannot copy contents as %s is a file" f-entries 0 f-copy file-name-as-directory] 9 (#$ . 10929)])#@79 Update PATH last modification date or create if it does not exist.

(fn PATH)
(defalias 'f-touch #[257 "\203H \301\302\301\203- \210\242\303\"\206 \304\"\211\262\204- T\262A\262\202 \266\203A \305!\203< \306!\207\307\310\"\207\311\312D\"\207\305!\203R \306!\207\307\310\"\207" [f--guard-paths nil 0 f-same-p f-ancestor-of-p f-file-p set-file-times f-write-bytes "" signal f-guard-error] 8 (#$ . 11327)])#@58 Return t if PATH is symlink, false otherwise.

(fn PATH)
(byte-code "\300\301\302\"\210\300\303\302\"\210\300\304\305\"\210\300\306\305\"\210\300\307\305\"\210\300\310\305\"\210\300\311\312\"\210\300\313\312\"\207" [defalias f-exists-p file-exists-p f-exists? f-directory-p file-directory-p f-directory? f-dir-p f-dir? f-file-p file-regular-p f-file?] 3)
(defalias 'f-symlink-p #[257 "\300!??\207" [file-symlink-p] 3 (#$ . 11762)])#@59 Return t if PATH is relative, false otherwise.

(fn PATH)
(byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\210\300\306\307\"\210\300\310\307\"\210\300\311\312\"\210\300\313\312\"\210\300\314\315\"\210\300\316\315\"\207" [defalias f-symlink? f-symlink-p f-readable-p file-readable-p f-readable? f-writable-p file-writable-p f-writable? f-executable-p file-executable-p f-executable? f-absolute-p file-name-absolute-p f-absolute?] 3)
(defalias 'f-relative-p #[257 "\300!?\207" [f-absolute-p] 3 (#$ . 12200)])#@65 Return t if PATH is root directory, false otherwise.

(fn PATH)
(defalias 'f-relative? 'f-relative-p)
(defalias 'f-root-p #[257 "\300!?\207" [f-parent] 3 (#$ . 12727)])#@279 Return t if extension of PATH is EXT, false otherwise.

If EXT is nil or omitted, return t if PATH has any extension,
false otherwise.

The extension, in a file name, is the part that follows the last
'.', excluding version numbers and backup suffixes.

(fn PATH &optional EXT)
(defalias 'f-root? 'f-root-p)
(defalias 'f-ext-p #[513 "\211\203\n \300!\230\207\300!??\207" [f-ext] 4 (#$ . 12903)])#@80 Return t if PATH-A and PATH-B are references to same file.

(fn PATH-A PATH-B)
(byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\207" [defalias f-ext? f-ext-p f-equal-p f-same-p f-equal?] 3)
(defalias 'f-same-p #[514 "\300\301\302!!!\300\301\302!!!\232\207" [f-canonical directory-file-name f-expand] 7 (#$ . 13307)])#@61 Return t if PATH-A is parent of PATH-B.

(fn PATH-A PATH-B)
(defalias 'f-same? 'f-same-p)
(defalias 'f-parent-of-p #[514 "\300!\211\205 \301\"\207" [f-parent f-same-p] 6 (#$ . 13645)])#@60 Return t if PATH-A is child of PATH-B.

(fn PATH-A PATH-B)
(defalias 'f-parent-of? 'f-parent-of-p)
(defalias 'f-child-of-p #[514 "\300!\211\205 \301\"\207" [f-parent f-same-p] 6 (#$ . 13839)])#@63 Return t if PATH-A is ancestor of PATH-B.

(fn PATH-A PATH-B)
(defalias 'f-child-of? 'f-child-of-p)
(defalias 'f-ancestor-of-p #[514 "\300\"?\205 \301\302!\302!\"\207" [f-same-p string-prefix-p f-full] 6 (#$ . 14041)])#@64 Return t if PATH-A is desendant of PATH-B.

(fn PATH-A PATH-B)
(defalias 'f-ancestor-of? 'f-ancestor-of-p)
(defalias 'f-descendant-of-p #[514 "\300\"?\2055 \301\302!!\301\302!!\303\2033 \211\2033 @@\230\203. A\262A\262\202 \210\304\202 \266\202\207" [f-same-p f-split f-full t nil] 7 (#$ . 14270)])#@764 Return t if PATH is hidden, nil otherwise.

BEHAVIOR controls when a path should be considered as hidden
depending on its value.  Beware, if PATH begins with "./", the
current dir "." will not be considered as hidden.

When BEHAVIOR is nil, it will only check if the path begins with
a dot, as in .a/b/c, and return t if there is one.  This is the
old behavior of f.el left as default for backward-compatibility
purposes.

When BEHAVIOR is ANY, return t if any of the elements of PATH is
hidden, nil otherwise.

When BEHAVIOR is LAST, return t only if the last element of PATH
is hidden, nil otherwise.

TODO: Hidden directories and files on Windows are marked
differently than on *NIX systems.  This should be properly
implemented.

(fn PATH &optional BEHAVIOR)#@12 

(fn ELT)
(defalias 'f-descendant-of? 'f-descendant-of-p)
(defalias 'f-hidden-p #[513 "\300!\301\302\267\202 \303\"\207\304\305!\"\207\204 \211@!\207\306\307\"\207" [f-split #[257 "\211\300\301O\302\230\205 \211\303\235?\207" [0 1 "." ("." "..")] 4 (#$ . 15356)] #s(hash-table test eq purecopy t data (any 10 last 15)) -any apply last error "Invalid value %S for argument BEHAVIOR"] 8 (#$ . 14588)])#@158 If PATH is a file, return t if the file in PATH is empty, nil otherwise.
If PATH is directory, return t if directory has no files, nil otherwise.

(fn PATH)
(defalias 'f-hidden? 'f-hidden-p)
(defalias 'f-empty-p #[257 "\300!\203 \301\302\303#?\207\304!\305U\207" [f-directory-p f-files nil t f-size 0] 5 (#$ . 15775)])#@135 Return size of PATH.

If PATH is a file, return size of that file.  If PATH is
directory, return sum of all files in PATH.

(fn PATH)
(defalias 'f-empty? 'f-empty-p)
(defalias 'f-size #[257 "\300!\203 \301\302\303\304\305\306#\"!\207\307\310!8\207" [f-directory-p -sum -map f-size f-files nil t 7 file-attributes] 8 (#$ . 16104)])#@195 Return the depth of PATH.

At first, PATH is expanded with `f-expand'.  Then the full path is used to
detect the depth.
'/' will be zero depth,  '/usr' will be one depth.  And so on.

(fn PATH)
(defalias 'f-depth #[257 "\300\301!!GS\207" [f-split f-expand] 4 (#$ . 16445)])#@682 Helper function, get time-related information for PATH.
Helper for `f-change-time', `f-modification-time',
`f-access-time'.  It is meant to be called internally, avoid
calling it manually unless you have to.

If TIMESTAMP-P is non-nil, return the date requested as a
timestamp.  If the value is \='seconds, return the timestamp as
a timestamp with a one-second precision.  Otherwise, the
timestamp is returned in a (TICKS . HZ) format, see
`current-time' if using Emacs 29 or newer.

Otherwise, if TIMESTAMP-P is nil, return the default style of
`current-time'.

FN is the function specified by the caller function to retrieve
the correct data from PATH.

(fn PATH TIMESTAMP-P FN)
(defalias 'f--get-time #[771 "?\211\302!!\303\304	\"\305=\203 \211\203 @A\245\202j \305=\204( \211\2040 \2044 \211\2044 \202j \305=\203L \211\204L @\306\307\310\"_A@\\\202j \205j \211?\205j @\306\307\310\"_\311_A@\311_\\\3128\\\311B)\207" [current-time-list emacs-version file-attributes version<= "29" seconds expt 2 16 1000 3] 9 (#$ . 16726)])#@241 Return the last status change time of PATH.

The status change time (ctime) of PATH in the same format as
`current-time'.  For details on TIMESTAMP-P and the format of the
returned value, see `f--get-time'.

(fn PATH &optional TIMESTAMP-P)#@10 

(fn F)
(defalias 'f-change-time #[513 "\300\301\302!\203 \302\202 \303#\207" [f--get-time fboundp file-attribute-status-change-time #[257 "\3008\207" [6] 3 (#$ . 18022)]] 7 (#$ . 17777)])#@238 Return the last modification time of PATH.
The modification time (mtime) of PATH in the same format as
`current-time'.  For details on TIMESTAMP-P and the format of the
returned value, see `f--get-time'.

(fn PATH &optional TIMESTAMP-P)
(defalias 'f-modification-time #[513 "\300\301\302!\203 \302\202 \303#\207" [f--get-time fboundp file-attribute-modification-time #[257 "\3008\207" [5] 3 (#$ . 18022)]] 7 (#$ . 18223)])#@229 Return the last access time of PATH.
The access time (atime) of PATH is in the same format as
`current-time'.  For details on TIMESTAMP-P and the format of the
returned value, see `f--get-time'.

(fn PATH &optional TIMESTAMP-P)
(defalias 'f-access-time #[513 "\300\301\302!\203 \302\202 \303#\207" [f--get-time fboundp file-attribute-access-time #[257 "\3008\207" [4] 3 (#$ . 18022)]] 7 (#$ . 18657)])#@92 Three way comparison.

Return -1 if A < B.
Return 0 if A = B.
Return 1 if A > B.

(fn A B)
(defalias 'f--three-way-compare #[514 "W\203 \300\207U\203 \301\207V\205 \302\207" [-1 0 1] 4 (#$ . 19069)])#@475 Three-way comparison of the date of FILE and OTHER.

This function can return three values:
* 1 means FILE is newer than OTHER
* 0 means FILE and NEWER share the same date
* -1 means FILE is older than OTHER

The statistics used for the date comparison depends on METHOD.
When METHOD is null, compare their modification time.  Otherwise,
compare their change time when METHOD is \='change, or compare
their last access time when METHOD is \='access.

(fn FILE OTHER METHOD)#@16 

(fn ACC ELT)
(defalias 'f--date-compare #[771 "\211\300\267\202 \301\202 \302\202 \303\202 \304\305\"\211!!\306\"\307\310\311#\207" [#s(hash-table test eq purecopy t data (change 6 access 10 nil 14)) f-change-time f-access-time f-modification-time error "Unknown method %S" -zip-pair -reduce-from #[514 "\300U\203 \301@A\"\207\207" [0 f--three-way-compare] 5 (#$ . 19763)] 0] 11 (#$ . 19284)])#@121 Compare if FILE is older than OTHER.

For more info on METHOD, see `f--date-compare'.

(fn FILE OTHER &optional METHOD)
(defalias 'f-older-p #[770 "\300#\301W\207" [f--date-compare 0] 7 (#$ . 20181)])#@121 Compare if FILE is newer than OTHER.

For more info on METHOD, see `f--date-compare'.

(fn FILE OTHER &optional METHOD)
(defalias 'f-older? 'f-older-p)
(defalias 'f-newer-p #[770 "\300#\301V\207" [f--date-compare 0] 7 (#$ . 20391)])#@152 Check if FILE and OTHER share the same access or modification time.

For more info on METHOD, see `f--date-compare'.

(fn FILE OTHER &optional METHOD)
(defalias 'f-newer? 'f-newer-p)
(defalias 'f-same-time-p #[770 "\300#\301U\207" [f--date-compare 0] 7 (#$ . 20633)])#@27 Return path to this file.
(defalias 'f-same-time? 'f-same-time-p)
(defalias 'f-this-file #[0 "\203 	\207\303\302!\203 \n\203 \n\207\304 \207" [load-in-progress load-file-name byte-compile-current-file boundp buffer-file-name] 2 (#$ . 20909)])#@51 A variable to cache result of `f-path-separator'.
(defvar f--path-separator nil (#$ . 21161))#@24 Return path separator.
(defalias 'f-path-separator #[0 "\206 \301\302\303\"\304\305O\211\207" [f--path-separator f-join "x" "y" 1 2] 3 (#$ . 21260)])#@52 Find PATTERN in PATH.

(fn PATTERN &optional PATH)
(defalias 'f-glob #[513 "\301\302\206 \"!\207" [default-directory file-expand-wildcards f-join] 6 (#$ . 21418)])#@23 

(fn PATH RECURSIVE)#@13 

(fn FILE)#@14 

(fn ENTRY)
(defalias 'f--collect-entries #[514 "\300C\301\302\303\304\"\"\203 \305\306\307#\"\210\202 \240\210\242\207" [nil -reject #[257 "\300!\301\235\207" [f-filename ("." "..")] 3 (#$ . 21618)] directory-files t mapc make-closure #[257 "\302!\203 \300\300\242B\240\207\303!\205- \300\300\242B\240\210\304!\203+ \300\305\300\242\306\301\"\"\240\207\300\242\207" [V0 V1 f-file-p f-directory-p f-readable-p append f--collect-entries] 7 (#$ . 21635)]] 9 (#$ . 21591)])#@71 Anaphoric version of `f-entries'.

(fn PATH BODY &optional RECURSIVE)
(defalias 'f--entries '(macro . #[770 "\300\301\302\303\304EEF\207" [f-entries lambda (path) let ((it path))] 10 (#$ . 22131)]))#@247 Find all files and directories in PATH.

FN - called for each found file and directory.  If FN returns a thruthy
value, file or directory will be included.
RECURSIVE - Search for files and directories recursive.

(fn PATH &optional FN RECURSIVE)
(defalias 'f-entries #[769 "\300\"\203 \301\"\207\207" [f--collect-entries -select] 7 (#$ . 22340)])#@75 Anaphoric version of `f-directories'.

(fn PATH BODY &optional RECURSIVE)
(defalias 'f--directories '(macro . #[770 "\300\301\302\303\304EEF\207" [f-directories lambda (path) let ((it path))] 10 (#$ . 22698)]))#@83 Find all directories in PATH.  See `f-entries'.

(fn PATH &optional FN RECURSIVE)
(defalias 'f-directories #[769 "\300\301\302\"\"\203 \300\"\207\207" [-select f-directory-p f--collect-entries] 8 (#$ . 22918)])#@69 Anaphoric version of `f-files'.

(fn PATH BODY &optional RECURSIVE)
(defalias 'f--files '(macro . #[770 "\300\301\302\303\304EEF\207" [f-files lambda (path) let ((it path))] 10 (#$ . 23140)]))#@77 Find all files in PATH.  See `f-entries'.

(fn PATH &optional FN RECURSIVE)
(defalias 'f-files #[769 "\300\301\302\"\"\203 \300\"\207\207" [-select f-file-p f--collect-entries] 8 (#$ . 23342)])#@70 Anaphoric version of `f-traverse-upwards'.

(fn BODY &optional PATH)
(defalias 'f--traverse-upwards '(macro . #[513 "\300\301\302\303\304EEE\207" [f-traverse-upwards lambda (dir) let ((it dir))] 8 (#$ . 23547)]))#@224 Traverse up as long as FN return nil, starting at PATH.

If FN returns a non-nil value, the path sent as argument to FN is
returned.  If no function callback return a non-nil value, nil is
returned.

(fn FN &optional PATH)
(defalias 'f-traverse-upwards #[513 "\211\204 \210\301!\203 \302!\262!\203 \207\303!?\205% \304\305!\"\207" [default-directory f-relative-p f-expand f-root-p f-traverse-upwards f-parent] 6 (#$ . 23769)])#@23 Return absolute root.
(defalias 'f-root #[0 "\300\301!\207" [f-traverse-upwards f-root-p] 2 (#$ . 24213)])#@97 Only allow PATH-OR-PATHS and descendants to be modified in BODY.

(fn PATH-OR-PATHS &rest BODY)
(defalias 'f-with-sandbox '(macro . #[385 "\300\301\302\303D\304DFDC\305\300\306BB\307BBE\207" [let paths if listp list unwind-protect ((f--guard-paths paths)) ((setq f--guard-paths nil))] 9 (#$ . 24325)]))
(byte-code "\300\301\302\303#\304\305!\207" [function-put f-with-sandbox lisp-indent-function 1 provide f] 4)
