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



(byte-code "\300\301!\210\300\302!\207" [require cl-lib subr-x] 2)
#@674 Decode a time value and bind it according to VARLIST, then eval BODY.

The value of the last form in BODY is returned.

Each element of the list VARLIST is a list of the form
(HIGH-SYMBOL LOW-SYMBOL MICRO-SYMBOL [PICO-SYMBOL [TYPE-SYMBOL]] TIME-VALUE).
The time value TIME-VALUE is decoded and the result is bound to
the symbols HIGH-SYMBOL, LOW-SYMBOL and MICRO-SYMBOL.
The optional PICO-SYMBOL is bound to the picoseconds part.

The optional TYPE-SYMBOL is bound to the type of the time value.
Type 0 is the cons cell (HIGH . LOW), type 1 is the list (HIGH
LOW), type 2 is the list (HIGH LOW MICRO), and type 3 is the
list (HIGH LOW MICRO PICO).

(fn VARLIST &rest BODY)
(defalias 'with-decoded-time-value '(macro . #[385 "\203A\211A\262\242\211A\262\242\211A\262\242\211A\262\242G\300X?\205* \211A\262\242G\301=?\2058 \211A\262\242@\302\303!\304\305\306\307BBD\310\311D\312\313\314BB\315	\316BBED\317D\304\320\321\322\323\f\324BBED\325\326\327\330\323\331BBDD\332\330\333BBD\257\334BBD\335DFD\n\336DD\n\n\257\205\240 C\205\250 C#\337\340D\341\342\336DE\337\341\342\343\fDE\203\364 \337\344\fD\305\342\345DE\205\336 \346B\"\305\342\347BB\205\357 \350B\"F\202\372 \f\205\372 \351E\305\342\352BB\205\353B\205\354B#FE\305\342\f\355BBBB\n\205-\n\356B\n\2056\n\357B#F\360BBF\207\341B\207" [2 1 make-symbol "time" let* append or ((current-time)) cond integerp list ash (-16) logand (65535) floatp usec * 1000000 mod (1) (ps (round (* 1000000 (mod usec 1)))) (us (floor usec)) lo floor (65536) hi (65536) ((if (eq ps 1000000) (progn (setq ps 0) (setq us (1+ us)) (if (eq us 1000000) (progn (setq us 0) (setq lo (1+ lo)) (if (eq lo 65536) (progn (setq lo 0) (setq hi (1+ hi)))))))) (list hi lo us ps)) t pop if consp progn setq car cdr cadr (3) (0) (2) (setq type 2) (0) (0) (1) (0) (0) (0) with-decoded-time-value] 27 (#$ . 152)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put with-decoded-time-value lisp-indent-function 1 put edebug-form-spec ((&rest (symbolp symbolp symbolp &or [symbolp symbolp form] [symbolp form] form)) body)] 5)
#@372 Encode HIGH, LOW, MICRO, and PICO into a time value of type TYPE.
Type 0 is the cons cell (HIGH . LOW), type 1 is the list (HIGH LOW),
type 2 is (HIGH LOW MICRO), and type 3 is (HIGH LOW MICRO PICO).

For backward compatibility, if only four arguments are given,
it is assumed that PICO was omitted and should be treated as zero.

(fn HIGH LOW MICRO PICO &optional TYPE)
(defalias 'encode-time-value #[1284 "\211\204\n \262\300\262\211\301\267\202# B\207D\207E\207F\207\302\207" [0 #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (0 16 1 20 2 24 3 29)) nil] 9 (#$ . 2319)])
(byte-code "\300\301\302\303#\210\300\304\302\303#\210\305\306\307\"\210\305\310\311\"\207" [make-obsolete encode-time-value nil "25.1" with-decoded-time-value autoload parse-time-string "parse-time" timezone-make-date-arpa-standard "timezone"] 4)
#@207 Parse a string DATE that represents a date-time and return a time value.
DATE should be in one of the forms recognized by `parse-time-string'.
If DATE lacks timezone information, GMT is assumed.

(fn DATE)
(defalias 'date-to-time #[257 "\3001 \301\302!!0\207\303\232\203 \304@A\"\207\3051& \301\302\306!!!0\207\211\232\2033 \304@A\"\207\307\310\"\207" [(error) encode-time parse-time-string (error "Specified time is not representable") signal (error) timezone-make-date-arpa-standard error "Invalid date: %s"] 7 (#$ . 3199)])
(byte-code "\300\301\302\"\210\300\303\304\"\207" [defalias time-to-seconds float-time seconds-to-time time-convert] 3)
#@44 Convert DAYS into a time value.

(fn DAYS)
(defalias 'days-to-time #[257 "\300\301_!\250\203 \211A:\203 \211A\302\241\210\207" [time-convert 86400 nil] 4 (#$ . 3864)])
#@106 Return the time elapsed since TIME.
TIME should be either a time value or a date-time string.

(fn TIME)
(defalias 'time-since #[257 "\211;\203\n \300!\262\301\302\"\207" [date-to-time time-subtract nil] 4 (#$ . 4043)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias subtract-time time-subtract nil make-obsolete "26.1"] 4)
#@176 Return the absolute date of DATE, a date-time string.
The absolute date is the number of days elapsed since the imaginary
Gregorian date Sunday, December 31, 1 BC.

(fn DATE)
(defalias 'date-to-day #[257 "\300\301!!\207" [time-to-days date-to-time] 4 (#$ . 4396)])
#@115 Return the number of days between DATE1 and DATE2.
DATE1 and DATE2 should be date-time strings.

(fn DATE1 DATE2)
(defalias 'days-between #[514 "\300!\300!Z\207" [date-to-day] 5 (#$ . 4669)])
#@45 Return t if YEAR is a leap year.

(fn YEAR)
(defalias 'date-leap-year-p #[257 "\211\300\246\301U\203 \211\302\246\301U?\206 \211\303\246\301U\207" [4 0 100 400] 3 (#$ . 4869)])
#@88 Return the day number within the year corresponding to the decoded time TIM.

(fn TIM)
(defalias 'time-date--day-in-year #[257 "\3008\3018\3028\303S_\\\304V\203+ \211\305\300_\\\306\245Z\262\307!\203+ \211T\262\207" [4 3 5 31 2 23 10 date-leap-year-p] 9 (#$ . 5054)])
#@73 Return the day number within the year corresponding to TIME.

(fn TIME)
(defalias 'time-to-day-in-year #[257 "\300\301!!\207" [time-date--day-in-year decode-time] 4 (#$ . 5339)])
#@177 The absolute date corresponding to TIME, a time value.
The absolute date is the number of days elapsed since the imaginary
Gregorian date Sunday, December 31, 1 BC.

(fn TIME)
(defalias 'time-to-days #[257 "\300!\3018\302\303!\304S_S\305\245S\306\245[S\307\245%\207" [decode-time 5 + time-date--day-in-year 365 4 100 400] 10 (#$ . 5526)])
#@92 Return the number of days represented by TIME.
Returns a floating point number.

(fn TIME)
(defalias 'time-to-number-of-days #[257 "\300!\301\245\207" [float-time 86400] 3 (#$ . 5878)])
#@137 Parse a string DATE that represents a date-time and return a time value.
If DATE is malformed, return a time value of zeros.

(fn DATE)
(defalias 'safe-date-to-time #[257 "\3001	 \301!0\207\210\302\207" [(error) date-to-time (0 0)] 3 (#$ . 6072)])
#@964 Use format control STRING to format the number SECONDS.
The valid format specifiers are:
%y is the number of (365-day) years.
%d is the number of days.
%h is the number of hours.
%m is the number of minutes.
%s is the number of seconds.
%z is a non-printing control flag (see below).
%% is a literal "%".

Upper-case specifiers are followed by the unit-name (e.g. "years").
Lower-case specifiers return only the unit.

"%" may be followed by a number specifying a width, with an
optional leading "." for zero-padding.  For example, "%.3Y" will
return something of the form "001 year".

The "%s" spec takes an additional optional parameter,
introduced by the "," character, to say how many decimals to
use.  "%,1s" means "use one decimal".

The "%z" specifier does not print anything.  When it is used, specifiers
must be given in order of decreasing size.  To the left of "%z", nothing
is output until the first non-zero unit is encountered.

(fn STRING SECONDS)
(defalias 'format-seconds #[514 "\301\302\303\304\211\211\211\211\211\211\211\211\211\211\305\306#\203\200 \301\225\262\307\310\"\262\n\311\230\204 \312\227\"\211\262\204@ \313\314\f\"\210\312\227\n\"\203P \313\315\f\"\210	@\316\230\203^ \303\262\202v \204v \310\n8\262\205q V\262\262		B\262	\202 \203\216 \203\216 \313\317!\210\247\204\232 \320!\262\321\322\"\262\323!\262\f\211\203\217\211@\211@\262\211A@\262\3108\262\305\324\325\"\"\203\210\f\316\230\203\347 \326\327\330\206\334 \301\225\301\224^\304O#\262\202\210\331\"\262_Z\262\204\301U?\205\301\224\262\332\324\307\310\"\203G\311\307\322\"\2058\307\322\"\301\234\333U\2033\334\307\322\"\322\304OP\2028\307\322\"\335\307\310\"\322\304OP\336R\202O\311\307\322\"\337Q\322U\203^\\\202`\307\340\"\230\203o\330\202\200\324\341\f\322U\203~\330\202\342##\303\211$\262A\266\202\202\251 \210)\266\343\344\311#\207" [case-fold-search 0 (("y" "year" 31536000) ("d" "day" 86400) ("h" "hour" 3600) ("m" "minute" 60) ("s" "second" 1) ("z")) t nil string-match "%\\.?[0-9]*\\(,[0-9]\\)?\\(.\\)" match-string 2 "%" assoc error "Bad format specifier: `%s'" "Multiple instances of specifier: `%s'" "z" "Units are not in decreasing order of size" float-time mod 1 round format "%%\\(\\.?[0-9]+\\)?\\(,[0-9]+\\)?\\(%s\\)" replace-regexp-in-string "%z" "" floor replace-match 46 "0" "." "f%s" "d%s" 3 " %s%s" "s" string-replace "%%"] 27 (#$ . 6328)])
#@54 Formatting used by the function `seconds-to-string'.
(defvar seconds-to-string (byte-code "\300\301\302E\303\304\300E\305\306\307E\310\311\312E\313\314\315E\316\317\320E\257\207" [1 "ms" 0.001 100 "s" 6000 "m" 60.0 108000 "h" 3600.0 34560000 "d" 86400.0 nil "y" 31557600.0] 8) (#$ . 8822))
#@69 Convert the time interval in seconds to a short string.

(fn DELAY)
(defalias 'seconds-to-string #[257 "\301V\203 \302\300[!P\207\211\301U\203 \303\207\304\211A\262\242\211\262@\203+ \211@X\204 \305\306AA@\245\"A@P\207" [seconds-to-string 0 "-" "0s" nil format "%.2f"] 7 (#$ . 9119)])
#@55 The number of days in MONTH in YEAR.

(fn YEAR MONTH)
(defalias 'date-days-in-month #[514 "\211\247\203 \300X\203 \211\301X\204 \302\303\"\210\211\304U\203& \305!\203$ \306\207\307\207\211\310>\203. \311\207\312\207" [1 12 error "Month %s is invalid" 2 date-leap-year-p 29 28 (1 3 5 7 8 10 12) 31 30] 5 (#$ . 9423)])
#@172 Convert a YEAR/ORDINAL to the equivalent `decoded-time' structure.
ORDINAL is the number of days since the start of the year, with
January 1st being 1.

(fn YEAR ORDINAL)
(defalias 'date-ordinal-to-time #[514 "\300\301\"V\203 \301\"Z\262\211T\262\202 \302\211\211\302\211\211\257	\207" [1 date-days-in-month nil] 12 (#$ . 9753)])
#@912 Add DELTA to TIME, both of which are `decoded-time' structures.
TIME should represent a time, while DELTA should have non-nil
entries only for the values that should be altered.

For instance, if you want to "add two months" to TIME, then
leave all other fields but the month field in DELTA nil, and make
the month field 2.  The values in DELTA can be negative.

If applying a month/year delta leaves the time spec invalid, it
is decreased to be valid ("add one month" to January 31st 2019
will yield a result of February 28th 2019 and "add one year" to
February 29th 2020 will result in February 28th 2021).

Fields are added in a most to least significant order, so if the
adjustment described above happens, it happens before adding
days, hours, minutes or seconds.

When changing the time bits in TIME (i.e., second/minute/hour),
changes in daylight saving time are not taken into account.

(fn TIME DELTA)
(defalias 'decoded-time-add #[514 "\300!\301\3028\203 \302\233\211@\3028\\\240\266\3038\203? \3038S\3038\\\303\233\211\304\305\"T\240\266\302\233\211@\305\245\\\240\266\306\233\211\307\3028\3038\"\3068^\240\266\3068\211\203t \211\310V\311!\211\310V\203r \312\"\210\211S\262\202` \266\210\313@\206| \310\314\"\262\315\313\3168\206\213 \310\317_A@\206\225 \310\320_\\\3218\206\240 \310\\A\"\"\262\322\"\210\207" [copy-sequence nil 5 4 mod 12 3 date-days-in-month 0 abs decoded-time--alter-day time-convert t time-add 2 3600 60 8 decoded-time--alter-second] 10 (#$ . 10104)])
#@66 Increase or decrease the month in TIME by 1.

(fn TIME INCREASE)
(defalias 'decoded-time--alter-month #[514 "\211\203' \300\233\211@T\240\266\3008\301V\205K \300\233\211\302\240\266\303\233\211@T\240\207\300\233\211@S\240\266\3008\304U\205K \300\233\211\301\240\266\303\233\211@S\240\262\207" [4 12 1 5 0] 5 (#$ . 11638)])
#@64 Increase or decrease the day in TIME by 1.

(fn TIME INCREASE)
(defalias 'decoded-time--alter-day #[514 "\211\203* \300\233\211@T\240\266\3008\301\3028\3038\"V\205Q \300\233\211\304\240\266\305\306\"\207\300\233\211@S\240\266\3008\307U\205Q \305\310\"\210\300\233\211\301\3028\3038\"\240\262\207" [3 date-days-in-month 5 4 1 decoded-time--alter-month t 0 nil] 8 (#$ . 11984)])
#@58 Increase the time in TIME by SECONDS.

(fn TIME SECONDS)
(defalias 'decoded-time--alter-second #[514 "\300@\206 \301\302\"\211A\303\300\304\3058\206 \301_\306A@\206! \301_\\\"\"\300\303\"\302\"\211A\300\307\"\310\301\"\203J \311\312\"\210\303\"\262\2024 \310\"\204` \311\302\"\210\313\"\262\202J \300\314\"\303\300\306\246\"\313\300	\"\"\"\240\210A\211\306\245\306\246\240\266AA\211\304\245\240\207" [time-convert 0 t time-add 3600 2 60 86400 time-less-p decoded-time--alter-day nil time-subtract integer] 17 (#$ . 12386)])
#@130 Return a `decoded-time' structure with only the keywords given filled out.

(fn &key SECOND MINUTE HOUR DAY MONTH YEAR DST ZONE)
(defalias 'make-decoded-time #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\300\310\"A@\211\203` \211@\311>\203H \211AA\262\2025 \312\n>A@\203W \313\262\2025 \314\315@\"\210\2025 \210\313\257	\207" [plist-member :second :minute :hour :day :month :year :dst :zone (:second :minute :hour :day :month :year :dst :zone :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:second :minute :hour :day :month :year :dst :zone)"] 18 (#$ . 12961)])
#@270 Set any nil values in `decoded-time' TIME to default values.
The default value is based on January 1st, 1970 at midnight.
This year is used to guarantee portability; see Info
node `(elisp) Time of Day'.

TIME is modified and returned.

(fn TIME &optional DEFAULT-ZONE)
(defalias 'decoded-time-set-defaults #[513 "@\204	 \300\240\210A@\204 A\211\300\240\266\3018\204$ AA\211\300\240\266\3028\2042 \302\233\211\303\240\266\3048\204@ \304\233\211\303\240\266\3058\204N \305\233\211\306\240\266\3078\204s \211\203k \307\233\211\240\266\310\233\211\311\240\266\202s \310\233\211\312\240\266\207" [0 2 3 1 4 5 1970 8 7 nil -1] 5 (#$ . 13642)])
#@157 Interpret DECODED as a period and return its length in seconds.
For computational purposes, years are 365 days long and months
are 30 days long.

(fn TIME)
(defalias 'decoded-time-period #[257 "\300@:\203 \301@@!@A\245\202 @\206 \302A@\206  \302\303_\3048\206) \302\303_\303_\305\3068\2066 \302\303\211\307$\305\3108\206C \302\303\211\307\311%\305\3128\206Q \302\303\211\307\313%&\207" [+ float 0 60 2 * 3 24 4 30 5 365] 13 (#$ . 14314)])
(provide 'time-date)
