From e21fc913842e80a42fbbea4f083329b4f84da266 Mon Sep 17 00:00:00 2001 From: larstvei Date: Thu, 23 Jan 2014 18:56:58 +0100 Subject: [PATCH] Rewrote mail-fullscreen-hack, and added README.md (instead of org). --- README.md | 778 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.org | 1 - init.el | 20 +- init.org | 32 ++- init.pdf | Bin 182406 -> 182557 bytes 5 files changed, 808 insertions(+), 23 deletions(-) create mode 100644 README.md delete mode 120000 README.org diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4967b4 --- /dev/null +++ b/README.md @@ -0,0 +1,778 @@ +
+

Table of Contents

+ +
+ +# About + +This is a Emacs configuration file written in `org-mode`. There are a few +reasons why I wanted to do this. My `.emacs.d/` was a mess, and needed a +proper clean-up. Also I like keeping all my configurations in a single +file, using `org-mode` I can keep this file *organized*. I aim to briefly +explain all my configurations. + +# Configurations + +## Meta + +Emacs can only load `.el`-files. We can use `C-c C-v t` to run +`org-babel-tangle`, which extracts the code blocks from the current file +into a source-specific file (in this case a `.el`-file). + +To avoid doing this each time a change is made we can add a function to +the `after-save-hook` ensuring to always tangle and byte-compile the +`org`-document after changes. + + (defun init-hook () + "If the current buffer is 'init.org' the code-blocks are + tangled, and the tangled file is compiled." + (when (equal (buffer-file-name) + (expand-file-name (concat user-emacs-directory "init.org"))) + (org-babel-tangle) + (byte-compile-file (concat user-emacs-directory "init.el")))) + + (add-hook 'after-save-hook 'init-hook) + +## Package + +Managing extensions for Emacs is simplified using `package` which +is built in to Emacs 24 and newer. To load downloaded packages we +need to initialize `package`. + + (require 'package) + (package-initialize) + +Packages can be fetched from different mirrors, [melpa](http://melpa.milkbox.net/#/) is the largest +archive and is well maintained. + + (add-to-list 'package-archives + '("MELPA" . "http://melpa.milkbox.net/packages/") t) + +We can define a predicate that tells us wither or not the newest version +of a package is installed. + + (defun newest-package-installed-p (package) + "Return true if the newest available PACKAGE is installed." + (when (package-installed-p package) + (let* ((local-pkg-desc (or (assq package package-alist) + (assq package package--builtins))) + (newest-pkg-desc (assq package package-archive-contents))) + (and local-pkg-desc newest-pkg-desc + (version-list-= (package-desc-vers (cdr local-pkg-desc)) + (package-desc-vers (cdr newest-pkg-desc))))))) + +Let's write a function to install a package if it is not installed or +upgrades it if a new version has been released. Here our predicate comes +in handy. + + (defun upgrade-or-install-package (package) + "Unless the newest available version of PACKAGE is installed + PACKAGE is installed and the current version is deleted." + (unless (newest-package-installed-p package) + (let ((pkg-desc (assq package package-alist))) + (when pkg-desc + (package-delete (symbol-name package) + (package-version-join + (package-desc-vers (cdr pkg-desc))))) + (package-install package)))) + +The `package-refresh-contents` function downloads archive descriptions, +this is a major bottleneck in this configuration. To avoid this we can +try to only check for updates once every day or so. Here are three +variables. The first specifies how often we should check for updates. The +second specifies wither one should update during the initialization. The +third is a path to a file where a time-stamp is stored in order to check +when packages were updated last. + + (defvar days-between-updates 1) + (defvar do-package-update-on-init t) + (defvar package-last-update-file + (expand-file-name (concat user-emacs-directory ".package-last-update"))) + +The tricky part is figuring out when the last time the Emacs was updated! +Here is a hacky way of doing it, using [time-stamps](http://www.gnu.org/software/emacs/manual/html_node/emacs/Time-Stamps.html). By adding a +time-stamp to the a file, we can determine wither or not to do an +update. After that we must run the `time-stamp`-function to update the +time-stamp. + + (require 'time-stamp) + ;; Open the package-last-update-file + (with-temp-file package-last-update-file + (if (file-exists-p package-last-update-file) + (progn + ;; Insert it's original content's. + (insert-file-contents package-last-update-file) + (let ((start (re-search-forward time-stamp-start nil t)) + (end (re-search-forward time-stamp-end nil t))) + (when (and start end) + ;; Assuming we have found a time-stamp, we check determine if it's + ;; time to update. + (setq do-package-update-on-init + (<= days-between-updates + (days-between + (current-time-string) + (buffer-substring-no-properties start end)))) + ;; Remember to update the time-stamp. + (when do-package-update-on-init + (time-stamp))))) + ;; If no such file exists it is created with a time-stamp. + (insert "Time-stamp: <>") + (time-stamp))) + +Now we can use the function above to make sure packages are installed and +up to date. Here are some packages I find useful (some of these +configurations are also dependent on them). + + (when do-package-update-on-init + (package-refresh-contents) + + (dolist (package + '(ac-geiser ; Auto-complete backend for geiser + ac-slime ; An auto-complete source using slime completions + ace-jump-mode ; quick cursor location minor mode + auto-compile ; automatically compile Emacs Lisp libraries + auto-complete ; auto completion + elscreen ; window session manager + expand-region ; Increase selected region by semantic units + flx-ido ; flx integration for ido + ido-vertical-mode ; Makes ido-mode display vertically. + geiser ; GNU Emacs and Scheme talk to each other + haskell-mode ; A Haskell editing mode + jedi ; Python auto-completion for Emacs + magit ; control Git from Emacs + markdown-mode ; Emacs Major mode for Markdown-formatted files. + monokai-theme ; A fruity color theme for Emacs. + move-text ; Move current line or region with M-up or M-down + multiple-cursors ; Multiple cursors for Emacs. + org ; Outline-based notes management and organizer + paredit ; minor mode for editing parentheses + pretty-lambdada ; the word `lambda' as the Greek letter. + smex)) ; M-x interface with Ido-style fuzzy matching. + (upgrade-or-install-package package))) + +## Require + +Some features are not loaded by default to minimize initialization time, +so they have to be required (or loaded, if you will). + + (dolist (feature + '(auto-compile ; auto-compile .el files + auto-complete-config ; a configuration for auto-complete-mode + jedi ; auto-completion for python + pretty-lambdada ; show 'lambda' as the greek letter. + ox-latex ; the latex-exporter (from org) + recentf ; recently opened files + tex-mode)) ; TeX, LaTeX, and SliTeX mode commands + (require feature)) + +## Sane defaults + +These are what *I* consider to be saner defaults. + +We can set variables to whatever value we'd like using `setq`. + + (setq initial-scratch-message nil ; Clean scratch buffer. + inhibit-startup-message t ; No splash screen please. + default-input-method "TeX" ; Use TeX when toggeling input method. + ring-bell-function 'ignore ; Quite as a mouse. + doc-view-continuous t ; At page edge goto next/previous. + echo-keystrokes 0.1) ; Show keystrokes asap. + + ;; Some mac-bindings interfere with Emacs bindings. + (when (boundp 'mac-pass-command-to-system) + (setq mac-pass-command-to-system nil)) + +Some variables are buffer-local, so changing them using `setq` will only +change them in a single buffer. Using `setq-default` we change the +buffer-local variable's default value. + + (setq-default fill-column 76 ; Maximum line width. + indent-tabs-mode nil ; Use spaces instead of tabs. + split-width-threshold 100 ; Split verticly by default. + auto-fill-function 'do-auto-fill) ; Auto-fill-mode everywhere. + +The `load-path` specifies where Emacs should look for `.el`-files (or +Emacs lisp files). I have a directory called `site-lisp` where I keep all +extensions that have been installed manually (these are mostly my own +projects). + + (let ((default-directory (concat user-emacs-directory "site-lisp/"))) + (when (file-exists-p default-directory) + (normal-top-level-add-to-load-path '(".")) + (normal-top-level-add-subdirs-to-load-path))) + +Answering *yes* and *no* to each question from Emacs can be tedious, a +single *y* or *n* will suffice. + + (fset 'yes-or-no-p 'y-or-n-p) + +To avoid file system clutter we put all auto saved files in a single +directory. + + (defvar emacs-autosave-directory + (concat user-emacs-directory "autosaves/") + "This variable dictates where to put auto saves. It is set to a + directory called autosaves located wherever your .emacs.d/ is + located.") + + ;; Sets all files to be backed up and auto saved in a single directory. + (setq backup-directory-alist + `((".*" . ,emacs-autosave-directory)) + auto-save-file-name-transforms + `((".*" ,emacs-autosave-directory t))) + +Set `utf-8` as preferred coding system. + + (set-language-environment "UTF-8") + +By default the `narrow-to-region` command is disabled and issues a +warning, because it might confuse new users. I find it useful sometimes, +and don't want to be warned. + + (put 'narrow-to-region 'disabled nil) + +Call `auto-complete` default configuration, which enables `auto-complete` +globally. + + (ac-config-default) + +Automaticly revert `doc-view`-buffers when the file changes on disk. + + (add-hook 'doc-view-mode-hook 'auto-revert-mode) + +## Modes + +There are some modes that are enabled by default that I don't find +particularly useful. We create a list of these modes, and disable all of +these. + + (dolist (mode + '(tool-bar-mode ; No toolbars, more room for text. + scroll-bar-mode ; No scroll bars either. + blink-cursor-mode)) ; The blinking cursor gets old. + (funcall mode 0)) + +Let's apply the same technique for enabling modes that are disabled by +default. + + (dolist (mode + '(abbrev-mode ; E.g. sopl -> System.out.println. + auto-compile-on-load-mode ; Compile .el files on load ... + auto-compile-on-save-mode ; ... and save. + column-number-mode ; Show column number in mode line. + delete-selection-mode ; Replace selected text. + recentf-mode ; Recently opened files. + show-paren-mode)) ; Highlight matching parentheses. + (funcall mode 1)) + +This makes `.md`-files open in `markdown-mode`. + + (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) + +## Visual + +Change the color-theme to `monokai` (downloaded using `package`). + + (load-theme 'monokai t) + +Use the [Inconsolata](http://www.levien.com/type/myfonts/inconsolata.html) font if it's installed on the system. + + (when (member "Inconsolata" (font-family-list)) + (set-face-attribute 'default nil :font "Inconsolata-13")) + +## Ido + +Interactive do (or `ido-mode`) changes the way you switch buffers and +open files/directories. Instead of writing complete file paths and buffer +names you can write a part of it and select one from a list of +possibilities. Using `ido-vertical-mode` changes the way possibilities +are displayed, and `flx-ido-mode` enables fuzzy matching. + + (dolist (mode + '(ido-mode ; Interactivly do. + ido-everywhere ; Use Ido for all buffer/file reading. + ido-vertical-mode ; Makes ido-mode display vertically. + flx-ido-mode)) ; Toggle flx ido mode. + (funcall mode 1)) + +We can set the order of file selections in `ido`. I prioritize source +files along with `org`- and `tex`-files. + + (setq ido-file-extensions-order + '(".el" ".scm" ".lisp" ".java" ".c" ".h" ".org" ".tex")) + +Sometimes when using `ido-switch-buffer` the `*Messages*` buffer get in +the way, so we set it to be ignored (it can be accessed using `C-h e`, so +there is really no need for it in the buffer list). + + (add-to-list 'ido-ignore-buffers "*Messages*") + +To make `M-x` behave more like `ido-mode` we can use the `smex` +package. It needs to be initialized, and we can replace the binding to +the standard `execute-extended-command` with `smex`. + + (smex-initialize) + (global-set-key (kbd "M-x") 'smex) + +## Calendar + +Define a function to display week numbers in `calender-mode`. The snippet +is from [EmacsWiki](http://www.emacswiki.org/emacs/CalendarWeekNumbers). + + (defun calendar-show-week (arg) + "Displaying week number in calendar-mode." + (interactive "P") + (copy-face font-lock-constant-face 'calendar-iso-week-face) + (set-face-attribute + 'calendar-iso-week-face nil :height 0.7) + (setq calendar-intermonth-text + (and arg + '(propertize + (format + "%2d" + (car (calendar-iso-from-absolute + (calendar-absolute-from-gregorian + (list month day year))))) + 'font-lock-face 'calendar-iso-week-face)))) + +Evaluate the `calendar-show-week` function. + + (calendar-show-week t) + +Set Monday as the first day of the week, and set my location. + + (setq calendar-week-start-day 1 + calendar-latitude 60.0 + calendar-longitude 10.7 + calendar-location-name "Oslo, Norway") + +## Mail + +I use [mu4e](http://www.djcbsoftware.nl/code/mu/mu4e.html) (which is a part of [mu](http://www.djcbsoftware.nl/code/mu/)) along with [offlineimap](http://docs.offlineimap.org/en/latest/) on one of my +computers. Because the mail-setup wont work without these programs +installed we bind `load-mail-setup` to `nil`. If the value is changed to +a `non-nil` value mail is setup. + + (defvar load-mail-setup nil) + + (when load-mail-setup + ;; We need mu4e + (require 'mu4e) + + ;; Some basic mu4e settings. + (setq mu4e-maildir "~/.ifimail" ; top-level Maildir + mu4e-sent-folder "/INBOX.Sent" ; folder for sent messages + mu4e-drafts-folder "/INBOX.Drafts" ; unfinished messages + mu4e-trash-folder "/INBOX.Trash" ; trashed messages + mu4e-refile-folder "/INBOX.Archive" ; saved messages + mu4e-get-mail-command "offlineimap" ; offlineimap to fetch mail + mu4e-compose-signature "- Lars" ; Sign my name + mu4e-update-interval (* 5 60) ; update every 5 min + mu4e-confirm-quit nil ; just quit + mu4e-view-show-images t ; view images + mu4e-html2text-command + "html2text -utf8") ; use utf-8 + + ;; Setup for sending mail. + (setq user-full-name + "Lars Tveito" ; Your full name + user-mail-address + "larstvei@ifi.uio.no" ; And email-address + smtpmail-smtp-server + "smtp.uio.no" ; Host to mail-server + smtpmail-smtp-service 465 ; Port to mail-server + smtpmail-stream-type 'ssl ; Protocol used for sending + send-mail-function 'smtpmail-send-it ; Use smpt to send + mail-user-agent 'mu4e-user-agent) ; Use mu4e! + + ;; Register file types that can be handled by ImageMagick. + (when (fboundp 'imagemagick-register-types) + (imagemagick-register-types)) + + (defadvice mu4e (before show-mu4e (arg) activate) + "Always show mu4e in fullscreen and remember window + configuration." + (unless arg + (window-configuration-to-register :mu4e-fullscreen) + (mu4e-update-mail-and-index t) + (delete-other-windows))) + + (defadvice mu4e-quit (after restore-windows nil activate) + "Restore window configuration." + (jump-to-register :mu4e-fullscreen)) + + ;; Overwrite the native 'compose-mail' binding to 'show-mu4e'. + (global-set-key (kbd "C-x m") 'mu4e)) + +## Flyspell + +Flyspell offers on-the-fly spell checking. We can enable flyspell for all +text-modes with this snippet. + + (add-hook 'text-mode-hook 'turn-on-flyspell) + +To use flyspell for programming there is `flyspell-prog-mode`, that only +enables spell checking for comments and strings. We can enable it for all +programming modes using the `prog-mode-hook`. Flyspell interferes with +auto-complete mode, but there is a workaround provided by auto complete. + + (add-hook 'prog-mode-hook 'flyspell-prog-mode) + (ac-flyspell-workaround) + +To cycle through dictionary's we can define a variable containing a +cyclic list of installed language packs. + + (defvar ispell-languages '#1=("english" "norsk" . #1#)) + +Now we only need a small function to change set the language and shift +the list. + + (defun cycle-languages () + "Changes the ispell-dictionary to whatever is the next (or cdr) in the + LANGUAGES (cyclic) list." + (interactive) + (ispell-change-dictionary + (car (setq ispell-languages (cdr ispell-languages))))) + +## Org + +I use `org-agenda` for appointments and such. + + (setq org-agenda-start-on-weekday nil ; Show agenda from today. + org-agenda-files '("~/Dropbox/life.org") ; A list of agenda files. + org-agenda-default-appointment-duration 120) ; 2 hours appointments. + +When editing org-files with source-blocks, we want the source blocks to +be themed as they would in their native mode. + + (setq org-src-fontify-natively t) + +## Interactive functions + + + +To search recent files useing `ido-mode` we add this snippet from +[EmacsWiki](http://www.emacswiki.org/emacs/CalendarWeekNumbers). + + (defun recentf-ido-find-file () + "Find a recent file using Ido." + (interactive) + (let ((f (ido-completing-read "Choose recent file: " recentf-list nil t))) + (when f + (find-file f)))) + +`just-one-space` removes all whitespace around a point - giving it a +negative argument it removes newlines as well. We wrap a interactive +function around it to be able to bind it to a key. + + (defun remove-whitespace-inbetween () + "Removes whitespace before and after the point." + (interactive) + (just-one-space -1)) + +This interactive function switches you to a `shell`, and if triggered in +the shell it switches back to the previous buffer. + + (defun switch-to-shell () + "Jumps to eshell or back." + (interactive) + (if (string= (buffer-name) "*shell*") + (switch-to-prev-buffer) + (shell))) + +To duplicate either selected text or a line we define this interactive +function. + + (defun duplicate-thing () + "Ethier duplicates the line or the region" + (interactive) + (save-excursion + (let ((start (if (region-active-p) (region-beginning) (point-at-bol))) + (end (if (region-active-p) (region-end) (point-at-eol)))) + (goto-char end) + (unless (region-active-p) + (newline)) + (insert (buffer-substring start end))))) + +To tidy up a buffer we define this function borrowed from [simenheg](https://github.com/simenheg). + + (defun tidy () + "Ident, untabify and unwhitespacify current buffer, or region if active." + (interactive) + (let ((beg (if (region-active-p) (region-beginning) (point-min))) + (end (if (region-active-p) (region-end) (point-max)))) + (indent-region beg end) + (whitespace-cleanup) + (untabify beg (if (< end (point-max)) end (point-max))))) + +## Key bindings + +Bindings for [expand-region](https://github.com/magnars/expand-region.el). + + (global-set-key (kbd "C-'") 'er/expand-region) + (global-set-key (kbd "C-;") 'er/contract-region) + +Bindings for [multiple-cursors](https://github.com/magnars/multiple-cursors.el). + + (global-set-key (kbd "C-c e") 'mc/edit-lines) + (global-set-key (kbd "C-c a") 'mc/mark-all-like-this) + (global-set-key (kbd "C-c n") 'mc/mark-next-like-this) + +Bindings for [Magit](http://magit.github.io). + + (global-set-key (kbd "C-c m") 'magit-status) + +Bindings for [ace-jump-mode](https://github.com/winterTTr/ace-jump-mode). + + (global-set-key (kbd "C-c SPC") 'ace-jump-mode) + +Bindings for `move-text`. + + (global-set-key (kbd "") 'move-text-up) + (global-set-key (kbd "") 'move-text-down) + +Bind some native Emacs functions. + + (global-set-key (kbd "C-c s") 'ispell-word) + (global-set-key (kbd "C-c t") 'org-agenda-list) + (global-set-key (kbd "C-x k") 'kill-this-buffer) + (global-set-key (kbd "C-x C-r") 'recentf-ido-find-file) + +Bind the functions defined above. + + (global-set-key (kbd "C-c l") 'cycle-languages) + (global-set-key (kbd "C-c j") 'remove-whitespace-inbetween) + (global-set-key (kbd "C-x t") 'switch-to-shell) + (global-set-key (kbd "C-c d") 'duplicate-thing) + (global-set-key (kbd "") 'tidy) + +## Advice + +An advice can be given to a function to make it behave differently. This +advice makes `eval-last-sexp` (bound to `C-x C-e`) replace the sexp with +the value. + + (defadvice eval-last-sexp (around replace-sexp (arg) activate) + "Replace sexp when called with a prefix argument." + (if arg + (let ((pos (point))) + ad-do-it + (goto-char pos) + (backward-kill-sexp) + (forward-sexp)) + ad-do-it)) + +`Flyspell` signals an error if there is no spell-checking tool is +installed. We can advice `turn-on=flyspell` and `flyspell-prog-mode` to +only try to enable `flyspell` if a spell-checking tool is avalible. + + (defadvice turn-on-flyspell (around check nil activate) + "Turns on flyspell only if a spell-checking tool is installed." + (when (executable-find ispell-program-name) + ad-do-it)) + + (defadvice flyspell-prog-mode (around check nil activate) + "Turns on flyspell only if a spell-checking tool is installed." + (when (executable-find ispell-program-name) + ad-do-it)) + +# Language mode specific + +## Lisp + +`Pretty-lambda` provides a customizable variable +`pretty-lambda-auto-modes` that is a list of common lisp modes. Here we +can add some extra lisp-modes. We run the `pretty-lambda-for-modes` +function to activate `pretty-lambda-mode` in lisp modes. + + (dolist (mode '(slime-repl-mode geiser-repl-mode)) + (add-to-list 'pretty-lambda-auto-modes mode)) + + (pretty-lambda-for-modes) + +I use `Paredit` when editing lisp code, we enable this for all lisp-modes +in the `pretty-lambda-auto-modes` list. + + (dolist (mode pretty-lambda-auto-modes) + ;; add paredit-mode to all mode-hooks + (add-hook (intern (concat (symbol-name mode) "-hook")) 'paredit-mode)) + +### Emacs Lisp + +In `emacs-lisp-mode` we can enable `eldoc-mode` to display information +about a function or a variable in the echo area. + + (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) + (add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode) + +### Common lisp + +I use [Slime](http://www.common-lisp.net/project/slime/) along with `lisp-mode` to edit Common Lisp code. Slime +provides code evaluation and other great features, a must have for a +Common Lisp developer. [Quicklisp](http://www.quicklisp.org/beta/) is a library manager for Common Lisp, +and you can install Slime following the instructions from the site along +with this snippet. + + (when (file-exists-p "~/quicklisp/slime-helper.elc") + (load (expand-file-name "~/quicklisp/slime-helper.elc"))) + +We can specify what Common Lisp program Slime should use (I use SBCL). + + (setq inferior-lisp-program "sbcl") + +To improve auto completion for Common Lisp editing we can use `ac-slime` +which uses slime completions as a source. + + (add-hook 'slime-mode-hook 'set-up-slime-ac) + (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) + + (eval-after-load "auto-complete" + '(add-to-list 'ac-modes 'slime-repl-mode)) + +### Scheme + +[Geiser](http://www.nongnu.org/geiser/) provides features similar to Slime for Scheme editing. Everything +works pretty much out of the box, we only need to add auto completion, +and specify which scheme-interpreter we prefer. + + (add-hook 'geiser-mode-hook 'ac-geiser-setup) + (add-hook 'geiser-repl-mode-hook 'ac-geiser-setup) + (eval-after-load "auto-complete" + '(add-to-list 'ac-modes 'geiser-repl-mode)) + (setq geiser-active-implementations '(racket)) + +## Java and C + +The `c-mode-common-hook` is a general hook that work on all C-like +languages (C, C++, Java, etc…). I like being able to quickly compile +using `C-c C-c` (instead of `M-x compile`), a habit from `latex-mode`. + + (defun c-setup () + (local-set-key (kbd "C-c C-c") 'compile)) + + (add-hook 'c-mode-common-hook 'c-setup) + +Some statements in Java appear often, and become tedious to write +out. We can use abbrevs to speed this up. + + (define-abbrev-table 'java-mode-abbrev-table + '(("psv" "public static void main(String[] args) {" nil 0) + ("sopl" "System.out.println" nil 0) + ("sop" "System.out.printf" nil 0))) + +To be able to use the abbrev table defined above, `abbrev-mode` must be +activated. + + (defun java-setup () + (abbrev-mode t) + (setq-local compile-command (concat "javac " (buffer-name)))) + + (add-hook 'java-mode-hook 'java-setup) + +## Assembler + +When writing assembler code I use `#` for comments. By defining +`comment-start` we can add comments using `M-;` like in other programming +modes. Also in assembler should one be able to compile using `C-c C-c`. + + (defun asm-setup () + (setq comment-start "#") + (local-set-key (kbd "C-c C-c") 'compile)) + + (add-hook 'asm-mode-hook 'asm-setup) + +## LaTeX + +`.tex`-files should be associated with `latex-mode` instead of +`tex-mode`. + + (add-to-list 'auto-mode-alist '("\\.tex\\'" . latex-mode)) + +I like using the [Minted](https://code.google.com/p/minted/) package for source blocks in LaTeX. To make org +use this we add the following snippet. + + (add-to-list 'org-latex-packages-alist '("" "minted")) + (setq org-latex-listings 'minted) + +Because [Minted](https://code.google.com/p/minted/) uses [Pygments](http://pygments.org) (an external process), we must add the +`-shell-escape` option to the `org-latex-pdf-process` commands. The +`tex-compile-commands` variable controls the default compile command for +Tex- and LaTeX-mode, we can add the flag with a rather dirty statement +(if anyone finds a nicer way to do this, please let me know). + + (setq org-latex-pdf-process + (mapcar + (lambda (str) + (concat "pdflatex -shell-escape " + (substring str (string-match "-" str)))) + org-latex-pdf-process)) + + (setcar (cdr (cddaar tex-compile-commands)) " -shell-escape ") + +## Python + +[Jedi](http://tkf.github.io/emacs-jedi/released/) offers very nice auto completion for `python-mode`. Mind that it is +dependent on some python programs as well, so make sure you follow the +instructions from the site. + + (setq jedi:server-command + (cons "python3" (cdr jedi:server-command)) + python-shell-interpreter "python3") + (add-hook 'python-mode-hook 'jedi:setup) + (setq jedi:complete-on-dot t) + (add-hook 'python-mode-hook 'jedi:ac-setup) + +## Haskell + +`haskell-doc-mode` is similar to `eldoc`, it displays documentation in +the echo area. Haskell has several indentation modes - I prefer using +`haskell-indent`. + + (add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) + (add-hook 'haskell-mode-hook 'turn-on-haskell-indent) + +## Matlab + +Matlab is very similar to Octave, which is supported by Emacs. We just +need to let `.m`-files be associated with `octave-mode`. + + (add-to-list 'auto-mode-alist '("\\.m$" . octave-mode)) diff --git a/README.org b/README.org deleted file mode 120000 index e909bb4..0000000 --- a/README.org +++ /dev/null @@ -1 +0,0 @@ -init.org \ No newline at end of file diff --git a/init.el b/init.el index d5ddba5..464fcb1 100644 --- a/init.el +++ b/init.el @@ -242,16 +242,20 @@ PACKAGE is installed and the current version is deleted." (when (fboundp 'imagemagick-register-types) (imagemagick-register-types)) - ;; A wrapper function to start (if necessary), fetch mail and delete other - ;; windows. - (defun show-mu4e () - (interactive) - (mu4e) - (mu4e-update-mail-and-index t) - (delete-other-windows)) + (defadvice mu4e (before show-mu4e (arg) activate) + "Always show mu4e in fullscreen and remember window +configuration." + (unless arg + (window-configuration-to-register :mu4e-fullscreen) + (mu4e-update-mail-and-index t) + (delete-other-windows))) + + (defadvice mu4e-quit (after restore-windows nil activate) + "Restore window configuration." + (jump-to-register :mu4e-fullscreen)) ;; Overwrite the native 'compose-mail' binding to 'show-mu4e'. - (global-set-key (kbd "C-x m") 'show-mu4e)) + (global-set-key (kbd "C-x m") 'mu4e)) (add-hook 'text-mode-hook 'turn-on-flyspell) diff --git a/init.org b/init.org index c0cb63a..93e3bcb 100644 --- a/init.org +++ b/init.org @@ -414,11 +414,11 @@ #+BEGIN_SRC emacs-lisp :tangle yes (defvar load-mail-setup nil) - + (when load-mail-setup ;; We need mu4e (require 'mu4e) - + ;; Some basic mu4e settings. (setq mu4e-maildir "~/.ifimail" ; top-level Maildir mu4e-sent-folder "/INBOX.Sent" ; folder for sent messages @@ -432,7 +432,7 @@ mu4e-view-show-images t ; view images mu4e-html2text-command "html2text -utf8") ; use utf-8 - + ;; Setup for sending mail. (setq user-full-name "Lars Tveito" ; Your full name @@ -444,21 +444,25 @@ smtpmail-stream-type 'ssl ; Protocol used for sending send-mail-function 'smtpmail-send-it ; Use smpt to send mail-user-agent 'mu4e-user-agent) ; Use mu4e! - + ;; Register file types that can be handled by ImageMagick. (when (fboundp 'imagemagick-register-types) (imagemagick-register-types)) - - ;; A wrapper function to start (if necessary), fetch mail and delete other - ;; windows. - (defun show-mu4e () - (interactive) - (mu4e) - (mu4e-update-mail-and-index t) - (delete-other-windows)) - + + (defadvice mu4e (before show-mu4e (arg) activate) + "Always show mu4e in fullscreen and remember window + configuration." + (unless arg + (window-configuration-to-register :mu4e-fullscreen) + (mu4e-update-mail-and-index t) + (delete-other-windows))) + + (defadvice mu4e-quit (after restore-windows nil activate) + "Restore window configuration." + (jump-to-register :mu4e-fullscreen)) + ;; Overwrite the native 'compose-mail' binding to 'show-mu4e'. - (global-set-key (kbd "C-x m") 'show-mu4e)) + (global-set-key (kbd "C-x m") 'mu4e)) #+END_SRC ** Flyspell diff --git a/init.pdf b/init.pdf index 98d5e684447f98933f73c58889d86654b84752ee..317e91cf2b9373562f969581d7d700374cbfdf1d 100644 GIT binary patch delta 32605 zcmYhhV{o8d6D=CswvCB3v2EM7F_S#8GqG(O6MJIYwkLMZyyv^8>h2$1``_MGUA=ns z>J=IfpPc|7M+L@Ck|@kg6R*?>6u*{ykqR983*kC+k;<70J{vAiLr_=w zx1bUSwq$k}laYAQ%1ALn8l%0@>N|iz(ii6~ds_3gueCrXPSJ^)b8Y5(Aj=%BC6>m` z=#)qMZ$P20et`D5M1<}|x6PVwBM&+6bH-xvGISK|7 zHu&?OrtMzGw31n+1Yn9~^DPOtjGK)!|O3m&|Ixky*Yma?}K{hv{C8m)9 zl#n@y;2;H_^5f>>WR=5_RV{G%m@^^54?yKhTq)_59_I2dsLOSoE_b1S?w&}#oKXJ> zOUOk;`)N2<$#Cc>%C_y1q2ir4uAT~&_E1avt_q?}@U29?P|!jM0Q<`8iVO z`_rzc2Kng~tjmO6>)$^q)*SbvoKq6`qSD|3N7- zFbQL*@zrO(;yxiNFD+P#y=kRdi#i21QD&?GCE>4x2J2i zwnGO=S7e=KvR3CvmCxjZW+FuPUX1r9T#g%mOw!jstOa^=bmYAAya8@Ie~|n1!XIL9 z=jQ#fkJ-oshE_h9g-P}NO!TaznSHAp3dFKFpPG0Y6pC=O`ls0!mww<`6Y_>b7{JhD zRwAgcgA3y_V%?9Nsjbxsj@c*{nx+KE7dpwc&kDEn)E^->AjT$QB2Lm#JnH&%%V(b> z9v}W0<&>*~q<^S5WCxb#5;$~rnx>+B+`W_gkW|u{)_q9fG-4Gy29(wq25}JjC1L!I z7m9T3W8s(x^|IRFFyri%S_+zRvON|RPF+2EC$S08s(BFu2B5A<;sm;Rh!ruO4KApW zZcW2CCi0Mno(c6a^^^um&6V*C6J9sM&nHNFMr;@-CiTy&rU2RTu@?hFpavw+utB|k z#mkrAbrUMhCwnelSQ)a2k z;N&*Zbj)aD3$P6AHab72juj5n2Q;r5x~xsoU-vO)RgBxcS5qhr*^@Fj*qgENbY^WF z!Uk%}T$$&FKZ94|6gz_{y0#4Ke6*|9s1kp~EDJ*LggqgN6=rvG-R>|=`EScsIg@;XK;wK(4IqSU@w>|} zMznvjH@{f(@agxAZ?Km&&g*T5sOB`u{T#(i+^dmaAk1IUrp2vHEtM#T^Ng5oO803p4taFgT5vy(^3kfa6qwlOIXMDt7|oUC zfsZhp?}HIR_m+tiPU#fN3_bEzyVm95jF>R%q1Aa%@*3(k%u?AKg_8r2#3I>6-O%iy zPh-_Fc+#eDG5K2agX9s8x!%x^zHe0caWJhqSIvq#5~37G!A~9ZAf-+Ni1CK7HuKY>#Iw7P9=oJ3pSypax^h znaCV0+Wn4{_YhYQebGHqK09&fQ)`Z!oMH#^HU9UeNuh88fonyVV7^hDD`*C(!i4Vj zBGlS#_=3E?=zKwVcOlBD%9QlO(l1N@1H6W%I5Rar5)?ggS{e(Chvz@e0sPUDOq&mYR~)F0Wkf0cg*Vpj(qCnJr$q%d@Rp$E}32o6p7loi^Z3w8&6yOqYnC zr0XO4K3kqJvdK&uqW2iC3>vS}gW=Bh@$o6S60;xXz^)tDPnY}M_+(vV36WklXP3E7 zmMWD|SHV{eo_dMlk2#SocJW4c)Vry!|4gszfRTiV;E(t)Gp?L-Zy@DZ;u*Tj#v0MW zudM_0HToD|169(}Yk8Rh{ux}K!_ra0^?UsBYJtIBgIn}iC(%ecspeDZ;k^Zti$TwA z&*k4oPqeVIz?XR!AGW4M*i>0&cNSb4XQW0A6EbymL4|LdK|g5s>Ax07wtU}b1D>)0 zryXL9@55MnlsB`ProbiVjAp}z@pL2QayO)FbcPS)r^IGw@~g~Dneu{782ye~OjQO~ zD9A{_I?pGB(+DS%BN%-@hWAaZJB&RWz64ocj|IVbA8X$Gm@u|2V()yY1p+ z*g+l>LnkyW1{X=cj$E_v!|UEvm*m??d6#9|q%TL%&QRAe+ymmFb1b(}EbXWTyI!20 z&NDlH6C=~3UlC$0N^bV3@E3|HD!gWa2X(P`ni!QM5_fzzRd~9fJmFLE)fyh2(`9n8 ztP4|x&pvEE1@Vi`y5uq0iTr#aWA@7z*!jU!G(|)h3qUD|j6ZFPV?e@C{}S{Zc$skN zAJM0PQUhCt-UjYTL+XHo*hyrzbTO)HDl2Gm6{DCDxDa(o> z<+)Xt&$RkYAu|k*O3#XaStBc^fvyr>I3>Vc+Cr!w0*G$>M4#{Km2}V2O=mwkRVtAT zgaw~oejtH!A?*nZc-9Gh8>3IiuVl;baRAB|UWI+z7{#abmF!&LsHQn=Pza-6kNhte z2IL+iVrC(*wU&6T)nKlx81bR6;Po&&sbUhFG3QUmLs}leuXV-=aH;Z2l&& zm;N~i;w=H1@-#Reb!#SCfmRAZN=TZWLc6}2<)of-FmesLYr?7l`c`9u1cxmS%9S@` z_PnxXqFrSK<%C^TjXl9>FjK)Ar&cO4xf^Od`_j%bexVNSWNw_paw0kcR-$=bnYXwvBWh=z3!blHY zP-H`_hmeOxFgOlUA01h|BrAFBIZdFE$8F%3%XP0;UqkegHJq_VRWUOvW+he@X{Y2Z z@S8qmDHp%>}S@7?s6U!ShJ*xc_mFEmeTU`1tDkiPiPV_WmtELPhS|@+!v*zX@ z;*0L-1?KV|&UFF7{Mc{22?<Z0mIT?Wr~8!08a~!B@?@nUweDkJ!kax>$tm*4y*NeObG$d z#Bp@BQNGMT2)XYC8bwKnqxrMgFpu-~6qb}bAQ~(;wXTs-Y(N^#w@fX{s_<>$K8l!t zqD3?}#Y7ajat2#IR`&Lglzt|Y#pVHFy289;ZMcL4P8y*}aWPbS^mlRGW_WsvS--q? zyQ<~U^ra#WLfea4eKRTNo^|!Njf~&s&rV*J^9yF7@oumW19DQ98YpcY6Op&nANLz? z4DDxeIN*07Ij=^~W$r8aQ&+vp`zXIKD)$GohmTMRZ$nKBem`*m;Hsn1V*eNPL0J-w z4KTo2IM@?s6={Kgu%F5OAH7y`?Jq|aHbSUb>nfs?wtq~yWn2Z{X_*|t`bIj$_T{H* zV~j62bX{&n4~;)7b@nt&{nK*qdFuF=V=ZxL_ERp|mD4ubz-Pg|sMPE)7)Ke)3=f_A>#6VvwR#V>Wi8Gt2KhOorXeT`( zg7wl(Z)_j{s;dAGxkxq{fJp}43}NMHU2402GhFTKT;|yVNXW|;EXMst+Rw+%x7gnu z&@5~|%iv#bKNSdaroH6GB zLr6X0i);H*By|#sPgo;Oo}lFy4Njp;ZkmipcgtzcE&M(XG3zQ$jug`opc!lHK@X=d4nw)zd4oK;0%C9+JO?2@W_at#SzEClqj2z9C z1X{k29#;{?3bV#fA;13A`6m4_z?)d%i3|;nK>tkUFbj}AwaM&!a05+!o96| zPoKvJlM+)~Vk-)tvPt1qUlSyJ@$2jlLPyt#DkMb!SiSI>^LDinRNGu@(KQAiJzjFc zQHdKbeXxFKlYeC~xe&uChhmbj72|f)4B!(fVTCv?NO*ffk`BXiFCupp&PS{)JbqP4>v%a zF8X4TMAWj9nPn9VT^S~&K=G}KT2M7R)*elQP~OzHflD{z@$&&G zg3C-!iq!9}xN^JiP9#erWiKP;jl9dM{U9h=FG(S2Mid;HVJURjNOs_~&H>PJR3=ny=?ifD5{Ovlv=Fgm= z@0@vKhu44cxGVjC-lQM%fnsTxS$ev`8Cb_T#(}!$#h&bb^uQ)q`A%k4biF55;c<+aXbn|7wTnmt8Lm|8D>b;qN+-Mj8rtO9Dw=!!Aa!jUF|mR@_`Vz zOg#FYuM3u^9KKIe@86voDXZ=V8fm&$d%mPb)&o}nglwnka25-BZ+p0}8`EDcj1xz^ z^{i7Phi2f6%BlM?wl0(<$+)Thbq*uNM;?f5)*T!}bJ~C_;&QRks)(;w+fxukKB`q7 zw$zZ~C#@;_)`CbVXKEyxZP8A=O2UAB^23mWhQv=D8YV3}3KsWdJeO-f?F7b5-Sw{u z{vX9v;3S&x2x1!hM%+V2{n{wE{}(^Cz-V20o946*CaP7D^=(G<+neP**ry0cic9h-HUP+j~+opO2jFS1(q0~3%&L&Ox>6o};&GVM=F8KFx0)kM8 z>@<<4H%liN`T9cT(_^24(uS>Cyzp69rMcY!ucf5lHaDuOfBXT|iNjvQ*Dy@=7Fbq{ zc#YP8_y=?hi%Y*VBF*2>g80Aof_|j0`I&ljlpj_x$gA+(BPnoMnMIXg+MW^+bT`+M z7!Q{oc+n8^3ZzSNkC%m^1r7{sBbn_qg}DkcSOVbFQ@0TR0|yjsOmH^l|3_P5*Ev!C zO{*v_5fDjwDrgTvGqM2=Yh+=0%rm0%;F<;Y#^$qe2fp{qo}oo{IL)s%z$3fsBz;|IZF>l)oc;3VzWxQL{j%du%< zNg)^3wTFmyaI}Q6o#)mf)27ZMM@?(j{-~e!Fs(c}iaD0YVnMt+b{q|6x1C+(n#S)I z_(R(@zjB?B&B0o*tADbx74LdAI9iDS4TU&Jc5xup9dU)lZp(lO&P;RS8HR@Z@_4%j zC1SV~`PXlfsGsJsfcYfBOQ8_>00r1EpGHVS7``c%kUEy-!0D^}I?CoxLBZW$1O=#3 z#$k42wDl+J*(<^X+P{5-HQLow19|q7BD`#)T3XIa{OY^9IkLTYi}Ab-6^Y9PsMR+h-v>J(7yf{$V(2Q%FFIk!WZYw{lbet=wB{Hx5 zB}_UZB9^zoA6+#&;?z<1Gb!NOV#jm@L9GCP-C^@mf@QrvjK?avK8BHGA2rdH%0#Eb zJ{i3oJlylx05GqD9|Dn^f_Tow%o zk^3cjxTa|ab5jv{1|PN8uYVgq%rhCn+)o;cT58g|1(1&^JJGx=?!?k+fZ+EhNl4pp z{d7>@?upZ>xsv4(H=YYGab{J*xv9w~QZN5*CQF4`Ps^!atGSpP`aK<0R&fnZ!hc)t zmbQD}{M?r}e53a_BA5b~IU4LPgw+BK`-jRSsC2;!g+R+3r~6_XEdOtNP^i;IxXMXJ zt@W+3Ie>8nUM)@1`RdCIhHHv{w@-gt$*8b^!M=2!o~tzHO+&$VEf3Fxy(kDuDj>if zoz$dflf4C8445-ER@i6A_Q3lINBD#r#t?D$b3B_15hR1C$$A|x4qj}JH!pLi=O%%Y z{E>xo4+Bxr^R;paP3PRFsOjxjx(YuG_mIVOAW)@}Y32n!GZp3d*+8MRTr1)fFnX=HJIDd{^|)ci z&25A<-gvIySD;jSRXVU|Y)babrY1x5mg&$SB`Umc2EUSPUMcg#uR>})_Qwd2mDVx2{v(OHYOCxhj*N+MMB$$OK#qpf@ON>B}AZ1b4C@LJ( z=uu}A8Z+OTNWsqQ|0eqlLCB?*?6*K41Rofy!!FC#$9B-f%hy%5DvhZEM&vF-f3^d= zOEkLg^NtklR)|FNBu^CWucUTL@ZvwT4a5ttyLnFfZ*>0BQm*gYlw(%hCx<3YPs6K| zhWkk&eg6YYBLgf@mejwIptQiG*0k&Y_>_?gZ4Rv%j_J;t!rG|z z*#2hXs17@k~E zhHNTx2Kn7+7qSnabE~CKPY=PS>i^J63uOs>U#(Zq8E$_{oC<})p@aBm#RK+cn-d&S{+1T>juGf^`WvE>GAtb=t7D!okDTCJkc@311=JIRa& z_>|J-&`Z#`i*8k7^&5g~er;ikVL!QbZ_$A`u)HU~(?+dpwEVbIYe@0LLG~CywL>5> z!sqYxifeYlpJ^G!bekqDI>beeT61e)=<7&ofNBYyg7m@HPjO@I2tA$J5uj=doJp(gk7NEb7zK zUm@^?8tHDPf+V`8w&CElmJ?I8C^~NWi9G=l3HXb?-d7<|-({LZ9JC1$;su`6Chav0 z1pG+-fI>oX-=Jf06FRpjn^y9;BusqsSO!N)vvwO94w}}P1a~jD)Ih2?n5RlvyLsS7 z@b4U%!@yLYF|2|P0bgA@I$Y2Qw(xhoK-N1NYs*Au9A3JW&6F2lJg1K}^pIjd4%HOQ zl83?6ycm~OweXEol}W|S1@o)5KhW;+HS}pYaWx7v^}?t!<8~Pekxr>-`dwJqH@TRa zizK}3+99}fq3weAaurQ26+I2Jh8K7zO^b&#KB{TbWD^#A5$j_lX}DTFCefbHbT$8@ zo%5OROZ9UMO9)h#W12S+y8nkd4qDu-m{X#;XzU`AI19dXOCM5)1Zs)1M@_$RpZ`>EmnYu-}=@~ zDke4iMF(*h@FV8;kJp=Xh+nm`QM&ZWcl06K%(NEK_V+>7gMBcmaC6IS#sp0ep9*!W zY{H6OTTaj|a9jB+!E*y%$sc{jo~_$p8)1mu*ajrOx0PA51CH~$8L*fQwmY?4ekwdV={STd)&HgQ4xc;9A_y6r)?2zKA zP-SIGh~`xr<}DJ^4cc=?Nk;=(tabIJ-6+OJ6~2CgCfwRKS-hbOX6cLuYe{hi4C)`|QnIc9xh{dyIMCc!Ub zg#;vS*!oYh90Jo^*mVXD;<%B;De_u$^>w+A4bph~npe|x+yyvTq@@cz7}*-Tdg_@f zHs0R-7J)8rf&)k4fp!<&opFDHgIp|_rejy4SF*GiM3gESbbJeDd2%yj__6QmRNz;C zS=1$n!!Ow%l(1((asIgpb6fceAbidyFQy5?7oLif!~i268RS5=VildG;B(@IhxB0+I>>4FuGdU$OHxW3kK?z~}g0Sp==K-Ck ziU6K>j+~4}v=4fkv!dx}D*_vFZ4Sl@3|8CHl7XujjmMWZ`XidZC7sO>VyOj&i_MTD zp|#KoNs*wC$S#(*Swxh7>%h6iroGtkP(&$8WtexB3HH}&sMVhP zw+25}&Pp&by55W5j5nuYuBoKNRD?p5uz=Qj5Xj^oE)!N{$$)J>n;jdOh3n$ToAf8( zKmkdEvt|T)3K1mz7KC(hIaV-?VK%Fh&WBO zZi}P@nf=?5aTn{#enU}fj0ot#*qs((?*vdYV*<=+@jAqWan(hIBwq$CF!eYZZH-EM zS0m7qt;Bsmt~@eO*m~2TAJ0s zi-hdBuxtgbEu$N66Dep0sdw~v8e=6{JUi8a7zhWF&cn{si@R6 zrOuD-!|uQHx1G=Z1>UR-(WH&r>J4>pj9z&!+<1J#9 zK{)(`z04TleK2N=<6p}?7T}UH*ZfqDUK(8ba~tQ`T?#hXs-zXNP^72jpMpUJ&MzjqQH1_xX#g#SS&~Kg0*M!2;u8`{!w*0}LJi z$rr$MDax%1ZW*@<2Bo(n;|wM}XCBS1lF=qO`Di`X=$u%ab@#`WR}v$S%MrJBN7&#& zL?`c7?l$3Q7k=!IYo^vW-yiOO=b2=@0vjm};jV2CBb4gR(tYaXwE9!G)UQ5vf!#=^ z&(2q;zVsa;OQB;19UsEFbQOUvpvV8=`*e`|{Kj04@QL&f@IP%|GMV4YGCREluvPEZ zJ^BNt$m5{GQgcx3%GJWdjtxjKbxTkQbsMZuVd}!aGIa^PVRflCbYx^whU&2!#Aa`~ zTp2JES?>csD(Lkf?Sh4Ds!Ygw@JHfrB@U*49S=$dfK3X?p-{;U(N>%J0)Jz$qP#k} zF&Hpu2_|dcx}9*L0&<;C*l+j=j%eHqivtR&6aNv3I zuJyjv6_~Pi#z&fxS{aD$XC|}L;phQ zNvL-vTh{isq}zv>^$wfwcxe{v<_^d1hc4hD8+bY(8yCZ%w9hcKKtGMSG95|nOWtYb zDu_iyI0~l6I1Gac2~E*B4PhbVTrn3JU=c-%P(2Yo~=c9xw{= zH$fr*;E}ilzoQ}pu2)I=8u#Y<4kXb`#IgkJFDo77m)tqx+H7s)3N%H8NwYoE%@11( zRz~4yt}V+aMZ@DSg(o*HBkV&z^ZMiF1oQ8Qd44i;CwvaSWw!fgg!yW#F8d_n zgOHr0f&?5PLun+)2>~1-cqq^aYYlXP0kc(dD@kG|aW9J^?wV)ka8(2$ELOs4TO7%x zks-7M2Y+M$$4Wmf%aBVdns_RhXDoDRZH-y|^OS-oa3P+XlFgtXo)PFl&4{M(+E2*8 zn55m`#okXS2E!6y>r-EOUY|JVlCD7UP0xPuZ)^ zt)e@}Yb0x)#8~(TrDDivWuZbNQ|TKFqho3_UbS_B>y790-9oRPIU+7w;%8u)+-F&mp!R15I1dfWp(WAGoO3)SvNHGF>S<0Rrx%yf6?d-vZ^!H@0f7nF z<*-e;ae>f?>Lj~VnW2wpQ>mxvSB$UFv@gBF)aJ%1Jt&!a#5DI1T!i!o!_m)0Cp;XN zIX9h!8+TK~Z+?i?1MygB#M)?UxA`NoWz=3kM_@l?)YQyHWp(Q&|74xtER5p|yGWyu zG9CW9HW)3QPYm=lt?UV5|0cS$tvm1Q3F_TPkYrv8EN2T(#Km%ZsWQ*|clSFoCoVzp z1}dDzwa|ic;<4cpRvFV)gaK@ZDsF3g=a$FDC=ySH@A~+!6^P2^*fn%^F#|9F zkCsbySSIb%M2jo=8EOmr>Nayksci;whuKfrvliUP?yJ4_vkadTw2eQ+j-}>?@7v$~ zdq`^hIK`iuPeKR1UtV+bjipG&fl?7@CL(y>lMHM$Ec=<}lh1-OHYT z-kpxg1hN&lKGIPy*6Vb~=)!Xt$zyoFpW6)BwOep#sL^nGaaP`#sB}si2k{sX%JGup ztgm>6MgfVA7FBoK}7wSC~L2W8r^gh16 zMy;lPV|nwU^>T^1Wvm@6XFH*3niEn>NhB%io|lsXtSA^CG4(TVz)%Ily!-NIPR2ph z*kT=1;tRNPhaSK_cb{FV&1 zmuV#!OZZkURE9c>Ov2Zl%DFTSi+Ul z*Z?9Ss~5y*kmgIW4%gNDyTe6`3i1#a?oGuj-Z$ha(s_rNpo9w9xg*k zTT>JOVo)lU2Ym#Tq{C^=5eBKmSk&vNH2J}*`;G*>&edS>>735rt7=${q@D=`Zh!{W@bfAOZDAy{10+Df$8P{-w~c#9SI8E=;`{z z0LuA)r)3>&*Nq`mzimU7SdZfHw%VjI_3vbo5trNv1nb79pn8F_;T=(!{+N_suRr<0 z6STgmuZp(Z#?iUVq@DgdSEt~ObKX>GZlSp2MbI=HIgzxeY0+}po!|M$4Z4iiB>4#0 z{F5y-=IC>#P9@qe1^8 z?TS#xlfY}xz}{t`K^no+n28i+U9Ij!Oa>D$(40%e2U~CC=0vX@6A!|AZ6GsxjIP7uo>hQqSW^f1P_#jS_ z9?QrYL3Pwo+R?SPb@>R(#EvK^K+JipfrxMr6k)7ex3PJQs&ZpOqZM2ygqo~AKg^ar zhTx(+m^1{4N@HGw_#7clq4KfbNC=9`XfvYMbQ-O)&mQWZ0hFVvV-$jddm z`dH1Q+KkBe5f7{d4Wge+;l7_CUs>X>Qkh}e=WkMT39d02kZArOkBHYoN(tUffS9;f zl1?M!cw=ToFpTIAykbe{g{eaMJfo=}w6A~O97H=v(drj~LL*{EafAaw|-UYn?wjo}bu zgPxV+3?+WjpxC2GsG(MYZdE>LBWJvK_;~*z7W7Hd*oiIm-DG&7|C}GkzW-V@->&_f zczJkmXQ|yJW5wmwx!{#^30FMyhpnMf_k+0F*>5#G;4+^s=0#5RS9R%gNK)=;pbGo5ekZx(e2tKVb6n)~w!(D#Q9;iTRpeooVx}v>J;$e<`357cr^JhZ}#lZlS9!SvJltohp%$e%su5 z*uZq0wbs$gGblacI!4BQljf^{6*K(aABMThT^wcM&05=`USH+YZIk(1E7H?d%-Anl zQ5O;KjgAT7JR>pKu0B6i-%CRK(^$b2Ym9$O^`t@$Pzxs%i8ANr%|9uraG>>B?c>Y5BRSv$N6le;k(b zO=iv0`r4a1GmmcWbE zZ9oPST)#`l%=`TwRAzPev?L39hCpMZ~O4EFzc;(eW(FRR;CWmGp#b02O=S8xC? zHpH(M{~&eri7T9K_G2J`?_Fl_4>U6X$Y=ef_~8SrdJEFx^Ye(gV46UyO_55!&**m- z)&yf9H1+X$SAZgAl<<5Hnov!Mp_J<{DyGz5+PI0=#pYY9XJE~GW7{5}L24kD!XFEP zT9Jt{ZxWVaQ5yLO(sKb8R)nu2GH8%pC7*G_8iYi9s7Z0sG7GhBa1|I&StzamBU1`E zb){lO6-3emHDPcxi9?%HE&_@a2=WhM+v-xHG`-e7Is0f>%Y}WhyiFK1DiLg-|DK%u zTb5tsY&Fb}Yq^p8W9UPzLnK)x@N2?&Xd{ooT0dwk%kKzXdPrwe#VKx&k*XkYIxQ{* zGw|c<3;8ST05vS3Yc751UKA+lN48fgs@}*5x5HPawEos79P*>?=@l!iMtfk!A}dDO zi}<(jWg6%FsJ(&t2A-s!{fY1>k|MP~wQ~bQwpi*B4|;+v8u+i4(P?SnF7Dg|^^vPW zifOJHY4%O8%_gRVtvZn**=h`uJg)Y*)@^jrP}eUlBX4$eP74IK@`9(Av4SfRo_>ET*XF~o49$lzndENM-zR_%gTEfIlIUq7RC z?xRtijRV`1ms+V%;x3<$9Pf;xczV+}Q>cT~eu#Hg?>e;*(<7mdU55pEAr?&=edG_S*p#6y7al%^urKp`W}7yz^$?>4 z5m%_)hLwB=Am8qCzwWPkIO@<;FpH2WRC@MbuB#;rtT=TN6-H(fpPiMFtt+|QstD-3 zOA~*1l2R%J7tfP6jpndqK2zgL3PxK-vU}!Li#4pVQ#sVD(1+ChW@>9@p*Z%X4n#Qq zlyl+BfW@cLaptpe<@GOUr^!9GjqWo z-2peRZ7a6In~RafF+vuk<}#`swYDU?^KOk78 zv^*7cIUf!G=g}x4Vs+y;Ix`cv9}kcNZ9q)AgOWVv+BX|Z?+1~TPLtWJivMR#tZ!LA z0qV=F7efCl;$fBXLb2tUm}MB1zE}xpZzW=v&dgP9N$V-XY<7W@vC<6Ez7)E-4wsy< zO-pqy`*Zc}rndKwd_AT7uUkuualps zd8ec?^RD9fqG6?vM}#J$QiP^A0-F$UAZ|Eye!72XXTXBceOCFWC$A6o%RDWp0*vC@ zcuK{2?X&4;u;AhJv*EMrr~ND0J=dq_C*fDlSMOIJaPW1&^p9U)Hqb|gs4#(@ITS^(S-Na{w`Bc8b_f*w63D2_>!h@c@fp%GiTed zGc!v=BkzV;1lC`qM*AigJNKz+5kb`)N;+cFLTVZk04xoeSSba>!fzHZnTRiahy8<* z7i@dG6QhsX)3N}Cub8U)FMQm0u2;w9zRPV?Ms{%UnURedSSuqt8wYUtC#FpbJ2|_6 zs;_VOJnJ8&52$;Tq)rfuPi{uX9Q>cc&LKz_9*oj$+qP}n zwr$(~+Qx0%*59^m+qP}nm^(8yi}^+12e3Q-&)`)it@z34JNJ9}u2}TlOC>C<%c+P1 z;ekN}k4nn_C+Ph)CM0A2^S8kE>}t=*?(ivL4`BJO_>+(r8@C+`pRbu_2j3n{r;;f; z;U@-TF+p5rQSy{ho{A-uM%h`*mN*4D9qWe3Q0Mr!&Q;$Sc<~2c3dK`{9o;ZH>0~TPud=h)=D_bp5{KMg0*cWuuBT+6!v=Qa?%Sq zpOgulvQP1~KT@P_J?-NwhY8w-+1NQwZrzBlntCLwMgMymgx_purBQx+5O19(nO29z zyZMg?Wd4OG-BC5(CagW%DoX3hHK3-p&%&F)WqPn~jjDzQHcJ-_#DLup4N^0MH&B{i z_iqk=oWZGWUd7U!YiMy9Y>YVNv{R?+1{0vZ&5 z2P-g@K5A*IOIv>3d~{R|7aRZAc&l`R)y=CE-=~#2XmNz?HcS#c$_>T0D?r1k)GPl& zJnimmKGq$sdxQD3+@`0n7MB;SFkpG_Y^M6%&cpLal)!Eb(+bL?pFC)JSG zgj+E4IEc-886T~|qFE8^Czq;J8HHcG=)esDR@%5{VT2Nh%4wJH(+(%Tg(m+PCdG%pS9 z<8&u5>;nw_H+dc{va`7SXlO!_+U4QX;EA{Aqob_E=UOU~Er1o`L9mmso?i^xJO8l3 ziGHKsvD8Xc5O~6o#Ubz?D`I0VCC<&mmTS2{eWy0^@5OkSpC(>z-yI@e*ODQsAPdGB z4HUG-jkIvXRQ4uYkLa`Zrr;}lqM~D>48BOkBy;$ zM{GlHF*Ayu`}8kvjhtH?Mt<(hZ71<@`Rrls1wXl+JiW}$3Th$zF5i`x>zwr4RpTbZ ziBy3U1h#@HtwgId&O%$gGhlIlf9u!o`KcSLj#A-+Z@^l_Q2P&GUbfE5!xEwQAt=~s*;7+=U z&!?j47rZ7oluS#wb5L+)Q zLZZUIV|3IUh7dFi`NATh^E+Yk;4`ybt}Z2Mw*rSs_wD0x;e@q(wZZklbx!*t0;E6i z_B_#WI=F%4tl>QS9V_Bt1D~QqT(^Cg_rJwkR)O8d)2<~FAMkAlrj06pM2i4=a8O89 z2Uw?%De<*D%M?6_HuN`?mc%gFTF1cx-Z%dPeZT_R0ehzt1cN7yVv>+phg7tMu#5)h zj`~!hZX>FNi3-I|O)sZZ$wK$yM3V(_kPpk2KSE0cjCoA`0uzemPJYpfv-8$O29~rs z+{5NTSINviiI#k1#UyTY)G2ER^oNrlzjm|6D{BYj>y zIdkBeOb1Nysz>kzajR*tH|PBUE}c8;s!1IvH4r7Akao<-$0uq3D#f6}d;#nJYq?F| z?Kqe()?BOf9e6PCl6 zNXe_(4s!tsU>BP|C1*jz- zh@?@hjn7cHq-E^nuY#2?NYFc-tTYmWP(PtE?$4mC_5tCaXjLBi z9fHYo`lYChQdA1tw{DM>9>3DWa^l~aJLenbO5`GJ=Q3A!=t^3QPx`>l0e9Gvf-0MG zC*ki_BBdY0N@q_qgYAr--m^!w0I0-NbVQ1u2!gAsbKPNK6M42RhG~mjq`!oTZ(Gz) z{)8np_F?S-$yWHo*I?*DXhoBY(C(+(Vpq0xZprH8pjTGIDQ*37m@x=XHyW?mJUmH# zu9tW2sQ(}&O>q7sCRQ3v_vjT8apz{`Ct8A99G_m#KZd3wq6;hlZEHLL0g{sj2m|p_ zfCKzh`>cYcI%`vgiYanAi4CePqV?evN7=B1e16-c zv4Uob?i21%NYu9- zQMzH!sD=SKh4qU;fOb5MPC65@IrYks#2;5A$HiA71(XZi0- zC#G%uADEh{9W+?R)GPgBr2%wiwz?304#-T8<{**EOax66iPadX;xKy0?tFZMZjD> z?mvCGF;o|t+zZn$0?_wJC&++?3sF2vl$|l*su&;D#X8FL6ZRx#;>ZimDmNSo(3+Ol8*ICu;HQz8DXh0RB1tiz{$- ze+$ND0?DKlUQ5arB$Zk>&9HxMq5nj0D>--iq^RIpB^^=m70@K4pZ6;oNP4}(%i13? zYz#NXHjK#hClI;SiHpeY^(&4Yx+pQSxw1o3y#(MH(&h8BlR{N{xB+^PXUdR|^2qB% zVACGYxC%zKh%?YEt^zPROrjj##`2fDcA4#f6!OXK+ zD?Xg(zH(JOVtpkSoSp@Q3WZtzsk>rPds3Zb#m87Ud27nH%Q3^fiN9H$s2aQQ2f4kP zi|0)L3{c5CpN5g|dVV=mNFv~r;@Ih3D9~uc7y5498$8Y-(=~?U^&Jeh-0dB_#*^o zY-r`mPbPPSKH@~%54~j~-{!%HmbB2rizzBOTE{ty<4pvNY?ObN(5P+oCjXxPXU)*| zfemfa{a;NN%Cbbs+NN%6;Z>t565zfKB^%~L4Y^*y)V6Xoa@C-*Im1PR~F zeSHl}or5xVYUL1g>^==AMdRTe(0C6aT93li^Pui#eVe7{mAoXOuLti2bPGE+(u2C+ zAzIY(L|noRiJclqeB#P-pAL1Uc4kD%i{0q<_|qkuhsi$8enn#%*n$%Ub@nd8wbC)2 z4Zz_*gTA$f_V8QcPcu@~f6(S2bI9ciQda0`f5sEoNfp<|3{p5L2$ZU(h*Slq3+B(v zKKZK>H~0YE1IqU}_88lWsPa-MY>x>iu$NZkV^L~~i*xB0rPUkwQW0r&Bwqi?J~2Ig(nGLHngsL`*3!m9~DF*a1( z?3jNA27dMx6MS*5-fk#^nq32&H=$^EH77Euh#^KgVxP^mJoWhPLJ%ZG(OlT^=&iYR z%qK26s&-c!Y$R zoD*kRIAf=O?{NI@Ez+SOcgemAMsfvbm~kv)AFw3#4MIb%i8n0P_G_(agIf{9jMrKi z4HJ6*L~8vZYY?hYr=AiWGN$kF-Hhi1&b?=4>ZO(Uu_bpQaAuDK6iE!-LjtN36E}Am zzO=6);Vw5a=wx&Rk)g1Nr#b~+FeD6KgC=8zJ$Hv6u43XH-0?{~2n^OSQeC6DJZObh zDLKzgWBX;M&e|R4tRE8#=`^A-XB?}8WErI8WlOQqr_vxnkA@dePNk7AGF-& zyvLFx`g9_TTrW2Y(J3n%DFB>1A>8OFxqvZo+Q|KZ?h5)l)ni=uIz`F0Xi39daA;}d zEqy&c>7#0KB2v%ZXeO@o(Z^)scsxmPZ6`xMPibl~Kl^=*W0v%#A(yBm^IHyl9*fxj z*YA2|kBaGTgmN95gLq5gI}_&B;r?rusa3hI%ax+*=f|hQ)GIwRkL;g|4QYPV5y)2Y zRnwSjgQTH?{4U%ScOWYKD|yf-BO2IbdeE8{WkC6oUDZ<=EV^;wd$J^&WpDxwPZO(d zN&G?mZjg+{FOGlHB{U&XY{l?q50|J zgsE}Q1KN z24erKG)$S(Qe2tm z2QGl;->bdC=}552z2A%;LjDndwGE?Q7+`aYS8JT7`vCAOaa}drlcna9_A|KFE*ed+ zi|vD8lN#_-F2UWxNq5#jxUP~LgAgo9Y+x=uijjYYwoDVi04jEK!cqEYr7Tr|i+v~* z!(+AYEgOzDmN+JXYtE#u@Oja7$?^F3@T%yyA$kWRaDJOWnPW^@c7Ya6kuGa8&n{m_ z8y~J5YXMfGm6lS-siYQBlDR5$KZ=~{Mnnz7#<+9AelmuiyXQm#G26`Sk5`8;nGC)3 zlZKcS%-$4o&qx(AhdshxT!y;ZnaH^+u=N(@2t4BKpY#Yd|DCtN)dC0O&12I*8V zs@FA(&K};@q0yQ|x0!QbjjbHf67mr^UIgf{2*TJw)^9C&aVKQ;yl^E#~ZU0*J24Ah!^`^jk{e7ia`L-)E@xkO65z zw=o&87hYeGD~~j?XN$arHq^bM{I!)oddn+^OD}Dk0+i$$?GaCo0_tU+a@U|#fz9p4 z-@e9XDn-${b+rL^qv}O1uLVuoa^^3N()0Lj@mw|qKDyhgSM$Q*2iXD|w>L0Hz`Nc% zrtVf%kQ;=53XMDgPvBR?N=N>>g8)SI+5A*LURQG)^k?iBhnpyJ%w`yQ68Bsg|ZYVZbL4xzt~) z)I0i}nG3bN<}5*H8kfmQr7c%n%-`^)47v7D+7MMg=Zom+nmt8vp_{Ri#7uV7O!W@o z9f{pp5KxZHii95MM}|L#L}c|0J3d8*F1vVwJp|%36*L$Hb>KQ6ty&Eexr7GA%jg)3 z{!{tQQwpDMJ>68-D)EWyp@1Ga(|We=nIKBRmqQad%YX-v2|90KeuZ&HUU@Jbdt#Oa zC^eT%_h<hNcqNYm$d{ULituasi^0Cd2 zoSd*)yW0k*E$|M#x!-IF5Zly|m`e2ltKIu&Us)Ku@F>!=GtF)QxLYAR>E2Xf%ZSmy z;J?FjE7mkI_+h(-5HKx$bI;M`N5NVOe#8gn&K_7tJ5<$VX1A2G=>X-&RlJ|l z>_J5tU9x=QIRfl}_yRj&shAr%tM;5AXg(ZQrX^_;nRQ{1RWNa&viq(AZ1tC2hTSr- zh4BRqjSeVya7%pXa)*&ynzNVgwI>ykMTF3^gb#wvDWFU_1Q5!@6xy&i{Q>$qM8;oe zcxP8ykg1O&zHVd>&S!#-Ar_$vI+CRNk<;SFuqGKLRp+eT1;J-2I@W}PJM*X8*{MEPB*1)ht33g8f0)m-a1qoIUTbIMAGuH$-X6i(SUA zOV+I}GKA+kuRk@F0rN|QAkd;#Q(E?r_2zv-s)<5@R@+TePBz7}#pi}er9ckzYtK_U zQ)DJ81+W~uS~>l#!=QgEs0`0LdSbtyrW`cYii9XE{?M=~o__O&*Ft(R57V$qga56a z!H0OVUM~X`W(a4jn&zOjwgv{q&e=Z~kYXU<>-zd8*W>;AfIQG`G%(428ZR5;c=nepa;T`7m~*nze}NDkLD3R!-kazTaih0zlSg7h%jIuDXPr1UHgG2C2L z3lKES>l`Fp5mUk8qH3q%IsUtU zODqh<&_3H|dW_uM^;_tJWIUhNwmhkg1&J6N)e!eF?X)Ill!!d5vqLoRK{>U1Z}(;q z{OV%1p!IFK(i^3~JKPTw*NXY9!CgsF0QjWiOiA6yMMajMGfj+}DR9dj&;8V%()7(N z6RNWF5@DGCOkI!{X&&(~d2v{QUy74+2Gz81m*hh`a@ouoOrKPGlKJTXugFoz>QPuS zL>I+A$$B%lBc;{fy|5U0lE`P?!+gwJ!5?f9!@3unG4;&0x(KzEPcTpj=3M&64nnzU z_3!xH?VwWlhn8{5xxu?KGURX96g9(mw(K|9oTgdWn2l?GTGBvc*4q%z_KO} z7%)9S+prBm_Dwz@OWYy9DH*K9@I+p)!Y=W#8!|V*{>`M<6aDL0q;iQNupF{<3EzP{n;;UuG|{mH^RUr09Kb|BJ7L|vXvToI9I~gEnUrI$Kg+{TAG&}>z&yFY zwk=0c75PVw6Cvp#D@e-a4Vq-c6(Pv=z37hk!Zu1qYC{V=T;Bu-l!}kYzeL=K{M24{ zom{J(Qm7S$fOUKk}gD8DKzkQd)^ieq?bS7EyTJ^*Jf%;}3S z7~@BS8ovv?TO3Blg+gQ*xG%VYSt9IJ{sSx2ZNK& z=~f}N1k|DSLy=u*qx_|14E$PwjtcsIJV+VY#`$#ixFMk(FfELrVf{mnX#j~Ig1gv{ zk7+V-_=PNH&bcNB%NZ05KY%xdOb+h`CFoGyy*M`z#BjXI7@j{o$xg9T;Upb(#N^H* z)7Rl#0ng**A?cv`-yK$0zW{pHkOVU0x_Nn-%6{T-`!$KyjvU}Pcj3_qH+#Xg!0#oz z1zBjhYCNmDZha5QODbHB-@#lMMEBp;;E8esIG8b)kOZXps5h+AVZrfUA(#=&R= zoJf&z7)A!j*c&RK_pT}$qXPrmpMJ$9R=7(~aof9l#gJn@b7!OL?7WlTaLAxZFO3j^ z{CUd+nGx&1qu-h-2DI_v3d_+R4!Q0(uc9|Wc`7_Np(PBk54+Aplri<4kt<%LjOoYm zBl(_IaIWKX%samFtj7<)s>jiq{l}ta0t&m7!~t()=UH>=k^axRG~{C5INF`5T(_%a zj1m|sP?!yD5+|vNK0co-Vf`)kWck8geyW+}fU+KL*;E}s4KR5rU`q8DJ&~m|c)9Q9 zd?cEod_@O=ai6q0AtpiHru$k%X%L(xf#Vgo*+=05KfswT9H>Zk>x}DbuM)Uu&aZIG zG;EbTKl8s!nrjwivAi2#{YS|BX{Y3xaX^P@S1vOc)BCNE@RUo1@w;)|d~Zg)c{+6f zJbf}!1;g`A17@)q1t5M?w}D!10 z(@eRH*vpR!GZmH0OQ&v#<_8P%VvN3zk4SF!tKY6n0~C(z<)uISS zdmsvF0EMjO8dKdtHt+sBBK_&xy7&`us@TxOB#)Z@O77*kEgs=xDXcUD$dyAs@2j?KD?30>=VlE} zpl;pl-v*R-00^558)-!re`f|Q{E=e4qZa#BKwo+#_fakOkS)O<t^no~75YwJS>p~88lFibK5+GPd9F6M53{)CnuZ|=z|x!$Ks(rzFVBVidd3*9-|@CUNyx zK=4*lS}>0$1Gr`ISym0;3hX961ap-TrrfQWuoF|zo)x7)a-`O?@E$WWKQz}mSnD#YJjQ z-Dp96#?!?Fg>wQ_w4sOBL9hvnWk=-Iqt7=Y|MeV4!bnIx|37Zo*v|stG+XF10OnV? zJ*dsu9N*3PO8pv44+z!+XVm9zyb;A+Gkwh~UP>}{E(>P?`=y2_(l4SU$WZ`S0h4I{{cdlosO zwkHnl6uCx+BC1HB9p6-4s#(G#;+fTLgRsa3(h_sMbRfi2urXatX0rDn zgo=s7y@P<5O)Y0O3hqbFbk0YfGRxCU%4`_gE$xc!l7_O~P4>M2P(Tb@O_3n_+Sn1p zPU@>ctvPEL&sE{Bxl343aOnzmjOb8#w(;EczN$U`s@kfkt%9PW-_cg32B*5b9Q)T8 zTFJV7wZieLs%K`?ClH&;>33}kUIvmEdXnxRzVSP|8pqCVnn zI;JsQto@G5$q)h>fRaXhlt7nxY14;*yj}4ZgCcFH|4-zYSUlN?V17%v>Icp9c41R( zPkBlZ!oI8InqxYpIq7j)FGF2_W-1lR;=%;Vs7=o0&JUdL4PH$Wvv(b3&-G8S0k&zV zmtSn+jEJuZf$U^j?1P)~K3+`?^|FW25gX;`q@2JM9j>W4K=_L#+qYI(olYR?`{j%V zwCdLkP8CD=a$J8?k+j55KcVlV`nQkZ%Jm@0l`7B^v{k6r$BWKh2Je?Oi@ccfEXJ@k zLS&!)Xmm>;*d0c=4D*6xEo+6}UkJSHUU`J?z#|8A(U^6^>rbO!K^8qDzOBuqXtV?{ z@+y=atyI7Q01ViBr#C=O47L|sH0H3`id7BWFgLbKh%zPZ1kqbh4ro*ndZ=VXsiHI! zeo07X;ur7U)`Q1kP44IDh5{=IhW*K{zI7rwe`3U)hoxKF0dzSrnj}ym;A_9W_#Iev9#E(2{MnBbgLovzue$AF&hFgz`iMerZ0F;`^yRy;$fmSiiZ81 zG*sKNkLW|XucAbK@>&SRh@-AMg(9Usx25>)hA0h*?))^`yu))c>rZsCNbTQ7TZ_}Y zZyB2gi$Aw#$(~aTy(KyfL|AM)4=D`p$9fEfQv)B^;!e=qV?C9$zh0kxjidMi%LAcy zW>~TMfOKNw+WkLw($b9_i050%@E`ve+lOjG$ISFSDgYK-gW)38>UD*BZXS)BICh@5 z$huu-xqm>^gjo?Q9hPECxKdOu@}dw125Q_G=fMlhgBl_ljzYwQbyW(CN+*|OLDA1S zGoD&bJEbBDD3yRPdpHUdgi&nB3{ql2Z1!vmK+AkjWsM|iMp9Sm$y9F*X0EEpDQynB z7y|nZNvY`#tc$4e-A-|FVCK5Qj*W?E&Rk?jB z;2eGo5?X~oKYniN&@DfSK64Lk+}3@|z=Wa&vMtzYt<7NfgB&+wNrch*Q#VF79nm}s zK;k7BCqEL{4yko@LdI#}dKXvi^d7o|e~-_l=O%(64IeKuL~1@=7eez?-Kw8F7R&kI zMmn7ZiLGx%KN7FH_u>TbAVq7675D%@#6d^g9nK-%<#jzPCUePD0uO%&nGI{Tf0|?! z!Cs!{X~AW@qp{^4ULezsTA9@gOHC98SUUFn-5l5YN;1KwnnxMJA4?+OgC(x9+!Dr3 zjV~u(Rw1SP#eXSdTYdiI@mj&Usbt!BGI!lWJ(T%2%Uay=|FwNMq8)^sdTf2 zo7%$btk6uBN~sa?HQM+fW|Yf|i(dMz=NpJFo0wBNZ@`2v1_GuBSWd;EEox^1;AhKtyF=ty;K~jGXt7hLrT81IT>W$Rv|Q7#asoj&gYBP_idF zKDpRYZ9Zb}86?rZ>t2h2K=WsSHR+ysR<_LisV(B%4I9=+lSXJM>rn0 zJcTAwnoQ~3W?QGKDHm<~p@2;4Xr;U5*i#QimO_b2SEYS5n37M|n6+}i^BxRt=lc@~ z6d@OZr4trwX4`>)Wm|9-BT(wy&V(fBm9PPT11p#m+u2^RUm=UoK2_YxI5&c$UsWn4 z%?mlgg=WtOjJ&M^gVd$}$6m&LyQ}EsP$K1f*t;iKFSk5DVGEM7)cg&0yOMBUCszmU z_EZdMCeQQbg`o4v>No_zFS@u2)4XvrT1e>q51RC>93AxIP%LQapg4F>l*U)JN&!$k zL-VK=vQ3rQVv(Zl%OJ_IkaZa;c?ilg(t``V{SkvuC81nFJRD9ks7pm%(KAH(=Y$Zr zH|Ikf7(A0RJ4^tQtIn3=+`iL7pq%`a=d)CVJSKyk%R$dX!2h>@eU60E|6DKgvkBoJ zj_Sf;HNvQ7-~HKB!n4^8joPCy4VzZ~<2F5|EWU_Zz~^xP5;nzRY~Dxtl` zQ?N1}Gh-rt$S&|b6!P=~v>d6g6wgc+xJLU{H>-KX3pdHL{0!Wt4IjDbtzS5?OcF`o zzm9zH&sJ!J-opTprC>dC?z(t>oh&^vaIj(7$C8JEG~SOoAMsp3$HyPKGIpx;-NZY$kOQpudCtmTWJ7LLK5uD*t9l{>6zk6PI~=9^M?NR}RsV|tGHc%-3d z929TTV+GXk1!1K%(sfLWFcL^=pr_2Coa(ZO?1?p$!Z`qyH`{$__E3xlqdyOeB-{J# zE31>%3Eq&r@C(UU%GQLgcWfr)U%~|EBNs1K@BRXph&N=wrJOG3c6+M1Z^9sy+vAd( zWA=gnJ?x;oH>UN~sNUw(mqqgm=)nAYeMT~Y5a9TmjJL6c9nM0=xakhy{>LxdW>#bb zCV=lZ2+;#bXgGIa3d{I}!0D4t72+ADgNfDz)2Forwp^!t3D&;YLkb3FpHHfE#=oDL z2(E0H3@lv0*$_JWQY*xI4u}=iK94~mA1WN4X=Kc)&ax9WlV-9eUNPg;omvi;DSh(r z&ytk{)m%cNsjlf1ah{l*_;28{EWDib?PISADW@Ay)dC}~`)Ega^Vd&GIPOZ_Gtf*uLwK%d z`UV>??rbn%V6E2V&$-7jd>rz(T1-pXu4|V|!yuS2AbtH!e&2%c7JG3-XktX)7eEvabqX&-D#x*tPlJQ;<&Mcs# z{OHmhzrElL^%LN1wD^NaY*uxC^4!;S+GRFEZu=I@qg0jGqVvl^*d6#rgDLNsYT?_&XAJ00G z*J~_N!ND0QATaQ-Lq)}&1y=^T7C`V%T6!&w;}Guncm4qsV94~&0HCD^@>LbR*6R3A zHn4R1_eA`^17s!WH3sXVIWK%+u5Z=P1=}u;)g2SF-1n78BtMCdWJe$#( zQA`5nr@Zyd_doEIyh!k5`p-gua1>>Fj{u?6pX`#Rh0z7S-v2mSgHl?-aTy}o0JmREWmSe|MfJTIaxG^9|Qzu&h2bL}>N4KJf3 zaN0!xeBLk6A_uNCpWMV^y_VD=fqoRe%PPCn{zHSM?>zS8FU2!7hKl<1F9Z5i4}v`q zuuEnNvBU^CNHe)4hKR;sTU`}HOO|x^)*6je*f5-xMxR-oLW8wRPpGMkc*LKGy|%3Nsxj zx|OO9oN8zt3OlUS3oLTGb0?J!98#7qnKQ%FX3Tb z7WKVIu)&g;B6WHG#v|zo9c~Kt9*Hp#siIv5SqWy0vT<+xX!S6F(#%wUK6#qYe7{bV zey6+NUbZi8amq9E!6G|`&&hpGDZhvdY^57F7nRuPL$O5D4A~bj3E{mg?F5KFUi4q& zeYpjCF1acs$UEJ=)dCoFikGm(Nc~VA*9H{us>{L7-so1Q>DgeDP(f_;ogy*BRz z4GeGjeUj$_37c+xxd`2L5g7uav%lsNIAWv~Hk#KMr(+Bwa0_ude|Cia6oIkv!$TWx z1FkUh`v!UjCunxN-){}S4 ziF5Z;Teu(xfBvx_kgVs=7l*?9?n4oak)8fVb7kDE6B1jk6jSNUk39r3ArZT{ZVzt< zM=Yfx)*#JwZ4F|(RDNZ_6ACX>6Vk+a6j0DTDByIN8t}75{#WBmIO2FN3_J`9hV=_c zDXYZ!KM4zI#nHfstx-%Mo>9P-X}}#Ig0w8G%v|iO>@2iQ%#=(_l+-Yc@{VR=#%|_B zRAM|VOw4Rd%>Sn(&9(z%;9r`^zx1dyjZP2*fU)^@aYlCbzKV_yFvi(JPIdrOKUi*f z=t#-tO|4)8-RN3p`*-C1Fdz35;TIC*D(;zt|lv*5&HJzLtIhc09PZTGdK{V82j)r*z zV6|%=1x^WC zsx^@9+4`CsQoIKTFJGmAg#!Wqk49k<_uzwvBM}$y>n}FjyK5dwFlBihpb?7+c-QCt z7m@f{_=Le?#_&9l^iK2UqG7W0gD z=Aez@%)Tl1tZndfQSJTs>$l6{I_IiYvgp^v`kx$Y@Ju61=Qr#Q!93zK9yPPgErouT zIr)3oja^tXqKn*~4(W%YB;e~FKxO+Pm}7v~T~%cqr3$*@1Zum-SOi^#JZlTTUC4N* z>m#A+BR%>QZSll2I=dRHa0Wkpp0cxmoxS)@SLpe~pnLR4+mQ!OZ|&VU#-j7XTKcN5 zvPDsJb#sl^`^EZa08$^0<{uiU{-n((Kn3B9)4ku&cUpTC6i35_iqu-JPRfua2u z#0MX%GiR64WQx|ifLbJ{8qaLFRwyKwuoYsY-66dm0PTx`jx81K0Y zE>nzGfHvG%f+jvvZ&~_e&pAS2RF1E6X*v-p55>jLCD`Q!3Zk%EO^q9sK#eA4#~Mj( ztP7^KO5E4$AQLDRJ_#WMIEGlc$^vw)aaUAfGvH2bY~V!U&rAPQt<33jx%EyYrDgMR zSFjw<@@Vdm>M~^dVb3}`E^4fp?T#!ytxzWX3NN?ka14)frmed@e&0ZpCoTTM7pZrQ zSu9?4z*UPEcg-|+p8E%de!2)UHqOmYcbjBlaCXCeMFc!*V~vXf8kM^Ref(YCIJg|@ znv559co2GX)}3qji(K1C+X`y5ypzMa@$kwdaQ|gdc>4O@8iHZKwSv;^4Mp07isHt5 z8ujy2!ZPxKBC1=p4})KJx{o@jdF^)jx%)IAs?H)tur7}m_c{x>4184;Z^{V_tcc>M zIH+{4<3gu-#KockRxumzzi4vh1BrTjX8vd%RuKVQRn2V;$gRe-v!*W9M&3KKt?RqM zy8a{+gIq4vB(swhBDT`t_=AOORSh&%z^cz^tmE25GJ;GmoB>P%h!AXK1?U9blz?bSUHvn=Uz7L z2n-0M32zAIxUvf|ELy#-5iTB;|@^Bte4a%F;8=br7^K7$D%>}wA1fCx;uw4P#8np&v5^kLIEW4s- z3BTWfXC#Ac^hax*lES}wqw5@3TTeuWXvMQEV!x3+@|T!Zf(4lG>fWk*B-k7= z6mpThYZ8^?JZj&xb2Ma)Fw&J6WWNhUDEwl6u43P|Q!pf3ike984ZlJttcZWy9?<@L zq(!Pr`JpE*;rG^K$UaaLJtOW{{yBo6t1k^)62zzlh%6)^l7FH_en@Vri?v85oxjDk z617uC-R$JsgC|{!xAtBRiAq0G1}*UlSBo6rhAt#81^!4|qN^}=#9_H*`M?z=yCtD> zZA{&MD_e)YhV2S{kGd^ialWH-7>-n^^%uuSSW+?lq~hk31R$Qjo|mpbDNAcHp(tYJ z)JzZp4g||!6`vPv?=}!-Z1wr7hQ;YI`w19^6IP5uY^6R2+iRG0RwOoXfGUBhF_c~W z3>BQ&XfJ?>+}XT-KWF(W)9Qk)C{DP@k;GKbwuKuRB-uZXyOPCUnm?dg@JXJ{o|!Ug z|I<6YQ+}zg5?F~VGm%xFL9lh{D5MG=&yYv}=oLnIK9M2w7tANaUDmf0kDmA7Y|h!P z*4b`2;U$z=N4Dtaq_Ki#M&h^ZFR$%qluTE~&Dr4S#Kl%XvyuYIi55knVq3Iu=0N;w z=S?nP9C-SY2fB;a-Jne24$#{0TzJcVv*4wDOh^BOdvBZfTnpmY>v9g!@^UFRd#@q` zcGL$ulLmD*1R{-<;}F$Y%EVi~^GWLIa4U)lR!BB=Nb>1$MUI*B8}ymXiVViW|EV5p ztQu)aucH5-DT8ApEy>kGxW2&D|2>@~{hzBGQw+9^lct-ZgABM9Y0c}$$Q~J9Yo-7b z9TDgRqz@&mm8CF_+zwSTtxl;k2Y3?~@?M$Acpz&PKj5^m*dI}@gQySK7bY?<@ed%0v7~XxrqLbl>rfl9jF6eo? zx+Enc#O4_icX@I7bvRRpKtcOf^q*3Q=t6v;xbOosVf5`#GF{)_5*{Zr@b1h=>=7C{jEC@!n44LcS(r_PiHnU>n2l3_i0}Vf zq7TC;XYOF>W<|uw%<{hy#{u{$?J8=*XyLQ%aDyCuK&1agM^Zrr?|}^VMAOj_@q#d5 zSqH0+^aQ3BQMi$z!Ew!oz%|4n+H*8l{@G%##H%t@^Xd*rl0vn9JHxi1hv zQjYnI^H?bcV>AFaxHgpv(XKPCYi}&(#o2{cWxv4XMO(8pXHKb_gvT0^eUNG(HJbUP zV2odw=EMSIn}j_GU;$=2;RXnf^cv$@)&-c8xCxtP8^H)+i_!8d9vNps+~;c~i!bDZ zKv-bjOkm;tP*~umMtE|8(oEnb{c!2vt9^KF2q*m@T41t!5N*&7LFRQJ9Q_^tsmrdY z=ix5{n@O#dRS1*+5!EI_Z0QqNbCNB7PO+Du6+*}}aKYSygakMo&$8VTa2*|=Eqd*x zeh&(v_2hU8s^8O#9jrWP(dWwU`4??(Os3phgT+g>>%PL8f4EXdp9KvoAFuq%7e3@H zN5oFIAM>*18IEZo&>T_2h$U~n>B{dHfle1J+jCUH{ReUhQe3cYzn=_2Ml2JSB9eLL zqWe=lPk=EVfeJ`RWq~vl>DiNbYOe+?nH51dMRsi}l(Q5;gZ-~z7RlTiLYW!N7zD|D z`r@R3oeC!LzsC@cmW!`jkvDCXqUSgVm6pqsC@3x*8wma|!WwwTpd0Bma8o2`-#O$c zJ{3|}azN%{A;Px6*FncrI;Ei@2EvbPnft5kfr5I}=Soin$?K_Yh02X%hZ=h4uYWbo zwKSlz0!8t~pnPF?4JDq6EzU0J+c{JOBUy delta 32450 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