anchor.diff:  If path is relative, it will be set to (xdg-data-home path).")
      (hosts
       '()
  -    :documentation "The list of domain names.")
  +    :documentation "Deprecated, see `load-hostlist' and `blocked-hosts' instead.")
      (update-interval
       (* 60 60 24)
       :type integer
  
positive.code: 
  (defvar *update-lock* (bt:make-lock))
  
  (defmethod update-hostlist-with-lock ((hostlist hostlist))
    (run-thread "blocker-mode hostlist updater"
      (when (bt:acquire-lock *update-lock* nil)
         (update hostlist)
         (bt:release-lock *update-lock*))))
  
  (defmethod read-hostlist ((hostlist hostlist))
    "Return hostlist file as a string.
  Return nil if hostlist file is not ready yet.
  Auto-update file if older than UPDATE-INTERVAL seconds.
  
negative.code:   (when (or (not (uiop:file-exists-p (expand-path (path hostlist))))
              (< (update-interval hostlist)
                 (- (get-universal-time) (uiop:safe-file-write-date (expand-path (path hostlist))))))
      (update-hostlist-with-lock hostlist mode))
    (handler-case
        (uiop:read-file-string (expand-path (path hostlist)))
      (error ()
        (log:warn "Hostlist not found: ~a" (expand-path (path hostlist)))
        nil)))
  
  (defmethod load-hostlist ((hostlist-string string) mode)
    "Load HOSTLIST-STRING into MODE's `blocked-hosts'."
    (unless (uiop:emptyp hostlist-string)
      (with-input-from-string (stream hostlist-string)
        (flet ((empty-line? (line)
                 (< (length line) 2))
               (comment? (line)
                 (string= (subseq line 0 1) "#"))
               (custom-hosts? (line)
                 (not (str:starts-with? "0.0.0.0" line))))
          (loop as line = (read-line stream nil)
                while line
                unless (or (empty-line? line)
                           (comment? line)
                           (custom-hosts? line))
                  do (let ((host (second (str:split " " line))))
                       (setf (gethash host (blocked-hosts mode)) host)))))))
  
  (defmethod load-hostlist ((hostlist hostlist) mode)
    "Load HOSTLIST into MODE's `blocked-hosts'."
    (let ((hostlist-string (read-hostlist hostlist mode)))
      (load-hostlist hostlist-string mode)))
  
  (serapeum:export-always '*default-hostlist*)
  (defparameter *default-hostlist*
  