From 508cc7ddc2cc4e07d8de409ec6f90ed9f521e749 Mon Sep 17 00:00:00 2001 From: Marc Toussaint Date: Thu, 14 Nov 2024 12:42:58 +0100 Subject: [PATCH] optimization updated --- Optimization/00-introduction.tex | 558 +++++++++ Optimization/01-introduction.tex | 365 ------ Optimization/01-unconstrained.tex | 114 ++ Optimization/02-linesearch.tex | 311 +++++ Optimization/02-unconstrainedOpt.tex | 1006 ---------------- Optimization/03-constrainedOpt.tex | 1027 ----------------- Optimization/03-newton.tex | 430 +++++++ Optimization/04-approximateNewton.tex | 487 ++++++++ Optimization/04-convexProblems.tex | 514 --------- Optimization/05-constrained.tex | 174 +++ .../05-globalBayesianOptimization.tex | 724 ------------ Optimization/06-blackBoxOpt.tex | 961 --------------- Optimization/06-logBarrier.tex | 241 ++++ Optimization/07-augLag.tex | 285 +++++ Optimization/08-lagrangian.tex | 341 ++++++ Optimization/09-convexOpt.tex | 666 +++++++++++ Optimization/10-differentiableOpt.tex | 356 ++++++ Optimization/11-appendix.tex | 443 +++++++ Optimization/12-stochasticGradient.tex | 519 +++++++++ Optimization/13-derivativeFree.tex | 244 ++++ Optimization/14-EDAs.tex | 417 +++++++ Optimization/15-RL.tex | 327 ++++++ Optimization/16-noFreeLunch.tex | 468 ++++++++ Optimization/17-bayesOpt.tex | 545 +++++++++ Optimization/e00-mathsCheck.tex | 121 ++ Optimization/e01-introduction.tex | 94 -- Optimization/e01-lineSearch.tex | 100 ++ Optimization/e02-newtonMethod.tex | 66 ++ Optimization/e02-unconstrainedOpt.tex | 85 -- Optimization/e03-newtonConstraints.tex | 100 ++ Optimization/e03-newtonMethods.tex | 67 -- Optimization/e04-constraints.tex | 131 +-- Optimization/e05-lagrange.tex | 83 -- Optimization/e05-lagrangian.tex | 97 ++ Optimization/e06-convex.tex | 81 ++ Optimization/e06-primaldual.tex | 75 -- Optimization/e07-convexOpt.tex | 50 - Optimization/e07-differentiableOpt.tex | 56 + Optimization/e08-ILPrelaxation.tex | 78 -- Optimization/e08-stochGrad.tex | 60 + Optimization/e09-globalOptim.tex | 35 - Optimization/e09-stochasticSearch.tex | 53 + Optimization/e10-blackBoxOpt.tex | 37 - Optimization/e10-globalOpt.tex | 72 ++ Optimization/e11-blackBoxOpt_2.tex | 54 - Optimization/e12-stochasticSearch.tex | 52 - Optimization/exx-leftOver.tex | 45 - Optimization/pics/bottou.png | Bin 0 -> 38515 bytes Optimization/pics/boundPic.png | Bin 0 -> 499164 bytes Optimization/pics/evoPlants.png | Bin 0 -> 482621 bytes Optimization/script.tex | 486 ++++---- README.md | 10 +- .../cutSolutions.sh => cutSolutions.sh | 0 {Optimization/pics => pics}/2ndOrder.svg | 0 pics/bertsekas-fig1.png | Bin 0 -> 15667 bytes pics/buga.jpg | Bin 0 -> 83876 bytes pics/folding.png | Bin 0 -> 101602 bytes .../pics => pics}/gaussianProcess2.png | Bin .../pics => pics}/gaussianProcess3.png | Bin pics/openai-ES3.png | Bin 0 -> 33211 bytes pics/projectedGradient.png | Bin 0 -> 8324 bytes pics/statics.png | Bin 0 -> 113038 bytes 62 files changed, 8063 insertions(+), 5648 deletions(-) create mode 100644 Optimization/00-introduction.tex delete mode 100644 Optimization/01-introduction.tex create mode 100644 Optimization/01-unconstrained.tex create mode 100644 Optimization/02-linesearch.tex delete mode 100644 Optimization/02-unconstrainedOpt.tex delete mode 100644 Optimization/03-constrainedOpt.tex create mode 100644 Optimization/03-newton.tex create mode 100644 Optimization/04-approximateNewton.tex delete mode 100644 Optimization/04-convexProblems.tex create mode 100644 Optimization/05-constrained.tex delete mode 100644 Optimization/05-globalBayesianOptimization.tex delete mode 100644 Optimization/06-blackBoxOpt.tex create mode 100644 Optimization/06-logBarrier.tex create mode 100644 Optimization/07-augLag.tex create mode 100644 Optimization/08-lagrangian.tex create mode 100644 Optimization/09-convexOpt.tex create mode 100644 Optimization/10-differentiableOpt.tex create mode 100644 Optimization/11-appendix.tex create mode 100644 Optimization/12-stochasticGradient.tex create mode 100644 Optimization/13-derivativeFree.tex create mode 100644 Optimization/14-EDAs.tex create mode 100644 Optimization/15-RL.tex create mode 100644 Optimization/16-noFreeLunch.tex create mode 100644 Optimization/17-bayesOpt.tex create mode 100644 Optimization/e00-mathsCheck.tex delete mode 100644 Optimization/e01-introduction.tex create mode 100644 Optimization/e01-lineSearch.tex create mode 100644 Optimization/e02-newtonMethod.tex delete mode 100644 Optimization/e02-unconstrainedOpt.tex create mode 100644 Optimization/e03-newtonConstraints.tex delete mode 100644 Optimization/e03-newtonMethods.tex delete mode 100644 Optimization/e05-lagrange.tex create mode 100644 Optimization/e05-lagrangian.tex create mode 100644 Optimization/e06-convex.tex delete mode 100644 Optimization/e06-primaldual.tex delete mode 100644 Optimization/e07-convexOpt.tex create mode 100644 Optimization/e07-differentiableOpt.tex delete mode 100644 Optimization/e08-ILPrelaxation.tex create mode 100644 Optimization/e08-stochGrad.tex delete mode 100644 Optimization/e09-globalOptim.tex create mode 100644 Optimization/e09-stochasticSearch.tex delete mode 100644 Optimization/e10-blackBoxOpt.tex create mode 100644 Optimization/e10-globalOpt.tex delete mode 100644 Optimization/e11-blackBoxOpt_2.tex delete mode 100644 Optimization/e12-stochasticSearch.tex delete mode 100644 Optimization/exx-leftOver.tex create mode 100644 Optimization/pics/bottou.png create mode 100644 Optimization/pics/boundPic.png create mode 100644 Optimization/pics/evoPlants.png rename RobotLearning/cutSolutions.sh => cutSolutions.sh (100%) rename {Optimization/pics => pics}/2ndOrder.svg (100%) create mode 100644 pics/bertsekas-fig1.png create mode 100644 pics/buga.jpg create mode 100644 pics/folding.png rename {MachineLearning/pics => pics}/gaussianProcess2.png (100%) rename {MachineLearning/pics => pics}/gaussianProcess3.png (100%) create mode 100644 pics/openai-ES3.png create mode 100644 pics/projectedGradient.png create mode 100644 pics/statics.png diff --git a/Optimization/00-introduction.tex b/Optimization/00-introduction.tex new file mode 100644 index 0000000..28d7578 --- /dev/null +++ b/Optimization/00-introduction.tex @@ -0,0 +1,558 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Introduction} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Learning \& Intelligent Systems Lab}{ + +~ + +\small + +\hspace*{-5mm}\twocol[.05]{.5}{.45}{ + +\medskip + +\cen{\url{argmin.lis.tu-berlin.de}} + +~ + +\item[] \textbf{Research} +\begin{items} +\item Intersection of AI \& Robotics +\item Combining learning and reasoning +\item physical reasoning, task-and-motion planning (logic-geometric programming) +\item reinforcement learning, perception-based policies, reactive control/learning +\item driven by robotics problems +\end{items} + +%% ~ + +%% \item[] \textbf{Physical Reasoning} + +%% \medskip + +%% \hspace*{-5mm}\twocol[0]{.3}{.75}{ +%% \showh[1]{kitchen} +%% }{ +%% \begin{items}\ttiny +%% \item CV:~ What objects? Labels? Segments? +%% \item img2text, VQA:~ Answer ``Where is the knife?'' +%% \item Physical Reasoning: What can \emph{you do} in that scene? How could it look like after acting? +%% \end{items} +%% } + +}{ + +\vspace*{-5mm} + +\item[] \textbf{Applications} + +\twocol{.5}{.5}{ + +\movh[]{1.}{movies/RSS-concat600600} + +~ + +\movh[]{1.}{movies/21-valentingRSSsubmission} + +}{ + +\movc[]{.9}{videos/22-03-SecMPC-both-2x} + +~ + +\show[.9]{jungsu2} + +~ + +\show[.9]{jungsu1} + +} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublectureHide{Motivation}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why is Optimization interesting?}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +$$\d \int_{t_0}^{t_1} L(q(t), \dot q(t), t)~ dt = 0$$ + +\vfill + +\tiny\hfill Principle of Least Action + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +\show[.3]{folding} + +\vfill + +\tiny\hfill protein folding + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +$$\min_{\b}\norm{\b}^2 ~\st~ y_i (\phi(x_i)^\T \beta) \ge 1,~ i=1,\dots,n$$ + +\vfill + +\tiny\hfill support vector machine + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +$$\min_{f\in\HH}~ \sum_{i=1}^n \ell(f(x_i), y_i)$$ + +\vfill + +\tiny\hfill loss minimization (e.g., NNs) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +$$\min_{u,x} \int_0^T\! f(x(t), u(t))~ dt +~\st~ \dot x = f(x,u),~ g(x(t))\le 0,~ h(x(T))=0$$ + +\vfill + +\tiny\hfill optimal control + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\vfill + +\cen{\showh[.3]{statics}\qquad\showh[.3]{buga}} + +\vfill + +\tiny\hfill construction statics + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\threecol{.3}{.3}{.3}{ + +\movh{.9}{movies/RSS-concat600600} + +~ + +\movh{.9}{movies/20-IROS-BUGAassembly} + +~ + +}{ + +\movh{.9}{movies/20-DeepVisualReasoningData} + +~ + +\movh{.9}{videos/19-banana-03} + +}{ + +%%\movh{.9}{videos/19-forceBased-pushWithStickFloat3_COMP} +\movh{.9}{videos/19-forceBased-pushWithStick-good_COMP} + +~ + +\movh{.9}{videos/19-forceBased-liftRing-dynamic_COMP} + +%\movh{.9}{videos/19-forceBased-bookOnShelf2_COMP} + +} + +~ + +\tiny\hfill ``Logic Geometric Programming'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why is Optimization interesting?}{ + +%% \item {\small +%% In an otherwise unfortunate interview I've been asked why ``we guys'' +%% (AI, ML, optimal control people) always talk about +%% optimality. ``People are by no means optimal'', the interviewer +%% said. I think that statement pinpoints the whole misunderstanding of +%% the role and concept of optimality principles.} + + +\item \emph{Optimality principles are a means of scientific and engineering +description} + +\item It is often easier to describe a thing (natural or artifical) +via an optimality priciple than directly + +\item Almost any scientific field uses optimality principles to +describe nature \& artifacts +\begin{items} +\item Physics, Chemistry, Biology, Mechanics, ... +\item Operations research, scheduling, ... +\item Computer Vision, Speach Recognition, Machine Learning, Robotics, AI, ... +\end{items} + +~ + +\item Endless applications + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Teaching optimization}{ + +\item Optimization includes largely different approaches/formalisms: +\begin{items} +\item Standard continuous, convex or non-linear optimization +\item Discrete Optimization +\item Global Optimization +\item Stochastic Optimization, Evolutionary Algorithms, Swarm optimization, etc +\end{items} + +~\mypause + +\item This lecture focusses on continuous, convex or non-linear optimization + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Optimization Problems}{ + +\item Generic optimization problem, also called \textbf{Mathematical Program}: + +\medskip + +Let $x\in\RRR^n,~ f:~ \RRR^n \to \RRR,~ g:~ \RRR^n \to \RRR^m,~ +h: \RRR^n\to\RRR^l$. Find +$$\min_x f(x) \st g(x)\le 0,~ h(x)=0$$ + +\pause +\small + +\item \textbf{Blackbox}: only $f(x)$ can be evaluated + +\item \textbf{Gradient}: $\na f(x)$ can be evaluated + +{\tiny +\item Gauss-Newton type: $f(x) = \phi(x)^\T \phi(x)$ and +$\na \phi(x)$ can be evaluated +} + +\item \textbf{Stochastic Gradient}: only ``samples of $\na f(x)$'' can be evaluated efficiently + +\item \textbf{2nd order}: $\he f(x)$ can be evaluated + +\item Approximate methods: +\begin{items} +\item Use samples of $f(x)$ to approximate $\na f(x)$ locally +\item Use samples of $\na f(x)$ to approximate $\he f(x)$ locally +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Planned Outline}{ +\small +\item Part 1: Downhill algorithms for unconstrained optimization: +\begin{items} +\item gradient descent, backtracking line search, Wolfe conditions, convergence properties +\item covariant gradients, Newton, quasi-Newton methods, (L)BFGS +\end{items} + +\item Part 2: Algorithms for constrained optimization: +\begin{items} +\item KKT conditions, Lagrangian +\item Log-barrier, Augmented Lagrangian, primal-dual Newton +\item SQP +\end{items} + +\item Part 3: Extended topics (subject to change): +\begin{items} +\item Stochastic gradient methods +\item Global optimization +\item stochastic search, evolutionary algorithms +\item maybe this year: ADMM \& NLP Reformulations +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +~ + +\item Maths for Intelligent Systems script on ISIS page + +~ + +\item Boyd and Vandenberghe: \emph{Convex Optimization.} + +\url{http://www.stanford.edu/~boyd/cvxbook/} + +~ + +\item Nocedal \& Wright: \emph{Numerical Optimization} + +\url{www.bioinfo.org.cn/~wangchao/maa/Numerical_Optimization.pdf} + + +~ + +\hfill \tiny(this course won't of course cover all this - just for reference) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Algorithms, Libraries}{ + +%% \item Core Free Solver libraries: +%% \begin{items} +%% \item NLopt, IPopt, ceres +%% \end{items} + +%% \item Useful lists: +%% \begin{items} +%% \item \url{http://roboptim.net/solvers.html} +%% \item \url{https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#comparing-algorithms} +%% \item \url{https://drake.mit.edu/doxygen_cxx/group__solvers.html} +%% \end{items} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Organization}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item 6 LPs (180h, 12h/w, 15 weeks) + +\item Lectures, weekly, in person + +\item Exercise Sheets \& Coding Assignments: +\begin{items} +\item Weekly exercise sheets, mostly analytic problems, discussed in +the tutorials +\item Hand-in coding assignments, every $\sim3$ weeks: +Submit your optimization algorithms/problems via git $\to$ are +numerically evaluated/graded +\end{items} + +~ + +\item ISIS as central webpage + +\item Contact: +\begin{items} +\item Tutors: Sayantan Auddy \url{}, Cornelius +Braun, Hongyou Zhou +\item Office (grades/etc): Ilaria Cicchetti-Nilsson \url{} +\end{items} + +%% \newcommand{\face}[2]{ +%% \begin{minipage}{12mm} +%% \centering +%% \showh[.8]{faces/#1}\\ +%% \ttiny #2 +%% \end{minipage} +%% } + +%% \hfill\face{quim}{Quim Ortiz de Haro}\quad +%% \face{ilaria}{Ilaria Cicchetti-Nilsson} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Assignments \& Exam}{ + +\item Voting System for the exercise sheets: +\begin{items} +\item Before attending the tutorial, students mark in an ISIS +questionnaire which exercises they have worked on +\item Students are randomly selected to present their solutions (no need for correct solutions -- just something to present and discuss) +\item When not attending: upload pdf notes/solutions on ISIS +\end{items} + +~ + +\item \textbf{Exam prerequisites:} +\begin{items} +\item at least 50\% votes in the exercises, and +\item at least 50\% points in the hand-in coding assignments +%\item[] \emph{(Moses: Bestehen der benoteten Programmier- und +%Hausaufgaben)} + +\medskip + +(If you fulfilled these prerequisites last year, you don't have to +redo them.) +\end{items} + +~ + +\item The written exam will be about analytical problems, determines final grade (no portfolio) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Registration}{ + +\item Registration for the exam in Moses will open in January + +\item To gain the exam prerequisites you'll have to register for the coding +exercises (will be organized in the second/third week), and submit your votes on the exercise sheets + +\item There is no further registration for this course necessary + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Prerequisites}{ + +\item Module description: +\begin{items} +\item Good knowledge in linear algebra and calculus + +$\to$ Specifically, the \textbf{`Maths for Intelligent Systems Script'} up to Chapter 3. + +\item Basic programming in Python +\end{items} + +~\pause + +\item Maths Self-Check: +\begin{items} +\item Are you familiar with basics on functions, Jacobians, Hessian, matrix derivatives? (Sec. 2)? +\item Do you have intuition about basic linear algebra? (Fig. 2 and Sec. 3.6) +\item Can you solve basic matrix equations and derive gradients/Jacobians? (e.g. Sec 2.4) +\end{items} + +~\pause + +\item Coding: +\begin{items} +\item Numeric coding in Python (numpy) +\item Familiarity with git will help +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Module description (Moses 41016)}{ + +\item Learning Outcomes +\begin{items}\ttiny +\item The students will be able to develop and apply optimization algorithms. +\item They can formulate real-world problems appropriately as mathematical programs. +\item They have a detailed understanding of the different categories of optimization problems, and methods to approach them. +\item They have a basic understanding of the theory behind and properties of optimization algorithms. +\item They have an overview of and experience with existing optimization software and are able to apply them to solve optimization problems. +\end{items} + +\item Content +\begin{items}\ttiny +\item The course is on continuous optimization problems, with focus on non-linear mathematical programming (constrained optimization). +\item Part 1 introduces efficient downhill algorithms in the unconstrained case: ... +\item Part 2 will introduce efficient algorithms for constrained optimization: ... +\item Part 3 will cover extended topics (global optimization, stochastic gradient, stochastich search) ... +\end{items} + +\item Prerequisites +\begin{items} +\item Good knowledge in linear algebra and calculus +\item Basic programming knowledge in Python +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Module description (Moses 41016)}{\label{lastpage} + +\item Grading +\begin{items} +\item graded, written exam, English (120min) +\end{items} + +\item This module is used in the following module lists: +\begin{items}\ttiny +\item Computational Engineering Science (Informationstechnik im Maschinenwesen) (Master of Science) +\item Computer Engineering (Master of Science) +\item Computer Science (Informatik) (Master of Science) +\item Elektrotechnik (Master of Science) +\item ICT Innovation (Master of Science) +\item Medieninformatik (Master of Science) +\item Physikalische Ingenieurwissenschaft (Master of Science) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/01-introduction.tex b/Optimization/01-introduction.tex deleted file mode 100644 index fe2b050..0000000 --- a/Optimization/01-introduction.tex +++ /dev/null @@ -1,365 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\renewcommand{\topic}{Introduction} -\renewcommand{\keywords}{} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Why Optimization is interesting!}{ - -\item {\small -In an otherwise unfortunate interview I've been asked why ``we guys'' -(AI, ML, optimal control people) always talk about -optimality. ``People are by no means optimal'', the interviewer -said. I think that statement pinpoints the whole misunderstanding of -the role and concept of optimality principles.} - -\begin{items} -\item \emph{Optimality principles are a means of scientific (or engineering) -description.} -\item It is often easier to describe a thing (natural or artifical) -via an optimality priciple than directly -\end{items} - -~ - -\item Which science does \emph{not} use optimality principles to -describe nature \& artifacts? -\begin{items} -\item Physics, Chemistry, Biology, Mechanics, ... -\item Operations research, scheduling, ... -\item Computer Vision, Speach Recognition, Machine Learning, Robotics, ... -\end{items} - -~ - -\item Endless applications - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Teaching optimization}{ - -\item Standard: \emph{Convex Optimization, Numerical Optimization} - -\item Discrete Optimization~ (Stefan Funke) - -\item Exotics: Evolutionary Algorithms, Swarm optimization, etc - -~\mypause - -\item In this lecture I try to cover the standard topics, but include -as well work on stochastic search \& global optimization - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Types of optimization problems} -\slide{Rough Types of Optimization Problems}{ - -\item Generic optimization problem: - -Let $x\in\RRR^n,~ f:~ \RRR^n \to \RRR,~ g:~ \RRR^n \to \RRR^m,~ -h: \RRR^n\to\RRR^l$. Find -\begin{align*} -\min_x\quad & f(x)\\ -\st & g(x)\le 0\comma h(x)=0 -\end{align*} - -\item \textbf{Blackbox}: only $f(x)$ can be evaluated - -\item \textbf{Gradient}: $\na f(x)$ can be evaluated - -{\tiny -\item Gauss-Newton type: $f(x) = \phi(x)^\T \phi(x)$ and -$\na \phi(x)$ can be evaluated -} - -\item \textbf{2nd order}: $\he f(x)$ can be evaluated - -~ - -\item ``Approximate upgrade'': - --- Use samples of $f(x)$ to approximate $\na f(x)$ locally - --- Use samples of $\na f(x)$ to approximate $\he f(x)$ locally - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimization in Machine Learning: SVMs}{ - -\item optimization problem - -$\max_{\b, \norm{\b}=1} M$ \hspace{0.5cm} subject to $y_i (\phi(x_i)^\T -\beta) \ge M, \quad i=1,\dots,n$ - -\item can be rephrased as - -$\min_{\b}\norm{\b}$ \hspace{0.5cm} subject to $y_i (\phi(x_i)^\T \beta) \ge -1, \quad i=1,\dots,n$ - -\emph{Ridge regularization} like ridge regression, but different loss - -{ -\showh[.35]{svm_trenngeraden} -\hspace{1cm} -\showh[.45]{svm_margin} -} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimization in Robotics}{ - -\item Trajectories: - -Let $x_t \in\RRR^n$ be a joint configuration and $x = x_{1:T} = -(x_1,\ldots,x_T)$ a trajectory of length $T$. Find -\begin{align} \label{eqOpt} -\begin{split} -\min_{x}\quad -& \sum_{t=0}^{T} f_t(x_{t-k:t})^\T f_t(x_{t-k:t}) -%~+~ \sum_{t,t'} k(t,t') x_t^\T x_{t'} - \\ -\st -& \forall_t:~ g_t(x_t) \le 0\comma h_t(x_t) = 0 -\end{split} -\end{align} - - -\item Control: -\begin{align} -\min_{u, \ddot q, \l}\quad - & \norm{u-a}^2_H \\ -\st - & u = M \ddot q + h + J_g^\T \lambda \\ - & J_\phi\ddot q = c \\ - & \l = \l^* \\ - & J_g\ddot q = b -\end{align} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimization in Computer Vision}{ - -~ - -\item Andres Bruhn's lectures - -\item Flow estimation, (relaxed) min-cut problems, segmentation, ... - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{}{ - -%% \tiny -%% log-barrier\\ -%% simplex\\ -%% particle swarm\\ -%% MCMC (simulated annealing)\\ -%% (L)BFGS\\ -%% blackbox stochastic search\\ -%% Newton\\ -%% Rprop\\ -%% EM\\ -%% primal/dual\\ -%% greedy\\ -%% (conj.) gradients\\ -%% KKT\\ -%% line search \\ -%% linear/quadratic programming\\ - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{}{ - -%% This is the first time I give the lecture! - -%% ~ - -%% \item It'll be improvised - -%% \item You can tell me what to include - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Planned Outline}{ -\small -\item Unconstrained Optimization: Gradient- and 2nd order methods -\begin{items} -\item stepsize \& direction, plain gradient descent, steepest descent, line -search \& trust region methods, conjugate gradient - -\item Newton, Gauss-Newton, Quasi-Newton, (L)BFGS -\end{items} - - -\item Constrained Optimization -\begin{items} -\item log barrier, squared penalties, augmented Lagrangian - -\item Lagrangian, KKT conditions, Lagrange dual, log barrier -$\oto$ approx.\ KKT -\end{items} - - - - -\item Special convex cases -\begin{items} -\item Linear Programming, (sequential) Quadratic Programming -\item Simplex algorithm -\item Relaxation of integer linear programs -\end{items} - -\item Global Optimization -\begin{items} -\item infinite bandits, probabilistic modelling, exploration vs.\ -exploitation, GP-UCB -\end{items} - -\item Stochastic search -\begin{items} -\item Blackbox optimization (0th order methods), MCMC, downhill simplex -\end{items} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Planned benchmark problems used in exercises}{ - -%% \item Analytic functions (scalable to very large $n$, controlled conditioning) - -%% -- quadratic: $f(x) = x^\T A x$ - -%% -- convex: $f(x) = c^\T x - \sum_{i=1}^m \log(b_i + a_i^\T x)$, -%% $c,a_i\sim\NN(0,1)$, $b_i\sim \UU[.3,3]$ - -%% -- non-convex: I'll think of some mean ones - -%% ~ - -%% \item Robotics path planning - -%% -- collision constrained, or ``unconstrained'' - -%% ~ - -%% \item Planned: Convolutional neural net to detect faces in images - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Books}{ - -~ - -\twocol{.4}{.5}{ -\show{bv_cvxbook_cover.jpg} -}{ - -Boyd and Vandenberghe: \emph{Convex Optimization.} - -\url{http://www.stanford.edu/~boyd/cvxbook/} - -} - -~ - -~ - -\hfill \tiny(this course will not go to the full depth in math of Boyd et al.) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Books}{ - -~ - -\twocol{.4}{.5}{ -\show{nocedal-wright.png} -}{ - -Nocedal \& Wright: \emph{Numerical Optimization} - -\url{www.bioinfo.org.cn/~wangchao/maa/Numerical_Optimization.pdf} - -} - -~ - -~ - -%\hfill \tiny(this course will not go to the full depth in math of Boyd et al.) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Organisation}{\label{lastpage} - -\item Webpage: - -\cen{\tiny\url{http://ipvs.informatik.uni-stuttgart.de/mlr/marc/teaching/15-Optimization/}} -\begin{items} -\item Slides, Exercises \& Software (C++) -\item Links to books and other resources -\end{items} - -\item Admin things, please first ask: - - Carola Stahl, {\tiny\tt - Carola.Stahl\@ipvs.uni-stuttgart.de}, Raum 2.217 - -~ - -\item Rules for the tutorials: - -\begin{items} -\item Doing the exercises is crucial! - -\item At the beginning of each tutorial: - --- sign into a list - --- mark which exercises you have (successfully) worked on - -\item Students are randomly selected to present their solutions - -\item {\color{red}You need 50\% of completed exercises to be allowed -to the exam} - -\item Please check 2 weeks before the end of the term, if you can take -the exam -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slidesfoot diff --git a/Optimization/01-unconstrained.tex b/Optimization/01-unconstrained.tex new file mode 100644 index 0000000..ed8ee0f --- /dev/null +++ b/Optimization/01-unconstrained.tex @@ -0,0 +1,114 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Overview -- Downhill Algorithms for Unconstrained Optimization} +\renewcommand{\keywords}{} +%% \renewcommand{\keywords}{Descent direction \& stepsize, +%% plain gradient descent, stepsize adaptation \& backtracking line +%% search, trust region, steepest descent, Newton, Gauss-Newton, +%% Quasi-Newton, BFGS, conjugate gradient, exotic: Rprop} + +\slides + +\newcommand{\lscurv}{\r_{\text{ls2}}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Problem Formulation}{ + +\item Unconstrained non-linear mathematical program: +$$\min_{x\in\RRR^n} f(x)$$ +\begin{items} +\item for smooth function $f: \RRR^n \to \RRR$ +\item we can query $f(x)$, $\na f(x)$ (gradient methods),\\ +and sometimes $\he f(x)$ (2nd order methods) +\end{items} + +~\pause + +~ + +\item Application examples in robotics, model fitting, parameter optimization, etc. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\hspace*{-5mm} We aim for methods that are: + +~ + +\item \textbf{monotone} + \begin{items} + \item generates a sequence of points $x_i$ that gradually reduce the value $f(x_i) \le f(x_{i\1})$ + \end{items} + +\item \textbf{convergent} + \begin{items} + \item under bounded positive curvature assumptions we want exponential convergence rates guaranteed + \end{items} + +\item \textbf{invariant to rescaling of $f$} + +\item \textbf{invariant to rescaling of $x$} (or to linear transform of $x$) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Note on local vs.\ global optimization}{ + +\item Part I and II focus on local optimization -- the key challenge is to converge to local optima as fast as possible + +~ + +\item Global optimization requires to search for various local optima + \begin{items} + \item Restart local downhill solvers from various points + \item Use Bayesian Optimization or other explicit global search concepts + + $\to$ Global Optimization lecture + \end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Note on convex vs.\ non-convex optimization}{ + +\item The methods we discuss equally apply to convex and non-convex problems + \begin{items} + \item If convex (with bounded curvature) they have strong convergence guarantee + \item If non-convex, they still run downhill to local minima, but without the same guarantee + \end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{\label{lastpage} + + ~ + +\item Gradient descent, \textbf{stepsize} adaptation, \& backtracking line search + + ~ + +\item Steepest descent \textbf{direction}, Newton, damping \& non-convex fallback, trust region + +\item Quasi-Newton, Gauss-Newton, BFGS, conjugate gradient + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/02-linesearch.tex b/Optimization/02-linesearch.tex new file mode 100644 index 0000000..414754d --- /dev/null +++ b/Optimization/02-linesearch.tex @@ -0,0 +1,311 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Gradient Descent \& Backtracking Line Search} +\renewcommand{\keywords}{plain gradient descent, stepsize adaptation, backtracking line search, Wolfe conditions, exponential convergence} + +\slides + +\providecommand{\lscurv}{\r_{\text{ls2}}} +\providecommand{\Min}{\text{Min}} +\renewcommand{\subtopic}{Gradient Descent} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Plain gradient descent} +\slide{Gradient descent}{ + + +\item Problem:~ $\min_{x\in\RRR^n} f(x)$ ~ for smooth objective function:~ $f:~ \RRR^n \to \RRR$ + +\medskip + +Gradient vector:~ $\na f(x) = \[\Del x f(x)\]^\T ~ \in \RRR^n$ + + +~\pause + +\item Plain gradient descent: iterative steps in the direction $-\na f(x)$: + +\twocol{.7}{.3}{ +\begin{algo} +\Require initial $x\in\RRR^n$, function $\na f(x)$, stepsize $\a$, tolerance $\t$ +\Ensure $x$ +\Repeat +\State $x \gets x - \a \na f(x)$ +\Until $|\D x| <\t$ ~ [perhaps for 10 iterations in sequence] +\end{algo} +}{ +\showh[.6]{gradient_descent} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Stepsize and step direction as core issues} +\slide{}{ + +\item Plain gradient descent may not be efficient + +\item Two core issues (for any downhill method): + +~ + +\begin{center}\large +\textbf{1. Stepsize} + +\textbf{2. Step direction} +\end{center} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Stepsize}{ + +\item Making steps proportional to $\na f(x)$? + +~ + +\show[.35]{gradientOpt} + +\item We need methods that robustly adapt stepsize + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Stepsize adaptation} +\slide{Stepsize Adaptation: Backtracking Line Search}{ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x)$ and $\na f(x)$, +tolerance $\t$, parameters (defaults: +$\ainc=1.2, \adec=0.5, \stepmax=\infty, \lsstop=0.01$) +\State initialize stepsize $\a=1$ +\Repeat +\State $\step \gets -\frac{\na f(x)}{|\na +f(x)|}$ \Comment{(alternative: $\step=-\na f(x)$)} +\While{$f(x+\a\step) > f(x) {\color{blue}+ \lsstop \na f(x)^\T (\a\step)}$} \Comment{\textbf{line search}} +\State $\a \gets \adec \a$ \Comment{REJECT \& decrease stepsize} +\EndWhile +\State $x \gets x + \a\step$ \Comment{ACCEPT} +\State $\a \gets \min\{\ainc\a,\stepmax\}$ \Comment{increase stepsize} +\Until $|\a\step| <\t$ ~ \Comment{perhaps for 10 iterations in sequence} +\end{algo} +%% \begin{algo} +%% \Require initial $x\in\RRR^n$, functions $f(x)$ and $\na f(x)$, +%% tolerance $\t$, parameters (defaults: $\ainc=1.2, \adec=0.5, \lsstop=0.01$) +%% \Ensure $x$ +%% \State initialize stepsize $\a=1$ +%% \Repeat +%% \State $\step \gets -\frac{\na f(x)}{|\na +%% f(x)|}$ \Comment{(alternative: $\step=-\na f(x)$)} +%% \While{$f(x+\a\step) > f(x) {\color{green}+ \lsstop \na f(x)^\T (\a\step)}$} \Comment{backtracking line search} +%% \State $\a \gets \adec \a$ \Comment{decrease stepsize} +%% \EndWhile +%% \State $x \gets x + \a\step$ +%% \State $\a \gets \ainc \a$ \Comment{increase stepsize +%% (alternative: $\a=1$)} +%% \Until $|\a\step| <\t$ ~ [perhaps for 10 iterations in sequence] +%% \end{algo} + +~ + +\item $\a$ determines the absolute stepsize + +\item Guaranteed monotonicity (by construction) + +(``Typically'' ensures convergence to locally convex minima; see later) +%% ~ + +%% If $f$ is convex $\To$ convergence + +%% For typical non-convex bounded $f$ $\To$ convergence to local optimum + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Backtracking Line Search} +\key{Line Search} +\slide{Backtracking line search}{ + +\item Line search in general denotes the problem +$$\min_{\a\ge 0} f(x+\a\step)$$ +for some step direction $\step$. + +\item The most common line search is \textbf{backtracking}, which +decreases $\a$ as long as +$$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$$ + +$\adec$ describes the stepsize decrement in case of a rejected step + +$\lsstop$ describes a minimum desired decrease in $f(x)$ + +%% \item In the 2nd order methods we described, we chose $a=0$: + +%% We did not invest into further line search steps if $f(x+\a\step) \le f(x)$ + +\item Boyd at al: typically $\lsstop\in[0.01,0.3]$ and $\adec\in[0.1,0.8]$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Backtracking line search}{ + +~ + +~ + +\show[.6]{backtracking} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Wolfe conditions} +\slide{Wolfe Conditions}{ + +~ + +\item The 1st Wolfe condition (``sufficient decrease condition'') +$$f(x+\a\step) \le f(x) + \lsstop \na f(x)^\T (\a\step)$$ +requires a decrease of $f$ at least $\lsstop$-times ``as expected'' + +\item The 2nd (stronger) Wolfe condition (``curvature condition'') +$$|\na f (x + \a\step)^\T \step| \le \lscurv |\na f(x)^\T \step|$$ +requires a decrease of the slope by a factor $\lscurv$. + +$\lscurv\in(\lsstop,\half)$ (for conjugate gradient) + +\item See Nocedal~et~al., Section 3.1 \& 3.2 for more general proofs of convergence of any +method that ensures the Wolfe conditions after each line search + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Convergence for strong convexity} +\slide{Convergence for strongly convex functions}{ + +~ + +\item \textbf{Theorem} (Exponential convergence on convex functions) +\begin{items} +\item Let $f:\RRR^n \to \RRR$ be an objective function +\item with eigenvalues $\l$ of the Hessian $\he f(x)$ bounded by $m < \l < M$, ~ with $m>0$, $\forall x\in\RRR^n$ +\item Then gradient descent with backtracking line search converges +exponentially with convergence rate $(1-2 \frac{m}{M}\lsstop\adec)$. + +~ + +{\tiny More precisely: Let $x_i$ and $x_{i+1}$ be two accepted iterates +(backtracking line search started at $x_i$ and stopped by accepting +$x_{i+1}$), then + $$f(x_{i+1}) - f_\Min \le \[1-\frac{2m\lsstop\adec}{M}\]~ (f(x_i) - + f_\Min) ~.$$ + +} +\end{items} + + +~ + +(I leave the proof to the exercises.) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Convergence for convex functions}{ + +%% {\tiny following Boyd et al.\ Sec 9.3.1} + +%% \small + +%% \item \textbf{Assume} that $\forall_x$ the Hessian is +%% $m \le \text{eig}(\he f(x)) \le M$. If follows +%% \begin{align*} +%% f(x) + \na f(x)^\T (y-x) + \frac{m}{2} (y-x)^2 +%% &\le f(y) \\ +%% &\le f(x) + \na f(x)^\T (y-x) + \frac{M}{2} (y-x)^2 \\ +%% f(x) - \frac{1}{2m} |\na f(x)|^2 +%% &\le f_\Min +%% \le f(x) - \frac{1}{2M} |\na f(x)|^2 \\ +%% |\na f(x)|^2 +%% &\ge 2m(f(x) - f_\Min) +%% \end{align*} + +%% \item Consider a \textbf{perfect line search} with $y=x-\a^*\na f(x)$, +%% $\a^*=\argmin_\a f(y(\a))$. The following eqn.\ holds as $M$ also +%% upper-bounds $\he f(x)$ along $-\na f(x)$: +%% \begin{align*} +%% f(y) +%% &\le f(x) - \frac{1}{2M} |\na f(x)|^2 \\ +%% f(y) - f_\Min +%% &\le f(x) - f_\Min - \frac{1}{2M} |\na f(x)|^2 \\ +%% &\le f(x) - f_\Min - \frac{2m}{2M} (f(x) - f_\Min) \\ +%% &\le \[1-\frac{m}{M}\]~ (f(x) - f_\Min) +%% \end{align*} +%% $\to$ each step is contracting at least by $1-\frac{m}{M}<1$ + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Convergence for convex functions}{ + +%% {\tiny following Boyd et al.\ Sec 9.3.1} + +%% \small + +%% \item In the case of \textbf{backtracking line search}, backtracking +%% will terminate \emph{latest} when $\a\le \frac{1}{M}$, because for +%% $y=x-\a\na f(x)$ and $\a\le \frac{1}{M}$ we have +%% \begin{align*} +%% f(y) +%% &\le f(x) - \a |\na f(x)|^2 + \frac{M\a^2}{2}|\na f(x)|^2 \\ +%% &\le f(x) - \frac{\a}{2} |\na f(x)|^2 \\ +%% &\le f(x) - \lsstop \a |\na f(x)|^2 +%% \end{align*} +%% As backtracking terminates for any $\a\le\frac{1}{M}$, a step $\a\ge\frac{\adec}{M}$ is chosen, +%% such that +%% \begin{align*} +%% f(y) +%% &\le f(x) - \frac{\lsstop\adec}{M} |\na f(x)|^2 \\ +%% f(y) - f_\Min +%% &\le f(x) - f_\Min - \frac{\lsstop\adec}{M} |\na f(x)|^2 \\ +%% &\le f(x) - f_\Min - \frac{2m\lsstop\adec}{M} (f(x) - f_\Min) \\ +%% &\le \[1-\frac{2m\lsstop\adec}{M}\]~ (f(x) - f_\Min) +%% \end{align*} +%% $\to$ each step is contracting at least by $1-\frac{2m\lsstop\adec}{M}<1$ + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Discussion of Complexity}{\label{lastpage} + +\item Each line search reduces $f(x)$ at least by +$$f(x_\new) - f_\Min ~ \le ~ \[1-\frac{2m\lsstop\adec}{M}\]~ (f(x_\old) - f_\Min)$$ + +~\pause + +\item How does it scale with the decision space dimension $n$? + +~\pause + +\item What's the intuition behind it being independent of $n$? + +} + + +\slidesfoot diff --git a/Optimization/02-unconstrainedOpt.tex b/Optimization/02-unconstrainedOpt.tex deleted file mode 100644 index bf4b580..0000000 --- a/Optimization/02-unconstrainedOpt.tex +++ /dev/null @@ -1,1006 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\newcommand{\step}{{d}} -\newcommand{\lscurv}{\r_{\text{ls2}}} -\newcommand{\Min}{\text{min}} - -\renewcommand{\topic}{Unconstraint Optimization Basics} -\renewcommand{\keywords}{Descent direction \& stepsize, -plain gradient descent, stepsize adaptation \& monotonicity, line -search, trust region, steepest descent, Newton, Gauss-Newton, -Quasi-Newton, BFGS, conjugate gradient, exotic: Rprop} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{}{ - -%% If $x^*$ is a local minimizer of $f$ and $\he f$ exists and is -%% continuous in an open neighborhood of $x^*$, then $\na f (x^*) = 0$ -%% and $\he f (x^*)$ is positive semidefinite. - -%% Suppose that $\he f$ is continuous in an open neighborhood of $x^*$ -%% and that $\na f (x^*) = 0$ and $\he f (x^*)$ is positive -%% definite. Then $x^*$ is a strict local minimizer of $f$. - -%% When $f$ is convex, any local minimizer $x^*$ is a global minimizer of -%% $f$. If in addition $f$ is differentiable, then any stationary point -%% $x^*$ is a global minimizer of $f$. - -%% Wolfe conditions: $\a$ is a good choice iff - -%% a) sufficient decrease condition -%% $$f (x + \a \d) \le f (x) + c_1\a\na f(x)^\T \d\comma c_1\approx 10^{-4}$$ -%% b) curvature condition (sufficient step) -%% $$|\na f (x + \a \d)^\T \d| \le c_2|\na f(x)^\T \d|$$ - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\key{Plain gradient descent} -\slide{Gradient descent}{ - -\anchor{200,-70}{\showh[.3]{gradient_descent}} - -~ - -\item Objective function:~ $f:~ \RRR^n \to \RRR$ - -Gradient vector:~ $\na f(x) = \[\frac{\del}{\del_x} f(x)\]^\T ~ \in \RRR^n$ - -~ - -\item Problem: -\begin{align*} -\min_x f(x) -\end{align*} -where we can evaluate $f(x)$ and $\na f(x)$ for any $x\in\RRR^n$ - -~ - -\item Plain gradient descent: iterative steps in the direction $-\na f(x)$. - - -\begin{algo} -\Require initial $x\in\RRR^n$, function $\na f(x)$, stepsize $\a$, tolerance $\t$ -\Ensure $x$ -\Repeat -\State $x \gets x - \a \na f(x)$ -\Until $|\D x| <\t$ ~ [perhaps for 10 iterations in sequence] -\end{algo} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Stepsize and step direction as core issues} -\slide{}{ - -\item Plain gradient descent is really not efficient - -\item Two core issues of unconstrainted optimization: - -~ - -\begin{center}\large -\textbf{A. Stepsize} - -\textbf{B. Descent direction} -\end{center} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Stepsize}{ - -\item Making steps proportional to $\na f(x)$? - -~ - -\show[.6]{gradientOpt} - -~ - -\item We need methods that -\begin{items} -\item robustly adapt stepsize -\item exploit convexity, if known -\item perhaps be independent of $|\na f(x)|$ ~ (e.g.\ if non-convex as -above) -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Stepsize adaptation} -\slide{Stepsize Adaptation}{ - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x)$ and $\na f(x)$, -tolerance $\t$, parameters (defaults: $\ainc=1.2, \adec=0.5, \lsstop=0.01$) -\Ensure $x$ -\State initialize stepsize $\a=1$ -\Repeat -\State $\step \gets -\frac{\na f(x)}{|\na -f(x)|}$ \Comment{(alternative: $\step=-\na f(x)$)} -\While{$f(x+\a\step) > f(x) {\color{green}+ \lsstop \na f(x)^\T (\a\step)}$} \Comment{line search} -\State $\a \gets \adec \a$ \Comment{decrease stepsize} -\EndWhile -\State $x \gets x + \a\step$ -\State $\a \gets \ainc \a$ \Comment{increase stepsize -(alternative: $\a=1$)} -\Until $|\a\step| <\t$ ~ [perhaps for 10 iterations in sequence] -\end{algo} - -~ - -\item $\a$ determines the absolute stepsize - -\item Guaranteed monotonicity (by construction) - -(``Typically'' ensures convergence to locally convex minima; see later) -%% ~ - -%% If $f$ is convex $\To$ convergence - -%% For typical non-convex bounded $f$ $\To$ convergence to local optimum - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Backtracking} -\key{Line search} -\slide{Backtracking line search}{ - -\item Line search in general denotes the problem -$$\min_{\a\ge 0} f(x+\a\step)$$ -for some step direction $\step$. - -\item The most common line search is \textbf{backtracking}, which -decreases $\a$ as long as -$$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$$ - -$\adec$ describes the stepsize decrement in case of a rejected step - -$\lsstop$ describes a minimum desired decrease in $f(x)$ - -%% \item In the 2nd order methods we described, we chose $a=0$: - -%% We did not invest into further line search steps if $f(x+\a\step) \le f(x)$ - -\item Boyd at al: typically $\lsstop\in[0.01,0.3]$ and $\adec\in[0.1,0.8]$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Backtracking line search}{ - -~ - -~ - -\show[.6]{backtracking} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Wolfe conditions} -\slide{Wolfe Conditions}{ - -~ - -\item The 1st Wolfe condition (``sufficient decrease condition'') -$$f(x+\a\step) \le f(x) - \lsstop \na f(x)^\T (\a\step)$$ -requires a decrease of $f$ at least $\lsstop$-times ``as expected'' - -\item The 2nd (stronger) Wolfe condition (``curvature condition'') -$$|\na f (x + \a\step)^\T \step| \le \lscurv |\na f(x)^\T \step|$$ implies a -requires an decrease of the slope by a factor $\lscurv$. - -$\lscurv\in(\lsstop,\half)$ (for conjugate gradient) - -\item See Nocedal~et~al., Section 3.1 \& 3.2 for more general proofs of convergence of any -method that ensures the Wolfe conditions after each line search - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Gradient descent convergence} -\slide{Convergence for (locally) convex functions}{ - -{\tiny following Boyd et al.\ Sec 9.3.1} - -\small - -\item \textbf{Assume} that $\forall_x$ the Hessian is -$m \le \text{eig}(\he f(x)) \le M$. If follows -\begin{align*} -f(x) + \na f(x)^\T (y-x) + \frac{m}{2} (y-x)^2 -&\le f(y) \\ -&\le f(x) + \na f(x)^\T (y-x) + \frac{M}{2} (y-x)^2 \\ -f(x) - \frac{1}{2m} |\na f(x)|^2 -&\le f_\Min - \le f(x) - \frac{1}{2M} |\na f(x)|^2 \\ -|\na f(x)|^2 -&\ge 2m(f(x) - f_\Min) -\end{align*} - -\item Consider a \textbf{perfect line search} with $y=x-\a^*\na f(x)$, -$\a^*=\argmin_\a f(y(\a))$. The following eqn.\ holds as $M$ also -upper-bounds $\he f(x)$ along $-\na f(x)$: -\begin{align*} -f(y) - &\le f(x) - \frac{1}{2M} |\na f(x)|^2 \\ -f(y) - f_\Min - &\le f(x) - f_\Min - \frac{1}{2M} |\na f(x)|^2 \\ - &\le f(x) - f_\Min - \frac{2m}{2M} (f(x) - f_\Min) \\ - &\le \[1-\frac{m}{M}\]~ (f(x) - f_\Min) -\end{align*} -$\to$ each step is contracting at least by $1-\frac{m}{M}<1$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convergence for (locally) convex functions}{ - -{\tiny following Boyd et al.\ Sec 9.3.1} - -\small - -\item In the case of \textbf{backtracking line search}, backtracking -will terminate \emph{latest} when $\a\le \frac{1}{M}$, because for -$y=x-\a\na f(x)$ and $\a\le \frac{1}{M}$ we have -\begin{align*} -f(y) -&\le f(x) - \a |\na f(x)|^2 + \frac{M\a^2}{2}|\na f(x)|^2 \\ -&\le f(x) - \frac{\a}{2} |\na f(x)|^2 \\ -&\le f(x) - \lsstop \a |\na f(x)|^2 -\end{align*} -As backtracking terminates for any $\a\le\frac{1}{M}$, a step $\a\ge\frac{\adec}{M}$ is chosen, -such that -\begin{align*} -f(y) -&\le f(x) - \frac{\lsstop\adec}{M} |\na f(x)|^2 \\ -f(y) - f_\Min - &\le f(x) - f_\Min - \frac{\lsstop\adec}{M} |\na f(x)|^2 \\ - &\le f(x) - f_\Min - \frac{2m\lsstop\adec}{M} (f(x) - f_\Min) \\ - &\le \[1-\frac{2m\lsstop\adec}{M}\]~ (f(x) - f_\Min) -\end{align*} -$\to$ each step is contracting at least by $1-\frac{2m\lsstop\adec}{M}<1$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{B. Descent Direction}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Steepest descent direction} -\slide{Steepest Descent Direction}{ - -\item The gradient $\na f(x)$ is sometimes called \emph{steepest - descent direction} - -~ - -\cen{\emph{Is it really?}} - -~\mypause - -\item Here is a possible definition: - -~ - -\emph{The steepest descent direction is the one where, {\color{red} when I - make a step of length 1}, I get the largest decrease of $f$ in - its linear approximation.} - -\begin{align*} -\argmin_\d \na f(x)^\T \d \text{\qquad s.t.~} \norm{\d}=1 -\end{align*} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Steepest Descent Direction}{ - -\item But the norm $\norm{\d}^2=\d^\T A \d $ depends on the metric $A$! - -~ - -Let $A = B^\T B$ (Cholesky decomposition) and $z = B \d$ -\begin{align*} -\d^* -&= \argmin_\d \na f^\T \d \text{\qquad s.t.~} \d^\T A \d=1 \\ -&= B^\1 \argmin_z (B^\1 z)^\T \na f \text{\qquad s.t.~} z^\T z = 1\\ -&= B^\1 \argmin_z z^\T B^\mT \na f \text{\qquad s.t.~} z^\T z = 1\\ -&= B^\1 [- B^\mT \na f] = - A^\1 \na f -\end{align*} - -~ - -\eqbox{The steepest descent direction is $\d=- A^\1 \na f$} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Covariant gradient descent} -\slide{Behavior under linear coordinate transformations}{ - -\item Let $B$ be a matrix that describes a linear transformation in - coordinates - -~ - -\item A coordinate vector $x$ transforms as $z = B x$ - -\item The gradient vector $\na_x f(x)$ transforms as $\na_z f(z) = - B^\mT \na_x f(x)$ - -\item The metric $A$ transforms as $A_z = B^\mT A_x B^\1$ - -\item The steepest descent transforms as $A_z^\1 \na_z f(z) = B A_x^\1 - \na_x f(x)$ - -~ - -The steepest descent transforms like a normal coordinate vector (covariant) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Newton direction} -\slide{Newton Direction}{ - -\item Assume we have access to the symmetric \textbf{Hessian} -$$\he f(x) = {\small\mat{cccc}{ -\frac{\del^2}{\del_{x_1}\del_{x_1}} f(x) & -\frac{\del^2}{\del_{x_1}\del_{x_2}} f(x) & -\cdots & -\frac{\del^2}{\del_{x_1}\del_{x_n}} f(x) \\ -\frac{\del^2}{\del_{x_1}\del_{x_2}} f(x) & -& & \vdots \\ -\vdots & & & \vdots \\ -\frac{\del^2}{\del_{x_n}\del_{x_1}} f(x) & -\cdots & -\cdots & -\frac{\del^2}{\del_{x_n}\del_{x_n}} f(x)}} ~\in\RRR^{n\times n}$$ - -~ - -\item which defines the Taylor expansion: -$$f(x+\d) \approx f(x) + \na f(x)^\T \d + \half \d^\T~ \he f(x)~ \d$$ - -Note: $\he f(x)$ acts like a \textbf{metric} for $\d$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Newton method} -\slide{Newton method}{ - -\item For finding roots (zero points) of $f(x)$ - -\cen{\twocol{.4}{.4}{ -\show[1]{newton} -}{ -$$x \gets x - \frac{f(x)}{f'(x)}$$ -}} - -~ - -~ - -\item For finding optima of $f(x)$ in 1D: -$$x \gets x - \frac{f'(x)}{f''(x)}$$ - -For $x\in\RRR^n$: -$$x \gets x - \he f(x)^\1 \na f(x)$$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Why 2nd order information is better}{ - -~ - -\item Better direction: - -\show[.4]{2ndOrder} - -~ - -\item Better stepsize: -\begin{items} -\item a \emph{full step} jumps directly to the minimum of the local -squared approx. - -\item often this is already a good heuristic - -\item additional stepsize reduction and dampening are straight-forward -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Newton method with adaptive stepsize}{ - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), \na f(x), \he f(x)$, -tolerance $\t$, parameters (defaults: -$\ainc=1.2, \adec=0.5, \linc=1, \ldec=0.5, \lsstop=0.01$) -\Ensure $x$ -\State initialize stepsize $\a=1$ and damping $\l=\l_0$ -\Repeat -\State compute $\step$ to solve $(\he f(x) + \l \Id)~ \step = - \na f(x)$ -\label{alg0} -\While{$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$} \Comment{line search} -\State $\a \gets \adec\a$ \Comment{decrease stepsize} -\State optionally: $\l \gets \linc\l$ and recompute $d$ \Comment{increase damping} -\EndWhile -\State $x \gets x + \a\step$ \Comment{step is accepted} -\State $\a \gets \min\{\ainc\a,1\}$ \Comment{increase stepsize} -\State optionally: $\l \gets \ldec\l$ \Comment{decrease damping} -\Until $\norm{\a\step}_\infty < \t$ %or exessive evaluations -\end{algo} - -~\tiny - -\item Notes: -\begin{items} -\item Line \ref{alg0} computes the Newton step $\step = -\he f(x)^\1 \na f(x)$, - -use special Lapack routine \texttt{dposv} to solve $A x = b$ (using Cholesky) - -\item $\l$ is called \textbf{damping}, related to trust region -methods, makes the parabola more steep around current $x$ - - for $\l\to\infty$:~ $\step$ becomes colinear with $-\na f(x)$ but $|\step|=0$ -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Demo}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Computational issues}{ - -%% \item Let - -%% $C_{f}$ be computational cost of evaluating $f(x)$ only - -%% $C_\text{eval}$ be computational cost of evaluating $f(x), \na f(x), \he f(x)$ - -%% $C_\D$ be computational cost of solving $(\he f(x) + \l \Id)~ \D = - \na f(x)$ - -%% ~ - -%% \item If $C_\text{eval} \gg C_f$ ~$\to$~ proper line search instead of -%% stepsize adaptation - -%% If $C_{\D} \gg C_f$ ~$\to$~ proper line search instead of -%% stepsize adaptation - -%% \item However, in many applications (in robotics at least) -%% $C_\text{eval} \approx C_f \gg C_\D$ - -%% ~ - -%% \item Often, $\he f(x)$ is banded (non-zero around diagonal only) - -%% $\to$ $A x = b$ becomes super fast using \texttt{dpbsv} ~ (Dynamic -%% Programming) - -%% ~ - -%% \tiny - -%% (If $\he f(x)$ is a ``tree'': Dynamic Programming on the ``Junction -%% Tree'') - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -\item In the remainder: Extensions of the Newton approach: -\begin{items} -\item Gauss-Newton - -\item Quasi-Newton - -\item BFGS, (L)BFGS - -\item Conjugate Gradient -\end{items} - -~ - -\item And a crazy method: Rprop - -~ - -\item Postponed: trust region methods properly - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Gauss-Newton method} -\slide{Gauss-Newton method}{ - -\item Consider a \textbf{sum-of-squares} problem: -\begin{align*} -\min_x f(x) \qquad\text{where}~ f(x) = \phi(x)^\T \phi(x) = \sum_i \phi_i(x)^2 -\end{align*} -and we can evaluate $\phi(x)$, $\na \phi(x)$ for any $x\in\RRR^n$ - -~\small - -\item $\phi(x)\in\RRR^d$ is a vector; each entry contributes a squared -cost term to $f(x)$ - -\item $\na \phi(x)$ is the \textbf{Jacobian} ~ ($d\times n$-matrix) -$$\na \phi(x) = {\small\mat{cccc}{ -\frac{\del}{\del_{x_1}} \phi_1(x) & -\frac{\del}{\del_{x_2}} \phi_1(x) & -\cdots & -\frac{\del}{\del_{x_n}} \phi_1(x) \\ -\frac{\del}{\del_{x_1}} \phi_2(x) & -& & \vdots \\ -\vdots & & & \vdots \\ -\frac{\del}{\del_{x_1}} \phi_d(x) & -\cdots & -\cdots & -\frac{\del}{\del_{x_n}} \phi_d(x)}} ~\in\RRR^{d\times n}$$ - -with 1st-order Taylor expansion~ $\phi(x+\d) = \phi(x) + \na \phi(x) \d$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Gauss-Newton method}{ - -\item The gradient and Hessian of $f(x)$ become -\begin{align*} -f(x) - &= \phi(x)^\T \phi(x) \\ -\na f(x) - &= 2 \na\phi(x)^\T \phi(x) \\ -\he f(x) - &= 2 \na\phi(x)^\T \na\phi(x) + 2 \phi(x)^\T \he \phi(x) -\end{align*} -%{\hfill\tiny $\he \phi(x)$ is a ${}^{d}{}_{nn}$-tensor} - -~ - -\item \emph{The Gauss-Newton method is the Newton method for -$f(x) = \phi(x)^\T \phi(x)$ with approximating $\he \phi(x)\approx 0$} - -~ - -In the Newton algorithm, replace line \ref{alg0} by -{\tiny -\cen{\ref{alg0}:~ compute $\step$ to solve $(2\na\phi(x)^\T \na\phi(x) -+ \l \Id)~ \step = - 2\na\phi(x)^\T \phi(x)$} -} - -~ - -\item The approximate Hessian $2\na\phi(x)^\T \na\phi(x)$ is \textbf{always semi-pos-def!} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Quasi-Newton methods}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Quasi-Newton methods} -\slide{Quasi-Newton methods}{ - -~ - -\item Assume we \emph{cannot} evaluate $\he -f(x)$. - -\cen{Can we still use 2nd order methods?} - -~ - -\item Yes: We can approximate $\he f(x)$ from the data $\{(x_i, \na -f(x_i))\}_{i=1}^k$ of previous iterations - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Basic example}{ - -\item We've seen already two data points $(x_1,\na f(x_1))$ and -$(x_2,\na f(x_2))$ - -How can we estimate $\he f(x)$? - -~ - -\item In 1D: -\begin{align*} -\he f(x) - &\approx \frac{\na f(x_2) - \na f(x_1)}{x_2-x_1} -% &= \frac{y}{\d} \comma y:=\na f(x_2) - \na f(x_1) \comma \d=x_2-x_1 -\end{align*} - -~ - -\item In $\RRR^n$: ~ let $y=\na f(x_2) - \na f(x_1)$,~ $\d=x_2-x_1$ -\begin{align*} -\he f(x)~ \d &\overset{!}= y &&& \d &\overset{!}= \he f(x)^{-1} y \\ -\he f(x) &= \frac{y~ y^\T}{y^\T \d} &&& \he f(x)^{-1} &= {\color{blue}\frac{\d \d^\T}{\d^\T y}} -\end{align*} -Convince yourself that the last line solves the desired relations - -\tiny -[Left: how to update $\he f$(x).~ Right: how to update directly $\he f(x)^\1$.] - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Broyden-Fletcher-Goldfarb-Shanno (BFGS)} -\slide{BFGS}{ - -\item Broyden-Fletcher-Goldfarb-Shanno (BFGS) method: - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), \na f(x)$, tolerance $\t$ -\Ensure $x$ -\State initialize $H^\1=\Id_n$ -\Repeat -\State compute $\step = - H^\1 \na f(x)$ -\State perform a line search $\min_\a f(x + \a \step)$ -\State $\d \gets \a \step$ -\State $y \gets \na f(x+\d) - \na f(x)$ -\State $x \gets x + \d$ -\State update $H^\1 \gets {\color{red}\(\Id-\frac{y \d^\T}{\d^\T y}\)^\T H^\1 -\(\Id-\frac{y \d^\T}{\d^\T y}\)} + {\color{blue}\frac{\d \d^\T}{\d^\T y}}$ -\Until $\norm{\d}_\infty < \t$ -\end{algo} - -~\small - -\item Notes: - --- The blue term is the $H^\1$-update as on the previous slide - --- The red term ``deletes'' previous $H^\1$-components - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Quasi-Newton methods}{ - -\item BFGS is the most popular of all Quasi-Newton methods - -Others exist, which differ in the exact $H^\1$-update - -~ - -\item \textbf{L-BFGS} (limited memory BFGS) is a version which does -not require to explicitly store $H^\1$ but instead stores the previous data -$\{(x_i, \na f(x_i))\}_{i=1}^k$ and manages to compute $\step = - -H^\1 \na f(x)$ directly from this data - -~ - -\item Some thought: - -In principle, there are alternative ways to estimate $H^\1$ -from the data $\{(x_i, f(x_i), \na f(x_i))\}_{i=1}^k$, e.g.\ using -Gaussian Process regression with derivative observations -\begin{items} -\item Not only the derivatives but also the value $f(x_i)$ should give - information on $H(x)$ for non-quadratic functions - -\item Should one weight `local' data stronger than `far away'?\\ - (GP covariance function) -\end{items} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{(Nonlinear) Conjugate Gradient}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Conjugate gradient} -\slide{Conjugate Gradient}{ - -\item The ``Conjugate Gradient Method'' is a method for solving -(large, or sparse) linear eqn.\ systems $Ax+b=0$, without inverting or -decomposing $A$. The steps will be ``$A$-orthogonal'' (=conjugate). - -We mention its extension for optimizing nonlinear functions $f(x)$ - -~ - -\item A key insight: - --- at $x_k$ we computed $g'=\na f(x_k)$ - --- assume we made a \emph{exact} line-search step to $x_{k\po}$ - --- at $x_{k\po}$ we computed $g=\na f(x_{k\po})$ - -~ - -\cen{What conclusions can we draw about the ``local quadratic shape'' of $f$?} - -%If the function \emph{was} $f(x) = x^\T A x + b^\T x$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Conjugate Gradient}{ - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), \na f(x)$, tolerance $\t$ -\Ensure $x$ -\State initialize descent direction $d = g = -\na f(x)$ -\Repeat -\State $\a \gets \argmin_\a f(x+\a d)$ \Comment{line search} -\State $x \gets x + \a d$ -\State $g' \gets g$,~ $g = -\na f(x)$ \Comment{store and compute grad} -\State $\b \gets \max\left\{\frac{g^\T(g - g')}{g'^\T g'},0\right\}$ -\State $d \gets g + \b d$ \Comment{conjugate descent direction} -\Until $|\D x| <\t$ -\end{algo} - -{\small - -\item Notes: - --- $\b>0$: The new descent direction always adds a bit of the old - direction! - --- This essentially provides 2nd order information - --- The equation for $\b$ is by Polak-Ribi{\`e}re: On a quadratic - function $f(x) = x^\T A x + b^\T x$ this leads to \textbf{conjugate} search - directions, $d'^\T A d = 0$. - --- Line search can be replaced by 1st \textbf{and 2nd Wolfe condition} - with $\lscurv<\half$ - -} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Conjugate Gradient}{ - -\cen{\twocol{.5}{.5}{ -\show{conjugateGradient} -}{ -\show{conjugateGradient2} -}} - -~ - -~ - -\item For quadratic functions CG converges in $n$ iterations. But -each iteration does \emph{line search} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convergence Rates Notes}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convergence Rates Notes}{ - -~ - -\item Linear, quadratic convergence (for $q=1,2$): -$$\lim_k \frac{|x_{k\po}-x^*|}{|x_k-x^*|^p} = r$$ -with rate $r$. E.g.\ $x_k = r^k$ (linear) or $x_{k\po}=r x_k^2$ -(quadratic) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convergence Rates Notes}{ - -\item Theorem 3.3 in Nocedal et al.: - -Plain gradient descent with exact line search applied to $f(x) = x^\T -A x$, $A$ with eigenvalues $0 < \l_1 \le .. \le \l_n$, satisfies -\begin{align*} -\norm{x_{k\po}-x^*}^2_A - &\le \(\frac{\l_n-\l_1}{\l_n+\l_1}\)^2~ \norm{x_k-x^*}^2_A -\end{align*} - -\item same on a smooth, locally pos-def function $f(x)$: For -sufficiently large $k$ -$$ f(x_{k\po}) - f(x^*) \le r^2 [f(x_k)-f(x^*)] $$ - -\item Newton steps (with $\a=1$) on smooth locally pos-def -function $f(x)$: -\begin{items} -\item $x_k$ converges \emph{quadratically} to $x^*$ -\item $|\na f(x_k)|$ converges \emph{quadratically} to zero -\end{items} - -\item Quasi-Newton methods also converge superlinearly if the Hessian -approximation is sufficiently precise (Thm. 3.7) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Conjugate Gradient}{ - -%% \item Useful tutorial on CG and line search: - -%% ~ - -%% J.\ R.\ Shewchuk: \emph{An Introduction to -%% the Conjugate Gradient Method -%% Without the Agonizing Pain} - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Rprop}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Rprop} -\slide{Rprop}{ - -``Resilient Back Propagation'' (outdated name from NN times...) - -\begin{algo}[7] -\Require initial $x\in\RRR^n$, function $f(x), \na f(x)$, initial stepsize $\a$, tolerance $\t$ -\Ensure $x$ -\State initialize $x=x_0$, all $\a_i=\a$, all $g_i=0$ -\Repeat -\State $g \gets \na f(x)$ -\State $x' \gets x$ -\For{$i=1:n$} -\If{$g_i g_i' > 0$} \Comment{same direction as last time} -\State $\a_i \gets 1.2 \a_i$ -\State $x_i \gets x_i - \a_i~ \sign(g_i)$ -\State $g_i' \gets g_i$ -\ElsIf{$g_i g_i' <0$} \Comment{change of direction} -\State $\a_i \gets 0.5 \a_i$ -\State $x_i \gets x_i - \a_i~ \sign(g_i)$ -\State $g_i' \gets 0$ \Comment{force last case next time} -\Else -\State $x_i \gets x_i - \a_i~ \sign(g_i)$ -\State $g_i' \gets g_i$ -\EndIf -\State optionally: cap $\a_i \in [\a_{\text{min}}~ x_i, \a_{\text{max}}~ x_i]$ -\EndFor -\Until $|x'-x| <\t$ for 10 iterations in sequence -\end{algo} - -~ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Rprop}{ - -\item Rprop is a bit crazy: - --- stepsize adaptation in each dimension \emph{separately} - --- it not only ignores $|\na f|$ but also its exact direction - -~~ step directions may differ up to $<90^\circ$ from $\na f$ - --- Often works very robustly - --- Guarantees? See work by Ch.\ Igel - -~ - -\item If you like, have a look at: - -{\small - -Christian Igel, Marc Toussaint, W. Weishui (2005): Rprop using the -natural gradient compared to Levenberg-Marquardt optimization. In -Trends and Applications in Constructive Approximation. International -Series of Numerical Mathematics, volume 151, 259-272. - -} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Appendix}{\label{lastpage} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Stopping Criteria}{ - -\item Standard references (Boyd) define stopping criteria based on the - ``change'' in $f(x)$, e.g.\ $|\D f(x)|<\t$ or $|\na f(x)|<\t$. - -~ - -\item Throughout I will define stopping criteria based on the change in -$x$, e.g.\ $|\D x|<\t$! In my experience with certain applications -this is more meaningful, and invariant of the scaling of $f$. But this -is application dependent. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Evaluating optimization costs}{ - -\item Standard references (Boyd) assume line search is cheap and - measure optimization costs as the number of iterations (counting 1 - per line search). - -~ - -\item Throughout I will assume that every evaluation of $f(x)$ or - $(f(x),\na f(x))$ or $(f(x),\na f(x),\na^2 f(x))$ is approx.\ equally - expensive---as is the case in certain applications. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slidesfoot diff --git a/Optimization/03-constrainedOpt.tex b/Optimization/03-constrainedOpt.tex deleted file mode 100644 index f2e2b88..0000000 --- a/Optimization/03-constrainedOpt.tex +++ /dev/null @@ -1,1027 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\renewcommand{\topic}{Constrained Optimization} -\renewcommand{\keywords}{General definition, log barriers, central -path, squared penalties, augmented Lagrangian (equalities \& -inequalities), the Lagrangian, force balance view \& KKT conditions, -saddle point view, dual problem, min-max max-min duality, modified KKT -\& log barriers, Phase I} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Constrained optimization} -\slide{Constrained Optimization}{ - -\item General constrained optimization problem: - -Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, $g:~ \RRR^n \to \RRR^m$, -$h:~ \RRR^n \to \RRR^l$ find -$$ \min_x~ f(x) \st g(x)\le 0,~ h(x) = 0 $$ - -~ - -In this lecture I'll mostly focus on inequality constraints $g$, -equality constraints are analogous/easier - -~ - -\item Applications - --- Find an optimal, non-colliding trajectory in robotics - --- Optimize the shape of a turbine blade, s.t.\ it must not break - --- Optimize the train schedule, s.t.\ consistency/possibility - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{General approaches}{ - -\item Try to somehow transform the constraint problem to - -~ - -$\qquad$ a series of unconstraint problems - -~ - -$\qquad$ a single but larger unconstraint problem - -~ - -$\qquad$ another constraint problem, hopefully simpler (dual, convex) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{General approaches}{ - -\item Penalty \& Barriers - -{\small --- Associate a (adaptive) penalty cost with violation of the constraint - --- Associate an additional ``force compensating the gradient into the - constraint'' (augmented Lagrangian) - --- Associate a log barrier with a constraint, becoming $\infty$ for violation (interior point method) - -~} - -\item Gradient projection methods (mostly for linear contraints) - -{\small --- For `active' constraints, project the step direction to become - tangantial - --- When checking a step, always pull it back to the feasible region - -~} - -\item Lagrangian \& dual methods - -{\small --- Rewrite the constrained problem into an unconstrained one - --- Or rewrite it as a (convex) dual problem - -~} - -\item Simplex methods (linear constraints) - -{\small - --- Walk along the constraint boundaries - -} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Barriers \& Penalties}{ - -\item Convention: - -~ - - -\quad A \emph{barrier} is really $\infty$ for $g(x)>0$ - -~ - -\quad A \emph{penalty} is zero for $g(x)\le 0$ and increases with $g(x)>0$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Log barrier method ~ or ~ Interior Point method}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Log barrier method} -\slide{Log barrier method}{ - -\item Instead of -$$\min_x~ f(x) \st g(x)\le 0$$ -we address -$$\min_x~ f(x) - \mu \sum_i \log(-g_i(x))$$ - -~ - -\show[.4]{logBarrier} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Log barrier}{ - -\show[.4]{logBarrier} - -\item For $\mu\to 0$, $-\mu\log(-g)$ converges to $\infty [g>0]$ - -{\tiny\hfill\textbf{Notation:} $[\textit{boolean expression}] \in \{0,1\}$} - -\item The barrier gradient $\na -\log(-g) = \frac{\na g}{g}$ pushes -away from the constraint - -~ - -\item Eventually we want to have a very small $\mu$---but choosing -small $\mu$ makes the barrier very non-smooth, which might be bad for -gradient and 2nd order methods - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Log barrier method}{ - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), g(x), \na f(x), \na -g(x)$, tolerance $\t$, parameters (defaults: $\mdec=0.5, \mu_0=1$) -\Ensure $x$ -\State initialize $\mu=\mu_0$ -\Repeat -\State find $x \gets \argmin_x~ f(x) - \mu\sum_i \log(-g_i(x))$ with -tolerance $\sim\!10\t$ -\State decrease $\mu \gets \mdec \mu$ -\Until $|\D x|<\t$ -\end{algo} - -~ - -\small -Note: See Boyd \& Vandenberghe for alternative stopping criteria based on $f$ -precision (duality gap) and better choice of initial $\mu$ (which is -called $t$ there). - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Central path} -\slide{Central Path}{ - - -\item Every $\mu$ defines a different optimal $x^*(\mu)$ -$$x^*(\mu) = \argmin_x~ f(x) - \mu\sum_i \log(-g_i(x))$$ - -\show[.5]{centralPath} - - -\item Each point on the path can be understood as the optimal -compromise of minimizing $f(x)$ and a repelling force of the -constraints. (Which corresponds to dual variables $\l^*(\mu)$.) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -We will revisit the log barrier method later, once we introduced the -Langrangian... - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Squared Penalty Method}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Squared penalty method} -\slide{Squared Penalty Method}{ - -\item This is perhaps the simplest approach - -\item Instead of -$$\min_x~ f(x) \st g(x)\le 0$$ -we address -$$\min_x~ f(x) + \mu \sum_{i=1}^m [g_i(x)>0]~ g_i(x)^2$$ - -~ - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), g(x), \na f(x), \na -g(x)$, tol.\ $\t$, $\e$, parameters (defaults: $\minc=10, \mu_0=1$) -\Ensure $x$ -\State initialize $\mu=\mu_0$ -\Repeat -\State find $x \gets \argmin_x f(x) + \mu \sum_i [g_i(x)>0]~ g_i(x)^2$ with tolerance $\sim\!10\t$ -\State $\mu \gets \minc \mu$ -\Until $|\D x| < \t$ and $\forall_i:~ g_i(x)<\e$ -\end{algo} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Squared Penalty Method}{ - -\item The method is ok, but will always lead to \emph{some} violation -of constraints - -~\mypause - -\item A better idea would be to add an out-pushing gradient/force $-\na -g_i(x)$ for every constraint $g_i(x)>0$ that is violated - -~ - -Ideally, the out-pushing gradient mixes with $-\na f(x)$ exactly such -that the result becomes \emph{tangential} to the constraint! - -~ - -This idea leads to the \emph{augmented Lagrangian} approach - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Augmented Lagrangian method} -\slide{Augmented Lagrangian}{ - -{\small (We can introduce this is a self-contained manner, without yet -defining the ``Lagrangian'')} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Augmented Lagrangian ~ (equality constraint)}{ - -\item We first consider an \emph{equality} constraint before -addressing inequalities - -\item Instead of -$$\min_x~ f(x) \st h(x)= 0$$ -we address -\begin{align} -\min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 + \sum_{i=1} \l_i -h_i(x) \label{eq1} -\end{align} - -~ - -\item Note: - --- The gradient $\na h_i(x)$ is always orthogonal to the constraint - --- By tuning $\l_i$ we can induce a ``virtual gradient'' $\l_i \na - h_i(x)$ - --- The term $\mu \sum_{i=1}^m h_i(x)^2$ penalizes as before - -~ - -\item Here is the trick: - --- First minimize (\ref{eq1}) for some $\mu$ and $\l_i$ - --- This will in general lead to a (slight) penalty - $\mu \sum_{i=1}^m h_i(x)^2$ - --- For the next iteration, \emph{choose $\l_i$ to generate exactly the - gradient that was previously generated by the penalty} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -\small - -\item Optimality condition after an iteration: -\begin{align*} -x' - &= \argmin_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 + \sum_{i=1}^m \l_i h_i(x) \\ -\To \quad -0 &= \na f(x') + \mu \sum_{i=1}^m 2 h_i(x') \na h_i(x') - + \sum_{i=1}^m \l_i \na h_i(x') -\end{align*} -\item Update $\l$'s for the next iteration: -\begin{align*} -\sum_{i=1} \l_i^\new \na h_i(x') - &= \mu \sum_{i=1}^m 2 h_i(x') \na h_i(x') + \sum_{i=1} \l_i^\old \na h_i(x') \\ -\l_i^\new - &= \l_i^\old + 2 \mu h_i(x') -\end{align*} - -\begin{algo} -\Require initial $x\in\RRR^n$, functions $f(x), h(x), \na f(x), \na -h(x)$, tol.\ $\t$, $\e$, parameters (defaults: $\minc=1, \mu_0=1$) -\Ensure $x$ -\State initialize $\mu=\mu_0$, $\l_i=0$ -\Repeat -\State find $x \gets \argmin_x f(x) + \mu \sum_i h_i(x)^2 + \sum_i \l_i h_i(x)$ -\State $\forall_i:~ \l_i \gets \l_i + 2 \mu h_i(x')$ -\State optionally, $\mu \gets \minc \mu$ -\Until $|\D x| < \t$ and $|h_i(x)|<\e$ -\end{algo} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -This adaptation of $\l_i$ is really elegant: - -\begin{items} -\item We do \emph{not} have to take the penalty limit $\mu\to\infty$ but - still can have \emph{exact} constraints - -\item If $f$ and $h$ were linear ($\na f$ and $\na h_i$ constant), the - updated $\l_i$ is \emph{exactly right}: In the next iteration we - would exactly hit the constraint (by construction) - -\item The penalty term is like a \emph{measuring device} for the necessary - ``virtual gradient'', which is generated by the - agumentation term in the next iteration - -\item The $\l_i$ are very meaningful: they give the force/gradient that a - constraint exerts on the solution -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Augmented Lagrangian ~ (inequality constraint)}{ - -\item Instead of -$$\min_x~ f(x) \st g(x)\le 0$$ -we address -$$\min_x~ f(x) + \mu \sum_{i=1}^m [g_i(x)\ge 0 -\vee \l_i>0]~ g_i(x)^2 + \sum_{i=1}^m \l_i g_i(x)$$ - -\small - -\item A constraint is either \textbf{active} or \textbf{inactive}: - --- When active ($g_i(x)\ge 0 \vee \l_i>0$) we aim for equality - $g_i(x)=0$ - --- When inactive ($g_i(x)< 0 \wedge \l_i=0$) we don't penalize/augment - --- $\l_i$ are zero or positive, but never negative - -\begin{algo}[7] -\Require initial $x\in\RRR^n$, functions $f(x), g(x), \na f(x), \na -g(x)$, tol.\ $\t$, $\e$, parameters (defaults: $\minc=1, \mu_0=1$) -\Ensure $x$ -\State initialize $\mu=\mu_0$, $\l_i=0$ -\Repeat -\State find $x \gets \argmin_x f(x) + \mu \sum_i [g_i(x)\ge 0 -\vee \l_i>0]~ g_i(x)^2 + \sum_i \l_i g_i(x)$ -\State $\forall_i:~ \l_i \gets \max(\l_i + 2 \mu g_i(x'), 0)$ -\State optionally, $\mu \gets \minc \mu$ -\Until $|\D x| < \t$ and $g_i(x)<\e$ -\end{algo} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\slide{}{ - -\small - -\item See also: - -M. Toussaint: A Novel Augmented Lagrangian Approach for Inequalities -and Convergent Any-Time Non-Central Updates. e-Print arXiv:1412.4329, -2014. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%% \slide{Penalty with augmented Lagrangian}{ - -%% \item Instead of -%% $$\min_x~ f(x) \st g(x)\le 0$$ -%% we address -%% $$\min_{s,x}~ f(x) \st g(x)+s=0,~ s\in\RRR^m\ge 0$$ -%% or -%% $$\min_{s,x}~ f(x) + \frac{\mu}{2} \sum_i (g_i(x)+s_i)^2 - \sum_i \l_i (g_i(x)+s_i) \st s\ge 0$$ - -%% \item Here, $s_i$ is called a \emph{slack variable} - -%% We can do the minimization w.r.t.\ $s$ analytically!{\tiny -%% $$\min_x~ f(x) + \frac{\mu}{2} \Phi(g_i,\l_i/\mu)^2 -%% - \sum_i \l_i \Phi(g_i,\l_i/\m) -%% \comma \Phi(g_i,\l_i/\m) = \begin{cases} g_i & \l_i/\mu-g_i < -%% 0 \\ \l_i/\mu &\text{else}\end{cases}$$} - -%% \item In each iteration update -%% $$\l_i \gets \l_i - \mu \Phi(g_i(x),\l_i/\mu)$$ -%% } - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\footer - - -%% \slide{General approaches}{ - -%% \item Penalty \& Barriers - -%% {\small -%% -- Associate a (adaptive) penalty cost with violation of the constraint - -%% -- Associate an additional ``force compensating the gradient into the -%% constraint'' (augmented Lagrangian) - -%% -- Associate a log-barrier with a constraint, becoming $\infty$ for violation (interior point method) - -%% ~} - -%% \item Gradient projection methods (mostly for linear contraints) - -%% {\small -%% -- For `active' constraints, project the step direction to become -%% tangantial - -%% -- When checking a step, always pull it back to the feasible region - -%% ~} - -%% \item Lagrangian \& dual methods - -%% {\small -%% -- Rewrite the constrained problem into an unconstrained one - -%% -- Or rewrite it as a (convex) dual problem - -%% ~} - -%% \item Simplex methods (linear constraints) - -%% {\small - -%% -- Walk along the constraint boundaries - -%% } -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{The Lagrangian}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Lagrangian: definition} -\slide{The Lagrangian}{ - -\item Given a constraint problem -$$ \min_x~ f(x) \st g(x)\le 0$$ -we define the \textbf{Lagrangian} as -$$L(x,\l) = f(x) + \sum_{i=1}^m \l_i g_i(x)$$ - -~ - -\item The $\l_i \ge 0$ are called \textbf{dual variables} -or \emph{Lagrange multipliers} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{What's the point of this definition?}{ - -~ - -\item The Lagrangian is useful to compute optima analytically, on -paper -- that's why physicist learn it early on - -~ - -\item The Lagrangian implies the KKT conditions of optimality - -~ - -\item Optima are necessarily at saddle points of the Lagrangian - -~ - -\item The Lagrangian implies a dual problem, which is sometimes easier to solve than the primal - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example: Some calculus using the Lagrangian}{ - -\item For $x\in\RRR^2$, what is -$$\min_x x^2 \st x_1+x_2 = 1$$ - -~ - -\item Solution: -\begin{align*} -L(x,\l) - &= x^2 + \l(x_1+x_2-1)\\ -0 - &= \na_x L(x,\l) - = 2 x + \l\mat{c}{1\\1} \quad\To\quad x_1=x_2=-\l/2\\ -0 - &= \na_\l L(x,\l) - = x_1+x_2-1 = -\l/2-\l/2-1 \quad\To\quad \l=-1 \\ -\To - & x_1=x_2=1/2 -\end{align*} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\key{Lagrangian: relation to KKT} -\slide{The ``force'' \& KKT view on the Lagrangian}{ - -~ - -\item \emph{At the optimum there must be a balance between the cost -gradient $-\na f(x)$ and the gradient of the active constraints $-\na -g_i(x)$} - -~ - -~ - -\show[.4]{KKT} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\key{Karush-Kuhn-Tucker (KKT) conditions} -\slide{The ``force'' \& KKT view on the Lagrangian}{ - -\item \emph{At the optimum there must be a balance between the cost -gradient $-\na f(x)$ and the gradient of the active constraints $-\na -g_i(x)$} - -{\small - -\item Formally: for optimal $x$:~ $\na f(x) \in \text{span}\{ \na g_i(x) \}$ - -\item Or: for optimal $x$ there must exist $\l_i$ such that $-\na f(x) = -\[\sum_i (-\l_i\na g_i(x))\]$ - -} - -~\mypause - -\item For optimal $x$ it must hold (necessary condition):~ $\exists_\l \st$ -\begin{align*} -\na f(x) + \sum_{i=1}^m \l_i \na g_i(x) &= 0 && \text{(``stationarity'')}\\ -\forall_i:~ g_i(x) &\le 0 && \text{(primal feasibility)}\\ -\forall_i:~ \l_i &\ge 0 && \text{(dual feasibility)}\\ -\forall_i:~ \l_i g_i(x) &= 0 && \text{(complementary)} -\end{align*} -The last condition says that $\l_i > 0$ only for active constraints. - -These are the \textbf{Karush-Kuhn-Tucker conditions} (KKT, neglecting -equality constraints) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{The ``force'' \& KKT view on the Lagrangian}{ - -\item The first condition (``stationarity''), $\exists_\l \st$ -$$\na f(x) + \sum_{i=1}^m \l_i \na g_i(x) = 0$$ -can be equivalently expressed as, $\exists_\l \st$ -$$\na_x L(x,\l) = 0$$ - -~ - -\item In that sense, the Lagrangian can be viewed as the ``energy function'' -that generates (for good choice of $\l$) the right balance between -cost and constraint gradients - -~ - -\small - -\item This is exactly as in the augmented Lagrangian approach, where however -we have an additional (``augmented'') squared penalty that is -used to tune the $\l_i$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Lagrangian: saddle point view} -\slide{Saddle point view on the Lagrangian}{ - -\item Let's briefly consider the equality case again: -$$ \min_x~ f(x) \st h(x)= 0$$ -with the Lagrangian -$$L(x,\l) = f(x) + \sum_{i=1}^m \l_i h_i(x)$$ - -\item Note: -\begin{align*} -\min_x L(x,\l) \quad\To\quad 0&=\na_x L(x,\l) \quad\oto\quad \text{stationarity} \\ -\max_{\l} L(x,\l) \quad\To\quad 0&=\na_\l L(x,\l) = h(x) -\quad\oto\quad \text{constraint} \end{align*} - -~ - -\item Optima ($x^*,\l^*$) are saddle points where - -\qquad\qquad $\na_x L = 0$ ensures stationarity and - -\qquad\qquad $\na_\l L = 0$ ensures the primal feasibility - -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Saddle point view on the Lagrangian}{ - -\item In the inequality case: -\begin{align*} -\max_{\l\ge 0} L(x,\l) - &= \begin{cases} - f(x) & \text{if }g(x)\le 0 \\ - \infty & \text{otherwise} \end{cases}\\ -\l=\argmax_{\l\ge 0} L(x,\l) - & \quad\To\quad -\begin{cases} -\l_i=0 & \text{if }g_i(x)<0 \\ 0=\na_{\l_i} L(x,\l) = g_i(x) & \text{otherwise} -\end{cases} -\end{align*} -This implies either $(\l_i=0 \wedge g_i(x)<0)$ or $g_i(x)=0$, -which is exactly equivalent to the \textbf{complementarity} -and \textbf{primal feasibility} conditions - -\item Again, optima $(x^*,\l^*)$ are saddle points where - -\qquad\qquad $\min_x L$ enforces stationarity and - -\qquad\qquad $\max_{\l\ge0} L$ enforces complementarity and primal feasibility - -~ - -\cen{\textbf{Together, $\min_x L$ and $\max_{\l\ge0} L$ enforce the KKT -conditions!}} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Lagrange dual problem} -\slide{The Lagrange dual problem}{ - -\item Finding the saddle point can be written in two ways: -\begin{align*} -\min_x \max_{\l\ge 0} L(x,\l) && \textbf{primal problem} \\ -\max_{\l\ge 0} \min_x L(x,\l) && \textbf{dual problem} -\end{align*} -%% because the $\max_{\l\ge 0} L(x,\l)$ ensures the constraints (previous -%% slide). - -~ - -\item Let's define the Lagrange \textbf{dual function} as -$$l(\l) = \min_x L(x,\l)$$ - -Then we have -\begin{align*} -\min_x f(x) &\st g(x)\le 0 && \textbf{primal problem} \\ -\max_\l l(\l) &\st \l\ge 0 && \textbf{dual problem} -\end{align*} -The dual problem is convex (objective=concave, constraints=convex), even if the primal is non-convex! - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{The Lagrange dual problem}{ - -\item The dual function is always a lower bound (for any $\l_i\ge 0$) -$$l(\l)= \min_x L(x,\l) ~\le~ \[\min_x f(x) \st g(x)\le 0\]$$ -And consequently -$$\max_{\l\ge 0} \min_x L(x,\l) ~\le~ \min_x \max_{\l\ge 0} L(x,\l) -= \min_{x:g(x)\le 0} f(x)$$ - -\item We say \textbf{strong duality} holds iff -$$\max_{\l\ge 0} \min_x L(x,\l) = \min_x \max_{\l\ge 0} L(x,\l)$$ - -~ - -\item If the primal is convex, and there exist an interior point -$$\exists_x:~ \forall_i:~ g_i(x) < 0$$ -(which is called \textbf{Slater condition}), then we -have \emph{strong duality} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{And what about algorithms?}{ - -\item So far we've only introduced a whole lot of formalism, and seen -that the Lagrangian sort of represents the constrained problem - -%% -- $\min_x L$ or $\na_x L=0$ is related to the stationarity - -%% -- $\max_\l L$ or $\na_\l L=0$ is related to feasibility or KKT conditions - -%% -- This implies two dual problems, $\min_x \max_\l L$ and -%% $\max_\l \min_x L$, the second (dual) is a lower bound of the first (primal) - -~ - -\item What are the algorithms we can get out of this? - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Log barrier method revisited}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Log barrier as approximate KKT} -\slide{Log barrier method revisited}{ - -\item Log barrier method: Instead of -$$\min_x~ f(x) \st g(x)\le 0$$ -we address -$$\min_x~ f(x) - \mu \sum_i \log(-g_i(x))$$ - -\item For given $\mu$ the optimality condition is -$$\na f(x) - \sum_i \frac{\mu}{g_i(x)} \na g_i(x) = 0$$ -or equivalently -\begin{align*} -\na f(x) + \sum_i \l_i \na g_i(x) &= 0 \comma -\l_i g_i(x) = -\mu -\end{align*} -These are called \textbf{modified (=approximate) KKT conditions}. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Log barrier method revisited}{ - -~ - -\begin{center} -\emph{Centering (the unconstrained minimization) in the log barrier -method is equivalent to solving the modified KKT conditions.} -\end{center} - -~ - -~ - - \tiny -Note also: On the central path, the duality gap is $m \mu$: - -\cen{$l(\l^*(\mu)) = f(x^*(\mu)) + \sum_i \l_i g_i(x^*(\mu)) = f(x^*(\mu)) -- m \mu$} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Primal-Dual interior-point Newton Method}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Primal-dual interior-point Newton method} -\slide{Primal-Dual interior-point Newton Method}{ - -\item A core outcome of the Lagrangian theory was the shift in problem -formulation: - -\begin{center} -find $x$ to $\min_x f(x) \st g(x)\le 0$ - -\medskip - -$\to$ ~ find $x$ to solve the KKT conditions -\end{center} - -~ - -\cen{\fbox{ -Optimization problem $\quad\too\quad$ -Solve KKT conditions -}} - -~ - -\item We think of the KKT conditions as an equation system -$r(x,\l)=0$, and can use the Newton method for solving it: - -\cen{$\na r \mat{c}{\D x\\\D \l} = -r$} - -~ - -This leads to primal-dual algorithms that adapt $x$ and $\l$ -concurrently. Roughly, this uses the \emph{curvature $\na^2 f$} to -estimate the right $\l$ to push out of the constraint. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Primal-Dual interior-point Newton Method}{ - -\item The first and last modified (=approximate) KKT conditions -\begin{align*} -{\color{blue}\na f(x) + \Sum_{i=1}^m \l_i \na g_i(x)} &= 0 && \text{(``force balance'')}\\ -\forall_i:~ g_i(x) &\le 0 && \text{(primal feasibility)}\\ -\forall_i:~ \l_i &\ge 0 && \text{(dual feasibility)}\\ -{\color{blue}\forall_i:~ \l_i g_i(x)} &= -\m && \text{(complementary)} -\end{align*} -can be written as the $n+m$-dimensional equation system -$$ -r(x,\l) = 0 -\comma -r(x,\l) := \mat{c}{ -\na f(x) + \na g(x)^\T \l\\ --\diag(\l) g(x) - \m \one_m -}$$ - -~ - -\item Newton method to find the root $r(x,\l) = 0$ -\begin{align*} -\mat{c}{x\\\l} - &\gets \mat{c}{x\\\l} - \na r(x,\l)^\1 r(x,\l) \\ -\na r(x,\l) - &= \mat{cc}{ -\he f(x) + \Sum_i \l_i \he g_i(x) & \na g(x)^\T \\ --\diag(\l) \na g(x) & - \diag(g(x)) -} ~ \in \RRR^{(n+m)\times(n+m)} -\end{align*} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Primal-Dual interior-point Newton Method}{ - -\item The method requires the Hessians $\he f(x)$ and $\he g_i(x)$ -\begin{items} -\item One can approximate the constraint Hessians $\he g_i(x) \approx -0$ -\item Gauss-Newton case: $f(x)=\phi(x)^\T \phi(x)$ only requires -$\na\phi(x)$ -\end{items} - -~ - -\item This primal-dual method does a joint update of both - --- the solution $x$ - --- the lagrange multipliers (constraint forces) $\l$ - -\emph{No need for nested iterations, as with penalty/barrier methods!} - -~ - -\item The above formulation allows for a duality gap $\m$; -choose $\m=0$ or consult Boyd how to update on the fly (sec 11.7.3) - -~ - -\item The \textbf{feasibility constraints} $g_i(x) \le 0$ and -$\l_i \ge 0$ need to be handled explicitly by the root finder (the -line search needs to ensure these constraints) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Phase I: Finding a feasible initialization}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Phase I optimization} -\slide{Phase I: Finding a feasible initialization}{ - -\item An elegant method for finding a feasible point $x$: -$$\min_{(x,s)\in\RRR^{n\po}} s \st \forall_i:~ g_i(x)\le s,~ s\ge 0$$ -or -$$\min_{(x,s)\in\RRR^{n+m}} \sum_{i=1}^m s_i \st \forall_i:~ g_i(x)\le s_i,~ s_i\ge 0$$ - -} - -\key{Trust region} -\slide{Trust Region}{ - -\item Instead of adapting the stepsize along a fixed direction, an -alternative is to adapt the \emph{trust region} - -\item Rougly, while $f(x+\d) > f(x) + \lsstop \na f(x)^\T \d$: -\begin{items} -\item Reduce trust region radius $\b$ -\item try $\d = \argmin_{\d:|\d|<\b} f(x+\d)$ using a local quadratic -model of $f(x+\d)$ -\end{items} - -~ - -\item The constraint optimization $\min_{\d:|\d|<\b} f(x+\d)$ can be -translated into an unconstrained $\min_\d f(x+\d) + \l \d^2$ for suitable -$\l$. The $\l$ is equivalent to a regularization of the Hessian; see -damped Newton. - -\item We'll not go into more details of trust region methods; see -Nocedal Section 4. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\slide{General approaches}{\label{lastpage} - -\item Penalty \& Barriers - -{\small --- Associate a (adaptive) penalty cost with violation of the constraint - --- Associate an additional ``force compensating the gradient into the - constraint'' (augmented Lagrangian) - --- Associate a log barrier with a constraint, becoming $\infty$ for violation (interior point method) - -~} - -\item Gradient projection methods (mostly for linear contraints) - -{\small --- For `active' constraints, project the step direction to become - tangantial - --- When checking a step, always pull it back to the feasible region - -~} - -\item Lagrangian \& dual methods - -{\small --- Rewrite the constrained problem into an unconstrained one - --- Or rewrite it as a (convex) dual problem - -~} - -\item Simplex methods (linear constraints) - -{\small - --- Walk along the constraint boundaries - -} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slidesfoot diff --git a/Optimization/03-newton.tex b/Optimization/03-newton.tex new file mode 100644 index 0000000..9bbcc42 --- /dev/null +++ b/Optimization/03-newton.tex @@ -0,0 +1,430 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Newton Method \& Steepest Descent} +\renewcommand{\keywords}{steepest descent, Newton, damping, trust region, non-convex fallback} + +\slides + +\providecommand{\lscurv}{\r_{\text{ls2}}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Steepest descent direction} +\slide{Detour: Steepest Descent Direction}{ + +\item The gradient $-\na f(x)$ is sometimes called \emph{steepest + descent direction} + +~ + +\cen{\emph{Is it really?}} + +~\mypause + +\item Here is a possible definition: + +~ + +\emph{The steepest descent direction is the one where, {\color{red} when you + make a step of length 1}, you get the largest decrease of $f$ in + its linear approximation.} + +\begin{align*} +\argmin_\d \na f(x)^\T \d \text{\qquad s.t.~} \norm{\d}=1 +\end{align*} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Detour: Steepest Descent Direction}{ + +\item But the norm $\norm{\d}^2=\d^\T A \d $ depends on the metric $A$! + +~ + +Let $A = B^\T B$ (Cholesky decomposition) and $z = B \d$ +\begin{align*} +\d^* +&= \argmin_\d \na f^\T \d \text{\qquad s.t.~} \d^\T A \d=1 \\ +&= B^\1 \argmin_z (B^\1 z)^\T \na f \text{\qquad s.t.~} z^\T z = 1\\ +&= B^\1 \argmin_z z^\T B^\mT \na f \text{\qquad s.t.~} z^\T z = 1\\ +&\propto B^\1 [- B^\mT \na f] = - A^\1 \na f +\end{align*} + +~ + +\item The steepest descent direction is $\d=- A^\1 \na f$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Covariant gradient descent} +\slide{Detour: Steepest Descent Direction}{ + +\item \textbf{Behavior under linear coordinate transformations:} + +\begin{items} + +\item Let $B$ be a matrix that describes a linear transformation in + coordinates + +~ + +\item A coordinate vector $x$ transforms as $z = B x$ + +\item The plain gradient $\na_x f(x)$ transforms as $\na_z f(z) = + B^\mT \na_x f(x)$ + +\item The metric $A$ transforms as $A_z = B^\mT A_x B^\1$ + +\item The steepest descent transforms as $A_z^\1 \na_z f(z) = B A_x^\1 + \na_x f(x)$ + +\end{items} + +\item[$\To$] \textbf{The steepest descent vector is a covariant.} (I.e., it's coordinates transform like those of an ordinary vector.) +{\hfill\ttiny (more details in the \emph{Maths script}) } + +~\pause + +\item Relevance in practise: +\begin{items} +\item When the decision variable $x$ lives in a non-Euclidean space +\item E.g.\ when $x$ is a probability distribution $\to$ use the \textbf{Fisher metric} in probability space $\to$ leads to the \textbf{natural gradient} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Newton Method}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Newton Step}{ + +\item For finding roots (zero points) of $f(x)$ + +\cen{\twocol{.3}{.4}{ +\show[1]{newton} +}{ +$$x \gets x - \frac{f(x)}{f'(x)}$$ +}} + +\item For finding optima of $f(x)$ in 1D (which are roots of $f'(x)$): +$$x \gets x - \frac{f'(x)}{f''(x)}$$ + +\item For finding optima in higher dimensions $x\in\RRR^n$: + +\medskip + +\eqbox{$x \gets x - \he f(x)^\1 \na f(x)$} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Hessian}{ + +\item The \defn{Hessian} of $f$ is defined as +$$\he f(x) = {\small\mat{cccc}{ +\frac{\del^2}{\del_{x_1}\del_{x_1}} f(x) & +\frac{\del^2}{\del_{x_1}\del_{x_2}} f(x) & +\cdots & +\frac{\del^2}{\del_{x_1}\del_{x_n}} f(x) \\ +\frac{\del^2}{\del_{x_1}\del_{x_2}} f(x) & +& & \vdots \\ +\vdots & & & \vdots \\ +\frac{\del^2}{\del_{x_n}\del_{x_1}} f(x) & +\cdots & +\cdots & +\frac{\del^2}{\del_{x_n}\del_{x_n}} f(x)}} ~\in\RRR^{n\times n}$$ + +~\small + +\item Provides the Taylor expansion: +$$f(x+\d) \approx f(x) + \na f(x)^\T \d + \half \d^\T~ \he f(x)~ \d$$ +{\tiny Note: $\he f(x)$ acts like a \textbf{metric} for $\d$\\} + +\item $\na f(x)^\T \d$ is the \defn{directional derivative}, and $\d^\T~ \he f(x)~ \d$ the \defn{directional 2nd derivative} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Notes on the Newton Step}{ + +\item If $f$ is a 2nd-order polynomial, the Newton step +jumps to the optimum in just one step. + +\item \emph{Unlike the gradient magnitude $|\na f(x)|$}, the magnitude of the +Newton step $\d$ is meaningful and scale invariant! +\begin{items} +\item If you'd rescale $f$ or $x$, $\d$ is unchanged +\end{items} + +\item \emph{Unlike the gradient $\na f(x)$}, the Newton step $\d$ is truely a +vector! +\begin{items} +\item The Newton step is invariant under coordinate +transformations; the coordinates of $\d$ transform contra-variant, +as it is supposed to for vector coordinates +\item The proof is exactly the same as for the steepest descent with a non-Euclidean metric -- the Hessian acts as a metric +\end{items} + +%% \item \textbf{The hessian as metric, and the Newton step as steepest descent:} Assume that the hessian $H = \he +%% f(x)$ is pos-def. Then it fulfils all necessary conditions to define a +%% scalar product $\ = \sum_{ij} v_i w_j H_{ij}$, where $H$ plays +%% the role of the metric tensor. If $H$ was the space's metric, then the +%% steepest descent direction is $- H^\1 \na f(x)$, which is the Newton +%% direction! + +%% Another way to understand the same: In the 2nd-order Taylor +%% approximation $f(x+\d) \approx f(x) + \na f(x)^\T\d + \half \d^\T H +%% \d$ the Hessian plays the role of a metric tensor. Or: we may think +%% of the function $f$ as being an isometric parabola $f(x+\d) \propto +%% \<\d,\d\>$, but we've chosen coordinates where $\ = v^\T H v$ and +%% the parabola seems squeezed. + +%% Note that this discussion only holds for pos-dev hessian. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why 2nd order information is better}{ + +~ + +\item Better direction: + +\show[.3]{2ndOrder} + +~ + +\item Better stepsize: +\begin{items} +\item A full Newton step jumps directly to the minimum of the local +squared approx. + +\item Robust Newton methods combine this with line search and damping (Levenberg-Marquardt) +\end{items} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Newton method} +\slide{Basic Newton method}{ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), \na f(x), \he f(x)$, +tolerance $\t$, parameters (defaults: +$\ainc=1.2, \adec=0.5, \lsstop=0.01, \l$) +\State initialize stepsize $\a=1$, fixed damping $\l$ +\Repeat +\State compute $\step$ to solve $(\he f(x) + \l \Id)~ \step = - \na f(x)$ \label{alg0} +\While{$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$} \Comment{line search} +\State $\a \gets \adec\a$ \Comment{decrease stepsize} +\EndWhile +\State $x \gets x + \a\step$ \Comment{step is accepted} +\State $\a \gets \min\{\ainc\a,1\}$ \Comment{increase stepsize} +\Until $\norm{\a\step}_\infty < \t$ +\end{algo} + +~\tiny + +\item Notes: +\begin{items}\tiny +\item Line \ref{alg0} computes the Newton step $\step = -\he f(x)^\1 \na f(x)$, + +e.g.\ using a special Lapack routine \texttt{dposv} to solve $A x = b$ (using Cholesky) + +%% \item Line \ref{algEig} chooses $\l$ to ensure that $(\he f(x) + \l \Id)$ +%% is indeed pos-dev---and a Newton step actually decreases $f$ instead +%% of seeking for a maximum + +%% (There would be other options: +%% instead of adding to all eigenvalues we could only set the negative +%% ones to some $\l>0$.) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Basic Newton method}{ + +\item What if the Hessian is \emph{negative} definite? $\to$ The Newton step jumps to a \emph{maximum}! + +~\pause + +\item What if some eigenvalues are positive, some negative? (This is called a \emph{saddle point}? + +~\pause + +\item[$\to$] For robust minimization, we need to have a fallback for non-positive definite Hessian + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Newton method with non-pos-def fallback} +\key{Levenberg-Marquardt} + +\slide{Newton method with non-pos-def fallback}{ + +\begin{algo} +%% \Require initial $x\in\RRR^n$, functions $f(x), \na f(x), \he f(x)$, +%% tolerance $\t$, parameters (defaults: +%% $\ainc=1.2, \adec=0.5, \linc=\ldec=1, \lsstop=0.01$) +\State initialize stepsize $\a=1$ +\Repeat +\State {\color{blue}try to} compute $\step$ to solve $(\he f(x) + \l \Id)~ \step = - \na +f(x)$ +\If{$\na f(x)^\T \step > 0$ (non-descent) or fails (ill-def.\ linear system)} +\State $\step \gets -\frac{\na f(x)}{|\na f(x)|}$ \Comment{(gradient direction)} +\State (Or: choose $\l>[-\text{minimal eigenvalue of $\he f(x)$}]^+$ and repeat) \label{algEig} +\EndIf +\While{$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$} \Comment{line search} +\State $\a \gets \adec\a$ \Comment{decrease stepsize} +\State optionally: $\l \gets \linc\l$ and recompute $\d$ \Comment{increase damping} +\EndWhile +\State $x \gets x + \a\step$ \Comment{step is accepted} +\State $\a \gets \min\{\ainc\a,1\}$ \Comment{increase stepsize} +\State optionally: $\l \gets \ldec\l$ \Comment{decrease damping} +\Until $\norm{\a\step}_\infty < \t$ repeatedly +\end{algo} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Newton method with non-pos-def fallback -- Notes}{ + +\item The $\l$ shifts the eigenvalues: Adding to the diagonal of a matrix, all eigenvalues are shifted + +\pause + +\item This is also called \emph{damping} or \defn{Levenberg-Marquardt}, and related to trust regions + +\pause \tiny + +\item The specific algo on previous slide is subjective -- literal from our research code. But other extensions might be better in other applications; and existing optimization libraries use other tricks to robustify their Newton method. +\begin{items}\ttiny +\item Line 3 of the method on slide 20 says ``try to''. This assumes that a solver might fail to solve $(\he f(x) + \l \Id)~ \d = - \na f(x)$ for $\d$. This is in particular the case when the solver is based on a Cholesky decomposition, which is highly efficient but only defined for pos-def matrices. The Newton method would have to catch the error signal of this solver. + +\item Other solvers can solve also non-pos-dev linear equation systems, but then the computed step $\d$ might not point downhill (e.g., it might point to a sattle point or maximum of $f(x)$). To catch this case, line 4 additionally tests whether $\d$ points downhill. + +\item In these failure cases, the extended Newton method uses the plain gradient direction as the fallback (Line 5). + +\item Note that the scaling and meaning of $\a$ when transitioning between Newton steps and gradient steps is an issue. Both $\d$'s have very different scales and adapting $\a$ for one does not translate automatically to the other. A solution might be to maintain separate $\a$'s for Newton steps and gradient steps -- I have not tested. + +\item Lines 6, 10 and 14 mention possible heuristics to adapt the damping $\l$ (which is related to adapting the implicit trust region). However, by default, I would not use these options. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Trust Regions} +\slide{Relation to Trust-Region}{\label{lastpage} + +\small + +\item The damped Newton step $\step$ solves the problem +\begin{align*} +\min_\step \[ \na f(x)^\T \step + \half \step^\T \he f(x) \step ++ \half \l \step^2)\] ~. +\end{align*} +\vspace*{-5mm} +\begin{items} +\item where $\l$ introduces a squared penalty for large steps +\end{items} + +\pause + +\item \defn{Trust region method}: +\begin{align*} +\min_\d \[ \na f(x)^\T \step + \half \step^\T \he f(x) \step\] \st \step^2 \le \b +\end{align*} +\vspace*{-5mm} +\begin{items} +\item where $\b$ defines the \emph{trust region} +\end{items} + +\pause + +{\tiny + +\item Solving this using Lagrange parameters (as we will learn it later): +\vspace*{-3mm} +$$ +L(\step, \l) += \na f(x)^\T \step + \half \step^\T \he f(x) \step + \l (\step^2 - \b) \comma +\na_\step L(\step, \l) += \na f(x)^\T + \step^\T (\he f(x) + 2\l\Id) +$$ +\vspace*{-5mm} + +gives the step $\step = -(\he f(x) + 2\l\Id)^\1 \na f(x)$, with $\l$ the \defn{dual variable} + +} + +\item For $\l\to\infty$, $\step$ becomes aligned +with $-\na f(x)$ ~ (but $|\step|\to 0$) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Computational issues}{ + +%% \item Let + +%% $C_{f}$ be computational cost of evaluating $f(x)$ only + +%% $C_\text{eval}$ be computational cost of evaluating $f(x), \na f(x), \he f(x)$ + +%% $C_\D$ be computational cost of solving $(\he f(x) + \l \Id)~ \D = - \na f(x)$ + +%% ~ + +%% \item If $C_\text{eval} \gg C_f$ ~$\to$~ proper line search instead of +%% stepsize adaptation + +%% If $C_{\D} \gg C_f$ ~$\to$~ proper line search instead of +%% stepsize adaptation + +%% \item However, in many applications (in robotics at least) +%% $C_\text{eval} \approx C_f \gg C_\D$ + +%% ~ + +%% \item Often, $\he f(x)$ is banded (non-zero around diagonal only) + +%% $\to$ $A x = b$ becomes super fast using \texttt{dpbsv} ~ (Dynamic +%% Programming) + +%% ~ + +%% \tiny + +%% (If $\he f(x)$ is a ``tree'': Dynamic Programming on the ``Junction +%% Tree'') + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/04-approximateNewton.tex b/Optimization/04-approximateNewton.tex new file mode 100644 index 0000000..90eb159 --- /dev/null +++ b/Optimization/04-approximateNewton.tex @@ -0,0 +1,487 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Approximate Newton Methods} +\renewcommand{\keywords}{Gauss-Newton, BFGS, conjugate gradient} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Approximate Newton Methods}{ + +\item In high dimensions, computing exact Newton steps can be inefficient: +\begin{items} +\item Computing and storing the dense Hessian $H\in\RRR^{n\times n}$ is already inefficient +\end{items} + +~ + +\item Newton makes particularly sense, if the \textbf{Hessian is sparse} +\begin{items} +\item Sparse Hessian $\oto$ graphical models of dependencies + +\show[.25]{vl3-Jordan-FG} + +\item Factor graphs, large-scale structured least squares problems (cf.\ ceres) +\item in robotics: path optimization, computer vision: bundle adjustment, graph SLAM (cf.\ gtsam), probabilistic inference (MAP) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Approximate Newton Methods}{ + +\item \textbf{Least Squares problems} and the Gauss-Newton approximation! +\begin{items} +\item Very important problem class -- ubiquitous in AI, ML, robotics, etc +\item Approximates the Hessian, scalable if the \textbf{Jacobian is sparse} +\end{items} + +~\pause + +\item Other methods approximate the Hessian from gradient observations: +\begin{items} +\item BFGS, (L)BFGS (``quasi-Newton method'') -- a default solver in science +\item Conjugate Gradient +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Least Squares \& Gauss-Newton method} +\slide{Gauss-Newton method}{ + +\item Consider a \defn{least squares} problem (cost is a \defn{sum-of-squares}): +\begin{align*} +\min_x f(x) \qquad\text{where}~ f(x) = \phi(x)^\T \phi(x) = \sum_{i=1}^d \phi_i(x)^2 +\end{align*} +with \textbf{features} $\phi(x) \in \RRR^d$, and we can evaluate $\phi(x)$ and $J=\Del x \phi(x)$ for any $x\in\RRR^n$ + +~\pause\tiny + +\item $\phi(x)\in\RRR^d$ is a vector; each entry contributes a squared +cost term to $f(x)$ + +\item $\Del x \phi(x)$ is the \textbf{Jacobian} ~ ($d\times n$-matrix) +$$J=\Del x \phi(x) = {\small\mat{cccc}{ +\frac{\del}{\del_{x_1}} \phi_1(x) & +\frac{\del}{\del_{x_2}} \phi_1(x) & +\cdots & +\frac{\del}{\del_{x_n}} \phi_1(x) \\ +\frac{\del}{\del_{x_1}} \phi_2(x) & +& & \vdots \\ +\vdots & & & \vdots \\ +\frac{\del}{\del_{x_1}} \phi_d(x) & +\cdots & +\cdots & +\frac{\del}{\del_{x_n}} \phi_d(x)}} ~\in\RRR^{d\times n}$$ + +%with 1st-order Taylor expansion~ $\phi(x+\d) = \phi(x) + \Del x \phi(x)~ \d$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Gauss-Newton method}{ + +\item The gradient and Hessian of $f(x)$ are +\begin{align*} +f(x) + &= \phi(x)^\T \phi(x) \\ +\na f(x) + &= 2 \Del x\phi(x)^\T \phi(x) \qquad \text{\small(recall $\na f(x) \equiv \Del x f(x)^\T$)}\\ +\he f(x) + &= 2 \Del x\phi(x)^\T \Del x\phi(x) + 2 \phi(x)^\T \he \phi(x) +\end{align*} +%{\hfill\tiny $\he \phi(x)$ is a ${}^{d}{}_{nn}$-tensor} + +~ + +\item \emph{The Gauss-Newton method is the Newton method for +$f(x) = \phi(x)^\T \phi(x)$ while approximating $\he \phi(x)\approx 0$, i.e.} + +\eqbox{$\he f(x) \approx 2 \Del x\phi(x)^\T \Del x\phi(x) = 2 J^\T J$} + +\medskip + +\ttiny (Use this approximation when computing the step $\d$ is the standard Newton algorithm.) + +%% ~ + +%% In the Newton algorithm, replace line \ref{alg0} by solving +%% $$(2\Del x\phi(x)^\T \Del x\phi(x) +%% + \l \Id)~ \step = - 2\Del x\phi(x)^\T \phi(x)$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Gauss-Newton method}{ + +\item The approximate Hessian $H = 2J^\T J$ is \textbf{always semi-pos-def!} + +~\pause + +\item $H$ is a sum of rank-1 matrices: +$$H = 2 \sum_{i=1}^d \na \phi_i(x) \na \phi_i(x)^\T$$ +(which implies semi-pos-def) + +~\pause + +\item If the Jacobian $J$ is sparse, so is the Hessian $\to$ graphical structure + +%% ~\pause + +%% \item Computing $H$ requires only first-order derivatives of features $\phi$, no computationally expensive Hessians + +~\pause\tiny + +\item $H$ can be interpreted as pullback of the Euclidean +norm $\phi^\T \phi$ in feature space. As it is $x$-dependent, this is a non-constant metric in $x$-space -- it defines a \emph{Riemannian} metric. (See math notes.) + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robotics example}{ + +\small + +\item Path optimization: Let $x = (x_1,..,x_T), x_t\in \RRR^n$ be a discretized path, +$$\min_x \sum_{t=1}^T (x_t + x_{t\2} - 2 x_{t\1})^2 ~+~ \phi(x_T)^2$$ +where $x_0,x_{\1}$ are given, and $\phi(x_T)$ are some features of the end configuration $x_T$ + +\show[.4]{path} + +\cit{Toussaint}{A tutorial on Newton methods for constrained trajectory optimization and relations to SLAM, Gaussian Process smoothing, optimal control, and probabilistic inference}{2017} + +~ + +\item We use the formulation in terms of \textbf{features} throughout, also for hard constraints + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Quasi-Newton methods}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Quasi-Newton methods} +\slide{Quasi-Newton methods}{ + +~ + +\item Assume we \emph{cannot} evaluate $\he +f(x)$. \emph{Can we still use 2nd order methods?} + +~ + +\item Yes: We can approximate $\he f(x)$ from the data $\{(x_i, \na +f(x_i))\}_{i=1}^k$ of previous iterations + +~ + +\item (General view: We can \emph{learn} from the data $\{(x_i, \na +f(x_i))\}_{i=1}^k$ ~ $\leadsto$ e.g., Bayesian optimization or model-based optimization for blackbox optimization.) +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Basic example}{ + +\small + +\item We've seen two data points $(x_1,\na f(x_1))$ and +$(x_2,\na f(x_2))$ -- How can we estimate $\he f(x)$? + +~\pause + +\only<2>{ + +\item In 1D: +\begin{align*} +\he f(x) + &\approx \frac{\na f(x_2) - \na f(x_1)}{x_2-x_1} +% &= \frac{y}{\d} \comma y:=\na f(x_2) - \na f(x_1) \comma \d=x_2-x_1 +\end{align*} + +} + +\pause + +\item In $\RRR^n$: ~ Let $y=\na f(x_2) - \na f(x_1)$,~ $\d=x_2-x_1$ + +What are matrices $H$ or $H^\1$ to fulfil the following? +\begin{align*} +H~ \d \overset{!}= y \qquad\text{or}\qquad \d \overset{!}= H^\1 y +\end{align*} +{\tiny\small(The first equation is called \emph{secant equation})} + +~\pause + +\item ``Simplest'' symmetric rank-1 solutions for $\bar H\approx H$ and $\hat H \approx H^\1$: +\begin{equation} +\bar H = \frac{y y^\T}{y^\T \d} \qquad\text{or}\qquad \hat H = {\color{blue}\frac{\d \d^\T}{\d^\T y}} +\end{equation} + +\tiny +[Left: how to update $\bar H \approx H$.~ Right: how to update directly $\hat H \approx H^\1$.] + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Broyden-Fletcher-Goldfarb-Shanno (BFGS)} +\slide{BFGS}{ + +\item Broyden-Fletcher-Goldfarb-Shanno (BFGS) method: + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), \na f(x)$, tolerance $\t$ +\Ensure $x$ +\State initialize $\hat H=\Id_n$ +\Repeat +\State compute $\step = - \hat H \na f(x)$ +\State perform a line search $\min_\a f(x + \a \step)$ +\State $\d \gets \a \step$ +\State $y \gets \na f(x+\d) - \na f(x)$ +\State $x \gets x + \d$ +\State update $\hat H \gets {\color{red}\(\Id-\frac{y \d^\T}{\d^\T y}\)^\T \hat H +\(\Id-\frac{y \d^\T}{\d^\T y}\)} + {\color{blue}\frac{\d \d^\T}{\d^\T y}}$ +\Until $\norm{\d}_\infty < \t$ +\end{algo} + +\begin{items}\ttiny + +\item The blue term is the $\hat H$-update as on the previous slide + +\item The red term ``deletes'' ``old'' $\hat H$-components. Check: $\hat H y = \d$ + +\item equivalent to the Sherman-Morrison formula: +$ +H \gets H - \frac{H \d \d^\T H^\T}{\d^T H \d} + \frac{y y^\T}{y^\T \d} +$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{L-BFGS}{ + +%% \item BFGS is the most popular of all Quasi-Newton methods + +%% Others exist, which differ in the exact $\hat H$-update + +%% ~ + +\item In high dimensions, we do not want to explicitly store a dense $\hat H$. Instead we store vectors $\{v_i\}$ such that $\hat H = \sum_i v_i +v_i^\T$ + +\item \defn{L-BFGS} (limited memory BFGS) limits the rank of the $\hat H$ and thereby the used memory (number of vectors $v_i$) + +~ + +~\pause\small + +\item Some thoughts: + +In principle, there are alternative ways to estimate $H^\1$ +from the data $\{(x_i, f(x_i), \na f(x_i))\}_{i=1}^k$, e.g.\ using +Gaussian Process regression with derivative observations +\begin{items} +\item not only the derivatives but also the value $f(x_i)$ should give + information on $H(x)$ for non-quadratic functions + +\item should one weight `local' data stronger than `far away'?\\ + (GP covariance function) + +\item related to model-based search (see Blackbox Optimization lecture) +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{(Nonlinear) Conjugate Gradient}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Conjugate gradient} +\slide{Conjugate Gradient}{ + +\item The ``Conjugate Gradient Method'' is a method for solving +(large, or sparse) linear eqn.\ systems $Ax+b=0$, without inverting or +decomposing $A$. The steps will be ``$A$-orthogonal'' (=conjugate). + +We mention its extension for optimizing nonlinear functions $f(x)$ + +~ + +\item As before we evaluted $g'=\na f(x_1)$ and $g=\na f(x_2)$ at points $x_1,x_2\in\RRR^n$ + +\item Additional assumption: \emph{exact line-search} step to $x_2$: +\begin{items} +\item $x_2 = x_1 + \a \d_1\comma \a = \argmin_\a f(x_1 + \a \d_1)$ +\item iso-lines of $f(x)$ at $x_2$ are tangential to $\d_1$ +\end{items} + +\item[$\To$] The next search direction should be ``orthogonal'' to the previous one, but orthogonal w.r.t.\ the Hessian $H$, i.e., $\d_2^\T H \d_1 = 0$, which is called conjugate + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conjugate Gradient}{ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), \na f(x)$, tolerance $\t$ +\Ensure $x$ +\State initialize descent direction $\d = g = -\na f(x)$ +\Repeat +\State $\a \gets \argmin_\a f(x+\a \d)$ \Comment{line search} +\State $x \gets x + \a \d$ +\State $g' \gets g$,~ $g = -\na f(x)$ \Comment{store and compute grad} +\State $\b \gets \max\left\{\frac{g^\T(g - g')}{g'^\T g'},0\right\}$ +\State $\d \gets g + \b \d$ \Comment{conjugate descent direction} +\Until $|\D x| <\t$ +\end{algo} + +\begin{items} + +\item $\b>0$: The new descent direction always adds a bit of the old + direction! + +\item This \emph{momentum} essentially provides 2nd order information + +\item The equation for $\b$ is by Polak-Ribi{\`e}re: On a quadratic + function $f(x) = x^\T A x + b^\T x$ this leads to \defn{conjugate} search + directions, $\d'^\T A \d = 0$. + +%% \item Line search can be replaced by 1st \textbf{and 2nd Wolfe condition} +%% with $\lscurv<\half$ + +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conjugate Gradient}{ + +\cen{\twocol{.5}{.5}{ +\show{conjugateGradient} +}{ +\show{conjugateGradient2} +}} + +~ + +~ + +\item For quadratic functions CG converges in $n$ iterations. + +But each iteration does \emph{exact} line search + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Convergence Rates Notes}{ +%% } + +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Convergence Rates Notes}{ + +%% ~ + +%% \item Linear, quadratic convergence (for $q=1,2$): +%% $$\lim_k \frac{|x_{k\po}-x^*|}{|x_k-x^*|^p} = r$$ +%% with rate $r$. E.g.\ $x_k = r^k$ (linear) or $x_{k\po}=r x_k^2$ +%% (quadratic) + +%% } + +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Convergence Rates Notes}{ + +%% \item Theorem 3.3 in Nocedal et al.: + +%% Plain gradient descent with exact line search applied to $f(x) = x^\T +%% A x$, $A$ with eigenvalues $0 < \l_1 \le .. \le \l_n$, satisfies +%% \begin{align*} +%% \norm{x_{k\po}-x^*}^2_A +%% &\le \(\frac{\l_n-\l_1}{\l_n+\l_1}\)^2~ \norm{x_k-x^*}^2_A +%% \end{align*} + +%% \item same on a smooth, locally pos-def function $f(x)$: For +%% sufficiently large $k$ +%% $$ f(x_{k\po}) - f(x^*) \le r^2 [f(x_k)-f(x^*)] $$ + +%% \item Newton steps (with $\a=1$) on smooth locally pos-def +%% function $f(x)$: +%% \begin{items} +%% \item $x_k$ converges \emph{quadratically} to $x^*$ +%% \item $|\na f(x_k)|$ converges \emph{quadratically} to zero +%% \end{items} + +%% \item Quasi-Newton methods also converge superlinearly if the Hessian +%% approximation is sufficiently precise (Thm. 3.7) + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Conjugate Gradient}{ + +%% \item Useful tutorial on CG and line search: + +%% ~ + +%% J.\ R.\ Shewchuk: \emph{An Introduction to +%% the Conjugate Gradient Method +%% Without the Agonizing Pain} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Further Methods}{\label{lastpage} + +\item Beyond the standard canon -- but perhaps discussed later: +\begin{items} +\item Bound constrained optimization + +\item Stochastic Gradient + +~ + +\item Blackbox Optimization, Bayesian Optimization +\item model-based optimization, implicit filtering +\item Stochastic Search, Evolutionary Algorithms, EDAs +\item Simulated annealing +\item Nelder-Mead downhill simplex, pattern search +\item Rprop +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/04-convexProblems.tex b/Optimization/04-convexProblems.tex deleted file mode 100644 index 789a5a7..0000000 --- a/Optimization/04-convexProblems.tex +++ /dev/null @@ -1,514 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\renewcommand{\topic}{Convex Optimization} -\renewcommand{\keywords}{Convex, quasiconvex, unimodal, convex -optimization problem, linear program (LP), standard form, simplex -algorithm, LP-relaxation of integer linear programs, quadratic programming -(QP), sequential quadratic programming} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Function types: covex, quasi-convex, uni-modal} -\slide{Function types}{ - -\item A function is defined \textbf{convex} iff -$$f(ax + (1\!-\!a)y) \le a~ f(x) + (1\!-\!a)~ f(y)$$ -for all $x,y\in\RRR^n$ and $a\in[0,1]$. - -~ - -\item A function is \textbf{quasiconvex} iff -$$f(ax + (1\!-\!a)y) \le \max\{f(x), f(y)\}$$ -for any $x,y\in\RRR^m$ and $a\in[0,1]$. - -{\tiny ..alternatively, iff every sublevel set $\{ x | f(x)\le \a\}$ -is convex.} - -~ - -\item {}[Subjective!] I call a function \textbf{unimodal} iff it has -only 1 local minimum, which is the global minimum - -{\tiny Note: in dimensions $n>1$ quasiconvexity is stronger than unimodality} - -~ - -\item A general \textbf{non-linear} function is unconstrained and can -have multiple local minima - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -\cen{convex ~$\subset$~ quasiconvex ~$\subset$~ unimodal ~$\subset$~ general} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Local optimization}{ - -\item So far I avoided making explicit assumptions about problem -convexity: To emphasize that all methods we considered -- except for -Newton -- are applicable also on non-convex problems. - -~ - -\item The methods we considered are \textbf{local} optimization -methods, which can be defined as - --- a method that adapts the solution locally - --- a method that is guaranteed to converge to a local minimum only - -~ - -\item Local methods are efficient - --- if the problem is (strictly) unimodal ~ (strictly: no plateaux) - --- if time is critical and a local optimum is a sufficiently good - solution - --- if the algorithm is restarted very often to hit multiple local - optima - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convex problems}{ - -\item Convexity is a strong assumption - -~ - -\item But solving convex problems is an important case -\begin{items} -\item theoretically ~ (convergence proofs!) - -\item many real world applications are actually convex - -\item convexity around a local optimum $\to$ efficient local optimization -\end{items} - -~ - -\item Roughly: - -\cen{``global optimization = finding local optima + multiple -convex problems''} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Convex problems}{ - -\item A constrained optimization problem -$$\min_x~ f(x) \st g(x)\le 0,~ h(x) = 0$$ -is called \textbf{convex} iff - --- $f$ is convex - --- each $g_i$, $i=1,..,m$ is convex - --- $h$ is linear:~ $h(x)= Ax-b,~ A\in\RRR^{l\times n}, b\in\RRR^l$ - -~ - -~\small - -\item Alternative definition: - -\cen{$f$ convex and feasible region is a convex set} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Linear program (LP)} -\key{Quadratic program (QP)} -\slide{Linear and Quadratic Programs}{ - -\item Linear Program (LP) -$$\min_x~ c^\T x \st G x \le h,~ Ax=b$$ - -LP in standard form -$$\min_x~ c^\T x \st x \ge 0,~ Ax=b$$ - -\item Quadratic Program (QP) -$$\min_x~ \half x^\T Q x + c^\T x \st G x \le h,~ Ax=b$$ -where $Q$ is positive definite. - -~ - -\small -(This is different to a Quadratically Constraint Quadratic Programs (QCQP)) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{LP in standard form} -\slide{Transforming an LP problem into standard form}{ - -\item LP problem: -$$\min_x~ c^\T x \st G x \le h,~ Ax=b$$ - -\item Define slack variables: -$$\min_{x,\xi}~ c^\T x \st G x + \xi = h,~ Ax=b,~ \xi\ge 0$$ - -\item Express $x=x^+ - x^-$ with $x^+,x^-\ge 0$: -{\small -\begin{align*} -\min_{x^+,x^-,\xi}~ &c^\T (x^+-x^-)\\ -& \st G (x^+-x^-) + \xi = h,~ A(x^+-x^-)=b,~ \xi\ge 0,~ x^+\ge 0,~ - x^-\ge 0 -\end{align*}} -where $(x^+,x^-,\xi)\in\RRR^{2n+m}$ - -~ - -\item Now this is conform with the standard form (replacing -$(x^+,x^-,\xi)\equiv x$, etc) -$$\min_x~ c^\T x \st x \ge 0,~ Ax=b$$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example LPs}{ - -~ - -Browse through the exercises 4.8-4.20 of Boyd \& Vandenberghe! - -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Linear Programming}{ - --- Algorithms - --- Application: LP relaxation of discret problems - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Algorithms for Linear Programming}{ - -~ - -\item All of which we know! - --- augmented Lagrangian (LANCELOT software), penalty - --- log barrier (``interior point method'', ``[central] path following'') - --- primal-dual Newton - -~ - -\item The simplex algorithm, walking on the constraints - -~ - -(The emphasis in the notion of \emph{interior} point methods is to -distinguish from constraint walking methods.) - -~ - -\item Interior point and simplex methods are comparably efficient - -Which is better depends on the problem - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Simplex method} -\slide{Simplex Algorithm}{ - -Georg Dantzig (1947) - -{\tiny Note: Not to confuse with the Nelder–Mead method (downhill simplex method)} - -~ - -\item We consider an LP in standard form -$$\min_x~ c^\T x \st x \ge 0,~ Ax=b$$ - -\item Note that in a linear program the optimum is always -situated at a corner - -~ - -\show[.4]{simplex} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Simplex Algorithm}{ - -\show[.4]{simplex} - -\item The Simplex Algorithm walks along the edges of the polytope, at -every corner choosing the edge that decreases $c^\T x$ most - -\item This either terminates at a corner, or leads to an unconstrained -edge ($-\infty$ optimum) - -~ - -\item In practise this procedure is done by ``pivoting on the simplex -tableaux'' - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Simplex Algorithm}{ - -\item The simplex algorithm is often efficient, but in worst case -exponential in $n$ and $m$. - -~ - -\item Interior point methods (log barrier) and, more -recently again, augmented Lagrangian methods have become somewhat more -popular than the simplex algorithm - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{LP-relaxations of discrete problems}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{LP-relaxations of integer programs} -\slide{Integer linear programming (ILP)}{ - -\item An integer linear program (for simplicity binary) is -$$\min_x~ c^\T x \st Ax=b,~ x_i \in\{0,1\}$$ - -~ - -\item Examples: -\begin{items} -\item Travelling Salesman: $\min_{x_{ij}} \sum_{ij} c_{ij} x_{ij}$ with -$x_{ij}\in\{0,1\}$ and constraints $\forall_j: \sum_i x_{ij}=1$ -(columns sum to 1), $\forall_j: \sum_i x_{ji}=1$, $\forall_{ij}: -t_j-t_i \le n-1+n x_{ij}$ (where $t_i$ are additional integer variables). - - -\item MaxSAT problem: In conjunctive normal form, each clause contributes -an additional variable and a term in the objective function; each -clause contributes a constraint - -\item Search the web for \emph{The Power of Semidefinite Programming -Relaxations for MAXSAT} -\end{items} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{LP relaxations of integer linear programs}{ - -\item Instead of solving -$$\min_x c^\T x \st Ax=b,~ x_i \in\{0,1\}$$ -we solve -$$\min_x c^\T x \st Ax=b,~ x\in[0,1]$$ - -~ - -\item Clearly, the relaxed solution will be a \emph{lower bound} on -the integer solution (sometimes also called ``outer bound'' because $[0,1]\supset\{0,1\}$) - -~ - -\item Computing the relaxed solution is interesting - --- as an ``approximation'' or initialization to the integer problem - --- to be aware of a lower bound - --- in cases where the optimal relaxed solution happens to be - integer - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example:~ MAP inference in MRFs}{ - -\item Given integer random variables $x_i$, -$i=1,..,n$, a pairwise Markov Random Field (MRF) is defined as -$$f(x) = \sum_{(ij)\in E} f_{ij}(x_i, x_j) + \sum_i f_i(x_i)$$ -where $E$ denotes the set of edges. Problem: find $\max_x f(x)$. - -{\tiny (Note: any general (non-pairwise) MRF can be converted -into a pair-wise one, blowing up the number of variables) - -} - -\item Reformulate with indicator variables -$$b_i(x) = [x_i=x] \comma b_{ij}(x,y) = [x_i=x]~ [x_j=y]$$ -These are $nm + |E|m^2$ binary variables - -\item The indicator variables need to fulfil the constraints -\begin{align*} -b_i(x), b_{ij}(x,y) &\in\{0,1\} \\ -\sum_x b_i(x) &= 1 &&\text{because $x_i$ takes eactly one value}\\ -\sum_y b_{ij}(x,y) &= b_i(x) &&\text{consistency between indicators} -\end{align*} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example:~ MAP inference in MRFs}{ - -\item Finding $\max_x f(x)$ of a MRF is then equivalent to -$$\max_{b_i(x),b_{ij}(x,y)} \sum_{(ij)\in E}\sum_{x,y} -b_{ij}(x,y)~ f_{ij}(x, y) + \sum_i\sum_x b_i(x)~ f_i(x)$$ -such that -$$b_i(x), b_{ij}(x,y) \in\{0,1\} \comma \sum_x b_i(x) = -1 \comma \sum_y b_{ij}(x,y) = b_i(x)$$ - -~ - -\item The LP-relaxation replaces the constraint to be -$$b_i(x), b_{ij}(x,y) \in[0,1] \comma \sum_x b_i(x) = -1 \comma \sum_y b_{ij}(x,y) = b_i(x)$$ - -This set of feasible $b$'s is called \textbf{marginal polytope} -(because it describes the a space of ``probability distributions'' -that are marginally consistent (but not necessarily globally normalized!)) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example:~ MAP inference in MRFs}{ - -\item Solving the original MAP problem is NP-hard - -Solving the LP-relaxation is really efficient - -~ - -\item If the solution of the LP-relaxation turns out to be integer, -we've solved the originally NP-hard problem! - -If not, the relaxed problem can be discretized to be a good -initialization for discrete optimization - -~ - -\item For binary attractive MRFs (a common case) the solution will always -be integer - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Quadratic Programming}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Quadratic Programming}{ - -$$\min_x~ \half x^\T Q x + c^\T x \st G x \le h,~ Ax=b$$ - -%(The dual of a QP is again a QP) - -~ - -\item Efficient Algorithms: - --- Interior point (log barrier) - --- Augmented Lagrangian - --- Penalty - -~ - -\item Highly relevant applications: - --- Support Vector Machines - --- Similar types of max-margin modelling methods - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example: Support Vector Machine}{ - -\item Primal: - -$$\max_{\b, \norm{\b}=1} M \st \forall_i:~ y_i (\phi(x_i)^\T \beta) \ge M$$ - -\item Dual: - -$$\min_{\b}\norm{\b}^2 \st \forall_i:~ y_i (\phi(x_i)^\T \beta) \ge 1$$ - -~ - -\cen{ -\showh[.3]{svm_trenngeraden} -\hspace{1cm} -\showh[.35]{svm_margin} -} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Sequential quadratic programming} -\slide{Sequential Quadratic Programming}{\label{lastpage} - -\item We considered general non-linear problems -$$\min_x~ f(x) \st g(x)\le 0$$ -where we can evaluate $f(x)$, $\na f(x)$, $\he f(x)$ and $g(x)$, $\na -g(x)$, $\he g(x)$ for any $x\in\RRR^n$ - -\cen{$\to$ Newton method} - -~ - -\item In the unconstrained case, the standard step direction $\d$ is $(\he f(x) + \l \Id)~ \d = - \na f(x)$ - -~ - -\item In the constrained case, a natural step direction $\d$ can be found by solving -the local QP-approximation to the problem -$$\min_\d~ f(x) + \na f(x)^\T \d + \d^\T \he f(x) \d \st g(x) + \na -g(x)^\T \d\le 0$$ - -This is an optimization problem over $\d$ and only requires -the evaluation of $f(x), \na f(x), \he f(x), g(x), \na g(x)$ once. - -} - -\slidesfoot diff --git a/Optimization/05-constrained.tex b/Optimization/05-constrained.tex new file mode 100644 index 0000000..772f9db --- /dev/null +++ b/Optimization/05-constrained.tex @@ -0,0 +1,174 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Non-Linear Mathematical Programs \& KKT} +\renewcommand{\keywords}{} +%\renewcommand{\keywords}{General definition, force balance view \& KKT conditions} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Constrained optimization} +\slide{Problem Formulation}{ + +\item General \defn{Non-linear Mathematical Program (NLP)} (constrained optimization problem): + +Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, $g:~ \RRR^n \to \RRR^m$, +$h:~ \RRR^n \to \RRR^l$ find +$$ \min_x~ f(x) \st g(x)\le 0,~ h(x) = 0 $$ +\begin{items} +\item We typically assume $f,g,h$ to be differentiable or smooth. +\item We can typically query $f,\na f, g, \na g, h, \na h$, optionally also $\he f$. +\end{items} + +~ + +~\small + +\item The lecture sometimes only mentions inequality constraints $g$, +equality constraints are analogous/easier + +%% ~ + +%% \item Applications + +%% -- Find an optimal, non-colliding trajectory in robotics + +%% -- Optimize the shape of a turbine blade, s.t.\ it must not break + +%% -- Optimize the train schedule, s.t.\ consistency/possibility + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{General approaches}{ + +\item Roughly, try to somehow transform the constraint problem to +\begin{items} +\item a series of unconstraint problems ~ (log-barrier, AugLag, etc...) +\item a single but larger unconstraint problem ~ (primal-dual) +\item a (series of) other constraint problems, hopefully simpler ~ (dual, convex, SQP) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item KKT conditions of optimality + +\item Core methods: \textbf{log barrier}, squared penalties, \textbf{Aug.\ Lagrangian} + +\item Introduce \textbf{Lagrangian} -- revisit KKT, log barrier, dual problem, primal-dual + +\item Further topics: Phase I, bound constraints, trust region, distributed optimization, simplex algorithm + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Solving by sketching}{ + +\item Sketch the following problems and identify the solution: + +\begin{items} +\item 1-dimensional: $\min x \st \sin(x) = 0,~ x^2/4-1 \le 0$, +\item 2-dimensional: $\min x_1 \st x^2 + y^2-1 \le 0$ +\end{items} + +\vspace{5cm} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item \emph{At the optimum there must be a balance between the cost +gradient $-\na f(x)$ pulling, and the gradient of the active constraints $-\na +g_i(x)$ pushing back} + +~ + +\show[.3]{KKT} + +~ + +\small +[Our convention: ``costs $f(x)$ \emph{pull}, constraints $g(x),h(x)$ \emph{push} back''] + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Karush-Kuhn-Tucker (KKT) conditions} +\slide{Karush-Kuhn-Tucker conditions}{ + +\item \emph{At the optimum there must be a balance between the cost +gradient $-\na f(x)$ pulling, and the gradient of the active constraints $-\na +g_i(x)$ pushing back} + +~\mypause + +\item \textbf{Theorem (Karush-Kuhn-Tucker conditions):} For any NLP, +\begin{align*} +x \text{~optimal~} \quad\To\quad \exists \l\in\RRR^m, \k\in\RRR^l \st& \nonumber\\ +\na f(x) + \sum_{i=1}^m \l_i \na g_i(x) + \sum_{j=1}^l \k_j \na h_j(x) &= 0 + && \text{(stationarity)}\\ +h(x)=0 \comma g(x) &\le 0 && \text{(primal feasibility)}\\ +\l &\ge 0 && \text{(dual feasibility)}\\ +\forall_i:~ \l_i g_i(x) &= 0 && \text{(complementarity)} +\end{align*} + +{\small [stationarity in compact notation: $\na f(x) + \l^\T \del_x g(x) + \k^\T \del_x h(x) = 0$] + +} + +%% \item For optimal $x$ it must hold (necessary condition):~ $\exists_\l \st$ +%% \begin{align*} +%% \na f(x) + \sum_{i=1}^m \l_i \na g_i(x) &= 0 && \text{(``stationarity'')}\\ +%% \forall_i:~ g_i(x) &\le 0 && \text{(primal feasibility)}\\ +%% \forall_i:~ \l_i &\ge 0 && \text{(dual feasibility)}\\ +%% \forall_i:~ \l_i g_i(x) &= 0 && \text{(complementary)} +%% \end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Karush-Kuhn-Tucker conditions}{\label{lastpage} + +\item \defn{Stationarity (1st KKT)}: ``Force balance'' of the + cost pulling and the active constraints pushing back +\begin{items} +\item Existence of dual parameters $\l,\k$ is equivalent to +\begin{align*} +\na f (x) \in \Span \{ \na g_{1..m}, \na h_{1..l}\} +\end{align*} +\item The values of $\l$ and $\k$ ~ $\oto$ ~ how strongly the + constraints push + \end{items} + +~\pause + +\item \defn{Complementarity (4th KKT)}: ``Logic of constraint activity'' +\begin{items} +\item An inequality can only push at the boundary, where $g_i=0$ +\item The formulation $\l_i g_i=0$ very elegantly describes this logic +\item The combinatorics of which constraint is active ($O(2^m)$) is a core source of difficulty of constrained optimization +\item If you would apriori know which constraints are active $\to$ inequalities become equalities $\to$ easier +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/05-globalBayesianOptimization.tex b/Optimization/05-globalBayesianOptimization.tex deleted file mode 100644 index d472438..0000000 --- a/Optimization/05-globalBayesianOptimization.tex +++ /dev/null @@ -1,724 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\renewcommand{\topic}{Global \& Bayesian Optimization} -\renewcommand{\keywords}{Multi-armed bandits, exploration vs.\ -exploitation, navigation through belief space, upper confidence bound (UCB), -global optimization = infinite bandits, Gaussian Processes, -probability of improvement, expected improvement, UCB} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Global Optimization}{ - -\item Is there an optimal way to optimize (in the Blackbox case)? - -\item Is there a way to find the \emph{global} optimum instead of only -local? - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Core references}{ - -%% \show[.5]{jones98} - -%% \item Jones, D., M. Schonlau, \& W. Welch (1998). Efficient global optimization of expensive black-box functions. Journal of Global Optimization 13, 455-492. - -%% \item Jones, D. R. (2001). A taxonomy of global optimization methods based on response surfaces. Journal of Global Optimization 21, 345-383. - -%% \item Poland, J. (2004). Explicit local models: Towards optimal optimization -%% algorithms. Technical Report No. IDSIA-09-04. - -%% } - -%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{More up-to-date -- very nice GP-UCB introduction}{ - -%% ~ - -%% \show{GP-UCB} - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Outline}{ - -\item Play a game - -~ - -\item Multi-armed bandits -\begin{items} -\item Belief state \& belief planning -\item Upper Confidence Bound (UCB) -\end{items} - -~ - -\item Optimization as infinite bandits -\begin{items} -\item GPs as belief state -\end{items} - -~ - -\item Standard heuristics: -\begin{items} -\item Upper Confidence Bound ~ (GP-UCB) -\item Maximal Probability of Improvement ~ (MPI) -\item Expected Improvement ~ (EI) -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Bandits}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Bandits} -\slide{Bandits}{ - -~ - -\show[.5]{bandits} - -\item There are $n$ machines. - -\item Each machine $i$ returns a reward $y\sim P(y;\t_i)$ - -The machine's parameter $\t_i$ is unknown - -%% \item Your goal is to maximize the reward, say, collected over the -%% first $T$ runs. - -%% ~ - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Bandits}{ - -\item Let $a_t\in\{1,..,n\}$ be the choice of machine at time $t$ - -Let $y_t\in\RRR$ be the outcome with mean $\< y_{a_t} \>$ - -~ - -\item A policy or strategy maps all the history to a new choice: -$$ \pi:~ [ (a_1,y_1), (a_2,y_2), ..., (a_{t\1},y_{t\1}) ] \mapsto a_t$$ - -~ - -\item Problem: ~ Find a policy $\pi$ that -$$\max \< \Sum_{t=1}^T y_t \>$$ -or -$$\max \< y_T \>$$ - -~ - -{\small or other objectives like discounted infinite horizon $\max \< \Sum_{t=1}^\infty \g^t y_t \>$} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Exploration, Exploitation} -\slide{Exploration, Exploitation}{ - -\item ``Two effects'' of choosing a machine: -\begin{items} -\item You collect more data about the machine $\to$ knowledge -\item You collect reward -\end{items} - -~ - -\item For example -\begin{items} -\item Exploration: ~ Choose the next action $a_t$ to -$\min \< H(b_t) \>$ - -\item Exploitation: ~ Choose the next action $a_t$ to -$\max \< y_t \>$ -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{The Belief State}{ - -\item ``Knowledge'' can be represented in two ways: -\begin{items} -\item as the full history -$$ h_t ~=~ [ (a_1,y_1), (a_2,y_2), ..., (a_{t\1},y_{t\1}) ]$$ - -\item as the \textbf{belief} -$$ b_t(\t) = P(\t | h_t)$$ -where $\t$ are the unknown parameters $\t=(\t_1,..,\t_n)$ of all machines -\end{items} - -~ - -\item In the bandit case: -\begin{items} -\item The belief factorizes -$b_t(\t) = P(\t|h_t) = \prod_i b_t(\t_i|h_t)$ - -e.g.\ for Gaussian bandits with constant noise, $\t_i = \mu_i$ -\begin{align*} -b_t(\mu_i|h_t) = \NN(\mu_i | \hat y_i, \hat s_i) -\end{align*} - -e.g.\ for binary bandits, $\t_i = p_i$, with prior $\Beta(p_i|\a, \b)$: -\begin{align*} -b_t(p_i|h_t) &= \Beta(p_i | \a+a_{i,t}, \b+b_{i,t}) \\ -&\quad a_{i,t} = \Sum_{s=1}^{t-1} [a_s\=i][y_s\=0] - \comma b_{i,t} = \Sum_{s=1}^{t-1} [a_s\=i][y_s\=1] -\end{align*} -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Belief planning} -\slide{The Belief MDP}{ - -\item The process can be modelled as - -\show[.5]{bandit1} - -or as Belief MDP - -\show[.5]{bandit2} -{\small$$ -P(b'|y,a,b) - = \begin{cases} 1 & \text{if $b' = b'_{[b,a,y]}$} \\ 0 & \text{otherwise} \end{cases} -\comma -P(y|a,b) - = \Int_{\t_a} b(\t_a)~ P(y | \t_a) -$$} - -{\small -\item The Belief MDP describes a \emph{different} process: the -interaction between the information available to the agent ($b_t$ or $h_t$) -and its actions, where \emph{the agent uses his current belief to -anticipate outcomes, $P(y|a,b)$.} - - -\item The belief (or history $h_t$) is all the information the agent -has avaiable; $P(y|a,b)$ the ``best'' possible anticipation of -observations. If it acts optimally in the Belief MDP, it acts -optimally in the original problem. - -} - -\emph{Optimality in the Belief MDP $~\To~$ optimality in the original problem} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimal policies via Belief Planning}{ - -\item The Belief MDP: - -\show[.5]{bandit2} -{\small$$ -P(b'|y,a,b) - = \begin{cases} 1 & \text{if $b' = b'_{[b,a,y]}$} \\ 0 & \text{otherwise} \end{cases} -\comma -P(y|a,b) - = \Int_{\t_a} b(\t_a)~ P(y | \t_a) -$$} - -%% \item The belief is a sufficient (for optimal decision making) -%% ``aggregation'' of the history if the world is Markovian in $X$: - -%% $$\text{Indep}(y_s, h_t | X_t, a_{t\po}) \qquad \text{for any $s\ge t$ and $\pi$}$$ - - -\item Belief Planning: Dynamic Programming on the value function -\begin{align*} -\forall_b:~ V_{t\1}(b) - &= \max_\pi \< \Sum_{t=t}^T y_t \> \\ - &= \max_\pi \[ \< y_t \> + \< \Sum_{t=t\po}^T y_t \> \] \\ - &= \max_{a_t} \Int_{y_t} P(y_t|a_t,b)~ \[y_t + V_t(b'_{[b,a_t,y_t]})\] -\end{align*} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimal policies}{ - -\item The value function assigns a value (maximal achievable return) - to a state of knowledge - -\item The optimal policy is greedy w.r.t.\ the value function (in the sense of the $\max_{a_t}$ above) - -\item Computationally heavy: $b_t$ is a probability distribution, $V_t$ a - function over probability distributions - -~ - -~ - -\tiny - -\item The term $\Int_{y_t} P(y_t|a_t,b_{t\1})~ \[y_t + -V_t(b_{t\1}[a_t,y_t])\]$ is related to the \emph{Gittins Index}: it -can be computed for each bandit separately. -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example exercise}{ - -\item Consider 3 binary bandits for $T=10$. - -\begin{items} -\item The belief is 3 Beta distributions $\Beta(p_i|\a+a_i,\b+b_i)$ ~ $\to$ ~ 6 integers - -\item $T=10$ ~ $\to$ ~ each integer $\le10$ - -\item $V_t(b_t)$ is a function over $\{0,..,10\}^6$ -\end{items} - -~ - -\item Given a prior $\a=\b=1$, - -a) compute the optimal value function and policy for the final - reward and the average reward problems, - -b) compare with the UCB policy. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Upper Confidence Bound (UCB)} -\slide{Greedy heuristic:~ Upper Confidence Bound (UCB)}{ - -\begin{algo} -\State Initializaiton: Play each machine once -\Repeat -\State Play the machine $i$ that maximizes $\hat y_i -+ \b \sqrt{\frac{2\ln n}{n_i}}$ -\Until -\end{algo} - -~ - -$\hat y_i$ is the average reward of machine $i$ so far - -$n_i$ is how often machine $i$ has been played so far - -$n = \Sum_i n_i$ is the number of rounds so far - -$\b$ is often chosen as $\b=1$ - -~ - -\tiny - -See \emph{Finite-time analysis of the multiarmed bandit problem}, -Auer, Cesa-Bianchi \& Fischer, Machine learning, 2002. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{UCB algorithms}{ - -\item UCB algorithms determine a \textbf{confidence interval} such that -$$\hat y_i - \s_i < \ < \hat y_i + \s_i$$ -with high probability. - -UCB chooses the upper bound of this confidence interval - -~ - -\item \emph{Optimism in the face of uncertainty} - -~ - -\item Strong bounds on the regret (sub-optimality) of UCB (e.g.\ Auer -et al.) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Conclusions}{ - -\item The bandit problem is an archetype for -\begin{items} -\item Sequential decision making - -\item Decisions that influence knowledge as well as rewards/states - -\item Exploration/exploitation -\end{items} - -~ - -\item The same aspects are inherent also in global optimization, -active learning \& RL - -~ - -\item Belief Planning in principle gives the optimal solution - -~ - -\item Greedy Heuristics (UCB) are computationally much more efficient -and guarantee bounded regret - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Further reading}{ - -\item ICML 2011 Tutorial \emph{Introduction to Bandits: Algorithms and -Theory}, Jean-Yves Audibert, R{\'e}mi Munos - -\item \emph{Finite-time analysis of the multiarmed bandit problem}, -Auer, Cesa-Bianchi \& Fischer, Machine learning, 2002. - -\item \emph{On the Gittins Index for Multiarmed Bandits}, Richard -Weber, Annals of Applied Probability, 1992. - -{\small Optimal Value function is submodular.} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Global Optimization}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Global Optimization as infinite bandits} -\slide{Global Optimization}{ - -\item Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, ~ find -\begin{align*} -\min_x~ & f(x) -\end{align*} - -{\tiny - -(I neglect constraints $g(x)\le 0$ and $h(x)=0$ here -- but could be -included.) -} - -~ - -\item Blackbox optimization: find optimium by sampling values -$y_t = f(x_t)$ - -No access to $\na f$ or $\he f$ - -Observations may be noisy $y \sim \NN(y \| f(x_t),\s)$ - -%% ~ - -%% \item Example finite horizon problem definition: -%% $$\<\min f(x_T)\>$$ - -%% \item -%% (AFAIK, this research started with (gold) mining.) [[TODO: kriging]] - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Global Optimization ~{\protect$=$}~ infinite bandits}{ - -\item In global optimization $f(x)$ defines a reward for every -$x\in\RRR^n$ - --- Instead of a finite number of actions $a_t$ we now have $x_t$ - -~ - -\item Optimal Optimization could be defined as: ~ find $\pi:~ -h_t \mapsto x_t$ that -$$\min \< \Sum_{t=1}^T f(x_t) \>$$ -or -$$\min \< f(x_T) \>$$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Gaussian Processes as belief} -\slide{Gaussian Processes as belief}{ - -\item The unknown ``world property'' is the function $\t=f$ - -\item Given a Gaussian Process prior $GP(f|\mu,C)$ over $f$ and a history -$$ D_t ~=~ [ (x_1,y_1), (x_2,y_2), ..., (x_{t\1},y_{t\1}) ]$$ -the belief is -\begin{align*} -b_t(f) - &= P(f\|D_t) = \text{GP}(f|D_t,\mu,C) \\ -\hspace*{-10mm}\text{Mean}(f(x)) - &= \hat f(x) = \vec\k(x) (\vec K + \s^2 \Id)^\1 \vec y -&&\text{\emph{response surface}}\\ -\hspace*{-10mm}\text{Var}(f(x)) - &= \hat \s(x) = k(x,x) - - \vec\k(x) (\vec K + \s^2 \Id_n)^\1 \vec\k(x) -&&\text{\emph{confidence interval}} -\end{align*} - -~ - -\small - -\item Side notes: -\begin{items} -\item Don't forget that -$\text{Var}(y^*|x^*,D) = \s^2 + \text{Var}(f(x^*)|D)$ - -%% \item Gaussian Processes ~=~ Bayesian Kernel Ridge Regression - -%% \item GP classification ~=~ Bayesian Kernel Logistic Regression - -\item We can also handle discrete-valued functions $f$ using GP - classification -\end{items} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ -\show[.7]{BayesianPredictiveDistribution} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Optimal optimization via belief planning}{ - -\item As for bandits it holds -\begin{align*} -V_{t\1}(b_{t\1}) - &= \max_\pi \< \Sum_{t=t}^T y_t \> \\ - &= \max_{x_t} \Int_{y_t} P(y_t|x_t,b_{t\1})~ \[y_t + V_t(b_{t\1}[x_t,y_t])\] -\end{align*} - -$V_{t\1}(b_{t\1})$ is a function over the GP-belief! - -If we could compute $V_{t\1}(b_{t\1})$ we ``optimally optimize'' - -~ - -\item I don't know of a minimalistic case where this might be feasible - -%% Approximately: discretize $x$ ($\to$ finite but dependent bandits), -%% small $T$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Conclusions}{ - -\item Optimization as a problem of -\begin{items} -\item Computation of the belief -\item Belief planning -\end{items} - -~ - -\item Crucial in all of this: \textbf{the prior} $P(f)$ -\begin{items} -\item GP prior: smoothness; but also limited: only local correlations! - -No ``discovery'' of non-local/structural correlations through the -space - -\item The latter would require different priors, e.g.\ over different -function classes -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Heuristics}{ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Expected Improvement} -\key{Maximal Probability of Improvement} -\key{GP-UCB} -\slide{1-step heuristics based on GPs}{ - -\show[.45]{jones01} - -\item Maximize Probability of Improvement ~ (MPI) -\anchor{30,20}{\tiny from Jones (2001)} -$$x_t = \argmax_x \Int_{-\infty}^{y^*} \NN(y|\hat f(x),\hat\s(x))$$ - -\item Maximize Expected Improvement ~ (EI) -$$x_t = \argmax_x \Int_{-\infty}^{y^*} \NN(y|\hat f(x),\hat\s(x))~ (y^*-y)$$ - -\item Maximize UCB -$$x_t = \argmax_x \hat f(x) + \b_t \hat\s(x)$$ - -\tiny - -(Often, $\b_t=1$ is chosen. UCB theory allows for -better choices. See Srinivas et al.\ citation below.) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Each step requires solving an optimization problem}{ - -\item Note: each $\argmax$ on the previous slide is an optimization -problem - -\item As $\hat f,\hat\s$ are given analytically, we have gradients and -Hessians. BUT: multi-modal problem. - -\item In practice: -\begin{items} -\item Many restarts of gradient/2nd-order optimization runs -\item Restarts from a grid; from many random points -\end{items} - -~ - -\item We put a lot of effort into carefully selecting just the next -query point - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ - -{\tiny From: \emph{Information-theoretic regret bounds for gaussian process -optimization in the bandit setting} -Srinivas, Krause, Kakade \& Seeger, Information Theory, 2012. - -} - -~ - -%\show[1]{GP-UCB1} -\show[1]{GP-UCB2} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{}{ -\show[1]{GP-UCB3} - -~ - -\show[1]{GP-UCB4} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Pitfall of this approach}{ - -\item A real issue, in my view, is the choice of kernel (i.e.\ prior $P(f)$) -\begin{items} -\item 'small' kernel: almost exhaustive search -\item 'wide' kernel: miss local optima -\item adapting/choosing kernel online (with CV): might fail -\item real $f$ might be non-stationary -\item non RBF kernels? Too strong prior, strange extrapolation -\end{items} - -~ - -\item Assuming that we have the right prior $P(f)$ is really a strong assumption - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Further reading}{ - -\item Classically, such methods are known as \emph{Kriging} - -~ - -\item \emph{Information-theoretic regret bounds for gaussian process -optimization in the bandit setting} -Srinivas, Krause, Kakade \& Seeger, Information Theory, 2012. - -~ - -\item \emph{Efficient global optimization of expensive black-box functions.} Jones, Schonlau, \& Welch, Journal of Global Optimization, 1998. - -\item \emph{A taxonomy of global optimization -methods based on response surfaces} Jones, Journal of Global -Optimization, 2001. - -\item \emph{Explicit local models: Towards optimal optimization -algorithms}, Poland, Technical Report No. IDSIA-09-04, 2004. - -%\show{GP-UCB} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Entropy Search}{ - -\cen{slides by Philipp Hennig} - - -P. Hennig \& C. Schuler: \emph{Entropy Search for -Information-Efficient Global Optimization}, JMLR 13 (2012). - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Predictive Entropy Search}{\label{lastpage} - -\item Hern{\'a}ndez-Lobato, Hoffman \& Ghahraman: \emph{Predictive Entropy -Search for Efficient Global Optimization of Black-box Functions}, NIPS -2014. - -\item Also for constraints! - -\item Code: \url{https://github.com/HIPS/Spearmint/} - -} - - - - -\slidesfoot diff --git a/Optimization/06-blackBoxOpt.tex b/Optimization/06-blackBoxOpt.tex deleted file mode 100644 index 4b71f5f..0000000 --- a/Optimization/06-blackBoxOpt.tex +++ /dev/null @@ -1,961 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} - -\renewcommand{\topic}{Blackbox Optimization: Local, Stochastic \& -Model-based Search} -\renewcommand{\keywords}{} - -\slides - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Blackbox optimization: definition} -\slide{``Blackbox Optimization''}{ - -\item We use the term to denote the problem: Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, find -$$\min_x~ f(x)$$ -where we can \emph{only} evaluate $f(x)$ for any $x\in\RRR^n$ - -$\na f(x)$ or $\he f(x)$ are not (directly) accessible - -~ - -{\tiny - -\item A constrained version:~ Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, -$g:~ \RRR^n\to\{0,1\}$, find -$$\min_x~ f(x) \st g(x)=1$$ -where we can only evaluate $f(x)$ and $g(x)$ for any $x\in\RRR^n$ - -I haven't seen much work on this. Would be interesting to consider -this more rigorously. - -} - -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{``Blackbox Optimization'' -- terminology/subareas}{ - -\item \textbf{Stochastic Optimization} ~ (aka.\ Stochastic \textbf{Search}, -Metaheuristics) -\begin{items} -\item Simulated Annealing, Stochastic Hill Climing, Tabu Search -%\item Iterated local search, Variable neighborhood search -\item Evolutionary Algorithms, esp.\ Evolution Strategies, Covariance Matrix Adaptation, Estimation of Distribution Algorithms -\item Some of them (implicitly or explicitly) locally approximating gradients or 2nd order models -\end{items} - -~ - -\item \textbf{Derivative-Free Optimization} ~ (see Nocedal et al.) -\begin{items} -\item Methods for (locally) convex/unimodal functions; extending -gradient/2nd-order methods -\item Gradient estimation (finite differencing), model-based, Implicit Filtering -%\item Coordinate and pattern-search (cf.\ Twiddle) -%\item Nelder-Mead Downhill Simplex -\end{items} - -~ - -\item \textbf{Bayesian/Global Optimization} -\begin{items} -\item Methods for arbitrary (smooth) blackbox functions that get not -stuck in local optima. -\item Very interesting domain -- close analogies to (active) Machine - Learning, bandits, POMDPs, optimal decision making/planning, optimal - experimental design -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Blackbox optimization: overview} -\slide{Outline}{ -\item Basic downhill running -\begin{items} -\item Greedy local search, stochastic local search, -simulated annealing -\item Iterated local search, variable neighborhood search, Tabu search -\item Coordinate \& pattern search, Nelder-Mead downhill simplex -\end{items} - -~ - -\item Memorize or model something -\begin{items} -\item General stochastic search -\item Evolutionary Algorithms, Evolution Strategies, CMA, EDAs -\item Model-based optimization, implicit filtering -\end{items} - -~ - -\item Bayesian/Global optimization: ~ \emph{Learn \& approximate optimal optimization} -\begin{items} -\item Belief planning view on optimal optimization -\item GPs \& Bayesian regression methods for belief tracking -\item bandits, UBC, expected improvement, etc for decision making -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Basic downhill running}{ - -\tiny --- Greedy local search, stochastic local search, -simulated annealing - --- Iterated local search, variable neighborhood search, Tabu search - --- Coordinate \& pattern search, Nelder-Mead downhill simplex -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Greedy local search} -\slide{Greedy local search ~ (greedy downhill, hill climbing)}{ - -\item Let $x\in\XX$ be continuous or discrete -\item We assume there is a finite neighborhood $\NN(x) \subset \XX$ defined -for every $x$ - -~ - -\item Greedy local search (variant 1):\\ -\begin{algo} -\Require initial $x$, function $f(x)$ -\Repeat -\State $x \gets \argmin_{y\in\NN(x)} f(y)$ \Comment{convention: we -assume $x\in\NN(x)$} -\Until $x$ converges -\end{algo} - -~ - -\item Variant 2: $x \gets $ the ``first'' $y\in\NN(x)$ such that $f(y) < f(x)$ - -\item Greedy downhill is a basic ingredient of discrete optimization - -\item In the continuous case: what is $\NN(x)$? Why should it be -fixed or finite? - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Stochastic local search} -\slide{Stochastic local search}{ - -\item Let $x\in\RRR^n$ -\item We assume a ``neighborhood'' probability distribution $q(y|x)$, -typically a Gaussian $q(y|x) \propto \exp\{-\half(y-x)^\T \S^\1 (y-x)\}$ - -~ - -\begin{algo} -\Require initial $x$, function $f(x)$, proposal distribution $q(y|x)$ -\Repeat -\State Sample $y\sim q(y|x)$ -\State \textbf{If} $f(y)f(x)$: - -~ - -\begin{algo} -\Require initial $x$, function $f(x)$, proposal distribution $q(y|x)$ -\State initialilze the temperature $T=1$ -\Repeat -\State Sample $y \sim q(y|x)$ -\State Acceptance probability $A -=\min\big\{1,~ e^{\frac{f(x)-f(y)}{T}} \frac{q(x|y)}{q(y|x)}\big\}$ -%=\min\big\{1,~ \frac{e^{-f(y)/T} q(x|y)}{e^{-f(x)/T} q(y|x)}\big\} -\State With probability $A$ update $x \gets y$ -\State Decrease $T$, e.g.\ $T \gets (1-\e) T$ for small $\e$ -\Until $x$ converges -\end{algo} - -~ - -\item Typically: $q(y|x) \propto \exp\{-\half(y-x)^2/\s^2\}$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Simulated Annealing}{ - -\item Simulated Annealing is a Markov chain Monte Carlo (MCMC) method. -\begin{items} -\item Must read!: \emph{An Introduction to MCMC for Machine Learning} -\item These are iterative methods to sample from a distribution, in -our case -$$p(x) \propto e^{\frac{-f(x)}{T}}$$ -\end{items} - -\item For a fixed temperature $T$, one can prove that the set of -accepted points is distributed as $p(x)$ (but non-i.i.d.!) The acceptance probability -$$A=\min\big\{1,e^{\frac{f(x)-f(y)}{T}} \frac{q(x|y)}{q(y|x)}\big\}$$ -compares the $f(y)$ and $f(x)$, but also the reversibility of $q(y|x)$ - -\item When cooling the temperature, samples focus at the extrema. -Guaranteed to sample all extrema \emph{eventually} - -\item Of high theoretical relevance, less of practical - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Simulated Annealing}{ - -\show{simulatedAnnealing} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Random restarts} -\slide{Random Restarts ~ (run downhill multiple times)}{ - -\item Greedy local search is typically only used as an ingredient of -more robust methods - -\item We assume to have a start distribution $q(x)$ - -~ - -\item Random restarts:\\ -\begin{algo} -\Repeat -\State Sample $x\sim q(x)$ -\State $x \gets \texttt{GreedySearch}(x)$ or -$\texttt{StochasticSearch}(x)$ -\State \textbf{If} $f(x)f(x_{n\1})$:~ Contract: $y=c + \r (c-x_n)$ -\item If still $f(y)>f(x_n)$:~ Shrink $\forall_{i=1,..,n} x_i \gets -x_0 + \s(x_i-x_0)$ - -~ - -\item Typical parameters: $\a=1, \g=2, \r=-\half, \s=\half$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Summary: Basic downhill running}{ - -\item These methods are highly relevant! Despite their simplicity - -\item Essential ingredient to iterative approaches that try to find as -many local minima as possible - -~ - -\item Methods essentially differ in the notion of - -\cen{\emph{neighborhood, transition proposal, or pattern of next -search points}} - -to consider - -\item Iterated downhill can be very effective - -~ - -\item However: \textbf{There should be ways to better exploit data!} -\begin{items} -\item Learn from previous evaluations where to test new point -\item Learn from previous local minima where to restart -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Memorize or model something}{ - -\tiny --- Stochastic search schemes - --- Evolutionary Algorithms, Evolution Strategies, CMA, EDAs - --- Model-based optimization, implicit filtering - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Optimizing and Learning}{ - -%% \item Blackbox optimization is often related to learning: - -%% \item When we have local a gradient or Hessian, we can take that local -%% information and run -- no need to keep track of the history or -%% learn (exception: BFGS) - -%% \item In the Blackbox case we have no local information directly -%% accessible - -%% $\to$ one needs to account of the history in some way or another to -%% have an idea where to continue search - -%% \item ``Accounting for the history'' very often means learning: -%% Learning a local or global model of $f$ itself, learning which steps -%% have been successful recently (gradient estimation), or which step -%% directions, or other heuristics - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{General stochastic search} -\slide{A general stochastic search scheme}{ - -\item The general scheme: -\begin{items} -\item The algorithm maintains a probability distribution $p_\t(x)$ -\item In each iteration it takes $n$ samples $\{x_i\}_{i=1}^n \sim p_\t(x)$ -\item Each $x_i$ is evaluated ~ $\to$ ~ data $\{(x_i,f(x_i))\}_{i=1}^n$ -\item \textbf{That data is used to update $\t$} -\end{items} - -~ - -\begin{algo} -\Require initial parameter $\t$, function $f(x)$, distribution model $p_\t(x)$, update heuristic $h(\t,D)$ -\Ensure final $\t$ and best point $x$ -\Repeat -\State Sample $\{x_i\}_{i=1}^n \sim p_\t(x)$ -\State Evaluate samples, $D= \{(x_i,f(x_i))\}_{i=1}^n$ -\State Update $\t \gets h(\t,D)$ -\Until $\t$ converges -\end{algo} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Example:~ Gaussian search distribution ~ ``$(\mu,\l)$-ES''}{ - -{\tiny From 1960s/70s. Rechenberg/Schwefel} - -\item The simplest distribution family -$$\t = (\hat x) \comma p_\t(x) = \NN(x\|\hat x,\s^2)$$ -a $n$-dimenstional isotropic Gaussian with fixed variance $\s^2$ - -~ - -\item Update heuristic: -\begin{items} -\item Given $D=\{(x_i,f(x_i))\}_{i=1}^\l$, select $\m$ best: $D'=\text{bestOf}_\mu(D)$ - -\item Compute the new mean $\hat x$ from $D'$ -\end{items} - -~ - -\item This algorithm is called ``Evolution Strategy $(\m,\l)$-ES'' -\begin{items} -\item The Gaussian is meant to represent a ``species'' - -\item $\l$ offspring are generated - -\item the best $\mu$ selected -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{$\t$ is the ``knowledge/information'' gained}{ - -~ - -\item The parameter $\t$ is the only ``knowledge/information'' that is -being propagated between iterations - -$\t$ encodes what has been learned from the history - -$\t$ defines where to search in the future - -~ - -\item The downhill methods of the previous section did not store any -information other than the current $x$. (Exception: Tabu search, -Nelder-Mead) - -~ - -\item Evolutionary Algorithms are a special case of this stochastic -search scheme - -%% Evolution Strategies: ~ $\t$ is the mean \& variance of a Gaussian - -%% Evolutionary Algorithms: ~ $\t$ is a parent population - -%% Estimation of Distribution Algorithms: ~ $\t$ are parameters of some -%% distribution model, e.g.\ Bayesian Network - -%% Simulated Annealing: ~ $\t$ is the ``current point'' and a temperature - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Example:~ ``elitarian'' selection ~ $(\mu+\l)$-ES}{ - -%% \item $\t$ also stores the $\mu$ best previous points -%% $$\t = (\hat x, D') \comma p_t(x) = \NN(x\|\hat x,\s^2)$$ - -%% \item The $\t$ update: - -%% \item Select the $\mu$ best from $D' \cup D$: $D'=\text{bestOf}_\mu(D'\cup D)$ -%% \begin{items} -%% \item Compute the new mean $\hat x$ from $D'$ - -%% \item Is called ``elitarian'' because good parents can survive -%% \end{items} - -%% ~ - -%% \item Consider the $(1+1)$-ES: a Hill Climber - -%% \item There is considerable theory on convergence of, e.g., -%% $(1+\l)$-ES - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Evolutionary algorithms} -\slide{Evolutionary Algorithms (EAs)}{ - -\item EAs can well be described as special kinds of parameterizing $p_\t(x)$ and updating $\t$ -\begin{items} -\item The $\t$ typically is a set of good points found so far (parents) - -\item Mutation \& Crossover define $p_\t(x)$ - -\item The samples $D$ are called offspring - -\item The $\t$-update is often a selection of the best, or ``fitness-proportional'' or rank-based -\end{items} - -~ -%% \item In discrete optimization, where $x$ is a string of integers, -%% $\t$ is a population of parents (strings) - -%% $p_\t(x)$ is the offspring distribution (via crossover \& mutation) -%% defined by these parents - -\item Categories of EAs: -\begin{items} -\item \textbf{Evolution Strategies}:~ $x\in\RRR^n$, often Gaussian $p_\t(x)$ - -\item \textbf{Genetic Algorithms}:~ $x\in\{0,1\}^n$, crossover \& mutation define - $p_\t(x)$ - -\item \textbf{Genetic Programming}:~ $x$ are programs/trees, crossover \& mutation - -\item \textbf{Estimation of Distribution Algorithms}:~ $\t$ directly defines - $p_\t(x)$ -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Covariance Matrix Adaptation (CMA)} -\slide{Covariance Matrix Adaptation (CMA-ES)}{ - -\item An obvious critique of the simple Evolution Strategies: -\begin{items} - -\item The search distribution $\NN(x\|\hat x,\s^2)$ is isotropic - -(no going \emph{forward}, no preferred direction) - -\item The variance $\s$ is fixed! -\end{items} - -~ - -\item Covariance Matrix Adaptation Evolution Strategy (CMA-ES) - -\show[.7]{CMA-ES} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Covariance Matrix Adaptation (CMA-ES)}{ - -\item In Covariance Matrix Adaptation -$$\t=(\hat x,\s,C,\r_\s,\r_C) \comma p_\t(x) = \NN(x\|\hat x,\s^2C)$$ -where $C$ is the covariance matrix of the search distribution - -\item The $\t$ maintains two more pieces of information: $\r_\s$ and -$\r_C$ capture the ``path'' (motion) of the mean $\hat x$ in recent -iterations - -\item Rough outline of the $\t$-update: -\begin{items} -\item Let $D'=\text{bestOf}_\mu(D)$ be the set of selected points - -\item Compute the new mean $\hat x$ from $D'$ - -\item Update $\r_\s$ and $\r_C$ proportional to $\hat x_{k\po} - \hat x_k$ - -\item Update $\s$ depending on $|\r_\s|$ - -\item Update $C$ depending on $\r_c\r_c^\T$ (rank-1-update) and $\text{Var}(D')$ -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{CMA references}{ - -Hansen, N. (2006), "The CMA evolution strategy: a comparing review" - -Hansen et al.: Evaluating the CMA Evolution Strategy on Multimodal -Test Functions, PPSN 2004. - -\show[.7]{CMA-ES1} - -\item For ``large enough'' populations local minima -are avoided - -%% ~ - -%% \item A variant: - -%% Igel et al.: A Computational Efficient -%% Covariance Matrix Update and a $(1+1)$-CMA for Evolution -%% Strategies, GECCO 2006. - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{CMA conclusions}{ - -\item It is a good starting point for an off-the-shelf blackbox -algorithm - -\item It includes components like estimating the local gradient -($\r_\s, \r_C$), the local ``Hessian'' ($\text{Var}(D')$), smoothing out -local minima (large populations) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Estimation of Distribution Algorithms (EDAs)} -\slide{Estimation of Distribution Algorithms (EDAs)}{ - -\item Generally, EDAs fit the distribution $p_\t(x)$ to model the -distribution of previously good search points - -{\tiny - -For instance, if in all previous distributions, the 3rd bit equals the -7th bit, then the search distribution $p_\t(x)$ should put higher -probability on such candidates. - -$p_\t(x)$ is meant to capture the \emph{structure} in previously good -points, i.e.\ the dependencies/correlation between variables. - -} - -~ - -\item A rather successful class of EDAs on discrete spaces uses -graphical models to learn the dependencies between variables, e.g. - -Bayesian Optimization Algorithm (BOA) - -~ - -\item In continuous domains, CMA is an example for an EDA - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \slide{Further Ideas}{ - -%% \item We could learn a distribution over steps - -%% -- which steps have decreased $f$ recently $\to$ model - -%% ~~ (Related to ``differential evolution'') - -%% ~ - -%% \item We could learn a distributions over directions only - -%% $\to$ sample one $\to$ line search - -%% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Stochastic search conclusions}{ - -\begin{algo} -\Require initial parameter $\t$, function $f(x)$, distribution model $p_\t(x)$, update heuristic $h(\t,D)$ -\Ensure final $\t$ and best point $x$ -\Repeat -\State Sample $\{x_i\}_{i=1}^n \sim p_\t(x)$ -\State Evaluate samples, $D= \{(x_i,f(x_i))\}_{i=1}^n$ -\State Update $\t \gets h(\t,D)$ -\Until $\t$ converges -\end{algo} - -\item The framework is very general - -\item The crucial difference between algorithms is their -choice of $p_\t(x)$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Model-based optimization}{ -\tiny -following Nodecal et al.\ ``Derivative-free optimization'' -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Model-based optimization} -\slide{Model-based optimization}{ - -\item The previous stochastic serach methods are heuristics to update -$\t$ - -\cen{\emph{Why not store the previous data directly?}} - -~ - -\item Model-based optimization takes the approach -\begin{items} -\item Store a data set $\t=D=\{(x_i,y_i)\}_{i=1}^n$ of previously -explored points - -(let $\hat x$ be the current minimum in $D$) -\item Compute a (quadratic) model $D\mapsto \hat f(x) = \phi_2(x)^\T\b$ -\item Choose the next point as -$$x^+ = \argmin_x \hat f(x) \st |x-\hat x|<\a$$ -\item Update $D$ and $\a$ depending on $f(x^+)$ -\end{items} - -\item The $\argmin$ is solved with constrained optimization methods - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Model-based optimization}{ - -\begin{algo} -\State Initialize $D$ with at least $\half (n+1)(n+2)$ data points -\Repeat -\State Compute a regression $\hat f(x) = \phi_2(x)^\T\b$ on $D$ -\State Compute $x^+ = \argmin_x \hat f(x) \st |x-\hat x|<\a$ -\State Compute the improvement ratio $\r = \frac{f(\hat x)-f(x^+)}{\hat -f(\hat x)-\hat f(x^+)}$ -\If{$\r>\e$} -\State Increase the stepsize $\a$ -\State Accept $\hat x \gets x^+$ -\State Add to data, $D \gets D \cup \{(x^+,f(x^+))\}$ -\Else -\If{$\det(D)$ is too small} \Comment{Data improvement} -\State Compute $x^+ = \argmax_x \det(D\cup\{x\}) \st |x-\hat x|<\a$ -\State Add to data, $D \gets D \cup \{(x^+,f(x^+))\}$ -\Else -\State Decrease the stepsize $\a$ -\EndIf -\EndIf -\State Prune the data, e.g., remove $\argmax_{x\in\D} \det(D\setminus\{x\})$ -\Until $x$ converges -\end{algo} -\tiny -\item \textbf{Variant:} Initialize with only $n+1$ data points and fit -a linear model as long as $|D|<\half (n+1)(n+2) = \dim(\phi_2(x))$ - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Model-based optimization}{ - - -\item Optimal parameters ~ (with data matrix $X\in\RRR^{n\times\dim(\b)}$) -$$\hat \b^{\text{ls}} = (\vec X^\T \vec X)^\1 \vec X^\T y$$ The -determinant $\det (\vec X^\T \vec X)$ or $\det(\vec X)$ (denoted -$\det(D)$ on the previous slide) is a measure for well the data -supports the regression. The data improvement explicitly selects a -next evaluation point to increase $\det(D)$. - -\item Nocedal describes in more detail a geometry-improving procedure to update $D$. - -~ - -\item Model-based optimization is closely related to Bayesian approaches. But -\begin{items} -\item Should we really prune data to have only a minimal set $D$ (of -size $\dim(\b)$?) -\item Is there another way to think about the ``data improvement'' -selection of $x^+$? ($\to$ maximizing uncertainty/information gain) -\end{items} - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\key{Implicit filtering} -\slide{Implicit Filtering (briefly)}{ - -\item Estimates the local gradient using finite differencing -$$\na_\e f(x) \approx \[\frac{1}{2\e} (f(x+\e e_i) - f(x-\e -e_i))\]_{i=1,..,n}$$ - -\item Lines search along the gradient; if not succesful, decrease $\e$ - -\item Can be extended by using $\na_\e f(x)$ to update an -approximation of the Hessian (as in BFGS) - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slide{Conclusions}{\label{lastpage} - -\item We covered -\begin{items} -\item ``downhill running'' -\item Two flavors of methods that exploit the recent data: - --- stochastic search (\& EAs), maintaining $\t$ that defines $p_\t(x)$ - --- model-based opt., maintaining local data $D$ that defines $\hat f(x)$ -\end{items} - -~ - -\item These methods can be very efficient, but somehow the problem -formalization is unsatisfactory: -\begin{items} -\item What would be optimal optimization? -\item What exactly is the information that we can gain from data about -the optimum? -\item If the optimization algorithm would be an ``AI agent'', -selecting points his actions, seeing $f(x)$ his observations, what -would be his optimal decision making strategy? -\item And what about \textbf{global} blackbox optimization? -\end{items} - - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\slidesfoot diff --git a/Optimization/06-logBarrier.tex b/Optimization/06-logBarrier.tex new file mode 100644 index 0000000..8d82601 --- /dev/null +++ b/Optimization/06-logBarrier.tex @@ -0,0 +1,241 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Log Barrier Method} +\renewcommand{\keywords}{Log barrier, central path, relaxed KKT} + +\slides + +\providecommand{\ninc}{\r_\nu^+} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{General approaches}{ + +%% \item Penalty \& Barriers +%% \begin{items} +%% \item Associate a (adaptive) penalty cost with violation of the constraint + +%% \item Associate an additional ``force compensating the gradient into the +%% constraint'' (augmented Lagrangian) + +%% \item Associate a log barrier with a constraint, becoming $\infty$ for violation (interior point method) +%% \end{items} + +%% ~ + +%% \item Gradient projection methods (mostly for linear contraints) +%% \begin{items} +%% \item For `active' constraints, project the step direction to become +%% tangantial + +%% \item When checking a step, always pull it back to the feasible region +%% \end{items} + +%% \item Lagrangian \& dual methods +%% \begin{items} +%% \item Rewrite the constrained problem into an unconstrained one + +%% \item Or rewrite it as a (convex) dual problem +%% \end{items} + +%% \item Simplex methods (linear constraints) +%% \begin{items} +%% \item Walk along the constraint boundaries +%% \end{items} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Barriers \& Penalties}{ + + +\item The general approach is to define unconstrained problems that help tackling the constrained problem +\begin{items} +\item We typically add penalties or barriers to the cost function +\item Iteratively solving the unconstrained problem converges to the solution of the constrained problem +\end{items} + +~ + +\item A \defn{barrier} is $\infty$ for $g(x)>0$ + +~ + +\item A \defn{penalty} is zero for $g(x)\le 0$ and increases with $g(x)>0$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Unconstrained ``inner'' problems to tackle constraints}{ + +\item General approach is to \emph{augment} $f(x)$ with some terms to define an ``inner'' problem: + +\begin{align*} +B(x,\mu) &= f(x) - \mu \sum_i \log(-g_i(x)) && \text{(log barrier)}\\ +S(x,\mu,\nu) &= f(x) + \mu \sum_i [g_i(x)>0]~ g_i(x)^2 + \nu \sum_j h_j(x)^2 && \text{(sqr.\ penalty)}\\ +L(x,\l,\k) &= f(x) + \sum_i \l_i g_i(x) + \sum_j \k_j h_j(x) && \text{(Lagrangian)} \\ +A(x,\l,\k,\mu,\nu) &= f(x) + \sum_i \l_i g_i(x) + \sum_j \k_j h_j(x) ~+ \\ +&\qquad\quad + \mu \sum_i [g_i(x)>0]~ g_i(x)^2 + \nu\sum_j h_j(x)^2 && \text{(Aug.\ Lag.)}\nonumber +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Log barrier method} +\slide{Log barrier (Interior Point) method}{ + +\item To solve the original problem +$$\min_x~ f(x) \st g(x)\le 0$$ +we define the unconstrained \emph{inner} problem +$$\min_x B(x,\m) \comma B(x,\mu) = f(x) - \mu \sum_i \log(-g_i(x))$$ +with \defn{log barrier} function $-\m\log(-g)$: + +~ + +\show[.2]{logBarrier} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Log barrier}{ + +\show[.25]{logBarrier} + +\item For $\mu\to 0$, the log barrier $-\mu\log(-g)$ converges to $\infty [g>0]$ + +{\tiny\hfill{Notation:} $[\textit{boolean expression}] \in \{0,1\}$} + +\item The neg barrier gradient $\na \log(-g) = \frac{\na g}{g}$ pushes +away from the constraint + +\item Eventually we want to have a very small $\mu$ +\begin{items} +\item But choosing small $\mu$ from the start makes the barrier ``non-smooth'' +\item[$\to$] gradually \emph{decrease} $\mu$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Log barrier method}{ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), g(x)$, tolerance $\t$, parameters (defaults: $\mdec=0.5, \mu_0=1$) +\Ensure $x$ +\State initialize $\mu=\mu_0$ +\Repeat +\State \defn{centering: solve unconstrained problem} $x \gets \argmin_x~ B(x,\mu)$ +%with tolerance $\sim\!10\t$ +\State decrease $\mu \gets \mdec \mu$ +\Until $|\D x|<\t$ repeatedly +\end{algo} + +~ + +\small +\item Note: See Boyd \& Vandenberghe for alternative stopping criteria based on $f$ precision (duality gap) and better choice of initial $\mu$ (which is +called $t$ there). + +~ \tiny +\item For reference: +%B(x,\mu) &= f(x) - \mu \sum_i \log(-g_i(x)) \\ +$\na_x B(x,\mu) = \na f(x) - \mu \sum_i \frac{1}{g_i(x)}~ \na g_i(x) \comma +\he[x] B(x,\mu) \approx \he f(x) + \mu \sum_i \frac{1}{g_i(x)^2}~ \na g_i(x) \na g_i(x)^\T $ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Central path} +\slide{Central Path}{ + + +\item Every $\mu$ defines a different $x^*(\mu) = \argmin_x~ B(x,\mu)$ + +\show[.3]{centralPath} + + +\item Varying $\mu$ creates the \defn{Central path} with points $x^*(\mu)$, gradually approaching the optimum for $\mu\to 0$ from the \textbf{interior} + +\item This is an \defn{Interior Point Method}: all iterates will always fulfill $g_i(x) < 0$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Comments}{ + +\item We always have to initialize log barrier with an interior point + +\item Equality constraints need to be handled separately (e.g.\ AugLag) + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Log barrier as relaxed KKT} +\slide{Log barrier {\protect$\oto$} relaxed KKT}{ + +\item Let's look at the gradients at the optimum $x^*(\mu) = \argmin_x B(x,\mu)$ +\begin{align*} +& \na f(x) - \sum_i \frac{\mu}{g_i(x)} \na g_i(x) = 0 \\ +\iff\qquad & \na f(x) + \sum_i \l_i \na g_i(x) = 0 \comma \l_i g_i(x) = -\mu +\end{align*} +where we defined(!) $\l_i = -\mu/g_i(x)$, which guarantees $\l_i \ge 0$ as long as we are in the interior ($g_i\le 0$) + +\item These are called \defn{modified (=relaxed) KKT conditions} with \defn{relaxed complementarity} +\begin{items} +\item Inequalities also push in the interior +\item For $\mu\to 0$ we converge to the exact KKT conditions +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Log barrier {\protect$\oto$} relaxed KKT}{\label{lastpage} + +~ + +\item \emph{Centering (solving the unconstrained problem) in the log barrier +method is equivalent to solving the relaxed KKT conditions!} + +~ + +{\tiny (Reference for later: $\m$ can be interpreted as upper bound on the sub-optimality).} + +~\pause + +\item Nice about the log barrier method: +\begin{items} +\item It ``smoothes out'' the combinatorics of constraint activity, smoothly approaching the optimum from the interior +\item This smoothing mathematically relates to relaxing the complementarity condition: constraints can push also in the interior, $\mu$ relates to the degree of smoothing/relaxation +\end{items} + +~ + +\item Demo... +%% ~ + +%% Note also: On the central path, the duality gap is $m \mu$: + +%% \cen{$l(\l^*(\mu)) = f(x^*(\mu)) + \sum_i \l_i g_i(x^*(\mu)) = f(x^*(\mu)) +%% - m \mu$} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/07-augLag.tex b/Optimization/07-augLag.tex new file mode 100644 index 0000000..ef02948 --- /dev/null +++ b/Optimization/07-augLag.tex @@ -0,0 +1,285 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Augmented Lagrangian} +\renewcommand{\keywords}{squared penalties, Augmented Lagrangian} + +\slides + +\providecommand{\ninc}{\r_\nu^+} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Squared penalty method} +\slide{Squared Penalty Method}{ + +%% \item This is perhaps the simplest approach + +\item To solve the original problem +$$\min_x~ f(x) \st g(x)\le 0,~ h(x)=0$$ +we define the unconstrained \emph{inner} problem +$$\min_x S(x,\mu,\nu)\comma S(x,\mu,\nu) = f(x) + \mu \sum_i [g_i(x)>0]~ g_i(x)^2 + \nu \sum_j h_j(x)^2$$ + +~ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), g(x), h(x)$, tolerances $\t$, $\e$, parameters (defaults: $\minc=\ninc=10, \mu_0=\nu_0=1$) +\Ensure $x$ +\State initialize $\mu=\mu_0$, $\nu=\nu_0$ +\Repeat +\State solve unconstrained problem $x \gets \argmin_x S(x,\mu,\nu)$ +\State $\mu \gets \minc \mu$,~ $\nu \gets \ninc \nu$ +\Until $|\D x| \le\t$ and $\forall_{i,j}:~ g_i(x)\le\e, |h_i(x)|\le\e$ repeatedly +\end{algo} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Squared Penalty Method}{ + +\item Note: Here we increase $\mu$ and $\nu$ gradually + +\item Pro: +\begin{items} +\item Very simple +\item Quadratic penalties $\to$ good conditioning for Newton methods $\to$ efficient convergence +\end{items} + +\item Con: +\begin{items} +\item Will always lead to \emph{some} violation of constraints +\item Conditioning for very large $\mu,\nu$ +\end{items} + +\mypause + +\item Better ideas: +\begin{items} +\item Add an out-pushing gradient/force $-\na g_i(x)$ for every constraint $g_i(x)>0$ that is violated +\item Ideally, the out-pushing gradient mixes with $-\na f(x)$ exactly consistent to ensure stationarity +\end{items} + +\cen{$\to$ \emph{Augmented Lagrangian}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Augmented Lagrangian method} +\slide{Augmented Lagrangian}{ + +{\small (We can introduce this is a self-contained manner, without yet +defining the ``Lagrangian'')} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Augmented Lagrangian}{ + +{\small +\item We first consider an \emph{equality} constraint before +addressing inequalities + +} + +\item To solve the original problem +$$\min_x~ f(x) \st h(x)= 0$$ +we define the unconstrained \emph{inner} problem +\begin{align} +\min_x~ A(x,\k,\nu)\comma A(x,\k,\nu) = f(x) + \sum_j \k_j +h_j(x) + \nu \sum_j h_j(x)^2 \label{eqInner} +\end{align} + +\item Note: +\begin{items} +\item The gradient $\na h_j(x)$ is always orthogonal to the constraint + +\item By tuning $\k_j$ we can induce a ``pushing force'' $-\k_j \na + h_j(x)$ ~ (cp.\ KKT stationarity!) + +\item Each term $\nu h_j(x)^2$ penalizes as before, and ``pushes'' with $-2\nu h_j(x) \na h_j(x)$ +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Augmented Lagrangian}{ + +\item The approach: +\begin{items} +\item First minimize (\ref{eqInner}) for $\k_j=0$ and some $\nu$ ~$\leadsto$~ this will lead to a (slight) penalty + $\nu h_j(x)^2$ + +\item Then \emph{choose $\k_j$ to generate exactly the + gradient that was previously generated by the penalty} +\end{items} + +\pause + +\item Let's look at the gradients at the optimum $\min_x A(x,\k,\nu)$: +\begin{align*} +x' + &= \argmin_x~ f(x) + + \sum_j \k_j h_j(x) + + \nu \sum_j h_j(x)^2 \\ +\To \quad +0 &= \na f(x') + + \sum_j \k_j \na h_j(x') + + \nu \sum_j 2 h_j(x') \na h_j(x') +\end{align*} +{\tiny (Describes the force balance between $f$ pulling, penalties pushing, and Lagrange term pushing) + +} + +\pause + +\item \defn{Augmented Lagrangian Update}: Update $\k$'s for the next iteration to be: +\begin{align*} +\sum_j \k_j^\new \na h_j(x') + &\overset{!}= + \sum_j \k_j^\old \na h_j(x') + + \nu \sum_j 2 h_j(x') \na h_j(x') \\ +\k_j^\new + &= \k_j^\old + 2 \nu h_j(x') +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% \begin{algo} +%% \Require initial $x\in\RRR^n$, functions $f(x), h(x), \na f(x), \na +%% h(x)$, tol.\ $\t$, $\e$, parameters (defaults: $\minc=1, \nu_0=1$) +%% \Ensure $x$ +%% \State initialize $\nu=\nu_0$, $\k_j=0$ +%% \Repeat +%% \State find $x \gets \argmin_x f(x) + \nu \sum_j h_j(x)^2 + \sum_j \l_j h_j(x)$ +%% \State $\forall_j:~ \l_j \gets \l_j + 2 \nu h_j(x')$ +%% \State optionally, $\nu \gets \minc \nu$ +%% \Until $|\D x| < \t$ and $|h_j(x)|<\e$ +%% \end{algo} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Why this adaptation of $\k_j$ is elegant: + +\begin{items} +\item We do \emph{not} have to take the penalty limit $\nu\to\infty$ but + still can have \emph{exact} constraints + +\item[$\to$] Unlike log-barrier and sqr penalty, the method \emph{does not have to increase weights of penalties/barriers}, and \emph{does not lead to extreme conditioning of the Hessian} + +\item If $f$ and $h$ were linear ($\na f$ and $\na h_j$ constant), the + updated $\k_j$ is \emph{exactly right}: In the next iteration we + would exactly hit the constraint (by construction) + +%% \item The penalty term is like a \emph{measuring device} for the necessary +%% ``pushing force'', which is generated by the +%% Lagrange term in the next iteration + +%% \item The $\k_j$ are very meaningful: they give the force/gradient that a +%% constraint exerts on the solution +\end{items} + +~\pause + +\item The Augmented Lagrangian handles equality constraints very efficiently + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Augmented Lagrangian with Inequalities} +\slide{Augmented Lagrangian with Inequalities}{ + +\small + +\item To solve the original problem +$$\min_x~ f(x) \st g(x)\le 0,~ h(x)=0$$ +we define the unconstrained inner problem, $\min_x ...$ +$$A(x,\l,\k,\mu,\n) = f(x) + + \sum_i \l_i g_i(x) + + \mu \sum_i [g_i(x)\ge 0 \vee \l_i>0]~ g_i(x)^2 + + \sum_j \k_j h_j(x) + + \nu \sum_j h_j(x)^2 +$$ + + +\item An inequality is either \defn{active} or \defn{inactive}: +\begin{items} +\item When active ($g_i(x)\ge 0 \vee \l_i>0$) we aim for equality + $g_i(x)=0$ + +\item When inactive ($g_i(x)< 0 \wedge \l_i=0$) we don't penalize/augment + +\item $\l_i$ are zero or positive, but never negative +\end{items} + +\item After each inner optimization, we use the \defn{Augmented Lagrangian dual updates}: +\begin{align*} +\l_i \gets \max(\l_i + 2 \mu g_i(x'), 0) \comma \k_j \gets \k_j + 2 \nu h_j(x')~. +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Augmented Lagrangian}{ + +\begin{algo}[7] +\Require initial $x\in\RRR^n$, functions $f, g, h$, tolances $\t$, $\e$, parameters (defaults: $\minc=\ninc=1.2, \mu_0=\nu_0=1$) +\Ensure $x$ +\State initialize $\mu=\mu_0$, $\nu=\nu_0$, $\l_i=0$, $\k_j=0$ +\Repeat +\State solve unconstrained problem $x \gets \argmin_x A(x,\l,\k,\mu,\nu)$ +\State $\forall_i:~ \l_i \gets \max(\l_i + 2 \mu g_i(x), 0)$,~ $\forall_j: \k_j \gets \k_j + 2 \nu h_j(x)$ +\State optionally, $\mu \gets \minc \mu$, $\nu \gets \ninc \nu$ +\Until $|\D x| < \t$ and $g_i(x)<\e$ and $|h_j(x)|<\e$ repeatedly +\end{algo} + +~ + +\tiny + +\item See also: M. Toussaint: A Novel Augmented Lagrangian Approach for Inequalities and Convergent Any-Time Non-Central Updates. e-Print arXiv:1412.4329, 2014. + +\item Demo... + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Comments}{\label{lastpage} + +\item We learnt about three core methods to tackle constrained optimization by repeated unconstrained optimization: +\begin{items} +\item Log barrier method +\item Squared penalty method (approximate only) +\item Augmented Lagrangian method +\end{items} + +~ + +\item Next we discuss in more depth the Lagrangian, which will help to also introduce the primal-dual method + +~ + +\item Later we discuss other methods, eg.\ Simplex, SQP + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/08-lagrangian.tex b/Optimization/08-lagrangian.tex new file mode 100644 index 0000000..171ad7f --- /dev/null +++ b/Optimization/08-lagrangian.tex @@ -0,0 +1,341 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{The Lagrangian} +\renewcommand{\keywords}{Definition, Relation to KKT conditions, +saddle point view, dual problem, min-max max-min duality, modified KKT +\& log barriers} + +\slides + +\providecommand{\ninc}{\r_\nu^+} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Lagrangian: definition} +\slide{The Lagrangian}{ + +\item Given a constraint problem +$$ \min_x~ f(x) \st g(x)\le 0,~ h(x)=0$$ +we define the \defn{Lagrangian} as +\begin{align*} +L(x,\k,\l) +&= f(x) + \sum_{i=1}^m \l_i g_i(x) + \sum_{i=1}^l \k_i h_i(x) \\ +&= f(x) + \l^\T g(x) + \k^\T h(x) +\end{align*} + +~ + +\item The $\l_i \ge 0$ and $\k_i\in\RRR$ are called \defn{dual variables} +or \emph{Lagrange multipliers} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What's the point of this definition?}{ + +~ + +\item The Lagrangian relates strongly to the KKT conditions of optimality! + +~ + +\item The Lagrangian is useful to compute optima analytically, on +paper + +~ + +\item Optima are necessarily at saddle points of the Lagrangian + +~ + +\item The Lagrangian implies a dual problem, which is sometimes easier to solve than the primal + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Lagrangian: relation to KKT} +\slide{Relations between Lagrangian and KKT}{ + +\small + +\item $\na_x L = 0$ implies the \textbf{1st KKT} condition +$$0 = \na_x L = \na f(x) + \Sum_{i=1}^m \l_i \na g_i(x) + \sum_{i=1}^l \k_i \na h_i(x)$$ + +\pause + +\item $\na_\k L = 0$, implies primal feasibility ($h=0$, \textbf{2nd KKT}) w.r.t.\ the equalities + +\pause + +\item $\max_{\l\ge 0} L$ is related to the remaining \textbf{2nd and 4th KKT} conditions: +\begin{align}\label{eqMaxL} +&\max_{\l\ge 0} L(x,\l) = + F_{\!\infty}(x) \stackrel{\text{def}}= \begin{cases} + f(x) & \text{if }g(x)\le 0 \\ + \infty & \text{otherwise} \end{cases}\\ +&\l=\argmax_{\l\ge 0} L(x,\l) + \quad\To\quad +\begin{cases} +\l_i=0 & \text{if }g_i(x)<0 \\ 0=\na_{\l_i} L(x,\l) = g_i(x) & \text{otherwise} +\end{cases} +\end{align} +This implies either $(\l_i=0 \wedge g_i(x)<0)$ or $g_i(x)=0$, +which is equivalent to the \emph{complementarity} +and \emph{primal feasibility} for inequalities. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Relations between Lagrangian and KKT}{ + +\item We learnt that +\begin{items} +\item $\min_x L(x,\l,\k)$ reproduces 1st KKT +\item $\max_{\l\ge0, \k} L(x,\l,\k)$ reproduces remaining KKT +\end{items} + +\item KKT conditions are related to minimize w.r.t.\ $x$, and maximize w.r.t. $\l$... (more on this later) + +\pause + + +\item How can we use this? +\begin{items} +\item The KKT conditions state that, at an optimum, there +exist some $\l, \k$. This existance statement is not directly helpful to +actually find them. +\item In contrast, the Lagrangian tells us how the dual parameters can be +found: by maximizing w.r.t.\ them. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Solving constraint problems on paper}{ + +\item For $x\in\RRR^2$, what is +$$\min_x x^2 \st x_1+x_2 = 1$$ + +\pause + +\item Solution: +\begin{align*} +L(x,\k) + &= x^2 + \k(x_1+x_2-1)\\ +0 + &= \na_x L(x,\k) + = 2 x + \k\mat{c}{1\\1} \quad\To\quad x_1=x_2=-\k/2\\ +0 + &= \na_\k L(x,\k) + = x_1+x_2-1 = -\k/2-\k/2-1 \quad\To\quad \k=-1 \\ +\To + & x_1=x_2=1/2 +\end{align*} + +\begin{items} +\item $\k$ is also called \emph{Lagrange multiplier}, I prefer \emph{dual variables} +\item When applying this to inequalities, you have to consider \emph{both cases} (inequality active, and inequality inactive) and check if the inactive solution is feasible ($g\le 0$) or the active solution dual-feasible ($\l\ge 0$). (For $m$ inequality constraints, you run into $2^m$ combinatorics.) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Lagrange dual problem} +\slide{Saddle Points, Primal \& Dual Problems}{ + +{\tiny [For simplicity, consider inequalities only.]} + +\item $\min_x L(x,\l)$ reproduces 1st KKT; $\max_{\l\ge0} L(x,\l)$ reproduces remaining KKT + +~\pause + +\item This motivates defining the \defn{Primal and dual problem} ~ (details later): +\begin{align*} +\min_x~ \underbrace{\max_{\l\ge 0}~ L(x,\l)}_{F_{\!\infty}(x) \text{\anchor{0,0}{\quad($\infty$-barrier function)}}} && \textbf{(primal problem)} \\ +\max_{\l\ge 0}~ \underbrace{\min_x~ +L(x,\l)}_{l(\l) \textbf{\anchor{0,0}{\quad(dual function)}}} && \textbf{(dual problem)} +\end{align*} + +\begin{items} +\item Convince yourself, that the first problem is the original problem $\min_x f(x) \st g(x)\le 0$ +\item Find a tabular function $L(x,\l)$ (for discrete $x,\l \in \{1,2\}$) where $\min_x \max_\l L \not= \max_\l \min_x L$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{The Lagrange dual problem}{ + +\small + +\vspace*{-8mm} +\begin{align*} +\min_x~ \underbrace{\max_{\l\ge 0}~ L(x,\l)}_{F_{\!\infty}(x)} && \textbf{(primal problem)} \\ +\max_{\l\ge 0}~ \underbrace{\min_x~ +L(x,\l)}_{l(\l)} && \textbf{(dual problem)} +\end{align*} +%% or +%% \begin{align*} +%% \min_x~ f(x) &\st g(x)\le 0 && \textbf{primal problem} \\ +%% \max_\l~ l(\l) &\st \l\ge 0 && \textbf{dual problem} +%% \end{align*} + +\item We defined the \defn{dual function} as +$$l(\l) = \min_x L(x,\l)$$ + +\item \textbf{Theorem:} The dual problem is convex (objective=concave, constraints=convex), even if the primal is non-convex! +\begin{items} +\item $L(x,\l)$ is linear in $\l$ +\item $l(\l)=\min_x L(x,\l)$ is a point-wise minimization $\To$ $l(x)$ concave +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{The Lagrange dual problem}{ + +\small + +\item Sometimes, $l(\l) = \min_x L(x,\l)$ can be derived analytically. We could swap +a non-convex primal problem for a convex dual problem. However, in +general $\min_x \max_y f(x,y) \not= \max_y \min_x f(x,y)$. + +~\pause + +\item The dual function is always a \defn{lower bound} (for $\l_i\ge 0$): +\begin{align*} + \l_i \ge 0 \quad\To\quad L(x,\l) &\le F_{\!\infty}(x) \\ + l(\l) = \min_x L(x,\l) ~&\le~ \min_x F_{\!\infty}(x) = p^* \stackrel{\text{def}}= \[\min_x f(x) \st g(x)\le 0\] \\ +\max_{\l\ge 0} \min_x L(x,\l) ~&\le~ \min_x \max_{\l\ge 0} L(x,\l) += p^* +\end{align*} + +\cen{\eqbox{$l(\l) \le p^*$}} + +}{ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Strong Duality} +\slide{The Lagrange dual problem}{ + +\item We say \defn{strong duality} holds iff +$$\max_{\l\ge 0} \min_x L(x,\l) = \min_x \max_{\l\ge 0} L(x,\l)$$ + +~ + +\item \textbf{Theorem:} If the primal is convex, and there exist an interior point +$$\exists_x:~ \forall_i:~ g_i(x) < 0$$ +(which is called \defn{Slater condition}), then we +have \emph{strong duality} (Boyd, Sec 5.3.2) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Log barrier method revisited}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Log barrier and sub-optimality gap} +\slide{Log barrier method revisited}{ + +\small + +\item Recall, the inner iterations minimize $\min_x f(x) - \mu \sum_i \log(-g_i(x))$: +$$ \na f(x) + \Sum_i \l_i \na g_i(x) = 0 \comma \text{with~} \l_i g_i(x) = -\mu $$ +%for $\l_i = -\mu/g_i(x)$ + +\item With the definition $\l_i = -\mu/g_i(x^*)$ and $x^*(\mu) = \argmin_x B(x,\mu)$, we have +\begin{align*} +\na B(x,\mu) +&= \na f(x) + \Sum_{i=1}^m \l_i \na g_i(x) + = \na L(x,\l) \\ +x^*(\mu) +&= \argmin_x L(x,\l) \comma \text{with~} \l_i g_i(x) = -\mu +\end{align*} + +\vspace*{-3mm} +\item We also have ~ (with $m$ the count of inequalities) +\begin{align*} +l(\l) +&= \min_x L(x,\l) + = f(x^*) + \Sum_{i=1}^m \l_i g_i(x^*) + = f(x^*) - m \mu +\end{align*} + +%\item $m \mu$ is the duality gap between the (suboptimal) $f(x^*)$ and $l(\l)$ + +\item Further, as the +dual function is a lower bound, $l(\l) \le p^*$, we have +%(for $p^*=\min_x f(x) \st g(x)\le 0$), + +\cen{\eqbox{ +$f(x^*) - p^* \le m \mu$ +}} + +\cen{\textbf{$\mu$ is an upper bound on the suboptimality of the centering point $x^*$}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Log barrier method -- Conclusions}{ + +\item The $\mu$, which we introduced as factor for the log barrier, has ``deep semantics'': + +~ + +\item $\mu$ defines a \textbf{relaxation of the 4th KKT} complementarity condition + +\item the log barrier gradients $\l_i = -\mu/g_i(x^*)$ have the semantics of dual variables + +\item $x^*(\mu)$ solves the relaxed KKT + +\item $f(x^*(\mu)) = l(\l) + m\mu$ gives the dual function value for $\l$ + +\item $\mu$ defines an upper bound on the \defn{sub-optimality} of each $x^*$: ~ $f(x^*) - p^* \le m \mu$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Comments}{\label{lastpage} + +\item We first learnt about three basic methods to tackle constrained optimization by repeated unconstrained optimization: +\begin{items} +\item Log barrier method +\item Squared penalty method (approximate only) +\item Augmented Lagrangian method +\end{items} + +~ + +\item We understood KKT, Lagrangian, dual problem, saddle point view, duality gap, relation to $\mu$ + +%% ~ + +%% \item We derived a fourth fundamental method: the primal-dual Newton +%% \begin{items} +%% \item Updates $(x,\k,\l)$ jointly, without inner loop +%% \end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/09-convexOpt.tex b/Optimization/09-convexOpt.tex new file mode 100644 index 0000000..a1032de --- /dev/null +++ b/Optimization/09-convexOpt.tex @@ -0,0 +1,666 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Convex Optimization} +\renewcommand{\keywords}{Convex, quasiconvex, unimodal, convex +optimization problem, linear program (LP), standard form, simplex +algorithm, LP-relaxation of integer linear programs, quadratic programming +(QP), sequential quadratic programming} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Function types: covex, quasi-convex, uni-modal} +\slide{Function types}{ + +\item A set $X\subseteq V$ is defined \defn{convex} iff +\begin{align*} +\forall x,y\in X, a\in[0,1]:~ ax + (1\!-\!a)y \in X +\end{align*} + +\item A function is defined \defn{convex} iff +$$\forall x,y\in\RRR^n,a\in[0,1]:~ f(ax + (1\!-\!a)y) \le a~ f(x) + (1\!-\!a)~ f(y)$$ + +\item A function is \defn{quasiconvex} iff +$$\forall x,y\in\RRR^n,a\in[0,1]:~ f(ax + (1\!-\!a)y) \le \max\{f(x), f(y)\}$$ + +{\tiny ..alternatively, iff every sublevel set $\{ x | f(x)\le \a\}$ +is convex.} + +\item We call a function \defn{unimodal} iff it has +only 1 local minimum, which is the global one + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\cen{convex ~$\subset$~ quasiconvex ~$\subset$~ unimodal ~$\subset$~ general} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Local optimization}{ + +%% \item So far I avoided making explicit assumptions about problem +%% convexity: To emphasize that all methods we considered -- except for +%% Newton -- are applicable also on non-convex problems. + +%% ~ + +%% \item The methods we considered are \textbf{local} optimization +%% methods, which can be defined as + +%% -- a method that adapts the solution locally + +%% -- a method that is guaranteed to converge to a local minimum only + +%% ~ + +%% \item Local methods are efficient + +%% -- if the problem is (strictly) unimodal ~ (strictly: no plateaux) + +%% -- if time is critical and a local optimum is a sufficiently good +%% solution + +%% -- if the algorithm is restarted very often to hit multiple local +%% optima + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Properties}{ + +\item The sum of two confex functions $f_1(x) + f_2(x)$ is also convex + +\item A function $f\in\CC^2$ convex $\iff$ $\he f(x)$ pos.-semidef. everywhere + +\item $f$ convex $\To$ sublevel sets $\{ x : f ( x ) \le a\}$ are convex + +\pause + +\item $l(\l)=\min_x L(x,\l)$ is concave! ~ Point-wise minimization: +\begin{items} +\item For each $x$, $L(x,\l)$ is linear in $\l$ +\item Think of $L(x,\l)$ as a family of many linear functions +\item At each $\l$, pick the function with lowest value $\to$ concave +\item (Epigraph: The ``region'' $\{ (x,y) : y\le f(x) \}$ below a function; point-wise minimization $\oto$ intersection of epigraphs.) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Convex Mathematical Program (CP)}{ + + +\item \emph{Variant 1:} A mathematical program $\min_x~ f(x) \st g(x)\le 0,~ h(x) = 0$ is convex iff $f$ is convex and the feasible set is convex. + +~ + +\emph{Variant 2:} A mathematical program $\min_x~ f(x) \st g(x)\le 0,~ h(x) = +0$ is convex iff $f$ and every $g_i$ are convex and $h$ is linear. + +~ + +\begin{items} +\item Variant 2 is the stronger and the default definition +\item In variant 1, only $\{x:h(x)=0\}$ needs to be \emph{linear}, and $\{x:g(x)\le 0\}$ needs to be convex +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Linear program (LP)} +\key{Quadratic program (QP)} +\slide{Linear and Quadratic Programs}{ + +\item \defn{Linear Program} (LP) +$$\min_x~ c^\T x \st G x \le h,~ Ax=b$$ + +LP in standard form +$$\min_x~ c^\T x \st x \ge 0,~ Ax=b$$ + +\item \defn{Quadratic Program} (QP) +$$\min_x~ \half x^\T Q x + c^\T x \st G x \le h,~ Ax=b$$ +where $Q$ is positive definite. + +~ + +\small +(This is different to a Quadratically Constraint Quadratic Programs (QCQP)) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{LP in standard form} +\slide{Transforming an LP problem into standard form}{ + +\item LP problem: +$$\min_x~ c^\T x \st G x \le h,~ Ax=b$$ + +\item Introduce \defn{slack variable}s: +$$\min_{x,\xi}~ c^\T x \st G x + \xi = h,~ Ax=b,~ \xi\ge 0$$ + +\item Express $x=x^+ - x^-$ with $x^+,x^-\ge 0$: +{\small +\begin{align*} +\min_{x^+,x^-,\xi}~ &c^\T (x^+-x^-)\\ +& \st G (x^+-x^-) + \xi = h,~ A(x^+-x^-)=b,~ \xi\ge 0,~ x^+\ge 0,~ + x^-\ge 0 +\end{align*}} +where $(x^+,x^-,\xi)\in\RRR^{2n+m}$ + +~ + +\item Now this is conform with the standard form +{\tiny with +$\tilde x = (x^+,x^-,\xi)$, +$\tilde A = \mat{ccc}{G & -G & \Id \\ A & -A & 0}$, +$\tilde b = (h, b)$ } +$$\min_{\tilde x}~ c^\T \tilde x \st \tilde x \ge 0,~ \tilde A \tilde x=\tilde b$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item A \defn{slack variable} is a variable that is added to an inequality constraint to transform it into an equality. Introducing a slack variable replaces an inequality constraint with an equality constraint and a non-negativity constraint on the slack variable (wikipedia) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example LPs}{ + +~ + +See the exercises 4.8-4.20 of Boyd \& Vandenberghe! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example QP}{ + +\small + +\item Support Vector Machines. Primal problem: +\begin{align*} +\min_{\b,\xi} +&~ \norm{\b}^2 + C \sum_{i=1}^n \xi_i \st y_i (x_i^\T \b) \ge +1-\xi_i\comma \xi_i\ge 0 +\end{align*} +Dual problem: +\begin{align*} +l(\a,\m) +&= \min_{\b,\xi} L(\b,\xi,\a,\m) + = -{\textstyle\frac{1}{4}} \sum_{i=1}^n \sum_{i'=1}^n \a_i \a_{i'} + y_i y_{i'} \hat x_i^\T \hat x_{i'} + \sum_{i=1}^n \a_i \\ +\max_{\a,\m} +&~ l(\a,\m) \st 0 \le \a_i \le C +\end{align*} +(See ML lecture 5:13 for a derivation.) + +\cen{ +\showh[.2]{svm_trenngeraden} +\hspace{1cm} +\showh[.25]{svm_margin} +\hspace{2cm} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Finding the optimal discriminative function [from ML lecture]}{ + +\item The constrained problem +$$\min_{\b,\xi} +\norm{\b}^2 + C \sum_{i=1}^n \xi_i \st y_i (x_i^\T \b) \ge 1-\xi_i\comma \xi_i\ge 0$$ +is a \textbf{quadratic program} and can be reformulated as the dual +problem, with dual parameters $\a_i$ that indicate whether the +constraint $y_i (x_i^\T \b) \ge 1-\xi_i$ is active. The dual problem +is \textbf{convex}. SVM libraries use, e.g., CPLEX to solve this. + +\item For all inactive constraints ($y_i (x_i^\T \b) \ge 1$) the data +point $(x_i, y_i)$ does not directly influence the solution +$\b^*$. Active points are support vectors. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{ [from ML lecture] }{ +\tiny +\item Let $(x,\xi)$ be the primal variables, $(\a,\m)$ the dual, we +derive the dual problem: +\begin{align} +\min_{\b,\xi} +&~ \norm{\b}^2 + C \sum_{i=1}^n \xi_i \st y_i (x_i^\T \b) \ge +1-\xi_i\comma \xi_i\ge 0 \\ +L(\b,\xi,\a,\m) +&= \norm{\b}^2 + C \sum_{i=1}^n \xi_i + - \sum_{i=1}^n \a_i [y_i (x_i^\T \b) - (1-\xi_i)] + - \sum_{i=1}^n \m_i \xi_i \label{eq2}\\ +\del_\b L +&\overset{!}= 0 \quad\To\quad 2\b=\sum_{i=1}^n \a_i y_i x_i \label{eq3}\\ +\del_\xi L +&\overset{!}= 0 \quad\To\quad \forall_i:~ \a_i = C-\mu_i\\ +l(\a,\m) +&= \min_{\b,\xi} L(\b,\xi,\a,\m) + = -{\textstyle\frac{1}{4}} \sum_{i=1}^n \sum_{i'=1}^n \a_i \a_{i'} + y_i y_{i'} \hat x_i^\T \hat x_{i'} + + \sum_{i=1}^n \a_i \label{eq4}\\ +\max_{\a,\m} +&~ l(\a,\m) \st 0 \le \a_i \le C +\label{eq5} +\end{align} + +\item \refeq{eq2}: Lagrangian (with negative Lagrange terms because of +$\ge$ instead of $\le$~) + +\item \refeq{eq3}: the optimal $\b^*$ depends only on $x_i y_i$ for which +$\a_i>0$ $\to$ support vectors + +\item \refeq{eq4}: This assumes that $x_i=(1,\hat x_i)$ includes the constant +feature $1$ (so that the statistics become centered) + +\item \refeq{eq5}: This is the dual problem. $\mu_i\ge 0$ implies $\a_i\le C$ + +\item Note: the dual problem only refers to $\hat x_i^\T \hat x_i$ +~$\to$~ \textbf{kernelization} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Algorithms for Convex Programming}{ + +~ + +\item All the ones we discussed for non-linear optimization! +\begin{items} +\item log barrier (``interior point method'', ``[central] path following'') +\item augmented Lagrangian +\item primal-dual Newton +\end{items} + +~ + +\item The simplex algorithm, walking on the constraints + +~ + +(The emphasis in the notion of \emph{interior} point methods is to +distinguish from constraint walking methods.) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Simplex Algorithm}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Simplex method} +\slide{Simplex Algorithm}{ + +Georg Dantzig (1947) + +{\tiny Note: Not to confuse with the Nelder-Mead method (downhill simplex method)} + +~ + +\item Consider an LP +$$\min_x~ c^\T x \st G x \le h,~ Ax=b$$ +%$$\min_x~ c^\T x \st x \ge 0,~ Ax=b$$ + +\item Note that in a linear program an optimum is always +located at a vertex + +{\tiny (If there are multiple optimal, at least one of them is at a vertex.) } + +\show[.3]{simplex} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Simplex Algorithm}{ + +\show[.3]{simplex} + +\item The Simplex Algorithm walks along the edges of the \textbf{polytope}, at +every vertex choosing the edge that decreases $c^\T x$ most + +\item This either terminates at a vertex, or leads to an unconstrained +edge ($-\infty$ optimum) + +~ + +\item In practise this procedure is done by ``pivoting on the simplex +tableaux'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Simplex Algorithm vs.\ Interior methods}{ + +\small + +\item The simplex algorithm is often efficient, but in worst case +exponential in $n$ and $m$! + +{\tiny (In high dimensions constraints may intersect and form edges and vertices in a combinatorial way.) + +} + +~\pause + +\item Sitting on an edge/face/vertex $\oto$ hard decisions on which constraints are active +\begin{items} +\item The simplex algorithm is sequentially making decisions on which constraints might +be active -- by walking through this combinatorial space. +\end{items} + +\item Interior point methods do exactly the opposite: +\begin{items} +\item They ``postpone'' (or relax) hard decisions about active/non-active constraints, +\item approach the optimal vertex from the inside of the polytope; +avoiding the polytope surface +%% \item avoid the need to search through a combinatorial space +%% of constraint activities +\item have polynomial worst-case guaranteed +\end{items} + +\pause + +\item Historically: +\begin{items} +\item Before 50ies: Penalty and barrier methods methods were standard +\item From 50s: Simplex Algorithm +\item From 70s: More theoretical understanding, interior point methods (and more recently Augmented Lagrangian methods) again more popular +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Sequential Quadratic Programming}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Quadratic Programming}{ + +$$\min_x~ \half x^\T Q x + c^\T x \st G x \le h,~ Ax=b$$ + +%(The dual of a QP is again a QP) + +~ + +\item Efficient Algorithms: +\begin{items} +\item Interior point (log barrier) +\item Augmented Lagrangian +\end{items} + +~ + +\item Highly relevant applications: +\begin{items} +\item Support Vector Machines +\item Similar types of max-margin modelling methods +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Sequential quadratic programming} +\slide{Sequential Quadratic Programming (SQP)}{ + +\item SQP is another standard method for \textbf{non-linear} programs +\begin{items} +\item It can be understood as generalization of the Newton method to the constrained case: +\item The Newton method for $\min_x f(x)$ approximates $f$ using 2nd-order Taylor, and computes the optimal step $\d^*$ for this approximation +\item SQP approximates costs $f$ and constraints $g,h$ using Taylor, and then computes the optimal step $\d^*$ for this approximation +\end{items} +\pause +\item In each iteration we consider Taylor approximations: +\begin{items} +\item 2nd order for: $f(x+\d) \approx f(x) + \na f(x)^\T\d + \half \d^\T H \d$ +\item 1st order for: $g(x+\d) \approx g(x) + \na g(x)^\T\d\comma h(x+\d) \approx h(x) + \na h(x)^\T\d$ +\end{items} +\item Then we compute the optimal step $\d^*$ solving the QP: +\begin{equation*} +\min_\d~ f(x) + \na f(x)^\T \d + \half \d^\T \he f(x) \d \st g(x) + \na +g(x)^\T \d\le 0\comma h(x) + \na +h(x)^\T \d=0 +\end{equation*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Sequential Quadratic Programming (SQP)}{ + +\small + +\item If $f$ \emph{were} a 2nd-order polynomial and $g,h$ linear, then $\d^*$ +would jump directly to the optimum + +\item Otherwise, backtracking line search + +~\pause + +\item Note: Solving each QP to compute the search step $\d^*$ requires a constrained solver, +which itself might have two nested loops (e.g.\ using log-barrier or +AugLag) $\to$ three nested loops + +\item \textbf{But:} To solve the QP-step, you need no queries of the original problem! + +$\to$ SQP can be query efficient. It invests in solving an approximate QP to minimize querying the original problem + +\item Potentially more prone to non-smoothness (local Taylor might be misleading) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Baseline methods for constrained optimization}{ + +\item We now learnt about four baseline methods to tackle constrained optimization: +\begin{items} +\item Log barrier method +%\item Squared penalty method (approximate only) +\item Augmented Lagrangian method +\item Primal-dual Newton +\item Sequential Quadratic Programming +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{LP-relaxations of discrete problems*}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{LP-relaxations of integer programs} +\slide{Integer linear programming (ILP)}{ + +\item An integer linear program (for simplicity binary) is +$$\min_x~ c^\T x \st Ax=b,~ x_i \in\{0,1\}$$ + +~ + +\item Examples: +\begin{items} +\item Travelling Salesman: $\min_{x_{ij}} \sum_{ij} c_{ij} x_{ij}$ with +$x_{ij}\in\{0,1\}$ and constraints $\forall_j: \sum_i x_{ij}=1$ +(columns sum to 1), $\forall_j: \sum_i x_{ji}=1$, $\forall_{ij}: +t_j-t_i \le n-1+n x_{ij}$ (where $t_i$ are additional integer variables). + + +\item MaxSAT problem: In conjunctive normal form, each clause contributes +an additional variable and a term in the objective function; each +clause contributes a constraint + +\item Search the web for \emph{The Power of Semidefinite Programming +Relaxations for MAXSAT} +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{LP relaxations of integer linear programs}{ + +\item Instead of solving +$$\min_x c^\T x \st Ax=b,~ x_i \in\{0,1\}$$ +we solve +$$\min_x c^\T x \st Ax=b,~ x\in[0,1]$$ + +~ + +\item Clearly, the relaxed solution will be a \emph{lower bound} on +the integer solution (sometimes also called ``outer bound'' because $[0,1]\supset\{0,1\}$) + +~ + +\item Computing the relaxed solution is interesting +\begin{items} +\item as an ``approximation'' or initialization to the integer problem +\item in cases where the optimal relaxed solution happens to be + integer +\item for using the lower bound for \textbf{branch-and-bound} tree search over the discrete variable +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example*:~ MAP inference in MRFs}{ + +\small + +\item Given integer random variables $x_i$, +$i=1,..,n$, a pairwise Markov Random Field (MRF) is defined as +$$f(x) = \sum_{(ij)\in E} f_{ij}(x_i, x_j) + \sum_i f_i(x_i)$$ +where $E$ denotes the set of edges. Problem: find $\max_x f(x)$. + +{\tiny (Note: any general (non-pairwise) MRF can be converted +into a pair-wise one, blowing up the number of variables) + +} + +\item Reformulate with indicator variables +$$b_i(x) = [x_i=x] \comma b_{ij}(x,y) = [x_i=x]~ [x_j=y]$$ +These are $nm + |E|m^2$ binary variables + +\item The indicator variables need to fulfil the constraints +\begin{align*} +b_i(x), b_{ij}(x,y) &\in\{0,1\} \\ +\sum_x b_i(x) &= 1 &&\text{because $x_i$ takes eactly one value}\\ +\sum_y b_{ij}(x,y) &= b_i(x) &&\text{consistency between indicators} +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example*:~ MAP inference in MRFs}{ + +\small + +\item Finding $\max_x f(x)$ of a MRF is then equivalent to +$$\max_{b_i(x),b_{ij}(x,y)} \sum_{(ij)\in E}\sum_{x,y} +b_{ij}(x,y)~ f_{ij}(x, y) + \sum_i\sum_x b_i(x)~ f_i(x)$$ +such that +$$b_i(x), b_{ij}(x,y) \in\{0,1\} \comma \sum_x b_i(x) = +1 \comma \sum_y b_{ij}(x,y) = b_i(x)$$ + +~ + +\item The LP-relaxation replaces the constraint to be +$$b_i(x), b_{ij}(x,y) \in[0,1] \comma \sum_x b_i(x) = +1 \comma \sum_y b_{ij}(x,y) = b_i(x)$$ + +This set of feasible $b$'s is called \textbf{marginal polytope} +(because it describes the a space of ``probability distributions'' +that are marginally consistent (but not necessarily globally normalized!)) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example*:~ MAP inference in MRFs}{ + +\small + +\item Solving the original MAP problem is NP-hard + +Solving the LP-relaxation is really efficient + +~ + +\item If the solution of the LP-relaxation turns out to be integer, +we've solved the originally NP-hard problem! + +If not, the relaxed problem can be discretized to be a good +initialization for discrete optimization + +~ + +\item For binary attractive MRFs (a common case) the solution will always +be integer + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusions}{\label{lastpage} + +\item Convex Problems are an important special case +\begin{items} +\item Convergence of backtracking line search $\ot$ bounded Hessian $\to$ convexity +\item Some applications are convex +\end{items} +\item Algorithms for convex programs are same as we discussed before + +~ + +\item Baseline methods for constrained optimization: +\begin{items} +\item Log barrier method +%\item Squared penalty method (approximate only) +\item Augmented Lagrangian method +\item Primal-dual Newton +\item Sequential Quadratic Programming +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/10-differentiableOpt.tex b/Optimization/10-differentiableOpt.tex new file mode 100644 index 0000000..f2107d5 --- /dev/null +++ b/Optimization/10-differentiableOpt.tex @@ -0,0 +1,356 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Implicit Functions \& Differentiable Optimization} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Implicit Functions +\begin{items} +\item Definition +\item Implicit Function Theorem and differentiation +\end{items} + +\item Differentiable Optimization + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Implicit Functions}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Implicit Functions} +\slide{What is an Implicit Function?}{ + +\item A function $F: \RRR^d \to Y$ can be defined \textbf{implicitly}, e.g.\ via +$$F(x) = \argmin_y f(x,y) \qquad \text{optimality formulation}$$ +or alternatively via +$$F(x) = y \st f(x,y) = 0 \qquad \text{standard (root) formulation}$$ + +\item $F$ is called \emph{implicit function}, $f$ is sometimes called \textbf{discriminative function}, as it discriminates ``correct'' outputs $y$ +from others. \pause Examples: +\begin{items} +\item \textbf{ML classification}: A classifier $F: \RRR^d \to \{A,B,C\}$ is represented via a discriminative function $f(x,y)$ that assignes different neg-likelihoods to the three possible outputs $y\in\{A,B,C\}$ (cf.\ logistic regression, multi-class classification, conditional random fields). +\item \textbf{Implicit Surface Functions}: A 3D surface is implicitly defined as the \emph{set} of points $y\in\RRR^3$ for which $f(y)=0$ (often no parameter $x$ here) (cf. recent work in CV and robotics to use neural implicit functions (NIF) to represent objects and scenes). +\item \textbf{Control \& Robot Motion}: Optimal control and robot are described via optimality principles, e.g., motion such that various constraints $h(\text{environment},\text{motion})=0$ are fulfilled. +\end{items} + +%% ~\pause + +%% \item Both formulations (optimality, root) are of course related. The standard is the root formulation $F(x) = y \st f(x,y) = 0$. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Implicit Function Theorem}{ + +$$F: x \mapsto y \st f(x,y) = 0$$ +where $f: \RRR^d \times \RRR^n \to \RRR^n$ has $n$-dimensional output + +~ + +\item Is $F$ really well-defined? E.g., what if no $y$ solves $f(x,y) = 0$? What if multiple $y$ solve $f(x,y) = 0$? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Implicit Function Theorem} +\slide{Implicit Function Theorem}{ + +\small + +\item \textbf{Theorem:} Let $f(x,y)$, $x\in\RRR^d, y\in\RRR^n$ be a continuously differentiable $\RRR^n$-valued function (in $C^1$). Assume we have a point $(x^*,y^*)\in\RRR^{d+n}$ where +$$f(x^*,y^*)=0 \quad\text{and}\quad \det \Del y f(x^*,y^*) \not=0 ~.$$ + +a) Then there exists a radius $r$ such that for each $x$, $|x-x^*| 0$ +\end{items} + +\item Individual infeasibility variables +$$\min_{(x,s)\in\RRR^{n+m}} \sum_{i=1}^m s_i \st \forall_i:~ g_i(x)\le s_i,~ s_i\ge 0$$ +\begin{items} +\item Given initial infeasible $x$, initialize $s_i = \max\{g_i(x) , 0\}$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Bound Constraints}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bound Constraints}{ + +\item A \defn{bound constrained} NLP, with bounds $l,u\in\RRR^n$, ~ $l\le u$ + $$\min_{\lowerB \le x \le \upperB} f(x) \st g(x) \le 0,~ h(x) = 0$$ + +\item Other words: +\begin{items} +\item \emph{simply constrained problem} or NLP with simple constraints (Bertsekas) +\item box or rectangle constraints +\end{items} + +~\pause + +\item Since we know how to deal with constraints $g, h$, we only discuss: +$$\min_{\lowerB \le x \le \upperB} f(x)$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bound Constraints -- Motivation}{ + +\item Do we need to handle them specially? Not necessarily +\begin{items} +\item \textbf{Treat bounds just like any other inequality} +\item Sound, we know what we're doing -- \textbf{recommended, if possible} +\end{items} + +~\pause + +\item However, \textbf{reasons to treat bounds directly:} +\begin{items} +\item The primal-dual Newton method requires Newton steps that respect bounds +\item Sometimes undesirable to have an AugLag or LogBarrier with inner/outer loop, only to account for bounds +\item Simpler/more direct solutions to handling bounds other than general (non-linear) inequalities? +\end{items} + +~\pause + +\item Note: Naively clipping (``projecting'') all queries in a line search can go badly wrong! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +\item Mainstream: Projected gradient (or rather ``projected line search'') +\begin{items} +\item not focus here, mention briefly +\item (SLIDES) Leyffer, S. Bound Constrained Optimization - GIAN Short Course on Optimization: Applications, Algorithms, and Computation. 30. +\end{items} + +~ + +\item \textbf{Our focus:} Bound-constrained Newton method +\begin{items} +\item Maintain the strength of Newon method as inner loop in AugLag, primal-dual, etc +\item D.P. Bertsekas. Projected Newton methods for optimization problems with simple constraints. SIAM Journal on Control and Optimization 20, 221-246 (1982). +\item Facchinei, F., Júdice, J. \& Soares, J. An active set Newton algorithm for large-scale nonlinear programs with box constraints. SIAM Journal on Optimization 8, 158–186 (1998). +\item Cheng, W., Chen, Z. \& Li, D. An active set truncated Newton method for large-scale bound constrained optimization. Computers \& Mathematics with Applications 67, 1016–1023 (2014). +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bound Constraints \& Newton}{ + +\item Recap basic Newton method: + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), \na f(x), \he f(x)$, +tolerance $\t$, parameters (defaults: +$\ainc=1.2, \adec=0.5, \lsstop=0.01, \l$) +\State initialize stepsize $\a=1$, fixed damping $\l$ +\Repeat +\State compute $\step$ to solve $(\he f(x) + \l \Id)~ \step = - \na f(x)$ +\While{$f(x+\a\step) > f(x) + \lsstop \na f(x)^\T (\a\step)$} \Comment{line search} +\State $\a \gets \adec\a$ \Comment{decrease stepsize} +\EndWhile +\State $x \gets x + \a\step$ \Comment{step is accepted} +\State $\a \gets \min\{\ainc\a,1\}$ \Comment{increase stepsize} +\Until $\norm{\a\step}_\infty < \t$ +\end{algo} + +\small + +\item Naive approach: clipping: query $y = \text{clip}(x+\a\d)$ +\begin{items} +\item with $\clip(x) \equiv \min(\max(x,\lowerB), \upperB)$ elem-wise +\end{items} + +\pause + +\item Can go badly wrong -- understanding why and when is the key to do it properly + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example}{ + +\item Core case to consider (from Bertsekas):\anchor{50,-50}{\showh[.35]{bertsekas-fig1}} + +~ + +~ + +~ + +\item Example problem: ~ $x\in\RRR^2$ +$$\min \half x^\T A x \st x_1 \ge \half\comma \text{with}~ A = \mat{cc}{200 & -160 \\ -160 & 200} $$ + +\pause + +\item The standard Newton direction is bad! Naively clipping (projecting line search queries) sends in the wrong direction! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Active Set Identification}{ + +\item The key is to (try to) identify the active set! +\begin{items} +\item This is consistent to our general understanding of the complexity of constrained optimization: If the active inequalities were known apriori, everything would be much simpler! (Recall complexity of Simplex.) This is the same for the simple bound inequalities. +\item For general inequalities, we had the LogBarrier relaxing the hard decision of active constraints, and AugLag using the indicator $[g_i(x)\ge 0 \vee \l_i>0]$ +\end{items} + +\item Bertsekas proposes to define the active set as: +$$ I^+(x) = \{ i :~ 0 \ge x_i \ge \e, \na f_i(x)\ge0 \}$$ +{\tiny (where he assumes $\lowerB=0$, i.e., $x\ge 0$ as bounds)} + +\item Facchinei proposes: +\begin{align} +L(x) &:= \{i :~ x_i \le \lowerB_i + a_i(x) \na f_i(x)\}\\ +U(x) &:= \{i :~ xi \ge \upperB_i + b_i(x)~ \na f_i(x)\} +\end{align} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Hessian Modification for Active Set}{ + +\item Assuming we had the active set identified, how can we modify the Newton method? + +~\pause + +\item (Active variables could be hard-assigned to bound.) +\item We compute Newton step only for the free variables! +\begin{items} +\item The free variables form a \emph{hyperplane} -- we want a Newton step only in this hyperplane +\item Following Bertsekas: Let $H$ be the original Hessian, we \textbf{delete correlations} of active bound variables to free variables, by \textbf{deleting off-diagonal} entries for the active variables + +{\ttiny +$$ +H \gets \text{remove}_i(H) \quad:\quad +\mat{ccc}{ + & & \\ +A & \vdots & B \\ + & & \\ +\cdots & h_{ii} & \cdots \\ + & & \\ +B^\T & \vdots & C \\ + & &} +\gets +\mat{ccc}{ + & 0 & \\ +A & \vdots & B \\ + & 0 & \\ +0 \cdots 0 & h_{ii} & 0 \cdots 0 \\ + & 0 & \\ +B^\T & \vdots & C \\ + & 0 &} +$$ +} + +The curvature along $i$ remains, but it becomes decorrelated from all other variables +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Newton method with Bound Constraints}{ + +\begin{algo} +\Require initial $x\in\RRR^n$, functions $f(x), \na f(x), \he f(x)$, +{\color{blue}bounds $\lowerB, \upperB$}, parameters $\t,\ainc, \adec, \lsstop, \l$ +\State initialize stepsize $\a=1$, fixed damping $\l$ +\State {\color{blue} $x \gets \clip(x)$} \Comment{otherwise the first $\na f(x), \he f(x)$ are horribly wrong} +\Repeat +\State compute $g \gets \na f(x), H \gets \he f(x)$ +\State {\color{blue} Identify $I = \{ i:~ (x=\lowerB\w g_i>0) \vee (x=\upperB\w g_i<0) \}$} \Comment{no $\e$; assume previous $\clip$} +\State {\color{blue} $H \gets \text{remove}_I(H)$} \Comment{delete correlations} +\State compute $\step$ to solve $(H + \l \Id)~ \step = - g$ +\While{$f({\color{blue}y}) > f(x) + \lsstop \na f(x)^\T {\color{blue}(y-x)}$,~ {\color{blue}for $y = \clip(x+\a\step)$},~} \Comment{line search} +\State $\a \gets \adec\a$ \Comment{decrease stepsize} +\EndWhile +\State $x \gets {\color{blue}y}$ \Comment{step is accepted} +\State $\a \gets \min\{\ainc\a,1\}$ \Comment{increase stepsize} +\Until $\norm{\a\step}_\infty < \t$ +\end{algo} + +\begin{items} +\item since we clip within line search, clipped $x_i$ are exactly on bound and identified in next iteration +\item $\d$ can point away from bound (depending on $g_i$ only), to free a previously bound $x_i$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Line search sometimes an issue, when bound variable was not yet identified + +\item Facchinei mentions a ``nonmonotone stabilization technique +proposed in [27]'', which seems very interesting alternative to naive Wolfe in bound-constrained case! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Projected-Gradient Methods}{ + +\item Nice tutorial reference: +\begin{items} +\item (SLIDES) Leyffer, S. Bound Constrained Optimization - GIAN Short Course on Optimization: Applications, Algorithms, and Computation. 30. +\end{items} + +~ + +~ + +\item Let $\step = -\na f(x)$ (gradient directly) \anchor{120,-50}{\showh[.2]{projectedGradient}} +\begin{items} +\item Consider the full line (infinite half-line) projected (clipped) +\item Identify the piece-wise linear pieces of this path +\item Find minimizer along this full path +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Primal-Dual interior-point Newton Method}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Primal-dual interior-point Newton method} +\slide{Primal-Dual interior-point Newton Method}{ + +\item In the unconstraint case, Newton methods find a point $x$ for which $\na f(x)=0$ + +\item The KKT conditions generalize the condition $\na f(x)=0$ to the constraint case, and can be interpreted as saddle point conditions $L(x,\k,\l)$ + +\item We think of the KKT conditions as an equation system +$r(x,\k,\l)=0$, and use a Newton method for solving it + +%% \cen{$\na r \mat{c}{\D x\\\D \l\\\D k} = -r$} + +~ + +\item This leads to a \textbf{primal-dual} algorithm that adapts $(x,\k,\l)$ +concurrently. + +The Newton steps are done in the $(x,\k,\l)\in\RRR^{n+l+m}$ space. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Primal-Dual interior-point Newton Method}{ + +\item We consider the KKT equation system +\begin{align*} + \na f(x) + \l^\T \Del x g(x) + \k^\T \Del x h(x) &= 0 \\ + h(x) &= 0 \\ + \diag(\l) g(x) + \m \one_m &=0 +\end{align*} +\vspace*{-5mm}\begin{items} +\item With the 1st, 2nd, and \emph{relaxed} 4th KKT condition +\item The ineq feasibility $g(x) \le 0$ and $\l\ge 0$ is implicit. +\end{items} + +~ + +\item We re-write this as +\begin{align*} +r(x,\k,\l) +&=0 \comma +r(x,\k,\l) +\stackrel{\text{def}}= \mat{c}{ + \na {~} [f(x) + \l^\T g(x) + \k^\T h(x)] \\ + h(x) \\ + \diag(\l)~ g(x) + \m \one_m} +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{KKT Jacobian} +\slide{Primal-Dual interior-point Newton Method}{ + +\item We compute the regularized Newton step $\d$ in $(x,\k,\l)$-space as +\begin{align*} +\d = - [\Del {{}_{x\k\l}} r(x,\k,\l) + \hat\l \Id]^\1 ~ r(x,\l) +\end{align*} + +~ + +\item With the \defn{KKT Jacobian} $\Del {{}_{x\k\l}} r \in \RRR^{(n+l+m)\times (n+l+m)}$ replacing the role of the Hessian: +\begin{align*} +\Del {{}_{x\k\l}} r(x,\k,\l) + &= \mat{ccc}{ + \he {} [f(x) + \l^\T g(x) + \k^\T h(x)] & \Del x h(x)^\T & \Del x g(x)^\T \\ + \Del x h(x) & 0 & 0 \\ + \diag(\l)~ \Del x g(x) & 0 & \diag(g(x)) +} +\end{align*} + +~\pause + +\item Pseudo code $\to$ just like Newton method, but with $\d$ as above + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Primal-Dual interior-point Newton Method}{\label{lastpage} + +\item The method uses the Hessians $\he f(x), \he g_i(x), \he h_j(x)$ +\begin{items} +\item One can approximate the constraint Hessians $\he g_i(x), \he h_j(x) \approx 0$ +\item Gauss-Newton approximation: $f(x)=\phi(x)^\T \phi(x)$ only requires +$\na\phi(x)$ +\end{items} + +~ + +\item \emph{No need for nested iterations, as with penalty/barrier methods!} + +~ + +\item The above formulation allows for a duality gap $\m$ +\begin{items} +\item Choosing $\m=0$ is not robust +\item We adapt $\m$ on the fly, before each Newton step: +\item First evaluate the current duality measure +$\tilde \mu = -\frac{1}{m}~ \sum_{i=1}^m \l_i g_i(x)$, then choose +$\mu = \half \tilde \mu$ to half that +\item See also Boyd sec 11.7.3. +\end{items} + +\item The dual feasibility $\l_i \ge 0$ needs to be handled explicitly by +the root finder! +\begin{items} +\item Specialized method for bound-constrained optimization +\end{items} + +%% ~ + +%% \item The \textbf{feasibility constraints} $g_i(x) \le 0$ and +%% $\l_i \ge 0$ need to be handled explicitly by the root finder (the +%% line search needs to ensure these constraints) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/12-stochasticGradient.tex b/Optimization/12-stochasticGradient.tex new file mode 100644 index 0000000..e495cf5 --- /dev/null +++ b/Optimization/12-stochasticGradient.tex @@ -0,0 +1,519 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Stochastic Gradient Descent} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +\item Léon Bottou: Stochastic Gradient Descent Tricks! (2012) + +\item Bottou, Curtis, Nocedal: Optimization Methods for Large-Scale Machine Learning (2018) + +\item Lecture by Mark Schmidt ``SGD Convergence Rate'' + +\item Nemirovski et al: Robust Stochastic Approximation Approach to Stochastic (2009) + +\item Lecture by Christopher De Sa +https://www.cs.cornell.edu/courses/cs4787/2020sp/ + +\item Wikipedia ``Stochastic approximation'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item For consistency with references, we change our notation a bit: + +~ + +\item We consider the problem + +$$\min_{w\in\RRR^d} f(w)$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Stochastic Gradient Descent Basics \& Convergence}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Plain Gradient Descent -- Recall}{ + +\item Plain gradient descent iterates, e.g.\ with constant $\a$ + +$$w \gets w - \a \na f(w)$$ + +~ + +\item Core issue (cf.\ Part 1): Stepsize! (e.g., small gradient $\to$ small step?) + +~ + +\item Solution: Backtracking line search +\begin{items} +\item Theorem: Gradient descent with backtracking line search converges exponentially with convergence rate $\g=(1-2 \frac{m}{M}\lsstop\adec)$ + +\item we have regret $O(\g^t)$ for some $\g<1$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Typical Setting for Stochastic Gradient Descent}{ + +\item Additive cost function: +$$\min_w \frac{1}{n} \sum_{i=1}^n f_i(w)$$ +\begin{items} +\item E.g.: least squares problem $\min_w \sum_{i=1}^n \phi_i(w)^2$ +\end{items} +~ + +\item Core example: Machine Learning, with data $D=\{ (x_i,y_i) \}_{i=1}^n$ +$$f(w) = \frac{1}{n}\sum_{i=1}^n \ell(f(x_i;w), y_i)~ \color{grey}{+ \frac{\l}{2} \norm{w}^2}$$ + +\item We are interested in large $n$ ~ (big data) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Stochastic Gradient Descent (SGD)} +\slide{Stochastic Gradient Descent (SGD)}{ + +\item Instead of computing $\na f$ in each iteration, we only compute $\na f_i$ of \emph{one} cost component +\begin{items} +\item E.g., only the gradient w.r.t.\ a mini-batch (subset) of the full data +\end{items} + +~ + +\only<1>{ +\item Stochastic Gradient Descent: + +\begin{algo} +\Require initial $w_0\in\RRR^n$, gradient functions $\na f_i(w)$, stepsize schedule $\a_k$ +\For{$k=0,..,$} +\State Sample $i$ uniformly (iid) from $\{1,..,n\}$ +\State $w_{k\po} \gets w_k - \a_k \na f_i(w_k)$ +\EndFor +\end{algo} +} +\only<2>{ +\item Stochastic Gradient Descent (episodic): + +\begin{algo} +\Require initial $w_0\in\RRR^n$, gradient functions $\na f_i(w)$, stepsize schedule $\a_k$, +\State initialize $k=0$ +\For{episode $j=0,..,$} +\For{$i=1,..,n$ (or $i=\text{RandomPermutation}(\{1,..,n\})$)} +\State $w_{k\po} \gets w_k - \a_k \na f_i(w_k)$ +\State $k \gets k+1$ +\EndFor +\EndFor +\end{algo} +} + +\item $\na f_i(w)$ has expectation $\Exp{\na f_i(w)} = \na f(w)$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Converenge of SGD} +\slide{Converenge of SGD}{ + +\item SGD is a method to find a point such that $\na f(w)\approx 0$ + +\item Convergence analysis investigates how $\norm{\na f(w_k)}$ decreases with $k$ (in expectation) + +~\pause + +\item Mathematics: see ``Stochastic Approximation'' + +\item Typical assumptions: +\begin{items} +\item Lipschitz continuity of $\na f(w)$: +$$\exists L\in\RRR \st \forall w,\bar w:~ \norm{\na f(w) - \na f(\bar w)} \le L~ \norm{w - \bar w} ~,$$ +where $\norm{w} = \sqrt{w^2}$ is the $L_2$-norm; $L$ is called Lipschitz constant. +\item This means, ``the change of gradient $\na f(w)$ is limited'' +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Convergence of SGD}{ + +\item \textbf{Theorem}: Assuming $\na f(w)$ is $L$-continuous, and $\Var{\na f_i(w)} = \s^2$, we have +$$ +\min_k\{\Exp{\norm{\na f(w_k)}^2}\} +\le \frac{f(w_0) - f^*}{\sum_{k=0}^{t\1} \a_k} + \frac{\sum_{k=0}^{t\1} \a_k^2}{\sum_{k=0}^{t\1} \a_k}~ \frac{L \s^2}{2} +$$ + +~\pause + +\item Implications: + +\begin{items} +\item If gradient had no noise $\s=0$ (plain GD): constant $\a$ leads to convergence $O(1/t)$ + +~\pause + +\item Stochasticity: rate is determined by $\frac{\sum_{k=0}^{t\1} \a_k^2}{\sum_{k=0}^{t\1} \a_k}$. Ensure $\lim_t \sum_{k=0}^{t\1} \a_k^2 <\infty$ and $\lim_t\sum_{k=0}^{t\1} \a_k = \infty$. + +\item Constant $\a$ is bad choice: right becomes a constant $\frac{\a L \s^2}{2}$ + +\item Diminishing step size $\a_k = \frac{\a_0}{1+\g k}$ is good:~ we have $\sum_k \a_k = O(\log t)$ and error $O(1/\log(t))$ +\end{items} + +%% \tiny + +%% If we made stronger assumptions (namely, $f$ is strictly cvx, $\text{eig}(\he f)$ lower bounded), we could get exponential convergence in the \emph{deterministic} case, but still not better than +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Converenge of SGD -- Derivation}{ + +\item Based on assuming Lipschitz continuity of $\na f(w)$, we derive how SGD decreases function values in expectation: + +~ + +\begin{items} +\item We assume $\norm{\na f(w) - \na f(\bar w)} \le L~ \norm{w - \bar w}$ for any $w,\bar w$. + +\item For any step $\d=w-\bar w$ the Hessian $\he f(w)$ fulfills $\norm{\he f(w) \d} \le L \norm{\d}$. +\item Using this in a 2nd order Taylor, it follows +$$f(w) \le f(\bar w) + \na f(\bar w)^\T (w - \bar w) + \half~ L (w-\bar w)^2 ~.$$ +\item And applying this to $w_{k\po} \gets w_k - \a_k \na f_i(w_k)$, we get in expectation +$$\Exp{f(w_{k+1})} +\le f(w_k) - \a_k \norm{\na f(w_k)}^2 + \half~ \a_k^2~ L~ \Exp{\norm{\na f_i(w_k)}^2} ~.$$ +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Converenge of SGD -- Derivation}{ + +\item From this, we derive how $\norm{\na f(w_k)}$ decreases with $k$ in expectation: +\begin{items} +\item Assume $\s^2$ is the variance of $\na f_i(w)$, and rearrange terms +\begin{align*} +\Exp{f(w_{k+1})} +& \le f(w_k) - \a_k \norm{\na f(w_k)}^2 + \a_k^2~ \frac{L}{2}~ \Exp{\norm{\na f_i(w_k)}^2} \\ +& \le f(w_k) - \a_k \norm{\na f(w_k)}^2 + \a_k^2 \frac{L \s^2}{2} \\ +\a_k \norm{\na f(w_k)}^2 +&\le f(w_k) - \Exp{f(w_{k+1})} + \a_k^2 \frac{L \s^2}{2} +\end{align*} +\item Sum over $k=1,..t$, pull min.\ gradient out of left sum, and notice the telescope sum on the right: +\begin{align*} +\sum_{k=1}^t \a_{k\1} \norm{\na f(w_k)}^2 +& \le \sum_{k=1}^t[f(w_{k\1}) - \Exp{f(w_k)}] + \sum_{k=1}^t \a_{k\1}^2 \frac{L \s^2}{2} \\ +\min_k\{\Exp{\norm{\na f(w_k)}^2}\}~ \sum_{k=1}^t \a_{k\1} +&\le f(w_0) - \Exp{f(w_t)} + \sum_{k=1}^t \a_k^2 \frac{L \s^2}{2} +\end{align*} +\item Replace $\Exp{f(w_t)} \ge f^*$, and rearrange terms: +\begin{align*} +\min_k\{\Exp{\norm{\na f(w_k)}^2}\} +&\le \frac{f(w_0) - f^*}{\sum_{k=0}^{t\1} \a_k} + \frac{\sum_{k=0}^{t\1} \a_k^2}{\sum_{k=0}^{t\1} \a_k}~ \frac{L \s^2}{2} +\end{align*} +\end{items} + +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{When is SGD efficient?}{ + +(from Bottou ``tricks'') + +\small + +\item For strongly convex assumptions, deterministic gradient can converge exponentially, requiring $O(\log \frac{1}{\rho})$ iterations to reach precision $\rho$. SGD requires $O(\frac{1}{\rho})$ iterations. + +~ + +\item HOWEVER: The time-per-iteration is also important!: ~ (see 3rd line) + +\show{bottou} + +{\tiny 2GD = ``2nd order gradient method'' (that uses some approx.\ of the inv.\ Hessian)} + +~ + +\cen{\textbf{$\to$ for large $n$, SGD is faster!}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Practical Recommendations}{ + +(from Bottou ``tricks'') + +~ + +\item Randomly shuffle $i$, but then `zip' through + +\pause + +\item In ML: Monitor training and validation after each zip, through full data + +\pause + +\item Use learning rate $\a_k = \frac{\a_0}{1+\a_0 \l k}$, when $\l$ is a known minimal eigenvalue of Hessian (e.g., $L_2$-regularization in ML) + +\pause + +\item Empirically choose best $\a_0$ on small data subset + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{How to improve Stochastic Gradient Descent}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{How to improve over basic SGD?}{ + +\item There are three core approaches: + +~ + +\item Gradient Variance Reduction + +\item 2nd-order information + +\item Momemtum Methods + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\key{Reducing Gradient Variance} +\slide{Reducing Gradient Variance}{ + +\small + +\item Use flexible mini-batch sizes, +$$ w_{k\po} \gets w_k + \frac{\a_k}{|B_k|}~ \sum_{i\in B_k} \na f_i(w_k) $$ +and increase $|B_k|$ over time. But how? (cf. Bottou et al. Sec 5.2) + +~\pause + +\item Gradient aggregation: E.g., store \emph{all} gradients $\na f_j(w_{[j]})$ you've seen latest for $j$, then sample $i$, update $w_{[i]} \gets w_k$, query\&store $\na f_i(w_k)$ and iterate (Bottou Sec 5.3.2) +$$w_{k\po} \gets w_k + (1/n)\sum_{j=1}^n \na f_j(w_{[j]})$$ + +\pause + +\item \emph{Iterate} Averaging: Let $w_k$ create ``noise'', but care about +$\bar w_t = \frac{1}{t-k}\sum_{k'=k}^t w_{k'}$. (Polyak-Ruppert method) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{RMSprop} +\slide{Second Order Information}{ + +\small + +\item Try to estimate Hessian, e.g.\ stochastic version of BFGS +\begin{items} +\item Many possible approaches \& maths, Sec 6 +\item But require more complex operations that plain SG +\end{items} + +\pause + +\item[$\to$] Estimate diagonal of Hessian, or ``scaling'' of gradient only \textbf{coordinate-wise} + +\pause + +\item \defn{RMSprop} (running avg.\ of elem-wise gradient squares) +\begin{align*} +v_k &\gets (1-\l)~ v_{k\1} + \l~ [\na f_i(w_k)]^{2} \quad [\text{elem-wise}] \\ +w_{k\po} &\gets w_k -\frac{\a_k}{\sqrt{v_k+\m}} \na f_i(w_k) \quad [\text{elem-wise}] +\end{align*} + +\item \defn{Adagrad} (accumulate squares for diminishing stepsize with constant $\a$) +\begin{align*} +v_k &\gets v_{k\1} + [\na f_i(w_k)]^{2} \quad [\text{elem-wise}] \\ +w_{k\po} &\gets w_k -\frac{\a}{\sqrt{v_k+\m}} \na f_i(w_k) \quad [\text{elem-wise}] +\end{align*} + +(``Theoretical explaination for good performance pending''; Bottou et al, Sec 6.5) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why divide by $\sqrt{\}$?}{ + +\item RMSprop makes a step $-\frac{\a_k}{\sqrt{\+\m}} \na f_i$ (elem-wise), where $\$ averages gradient squares (elem-wise) -- Why? + +~\pause + +\item Scale invariance: Rescaling $f_i \gets a f_i$ scales $\na_i f$ and $\sqrt{\}$ equally + +\item Accounts for different conditioning along different coordinates + +\item Gradient steps in all directions become somewhat equal/normalized + +~\pause + +\item If $f_i$ has some curvature, e.g.\ $f_i = a w^2$, then $\na f_i = 2 a w$, and $\sqrt{\}\propto a$ + +\item $\sqrt{\}$ is proportional to curvature, and mimics a diagonal Hessian + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{SGD with Momentum} +\slide{SGD with Momentum}{ + +\small + +\item SGD with momentum: ~ (c.f.\ conjugate gradient method) +\begin{align*} +w_{k\po} +&\gets w_k - \a_k \na f_i(w_k) + \b_k ( w_k - w_{k\1} ) +\end{align*} +{\tiny Written as low-pass of the adaptation step ($m_k = w_{k\po}-w_k$): +\begin{align*} +m_k &\gets \b_k m_{k\1} - \a_k \na f_i(w_k) \comma w_{k\po} \gets w_k + m_k +\end{align*} +Recommended version, easier to tune with constant beta $\b$ and decay $\a_k=\a_0/(1+\l k)$: +{\color{blue} +\begin{align*} +m_k &\gets \b~ m_{k\1} - (1-\b)~ \a_k \na f_i(w_k) \comma w_{k\po} \gets w_k + m_k +\end{align*} +} + +}\pause + +\item Nesterov Accelerated Gradient (``Nesterov Momentum''): +\begin{align*} +\tilde w_k +&\gets w_k + \b_k ( w_k - w_{k\1} ) \\ +w_{k\po} +&\gets \tilde w_k - \a_k \na f_i(\tilde w_k) +\end{align*} + +{\tiny Yurii Nesterov (1983): \emph{A method for solving the convex programming problm with convergence rate $O(1/k^2)$} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Adam} +\slide{Adam}{ + +\item Adam: A Method for Stochastic Optimization (DP. Kingma, J. Ba) arXiv:1412.6980 + +~ + +``Our method is designed to combine the advantages +of two recently popular methods: AdaGrad (Duchi et al., 2011), which works well with sparse gra- +dients, and RMSProp (Tieleman \& Hinton, 2012), which works well in on-line and non-stationary +settings'' + +~ + +(Roughly, Adam = cleaner version of RMSprop with momentum.) + +~ + + +\item Prove convergence rate +$$ +\frac{1}{T}~ \sum_{k=1}^T [f(w_k) - f(w^*)] \le O(1/T) +$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Adam}{ + +\show[.75]{adam} +{\tiny(all operations interpreted element-wise) \hfill arXiv:1412.6980} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Adam \& Nadam}{\label{lastpage} + +\item Adam interpretations (everything element-wise!): +\begin{items} +\item $m_t \approx \$ the mean gradient in the recent iterations +\item $v_t \approx \$ the mean gradient-square in the recent iterations +\item $\hat m_t, \hat v_t$ are bias corrected (check: in first iteration, $t=1$, we have $\hat m_t = g_t$, unbiased, as desired) +\item $\D \t \approx - \frac{\a}{\sqrt{\}}~ g$ \emph{would} be a Newton step if $\sqrt{\}$ \emph{were} the Hessian... +\end{items} + +~\pause + +\item Incorporate Nesterov into Adam: Replace parameter update by +$$\t_t \gets \t_{t\1} - \a/(\sqrt{\hat v_t}+\e) \cdot (\b_1 \hat m_t + \frac{(1-\b_1)g_t}{1-\b_1^t})$$ + +{\tiny Dozat: \emph{Incorporating Nesterov Momentum into Adam}, ICLR'16} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Appendix: Convergence \& Convergence Rate}{ + +\small + +\item Convergence: $\lim x_k = x^* ~\iff~ \forall \e>0:~ \exists K:~ \forall k>k:~ |x_k -x^*| \le \e$ + +\item Convergence Rate: $\lim_{k\to\infty} \frac{x_{k\po} - x^*}{x_k - x^*} = \mu$ + +\item We care about convergence of the gradient $\lim_{k\to\infty} |g_k| = 0$ to zero + +~\pause + +\item Typically you try to prove a step-wise decrease inequality, e.g.: +$$|g_{k\po}| \le \m~ |g_k|$$ +We call this ``convergence with rate $\m$'', which is also called linear convergence (``convergence with linear step-wise reduction'') or exponential convergence, as we have $|g_k| \le O(\m^k)$. + + +~ + +\item Or one directly finds a converging upper bound, e.g. +$$|g_k| \le O(1/k) $$ +We call this ``converges to zero with 1/k'', but not with a constant (``linear'') rate, but slower. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/13-derivativeFree.tex b/Optimization/13-derivativeFree.tex new file mode 100644 index 0000000..f8fc596 --- /dev/null +++ b/Optimization/13-derivativeFree.tex @@ -0,0 +1,244 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Derivative-Free (Black-Box) Optimization} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Derivative-Free (Black-Box) Optimization}{ + +\item Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, ~ find +\begin{align*} +\argmin_x~ & f(x) +\end{align*} + +\item Derivative-Free/Blackbox optimization: +\begin{items} +\item No access to $\na f$ or $\he f$, sometimes also noisy evaluations $f(x)$ +\end{items} + +\pause + +\item Algorithms needs to collect \emph{data} $D$ about $f$, and decide on next queries + +~ + +\item Many variants: +\begin{items} +\item Classical derivative-free, implicit filtering, model-based optimization +\item Heuristics: Nelder-Mead, Coordinate search, Twiddle, Pattern Search +\item Stochastic Search, evolution strategies, EDAs, other EAs +\item Bayesian Optimization, Global Optimization +\item others? +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Implicit filtering} +\slide{Implicit Filtering}{ + +\item Estimates the local gradient using finite differencing +$$\na_\e f(x) \approx \[\frac{1}{2\e} (f(x+\e e_i) - f(x-\e +e_i))\]_{i=1,..,n}$$ + +\item Lines search along the gradient; if not succesful, decrease $\e$ + +\item Can be extended by using $\na_\e f(x)$ to update an +approximation of the Hessian (as in BFGS) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based optimization}{ +\tiny +following Nodecal et al.\ ``Derivative-free optimization'' +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Model-based optimization} +\slide{Model-based optimization}{ + +\item The previous stochastic serach methods are heuristics to update +$\t$ + +\cen{\emph{Why not store the previous data directly?}} + +~ + +\item Model-based optimization takes the approach +\begin{items} +\item Store a data set $\t=D=\{(x_i,y_i)\}_{i=1}^n$ of previously +explored points + +(let $\hat x$ be the current minimum in $D$) +\item Compute a (quadratic) model $D\mapsto \hat f(x) = \phi_2(x)^\T\b$ +\item Choose the next point as +$$x^+ = \argmin_x \hat f(x) \st |x-\hat x|<\a$$ +\item Update $D$ and $\a$ depending on $f(x^+)$ +\end{items} + +\item The $\argmin$ is solved with constrained optimization methods + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based optimization}{ + +\begin{algo} +\State Initialize $D$ with at least $\half (n+1)(n+2)$ data points +\Repeat +\State Compute a regression $\hat f(x) = \phi_2(x)^\T\b$ on $D$ +\State Compute $x^+ = \argmin_x \hat f(x) \st |x-\hat x|<\a$ +\State Compute the improvement ratio $\r = \frac{f(\hat x)-f(x^+)}{\hat +f(\hat x)-\hat f(x^+)}$ +\If{$\r>\e$} +\State Increase the stepsize $\a$ +\State Accept $\hat x \gets x^+$ +\State Add to data, $D \gets D \cup \{(x^+,f(x^+))\}$ +\Else +\If{$\det(D)$ is too small} \Comment{Data improvement} +\State Compute $x^+ = \argmax_x \det(D\cup\{x\}) \st |x-\hat x|<\a$ +\State Add to data, $D \gets D \cup \{(x^+,f(x^+))\}$ +\Else +\State Decrease the stepsize $\a$ +\EndIf +\EndIf +\State Prune the data, e.g., remove $\argmax_{x\in\D} \det(D\setminus\{x\})$ +\Until $x$ converges +\end{algo} +\tiny +\item \textbf{Variant:} Initialize with only $n+1$ data points and fit +a linear model as long as $|D|<\half (n+1)(n+2) = \dim(\phi_2(x))$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based optimization}{ + + +\item Optimal parameters ~ (with data matrix $X\in\RRR^{n\times\dim(\b)}$) +$$\hat \b^{\text{ls}} = (\vec X^\T \vec X)^\1 \vec X^\T y$$ The +determinant $\det (\vec X^\T \vec X)$ or $\det(\vec X)$ (denoted +$\det(D)$ on the previous slide) is a measure for well the data +supports the regression. The data improvement explicitly selects a +next evaluation point to increase $\det(D)$. + +\item Nocedal describes in more detail a geometry-improving procedure to update $D$. + +~ + +\item Model-based optimization is closely related to Bayesian approaches. But +\begin{items} +\item Should we really prune data to have only a minimal set $D$ (of +size $\dim(\b)$?) +\item Is there another way to think about the ``data improvement'' +selection of $x^+$? ($\to$ maximizing uncertainty/information gain) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Nelder-Mead simplex method} +\slide{Nelder-Mead method -- Downhill Simplex Method}{ + +\show[.4]{downsimplex} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Nelder-Mead method -- Downhill Simplex Method}{ + +\item Let $x\in\RRR^n$ + +\item Maintain $n+1$ points $x_0,..,x_n$, sorted by +$f(x_0)<...f(x_{n\1})$:~ Contract: $y=c + \r (c-x_n)$ +\item If still $f(y)>f(x_n)$:~ Shrink $\forall_{i=1,..,n} x_i \gets +x_0 + \s(x_i-x_0)$ + +~ + +\item Typical parameters: $\a=1, \g=2, \r=-\half, \s=\half$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Coordinate search} +\slide{Coordinate Search}{ + +\begin{algo} +\Require Initial $x\in\RRR^n$ +\Repeat +\For{$i=1,..,n$} +\State $\a^* = \argmin_\a f(x+\a \vec e_i)$ \Comment{Line Search} +\State $x \gets x+\a^* \vec e_i$ +\EndFor +\Until $x$ converges +\end{algo} +\item The LineSearch must be approximated +\begin{items} +\item E.g.\ abort on any improvement, when $f(x+\a \vec e_i)f(x)$ -- but better viewed as sampling technique (see next page) + +~ + +\begin{algo} +\Require initial point $x$ ($\equiv\t$), function $f(x)$, \textbf{proposal distribution} $q(y|x)$ ($\equiv p_x(y)$) +\State initialilze the temperature $T=1$ +\Repeat +\State Sample single $y \sim q(y|x)$ +\State Acceptance probability $A +=\min\big\{1,~ e^{\frac{f(x)-f(y)}{T}} \frac{q(x|y)}{q(y|x)}\big\}$ +%=\min\big\{1,~ \frac{e^{-f(y)/T} q(x|y)}{e^{-f(x)/T} q(y|x)}\big\} +\State With probability $A$ update $x \gets y$ +\State Decrease $T$, e.g.\ $T \gets (1-\e) T$ for small $\e$ +\Until $x$ converges +\end{algo} + +\item Typically: $q(y|x) \propto \exp\{-\half(y-x)^2/\s^2\}$ + +\item Instance of our general scheme for $x\equiv \t$, $p_\t(x) \equiv q(x|\t)$, $\l=1$, update stochastic as above + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Simulated Annealing}{ + +\small + +\item Simulated Annealing is a Markov chain Monte Carlo (MCMC) method. +\begin{items} +\item Must read!: \emph{An Introduction to MCMC for Machine Learning} +\item These are iterative methods to sample from a distribution, in +our case +$$p(x) \propto e^{\frac{-f(x)}{T}}$$ +\end{items} + +\item For a fixed temperature $T$, one can prove that the set of +accepted points is distributed as $p(x)$ (but non-i.i.d.!) The acceptance probability +$$A=\min\big\{1,e^{\frac{f(x)-f(y)}{T}} \frac{q(x|y)}{q(y|x)}\big\}$$ +compares the $f(y)$ and $f(x)$, but also the reversibility of $q(y|x)$ + +\item When cooling the temperature, samples focus at the extrema. +Guaranteed to sample all extrema \emph{eventually} + +%% \item Of high theoretical relevance, less of practical + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Simulated Annealing}{ + +\show[.5]{simulatedAnnealing} +{\tiny\hfill [MCMC introduction (2003)]} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Stochastic search conclusions}{\label{lastpage} + +\begin{algo} +\Require initial $\t$, function $f(x)$, distribution model $p_\t(x)$, update heuristic $h(\t,D)$ +\Ensure final $\t$ and best point $x$ +\Repeat +\State Sample $\{x_i\}_{i=1}^\l \sim p_\t(x)$ +\State Evaluate samples, $D= \{(x_i,f(x_i))\}_{i=1}^\l$ +\State Update $\t \gets h(\t,D)$ +\Until $\t$ converges +\end{algo} + +\item The framework is very general + +\item Algorithms differ in choice of $\t$, $p_\t(x)$, and $h(t,D)$ + +\item The update $h(\t,D)$ ``should train the distribution $p_\t(x)$ to match good points'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/15-RL.tex b/Optimization/15-RL.tex new file mode 100644 index 0000000..1d1c284 --- /dev/null +++ b/Optimization/15-RL.tex @@ -0,0 +1,327 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Reinforcement Learning \& Optimization} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Reinforcement Learning is an optimization problem -- how far can we get with standard optimization approaches rather than specialized RL methods? + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Reinforcement Learning Basics}{ + +\item \emph{The world:} An MDP $(\SS, \AA, P, R, P_0, \g)$ with state space $\SS$, action space $\AA$, transition probabilities $P(s_{t\po} \| s_t,a_t)$, reward fct $R(s_t,a_t)$, initial state distribution $P_0(s_0)$, and discounting factor $\g\in[0,1]$. + +\pause + +\item \emph{The agent:} A policy $\pi(a_t|s_t)$. + +~\pause + +\item Together they define the path distribution $(\xi=(s_{0:T\po},a_{0:T}))$ +\anchor{10,-40}{\showh[.25]{mdp1}} +$$P_\pi(\xi) = P(s_0)~ \prod_{t=0}^T \pi(a_t|s_t)~ P(s_{t\po}|s_t,a_t)\qquad\qquad$$ + +\pause + +and the \textbf{expected total return} +$$J(\pi) = \EEE_{\xi\sim P_\pi}\big\{\underbrace{\tsum_{t=0}^\infty \g^t R(s_t,a_t)}_{R(\xi)}\big\} += \int_\xi P_\pi(\xi)~ R(\xi)~ d\xi$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Reinforcement Learning Basics}{ + +\item We assume the policy $\pi_\t(a|s)$ is parameterized by some $\t\in\RRR^n$ + +\item The problem is +$$\max_\t J(\t) \qquad\text{or}\qquad \max_\t \int_\xi P_{\t}(\xi)~ R(\xi)~ d\xi $$ + +\pause + +\begin{items} +\item $J(\t)$ is just a function we want to optimize +\item $J(\t)$ is a ``weighted sum'' over all paths (cf.\ additive cost function \& SGD) +\item We can't really compute/evaluate $f(\t)$ exactly -- we can only get a sample $\xi\sim P_{\t}$ and $R(\xi)$ in each iteration (cf.\ SGD case!) +\item Different: $\sum_i f_i(x)$ $\oto$ fixed distribution over $i$; $\int_\xi P_\t(\xi) R(\xi)$ $\oto$ non-stationary distribution over $\xi$ +%% \item If we don't have a gradient, this is a \textbf{stochastic black box optimization problem} +\end{items} + +~\pause + +\textbf{Can knowing about the MDP process simplify the optimization problem?} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\textbf{Can knowing about the MDP process simplify the optimization problem?} + +~ + +\item Yes, in at least 2 ways: + +~ + +\item Bellman optimality -- we understand sth.\ about the optimal policy beyond KKT + +\item Policy gradients -- we can derive gradients + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bellman optimality condition}{ + +\item In general optimization, optima $x^*$ are only characterized by KKT, or stationarity + +\pause + +\item When $\max_\t J(\t)$, we know another \emph{condition of optimality}: \textbf{Bellman optimality} +\begin{items} +\item The value function $V^*(x)$ over state space fulfills +$$V^*(s) = \max_a \[ R(s,a) + \g \Exp[s'|s,a]{ V^*(s') } \]$$ +\item Knowing that function implies the optimal policy $\pi^*$ +\pause +\item But that also raises a problem! If $\pi_\t$ is parameteric! And/or $V(s)$ is parameteric! We raise extra function approximation problems. Read: + +\cit{Lagoudakis \& Parr}{Least-squares policy iteration}{JMLR 2003} +\end{items} + +\pause + +\item The Bellman optimality condition truely exploits the MDP structure, and gives further conditions on the optimum beyond stationarity of $J(\t)$. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Learning (=optimizing) while collecting more and more data +\begin{items} +\item Unusual from the optimization perspective $\oto$ instable ``target'' (objective, $\xi$-distribution) +\item Leads to breadth of RL-methodologies (model-based/model-free RL, TD-, Q-learning, etc) +\end{items} + +~\pause + +\item But there are also trends to avoid this +\begin{items} +\item ``Offline RL'', classical system identification, model-based RL +\item separating data collection issue from optimization issue +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Stochastic Policy Gradient}{ + +\item Recall + +$$J(\t) = \int_\xi P_{\t}(\xi)~ R(\xi)~ d\xi$$ + +\item We have +{\small\begin{align*} +\na_\t J(\t) +&= +\na_{\t} +\int P_\t(\xi)~ R(\xi)~ d\xi += \int P_\t(\xi) \na_{\t} \log P_\t(\xi) R(\xi) d\xi \\ +\hspace*{-5mm} +&= +\Exp[\xi|\t]{\na_{\t} \log P_\t(\xi) R(\xi)} + = \Exp[\xi|\t]{\tsum_{t=0}^H \na_\t \log\pi(a_t|s_t) R(\xi)} \\ +&= +\EEE_{\xi|\t}\bigg\{ \tsum_{t=0}^H \na_\t \log\pi(a_t|s_t)~ \g^t + \underbrace{\tsum_{t'=t}^H \g^{t'-t} r_{t'}}_{\hat Q_{\xi,t}}\bigg\} +\end{align*}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deterministic Policy Gradient}{ + +\item However, in practise, policies are often not stochastic. Esp.\ neural networks. We have $a = \pi_\t(s) \in\RRR^d$, parameterized by $\t$. What is the correct gradient then? + +\item As introduced in reference [2]: +\begin{align*} +\na_\t J(\t) +&= +\Exp[s\sim P_{\t}]{\na_\t \pi_\t(s) ~\na_a Q^{\pi_\t}(s,a)\big|_{a=\pi_\t(s)}} +\end{align*} +(NOTE: unusual convention about Jacobians... I'd write it $\del_a Q^{\pi_\t}(s,a) \del_\t \pi(s)$ ) + +\cit{Silver et al}{Deterministic policy gradient algorithms}{2014} + +~\pause + +\item So we in principle also have a gradient! But very noisy! Better: D4PG + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusions}{ + +\item \textbf{Can knowing about the MDP process simplify the optimization problem?} Yes: +\begin{items} +\item Bellman optimality, gradients +\item interleaved learning/optimization and data collection +\item Esp.\ if ``reward signal'' is informative beyond total return (dense rewards) +\end{items} + +~\pause + +\item \textbf{However,} reasons to ignore structure of underlying MPD: +\begin{items} +\item Avoid implied problems, e.g.\ by function approximation, value estimation, policy iteration +\item very noisy gradient estimates +\item Robustness to mis-assumptions +\end{items} +\item $\to$ black-box or \textbf{derivative-free optimization} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +\item Salimans, T., Ho, J., Chen, X., Sidor, S., \& Sutskever, I. (2017). Evolution strategies as a scalable alternative to reinforcement learning. arXiv preprint arXiv:1703.03864. + +\item Such, F. P., Madhavan, V., Conti, E., Lehman, J., Stanley, K. O., \& Clune, J. (2017). Deep neuroevolution: Genetic algorithms are a competitive alternative for training deep neural networks for reinforcement learning. arXiv preprint arXiv:1712.06567. + +\item Stulp, F., \& Sigaud, O. (2013). Robot skill learning: From reinforcement learning to evolution strategies. Paladyn, Journal of Behavioral Robotics, 4(1), 49-61. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show{openai-ES1} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item The ES they employ: + +~ + +\show{openai-ES3} + +\begin{items} +\item Is an instance of our ``General Stochastic Search'' scheme: + +\quad $\t$ is the mean; $\l=n$ samples $x_t \sim \NN(\t, \s^2 I)$; evaluations $f(x_i)$ + +\item The update is more like a stochastic gradient step rather than selection + +\quad In expectation, $F_i\e_i \dot= (F_\t + \na F^\T \s\e_i)\e_i \approx 0 + \s \na F$. + +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item \small Ratio of ES timesteps to TRPO timesteps needed to reach various percentages of TRPO's learning progress at 5 million timesteps: + +~ + +\show{openai-ES2} + +} + +%% go through paper + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show{clune-ES3} + +~ + +\cen{\emph{(Do you spend your time training nets, or simulating?)}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show{clune-ES1} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show[.5]{clune-ES2} + +~ + +\item Conclusion: It varies from problem to problem what is better. + +And it is suprising that ``naive'' black-box ES can beat elaborate RL-methods + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusions}{\label{lastpage} + +\item Overall, it is not so clear at all whether RL is actually better than black-box/derivative-free optimization + +\item For small problems where we have little function approximation or noisy gradient problems, yes; but for large scale problems? + +~ + +\item For discussion: +\begin{items} +\item If you have a problem with dense rewards and smooth dynamics...? +\pause +\item If you have a sparse reward problem, but with smooth/easy dynamics...? +\pause +\item If you have a sparse reward problem with hard dynamics...? +\end{items} + +~\pause \small + +\item RL-methods rely on reward signals/gradients that can be ``propagated'' through time/steps (credit assignment, Q-learning, Bellman) + +\item Black-box search is ignorant to this, sometimes to the better + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/16-noFreeLunch.tex b/Optimization/16-noFreeLunch.tex new file mode 100644 index 0000000..0a5ad6c --- /dev/null +++ b/Optimization/16-noFreeLunch.tex @@ -0,0 +1,468 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{No Free Lunch} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +\item Toussaint: \emph{The Bayesian Search Game}. In Theory and Principled Methods for Designing Metaheuristics, Springer, 2012. + +\item Igel \& Toussaint: \emph{On Classes of Functions for which No Free Lunch Results Hold}. Information Processing Letters, 86, p.\ 317-321, 2003. + +\item Wolpert \& Macready. \emph{No free lunch theorems for optimization}. IEEE Transactions on Evolutionary Computation, 1(1):67–82, 1997. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{No Free Lunch (NFL) Theorem} +\slide{No Free Lunch Theorem -- Problem Setting}{ + +{\tiny [Following \emph{The Bayesian Search Game} (2012)]} + +\item Finite(!) space $X$ + +\item Distribution $P(f)$ over functions $f:~ X \to Y$ + +\item A \textbf{non-revisiting} algorithm $\AA$ generates queries $x_t$ and observations $y_t = f(x_t)$. Formally, a probabilistic algorithm is defined by +$$P(x_t \| x_{1:t\1}, y_{1:t\1}; \AA)$$ +and $P(x_1 ; \AA)$. + +~\pause\small + +\item Therefore, $\AA$ interacting with random function $f$ generates the joint process: +\begin{align*} +P(f,x_{1:T},y_{1:T};\AA) +&= P(f)~ P(y_1 \| x_1,f)~ P(x_1;\AA)~ + \prod_{t=2}^T P(y_t \| x_t,f)~ P(x_t \| x_{1:t\1},y_{1:t\1};\AA) +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{No Free Lunch Theorem}{ + +\item \textbf{Theorem:} +\begin{align} +&\exists h:Y\to\RRR ~~\text{s.t.}~~ \forall K\in\NN^+, \{x_1,..,x_K\} \subset X:~ + P(f_{x_1},..,f_{x_K}) = \prod_{k=1}^K h(f_{x_k}) \label{nflL}\\ + &\qquad \Longleftrightarrow \qquad \forall_\AA, \forall_T:~ P(y_{1:T};\AA) = \prod_{i=1}^T h(y_i) \quad \text{(independent of $\AA$) } \label{nflR} +\end{align} + +\item In words: + +\cen{$P(f)$ factorizes $\quad\iff\quad$ all $\AA$ generate the same random observations} + +~\tiny + +[Proof later] + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{No Free Lunch Theorem -- Comments}{ + +\item Interpreting the LHS: +\begin{items} +\item $P(f_{x_1},..,f_{x_K}) = \prod_{k=1}^K h(f_{x_k})$ factorizes i.i.d.\ +\item \textbf{There is no mutual information between any $f(x_1), f(x_2), x_1\not=x_2$}, $I(f(x_1), f(x_2)) = 0$ +\item Observing $f(x_1)$ reveals no information whatsoever on what $f(x_2)$ might be +\item Any (non-repeating!) algorithm is equally blind and uninformed about what future observations might be, not matter how it collected past information $(x_{1:t\1}, y_{1:t\1})$ +\end{items} + +~\pause\small + +\item Often we have a performance metric (see later); but ``all observations $P(y_t\|...;\AA)$ are indep.\ of $\AA$'' is stronger and implies equal expected performance with whatever metric + +\item Traditional statement: ``Averaged over \emph{all} problem instances, any algorithm performs equally. (E.g.\ equal to random.)'' + +\item ``there is no one algorithm that works best for every problem'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{No Free Lunch Theorem -- Comments}{ + +\item The classical citation is Wolpert \& Macready (1997), but is less general than the above and proof overly complicated and less clear in my view. + +\begin{items} +\item ``Averaging over all problems'' $\to$ expectation w.r.t.\ $P(f)$ +\item ``set of functions closed under permutation'' $\to$ $P(f)$ factorizes +\item Our Theorem is strong $\iff$, not just $\To$ (Igel \& Toussaint, 2004) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{NFL Proof} +\slide{NFL Proof}{ + +\item We defined the process $P(f,x_{1:T},y_{1:T};\AA)$ previously + +\item Basic definitions of probabilities to prove $\To$: +\begin{align*} \label{eq4} +P(y_t \| x_{1:t\1},y_{1:t\1};\AA) +&= \sum_{x_t \in X} \[\sum_f P(y_t \| x_t,f)~ P(f \| x_{1:t\1},y_{1:t\1})\]~ P(x_t \| x_{1:t\1},y_{1:t\1};\AA) \feed +&= \sum_{x_t \in X} P(f_{x_t}\=y_t \| x_{1:t\1},y_{1:t\1})~ P(x_t \| x_{1:t\1},y_{1:t\1};\AA) \feed +&= \sum_{x_t \in X} h(y_t)~ P(x_t \| x_{1:t\1},y_{1:t\1};\AA) = h(y_t) ~. +\end{align*} +Last line: $\AA$ is non-revisiting, and $P(f_{x_t}\=y_t \| +x_{1:t\1},y_{1:t\1}) = P(f_{x_t}\=y_t) = h(y_t)$. + +~\pause + +\item Prove $\oT$ by explicitly constructing algorithms that generate different outputs when $P(f)$ is non-factored. +{\tiny [Details in \emph{The Bayesian Search Game}, 2012]} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{No Free Lunch for Optimization}{ + +\item Consider the problem $\min_{x\in X} f(x)$ for finite $X$ + +\item Also here, an algorithm $\AA$ is defined by $P(x_k \| x_{1:t\1}, y_{1:t\1}; \AA)$ + +\item A typical performance metric could be \defn{regret} +$$R(T) = \sum_{t=1}^T y_t - y^*$$ + +~\pause + +\item But if for a non-repeating(!) $\AA$, $P(y_t)$ is indep.\ of $\AA$, so is the expected regret + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{No Free Lunch for Machine Learning}{ + +\item Given data $D = \{ (x_i, y_i) \}_{i=1}^n$, find a predictor $\hat f:~ X \to y$ that minimizes expected loss $\Exp{\ell(\hat f(x^*), f(x^*))}$ for a future query $x^*$, where $f(x^*)$ is the ground truth + +\item A learning algorithm $\AA$ is a predictive distribution $P(y \| x^*, D; \AA)$ + +(i.e., a mapping from $D$ to a prediction $P(y \| x^*)$ for a new query $x^*$) + +\item Assume $X$ is finite and $x^* \not\in D$ (non-repeating!) + +~ + +\item But if $P(f)$ factorizes so that $P(f(x^*)\=y) = h(y)$ is fully independent from $D$ (zero mutual information), then no algorithm can learn anything or predict better than the prior. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bayes' Theorem}{ + +{\Large\centering + +$$ +P(X|D) = \frac{P(D|X)}{P(D)}~ P(X) +$$ + +~ + +{$\text{posterior} ~=~ +\frac{\text{likelihood} ~\cdot~ \text{prior}}{\text{normalization}}$\quad} + +} + +~\normalsize + +\item But if $X$ is indep.\ from $D$, then there is nothing to learn or predict better than the prior $P(X)$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Conclusions from NFL?}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item NFL is an almost trivial theorem, what is non-trivial is what to make of it + +~\pause + +\item First pressing question: +\begin{items} +\item Does NFL also hold for continuous $X$? What would it mean that $P(f)$ is factorized, or $I(f(x_1), f(x_2)) = 0$, for any $x_1\not= x_2$ in continous $X$? +\end{items} + +\pause + +\item Thoughts on conclusions from NFL: +\begin{items} +\item Become aware, in your methods, what actually you are assuming - you must assume something +\item Fight back if anybody ever states ``we don't (want to) make assumptions'' (e.g.\ in a talk on RL that claims it can solve any problem without assumptions) +\item There is no Artificial General Intelligence if general would mean ``making NO assumptions''. So, the AGI community (say, Marcus Hutter) must make some assumptions -- what are they \emph{exactly}? +\item What are assumptions we would ``generally'' accept to make in our physical universe? (In case we care about AI specifically in our physical universe.) +\item What are algorithms that literally start by making assumptions about $P(f)$ and then derive an optimal algorithm for that $P(f)$? (see Bayesian Search Game...) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{NFL in continuous domains} +\key{Gaussian Processes} +\slide{NFL in continuous domains}{ + +\item The LHS describes $P(f)$ with $I(f(x_1), f(x_2)) = 0$ for any $x_1\not= x_2$ +\begin{items} +\item How can we define probability distributions over functions (over continuous $X$) in the first place? +\end{items} + +~\pause + +\item A typical way to define distributions over $f:\RRR^n \to \RRR$ is as a \defn{Gaussian Process}: +\begin{items} +\item For every finite set $\{x_1,..,x_M\}$, the function values +$f(x_1),..,f(x_M)$ are Gaussian distributed with mean and covariance +\begin{align*} +&\Exp{f(x_i)} = \mu(x_i) \qquad\text{(often zero)} \\ +&\Exp{[f(x_i)-\m(x_i)][f(x_j)-\mu(x_j)]} = k(x_i,x_j) +\end{align*} +where, $\mu(x)$ is called \textbf{mean function}, and $k(x,x')$ is called \defn{covariance function} +\item $\mu$ and $k$ generalize the notion of \emph{mean vector} $\mu_x$ and \emph{covariance matrix} $\S_{xx'}$ from finite $x\in\{1,..,n\}$ to continuous $x\in\RRR^n$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GP examples}{ + +\show[.6]{gaussianProcess1} +{\tiny\hfill(from Rasmussen \& Williams)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{}{ +%% \show[.6]{BayesianPredictiveDistribution} +%% {\tiny\hfill(from Bishop)} +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GP examples: different covariance functions}{ + +~ + +\show[.6]{gaussianProcess2} +{\tiny\hfill(from Rasmussen \& Williams)} + +~ + +\item These are examples from the $\g$-exponential covariance function + +$$k(x,x') = \exp\{-|(x-x')/l|^\g\}$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{NFL in continuous domains}{ + +\item Back to NFL: the LHS requires $I(f(x_1), f(x_2)) = 0$, which would mean, for GPs, zero covariance function $k(x,x')=0$ for any $x\not=x'$ + +~\pause + +\item At first sight this might seem ok, but +\begin{items} +\item Auger \& Teytaud clarify that ``zero-covariance GP'' is not a proper Lebesgue measure over function +\item Conversely, they state that for any Lebesgue meassure the LHS does not hold (and claim that Lebesgue meassures are the only sensible kind of $P(f)$) +\end{items} + +\cit{A. Auger and O. Teytaud}{Continuous lunches are free plus the design of optimal optimization +algorithms}{Algorithmica, 2008} + +~\pause\small + +\item Beyond my expertise as non-mathematician +\item But the point of NFL remains the same: one would only have to replace ``non-revisiting'' by ``non-near-revisiting'' or so. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{NFL in continuous domains -- conclusions}{ + +\item Whether NFL holds in continuous domains depends on what $P(f)$ you consider mathematically sound + +\item The core point remains that if $I(f(x_1), f(x_2))=0$ (for non-close $x_1,x_2$), no non-(near)-revisiting algorithm can be smart + +~ + +\item Gaussian Processes are the simplest instance for assuming non-zero $I(f(x_1), f(x_2)) \not= 0$, by assuming Gaussian dependencies between $x\not=x'$ + +$\To$ GPs became a standard assumption to explicitly design algorithms exploiting that assumption and evading NFL + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\emph{Become aware, in your methods, what actually you are assuming - you must assume something} + +~ + +\item What did our optimization algorithms assume so far? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Assumptions in continuous optimization}{ + +\item $f$ is continously differentiable $f\in C^1$! +\begin{items} +\item The limits exist! Clearly there are ``correlations'' when approaching infinitesimally! +\item Sure we can predict to (infinitesimally close) points: The gradient gives an accurate 1st order Taylor prediction (in the vicinity) +\item We can predict to go downhill following the gradient. +\item All this would not be possible with NFL assumptions. +\end{items} + + +\pause + +\item Lipschitz continuity of $\na f(x)$ ~ (assumption of SGD convergence) + +\pause + +\item Strong convexity assumption (eigenvalues $\l$ of the Hessian $\he f(x)$ bounded by $m < \l < M$) ~ (exponential convergence of line search) + +~\pause + +\item All assumptions are \emph{local}, and were used to characterize local convergence behavior + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Assumptions made in AGI}{ + +\item Kolmogorov \& Solomonoff complexity + +(also not my expertise...) + + +\cit{Lattimore \& Hutter}{No free lunch versus Occam's razor in supervised learning}{In Algorithmic Probability and Friends. Bayesian Prediction and Artificial Intelligence, 2013} + +\cit{Baum, Hutter, \& Kitzelmann}{Artificial general intelligence}{In Proceedings of the Third Conference on Artificial General Intelligence, 2010} + +~ + +\item Occam's rasor: $P(f)$ is higher for ``simpler'' functions $f$. Assuming all (relevant) $f$ are computable, simpler = of lower Kolmogorov/Solomonoff complexity. + +\item Obvious algorithm to exploit this universal prior: Sort all $f$ by complexity, test each in order -- will be better than random. + +\item Can also define optimal algorithms (optimal AGI) under this universal complexity prior + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\emph{What are assumptions we would ``generally'' accept to make in our physical universe? (In case +we care about AI specifically in our physical universe.)} + +~\pause + +\item Beyond full discussion here. Some thoughts: +\begin{items} +\item physics $\oto$ space$\times$time; things (fields/objects); local(!) interactions between things; invariances(!) +\pause +\item images $\oto$ invariances; neighboring pixels correlated $\oto$ convolutional features, hierarchies, CNN +\item time series $\oto$ Markovian, maybe smooth $\oto$ HMMs, MDPs, control, etc, etc +\item Robotics, Language, Text, humans, animals, etc etc +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\emph{What are algorithms that literally start by making assumptions about $P(f)$ and then derive an +optimal algorithm for that $P(f)$?} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Optimal Optimization} +\slide{Optimal Optimization}{ + +\item Optimization can be formalized as a sequential decision problem (MDP): +\begin{items} +\item Start with a prior $b_0 = P(f)$ +\item Choose a query $x_t$ based on $b_t$ ~ (policy, acquisition function) +\item Query $x_t$, observe $y_t$, update data $D$, update belief $b_t \gets P(f\|D)$, iterate +\end{items} +\show[.6]{bsg} +{\tiny\hfill[Bayesian Search Game]} + +\pause + +\item This defines a \emph{known} decision process, for which we can define an optimal policy +\begin{items} +\item Can in principle be computed using Dynamic Programming -- but intractable +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bayesian Optimization in a nutshell}{ + +\item We maintain a particular belief $b_t = P(f\|D)$, namely a \emph{Gaussian Process} + +~\pause + +\item Don't plan an optimal query policy, but use a 1-step heuristic: + +\item An \defn{acquisition function} $\a(x, b_t)$ characterizes how ``interesting'' it is to query $x$ next, and defines the policy +$$x_t = \argmax_x \a(x, b_t)$$ + +\item Analogies: +\begin{items} +\item $\a(x, b_t)$ is a descriminative function for the next decision +\item $\a(x, b_t)$ is like a $Q$-function $Q(b_t,x)$ for the next decision (but not learned) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{\label{lastpage} + +to be continued with Bayesian Optimization... + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/Optimization/17-bayesOpt.tex b/Optimization/17-bayesOpt.tex new file mode 100644 index 0000000..b3f7bb9 --- /dev/null +++ b/Optimization/17-bayesOpt.tex @@ -0,0 +1,545 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} + +\renewcommand{\topic}{Bayesian Optimization} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{References}{ + +\item \emph{Information-theoretic regret bounds for gaussian process +optimization in the bandit setting} +Srinivas, Krause, Kakade \& Seeger, Information Theory, 2012. + +\item \emph{A taxonomy of global optimization +methods based on response surfaces} Jones, Journal of Global +Optimization, 2001. + +\item \emph{Explicit local models: Towards optimal optimization +algorithms}, Poland, Technical Report No. IDSIA-09-04, 2004. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sublecture{Global Optimization}{ + +\item Let $x\in\RRR^n$, $f:~ \RRR^n \to \RRR$, ~ find +\begin{align*} +\min_x~ & f(x) +\end{align*} + +\item Blackbox optimization: find a global optimium by sampling values +$y_t = f(x_t)$ +\begin{items} +\item No access to $\na f$ or $\he f$ +\item Observations may be noisy $y \sim \NN(y \| f(x_t), \s^2)$ +\end{items} + +~\pause + +\item Global Optimization = infinite Bandits, with infinite decision space, +$x\in\RRR^n$ +\begin{items} +\item Bandit problems are archetype for sequential decision making under uncertainty +\item Upper Confidence Bound (UCB) decisions have provably bounded regret! +\item Resolves exploration/exploitation ``dilemma'' +\item Bayesian Optimization (GP-UCB) transfers bandits to continuous decisions $x\in\RRR^n$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Random restarts} +\slide{Random Restarts ~ (run downhill multiple times)}{ + +\item first the most basic approach... + +~\pause + +\item We assume to have a start distribution $q(x)$, and restart greedy search: + +\begin{algo} +\Repeat +\State Sample $x\sim q(x)$ +\State $x \gets \texttt{GreedySearch}(x)$ or +$\texttt{StochasticSearch}(x)$ +\State \textbf{If} $f(x)0$ and upper bounded by $M>m$, with $m,M\in\RRR$. +Recall that the 2nd-order Taylor approximation of $f(y)$ around $x$ is +$$f(y) \approx f(x) + \na f(x)^\T(y-x) + \half (y-x)^\T \he f(x) (y-x)$$ +\begin{enumerate} +\item Analogous to the 2nd Taylor, provide an upper and lower bound + of $f(y)$, using the upper and lower curvatures $M$ and $m$, + respectively. This tells us that the function $f(y)$ is ``squeezed'' + between a lower bound paraboloid with minimal curvature, and an + upper bound paraboloid with maximal curvature, which ``touch'' each + other at location $x$ with value $f(x)$ and gradient $\na f(x)$. + +\item Find the minima of both, the upper and lower bound + paraboloids. Then prove that for any $x\in\RRR^n$ it holds + $$f(x) - \frac{1}{2m} |\na f(x)|^2 + \le f_\Min + \le f(x) - \frac{1}{2M} |\na f(x)|^2 ~.$$ + as well as + $$|\na f(x)|^2 \ge 2m(f(x) - f_\Min) ~.$$ + +\item Consider backtracking line search with Wolfe parameter $\lsstop\le\half$, + and step decrease factor $\adec$. Assume that + $\a \le \frac{1}{M}$. Prove that the step $x+\a\d$ fulfills the + Wolfe condition (is sufficiently decreasing the function) and + therefore line search terminates. + +\item Also argue that, if $\a$ is initially large but then repeatedly + decreased with $\a \gets \adec \a$, line search terminates for some + $\a$ within $\frac{\adec}{M} \le \a \le \frac{1}{M}$. + +\item Conclude the prove by showing that line search stops at a point $y$ for which + $$f(y) \le f(x) - \frac{\lsstop\adec}{M} |\na f(x)|^2 ~.$$ and + $$f(y) - f_\Min \le \[1-\frac{2m\lsstop\adec}{M}\]~ (f(x) - f_\Min) ~.$$ +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e02-newtonMethod.tex b/Optimization/e02-newtonMethod.tex new file mode 100644 index 0000000..78857a3 --- /dev/null +++ b/Optimization/e02-newtonMethod.tex @@ -0,0 +1,66 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercise 2} + +\exercises + +\providecommand{\Min}{\text{Min}} + +\excludecomment{solution} +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\exsection{Gradient Descent} + +Consider the quadratic function $f(x) = x^\T A x + b^\T x + c$ +with $A\in\RRR^{n\times n}$ symmetric and positive definite, +$b\in\RRR^n$ and $c\in\RRR$. Starting at $x_0$, we do a line search +using the gradient direction, i.e. $x' = x_0 - \alpha \nabla +f(x_0)$. In this exercise, instead of doing backtracking, we can do +exact line search, i.e., compute the optimal step length using the +analytical expression of the quadratic function. Which is the best +step size $\alpha$? + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Newton Step} + +\begin{enumerate} + +\item Consider the quadratic function $f(x) = \half x^\T A x + b^\T x + c$ with $A\in\RRR^{n\times n}$ symmetric and positive definite, +$b\in\RRR^n$, $c\in\RRR$. Which $x_\Min$ minimizes $f(x)$? At a given location $x$, what is the Newton step $\d$ that solves $\nabla^2 f(x)\delta = -\nabla f(x)$? How many iterations are required to reach $x_\Min$ if we take full Newton steps $x' = x + \delta $? + + +\item A fixed-stepsize Newton method iterates $x \gets x + \a \d$, for constant stepsize $\a\in[0,1]$. Write down an explicit equation for the Newton iterates in the quadratic case of part a), i.e.\ find +$x_k = \ldots$ for the $k$-th iterate which only depends on $A, b, c, \a$ +and $x_0$. For which values of $\a$ does it converge? How fast does it converge? + + +%% \item Given a general function $f(x)$, show that an infinitesimal Newton step $x' = x_0 + \alpha \delta$ with $ \alpha \to 0, \delta = - \nabla^2 f(x_0) ^{-1} \nabla f(x_0)$ always reduces the cost if the function is locally (around $x_0$) strongly convex (that is, $\nabla^2 f (x_0) $ is positive definite). + +\end{enumerate} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Levenberg-Marquardt regularization} + +Another small exercise to train you minimze a quadratic: Show that the regularized Newton step\\ $\d = -(\he f(x) + \l\Id)^\1 \na f(x)$ minimizes +\begin{align*} +\min_\d \[ \na f(x)^\T \d + \half \d^\T \he f(x) \d ++ \half \l \norm{\d}^2\] ~. +\end{align*} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e02-unconstrainedOpt.tex b/Optimization/e02-unconstrainedOpt.tex deleted file mode 100644 index 6e8f7d2..0000000 --- a/Optimization/e02-unconstrainedOpt.tex +++ /dev/null @@ -1,85 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{2} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Quadratics} - -Take the quadratic function $f_\text{sq} = x^\T C x$ with diagonal matrix $C$ -and entries $C(i, i)=\lambda_i$. - -~ - -a) Which $3$ fundamental shapes does a $2$-dimensional quadratic take? Plot -the surface of $f_\text{sq}$ for various values of $\lambda_1, \lambda_2$ -(big/small, positive/negative/zero). Could you predict these shapes before -plotting them? - -b) For which values of $\lambda_1, \lambda_2$ does $\min_x f_\text{sq}(x)$ -\emph{not} have a solution? For which does it have \emph{infinite} solutions? -For which does it have \emph{exactly} $1$ solution? Find out empirically -first, if you have to, then analytically. - -c) Use the eigen-decomposition of a generic (non-diagonal) matrix $C$ to prove -that the same $3$ basic shapes appear and that the values of $\lambda_1$ and -$\lambda_2$ have the same implications on the existence of one or more -solutions. (In this scenario, $\lambda_1$ and $\lambda_2$ don't indicate the -diagonal entries of $C$, but its \emph{eigenvalues}). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Backtracking} - -Consider again the functions: -\begin{align} -f_\text{sq}(x) - &= x^\T C x \\ -f_\text{hole}(x) - &= 1-\exp(-x^\T C x) -\end{align} -with diagonal matrix $C$ and entries $C(i,i) = -c^{\frac{i-1}{n-1}}$. We choose a conditioning\footnote{The -word ``conditioning'' generally denotes the ratio of the largest and -smallest Eigenvalue of the Hessian.} $c=10$. - -~ - -a) Implement gradient descent with backtracking, as described on slide -02:05 (with default parameters $\r$). Test the algorithm on -$f_\text{sq}(x)$ and $f_\text{hole}(x)$ with start point -$x_0=(1,1)$. To judge the performance, create the following plots: -\begin{itemize} - \item function value over the number of function evaluations. - \item number of inner (line search) loops over the number of outer (gradient descent) loops. - \item function surface, this time including algorithm's search trajectory. -\end{itemize} - -b) Test also the \emph{alternative} in step 3. Further, how does the -performance change with $\r_\text{ls}$ (the backtracking stop criterion)? - -% c) Implement steepest descent using $C$ as a metric. Perform the same -% evaluations. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% \exsection{Newton direction} - -% a) Derive the Newton direction $d \propto - \he f(x)^\1 \na f(x)$ for -% $f_\text{sq}(x)$ and $f_\text{hole}(x)$. - -% b) Observe that the Newton direction diverges (is undefined) in the -% concave part of $f_\text{hole}(x)$. Propose some method/tricks to fix -% this, which at least exploits the efficiency of Newton methods in the -% convex part. Any ideas are allowed. - - -\exerfoot diff --git a/Optimization/e03-newtonConstraints.tex b/Optimization/e03-newtonConstraints.tex new file mode 100644 index 0000000..ce46907 --- /dev/null +++ b/Optimization/e03-newtonConstraints.tex @@ -0,0 +1,100 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercise 3} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Gauss-Newton basics} + +\begin{enumerate} + +\item Let $f(x) = \norm{\phi(x)}^2$ be a sum-of-squares cost for the features $\phi:\RRR^n\to \RRR^d$. Derive the Gauss-Newton approximation $\he f(x) \approx 2J(x)^\T J(x)$ from a linear approximation (first order Taylor) of features $\phi$, with the Jacobian $J(x) = \Del x \phi(x)$. + + + +%% \item Repeat the same but this time for gradient descent. What are conditions under which it converges? Tip: Neumann series. + +%% \item What can be said for the gradient descent method if $A = I$? + +%% \item Implement this for the function of the last exercise and see if your convergence criteria hold in practice (or what happens if you choose an $\alpha$ for which your analysis says it should not converge). + +\item Show that for any vector +$v\in\RRR^n$ the matrix $v v^\T$ is symmetric and +semi-positive-definite.\footnote{ A matrix $A\in\RRR^{n\times n}$ is +semi-positive-definite simply when for any $x\in\RRR^n$ it holds $x^\T +A x \ge 0$. Intuitively: $A$ might be a metric as it ``measures'' the +norm of any $x$ as positive. Or: If $A$ is a Hessian, the function is +(locally) convex.} Based on this, argue that the Gauss-Newton approximation +$J(x)^\T J(x)$ is also symmetric and +semi-positive-definite. + +\end{enumerate} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Conjugate Gradient} + +The conjugate gradient methods initialized $\d_0=g=-\na f(x_0)$ and then iterates the following steps:\\ +\begin{algo} +\State $\a \gets \argmin_\a f(x+\a \d)$ \Comment{exact line search} +\State $x \gets x + \a \d$ +\State $g' \gets g$,~ $g = -\na f(x)$ \Comment{store old and compute new gradient} +\State $\b \gets \max\left\{\frac{g^\T(g - g')}{g'^\T g'},0\right\}$ +\State $\d \gets g + \b \d$ \Comment{conjugate descent direction} +\end{algo} + +Consider the quadratic cost function $f(x) = \half +x^\T A x + b^\T x + c$ with $A=\begin{bmatrix}2&0\\0&1\end{bmatrix},~b=\begin{bmatrix}0\\0\end{bmatrix}$ and $c=0$ whose minimum is achieved at $x^*=(0,0)$. +\begin{enumerate} +\item Compute, by hand, two iterations of the conjugate gradient descent from $x_0 = (1,1)$ and from $x_0 = (-1,2)$, respectively. +\item Show that the first and second descent directions are $A$-orthogonal, i.e., $\d_0^\T A \d_1 = 0$. +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Solve by Sketch and check KKT} + +In this exercise, for each of the following problems do the following: +\begin{items} + \item Sketch the problem on paper + and, without much maths, figure out where the optimum $x^*$ is. + \item State which contraints are active at $x^*$. + \item Compute (by hand) the gradient $\na f$ and gradients $\na + g_i$, $\na h_j$ of active constraints at $x^*$. + \item Identify dual parameters $\l_i,\k_j$ so that the + stationarity (1st KKT) condition holds at $x^*$. +\end{items} + +\begin{enumerate} + \item A 1D problem: + $$\min_{x\in\RRR^1} x \st \sin(x)=0\comma x^2/4-1\le 0$$ + + \item 2D problems: ~ (Note that $1^\T x = \sum_i x_i$ is a simple linear cost.) + $$\min_{x\in\RRR^2} 1^\T x \st |x|^2-1 \le 0$$ + + \item + $$\min_{x\in\RRR^2} 1^\T x \st |x|^2-1 \le 0,~ -x_1\le 0$$ + + + + \item + $$\min_{x\in\RRR^2} 1^\T x \st x^2-1 \le 0,~ x_2^2-x_1 \le0$$ +\end{enumerate} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e03-newtonMethods.tex b/Optimization/e03-newtonMethods.tex deleted file mode 100644 index 5401166..0000000 --- a/Optimization/e03-newtonMethods.tex +++ /dev/null @@ -1,67 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{3} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Misc} - -a) How do you have to choose the ``damping'' $\l$ depending on $\he -f(x)$ in line 3 of the Newton method (slide 02-18) to ensure that the -$d$ is always well defined (i.e., finite)? - -b) The Gauss-Newton method uses the ``approximate Hessian'' -$2\na\phi(x)^\T \na\phi(x)$. First show that for any vector -$v\in\RRR^n$ the matrix $v v^\T$ is symmetric and -semi-positive-definite.\footnote{ A matrix $A\in\RRR^{n\times n}$ is -semi-positive-definite simply when for any $x\in\RRR^n$ it holds $x^\T -A x \ge 0$. Intuitively: $A$ might be a metric as it ``measures'' the -norm of any $x$ as positive. Or: If $A$ is a Hessian, the function is -(locally) convex.} From this, how can you argue that -$\na\phi(x)^\T \na\phi(x)$ is also symmetric and -semi-positive-definite? - -c) In the context of BFGS, convince yourself that choosing $H^\1 -= \frac{\d \d^\T}{\d^\T y}$ indeed fulfills the desired relation $\d = -H^\1 y$, where $\d$ and $y$ are defined as on slide 02-23. Are there other -choices of $H^\1$ that fulfill the relation? Which? - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Gauss-Newton} - -\twocol{.5}{.5}{ -\show{func1} -}{ -\show{func2} -} - -In $x\in\RRR^2$ consider the function -$$f(x) = \phi(x)^\T \phi(x) \comma \phi(x) = \mat{c}{ -\sin(a x_1) \\ -\sin(a c x_2) \\ -2x_1 \\ -2c x_2 -}$$ -The function is plotted above for $a=4$ (left) and $a=5$ (right, -having local minima), and conditioning $c=1$. The function is -non-convex. - -a) Extend your backtracking method implemented in the last week's exercise -to a Gauss-Newton method (with constant $\l$) to solve the unconstrained -minimization problem $\min_x f(x)$ for a random start point in -$x\in[-1,1]^2$. Compare the algorithm for $a=4$ and $a=5$ and -conditioning $c=3$ with gradient descent. - -b) Optimize the function using your optimization library of choice (If you can, -use a BFGS implementation.) - -\exerfoot diff --git a/Optimization/e04-constraints.tex b/Optimization/e04-constraints.tex index 9bed5e6..6884f4c 100644 --- a/Optimization/e04-constraints.tex +++ b/Optimization/e04-constraints.tex @@ -1,116 +1,85 @@ \input{../latex/shared} -\renewcommand{\course}{Optimization} +\renewcommand{\course}{Optimization Algorithms} \renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{4} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercise 4} \exercises + \excludecomment{solution} + \exercisestitle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \exsection{Equality Constraint Penalties and augmented Lagrangian} - -%% (We don't need to know what the Langangian is (yet) to solving this -%% exercise.) - -%% In the lecture we discussed the squared penalty method for inequality -%% constraints. There is a straight-forward version for equality -%% constraints: Instead of -%% \begin{align} -%% \min_x~ f(x) \st h(x) = 0 -%% \end{align} -%% we address -%% \begin{align} -%% \min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 \label{eq1} -%% \end{align} -%% such that the squared penalty pulls the solution onto the constraint -%% $h(x)=0$. Assume that if we minimize (\ref{eq1}) we end up at a solution -%% $x_1$ for which each $h_i(x_1)$ is reasonable small, but not exactly -%% zero. - -%% We also mentioned the idea that we could add an additional term which -%% counteracts the violation of the constraint. This can be realized by -%% minimizing -%% \begin{align} -%% \min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 + \sum_{i=1}^m \l_i h_i(x)\label{eq2} -%% \end{align} -%% for a ``good choice'' of each $\l_i$. It turns we can infer this ``good -%% choice'' from the solution $x_1$ of (\ref{eq1}): - -%% Proof that setting $\l_i = 2\mu h_i(x_1)$ will, if we assume that the -%% gradients $\na f(x)$ and $\na h(x)$ are (locally) constant, -%% ensure that the minimum of (\ref{eq2}) fulfils exactly the -%% constraints $h(x)=0$. - -%% Tip: Think intuitive. Think about how the gradient that arises from -%% the penalty in (\ref{eq1}) is now generated via the $\l_i$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\exsection{Minimalistic Log Barrier} -\exsection{Alternative Barriers \& Penalties} +Consider the 1D function, $x\in\RRR$, +$$f_\mu(x) = -x - \mu\log(-x)$$ +(Note: This is the log barrier function for the problem $\min_{x\in\RRR} -x \st x \le 0$.) -Propose 3 alternative barrier functions, and 3 alternative penalty -functions. To display functions, gnuplot is useful, e.g., -@plot -log(-x)@. +\begin{enumerate} + \item Plot the function for varying $\mu=1,0.5,0.1$. + + \item Analytically find the mimimum $x^*(\mu) = \argmin_x f_\mu(x)$ as a function of $\mu$. + + \item Prove that $\lim_{\mu\to 0} x^*(\mu) = 0$. +\end{enumerate} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \exsection{Trust Region} +\exsection{Dual Update in Augmented Lagrangian} -%% Consider a function $f(x)=x^\T A x + b^\T x$. For a given $x_0$, solve analytically -%% $$\min_x f(x) \st (x-x_0)^\2 < \a$$ +The squared penalty approach to solving an equality constrained optimization problem minimizes in each inner loop: +\begin{align} +\min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 ~. \label{eqLB1} +\end{align} +The Augmented Lagrangian method adds a Lagrangian term and minimizes in each inner loop: +\begin{align} +\min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 + \sum_{i=1}^m \l_i h_i(x) +~.\label{eqLB2} +\end{align} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Assume that we first minimize (\ref{eqLB1}) such that we end up at a minimum $\bar{x}$. -\exsection{Squared Penalties \& Log Barriers} +Now prove that, under the assumption +that the gradients $\na f(x)$ and $\na h(x)$ are (locally) constant, setting $\l_i = 2\mu h_i(\bar{x})$ will ensure that the minimum of (\ref{eqLB2}) fulfills the constraints +$h(x)=0$. -In a previous exercise we defined the ``hole function'' -$f^c_{\text{hole}}(x)$, where we now assume a conditioning $c=4$. +%% Tip: Compare the. Think about how the gradient that arises from +%% the penalty in (\ref{eqLB1}) is now generated via the $\l_i$. -Consider the optimization problem -\begin{align} -\min_x f^c_{\text{hole}}(x) \st& g(x) \le 0 \\ -& g(x) = \mat{c}{x^\T x - 1 \\ x_n + 1/c} -\end{align} -a) First, assume $n=2$ ($x\in\RRR^2$ is 2-dimensional), $c=4$, and -draw on paper what the problem looks like and where you expect the -optimum. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -b) Implement the Squared Penalty Method. (In the inner loop you may -choose any method, including simple gradient methods.) Choose as a -start point $x=(\half, \half)$. Plot its optimization path and report -on the number of total function/gradient evaluations needed. +%% \exsection{Alternative Barriers \& Penalties} -c) Test the scaling of the method for $n=10$ dimensions. +%% Propose 2 alternative barrier functions to the log barrier, and 2 alternative penalty +%% functions to square penalties. -d) Implement the Log Barrier Method and test as in b) and -c). Compare the function/gradient evaluations needed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% \exsection{Lagrangian and dual function} +\exsection{Gradient descent with matrices} + +(This exercise goes beyond the context of the lecture, but further trains you in dealing with derivatives and gradient descent when the decision variable is a matrix.) -%% (Taken roughly from `Convex Optimization', Ex. 5.1) +One way to derive a gradient is through the Taylor approximation +\begin{align*} + f(w+h) \approx f(w) + \langle \delta, h \rangle +\end{align*} +where $\delta$ is the gradient and $\langle \delta, h \rangle = \delta^Th$ the standard scalar product. Now assume that $w$ is not a vector, but a matrix $W\in\mathbb{R}^{n\times m}$ and let $f(W) = \lVert WX - Y\rVert^2_F$ with $X, Y$ matrices of appropriate sizes and $\lVert\cdot \rVert_F$ the Frobenius norm. What is the $D$ in +\begin{align*} + f(W+H) \approx f(W) + \langle D, H \rangle_F +\end{align*} +and how does a gradient step look like? -%% A simple example. Consider the optimization problem -%% $$\min x^2 + 1 \st (x-2)(x-4) \le 0$$ -%% with variable $x \in \RRR$. +Tips: $\langle A, B \rangle_F = \text{tr}(A^TB)$ -%% a) Derive the optimal solution $x^*$ and the optimal value -%% $p^*=f(x^*)$ by hand. -%% b) Write down the Lagrangian $L(x,\l)$. Plot (using gnuplot or so) -%% $L(x,\l)$ over $x$ for various values of $\l\ge 0$. Verify the -%% lower bound property $\min_x L(x,\l) \le p^*$, where $p^*$ is the -%% optimum value of the primal problem. -%% c) Derive the dual function $l(\l) = \min_x L(x,\l)$ and plot it (for $\l\ge -%% 0$). Derive the dual optimal solution $\l^* = \argmax_\l l(\l)$. Is -%% $\max_\l l(\l) = p^*$ (strong duality)? +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \exerfoot diff --git a/Optimization/e05-lagrange.tex b/Optimization/e05-lagrange.tex deleted file mode 100644 index c247a3d..0000000 --- a/Optimization/e05-lagrange.tex +++ /dev/null @@ -1,83 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{5} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Equality Constraint Penalties and augmented Lagrangian} - -Take a squared penalty approach to solving a constrained optimization problem -\begin{align} -\min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 \label{eq1} -\end{align} - -The Augmented Lagrangian method adds yet another penalty term -\begin{align} -\min_x~ f(x) + \mu \sum_{i=1}^m h_i(x)^2 + \sum_{i=1}^m \l_i h_i(x)\label{eq2} -\end{align} - -Assume that if we minimize (\ref{eq1}) we end up at a solution $\bar{x}$ for -which each $h_i(\bar{x})$ is reasonable small, but not exactly zero. Prove, in -the context of the Augmented Lagrangian method, that setting $\l_i = 2\mu -h_i(\bar{x})$ will, if we assume that the gradients $\na f(x)$ and $\na h(x)$ -are (locally) constant, ensure that the minimum of (\ref{eq2}) fulfills -the constraints $h(x)=0$. - -Tip: Think intuitive. Think about how the gradient that arises from -the penalty in (\ref{eq1}) is now generated via the $\l_i$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% \exsection{Lagrangian Method of Multipliers} - -% In a previous exercise we defined the ``hole function'' $f^c_{\text{hole}}(x)$, -% assume conditioning $c=10$ and use the Lagrangian Method of Multipliers to -% solve on paper the following constrained optimization problem in $2D$. - -% \begin{align} -% \min_x f^c_{\text{hole}}(x) \st& h(x)=0 \\ -% h(x) = v^\T x - 1 -% \end{align} - -% Near the very end, you won't be able to proceed until you have special values -% for $v$. Go as far as you can without the need for these values. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Lagrangian and dual function} - -(Taken roughly from `Convex Optimization', Ex. 5.1) - -A simple example. Consider the optimization problem -$$\min x^2 + 1 \st (x-2)(x-4) \le 0$$ -with variable $x \in \RRR$. - -a) Derive the optimal solution $x^*$ and the optimal value -$p^*=f(x^*)$ by hand. - -b) Write down the Lagrangian $L(x,\l)$. Plot (using gnuplot or so) -$L(x,\l)$ over $x$ for various values of $\l\ge 0$. Verify the -lower bound property $\min_x L(x,\l) \le p^*$, where $p^*$ is the -optimum value of the primal problem. - -c) Derive the dual function $l(\l) = \min_x L(x,\l)$ and plot it (for $\l\ge -0$). Derive the dual optimal solution $\l^* = \argmax_\l l(\l)$. Is -$\max_\l l(\l) = p^*$ (strong duality)? - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Augmented Lagrangian Programming} - -Take last week's programming exercise on Squared Penalty and ``augment'' it so -that it becomes the Augmented Lagrangian method. Compare the function/gradient -evaluations between the simple Squared Penalty method and the Augmented method. - -\exerfoot diff --git a/Optimization/e05-lagrangian.tex b/Optimization/e05-lagrangian.tex new file mode 100644 index 0000000..e610144 --- /dev/null +++ b/Optimization/e05-lagrangian.tex @@ -0,0 +1,97 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 5} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Using the Lagrangian to solve a constrained problem analytically I} + +\begin{enumerate} + \item Consider the following constrained problem: + \begin{align} + \min_{x\in\RRR^n} \sum_{i=1}^n x_i \st& g(x) \le 0 \comma g(x) = \mat{c}{x^\T x - 1 \\ -x_1} ~. + \end{align} + + \item Evaluate all possible combinations of active/inactive constraints to find a point that fulfills the KKT conditions. Which is the optimum, and what are the optimal dual parameters? Note that $x\in\mathbb{R}^n$ (not 2D as previously). + + \item Draw the feasible set and the optimal solution for $n=2$. +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Using the Lagrangian to solve a constrained problem analytically II} + We consider again the following problem (which appeared in the very first exercise sheet): \par + + In $\RRR^n$, a plane (through the origin) is described by +the linear equation +\begin{align} + c^\T x = 0 ~, +\end{align} +where $c\in\RRR^n$ parameterizes the plane and $x\in\RRR^n$ is a variable. Provide the matrix that describes the orthogonal projection of a point $x_0 \in \RRR^n$ onto this plane. +% (Hint: the solution has the form of 'Identity matrix minus a rank-1 matrix'). + + + % , 5 a), where we asked for the + % matrix that describes the orthogonal projection onto the plane $c^\T x + % = 0$, for $x \in \RRR^n$. + + +\begin{enumerate} + \item Formulate a constrained optimization problem + that describes the projection. Solve this analytically, writing down + the Lagrangian, and extract the projection matrix. +\end{enumerate} + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Lagrangian and dual function} + +(Taken roughly from `Convex Optimization', Ex. 5.1) + +Consider the optimization problem +\begin{align}\label{ex1} +\min x^2 + 1 \st (x-2)(x-4) \le 0 +\end{align} +with $x \in \RRR$. + +\begin{enumerate} +\item Derive the optimal solution $x^*$ and the optimal value +$p^*=f(x^*)$ by hand. Write down the Lagrangian $L(x,\l)$. + +\item For the same problem (\ref{ex1}), plot $L(x,\l)$ over $x$ for various values of $\l\ge 0$. +The plots should verify the lower bound property $\min_x L(x,\l) \le +p^*$, where $p^*$ is the optimum value of the primal problem. + +\item Derive the dual function $l(\l) = \min_x L(x,\l)$ and plot it (for $\l\ge +0$). Derive the dual optimal solution $\l^* = \argmax_\l l(\l)$. Is +$\max_\l l(\l) = p^*$ (strong duality)? +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Phase I Optimization} + +Given an inequality-constrained mathematical program $\min_x f(x) \st g(x)\le0$, some solvers (like log barrier) require to be initialized with a \emph{feasible} starting point $x_0$. However, finding a feasible initial point is not always easy. The term ``Phase I Optimization'' denotes the approach to formulate another optimization problem (which can easily be initialized feasible), so that solving this one leads to a feasible initialization of the original problem. + +We will discuss standard approaches in the lecture. In this exercise, be creative yourself and come up with a ``Phase I Optimization'' formulation (which could be solved, e.g., by a log-barrier method). + +Tip: If you lack ideas, check the term ``slack variable'' on Wikipedia. But please be creative also having other ideas. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e06-convex.tex b/Optimization/e06-convex.tex new file mode 100644 index 0000000..c6e19d1 --- /dev/null +++ b/Optimization/e06-convex.tex @@ -0,0 +1,81 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 6} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Problems involving $\ell_1$- and $\ell_\infty$-norms} + +These exercises are from Boyd +et al \url{http://www.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf}: + +(Ex. 4.11, pdf page 207) Formulate the following problems as LPs. Explain +in detail the relation between the optimal solution of each problem and the solution of its equivalent LP. (See norm definitions below.) +\begin{enumerate} +\item Minimize $\norm{Ax - b}_\infty$ +\item Minimize $\norm{Ax - b}_1$ +\item Minimize $\norm{Ax - b}_1$ subject to $\norm{x}_\infty \le 1$ +%\item Minimize $\norm{x}_1$ subject to $\norm{Ax - b}_\infty \le 1$ +%\item Minimize $\norm{Ax - b}_1$ + $\norm{x}_\infty$ +\end{enumerate} +In each problem, $A\in\RRR^{m\times n}$ and $b\in\RRR^m$ are given. + +Recall the general definition of a $p$-norm as $\norm{x}_p = \[\sum_i |x_i|^p\]^{1/p}$. In particular $\norm{x}_1 = \sum_i |x_i|$ (sum of absolute values), and $\norm{x}_\infty = \max_i |x_i|$ (largest absolute value (limit $p\to\infty$)). + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Minimum fuel optimal control} + +[This is a modification of Boyd's Ex 4.16, pdf page 208.] We consider a linear dynamical system with +state $x(t)\in\RRR^n, t=0,..,N$, and actuator or input signal +$u(t)\in\RRR$, for $t=0,..,N-1$. The dynamics of the system is given +by the linear recurrence +$$ +x(t+1) = A~ x(t) + b~ u(t)\comma t=0,..,N-1~, +$$ +where $A\in\RRR^{n\times n}$ and $b\in\RRR^n$ are given. We assume that +the initial state is zero, i.e., $x(0)=0$. + +The minimal fuel optimal control problem is to choose the inputs +$u(0),..,u(N-1)$ so as to minimize the total fuel consumed, which is +given by +$$ +F = \sum_{t=0}^{N-1} c(u(t))~, +$$ +subject to the constraint that $x(N) = x_\text{des}$, where $N$ is the +(given) time horizon, and $x_\text{des}\in\RRR^n$ is the (given) +desired final or target state. The function $c:\RRR \to \RRR$ is the +fuel use map for the actuator, and gives the amount of fuel used as a +function of the actuator signal amplitude. In this problem [modified from Boyd] we use +$$ +c(u) = u^2 ~. +$$ +%% $$ +%% f(x) = \begin{cases} |a| & |a|\le 1 \\ 2|a|-1 & |a| > 1 \end{cases}~. +%% $$ +%% This means that fuel use is proportional to the absolute value of the +%% actuator signal, for actuator signals between $-1$ and $1$; for larger +%% actuator signals the marginal fuel efficiency is half. + +\begin{enumerate} + \item Formulate the minimum fuel optimal control problem as a Mathematical Program, where both controls and states are the optimization variable, and the goal and dynamics of the system are constraints. This should be an NLP where the cost function is quadratic, and all constraints linear (aka.\ Quadratic Program). + % Hint: the optimization variable of the NLP is $\mathbf{x} \in \RRR^{(1+n)N} = [ u(0) , x(1), u(1), x(2), ..., u(N-1) , x(N) ]$. + %\item As preparation for the next coding assignment, implement the Mathematical Program using the Python Coding interface. +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot + diff --git a/Optimization/e06-primaldual.tex b/Optimization/e06-primaldual.tex deleted file mode 100644 index ddddff6..0000000 --- a/Optimization/e06-primaldual.tex +++ /dev/null @@ -1,75 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{6} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\exsection{Min-max $\not=$ max-min} - -Give a function $f(x,y)$ such that -$$\max_y \min_x f(x,y) \not = \min_x \max_y f(x,y)$$ - -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\exsection{Lagrangian Method of Multipliers} - -We have previously defined the ``hole function'' as $f^c_{\text{hole}}(x) = -1-\exp(-x^\T C x)$, where $C$ is a $n\times n$ diagonal matrix with $C_{ii} = -c^{\frac{i-1}{n-1}}$. Assume conditioning $c=10$ and use the Lagrangian Method -of Multipliers to solve on paper the following constrained optimization problem -in $2D$. - -\begin{align} -\min_x f^c_{\text{hole}}(x) \st& h(x)=0 \\ -h(x) = v^\T x - 1 -\end{align} - -Near the very end, you won't be able to proceed until you have special values -for $v$. Go as far as you can without the need for these values. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\exsection{Primal-dual Newton method} - -Slide 03:38 describes the primal-dual Newton method. Implement it to -solve the same constrained problem we considered in the last -exercise. - -a) $d=-\na r(x,\l)^\1 r(x,\l)$ defines the search direction. Ideally -one can make a step with factor $\a=1$ in this direction. However, -line search needs to ensure (i) dual feasibility $\l>0$, (ii) primal -feasibility $g(x)\le0$, and (iii) sufficient decrease (the Wolfe -condition). Line search decreases the step factor $\a$ to ensure these -conditions (in this order), where the Wolfe condition here reads -$$|r(z+\a d)| ~\le~ (1-\varrho_\text{ls}\a)|r(z)| \comma -z = \mat{c}{x\\\l} $$ - -b) Initialize $\mu=1$. In \emph{each} iteration decrease it by some -factor. - -c) Optionally, regularize $\na -r(x,\l)$ to robustify inversion. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% \exsection{Maybe skip: Phase I \& Log Barriers} - -%% Consider the the same problem \refeq{eq1}. - -%% a) Use the method you implemented above to find a -%% feasible initialization (\emph{Phase I}). Do this by solving the -%% $n+1$-dimensional problem -%% $$\min_{(x,s)\in\RRR^{n\po}} s \st \forall_i:~ g_i(x)\le s,~ s\ge -%% -\e$$ For some very small $\e$. Initialize this with the infeasible -%% point $(1,1)\in\RRR^2$. - -%% b) Once you've found a feasible point, use the standard log barrier -%% method to find the solution to the original problem (\ref{eq1}). Start -%% with $\mu=1$, and decrease it by $\mu\gets\mu/2$ in each iteration. In -%% each iteration also report $\l_i := \frac{\mu}{g_i(x)}$ for $i=1,2$. - -\exerfoot diff --git a/Optimization/e07-convexOpt.tex b/Optimization/e07-convexOpt.tex deleted file mode 100644 index a1491f6..0000000 --- a/Optimization/e07-convexOpt.tex +++ /dev/null @@ -1,50 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{7} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Solving real-world problems involves 2 subproblems: -\begin{enumerate} -\item[1)] formulating the problem as an optimization problem (conform to a -standard optimization problem category) ($\to$ human) -\item[2)] the actual optimization problem ($\to$ algorithm) -\end{enumerate} - -These exercises focus on the first type, which is just as important as the -second, as it enables the use of a wider range of solvers. Exercises from Boyd -et al \url{http://www.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf}: - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Network flow problem} - -Solve Exercise 4.12 (pdf page 207) from Boyd \& Vandenberghe, -\emph{Convex Optimization.} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Minimum fuel optimal control} - -Solve Exercise 4.16 (pdf page 208) from Boyd \& Vandenberghe, -\emph{Convex Optimization.} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Primal-Dual Newton for Quadratic Programming} - -Derive an explicit equation for the primal-dual Newton update of -$(x,\l)$ (slide 03:38) in the case of Quadratic Programming. Use the -special method for solving block matrix linear equations using the -Schur complements (Wikipedia ``Schur complement''). - -What is the update for a general Linear Program? - -\exerfoot diff --git a/Optimization/e07-differentiableOpt.tex b/Optimization/e07-differentiableOpt.tex new file mode 100644 index 0000000..83bc627 --- /dev/null +++ b/Optimization/e07-differentiableOpt.tex @@ -0,0 +1,56 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 7} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Differentiable Optimization} + +Let's again consider the problem we had in exercise 5, but this time with parameter $\t\in\RRR$, +$$\min_{x\RRR^2} 1^\T x \st g(x) \le 0 \comma g(x) = \mat{c}{x^\T x - 1 \\ -x_1 + \t} ~.$$ +Here, the second inequality $x_1 \ge \t$ is parameterized and we want to know $\Del \t x^*(\t)$. + +\begin{enumerate} +\item As in exercise 5, derive the optimum $x^*(\t)$, but now as a function of $\t$. (You may assume that both constraints are active. What does this imply for possible values of $\t$?) + +\item Determine the derivative $\Del{\t} x^*(\t)$ based on the parameteric solution you found in a). + +\item Derive the KKT Jacobian $\Del{x\k\l} r \in \RRR^{4\times 4}$ at the optimum, and the vector $\Del \t r \in \RRR^{4}$ (see slide 13). + +\item Check that the first two entries of $\Del \t F = -[\Del {{}_{x\k\l}} r]^\1~ \Del \t r$ coincide with the gradient $\Del \t x^*(\t)$ you found in b). +\end{enumerate} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Trust Region} + +Consider a function $f(x)=\half x^\T A x + b^\T x$ for symmetric positive definite $A$. For a given $x_0$, we would like to solve the problem +$$\min_x f(x) \st \norm{x-x_0}^2 \le \a$$ + +This describes a Newton step under a \emph{Trust Region} approach: It considers a 2nd-order Taylor approximation $f$, and computes an optimal step under step length limit $\sqrt{\a}$, which is called trust region radius. + +\begin{enumerate} +\item Try to solve this problem analytically as far as you can get. Eventually you will not be able to solve it completely analytically and be left with an equation for the dual parameter $\l$. What numerical algorithm could you use (in an 'inner loop') to efficiently solve for the correct $\l$? + +\item Make explicit, how the $\l$ that arises in the Trust Region step is related to the damping (aka.\ Levenberg-Marquardt parameter) of a Newton step. + +\item Derive the dual function $l(\l) = \min_x L(x,\l)$ for the above problem. Can one solve $\max_{\l\ge0} l(\l)$ analytically? +\end{enumerate} + + + +\exerfoot diff --git a/Optimization/e08-ILPrelaxation.tex b/Optimization/e08-ILPrelaxation.tex deleted file mode 100644 index 7ab59ef..0000000 --- a/Optimization/e08-ILPrelaxation.tex +++ /dev/null @@ -1,78 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{8} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{More on LP formulation} - -A few more exercises on standard techniques to convert problems into linear programs: - -Solve Exercise 4.11 (pdf page 207) from Boyd \& Vandenberghe, -\emph{Convex Optimization.} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Grocery Shopping} - -You're at the market and you find $n$ offers, each represented by a set of -items $A_i$ and the respective price $c_i$. Your goal is to buy at least one of -each item for as little as possible. - -Formulate as an ILP and then define a relaxation. If possible, come up with an -interpretation for the relaxed problem. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Facility Location} - -There are $n$ facilities with which to satisfy the needs of $m$ clients. The -cost for opening facility $j$ is $f_j$, and the cost for servicing client $i$ -through facility $j$ is $c_{ij}$. You have to find an optimal way to open -facilities and to associate clients to facilities. - -Formulate as an ILP and then define a relaxation. If possible, come up with an -interpretation for the relaxed problem. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Taxicab Driver (optional)} - -You're a taxicab driver in hyper-space ($\RRR^d$) and have to service $n$ -clients. Each client $i$ has an known initial position $c_i\in\RRR^d$ and a -destination $d_i\in\RRR^d$. You start out at position $p_0\in\RRR^d$ and have -to service all the clients while minimizing fuel use, which is proportional to -covered distance. Hyper-space is funny, so the geometry is not Euclidean and -distances are Manhattan distances. - -Formulate as an ILP and then define a relaxation. If possible, come up with an -interpretation for the relaxed problem. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Programming} - -Use the primal-dual interior point Newton method you programmed in the previous -exercises to solve the relaxed facility location for $n$ facilities and $m$ -clients ($n$ and $m$ small enough that you can find the solution by hand, so -about $n\in\{3,...,5\}$ and $m\in\{5, 10\}$. - -Sample the positions of facilities and clients uniformly in $[-10, 10]^2$. -Also sample the cost of opening a facility randomly in $[1, 10]$. Set the -cost for servicing client $i$ with facility $j$ as the euclidean distance -between the two. (important: keep track of what seed you are using for your -RNG). - -Compare the solution you found by hand to the relaxed solution, and to the -relaxed solution after rounding it to the nearest integral solution. Try to -find a seed for which the rounded solution is relatively good, and one for -which the rounded solution is pretty bad. - -\exerfoot diff --git a/Optimization/e08-stochGrad.tex b/Optimization/e08-stochGrad.tex new file mode 100644 index 0000000..20f15a8 --- /dev/null +++ b/Optimization/e08-stochGrad.tex @@ -0,0 +1,60 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 8} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Convergence of Stochastic Gradient Descent} + +For a cost function $f(w) = \frac{1}{n} \sum_{i=1}^n f_i(w),~ w\in\RRR^d$, we are interested to show that, when iterating $w_{k\po} \gets w_k - \a_k \na f_i(w_k)$ for random $i$, the gradient $\na f$ goes to zero. The typical assumption we make is Lipschitz continuity of the gradient, namely there exists a Lipschitz constant $L$ such that +$$\norm{\na f(w) - \na f(\bar w)} \le L~ \norm{w - \bar w} ~,$$ +where $\norm{w} = \sqrt{w^2}$ is the $L_2$-norm. + +Based on this assumption, show that +\begin{enumerate} +\item For any $\d\in\RRR^d$, the Hessian $\he f(w)$ fulfills $\norm{\he f(w) \d} \le L \norm{\d}$. (This can also be written as $\norm{\he f(w)}_2 \le L$, also means that the largest eigenvalue of $\he f$ is $\le L$, and we have an upper bound on curvature.) +\item We have +$$f(w) \le f(\bar w) + \na f(\bar w)^\T (w - \bar w) + \half~ L (w-\bar w)^2$$ +\item We have +$$\Exp{f(w_{k+1})} +\le f(w_k) - \a_k \norm{\na f(w_k)}^2 + \half~ \a_k^2~ L~ \Exp{\norm{\na f_i(w_k)}^2}$$ +\end{enumerate} + +(We then often assume a given variance $\Exp{\norm{\na f_i(w_k)}^2}=\s^2+\norm{\na f(w_k)}^2$ of the stochastic gradient and can continue convergence analysis as on the lecture slide.) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Bound Constraints} + +Consider the problem: +$$\min_{x\in\RRR^2} \half x^\T A x \st x_2 \ge \half\comma \text{with}~ A = \mat{cc}{200 & -160 \\ -160 & 200} $$ + +Here a plot of isolines, and at the top right in green, a few steps of a Newton method that properly handles bound constraints: + +\show[.5]{boundPic} + +\begin{enumerate} +\item Analytically compute the optimum for this problem. You may assume the constraint active. (For arbitrary positive definite $A$, the specific numbers are not important.) + +\item Assume we are at location $x=(0,1)$. In which direction does the gradient $-\na f$ point? (First compute it analytically, then plug in the 160,200 numbers of $A$). And in which direction does the Newton step $-\he f^\1 \na f$ point? (This should be obvious, without much computation.) + +\item Assume we initialize our bound constrained Newton method (slide 13 of lecture 11) at $x=(0,1)$, how many Newton iterations (where each iteration does line search in the determined direction $\d$), will it need until convergence. Illustrate roughly, where each step moves to. + +\item Let us define $r(x_1) = f(x_1, x_2=\half)$, which is the cost function on the hyperplane only. Given any point $x_1$ on the hyperplane, what is the Newton step within the hyperplane w.r.t.\ $x_1$? Is this the same as the (clipped) Newton step for $f(x_1,x_2)$ when deleting the off-diagonal terms from $A$ (as our method does)? +\end{enumerate} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e09-globalOptim.tex b/Optimization/e09-globalOptim.tex deleted file mode 100644 index 2304511..0000000 --- a/Optimization/e09-globalOptim.tex +++ /dev/null @@ -1,35 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{8} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Global Optimization} - -Find an implementation of Gaussian Processes for your language of choice (e.g. -python: scikit-learn, or Sheffield/Gpy; octave/matlab: gpml). and implement -UCB. Test your implementation with different hyperparameters (Find the best -combination of kernel and its parameters in the GP) on the following 2D global -optimization problems: -\begin{itemize} - \item the 2d Rosenbrock function. - \item the Rastrigin function as defined in exercise e03 with $a=6$. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Constrained Global Bayes Optimization?} - -On slide 5:18 it is speculated that one could consider a constrained -blackbox optimization problem as well. How could one approach this in -the UCB manner? - - -\exerfoot diff --git a/Optimization/e09-stochasticSearch.tex b/Optimization/e09-stochasticSearch.tex new file mode 100644 index 0000000..732dc8a --- /dev/null +++ b/Optimization/e09-stochasticSearch.tex @@ -0,0 +1,53 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 9} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{$(1+\l)$-ES} + +The $(1+\l)$-ES is one of the simplest stochastic search methods. Implement this method (for given parameters $\s$ and $\l$). + +Test $(1+\l)$-ES on the simple $n=2$-dimensional squared cost $f(x) = x^\T C x$, where $C$ is diagonal with entries $C_{ii} = c^{\frac{i-1}{n-1}}$ and conditioning $c=10$. Initialize the center with $\hat x_0 = (2,2)$. + +\begin{enumerate} +\item For large $\l=100$ and fairly small $\s \approx 0.02$, how does the typical trace of the method look like? (The typical path the method takes in this 2D problem?) +\item For $\l=1$, roughly what is the probability of improvement of each step \emph{in the early phase} (say, the very first step) of optimization? +\item Qualitatively, what is the probability of improvement in the ``mid-phase'' (which should be clear from the typical path)? (Smaller or larger than in the early phase?) How would that change with increasing dimensions $n$? +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{No Free Lunch (NFL)} + +You are given an optimization problem where the search space is the discrete +set $X= \{1, \ldots, 10\}$ of size $10$, and the cost space $Y$ is the set of integers $\{1, \ldots, 10\}$. The unknown cost function $f:X \to Y$ is distributed by $P(f)$ and we assume that you (or the algorithm) knows $P(f)$ apriori. (The equivalence of not knowing anything about $f$ would be $P(f)$ is i.i.d.\ uniform (with maximal entropy), which is the NFL condition. To solve this exercise, you do not need to know NFL in detail -- if you are interested, I am uploading correspondings slides on ISIS.) + +\begin{enumerate} +\item If you know that $f$-values of neighboring $x$ can only differ by 1, i.e., +$$\forall_{x_1,x_2\in X}:~ |x_1-x_2|\le 1 \To |f(x_1)-f(x_2)|\le 1 ~,$$ +and all possible $f$ are equally likely, how would you design an (optimal?) optimization algorithm? + +\item If you additionally to the above know that the function $f$ aquires \emph{all} values in $Y$ somewhere (i.e., the image of $f$ equals $Y$), +and all possible $f$ are equally likely, how would you design an (optimal!) optimization algorithm? + +\item Bonus/Optional: Now, if you know that $f$-values of neighboring $x$ can only differ by 2, but again $f$ must be bijective (and all possible $f$ are equally likely), how would you design an (optimal?) optimization algorithm? +\end{enumerate} + +The exercises are also meant to illustrate what it means to maintain a \emph{belief} $P(f|D)$ over the function, given observed data. Can you indicate what beliefs or similar your proposed algorithms maintain while exploring the function? + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\exerfoot diff --git a/Optimization/e10-blackBoxOpt.tex b/Optimization/e10-blackBoxOpt.tex deleted file mode 100644 index e7d05f8..0000000 --- a/Optimization/e10-blackBoxOpt.tex +++ /dev/null @@ -1,37 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{10} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{BlackBox Local Search Programming} - -1a) Implement Greedy Local Search and Stochastic Local Search - -1b) Implement Random Restarts - -1c) Implement Iterated Local Search - -Use the above methods on the Rosenbrock and the Rastrigin functions. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Neighborhoods} - -2a) Define a deterministic and a stochastic notion of neighborhood which is -appropriate for the Grocery Shopping problem defined in e08. - -2b) Define a deterministic and a stochastic notion of neighborhood which is -appropriate for the Facility Location problem defined in e08. - -2c) Define a deterministic and a stochastic notion of neighborhood which is -appropriate for the Taxicab problem defined in e08. - -\exerfoot diff --git a/Optimization/e10-globalOpt.tex b/Optimization/e10-globalOpt.tex new file mode 100644 index 0000000..0e1ec31 --- /dev/null +++ b/Optimization/e10-globalOpt.tex @@ -0,0 +1,72 @@ +\input{../latex/shared} + +\renewcommand{\course}{Optimization Algorithms} +\renewcommand{\coursepicture}{optim} +\renewcommand{\coursedate}{Winter 2024/25} +\renewcommand{\exnum}{Weekly Exercises 10} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Gaussian Process Regression} + +In the lecture we mentioned Gaussian Processes (GP) as a basic approach to formulate a distribution $P(f|D)$ over continuous functions $f:\RRR^d \to \RRR$, given data $D$. Slide 9 of the lecture summarizes the essential equations; the standard reference for GPs is \href{http://robotics.caltech.edu/wiki/images/d/d1/RasumussenWilliamsBook.pdf}{Rasmussen \& Williams (2006) [pdf link]}. In this exercise you learn about them by implementing a minimalistic case: + +You are given a $D = \left\{(x_i,y_i)\right\}_{i=1}^n$. In this exercise, we assume $x\in\RRR$ (1-dimensional) and we just have $n=2$ data points $(x_1=0,y_1=0)$ and $(x_2=1,y_2=1)$. Then compute the following: +\begin{enumerate} +\item Compute the kernel matrix $K\in\RRR^{n\times n}$ with entries +$$K_{ij} = k(x_i,x_j) \comma k(x,x') = a~ \exp(- \half \norm{x-x'}^2/\ell^2 ) ~.$$ +We choose $a=1, \ell=1$, and $k(x,x')$ is called squared exponential covariance function. + +{\small [This matrix desribes how correlated the observations at all data points $x_i$ are.] + +} +\item Trivially also prepare the data vector $Y = (y_1,\ldots, y_n)^\T \in \RRR^n$. + +\item Write a method, that for any new $x\in\RRR$ computes a vector $\kappa(x)\in\RRR^2$, a prediction $\mu(x)\in\RRR$, and a variance $\s^2(x)\in\RRR$ as follows +\begin{align} +\kappa(x) &\in\RRR^n ~\text{with entries}~ \kappa_i(x) = k(x,x_i) \\ +\mu(x) &= \kappa(x)^\T~ (K + \s_0^2 \Id)^\1~ Y\\ +\s^2(x) &= k(x,x) - \kappa(x)^\T~ (K + \s_0^2 \Id)^\1~ \kappa(x) ~, +\end{align} +where $\Id$ is the identity matrix and we choose observation noise $\s_0=0.1$. + +{\small [The vector $\kappa(x)$ describes how correlated a new observation at $x$ should be with observations at all data points $x_i$. The prediction $\mu(x)$ and variance $\s^2(x)$ can be derived as the conditional marginal of a joint Gaussian distribution.] + +} + +\item Now sample $x\in[-2,2]$ on a fine grid, compute $\mu(x)$ and $\s^2(x)$ for each $x$, and use this to plot the functions $\mu(x)$, $\mu(x)+\sqrt{\s^2(x)}$, and $\mu(x)-\sqrt{\s^2(x)}$ for the interval $x\in[-2,2]$. +\end{enumerate} + +How does this change for $\s=0$? How does this change for $\ell=0.1$? How does this change with more observed points (e.g., sample them from the prediction, then consider them observed data points)? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Global Optimization in high dimensions?} + +Assume you have a GP prior $P(f)$ over functions $[0,1]^n\to \RRR$ and search a global minimum in the bounded space $[0,1]^n \subset \RRR^n$. We have a squared exponential kernel with length scale (kernel width) $\ell = 0.1$, i.e.,\ $$k(x,x')=\exp(-\frac{\norm{x-x'}^2}{2\cdot 0.1^2}).$$ For simplicity, let us assume that all observations (whereever we query) turn out zero and we collect data $D=\{(x_i,y_i)\}_{i=1}^T$ with $y_i=0$. + +%\begin{enumerate} +%\item +Estimate the number $T$ of points you need to query to achieve some certainty that no function value of the true $f$ is larger than 1. For instance, determine a $T$ and a querying scheme that defines all $x_i$, so that $\forall x:~ P(f(x)>1) \le 0.0227$. (The last number is the probability that a random number from the standard normal distribution $z\sim\NN(0,1)$ is larger than $2$. See \url{https://en.wikipedia.org/wiki/File:Standard_deviation_diagram.svg}) + +%\item Discuss informally for what kernels global optimization can efficiently scale with $n$. +%\end{enumerate} + +~ + +Note: The following paper summarizes results on the Euclidean distance with increasing space dimensionality: + +Aggarwal, C. C., Hinneburg, A., \& Keim, D. A. (2001, January). On the surprising behavior of distance metrics in high dimensional space. In International conference on database theory (pp. 420-434). Springer, Berlin, Heidelberg. + +E.g., stated overly briefly, with $n\to\infty$ the ratio of distances to a nearest and furthest random point converges to 1. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/Optimization/e11-blackBoxOpt_2.tex b/Optimization/e11-blackBoxOpt_2.tex deleted file mode 100644 index 6d0fc00..0000000 --- a/Optimization/e11-blackBoxOpt_2.tex +++ /dev/null @@ -1,54 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{11} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{Model Based Optimization} - -1) Implement Model-based optimization as described in slide 06:33 and use it to -solve the usual Raistringen and Rosenbrock functions. - -Visualize the current estimated model at each step of the optimization procedure. - -Hints: -\begin{itemize} - \item Try out both a quadratic model $\phi_2(x) = [ 1, x_1, x_2, x_1^2, x_2^2, x_1x_2 ]$ and a linear one $\phi_1(x) = [1, x_1, x_2 ]$. - \item Initialize the model sampling $.5 (n+1)(n+2)$ (in the case of quadratic model) or $n+1$ (in the case of linear model) points around the starting position. - \item For any given set of datapoints $D$, compute $\beta = (X^\T X)^{-1} X^\T y$, where $X$ contains (row-wise) the data points (either $\phi_1$ or $\phi_2$) in $D$, and $y$ are the respective function evaluations. - \item Compute $det(D)$ as $det(X^\T X)$. - \item Solve the local maximization problem in line $12$ directly by inspecting a finite number of points in a grid-like structure around the current point. - \item The $\Delta$ in line $18$ should just be the current dataset $D$. - \item Always maintain at least $.5 (n+1)(n+2)$ (quadratic) or $n+1$ (linear) datapoints in D. This almost-surely ensures that the regression parameter $\beta$ is well defined. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{No Free Lunch Theorems} - -Broadly speaking, the No Free Lunch Theorems state that an algorithm can be -said to outperform another one only if certain assumptions are made about the -problem which is being solved itself. In other words, algorithms perform in -average exactly the same, if no restriction or assumption is made on the type -of problem itself. Algorithms outperform each other only w.r.t specific -classes of problems. - -2a) Read the publication ``No Free Lunch Theorems for Optimization'' by Wolpert -and Macready and get a better feel for what the statements are about. - -2b, 2c, 2d) You are given an optimization problem where the search space is a -set $X$ with size $100$, and the cost space $Y$ is the set of integers $\{1, -\ldots, 100\}$. Come up with three different algorithms, and three different -assumptions about the problem-space such that each algorithm outperforms the -others in one of the assumptions. - -Try to be creative, or you will all come up with the same ``obvious'' answers. - -\exerfoot diff --git a/Optimization/e12-stochasticSearch.tex b/Optimization/e12-stochasticSearch.tex deleted file mode 100644 index 8eb3927..0000000 --- a/Optimization/e12-stochasticSearch.tex +++ /dev/null @@ -1,52 +0,0 @@ -\input{../latex/shared} - -\renewcommand{\course}{Optimization} -\renewcommand{\coursepicture}{optim} -\renewcommand{\coursedate}{Summer 2015} -\renewcommand{\exnum}{7} - -\exercises -\excludecomment{solution} -\exercisestitle - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\exsection{CMA vs.\ twiddle search} - -At \url{https://www.lri.fr/~hansen/cmaes_inmatlab.html} there is code -for CMA for all languages (I do not recommend the C++ versions). - -a) Test CMA with a standard parameter setting a log-variant of the Rosenbrock - function (see Wikipedia). My implementation of this function in C++ is:\\ -\begin{code} -\begin{verbatim} - double LogRosenbrock(const arr& x) { - double f=0.; - for(uint i=1; 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

2oEY{I!Koi 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 literal 0 HcmV?d00001 diff --git a/Optimization/pics/boundPic.png b/Optimization/pics/boundPic.png new file mode 100644 index 0000000000000000000000000000000000000000..2d702cf9d1514c8e0c3b3e96f8b70b04abc4307f GIT binary patch literal 499164 zcmY&<16XAZyY|kQY)-bDG}&&lCQi07xe1fqWZTVT+qP}n{MUT%`m_Esoz?~u;V?Ht>#^6%ZDDs_5Cu{Q1=1Pw=87sn`91BeP}yIg*s1p1 zE8zS29E{pBQxuod>hm;J+h*$B<)5DkL#;$BdPYyWJwJ$H{fJ?Yga?fIa5e|fAJMhm z6zgA1ph1Tx>(AP*JDo?juAv&+(z>A1ns3B;gKN&c((&bcyFPtI)7i~M+^eJtp-VV5P>Wr zo;-)4Ce2iYd^UJ=@D@*^#l(p4*SK;~gB zK85JDYoZcdh>-{;z+3Ehiw>e%Lun_xE4#*K#T{9B^soU;m(hOTTw;bH7ziZkoWE4;ous)xe>%s%uuI(&z4vHTI`X^kC{H#?d4gJos`SL{guGsc*6PuLPpJRL z%-;_1Znh4s+lP)jfM2O;XxRPVvzW)QnQoln6+u9o)ijKl0`gTMQ zYn~d`KCN@_HSX;>P!H{r>?IoGy|n9r|Fzu&Qy|Vy{;P4D&s2VlhQ6{a|#l|W}VZM-4e&%Rv~subYnb07MlWPhX&0%38U zhPbWbU@&)QxEo0xZ6P`%n-+RLYi75;>oTs_oo&9MLV^~jGt;ldD!+xZ@; zS{EOs-xv9WAbw)1j)vE9SppqRkXM{Mz5R%iZy+_l|7%D3@uUl#Dp zohD)2ZsU{DwK3E)E!U1Vhq{}7spM=2SA6x~`~roSisJYdRZqz=w()z>IND(|?yJ@+ zL#i#^1NX|RB3C8b%si%}|2xca%20wD_PIsr;3siK>NbxRul5sXeZRjID~nF#aN%L% z#+6KO>E0@4@A(~52-Luwp>(y;aA~Bilq}al{3Z1nt!AalqwegM58! zXARFR8@ci^C&eX>Kf!o9zl=l8ulx+8A}p7&jASaO`G}Ry&y(xw>S*UDYZxS5yv zVQlBs+Mg58iAH1XZ?etm2UgN}?#3=&M}|M|2>=i+QIZms%j+!u4qCJes}pMp2J#~eq1C_@ow1s8q+mhj@S9H?a641xxo^}H!*gr zF{iukKwAQ{Z4e5?T&!(f#-;9TW6NFidu=c-=s_T7yFw!V1 zmzOOsr-B^XrmZIt9{YcC!r!f}(}hlonIQP+n=h(6+{E~& zu+_y}?sDpAYkA6jZ0vxKlropD4Ic1>*8lOuo7@A`CB?~gcu9y>?CqgCThGiBfsAEn zq8gFB@ksTw$N1PmgfEfa;+_xqzvm|PGS^5mUU<&kz)aV0(idRNIb+o{eI?>^;A8Iz z_e@`IF?DC8W04qyBb1OZhXKT`%?EeW!uyPL#T%*HKYDeM!{b+giPq#0fpYiyg?i3a zqHv}C*u#VH&9*_#G3U8e`>~zL>iM<)zP$&#(QAD8(=-1ub@+hfnfLMj=+*9f>*i=D z#uWppyw5$!mCp(xOfc4*(|fwl$#gZH z_*`%O?XuwD7gL+P%X&|Mw)fpIkv6BZ{!AcYQipNag(+l5Oc-cv4w(BanzXo;~ORR3HQ{BmgF`LyU)PP+leuNFkM25mxq=Wt%m?fho ztn^zIwniqFJg7`KOSMRMlb=Yh0kN7ChN%R(ULl}6%5 z(~n%jtGh)MQOkpHaHCaB6CK1^ z*x$+E^$YRO?5LM&EhMBOxbxZiRv3^1?=u!sy1n~e&yEash3bmWq1&{<^J-L5Lf?=? z`;*gJ57WVZ(uqDZj)N_q#iJ+V;Khqpck!d0A@*EuzUv6HON5@{9bE1!G zert%1U3*Dt$VpLAlkMApIuFD2s35hY3{u(Sa6T6i0(_a5S37rk>=K_*1)jz{nBWsb z6VY)Sb$V&0N1gf5S)YW%Y)fm)O!4y=0bce=hhj8V_1#|D@xA6{eD-}y)6Te@X0xrW z`9h1upZ;*KjLg7+bnm%+590k}H`bJt@;0B)x~RA1@u;KRqgxeGqnM*9Y@KzdzX_=x zf&J|AA&irOe(h%Z_`O;@CjN8f>rI#s%HJTp5cmIYkS-BbbRC`inPzmOW-o6ry=(e- ze&R#CKb2fj+EiJBaB#l-zQ6Cj4cb|$GSNB;qjJwk!)RBzzL9WT=bzv~gc5WU$4#%c zH|b$;WnTLHuz3={_@P=*5>->v2s7qazOB3{hYd5GOc`kvix>C#!foRALT*9^*EpjD zJC@=7w>^E9ko1|owQo~&1)jJdO+^gf$%D;8E7r;ZlEl$|btbD-ArdsEG(L)lojOFS z;Mi&5(?8a>UX-^Z?7umx1}8-ES*Cmy#lu;HO~cafx{oa~byZ)KVjb^aQVYlBc&j%n z#<##0JntXRl`hjf8GBPTqKh0dbszTy_#S%wM4mqmx1#K*-4_$Ss9CA#&6*cFn~z@l zsAD5Xeo0SX^BBEY6e!)nhK@pk)cz6Dn&=0&SAQCH+k6=6|4+p|jndiN7)&(fU32Ph zB8*7h9&xRkp?1nFwzAE{Teqk!fe5(1O;#K+c zy*D3d$Z1P=VXnz<#{Y~e-ahe>5y)~roLBi?<5=d5{LLj2qrvi944U>>Q(v2wbi`@f z#Iv^r17`_+xN5JQQZuQf>t2n`bXf<<>tO6DF8gL!u19vNA2!owo->CPHIiM2v+ZK- zWYV;@Rt<*lu-`FHUhnbO<&eL@H{XQV-a*qfe(7jF6}1ltDQYTViOVkx=E+i)0M$QlWGmMXA{;KKYib+6LV@Kk$qPrB1P4GkR``;TZuA z3LUwKt-L-EvHoGSC8&Mt-f|N^!TNlb!}HGSv^VWG>2{>2uyt-b@z7OF=gx%oHz|D@ zur7c7+d7tr>bm}&uC$tL=P0iA)b@Nd*3`!a+WLhNzx1RLwbbMtJZUyg_G&HNQ>-){ zX1C|TubaJlzW>~ImZM)hp#LARmH zCDH!a<6f&GVml+3z=)(=Pi4lL#^Sm zCeo_P@KFT#22Sb$h!pZ2Sw@#3f4UNSgyXWb`SH6e>N5@ zscQOBNEL>g04eNo+2J<7wa@SFYU`*F$FkL?p1?cB;O83bY%5DtHFW`c6&;6EXSf>Z zkJx44iVXiKjW8$^71BVJdrycfMjH+SS!K*5@%1OU=OTeFX0w{SnZ$aLre4fcE0G!~ znf{us-`V@3hzAk$Kwe<5RP5w@(@PRu=Pz`;CV2eOXSYI=>43_%#npWYMQ%j_QJkdH z<&Q<F)3mbjho7OWr1K|R$vKZF7STqclb&TJJjq%4?SOB6oUcAFRMAKpxa zVlXLxOi-f4h#dt?rr4p_r@^)QTpU=uAG%Mm$s>x+ zsUkPG9$UM6mr(nu2BgB^s7~+9BQ4@~EnA>{w4CP`=RUGd|NYoa&ws;uqxIIW^2a>~ zY#TJdX(8g~(Nj0T_o~2Vi~qS$(ZdWajsEb-2NfX;)=w#zoQB#DBnk!}Ek+y`N=h^I zh)(RovldW_x{Nxf)7x13eJLE5RZ4`?cpwiUIgdY%)hOCe9!VlOTA91K#|_+?`%|O+ zCuI)4+J0b)Co}w%W}H38_hYX0#~dG+GxJORb0>qo3UQ`Sb6ao~*>b2+jX)((9`@srF0!wre zMk&|<13^^qDxB!Ri_P}$k<-)_LI}z6&3!u{9BDaAhPUiqe>augP+ZC)B=apN zu@C#kV4wFoBsc=sZc8>!9t(9X2l6eiXDj?NXDmAn0h&XsJb#rHeStlleb9Vm{ttS| z5=bM8WQwf{pl#P1X}*z`N7TD4Zgwb^Nt8AjWi=Y-Af+z)ddBG1ogLZ9uxdsbI75Lh z%UUc$0-@IF9O;ItYHb7DvY82fr5uIPaFU(X6FkynG^&j2o_of z!i5#mL>Pb-1R;&pn^Hse`ugQiL!)4Td;$N1V%#*hFvP&?422}j2kd`dvtJZ|FHJ>o zU{4f)4^2f-l1)&+M0qYLSncv|w?0Z$_J=3^QflZZ3+-7(f}~4mq7`s1Tq_$+F_y&Z z*M4F+_vk1Y&w?jng#gv9E~T+bC9>!sgC5+CM8>HY;K(X}p+KOIoMTy`y8aipzYSo% z$*(3-h%UY=c|YLMk12<5?=_OXF2;wyM``}KJ4CPQ-rl9{8Y=N*LOtAu51g(;l@w+z;2G;xa$*h$@`XKIxkefk1PNYTic` z8b{*H(XN#=J{fQzyNgK|RgAT3xDO!x{!_pRHJa53Am3X~MGJCxJ75 zF_NN8s-p7TRf*Dx;!mjok?2+uEWi~QE5>{eoHES&NOntI+%3r`t>X|`s)zv)L)4K2 zp?=iCq;xIvXr5IYiEf$n4@PTLaBmkO^bf{fc!%8mxX>sP&@)yn>9-JP&~5q(nm?Uz zj=9G0Sc?bNN(M+(jbdo4>Pt=qe;X+lp5kaVbZ9qpOnGx@R25CT1TbjpGkPxgWr08w zZrn39v*V302=wDKJ-XX9zE4*}4@74HyI%4{q*!cRFC&;%nbeXl-yst6*;&zv);Y<7EAUPV~ zgAl{o&7dX79Kc@Y1j=teO1G5j+e4zb){V0fapNmv&Z$j!LN%X5P>y$UpDoCMaPcT* z#zWQoyc5k;KcZ7*!?d5!-3(@D14m5Ug7GmYm!HleaWIa}v0(A@~p8im?pV-0yb;Ouj;RIs5entcRcKl+wq9Au? z1p(6Ee(2L37wyr$mr*-;t?hvP%iZgUyfAc)X)-W0LkR3{HDssE@d+FbE&NCkvh96H z30RuV@RcK|Wm|J6R%l)tUg~AhBcJg;EPtI6Ir{UBsE6I^V$ORP6FihZLNYbye(oY- z{hAwQ-Lmg!mClxTpex@5PI@7^*+~`7f@ha8%fA5mnTNA-`{IerUn; zeli?%(Zhb$$01V;ebtXY7Wh4;pJodvM|hYKE-crc#o1;zW?@n|8WuLS-vk`LLRqu^l@KiPh6aenFGGysA6 zGtLDS6mC4pLHh5ROCzfXE6oug--vB|XvR<$Bc=8miPv^NIA}mjX;OR83SfUdHsLgV zEgO#&+kLS@s~qtlUwb|siTyy-$|_FwOJ+61uqH*6bb@rI@}5F|qL@@cK4PO}Bew4o zq(8T`$XJ!aUAlOhux9f_6&VN=j9XS9$F)pScLE>H&E}o-ljB>Nh{Y8TZC z_Eqr%Xk$bx@~L)Bsu|ELcZnLgBdbN$BcMP89@!8=V?jx)j#{}-MUMM;U?6-dHmng& ziimdZZmGZdt24~7wGQ?#L0!=a|Gx5|bXQSrUR~)XA&3=!O(GZ+>mEL%g8)el=L<3@NI9c3`i%D&z=Du1enKU(2FJ z%---hiep!?fHy^|2NeN|8c>=*npmB^xD5Ppxf-1&(bpIKfO2^mf%WyB0w`CUF)B1H!B%3wWZ-mLS zg@nI+o}h*ND&|vaw+JUrmck{BA7qIp`I)?#mTQi&FKQx(e9Arz(K%FV8%NvUCBuLx zbTRLednx>izwt`hwTrr(B~=Mz_sfxi=k>CieR94Sj(yK^Ps->r(v{-8WMkzQfgf0mYF9l5DuOtx*+T_stPmV@^NkHz zylBgsq?)A?xgu%aQeQ_5`X^ism2KysmU~;T%hP1=uD+D91OZ*} znWzRH%y?%1^2qF^YbC4t{PQW5h{$>~Z_i2Nd2E#Q%&RPQM;g z1KHo#mj4UtKHGyxJzU9ON`Tr`(-m?g8R=71YxJX?Zd|3-#In_J;}l3Xw1 zT(mp=4vLlw3^;@Eid_VMay&(^=2-0+A~5qGOiPN;hFB_yfqR#tAkkI8>n6(LR8bpp ztsUq;#5l%t~*0INw!2flcqLv>K| z9+I9<6~Lk;u-dSaV@hL9OvFDi46)1y3c@vk=mo)xs@=_9jZ&p4;iFoi-{R(x#7z~( zg249c1(h<_VQE?}7^QP@kQ4|s@#$Z?97}j-_{CK%!AB&O$_(oG5wz@Qy>%hKqlpQ{F`e5b zTAa{dCJoIBd)!t`W%N*~%Y!afmR71r5rncv=Wg*`9+9a^x=1-5N^A>LQ^80#Cg7T? z7Pl_f-va5rl!iN<`@+eDh+}cS<9J%ii#uPQ>h>^?B;6=hYK`g{@4@yH;(0kXH3U3p zAkBOr#oR7q+d|#LqV3^JyuGU3CK#nEr0&CS3hxG!bI;OONFE3C7LqXTN9p~L#1o)# zjW(zPp#0vq)>vJCpxpq7AvNbp+&^qO=>tTKTWY&op@4n(oRT06PftQRm@|USSbjj(N)?a( zKptt>jG)>Q5|qES@Cz)%U{;HK#n-ctv&zu3Leg8V{e&eXNN)K+0~kwE_en_qtB;MZ z3cpYFnav4u<%peVAhU(Qz#n|K%6Gfm0&7DyFHpabEJ3CzBuebVqlW zyLHNq_NS2z`)!)Z(GMDG1q^Nf68eV1pZ7CqKJ2cD=f#^wU;)!3f$AK4(S-dXs>3V4 zhF5T>Z<0SD4$glXyCMo^?L@MFzA@2(|9sNTwXEpUf09r$*yQaKwZ%7;;Wnq=%yqM> zA%eBb-T#Z;fn44ww$fA$VI$6!dnZZQ&uDFDZs0QIcxByAdxQd`i-)Y(xI}Ez zb?NeAc3SYTgIsZp{9LXcmtd*+PqMtIX6WV5 z5N+ZlF29$eg|Z>h%+QyRq1`eGJ_%YM3ZZ`uzn2_ysCZTIbsWa#rZ_SKp9hp$Sg^*k zfL};QUJ-tkG1w5Hz`tK16-4!=g=tbJJW#Xde1J|gM&eJ!J)9+>2EdXKm>|kh0LM9O zK;a}#HH`=sF29h%g>?!X5ka<)J!XnyA&VQSa_f|G?TGa%_CVS_6)v=^!Gw1Ubrx~j4(qp z_+s@<61*z;M)B@4GL$oo(G7?_PLMius~FQt!mrbXr6hAGULuBD1p$1F;t|hHFK)vU z!;Za+JXRL1lN?o+RO(1EUeFhktCIX-*HE-u+17;bK*`0v?G1#SqJQfHGn+o+XUcNcoAa$|n7OrJr#bl>^BAv2 zHpSW%o!XI8TQpWvJXX^KxyPF7G|R;^CY>#UYSzwZF`LXuzYYDHtAH%I6_(OKDRS`_ zo{u1fssZ~Q^JPGKnJzr!Se;1XoR8;?(acchv$4)$d2S}z)395Bu?P9)jxRA|E6vtflYRpcaP_?-K3;1UyGEszI>we}*l*F&_2WWr+6;cdM+|rDU@ge^S zk$;Rq>|Xhk6uB^HjAk)RQ!n=~Q^&VsautjD?oPmp4NnBLYZODG-Lj z@`R_tdfN}iYmke+)Lyh>@)8H8G%-#{7Np-#0q{Y0a5cEgETt4?=n~#|m63h- zBh}(JS=VRm)_}C)m`Jk=y?1>BthdD7ny7e@uso$=;SUL{L{cYBu zjubHG`PPqwtL>%#W#uui9Jghj{)uQKnyvA%apJZaezTPKS65DH<&nzPEz+N4b;E=#73_HGH8?a5#bbkZ6l9s1&eD1O%9CL8Tx!zrqd+yD!U)Jpx?I%do{&P7kg_!_a?kC0i=Ib^%uu~Nf|U?hE066^x)SEtx=6SmPJR zGqS&D5BpOTv-qW4_<2+Rh@4O`=IM5AV2xG>ev^6^mQcD#5mF@0R3uGVnxIrw4Am-V z;U*$##_*5-3|AmGoiGCr_@XP09lR*L2(9~Z~>i?eA+|6at& z36pRm1=&DiuCM+sWmM9f6Zx7I2PD5VTSMdg3Ac27-Y;Gy&XvTrQp|WK7ZD$L~Gg-y6VT(FtGgo_Zm3nocP&m`HynehGTnAzG_&k<(j0-8k`zwtbdY&A`K(LO` zcpJLZtx~&nD9*h)V}cls3Z~4!Nr2rC%%@bNdMb`h*K#DgCkxFXbk3_YfaU8iT;v+~ z3~n$AK_jML9AJRdy}-C6Uv(Ep5-waf&XpV4cb*6nMzW~WIp}v)*J3MdzB&1W{n>#I zQ#%=DBvTf%F9|nZ5HB?aZ5#d5VmnE2RppH$2$U@@1u-}LGH$V&NdqBmrU(dXcw%s( z2s+xyiT6XNLH>7fR{O=#`9adDzEt5802dR@UA7JB!7`x{cw_!#gPg>$dU*6J10XES zKV`V3^52T5ze0N4{dMsez{)|lpdo_Hmd*q&sE%utad9FDzUL8wj5pqUf4kT(-y{UY zq-4m8FGN;pQF5+2@X8VTpZgRs+*0bSD2xKwyfyPrQgiVfq9xAdITvNf0$aBI1kax) zBZE=jrqsKFEJ&rMp26l_U3pCqsMqIMK@8399tR8rLu4LyR0#wX1n4AfH5RC-E*F)& zX^{WuHZs85Jrh+Sy;JLAc~3Dpibd(JnHu7QT)Y zJc{6!4Xm@eXQ6?NlXWX;P$*2|N+7{4Gl`Hu{ROyF6>`&Z1CQhB23N(%7Sj*>S&F0O zPc?sf7j>R-;kq}gXzHKfk2N%zlr=>?w7`_$?WYstDvKT_;ETkuJ1swPJQV2CyhXG> zLZp_8scr~g6ILc?#3KfX-jQ9ifM$+I^!Y&!QgNuq)Q`|0b0HBEYO(53XpF&;F~m`3 zGb#@$_b<~;4Pio)m-|$TE@4SSwr7b}<^ev+^UA;j5r75oCLu)GK+(@eNZLqDH(lhr z{!2d#g&9zj?UipM^Dm9LgaXY6eO3aX2X8I*vjb1(Tk!}p@~+MwhKePWf&M={)&W%9 zf^=yZP?~$I^3Cw(?jhrfUrp6-lb(Ki)K(Rul<`%yUs7h1$Tz#!!fu;HPw`~t&c`hP zQN2A!smuK`uQ+nnI?jFj9q-|+BD#6MPW)DNf6e;E`5mh3KLh=%74}=~YkU}wjBwCL zO9^JdRC^iM6e$u6MSJy2!d|O>d#uiApjxUzQeKDF3z-REjHFd0QcSdT+cIWhKs5|C zE(qbdVg^|%So2QaL@>D&VNpvj|IlC4DbNp6xUXe$iT;`@$Tb$=cWU6|gSj88$e&X z`x*|HU}(@r#m-k3sIM+hS}xE|G=PR}eI-ii^1I+l`Th;c8VWh-`Hcb%G~q)0{bG`X zGP&jK*36n04CD9vCdV9Qq;3p|5soFjP=sf{CO~8)-}26C7MtxL$WUm8h<26a3yU45>z687it+GcXAcHBxZ z0-+<^IR5XN>r;FoAH~$^ayhYm8aXxLJDahcCt3kd~|X z!GvWjdsBi5I;y;(V6uTvc;7=i+2BM0RdIxv9h7D5!|WYDw@ywSi>8@Zl?i`14Hw&~ z(G2JYOm3w9Xp+N7J}LsWK%-K*uIui+DRvhQ`g#wgg33ksW7}dzc@%(dn%Yexx-~hm<2qhHgcP4!8$xSnz8woL@ z7iZ*5cCXJV7r+p8h_P%!y;-(h5O~(`S%;oA%^RX%d_Q`qtSC*LPCx`ad8eGc>RP+v zaK%H?H{Vf7ILBPde|^#AG8BIA*;Vyd-3|n*@zVHI38l6CTn{=C^X_#+OG5e^`ujmz z4OydG>if)bI;WK!G{`D#LW6ldo-M;ZeY;N9CPgs=?4R|#3aC26lQ)=h<;b`D2ZxJ4 zcO}MWV3pzki>S9)PPzXDB2JVxXN$YP_6)9u=-c+sB0#-ofxl&ki_r26fM(yDQc_6x z4mF<@3SQ;`0g(MZAI3e5L?~xnh*9_i<#7KzIj=ozejN&cT888&wltKIp!ooZRC$|x zN~5&$L*(fk8Ful3Cxr_;a0ueLoi3AZ8~~M_Evu2GYPN7PExHW|*YRN2GnWxsFY%}{ ze~}@olBCVz;W;lRDWZlbGItJ4xg0SVJb1a^w(Ni+-q!?s70i&*96LGsw_tl5<1S{j zURaPXY1L4m8vJ>JFk^`8aGF-rw;`=iKM)8-l%|eBr5`0lLmS<{)DUhdK&l1pC|)?7 zbeSfQyVqB>On38+9exl!c_*YP9v>$}J*ECJ6*%giD878bDVHM{B@dsA<*soLG#zi5 zTN@X@`@TZ@unX~FX(pky)vvwawh?y_ zYEE%@MEx>TnqH2$dvAvwR?hWoRzU*lt1|zrcakw0 zoNz?l8DgH?^?&Ck$q|&Y?@tRVTJhAISkrtyVkpMXYfxaNIA-YnYC;#oM;gND{(!0Ns#x}?0cU2(SuJc> zE^L(Roy)XkNHq#2^2R7iYy*3!09k6DTIrT5U|rQVu18vX*^^DRWI6vms0}-nS?QQ} zm{4QlXY2rwyFU@oKz183b^57X05U)hN{Txik_QHgY@I+=&67^C^A`9a7=~g~ zp?%PA)zbE7gI{?H(&V38JOC;jC=}m_`g9sLrhG_w5@NHA5tW?&s-I2 zMQ3=v;;sj24#%NLFihb&pK4dUl@^@tec~6OOF0CSmWtlx@W^n53y(b30Cb5ui7e}) zH?`SN;pk)htzdL*2#Y@(8r{6tsT@JK**2UjyQx5D!CG0aQ_?BUamA*?IU6{}LuzjU z1HUuEM;-+^Gey0)g_hOIklt+xi`mJBjbB>gKif2i1bRK2!9P|A`KyskP(qg({FZ~&5UUd@(>VG9a1`kPO;IMHF!6g*y?t%@ zcW0p-u@WWgAm;&nAR8#_)z0piVHDWqYt0O~n7i~itBrMcI`FWs!L?jD;rX4#;GO5P zk%JR1${0=xwcMlHYO$yBZWz4C^@n92DVINe<#V&~(&5bqM{WLz#BrOkJ#D4$VwrUi zo!#=a>n#GeUIm_CwCXAqVaHR!KrMxg?ZYtI^RF zidqB-vnCV~-wW6oDuG>5#B)fnFXlX?CR@@(16)9hHs81Hr)R^1v(xGTD75_k@ld@k zTnkm7fKpB$H2}Nje_Uv==I!#aSFT@fL=jD5U8Vu15XasWu$IRXMT(nt zAM9-DbxBsU^nFFS+ciyJ*>(y5IhuGDJQ%Xc0}9aE7c#S@yg)lm_(%&0HCCMsC_y@` zr~<;JG8DbhD|G@3O;lMCRIyYnHDDrADh9@`?ECcl+Pee=!obQSO(N@_(vc)Uie|}O zu*3bp655KFL3*qTx~kt#flQk*Xu=Rq6lNXV2}Fm4z&4P3&_9hW^&3vh9#8tlY!rQ~ z=K&N^;4p+Kou)hn}TK=54@}8*(gH^*qW3(w^lBA!N z3B$43jPWmHD$v>`@KNt>#nPGwqvfpj;39GY1k%g>4WOW|r=He(Ee`>F&BsQbJ?`4l zv~E?&5q(4j!CUyK)9=h435u8@oVM4GDFHi|;p?PO_GMT?(LYDqMh@M>#Whj~JSZrCA=JPEyy{Q{urI+gEL@k{xpRy= zxVw9A2=igtl!Mstcg(p z4J@#r0_>rw=hy3A%w4xZzjeWdk|ja|GB@g^a<4~z$!^Bcu8mTZ@ffqw$V6!_PoLE3 ze|G^c3T$6$EqR^w+(uUq0DZ1z(A^n9_buCU-Sc>0d~4cvGLgalqkD^2&(uTBAh%ET zZ_^CS-p&cv?HQJbdx;ouHG5~pQNnV7LyfGOh$*x}=OFj`luu*WB!u~c(5qs*pq1wM z=PWiKQE^Bor<_HKW{mwAx;oc%!2B}bbpjcXCvK$In$okY6$HyM8*f3&g#=$(?I1Y* zNzz|;+n2_wQ2>FV!CHXN$gAAGR{t(P2W0*nLQ$$GwKLEm0NIxBD!lyJFafAOz}gE? zEH86w&fw2Zo-6YHd{yRbGH%YiA1vT)a!y=diRd#AxF5m^gj^C6Qvp^$S5yi16Cyt6 z9TUhi7v=MumT#`kYL5s4JM*)2d_b`^`?N>9&kZcYz#-&I5ay>fhstCW<%Snkhg&Z0 zj<>IivKEp0kHsng?j%VMCoECaWM(N^i2O763g!q#$Rn8>(hK&pVMydmdQGPn4s0<= z440Kggc8^YXn+TUzo>`L_`0Umf6ch4Gdu_mdu~b|HsrI=fC^CN8^PO71JQE0)l!BW znEVKf@jWzvQ*B#O9D-|b$J@H2`Bm2yN7NWx)tT;J1U&W$2_@VZUtHan7iq13seQfO zS}P52j`+ZswC79GhvJTgCM`*_DI?qn$4L^PK)}4phHuwN$cfvym9sW1tySaf;`%gl z-;WnW9y=4#@+9>TLw$Zrv)eHYoF+$0L`NW?8Q_ z9yVi?^Lv3pbu8tVKiyg$3jU@Q&u=DUfl&Dqq#-7^mGUC-pY>VJ_I5_x@j+8zS zuV>1CJ8ZZ5se+L18LM^w)lT>RYPC&g{$`f%*bijpPSbZgR9mlw3eNrhT=WNr?0O>7 z6|JpQgC^TyHMTKS&ZL^M^UaoQg@Zo5IaQIcBIq$u0GLjJ(hn5MX`WG)z5 zQAum7VO+syNOyRNN+B3NK0)ikol+rp1Yg7x8y^lMQb}kLBv?h+Q6yTLbecpi$CkV^ zgubQ{nJHzT6!0B!mV;0nB3NkoWDzQ{k+eig7>=gy6U_pt>HC1TXkVbQ>d;ll8uRBW zH`v81sZKLKb(e;=C(|e&QjS`|^*iy-vkCVZ!{!|rr{j5XkWijL!}XtTmdz3T=hx00 zo3)Kh7)pLiB9|Z4&t$gevXF^>roaUfX!@expg{TQig9*PTE>;Ys8jZIGcn`dviIXq ziS~=CnIDFtn9Y?@%;_hky{b6bM(ak7A2vUh+Uo7Dj9dk(Oq2HuL->u(r^u=#?q2`h zxOcoZ@)r{d?2R#5#=g|d9{lb1if-@vk|`yzBU*_&iAfsgL)a0t7H#>rFYK>^I?szJ zOrFk z^fMt@EcZsmB%XPJc)45Y2-k9Z5;`Z#;f@iO`(TLGS6Hza%~OPr5t2IpgxB*z0TQ!rMI zez!SoG57bcXawdJjN4-cddZpj9)c}Hng=1=n-m#~cC@Okd{!HZJShuGEh1OoYx{%RR-%`DGZah6!>$3*~o@Cy;e|O44-)`bN z%9)WKLhC|%82wsU+=&vrFa^fDo^3=A8fP|}yEy81GkYttdiQ?ClYNVMmw!pU5yQG^ z`PL-=7}BsmpXNlHeVSBX>X^Wv;PYj^hf1}5==YUl)n8oo-H&y^>lIhZ9_MBKNxmLV z2>QmFf*?G1Yn*zTCK@Jhf*68x_S3VO%4ZB*QRUK|O0R7s3^(1tzh7fy4$JCJEwX~T zD#1EKLxLHs#0>V|a`;TL9oU8_CEUB~{eY=oKl=;Qz+32eC8JRVW0IyZNvX}&qfDUx z({_zTV>v+>G5-uOv0+j$QQ$;-mLZ<#K@B3_pr!06HjW*4kv9Hpc(W}|H2Gv-h(dO) z02jb6x$C(nBlO7#FBpUqLX7zn4k~{dndv98|cZh^GF&lB(KIZuKEeUe}#9?mC+o z*vdx)2Wn2W6=DbTZ{kq5CuBdhl6gmNI_(OLAnYdTbN7`#be+INrq(Lw+WSU#cxxIq zGo562&CFd%>42#*e9irq=Nz@`P4AIjyG_KKariv_3|xFhp65DB1owZdbZy5^C&YGT zMy_xUR5m15$_svOjwZhrPyE(Hq~X)JhoZ6@sxgt@0ZXXt2$KlhQ34)DHo|jC&t`{f zPAu<7l0~{O`OEx7Z%d)i*Xx~C-Qf;RR?=4kh4~IBt6nWsx^qY74d(Q{gW(8?s30Lp zt0E*>lwa2H0`ANv)B{+0(!d4U#-(k6c^w4BwtJW{EmeC9d1ML>GbFEfikoa{qHY3? z`n9-XMhVJi881^dW|*d~&-c~Lq~vSuG-{2(6cgb%>T@EIRxs6-#0!+7laavN?E5fg zakj=bQ!of4jg=qndB_KUP70|VjPXfS&PrIqVlzv~Vu>djc&FbHM-fLNQoMt@*I34~AbBkrh^d zY4CB6V>d^^>&n!a+zYw!&Gsbk(=Q*9G1pIa`m=od4&TP;>Rud@vKEwHrH-ZU28^}` zwL9%%|Fj+$k2DwixJ@g3A%8wZS?6dy z5Vfe#N6y~qr+S>G5pYfz#^Lt+Vv;MgYzfa&jzl{h$ zE%ANLyk3M;9V0)n(+Od|g>PSXpv046B^rV-SndMaDQ&yq!aMNdgrl zL$dN{>p1?(`Ca40TX0*~IPa?NZJj_Hyef{~3!^7z0sNM6>=$QpUDxb%2hy|5#EdFz z-H{!70^VK}0*T}r)^yqn=bp94udH^6n%tXt<-{|L&E0rza>crH7Dg*VFfG|lJ+^x~S?Ot0u;B!o7gl3y7Y7zOFhe>?$67qRY6UYi+f4Q`_q zrPDF7=LMACL(bQsXjz}WbeoFRCJK+Eoc!7OAq#nKG;}3at+5h!pqA4K($l8(Q+M8J zNoqF-hoI2;HMXo3$AUoK9_u%T))x|<8zq4ysfN9wRRif9qy5#+T)#R9r4tzo&GY^d4G&Q_EuLgJ(Mx zOvCjkz1`9cszgpTF4gE!obTQfIe)u-E0^ciojXolXIRXlHup)6Ooi;C`-R>T$D5gq9V=z!p3kfBo2;MMNPYO)I$4sMQovceh0%s* zFqM6kBEt_yk5OVBIqu6dftEKkg;P{$DIC(jKq&fHNtmb}BBEFvUBPs})>n0m_Yy4xJdi#?6q zt*tllsH%ZToo1ZM%)?vhJ~QgGL8DvSH`DRs)7#Dk(vDLGI&8<{g|2GwqGIyo6Y?6V9#-ibj|PXln5C?Tbf70YC7GWlb({jI{h6O zd}jQI&GLEmE(|5CFRJ>hqmYBvEZrlk?N8XsXo&{L$?e`m!{yDakTy94SA z&2m5M-AOv!9l6X6rO{fZSQfZ>S&qLpL*m1z6I|HPS}(_yJr;KDKMmE(tKG}LwY`of z_5&z5DzzTuua2PgLqN@t`h_Sl?SDEvG6)3s+bm{{2ri`QY5gy7pM=gv{tVJ2h-*LSY;Y}G5C^UvT zO)P^s4Jk3h06^qqu%TO+M*%8mAT0y_SGs=!Jau{=@CD&V6brN&8aRXn5?seTNvco( zb`>!bMu$7$N6cRVu|aBN9Dp6zW88Zhf|`0fny zo-$Ja^3xz#vMUIm{TRCqTzuOwfd;X^a3|SBe5^-zY6rXeG!5uf1hxHct8wFVduuzI zwGq=LBG=vwXY$=#?dF;3qG;PX>pQF+T7Asu;zD{z!DWG5doXk!`6h-PrS+H4S*GYL zvCQWL=2N$FtB>a9E%s=R89=uz8?Fgk7>=`FJD-0u_3tlccC=7_#KxoTak%V!rL;S# z=%=urc?S>dAs*-~9Tx5~>&g>Zm}yvenf@wLO0 zdBIXxs_gYy$%jwb!$|TTQC#)r=ZuV{kgHsNNLd1Wr8NYnJNH>z;PGlY(1)R7OimMz z-J{H_Nhsvz$+KyMp502v7Se>N*n*++2{oQq9X1_PP7>kS3~2|wnw@Hn*-b@PHo>X7 zRt1DhA%da^HOvMuWp?VLKF|Qd>kS3tD0f9^@)Z9=4-7`KSizXe`1;`~Rh$`P@FWG! zHj;PYQ+3*$N{UZ$B|=w+TVW-F6`FdQI6~P(E>SsS+ycGS zw{E%*k_G1b`we;V%JAHVSZKjuRXHMd!5^{A<=juZmYgig%wa4kTOj|2o(O{1ztiKJ z?F|`@2j$yOupg9(+`wMUM4&w5M&N3l$e|(E%?rB$Nf40~GmDVSzMPBj!6{;yx5H}? zV)J;o-%vR7NqRV7^(7|4c>-pvcwiist-XGgKey^{<_+8P@;jKDat{1)f>v%p_imka zt79}=N#T0zlCH(Gp}4~?)>?m2|8`?<5 c8=Tyahj$G{Eb_+9x{O68acb}5nLuN2M+ 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

m4AijrS6dh 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 >)D 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̑e8`YQh!IN=c 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%0DQr6oGt`#e0|w*74Q_}^20kWX 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

v)^l?5GRj6;d+2L*DzUL=a32h`|)ydT~@ z&scftHhcBffHdz#cjmBraKTe$zN9|7aZK*Ickv55cVjJ*!=$c&K$eCVSF%nQMyept zf#DT9hRG1WJLpe5wW0$2!U2K&1%17(+(}1qum6v(Ov7WYl!Q=Iv4w@9VkZcY+*8^* zpf1?lb+Jt()EiPhGc~0lWg-q9ujIp$cfClrV^p2AxxUcms2Cj-Z>(&kJ>pFaaT-#W z%l2O4-#>}MiftXiCGy3y9{G#6mIpkO%Ut>m$Ed(kB4+}KUKruVzkgpa!%jHu@HS-0 zBl{{-@lMC4>YZJhQ5|d5S#e^8B9qOK6e-;mRGNh%w@*V_{Hvf>fPl95 zb#dCT`n)16FNF2~5cQQ&Rdrq4hi+*>>F!Pe>6Y&95ReARLw9#~H`3kGCEeXE9Y^5X z_cO*jzP~UO&SuRyubONBq#;8TKV6Z=j}*GpJS-Zkqg>r6dYj^Ai5~d6(#aR&4pMVXL4=; zf4-9`!fN|Y`SaMgdNq=(?suhPlS%%9GOVdKnLR-XiO(wrv1tNFv||I7QL2V7kwTUg z8p$C!-m~Dn)w>6nYhkL5E4Z_hBZ0x&dpU8`C3cD1yI~Sn`IYQ0E8)E&BJCrC>%+-E z!4+0=ff#(t&MEX6rS|JslNos*^h%JhkwyG&t`7~&&T8DJrR1bicuPqplQl(k;knR! z_=BS(Zr-G8GO44(vKVRJmpfS4#+vcKWMrB`^tRuR(!?!N%p;>65ok&W{d#65>jx!4 zz4zFk|BgeUreYj$HlIzuEDtd26L0S28*(I1y-&P9nDbu;t%2#kINFr-zo5)wmlee_ zJED2;6syXf3uG+w3_E&>8J9XkATrg!vAp5&IX6!2kGcbIB7=CZTM6cRofiN4dtA`L zB%41HbRCriqO2b2(LHG%N3LsU^QlphME`(9G&$7gzuq=xXdm6wdgF+*=1ukT#Zb;k zRS+WVSq-SyV2?J&(+_XDzkGKc-fd=Ck%{m9t8u0q*>GHKx)W71P6*SRb|6HitZ>=h_9_F*aHjl9vRK;R_@F=D>ml`BBEllcK_7`6>6#VaW=Uvv^D^f0=81 z5QzwpSB79viS}M5j@CnbOIX?k^sJ=Lx{=*xQknmi{uwm#X?dzeV?D^5z4d)S^W-Sr zSqq~D$-(6FCO9~ItK4Oma%#8shhTWZ4v`8nM?h~U7EsD2AYKDIs+3OT*ccv?INy=_ z$cl-?aDhTXW`Hils0c{&8yWgt6dBp%c$h<3BZi})wo8cwqNaUfRw;u{v2mxuR1(~D z6-Z~3EtVTd^TVhx|1M;IQ9FOIyTezqH!ObXQau*qF-!C$WM6A4HFDy+#!Nl zW6J-5M)u=pBXPcW&%DP(3sHpJw?wyNFSr5U1^LUi8oOAc~aJ&45j zD^wzOdolYTTat7_O(bfAM|8dpkSi2m3?O&#Hx2^UZkIX;tTR9s%EE|oQyFKN9 z{nH+=liDa;D!#~={dqRn$(54fg}q@`IWvQxPla-aghx`A7g{U3!Pn_=Q!{Zo-5)Rc z^BB2<@SuMXc4fuun#E^q0Ns<4tP2Ht$i+{>-PRZfUP)Qypj(`UaS^dh++594??W zeLq%c14t`W211#Kq*E@Vu-Z&o7Yv}tG73oZEyp+m^1O7D~0ry?BMx>pC2?X%_! zp62yNA;|i-%_I?7IXM1@VJ{)$O`aC;@8R-E-NG4*<~zZ;g;?lzXaU=zmm4oAF}8R? z9oGjB`v;up{GiUK5*GUsjr0KhSIROL%Blmi{>dd@qS4H9_0>9eg0*Ir91e*>22vfj z;pMXLmm+Z%oHJ8jVrgt)aMF&=R=}#PE$}KrTv%>TKjRR!)w|aQ-s* zqQbKjy{uu}&T?UR_%hl4`Jc7&rHtTyONz@OIU>dXA;W@Qjzct($%6_IOCXiO!obIr z+zE;dRHn60(J&LaU;Wc7w04}gEtt-zYqI?H{xf*y(C8Gk>gVfKT(^sD{9DV+pi%o@ zj(s%|?a#2neyqJ9;RMor*)T;}0V>JQTGX^C>(&(HCxgck_TzMESsXWvYTzqZiAT8hl&4dvFq(LC8PbxKN~%4 z?uMGIY~;8esXIm+qC3-9qrVb-Y>k}mI!}iE^G;Ryuf2?w!f90bsIr_=+Npp6By1g{iLHWM>P0lu9U2_D0Z+)f>HO%WbV2@nbFR)P1Yq#G@~arQsd7eWbz@^X*lk zJNniflsM^`rWpXdWIUe~s@aHex<@LqJ@}@zWI>?jjb%O0TIEg7i>`%uHc6&4|K{i) zm(OKij;Q6&a+ZU6{_(u0-2w$wL-fbxV(2CWZp!3~J)XLr>dlx-!$qi8|6nPq+M+#T z>ZWPuQ*+O>>f!D9D~v&Nj{EFahqjA}+f5Ps5<;)#FUONf9MfL67T+nNe-!y&bpLk0 zW_cqpXdvz$Ua-w4TO1o&YYWi5_p;$n z#1EniQICY?rxL3#^i&}7`$h@5Zt!+v@I8`Wr#RxfJWCy1W64sxyc=8`hCi`p_gMEDOic#L-UD(o?^#-no^)gWZ^=EdI z`8F+i6RTJnHNTCu*Y-ox7}IN6iFwEtbm}!mEB zlm_+tk3b~_@yhNOCeVf<;pMvA0+`xZM7=!icO=N4j%PS1NQp@77*h->Urt2gqcDa; zj_tP-LhM>wTYOM*zfE zz<(#dB>`Z{ua>c+fXAh@m!N5ud1j}?$T%IPe)hA%q>OGvhZf&@6!UkAa)SGtg-KtA8T!0^4 z=B{tsVz*gET-Y*%ZyWsexB1-z9^1<7aeY07M~uO8K@Z(Og&Xbr`L*B4%gXeoF5%&( z*>l5EQfGJMUChknt!^YM7b@tfqRi*FRJj#}I>;}3PgnMmeSfO}2IQ@~$@_GX1dNg) zrkPW&{LzjE0n2hRw^syRN{>|!NV%u|`Poa3tZoYr^`BL_+*eoL+=2fPjqE9+Xn$Ub0 zid_{6RR>Zw_tWt@_qs=U-^#|dBuhSM=6H^&aw@VgcyJ6=w54e^QP1y@VPEW>af^@T zawFKJ0rPM0_Kp>*Ly@vIDDA5RgObVIVi`3;%N@A{l$s9)ZCat23~<&TM~g;ehS){T zhs8B+^b4?wvbsS$DGB5(gG72|DNvxaF=;tCG1_gc1mW)Ypy$Y z_C!>-kvHy$)ZH^bsP`o^1fCQwyuO*WHIk?CiLbnyp8;()xaCClBR+HOU!XYPDvnXc z!GT+Knw@7$2RngV%_M18X}_q>mMNwRJUnfL28(-OJ%y|`zvP?W)KqQEtq%EQJDzI0 zz2jBKyoM)xp@7m9|CU?vWK&OV;!p9u~-tDKO)Oslg&f6$aEzUqt|s4=Ii<_z7qlvm%>yEXIsfjcvRo0cmjAvP8ns!0}O0CY~maUO^aV9U_JE%x}- zWO7hqo+Iml^LUstG@3nZDo&|T>iwFUp-v^%YF1h_VCCY15Ul#sx$Ud8|6xJ&8Lq(R z!tH%kyI{DkyBObPNV%p4Tw`0St>4WsBx|o*27Qqg*B(I{yI`~*kz$NSf>f4}N(5uO zpnw({5&B0^s0==$Unv#y6o)aAq(2`T1ruVFSnEfB48#y9JiJ{Z=!1jSwD0E%yE9+nxO>d9IeY@qd$@Mghf{ni-!TO|<)7rfz<%t~T=*w5)jGdB5xNi|Bz@5I7-j z?|;iY-Hx<>*8K_mRJ>3A<99O%dSV*O=Bl`$JQIoDXH%2@MLCdgS;mUD*j_f#;0>k4 z@N&uTL*B@l~8=61Zw|8|rtc|1qJz}wB zfe|^mioD|ToOX4&!Fay?4!{qST{r;tfRJt4r{4p*$=nBv_ts@??@$0JdQL0D7}Q;4 zEzcfVp}_i&p$B#ma}BSpJOqYsD(djX{7zI51ZM$nT!ZgZdQg+!cwzO+zavl&|5@W` z!)X&BnHmaVR>6R^`VTE`lwu1*Hxnc!#l|){^wCqB=ZP9i_#>KBXC3L)uR)v6j$?XK zE>3wUsJ4FOPQpOu7^8v9flkVeY;qz;z_D2N42*cVX@&nN(HjEipGb>7Eh&x&)oAEv zM2hUk*@uPx-6-OciM8g11vY1y#y;!p-6)D~2#f`el$4poa>rG6e)^&|8 z?kYKv$*-f8x&Lxb{wMUUlE2P4o_<0%{;!>&zOy!&NC-dh5`ufb9FE_uvQPj&86OEm z>ZDQ?eSn39hYP1r^a>p$%nFT2LH-Arbbts}l`N6W8YNZ)C6fG0I1(hRCu&4)(wQtK z9mYu(gt>5JEWiZN!pMm04>8dZCB&5Z!7?bHYf8YlQS5L{Nr{N?&dPmW@$dyn>`F2^ zajk(@Pi*mCiIT=rUrWo~`BQoH$EkidlkA?#F}lXFFZL~faZm2Ukmg8Jh5owfe*ZoH z=lQ^=ZSe8mSvM5RO8>naBwrlR#*gA*L8SI2m)ijk*IO0_`b6`1SoHilw-WBl2<2WS zO))P5T^^QEfBKLKPJ6^H<&}U_G$&b+*&Uh0$O#BjC1{$SQ%WT{X00hRW;@VK?3ire zBw(R9{(17Gm{|Tpj&q^~q%6flKA4?@H3`FsL)kLx{aFao8st7;)7&uLi2?o6WmNrS zBODXqcpho!z2-Z&`QtB7%?d<@10hf%auy!>4XS9R2wi1uIVl(r5#_ysA z+?yBYtBGOAr0(_W@5M{>&kfZ78We_oF(=mw0d{hrur#)L*fWgIvDVo3l*i*sObQTv ztu}VvJvHWsmLF+*v2A{cA)Ph|phl7?67U~aU3Dms9}>#htc`tJTrJCQ2?L$#YCz2| zYs^pGyp}p$*{M_^;Fhpn45snTJ?Ig?%G_(Me&K1BzENyC7u;KI%Zqgb;*DmJk67GCca}J2;&m6A6Y2_vdp7~|ZW{V$DEr4i%CrypKQWJh<%W#07XV751+vzz{ByrjUAW z(?U_qz_1a5D+y>T0yMJu7JcdbZH&IPi5iEb$7wZiXK^X3dbW_w zPAvA|(RL5Su}hyU6PTKs0P5k043QL8+DGEQ^-X)jutYfU%q99krXN7b|!Id)(%i z_;cQKZ&?8G?%1%s)6Zk&ng{}3QxD8!wryKP+{wA68gx7s*7+*5R6$RlAL_)Gm^|<5i#?ybJ}GW1|%bJ~TMY?Zx80be8il|ZQUuqE;r8GLSx zS0ciPLhTzIl(;33=Qz^w(0L~6j?R26?C|}kgwGM&CPyKYYgolmAvH+&0&gdSrJo&) zWRTxOu*!&MHz#6TU2UP<2&>);m@THF{eRWVxpG4Rb?(1v{F438vF^6{G(d}?#r!YJ z@p!qVKoQbO_ix&@;TWOA*~9JUmSeN>dw@tv+}~NFmC0`%nZbO!S0Bol!nW<}dxt$@zYJ2xNq=Cibw!}sT#dD`xc;>=W0@>+C z#%;#Ct3Tq)!yuMIHv~pf#_zNnnLrlt+m}!FduKe7fR#pu|1_n#>D+h$A54!chDf_O z;W?#pxLL%FkcuX?>FhWgw2VL}!|@q81fwP58fE6AMsh?tBrXkW=$;lsA_t2K`HA5> zH+ca)Fkcc7rLoDKumVI{KO9Ppl23|k&ZhGV@7VD&u!t0yRQUuHT0hH+g7xt5H_lu|nOJU#zn zGY|8P%8(WpMqjbpKX7gXDe}{9X1AcC?y;ZJtM>P8UGAfuqIawX2;H~IBQpQ^7Xe$r z7r)9S)5EmD=q3li^^*F?KkS|CxQnFO(h;3+4Je?1Ex^*bllc$4*j}{?^nHzf&C72o zHH(@XQmH-#jy5n*7n zjv-je#`s_?Pr&XZ>Fj6CkM7*{Rd5}f&FnPv=2SfD)4`vEmrtYjM9|w;@T~Fh8Zk2+ zZ^yM)e*ff0boSq7M}Rp7R>03_vKQ^3+<=`GY*BRYB#|P5vB5N)Z zK1|q8;}>eI{)x1Qgmz}vyD2~>L!GLw8QnZ$x}xCzh=I0P4UKecv+u~aGe0P zG|ijx`YIm-XpzmA5e!v8+q7RN{PfpyEk>ECVd~JplO|721ed$fN37^c0lb#O8zp8% zk;HY@zvzSf&3+Kzl?UIL5v7A zN93HVP(b;ENt3d(^H!StNkOYjxy!%IoS9wKaX;qaGLCUbmF#R0lK_I=r8yU={z8~V^ zh=}T<0%(4ebhh8maN9EwK zusRE{$w5C<8PQ@{q;DT>rx8zMzwdFs~EFKU6(|FkOowboXo(o{8rwCbI@DfTT|0?JA*g^Y`!*`T4 ze$cZ!<4s6{r8AAvAvRL0Ld2O|(5yvE-n99#`nd^Rqg|24_BCnd<44s#XbKU;Uw6uS zue`igmW!XA@7GuRPp3tbVy{{z=zFwNvroUMa@Kp50SCv!(&c>VQ+0=lQ=;(r)bheY zpA3J!Kxv{A_r(2a%2@~WI!)q#?iFu53h4Ns*|XNW0hIHpHhO*_MBvt$-nTP*js2HQ z&cQ#5e-;b9Jz*&JPg7m{1OTy9+%;49x`(vHw)Du~d=Y)swZL}kQj`CrW6Y)a&CqO7 zVKdwO0=S!v5d0_DW}5(rr-9VKpRL!i;)}-s)3|}fy@YrI3PkApyZBc=P@K%&2eHk+ z1~f~WFT()@By^#qu+9EDz!cNQC1fAJe_1LxohGEA#&jsF$Z~J=x%G&GdgamQP>~pn znLqk_it#o^FT2@BWt<7`W@**tGTap+?dYmpwzjl!T1q^z$<}N>mU9knX+qbt`|55v zyub0kaRx9-C-XmxhGa6m5bOnTo#XUf^QTg0^oc9lj7n4Tf-C6cuQIBSuFGnYr;%af zR|pYyOQxTn`p>$%S(Z&E<$(M{Z0Mx_c+wGSvU5X9B+`OS{{xxq8rql=*Tr%!ZBDHi zj>GK(etsYajdeel+}UN?Y|IJ*orJ;et_dVRXf~t-RSg7UGwuVkhnMe6AX#&hhh>R- zz`axH7*WadRZLQVP)QL%_+hAFP4$ilrQhY>7<_5pWHC^cxF&|h zFh!t(pt;E_*p&t8pP5xQQq$7Hv|51o70TLP)RsZmqpY?YcTUp+Z2@)*4v$BQBnsWr z|IZpwJqGxm-L)co8X%I}G+c*F&H$}%x^w&F+E2!)7)Tr02_`tdC>r$p6`^Sow|0Ri zQcsxpO_(}NK_HnVKiEEe;PMU-V56x8gFw>Q%sNycKRzPOQsW?E;{t))q%=~g=is2o zxx?*K)CnzFa@Z&Wxd1KJg-=~xU|bpdlB<*E=c1s_#Y9MCp?(Pi-Hui3@}&+e1W9Y#8XrP>-5)nu-xhr^iT_4aTj{E$2R!)B=-gY;+9Z^i`R_ax*3=QqwnSSK^?cde zCGdd_^%S%geE4N^*M8U4!Z&0$Ql_<|*zU0glBkLvNMgmqL!y8-RVoNnEj68D$j?Df zr{6@0f>4Vwn^^#*)C7TRYO>eOkO82a(c(ISp`=JHht*Vc-G z%ipOFw#!m>3oJP zq^u6qvJjWX){1gxzSL_`wl@Dzlfrt2#|caK=$54&(TsqV=3)teCeRPEJXf=MzTw$e z(Df+sO1T;NK%(Z_geDyROIh*fq8b>p4_7h>A?|Nh4K|Jd5-?P)4mOeZ-l0+tp6#ad zXlvlvee0kzHD-mmEll#YMvaFQr%nB;mgvuaY0~YjK-NZ(%s?A=g0Pf3nH~^wzFH<6 z3L-nZB_JUq@mzhC(jJphr5gfMP&AX#wwsskRj7r)*n9YT>^Llj^1kNdf!j8x-{n@%?qPX=OeK4>&Hq8 z%^(WGkWBg(1_J59I6Gp3NTCo_MKKr$SA)b6#w8_O`6NGM$}=<177+fStM7FS|EN7G zsFnZA1OquO4&T-cR&o}1yXcdI;|Q4glkG0!0kZ0+zM$ZuOgAFM6ejKh`c`u(wf&;3 zOjmLW4e-bMJB^}frQoyl6rwsiHv&@B2(AW1sM1&!BCp@-KWj00Nb%mz&)yTbc6Muh z2noB{o6I#C-IFi>_qUQcHtG-Jdl(waZMe)?bF31%NEYy8qm z*go+&=kmxE*GXcIQZeERQ{L}l6==e{LY>2SI&#RDiJQH zpJK1b)w|~tfc-e@@W^nWDgckKqdV}VR1-X9ilp6%O8M8->UFzCrJmXf1cDs$0z~A7 zCKo(29s;Mm*VYR z4%0hDzcgmMCZ0*oX-JsND8Sif@P;7?>xWwRlym@;M(%w+6jWQ+ZDDj2hV zr%sOM^q=hyjxl2CFu9qfv4myPkdP6fsK5eopeW&_R0L31KoW;~CXd)!C&gipIFKzQ zjT*U@S}%@_KD_)57-=P!W{Z@rw=r7V>|bAQIaL)0eeW15Q1qWP{}XvkcP4I$@dN8= ztUhd=0hgsqBL2rDqk$>gwLf!!4I~^9@ObUr7skYYmoUXAk&U?%pi{~ukS4)GGld5P z(PL2m{stn26-N*!l@(3^!HOV;asFx-4fxX^L=1%(M3)y7X(~#7aB$)Wxa&r;h)ZN? zA3oC7?G00w1YC&W0EsdgIz6cd<(c_xQhC}akxSLlpv38nJRsbWErp$LO$~0;v69UE zDUSPbUQ4!@SMAk`)-ppQH5SO`(UELH9G%b50YPqma()qv+sElJWBby;;&maG1dvel zjfKs3iOODofHe*IW_s+>xwUkl`6KHXQ9_gsfHY-d&-Ciort0@^8cX4nB_XaJ?vr>s z@g$`=9(`-z@Vb`Vsg zgIU1XrsO=*ZjIoImyqP%qg@Xn?fcQgv`wyl{PduN2Ll;vLKTqAshY0LY!}kajI{r> z&iPcG1mvYaep$s9bin<%HEtU3cM+P~y?&{+CAirK|{-MUA51Jp`2jM}82KhX9-&-%N{quuBpdaTO ze~zpo*X7#mn+KFcN9x@9hqxbo`V-hRUI!+c@03sL2ZvOr-Q8sg+xvaY)&Dq>3L1a2 zm}@>BZ28Bbuzv|;XZYljdGsObGOq;=qd@T4mfOIk!@$S=4yu$IrR9!ny8D>uCFei; zBfa!iut9xGD%r=nDo0oM7Z4CyuI2c!J|k#t`*I@W(ayrH;e$`u#BB>U*k}w~LBQi1 z&t+@53{R94*YqzPWbHE%I!~I1mO(d1r3ZFum$4VB2)VIJ& zgykVy1mitBNda307~1g4#rbm5LCT~zeu`sAuH#I4c>MS3<}Q3h-;nUUGv(Dz@+^@vBuVjcq&j$lr%Ex?Og*0&AFNuRi(;^$NUZ zA*lC)-_2I$Tk5t@7GZ7)Uk&SVCua1uF3*}r91aFBM1=zlTGTu7MtUStxm6CnDvpy2 zlKP8_VtkhgfVwEAl7Yq&#$^=-MTxRP$HPl&N`LN%7oZTqFrt9Q!-mncl7nMVRRXi+ zD@e2j(IR7AU<021r--mSWotbcsmx^~T(rVCa2T>AU`%!iDMM3ed&bl8(30U~`An() z%vFA~-E`!Q_l=BsxV{L*I^}F!!cN&%KRuP|>(q5QRl7SDtMT`39?V`>tbG9hZVXog z-q!V__sFsj?@A{V-yIlofZI3WcOPQoD-C~~U z!ADPvnX!k2+UJ}&n9WcT!c^723ZR)}u#`&j{E^$;bGj|S?!63)(;Sso(Mh8bQ?(Ii zG`7>7FOGj!4XsY(FY(s|TH60kpln_~5+u_d&rnUl;7v0+oShMjQ@B{-JJ(?Rb5MwqZAF!H2rH{Gk6rb-)<8_DjolrH zEyNWrA=3VmzA$laPRmW@xcq{$$@2%Okq? z*MoiR%adWJCG+`ppkxcG+Y6h%kLQ(KXL3AlT^<*)qyj4j?tdDcP0ktzRv6~6^ou4T?`hG)VHbf=X~!Wvu5k>Zz*zbN#@FD zK~hlwBU%-G|0WK^@aP#4jfK7OzHhXl478;Dd+DQL6eaUfZ*_O5n+)1lI{>O z?d4E+!aq#S2U6Z6%84SQWZXFk2hp-99%E8ZI6ETs<(Vpv0qQ<`7z+b+1%Uymr!?fDc?=LnO(+$VForn3 zkunGaAl!M#(!}g@B015r@$m3{WcpAsHkh!XM!-dRI5s9&3OS|XfKiefNkPx6GSEn( zfG>+E#wLRQpD@%RoKMedn}$V-aj?5#nFxTX7wCRx>Jwg!tL8spXWJ#!%HgRub~Db( zZ(|ioEfVmep^X=@XDE)kzUF{@993s6|Iy%D)As}{i3ojU@DQT|`21o5K)ZZyeLk%) zI(5L!4+Quv}@0N@Dq(wETdz|2levVKiG<`p`E6&O}}DZuXAG43A)39-2<ro>L5(V%Ysu&Yr?_+R zlD(&cd~`|%J8vI$=RPvuPV>=b2T1gM?@?+YGdZg@B8QFx*4o7-101EdDdnJU8xcX2 zZnLrllt>tUl+4slNkLeom)ovzy!lcNOpM5WieUm&)O_yLjNjSWl8Gp)0q>Kpc3UvH z5nY|$7GE|XNa~oEkmo1GeK4=FIJs-pp3%CXmK8}=!K?TEsuJK^<_FznDM)@^xr?U{ zMyr0OHld|ffu{ok{5zh_K!W%o@ERa?J@gJTb$14)gZw`Fg3Jhu_g;NtgTLF+;xS29 z6a`P>1NoNA(zryxH&)X@SL}~d)&x(IvbPUqbx}C9Y_q+G>s7YvgmkUyTkZTnn?zlz z4}vr#5vnG<)!alH^{z6l-h|;hnT4C>LQ)*@aU}b%}H1j%; z36e43(DqDRlWIv4vQZ!@zWkA11FR*a%FCd$gvNtFfFbE|K$*Koe}3Af#)A*&Zg>Wd zY?zMQH#Y2>W9ZQNIzN{oJ<`!?vroLUhbwp?Z%YA#K8X`tFNbL9KDWbDK!5 zY1$f^Ehwz#3`zzUqPJUU?)w7K*(ZfAJ|f7q;L&-+KYdjl6#FF@OwJ!MNzCj9-s5h2 zmM2?^*6Gg0MnHBzxoAK05-riq@}leB{?0u7dY0c`P%#}HK(KFXQ4Ey52mHT4qP2nA8j;BRf$Hjyn`$AG-0+S#U~4Vdh@EmWf*VhPg^FE% z)G}ngj)^6RBevqVnmw5yKlY(=3fCXwHCk_S)$F)7FU+E!XXY`-zGE-_wWS0ntttf! zuetle6*KhWTHrv((S~0@uvy`Yqt&1g9hBK-N2v9(xKV~(SxY1xh$h5?f&#y_dI*xy zU!-xPh~cneK*{-Oq0l&~%rZ!4Q92}y0Cq;a22KK{I9wqtBXUB25Mq=#zLNUq{vfKy z(V*%c(d?MW0JT@`vL$Sbc-*s|@RAS8pU1-viT)?ycKjDn^=-uk)LaWSHMKF4Ebm$Q zv_FE=T2ss&i=PE=vyjYs=t48`hxONKi9 zAZN{=v2m100&D`vRjwp*#!EJPcs06rizJ5_xNlgVOS%}E2sri3%}OcPkGTKC)I3E@ z2FKm3M{e%Ic?S8}EQJEWEQq#i*kKoGIt={+EtBGt={&GlrJv{Z)q?LK&w0IM z0_;o(W2jiJLj*JmHe;xzUT>BDdmsX?{X)Cy69%l*a(fe;KsxV%cwM2O;u=S-=9 z-Xvnc1&XvyXYL6%x4=RY$gg2s03ZxdAo@)-moXid&XX(Dw_3eVj9p8lb9f-(fy3`_ z6S;xgKvtxl=9N$Mk;FEh&zO;7*mmq+d(m5u@0OX%zqDn6U*(?i4!~!bF)T7vGz8Xp z5B=q3c!XL?@)Em&iDe7$Tr01V|AGo9v0;?}8#{RpD=#Rx88NY}N>4r+AMAMo0R0iy z$9{a5OY>S&U+= zOHL0>+h(XAfVGMh+-JbMbTc%ej2;Oe-e_RBIamN9*pvK)z|tfx!#@f^g*CoTD+TjD z*{89ta63aco3wf!i06wFuy=7|If-!jJ-4352EY;p{HQ=CV@|3ZR?>-Be*JHT?b^uU zO7gSNgwwvlTmka&zq7YK`%?EQ%7LaIEx|)$$x!;lIf6Q1AWpDif*s_SYj6#$WH`u_ z+bTwJQUEKCbsra91(bQEq;zIhUCHFRa{xNlBi?cm4%}&R9C`hn;z%IFkJN~k+z8cV zPjq0YtUtseMiT}}iFngFW|wY8O*TOTc8P)(sX+cmYXp)8TN>6PUc3Wxpp{X4Dy1^A zo^e_puuVtHG93hG%dL<>3Put+HVQ^l%}@>s;`{_$@;eqoS0!B(Z?j1(Pf*ghktf&Q zR+$UyC1jq$Tlbb(1}r1Z2c8$OY_}Ws>pwjf0&=cbFYpv)`Bx!G&X(M(z`|M)+CInf7B7f^P5690mthc~T*{jlU74_}jf)5;Py!>G8vEWL4~hi}xY!)FPuN%jlTZ`~ zBS0h#-e1`-4ny%9EAot>;A+1kn{sC49v`sTp-eRa>oLX>Vq+!GT{GIBqyb3S@zmUU z!+@p3FsIZT0c@)K`j2H)DVO9m#y(~hHm#%;XBB}>#xK7EzG!)rORj9YBGvdMS3jlN zy$r2$r%q;Q%SBB2EE`1F97z4tMF9bYS|6N=^a}OWKR}9WKuFG&=o>u!39zC*-F3>) zDL*_Ye&tc|xOWI7H%myS`QOSo>_cL1UWFbu*%c}{6d^sa$yrVSt|exIMq!+DLzXye|;k zSQtbRd_+516KZ4TUhON|s_neb?s*d1+tI#g7^`o-w@y>fadnVg`wgb+2;q+1h<7@V zkHHkuvhhWxpOs)mhN~D27+fuM<|l4X2d;PzZ)6Jx*5^o~AhMnRzFoZ{%w0}w+Ffc0 zIoe0?Np;dyUcL=jRmjb-3`UD}H)p(jt6YM^vXR}c*)L2B+?c7|Ve_)vrM>z`2NEs{ zR>1MHBWVC(eXa6Rcvo1y-|D9H|9slJ@1>dYW`EG8VBlSySQ_k4lKD0(efVOz8DZ~j z+CsJUT1bK3Wa{Mp`*h8&U)=_pr{`v}Ga>yKjNrrfP!Cdrr=pJ_ha1NZtw7Y52~-fT z;8u-v-%F3>k5%06mu^U(jdniu%Ta&GFyY2;>;2M+_L7Vx@n)xhayS;AZM4Y zAK%5+^|PD8%~a=Ne(nUJq&ZqA)#U_D^RcvPDa8xYV;YT;vqj1ba`L(|*$YlUUx3*}(TC z*tLozjbN3?ax8;{(FWt8rBGO*F$hymG0UN_-E#^-QP6704LB?seKo)SC-FIE|ExJgeo)2K&}y#60k7NT#8+5fzsT1-+pCXGamcg#$?^%S zs_>=Lczvcef7sb`Y*Pr0TyoR@E!(u2nk0RV?T+Ew0ln`kWpHU!(q{~DWDaG6 zssI@h8m@doDhEe{0x^mUmrII_y<2_@gDE-GrgOqs&cCM4t-%WCLNqt9V}cKqg!@>! z5=F86UGr?WPKVjlGuc0RIE#Lr{ic$Te@!{^drU$)gZr0lGXzaMmK+Wki+m5 zvtvC^_urwcAEQSt4M92&5?B_Vk9vMvlAMoTOHU+lN?X-NL{0W4XI~e)d`tOaq;%26 z&uL6ygxF|e+m?=a=7mXe7IHXcf4beomoj#Hxs3n1s#&usU=_Okvh4sW2XXSw~lB(?D zYhf<)Pf;!B;ddT$4lW9iJCsj0lU#~JD2p@;3O#X-Mowq8-X4-(7pC^tkf8zejiFS> zwZ!SJZMn=M(sjM6z>|lvm;Jp5t0Q(Ff=#`! zZFJ1^u~KQesTCr-&Msa89MAy59isvHMry-?vEL>ixV5B$KU;kZXN(_5r0@&B*|Ff8 zmoAM;xdw@1AjXSgfPym3O+@n&_VGpR24F#~gdZ!7Kw@L4Q4V!}co=m3n1m(5C#(#M zq%L7soziJ9d+j+`d?TJUs_`1_kK^!s{R{t(rmKv~vJ18^NOyOqbV+wfH%LlKcS$$W zAT8agq;xk(OG|f2xAZ;Vz3cvY{=j+{JnuO(d-mQlV~?2rAgA=^yd;}4?zHzC>$6H( zwDF61gY9W$jDKpuzI*XmvkA_%&yeS~%9<<_*N(zy5JP49jOGy8(ZOR$(7_HgchQwl z0_S@)GYrx_C{Sy$BN@YN=|F|$FDp_9>jdvx1;rvV_YAEvPa?SxhcOsOlBHN-Wetzmg#g)v}C!8DLYUd9-+rbf9V5MwW)$<*It zY4Ol~puAb`i_%myq6tzfd)bdSM*z`#%c1Jos@^yr&u=wqLCpM&YD?I~RlMzqgDI|# zy;Q^U?pW~1u`iR{VR$i3{Z3VSeyx@z39aNL_YbFu%HN)H`=r~_Q?gagZPUT|Q&ePw zmSyiXG?K>Hcn`PF=e(NWF4K4Kj*zc%B4=hEc2OfSwEdp$A{2{s zS&Fx8scn(#vlcnL`4aH1a!Pyh?YLV`Yy)|0++qd*01i(R$@7wGy*&rsvLJE@=gegr zdPk9Ru=g-2 zW&d>}%Z18M##!Uld{CBY^(XK2BdX*Kn@IwaG7&@9zxS3e5|uh{j9ypt+s9_T(w&Ur z_E~;=jt;ku_nay;n4&KIvz4_FM}2mp8=0#>#bchQz-l(}LEz2L5aOT;%G!@e3#m>0 z<%CRh=e%a?JOg1MhHoZ}e8-VP?2Hf;(?L^%vn3}Ep*XdWjIHm6O2_3!@0SyW_Y4B# zK;cQ96Mb>s_s5ULT(k#nVgysOqo@+1m|@5uVxSzn{kn;PyVWmGvm%w`KfzkwK-O_HzJ7xP?{fCmsK zp9$=TI*~FKjLZkQ%sc6RA{wuvc7GpLi@plUPZO>jwRmEPSnvPe3ox~(Q02ctcAh`% znti=WvzIu61#p#doZ@7ev=@;FS$9^0~HN z9<;|17NsB$n1nk({^USN;#yPe*yei`!1MxBt*%!AyYf61&*OJoObMSo`q>8))OuFjzg<-^&` zJ`_zT^w)ZkUJ<#-vNa8=c66sKdnGi#w0JBn#sGvK^IXhdr**{4jojficLe<+Z?i+R zEMPlcUq^VOAFPe? zk#~hGL2QKq@~!P-*&JGgHhBdnii7XwcFj-W(TZPI>P*h@@r-D#MG23dqw+1x#BySE z6+Z31Y#cvlfZ2k(=s|1M2ZG8{edCG~b}3gRQ~pAF=goKtflEr1ehE_g6llC$ipdKe z_^!;Fbv=#;ELugT7?6`8V4!miVE7)ootP8`BZN%BUOM1q|l7>YR+nJFY6+_!6Id>D=5PWRztw-5gNTBiFo9r8^J~kD}+5VCS=?;=TWqHzu1gn zUHm*(uM?6MU5o*Dk-X6+_rNIY$7X%&Mmrjq7E-=WHtmLOKA{SYP=EYYg8f(8_aaH( zqaK79iNialKYT{_l4410r&k$k?&-(v1Y`PT7uxZ=MvvZIcIT^9)vv?Lk6Im%E>C+4 zot=(^L>{3b4V!95NpYg{Q+F)Xj9;n(_DEksP7bne)rb=r1I|52qS2n`y+0Wa9iTRv zU7b+-*Qfd&D`kg5$W$qnQ)rRqX8w{m=Y>t>$XxjhmSaD7_4F`ene)#9zdERDz zBFxpkX`#2#ZM21q0Xf`$@%M#-yq%HOP_eX=E%&QGsTNZ#OQ_N#Ez>(`O8y0sApL2F zhtt0})~+LmC)#(P^?x>=-_bALOm^%twVO4S>d6B?tAqc^k7X?R*>unMf2O)>ogy1I z5bd}6z-0yO3)gMHc~VD>Q&>=({>F)BB6N5y;XlbBiGIKu|V6jA@I1_R;Zs z*`46fPYhtO*4r5QSX|}bOu7FX?DRfLWbIsA+}2%9xmyX*)Cy`&x(ib&N8P}3;t{!}Bw`jiUFw%d^bDIFVst)d|5~#f%%XQY9 zP?QAw6q6^@3vC2(ZnP7>D7XdUJNS{y5>jgynRU7_s!HyTX-%2D%zJcR!{cBHk0kmo z2bBpS&fUaA!$>XviQAsq;c$t>3ocmCrwmD-YLk}=Pu z=4%ox#M{_}v5}wE%MwIdYPJDAqV)s1im5+>+}`6mg9iYn?JEr2`5lJSZy@u_HWr4% ziMnb5v?;%|p&_%cBsOcLWOdwx5V7!P)N*$ZOSluFC4;AY4wFYXNZC_Q?yt_yeY%y7 zl;?nAE5WPLZqXkXv-W6!^Ojmpe;VSx|7!aRhwJ4SA5Lxqj-&jJH9byQe%yq$3K6YJ z%od&7aROQ`5#ePD7-cV{^2Af%wYR$*<}PE=G@8V|D5RpMcK3ZQ=pk1!>1%O)Jx-~TFu$iVVxa2Vc)ymsa$HsW%l ze6)7YiG}@MemZ&J=(|~)ypbU^yttqBMuc4*s_I0x{s8?UgBwZ;x;RGd-7!Lf2&-#J zA|hae9$fdnJ9GWzBQ6Z~y_J;j9nh)-{IP1jOB&j_Qk!InsX-F8sT}2sqR+^$SveQY zC<-c!vJxu$m_}9RsRAMDeiCNl?e^WGv9R*Gfd~RDTNBRiI<*|9+5|j3i=LhGx5V%$ z?`73U`b^@W5RmxvAQ*Xl&{S}tNw~ICV%&%nc_TRGKl|0Gv5t&0?xe6rH>ps!gk&(X z?dDNvnZpFx`kP;K&B>mH|Ni|C%l?SIW-Hc+CVenW?4@srTv-LVhn3A0IZO4av)o3h z+nMh3dRWmQX}*=P3-c}GtDJ`o2D=p4x>hrvj zoW+EyiA$O#>{$cf;r28=6TkeqR=i>|FFFWfw}$jO5;bT8uuyI!(dDjEjhmNYq~Zxk za)i{5YuG^?Z|xI>F!z&r4Ar`*ixja5;blif?{2+y$;*oUc0W~X-wcr-zP(Qx@aK#g zG5#1-bZjn3=Q{`e-BrOWXN~2XTop& zn4SCDxEG-*+uQ#I?JBeG2=C!CLiw|Pb=ds`=+xZ(>aRk`{{+tj+1T0sJR>H=QJwKi zjq^4M8iIuCOvO*Hs)4&02d|=H;*!87y!mgw z4swL_qM+7vXi3EzhnIrZLaTihZMrt&VrY^ThCpv2XBxF9LdYKibV`iF zeGHub6%y=C7_fEEuFp9VPP!<*lv%mCWha3%2Oa}O4_zwxkjlPOCxO*QkYrc36WOTs zTC}=~b-F8#wPVftfSSQmV!2%~tNYvDstE%0^E$8B$W~Q!zaMcT6^q-+p6Vu+{puuT z5Vj{C0?MdslOrUimjgfjZ4(3n*>GQVUZ92MEie`S&eqG$57Wbr0h5E979kdXphGWt z&!3LVb(=z=4igMZNB8fCoDpn_fME`o3@rr1!#OS!CI-q6y_`-3)~s7gzJJwj+NxzG zrhzniP#`TUe9kV-H6?*VFo{chT*P&Cb>{skc$`ZOJUx-jn*Rzk?QUzE5$yR*`!wtydCG@qgJ>u0>+-mG?Ov zm`L2+8<`7QV>_DY{GBeWpw-2aEG(ndMVl;W^s$aLjo0X72Y8Z4*K;%zO4Cr-mN52E zAy$8j+g20kw^Y=id#^IlHMP6P2tjqJ7N2MFVnN;)O2l5?iN!>_hGTJ6bjbAEk4QPuCCplpA}Lv$4}&0Sfm2R zDV63%JC|*zUpj?GCZEeHGMqUy^eIFxnm-!R9A3m!Jt-KKUc3j)@mIOWu6+Rm3 z@mI4BISb5R>wEq!zXr(GTc|RLARZ*!oQNGG?+%R_rT!UcnTtk~pP5Y003hcW?0BBr z%s2h6q*d%0tZywZotb2IzxGu#0{OI`@u)Mh@;{m_bC$;?rNOjV^j?GzcMA$balmu6 zWCJj~Z8F?<-UDDYm}2<9cS36ZJGCmofsn4w9JQ=Ik%3Z>NV5NV<10qWV%P`B213sOwMS7`fQ5 z#Ig!u8T%Ji2FF6248H!PF?w~CwRj&Mu<(WLL)2gG{6 z!#ZQ*Sf6<`Rcw(4)P&beXR?!B zo+6MuKTJw?Q?wE!P|hst9=DnUs>ZYYO4JAcGnF5AE=!&HDW3ADMm ziMFGg&A3M%I?{kK5tqu7eu>9lbMt^rSP9L5lT}#%Eb7E}vLLQR4K~kNMm!+jPLc1O zX8(Cm^_oxMKUv)?*Pwsf__;dQ_Z=y3A&>`<1zf>A9VKqS=@#Wax*Kn=EMs3Dcn0^i)L;G+h7E3?wX`48C|y;=2J} zXJ_m~CfwE|UHwGWuhxeI_+YWuyBOjbn;{34xO#S$N2)t}MFF87!YBS;?%>K52UH1< zS?DzehmUyR;r(pZxQna}HJav@086CXc4kZ1(DV5McVVNNxlM-W>w3EPJ*jq2($YjU z3}euaT-uS1ka6?eV+9n#msLSr;`K_;GFG!rK z(#3Havu6mp@=m%~ORb_vF!{y_jTcQdUBQZeVu+HUfYwQ3o5GEHp3`hkQtDLMtIR{7 zSAf;g;D{U9ltsp_D0IU9&Vb>HnG=b8tHA*zQdy`vj-0s5&G#87P8rY~F%q0y?}zvZ z!c5V^u3aJs-tUT~(*Xgqx6heIMFvI_`u@ZuMOhivOA2Po0j?W^bjukV4o2KYLTizV zm9<7~%|EUtd7~LIiJp>l$gDH-(+FRBEgRXLvyz}B26XIFe9_s|7q$RtplQB3xX&5C z;3iv%?Tl%?fwb>_qWXo;%3Gu&2?bdYxxMz4ga1#87O^Y7S-F~Mj!q$9C%}Zk3&se- zry#&$=kM+J1XU;u6a@rIf+jH5MKPw-S7_5D4dH91YAs$ux|%dmjIr1TlnkOXFYz6F z1i>IqL{%FMrX&f&tOJs%i;g};V{9T~42J9PoF7G0xEi|=K+7hjH_e9=ur0xADtM6} z@sDai8!$n+TrUs+-aAUpTB34;6W;4YypFtT!)^Q@3BmO4sLPU6xGR2H1=6i- zb8~hm8Sv+T$2amF;J&tvt|zS2J0bs9e*f$EHnL5_q2e6YrfjzMa&&a%%^L4X?h22$ zhI(EG(yS_g|MMYgR}}5LVzWZ$x3)+5W#yu$d`ecx1E);RS|tbx-8cG@=)Ai$i3L9v z;NE$eD&>6g$u0TP8O)_37@ae7&&05<#OWSfVBy#O2Y+b%U=Cdv_Ny%fywHmsmfsMF zL*+I7bkPydmudP{vcO6`(u1pqla|%i%6v*DhslU~@<=?^DZ0+vwW8BOXb6OO-|O}+ zpf-)T2~O;#FbR=$4fjbIDebQWbV^QbWt&l_ka zfJaqY_z0RiS}tV*R!e?oeP<4!ZD^?R|7_mKW7J-0DS5VlvWQ-O8{=?#5C0}g@{zuA z?8hX3?e8kZzRTR-{^42^w!f?&SXR7(2-;Y@_BTq%CjTCnntoTr974#slDf3=8d!J{ zA5{{J%G{eXua;s0RVx72Dk3@l#`4R5?1#J1tTLMEZ?3U?s=wWgxAip>;vT6E@l)9s zY>oJUxkO2~F*al^^T3J_ThG4env8GgzB{f>ZTfGczHzOZVD%fqr2EeU{?+kn->^0H za;RGJuRU*Tl7IbJfPYHSoFKu)$N$a?%S_ApG3bw1P9C(uh|ZU;C{r_`%}FgTk&KrL|1BODd6hsXFx>+f zyfTH@46 za-jBadlX}^Ha=Tjg905`K6Zx*CJ}CDVCX`;GAym2#3^&$U@#-R#W^aX1VYO>3C%h5 z28498{!3z7Hm)s(A36gS6b1?uLJf=xJpc62z%fdU_~j?f1ggYE_MkTjpO;)y-d!jB zdH+j|LF$XA2LtAv6Cg{k%aLRQ5zv=^iWZ#Fa-jET@0%v@(D|fBnZamV3+)-Vj%(G0 z{&wbMtjptfopp<7>s-}oFw^A3=}iRk_b%JHPHC4id&n`=ty%Q>ad4abZ6o`QxeSIMS6DQoBW z^bBM5&T<`sIH>({V91E`Uhm+HHib)`i-Z4(#m&}GGOm=_@U}L<;p4=bGm9?z_iJI= z1u)aEVI$O92xAYM5>nD;*VEmaIwL7Nv(X-ffY?1+Fa1?!O z`zLM^S9aLwclbuG^ykG}`bKBksGXTbU5UpRSyfN#z9lc}x>$M_m7?wi66tg{qF9Jc z?5kuSW=uLin^Abh7-+w3$c=JIj_3S>9Yj1YSZD(_6$gWZX1+jOnE70+;yq3|0qzE$dQEN|$oOx$I0}-GxqpX7D-qG+ z|JYQe-fqGBraM)&2n-5+-vN1~k_XP)o_N}( zvH4+^FryUZN1W*gmLKie(u>oAp@*&Gkf??3aD@CLh*%iVK!pZ=qB|uk zzYQI|L;b2`XCzjjy^32%J~zD`#aQwB4}MHsg%-nj7)2gM(bS^BCG--Y$t)dS%SC-} z=mDn;>$DXZR!9c!yjE)lRqOatUq_SmVUz5E*b;d>C~UX+4k?ZFPAd?&&muLe zFI4_y{}qxk@a=G2T10_#lbR8L$D<%bY-YmgWN+i2kz-S=KdTMFvqs`+)w=Un;iUv2 z`Lz?wn{1EMNYAGq4*}t6CF{L&wr{EwF4|!;+F@k*Taphu?$*ilMp#q&WT7tGE3W)B}5~3D%Y~lrWcC@&DNl^&Ay)D~|cdg!w8f zAL;zNpTGDFHWtNc;|N!`Jyi*+O2)3Hu6VP%JTUC9WE}UuOtpt)>90Q?(?`}WCpLX{ ze0#q#rq&D85%g4ZGM{G2<&TNHMjdM(1glve|M~j#m{wj11!b!KSHT_3UR)9z{d-^0 zcuF)cRL#0CV?MXt*?uF}FvC`KMlvmQ`fbNH*Aoy;;EYcqgo#Y=t#0!`YKRfL!W9m1LS z+jBhQsRhWIoF$ChEnAI}Y6M@H`_5HaR-HM&%io!#G$xhy z)?H@j4;3dF@EO_Kv;gUW>U2+ym_>9r!4$Pbc;%QB5JjlrN-D;F0Mx{|Qv}5G$GW#1CXD0~MOcH_Ht7c4 zzr@poMxAh^JtD!Q#u@^JC>~-2n?>1g7Chd z1Zumhj#%+LDbC{?RbwJ3b1;ojB>LG^kRi|*NX7(UTSy_;ld2NZ>^n^kic$)QoRqj` zc;OSu)UX(PJP}7ZSt|YZTeQBiZZ%+k>hb2B6+7~l9eZOQk6_wsFf>fCX{z*GbeM$8 z4kttEw%k+3sPO54L9Hli>8lK^A^S~AuU}Elk@J4K&ZQN9VBo&MVaNLtB~652r<*q_ zgYS0pCdYWYt_dGxK_OFRxW90hoa$@w-GKBRdOVt;3G3tUnJZeqzn%jrqOIZn<}HmY zOm%syx%1fp!~EB_N0DDh--zZrnkxbSKb-Cx|W?Y zoK&W~07DqlhX1C`U1>h)S( zX4rC1mPvA@`_g|V%X@liAN36+&&20#5VbkEmqm&t6l6r?f^LKb`1o*zOF{Fe1JdVA zk4&NO3$P_Q6SBUmHPpVPUv~Jg>(HLFA-=qFtHQM2FKfTG{8X&(zpZuoX}yf55Cq_+ z9N;a64I|-M)1Tfmk+HjHhJd^lwl*!LOPfFcCSm*PMA&F{HBz7P@sCCu2cL#X<3CZ8;4}^Txge_)$)e^@YU8G(GLNi+aCn zK)iDO8fLPt%hYwJ54X)h&m;wN1+l(q-Ppk0d%kND2H7&Z(juSUv9iTtusFsqX$f3i zt!mVgm=qa3Yq~-G@ZrBaus&TDd;+C@(?Ru;TuTp~=I6-?2_NVJI`@F<(&N1NO#l4? zE!B!5KI@d>>xwODu)?*@%|jra_9sFbvn}Y|eZaUB+PmF67*80a2x!dK3sR}~q+;pj zMIG~DYItBDMi&V&{bOP{yYc)h^@UD`#G%BmNj3;xuJ98E%9P23AFc8Ozoa7vOrI$# z1X>Ed#fb~srU|c+#f4 z^#PbMc+gXwVel&o-^?W!!%SwB@91Dym#k`U%N6djqX2}UCYZ?q2D*1U3%rMIIS$uE zp`5ixTnZZnUH~9>JyhoRmcDzDZ?!PXJ7=&z>a<#&+{~G@Ciai*&q~N&*HIC+KD&rv zbqv}AL{JY?g*kZ}AZ@1U7)L~0z8YlKJ4%esCLNaMI@??h$Wia&8a;;l+wxzD>2!i>mSoLp)FNfg4Z3=N{a*&mT1An) z<8C#n%7pabI=!;zQLg1D0*6AG|T(w&n9}s5V2-^1+0{`^pV3rhgx3JA0Oh&(D`(q~3 z%UG=hUqOeA$jhO9kD5^SHY%os7}67CG-X?bPL&)T`O7s54>WtCM^~4>FhCkT4>?iC z&iL~n!q=gcO`YS*T)8cE3`)GieXdVDb_#}m7w{!xha*6fD?`a}qW~0yat`jPXmX>a zo5G-*`Ly39cWcJb@oH7TX>ssM=xVwC$>|H{d1VpU$* zDOwDuGT4bK;Ru%sw*28R@feBQD$!l2s{7o3J?*8{i^Bo*?Tyd!fso37+Aw|n!Z)A9 z_aoAb%?_?&+0^o#DpSo|Fq9OIL4!Ua70Xy-nbisOW;cSpoX9qeslY~mTc`&7MGGH$ zr+_5%W=?a2uSGy%tD3T7VcQhd^f>yBY=n>Q0uy&fFiHTHOk7}im$UVgcs&O9|_J4})p9TjoG z@5mFa%`^L@oeJiutzZ&8Ii_l;@Q1xxEpsZ;pEqXgULfyMWpw24kz$k}6Lm70&Y z>-M8}AGgiN>FkuVOrystw!66X^u#~t)w;xQUzd2-bD|kGj9D67t*(AMGV5|_IrFv^ z8f|ajrp8#009W%#I5nY>bU8&6N9AY05YcJ3+giC!2x;|TFZm_ufmhweHs_#NOwaW1R>+kd~*&{~UonZnPv6`?EZ&~+ejY;rp zANw*&vz0_2B7_|~1x`%>Pa!>dSjBSpNm)aJKojW1>zsw#pTK8(A#(#xj^=BsnF}!4 z>ZH)h6VW<8u=Hd3-WoLgc(>M0pY_`O!9p64%38Xnl8%wp!9bMcz};T*uQSF06TLq1p!1{tSF-U9ECET z3@@o?BHB3;uV*}hN~wq`IS(nK6bgH{efL5YyYP@s-26N!nVWkEaRIW1s&xB49j26aB;E9I(`wgNiKN@}prc zTH^l4tX4Gi{ZW$b-iLjXtTi6bFZaDnRe**Brqk3O&Xv$sR!npfIYIW~${pmoQf4xn zBJeko`VH9V97^b(cV&wX+r(RZHEp3x>kBYW1reeDBa7quA6L86GQDs zjhf{`8wg|)=|(jC^zpDUM4>NE)f5`;NgA0!M}hEB{!Dng>wqdKfUU16rh^y%fsMP1 z>u#yka1?`tw*c!+6ftHwrjpa#dN}~P(@m>UICj^2MQsXFARk}clg?BAq^G)%^fuafh3c8gremr%h9zN=G8q0I0V z>aeyvIQSV?+AJ|WS;;*g^T@p@Al1m<d zpICkQ^O6be_e3k9AF7doeg9fo{VdjVd9%zuO)-Vqw6OiiB`fj*5Wy?K&GN$&R~#A~ zRUtC(V z2{C3QNa;02rJAA?Vu{!hiy01rQ0PF|cUp)_sST(C5eF$$bhEC1c5N##ZS&!3n0suF zzGeffe1O`=r1sYcPH2Jer*GW~;wynX!D*Z&W&Rl@pyyTW$|<8p!zJa_?CHjBh? z&;a|&AV$DA6$R3m!T=*Yq)==FB7U^YwxtvkV$$I@mAXP{;NJQDEbw+0E0W+W zWdbE*tY2{|*3+>oXrZoT@u9|m2C?R=@CwIf(@tX_M-HyrDlP8%zxR&vFXpP-vl@h! zxvo2+RqiQRz~iP$9V<^!i$ub|Y;Y9#~Qbjl^M>hOJk!j@Q3gJM9S!AYc)jYnOKk?$qnSG&sXvJ-*@#EBiA8}IJ z+pY=qB+vSFIbuja!j$I)_cxt4cm8wn|307n1HD7nk!Z7|v~&%?dVlI)cUzkGipPJh z!S(M<^Rd?IaM>XekHLT4(__BAJLKnAq1djlQ~&n43iK?$PS@V5u+#y3EMS z%%6YvG|d5%jm+jTQ9dE^n1u}vkizKc6pNqX3{Wus6q2Iz?q&I|u&VT+bQEc?d3;^Y zY3Hx@7q>i(+X|@eK^cUCX_1cv$v4XJ2~_=SPa}Y)8S$s0Q|ZA#BylLHlspGgFkraB z(0-C8;d`JkYfOI1@*goFW=%SX|Jx7*YONn19)Zt7($V^Gx$5PN=s#f9YdNWA^!O|L za~D>3-ifhPP7El)m*S+#A>i|u{Ju~aROB}SZ>huc1}}Pl!@cPw>dzZ78uJQ+6owKB zgMC=&;GlAH&^401j|k)dYnm!q+}a|H@1-DQj<_W->eHxGi9s~uX$APxQH$H#W#OZ7 z*=3NK8C1pN(5{NUVe5!v1nR&>YqE!meOKgAa3-MyjnR}C5HVv|aSYJ27>TA|*!(TFzBd2;(r?vcwZa2h6{H=kAgG# z!e_pyk&PlX7bzIfr)Z4wGx-+=hwLm1P@58ns#bB{-G0OCvb6a}+b?zBJD@kTsB@Dc zc3SvXRoKt3rO7y9-bngG#r2)9p>~Hz#P9}a(wz`GA?V;Q_We@2E#(IEyjq!KGmjzz z-v*6zO8M-(=9e!XJ2uPZ1OIv9{SVih-)6mb)L%|DI&`7gWq325^!_+KRd5HKA1H-t z8}dwo1plwqmvGrG2!BNy-=0g%ddc}r&1&yUO2=YV>g11gGUFPp0-E-)x zDpJT2vGsRw{HOTlM?Dc^QHRkqRin;4gY-EwfbF6G%j7Y6E-*3VE#xOyQfnf^XS;U> z*A`b-o7k2Z^3?R!ezSu~G+KD>gc0zV2 zDCIi-+3f#k<6ZHDB_qjNVw^AV_?d+^ZY5cKj=c%&fJI*x`HQSK=u1NVraI*+OZ=z7 z&C^GJA16G0u`$Oi&DiKFtFiYEm*B8WkGkBDSm$8WR+LD%;ZJQSL;HPkHF%B6?zh0h z!(g@xTDF*`Mp_ycflFb$dKKKgW773Reo0tQ)s_*_Yo^gEOqOWqfDa*vyi>s2<(u37 zS+Zui@9z?7&+G+~3L(QhmHL~%LinTJs#-6OouFfHQsjuBiP~$SW)D8DINNW+goq+# z@%JTer~hb-dnR<0=9qdgxS9vAIf%U!sT;0)Wx%mJkyWz8|J#|5QDqP`BApDGY6gyG zlwTTtT~--VA7UD?X?|idy7Y6=iu>iqz2^TegGW4Hwy*59Z_O)QMyu5C)#LA2`Wih~ z(x+);ZVZ8ZL|J%D3|t)XDO{g{;2%}3WlRM+HO$cz5wd3=^}yBw3Gc~I-e;w`cVC?o zw8(S)*8Fa#{nmY7HcXZGS_v)%)9?2>yYBALT;gV&4bYC@F|erdPV%1Tirj-0O?&OfmlJuR8BZ-KbZFxB0pkcG0lEhV z0Rqh!WP%BkfDs4<^Ck$p_k|!xVPzld;U#o7bW1)|>9Q!-HCMsPJ8JiXK~ZpFcEyRT z;z#Dcscf(KZXOB#lC8GvU2JhI^_em+8Nhz#yU^A0&tK_rEuuR}b1E1x$yhLC-ETK^ z!BpOE#3(yv3o{s~VB)atd zN!{e0KWll%y3zIX^X;)U5+tONG(o>>{9mKW71;my7V0d0R-~(ZWAN$f0{&z$D3L6B zF8uW1__3bVK4Pc)B>T%_^vX&_b&o=845-Q_2>j-Kn(!bvmWL*g7|zwdhJun;w1)v%Jx_AQ|ULkz?&VjBT7Td$DQh z6!_gr&H3y!KP*EMfxzgqUSC^NZf8zJ71m`m>#m|8K8_Fd7}*~>PPl$+O?K;$u`fYo zV^)#0`)&O~=})r1D{6_mB@C@`Ijn203V}T0*=`Xt>9!T+=BJr3xs0aJN0IU$27g<3 znMO}9PU@8Rk4ct!HrvLKtG$x%oAZrT;20cqDno213701n76orp>d?d8X6F`?nK2Xgyol zL55JM%G_5cJiJH^0hV+yPT(AdCGhUjV zPgRCim_+7+lPk;?<0CnA0>s{t12n&NzZ_|TUacG4A5l_&$xIcIl0+JhOcgN#Iki8L zPy{1JTsqH@KUOB~fauflvN@D3&ijrVwOp~4C<>@Hr zh3#OM&}zFWp@QKusQT{@Q8XQg1T=kzikEkJM@(e*k%vz|a&pjZqVUU^jNH&4k~UXH zPlNBjKMAIQ@it+vw3S=B+Uuq6Ep;i{Yd3KpGyR{S9_vGNiIIr*d2x@^!RWZ^o9;2O z2}S86v>eMIS=bp9GL3EoI9egQHIiNW^Bb9FL&5h=s6MsbKuIIN zXklVEab<^_o?aooa@(8}hiP7}p^}tt?W(kC!v0%f@=B~HUw<1ncD5z!kGQ~ebKWl* zr-Pp)-(*(s)OkqS>c2I-%moEuS*F5O5!9ed^P3TLqwSx4o^S1f{ULH*I?ry;X3Ns5 zEo_|L`D9HmgEWI~d6M%xhfC5VoB0u^vZak@(wT9pp25x0XA=Y+bz~lgj}JultM>Fi z!HVpNcV(TTQ#GubxBg3U94F{7Q41w=ll-~*_rc3T@*{Nj#-!yVeSIwN=wvXUZ;e#; zCO#PG?~>mtFHQNhIXv^2$>=U;x$=kaFAh5XYQ9dTPvOygNp?LD9E=N5%fY=o`#=`Z zEn=E7>?Z;OrQ|vnY5H<{z_%zRr-{qZ{?Lpt`E1<(u3%0+LX&ECc!BiYcQt5bTG(IH z9NOl+emvIMR7u5Vh`h`0?@Gpo8afcAU|Qq)6GfC$gD~mdZGKwaPlRUs#pUdU7KarW zi>yYBeP+r|Sn+GXnHHr`wLXcmgPCwkjt$uiqbji20wt-Z3u6LS_${R+mfQ3@-LA;xJW%)UdPNzG zsO+z+YEMX5icsmCP`9j+kf1nVfEzCe9s&goPXRH;>^6T(XiNcPL1nix00p5SkR4Bx zg*D^k+daa8>8AA(7@47DwXiflOrs*kwpQ&%c7|8@(qc?%{+9L=AweiKD`h`P%)SJt zN2)|(7@c3%wv>TQ4@yXX8jSS{PGSao9|T$~cpqBs0Mnc-4#R1Cf$|8ar4^&vkW_Qe zc#$i4Twj76&Rj*K{v`4@WtCOJlE;^r&+O93nqbu3wO&EwvhIF*f1dV@%vr;okKs4B zx{0X%yaiPF{Xc^*(a5K!!@S-|SR5tm@o9YSQ$0-~g#2UGROws#f-$ zeePb1mRH+gqtc%&-8MRk$!;xJ&l@n2Cp$eCy8)d`_)hus;5m(MMKL_{0P}~U?f8u= z+wPQ_!+QOM7wUcam+8N>Fa1q$30SAE!Tx8nack(d6&gFd7X2_}MOgklqG1b_O*|_R z)71~%fZsu^?G8sx)!8Z8X_P4X zjIqUBb<}>SPWWePl{U_y*(bl8-wwZQNuJXQyEp!s{tr=K9ToNWMLTpODcvdE-JR0X zf`oLpfOMC1mvl&XHwXw4f^>Jc^t<2RTW`I8S&JEl`P_T<*?XUThJ}CKgR4xAOmJ6m zELP196y4paX@^Iy6$@5@i@X&MnUw1~dEQK?isMlupDo^Ehr@-A-&zeWu1Ef&gy5Da z#ox7rO759*U*rq7Tp>8QN-MsEyKA{QXm_y7?clsxCux#j;_U8T6EQK@`@SQ0BRc(5Z*l<(nM zqc7AW2+(-hCocJ_q!5`Y$NDf(iwnRK^jNprU`(wYlNx-PK{nd3leOVew%qGFbxwHC z069tacY*SsQnuONL7V!cUqPS^)YtI?uIrF^D;O}KNXppXc_B;LxpqWBVHA!I7h1~! z7uf&x0u+8GmJplncPEWKc!+G@8S9qtz<|{_jvu+-nQJMgw>X^pi5UqW+G0%J}O# zN?c0BXmSWXG;ni5gC;mU2y?_42dD-!4pN^;-Lq#n3SuUjn5t+AEC5LmN(Lv$I zOE}Psf8*$=Ww`cu;AD|vHJoyAIflkCP!IWV5;J~(RlFhbrplKoU$-}3?)_+ZaC8;E zXe6oayUv(ay-5HNYWp!vV$UGBkE8#M__%i2?F(AD2Df(!u=x~~Js}PM_Lwdu_waQy zKGqwXf;05^u;V~5EA(tUcM(RsFoVN}?v&)OkmpEc*DAeuZP#*#_3P$OK#t$<2K%@) zSp_G!T>zBf{|0*bmNSXTyfM4RrCSMgU+y=h_2n@vXpFk2}t$SAVSp7wk4^-K^!psNO zSdEM6R5V`F7ZZF`h`&6dXnpS!jA^%m=!-u|qIjsfy!FqkYHaJg4pz;H5)CW_LOoYcbhK+V4dDn#N)BU@OVL;JHPCxU5=tes#PjBv*ftN6|$rJM* zzPZz&*I+}+;?bNwcPl-HnE|(cREP8tCs8rkud0Wh5>|>de7ZTx97XvfYOkB&7YaWf zQbXh1w#hbgv9Vc6-C;84Xnl(^gG0jex-NS|L~ZicdK`eyhkUG@a+QM#%M$h)OL862 zb&3_g+&3AvmaMK2`@jE}yHnh@~Zi>MUKHmC8Lhy^FQI|g*{^IEmcfZFj7tBkHCiPgsLLTrwLt;)H9^Z zFb>`_u`dlr!ZAGJ;!-J#!i!-fOrJgk7w-r&2geakX}HCb4h5FH*@PZS5^;btYmd?j zUk*brN#41uB1tX=A3+g|Mc~H6oD{vEd{!(Gis$vcc|)R8w({6e^Z7A1aE0B3rMTIYUN!^`wrHhIvJIab(YvH&mVZxHLkgHcuxl360BLAwH2Mj zDtfKm+U2;2G(Www7~&(C1Q$aDg#&?mtX2D#`f9$QtuN{PzlxuQQAGdRKDoT^E~)HM zcP`gHwtdbSv0ouL5W**VPH)|f5*r^v|Jtv5k)=2x?SlnkAdGy?`R=BJsHEQ1b?G14LESak^{+D7>=d=> zWq#3{c28Ei>K~VJ&kWD=4xyuXhRpg@NO%>Dm`9J8ZCJHcWbw%5AfH-f!kzlFAYna8 zL_QXuMccBFLI%HDN`}fk|K3L@@EyN-R9r;Ug@?%TEr8c>LYTQj%65w+hG1Cd-LB0o zT)oNYQn7@BoOl-?Sh&SL3JCA8R_Pr$ED(@Be8?zMa<)&;j6J9NkZxds1)AZkh8b&o zF;K%;8jXY2*cwhE!IE0um!oTA60LSxHm{OK0CQ<2;a`8&v=(};Gs2g_3E#B1jFQ@{ zWEl4iqJNz^S9Y2K0mH1!ce}qngl4|O578X_9t$%yjdv}(>!vK4&}d=u=%0H1Ly+nL zO6urVuG_*D!11A~dg9LEuSdKG!+1*womQ3$gtgHL4^`iSp+M%1j^fTrQOkK-vtw6e z#1*rCe-SHDMi){UvUHv6@xx({zv!WztcgG+!rz2{9%7BdS z7_;|DpPc`CzXQ}2=mdK=ij^sjsNW6umHRZfE2~zDGZmO$qE>!2lv{`M^$SFGPRhlG zrC1a{Qbf{>MhxtcY7I_Qe9)0br=2Eei~RO6RQX&6rZ;nkl&Vk}2yq1@IIlO0*>BfA8oHb=9KwC*M~< zG=K^rvNGacXn99m?{ul8luq}(KkM17!%Y@nX1%funTOWkae&O;%++@=()RdrX;oF& zj-Cclc(F}*lP~+5#itZ~GmDfqwRc(U@7*8d>2P583**^TS6#!|lm&W~ z&t*@k!f>z0g(kjPm>K>_Y3I6^Z&^*Vi2Y`vzIa4ZxnWDQ@}G#?y~e~b0rGHJ3x~>f z1tr`^2=sQVob{JTfm<2wPANB=Krff%)YZ$ks|CQR%lpcr1*+t=e&N*n;v-9@J@>&@ z^Bj>lE0*VlRFAM}?{@_DMat&WjA!>Kc%_6q!41NLX*gX?qp6%=sHf${irieGvt=}% zL7J-)r3gMpzbS;dpb+9;nCh0RTo`yDgqH|fK`HstSS%YqxuzXC3i|>F5pgBx#|ppb zIc`*p=Cin$r@WhIB#rdzep=k)Vsqe|2~T)+m3@rhJvYcXkVL;QkO4zK&ojY(IhrD&E(=*4Bmv4jGPBx!o1I*zPm{jm7zpM4bH75i`$fcgH|iFxROexJ}?W1^vgmlvK8 z-q{o0M6`bOmD830T{xQ0prfn!e9KMBiMid@oG$wK;c>U7(Uq0zy#BFJwm(LXTF0}L zkVow1qjYT65)PmMK^1>h?@#vVsB?|}O=Xeeg7#35|H&{M*)cQ#P$-BjvQm1~8ymK= zrT~{P{WN;)$z>NurpR+LMbz%AQyTYTI2FO;MWu!%9k6p9app%Vv4QGquX7*%CjL#Ksavfe&KCwp=?7IpYe1V#CR`y3)`uG{ezm z)lVKxRxWq^qRPt;*B)q|UKIfp77Y!(p;)Tbsfk7Ap29%&l<_x46mx{8gd-KB_g4$I zfD3>VVx)I=lz#gjA2R|D7a!DMp)nMpbt?>yI@j;BQPK!aT@X-2jlMj%uFkZzLOO=<)Um=A>)A&f_i$RBS>hoM#Su; zp#N+I!chFpA2=rk##R*tpBpOp46{YGy)Kl`!rv%|oi(8u+H;{M%|3IpnR)3A)=zAl zrFVhW$6RICqlg(LTiTCvZq0(xz^2S-n?cXQ&S0D6L0$I|p>B`Rccr5(a7IM{q08EG zk$CP7o6+S09MqH=;Wuk`M|aUxrhb}+)au*ovf!nL@&Q#PgmZ>zRnY&-b;wh@B|{&wL7#&%HQ~?WAjvtkU@+Ei3QmzT()J4 zHIJ?qWnUD>Iun~d7o#NtY>T&cdF!i?$}jHj_`YO0awpG|^4Z%bD!`Yl2lO>bB6_#g>g~X%e1*wIRd!mTFyZMC2bEaa>6cpsW$Y$Dw z@9o2QXgXazV~!i{@{j9}w3zHk{A%tyBx|7OH!8QmbHzDLUuIu72f(O`-AKoMb(-hV z=XCYw$qc%lipVCtui9D@-S;E9SV7$!-0cq?_I5R|S8Z3--d}|BLNR{VP;hNCoBqQ4 zYDZQ}`9}1v&U-v{ch~My00M!j`Jdc>NK_djdWRL?0~^h5QA2uy+8TQ|L#*+G7Tu*# zVGzx$Mw}Q(OY@_Hkm3nr-D^%BzY}Z~jS^#GZynQZf$`zE#0YM=mgG|*j6bR2hI!qY1Ed&Y)AlCEp>;Uh1^+e9e6Xk!_TQ?^aBqxY~D>{gzQ3frTuiKbVi zA5N^6aLe?GGC;?!oio$GzuZK%S*~RH7+!`ksU{RC4gtK8KMV%4IGgczVu>C$)Cev% zSr}Lt&0y0+=xDLRII19~gDo?HG`SEAcvu>Y*xf-w>H~{~v~Q8CsTp9nT$LT?$jo;> z;gZQfgIa??`_m^6pGqt9y8*#Y#`)>!25is0lOF25HOd+$;LnpRlO^&Cw zMOO4`&$_DVVI^@XO~>IiNL`Lyi&_M4xTiWvHJi!8rSl8Hm+x>Vrz|xjC3~`eZ}W%MT;3RK}CvWiZ+G7!XQFx zh9~M@Sb|X0&B8coL>+4xU+td&7kb1vbe9wvYg88_Wpe5_hw;N-f7PjPZScx3px@a} z)~$(h@T9f<*->l$AhWr=kh+qF!{RINXL{rDtS$cdbKq~|TS!knaO3MnY95&#eM`Y4 z%ZLd=g7j#oJn-XP7JkNoVAvOH1TFAR)IKDN)x;9tU&PI=WZHF$mfTj0-?a|-F`B%{ z0+r;KejmWU>YN$8vbvse8Ej82=m(?TUG=PO;MTyeISv~a{;xS4KWI-NzDXbC3x`0m zJV!9CO6csy2Fx6%$4Im6W^Qofbj+b4SzfC<S={kp#s6Kzam?fbGI8m%*oQK{0M87DU14jT0&S_^t}$*_m;<6k1ElyyT_I} zTYX3Ek2VDDG~SqzWIGUDht{4}_g>ddThhTmz7?5HL`uD6kGhO42d!~^^qI-zmS$

Co4c$8})k~0L{%ukUzOYunq)(j09qU(M*dd{!A4$S)SERv{%uCA zGbQ);6Pk$(hWT4eMrTKIkaSIAmA~XJEzioTEDJ=C1TL;c@%BlYEL=(I}>ee}ZxTu^g7+WVyZk{ryR%5>hv_=+u1m z7IQ_<*^=FvI6?3NeaxHs?e`Q4U^@qSftfee*}3 zl(%>{HbctW8uP(%X6@P`Ij?&GGG{`G+n&)K>X$#i+l0R};8=Z$R5xm?>zh9#Ff2?) z=TV)LzdTfd0hbTN--Zm~L8u%GGV4RSfBy}zq%|S~XpT@2Jr61M`WevP>1z0$H-oBJ z?EV%SB7`U34*`3|EJ6yy6o29Yx7=Q>QF-sO4~<9csK-vX!NT7ys79xn?QT1|XHGsw ztQ{5pZUu)@&mo%09t*AQagj{@%jnZkpR#9;78z|oQoo_`UjD`kbi%5s`OHwo)0Qj? zVky4&L-YHG*F~ELVRdW-K7b?BnB47kz?Z4y0MW|eOa+s6KD)+VY5FYvp5xzhcD7)2 zkFk-JI-m8Ot2ldnFS_$3?O<@=J|-lFGuHf~!SQ^fST^`0fc>iCU#D-!(e7h}$)-!A zq}zv@S<&xWE@Sa}#comWFCN?N1#>#V(!#!!@lm{$5ERV-!pH*88ONW=-T!FM#tjOp zb30bPIJ)m88P0*PYS=H)>49A~m(JBrkn%x25cx{ef9CcrSOfqVdH(xw({-DnqY9W% zsNlA+{bP>1ym?e0IR@Y{6%=YQ`aT=|eyosR)2cJBs`IkJ$LzO~L>fM5xpU^QD25)) zx2bpI+am3AL60ufcmJ8f(-G;#5gkX)hd*W3BRFd3Bm-#sTe&hd3eNCnJ6|(N{RS# z?*K8XL{D26r8G~h{65%uzFpxk~GFRA~QF-HSo1M1V-*&4%x$q60gNG7N(@R}yxfv|oC!BFfk+Y7E ztNZJs1b0fdxivKP_R8cI#eH8n@((B!zUancCAE6i#7^Jh0`*v#iu%Q-a5<7wE!Nb( z4e{(R9?_-6R;=2OyC%HiTZk)36nJb!0;)tQuR#{dyUCtMks@Vb*R1GV??0SZQtnqC z8!2}2pe`QMZ35+H*>OhyVc2tth^kSAX)RfbBQWr>nG z%)*HYH(IreESnF~6EQPD`YF?PyTU9f7oU@V-8sJQR*wJzClJ#!n}d`2Jx^`TSBXPr zFK51}fOiCP$H7)1Xf0RRK>SL0)|YWzJ|pgHJJZ9_L0+LI(+l|}jzPU(R7V60kMby~ z0ugQ)NLAJOA0N!DIzbIBdI3Q8YLJ_smE4z)*!Am`98V~bF$(g5?1#ayYPt4*#q+wP zx$bNgn*`c@zhc+Eb(yOwp2;>mylkF5G%p*buGKLgGpT^m`CR4a(p~gmNd$`Kt)IBZ zllXAM^PF;LMhQtxj`yELVP(=I6LnF%9TkBw5jHKMBf|59E#;Ua-eCdf*G{M&rE?|(mYjXDxNH~ZLx#(79&Np zT-K%soI?@;s1_J_tcTGbOGJcnX>`074PsVr-(H6gCiswRu!hnVS z=2%zD5(>6Bp=zcx_L;L~0>rs;S(N#z*;Z2assVUcqpwS2wD-&Wqhj0#^eXf&js^h` zIsd#Q_W)y@?*&3EK@_m$u&AC;|3#RP!+zf~sEPkBNi2(WiHe%opJ7tlg|le|6(~ME z972fIf;E*Kp1i;}3A7bIZh}f0WvW7gtwNzUCWcCntEEnC@gg##Q-Mde39;ux6bXP2 zF-(pCR9%DEkMaKY*kLG$ZsHE{FYrV!-O1ZcNof5Ed&x?V6!+tp^~2>rrwHv%b-!SC zm{1x7?i)HX_oPmT(N;sJ3+A(Lyr{U7?dET_HiXNss=tJG+6cJk+HDVimdLeTASLLc z1Y07jfS%#8GR@P>;P9jDrE8*(SyInIG}-Vbzx!;at^Cf{oN;C}*O?g|*N?Vbm-ytu zuzMH$3hUEP&hxm?rWLhTTmabsS!?%EqxTPPS5h^lxmW9pZr(f@*M9}?{!yqH4ir30 zCSNrKh@}o0Lx(n;Jwp#Ty7?yfnBwc*JiP+~1PjW~dAak(+aH)V%=q=h&dHSNH171l z1rcVv-@Ul#*^li)CAZs6v)IdJkKAmF#&~t!!9V(+T2XBD?~}t{3~+CUkh5*+q)- zc{8VR#6bk#Wxemz{qSHBkTD5;=MA!k-G8)x-Im=2@c6me&DuMvm}GpBznIx3qhn9< zFq>*g#@8gaVG8h~!sFLMZF!2;eKLNZUnD*VUb#-(s63enX9(&$`P6RB{UQLb|MoAk zN1OxMWlF7;i;fmK2P$>>hldB@>I%JsqguI@Cb|TEwaB`)56ZwpM7xUq18d@*yf1v*4>E7LKQAr z)Dmc}FNUKnK_`3|Cs#@6&|u*;u#1#A@y|91Qcez_7MYwSo9*T6fL?GmaL`U^@5OS8 zk{ea>-F;v<`3&1T+8_zEh614~RtiL_z@ML3eh!nMl59A_Ri4niCBo=|3BWVq8Pb+6 zzjQK)AU8qm{e%w#ij$BrR!0xAtvWdju?mVjYZN0!?b{SR$3A~VA>g>Xt^+-p{Ku5o zcg{ffig0IJW&GdSLpb=r)@`(Gft}3SrpBJct$f=0?b?Vc>QoD$5CBhiG03dHZ@qsH=C-^%ccu6< zx4je)c{Mg@WzypqE7P3VdWSq8%V1SdhQy_&Byh2}z1dezc&u!KRft7tU+=Y<>A zRCOV&II<+Gpu2_*v+Jee_jz|ANsa}h{wMHFTZ`O*-iF0*(d{Voy8p^{s8`0N{8LM@VeBpJ60oCfPI#6r|G?p(N`Dn*qR9Sdm_pt?Jvkl2-IOf{exg~|AR zswywHUw9w=DnRm78N&5)=3VmIJG3M|_CvI|{>h*h0!g~}Y>Ak=ehQ;swL++Ok8=Q5 zGW+Sg)ObqokJs&A1xJic?-QP>-`~NT`L{QX`q?Fm+C=)Sb7VJ7zNyZ&2-b+>&)&I+ zCrj7R&)sM9a19^{?19$DtnxoV^mBACp(N^FGs=2k$^J6VZ|+g-Rd~I~@Cw9MK(W@L zRyvnO#hwG-9`{#lfyX+F(;}h&^`QVea0?F_G1$OTlo@X3t+X zq1ql?rF}>V0ISH_ej7G8Sj+bMXifiWvW-H$ufLeZdfZfvtDZixARZHWZmA!JIaGz& z=^RLtk;^W@UKH6ZjiJ4!$KB>vP~F`kdHgPo^2fr+dF`^ueD7})!Ek-tn!{P66n5iO z&ehN9)a$*JR&S9~OupZ>qH~}rSc(m=l46?d0c)mMe1BrJycc*+2mDxN5bbV}S(^x% zLMetE_uHo+nZp0fT{N`gY;v2O3QcEGpH&hW>uSVwaq5&~kLCrJ#6 zPe-L~f);2F5^=`P!BqE_2wSab;~A9mH<(d3rC{*@%6F26>d4vKw_DBt%Ob*y0|RM* z1yt(xLSYZB7srSbQjRimFchv0raYm{K1M7SpNt%zEoSfJ|MLQ*IWn5!Q->PojrXe& zjMI8~_)>p-1C$IuvXuz;Zi*G;U605!2CvOeVY9(S|50LFAT!4zB@k>rcyrdR;LOy6 z7#@3x0qvrRmDtyU+`Ge8C4s}w2S}GN5JdtJU-$0`aKx4j(-r8eK$do9tU3uI=QGCc z@nylZ&v*I!js{*yTcR+5j*vGLwJ6vt7*--rj%cNhDuG)ohgViSR=RwvIt~{ByuN%2TmGe3o8nB*~`*h4p>g}a_&ewWwtc;40Xg$|jD=}!H!k0{4m4~1u&J61n;wMK-RJwIh?x;(in zK3A_xbAEMR>)O!j3RrR)jo`JUDG@hXs3+^8^JQ1|uy*68cbPW;Bm$p-=sM%#+^`A! zrRb|u{D8now=hV@29tVK&m4T$D-9KlK0tC%$JPVq?uf!|ekyGs_)sw%Tu1PopQAmd z05t_f-86ioJFS{MljPa(CR_9yA62S3a?p5#d!8ry+(^-#G+LK#6qo;dOEwUX6^Rt+ zuN+x^x{*YgI{)R93XIG*COK&RHhY5`(MVq`#+MN1&XE%(Uj`>x1Xh1|!56;m100C2 zD0HF(2z^vTlz>t}5n^_XCO`K_cQNxfH4#z}!@{Oz?=fL!P^VG~+fnwkO80jv@_6=iq~N*Zw>J3gYsXo~W^7bLhaE;U1SI080WvJQY!iBTcw^~diK3u#BW2s6V9%mqa)SWP4m z{q*!Lin!L_tE?kDg8}BTq1LNvFZfO?^6ULU-p=RL zLr@2R#PPy<$ojevHI`h&dNkR!PI&3QxYOK8iOb<5t#_YTbzxNE095wJvdT+~Wnksv zHvIT#UUO~!+^Q|qzsjEDwaR_G(x3@dd?|hRduQmXx)q`GbLGSDHPiS-Hx>$Y%2A;X zD;LjMYZq&&(od2j9109$Jyn(GG55>Id<1w_7LOG2zM^R+rN=|X8tU&LVC-MDxIYc~jf?^fM))R;^Ui&+|N0Fh-ShlN0ZJR-9^M6D z*_FhtTJWN!GNIo=Ab-(^f$0GM&h5)8anZAs&)tucL=Q8)l9B4C!TA<;u4V?6!eHJz zo6}aE8JmdRWisKH@@)xOwH=gGIU?ciGULes_c6-@e^zFqOQNt>8nn0Kz)!e(#te4I z{-O<5%T4P}nxAlB;p3>Tu*_%BQM|7JH1Xkk=GsXcdYyub_U6v>ePKgkz)jl%P5oQr zX*kYmL0gxADjaK9bTnp31g-zdLf*4=d&kZ*23KYh6gYDa#oroI7*&T6v#Tm03V3A$rEGV=}ekU z#-QYmX7o#91!A`rbtpMd;dof27Wd^Ce;lc-tK+`~0aWC$o0d6>h(e5PnCRM+P6%UD zfjTHrN#TF}BSGLtjQXcoW#ss`40D4FF6;&oHPPga#;$2m0D4xe{3@`2F)G&YeL4+q znDQ=h1&=>H%6Tk|S}c~c#ZM6YbCq%qjGbMK)QQ_Pgi^+E0(}}1SW-v~eV0jM54sQ# zfJKR`fRDlQE=^XB9d2L>njuu4^++TYq#Wb~Fw{HwiUy*B2$Ggb8k_|_41XsKiaAqx zUj1$sOL|~>F2aC);!Zk|V>0ci+#{QvavyTyc#r=Z7z33evkZ4xK9&OcZ;wA06-28x zGfKwHf|(0A55~q$>Alze(^?&2SFgp^`DJj{08q~M9u(e1Q9Q{IJGvbK>=*82D?AgY z*)l`>WmWTQeOtZX^|kkV3t~AgTSTA)R(ehtHc{H$4cvNXpv+ltuNr1Hn<{y4tSH3c zTF8r6iu37V@b&WPI0FW5(=kr-VXT)w8^(yc@N=wfm}v_ZP%&dy=DDq8i?_^(6MG-j zH`lW!MB=RZ6)Yckgl;RYf&XVH0G2i^vkOh1Zp;Zz>4EPqWMEeQ14Qfwe!eBnrDsx4 zF2rxG+|vaG34(EAjC|VF3Qv_col84XhU{n|z1c1BoK9Eg5p7HKl+r7-=_fnz4XWya z>a|hpWnBIe6JX4(-@J}lk@MAW=vKzZw{$Nn$sUY$R0P{&2Zw(=ZkV0{g0`(%VymmJ z(DhH5EJ;4CKx4+mv7)`U`DVW78^i!WWzOH>O?GC?w{faJJCWa%wOXjRTcw#@vK*c2 zFM%6yjFk8JmyW2tuK+{noZjKy#|gpqs({wQmgY`J;JJ;i_VF zpVx$3{jtdLxc&GY7ysp9uXi=h8Va`2{!Pgmr3PLUFeaHRYZ-GCn*T?40^dh~9*DaB zO#Gj0wuL_D&R2ZG`~h!Ei23gr_N5Y&T?;Ik4Lq>Bj|*A8vb8@o-h2T)mWt zh1dauWF$KkwN;XG9lV);Zs9Rkx*9u+UH|!-rpIpm)X1z0^_pd;hZWFZXn?vy?|cEE z5Rf6jK>tI+svGTwNG?9$QWnF$LIQvo0D6a=Us@LpzncUFOp?o<rgdz*uWY-FBH%y;k2AoavVHetY7>^7;9k z52n(M|9|};4-StH2}6f097OJm?oe#8HG`e^_l23SPO%Sk$h)~Wy-%aUY*(7M3wSHt z-<@CNm-iBZhHp3SfCI}`U1t0gdY!qW2riU43T7|{g|l3gRX3cGztSeT zrn_@Q!6!q@p(&<#U|iWU1sGajNVQ zcg^r@n$Fz4`77&Zy(rjfdX1Mtb!FGAy<6DClk;_2_qMC-3+O4D`V7;-Y9HWN!dp8> z{W`N=r373Gw|18pE`}^hm*?$!qHlxjfVSZZhJ|R(?P;cY`HPmijIl1f9y^n{2@)Z{39;Ws2>2hlX_sQHi{e;R%PYQ!wD zht|R{R8z%@w_6yNb8=wYDAkif{I@ty`N5|6=6IV%bbq)fnoQXt3_WKrHatPpQ ztVrvAuv+?|@|92c0&mVqXLJK6G?c}m$ zdINr^eH8mpBEC#1!TB|3USk zm>^8<>vOs&#oXY(s&4>`T6h6JA@I4zuAR^9C;;qQ^)y&=!q^qxm--+|YWRDQv#+BV zx)vTxmUfSj+UGmWer7Ooloj09{P%IDc|#+Pub6CNI`uzwFz99$t4g~tX7$^e&SiuB zY)QuLO1y?j%kCdszR@i~nT81)`j#$%b%D&5$&apPUsDIdSKXOxG|qOX@mxcp2Izj@ zc*VfYf4KjIgTty$mOkH@S8;xnHMA6KVFXOqge>_~9nYSXcUy}jRC;Iic)sRkxi0Ju zOW#rmWb59HA7-^sZH-@5T@Z0}bx(f0?E>zAmrZHwrP?&`gq)h$$(n+r_R(;IxyuN< zxjrZA=c*!?7UT0E${*rE57O9VmKmcj{Wc7Vps#*zQ+?1W(+T2xKZrzS&63z)8wDnw z+$c^(GBK=vk4MxQW3Sx!DrtoiAt-LL47qbvjr6*8N(<3}i9jzIIWh{ZI}E@hBOJZ+ zjlho=qr~l-`mfrtB$i9WbKnhc*Yx-Yrw;D0VQ)2dN|nNfvLOZnp)CeQGcC+G{MxB7 zZpTvmvkWFXlX|Z@Co-(RLcArOWElS|w|Y(lCcLJJ1O=kR0LFo7q6mwsq#JKs+x=_6 zDdG4Tbk5tqu-z;L`JVBFsZ`2q!PK-&-k}{^#!MhCZ~4cjT-U>l*qJQ%AthkU_VL4v z9jAx+SfqfwGGCi^hD>l|l8&!psisAd1N#2|hCGwajgb(R>V&bZ3su?8NZR0BNthCm+$GQ; zB|_WpSdob37d~BuK6at0&w(QR(p1`+bKQKu9?t}?!+$6ak;M7l&~HPSfv30mEGG70 zz~|7Zq^V>?Nd1djh(`~H2wS238>ci*}NjSuJGIUSPYzp{Kb1(QrbLr&?ctoB(j^sF9r z=cAnivhU_0vfocmJpdtx0|4G3rrQFOGGIM4Q_s^%KT*s3OD4I_v*y!q|1PNWIOf7z z->J%XqVUbj20`*II`QzWUP>A0&Y~Wd3eoh5>j#LhN6iDrqggX5d?$39-7gJ}C@T&8 z2KRy9cfq&Z4{dgm`Zisth{X6$p-#80%fJ~+cE&CPCMoU|&41h>^Pi~B722iqZYzS( zg~sBCKCf~B;!Mz{8{R#=b6(++-~bGW5Q;~(a^;vMM%jiwulWdP?HS$z@Iip748>o6 zi*uBn8AVRSKAdE%gV~6gmp9&PB&1r6Ro(8n3*KLHmA--s+X$oma=|-fD;6@!nWQx=>={ zoLTqPk2BwH;q;(0u4BXH8GX|3e5&qU62F<$e4;jF^wl}Ky6LR586KQwvvD=t<-Esl zmT8UbxI_7c1uOC0{5Nndv@i~OWEn47hrC|Dc-?o%bmsIOJ14Y%i6P2mmR0!<`yIp` zWXd+Oh-B99)m3@5bH*-%jh>-DUV_$Z!j!ok9+B;5Z;nf1B*TOCd$oY^Nz;e);#5nqT)P<;o_g4Z4pF(cw|VmQbR!-tlY!)?aMM z*6r>ip#&J2m2Sz7a=qOBBvlyWk}^C?;JL`fy@mVb&46ZEnt7o*e2)iDFMM$27OmBUo(cAHL(D_CgTrMn;uXji0_V zjUw@qxm-dZT7*>%~~zf_^f2L%F+g4AU~&AL>7N3W<7a7 zaI81qT9_J#zDl6-Ek57ybuJeC8axt3`^-FhuD0MsUCcUg6B1l6gpMti8i#_k;1}DN z^3Dtsorl(h1qzxx-Q_J7R&gK&>aHo43^W8xM6=_fN|8Hr$SRgXe@Mg7fpYqUL`T6w zIk*B{9GLtThZeZ(hUmobsegZO^7p3*M~le+Jf|Z;uAqapEk>fape6-{trv_I8ULQe zG$$h}{8@JMfwE6k?3y$(UtxqJ<1$xyKv-f?33sL6>pg8<_3TK(a=U0wx8{63YxzWv zJmX>=g{Ehei0W8)Wfq5wF4!~mh>V7put_Rnhy3S3vf&?3|4%x@dYHK!<9Irr4`=r?^WM}A_DUnCz=iN5*@uopEmo`kgs+^h{IR0j)(bf9N=51=s$M{%#QDvvcBWSOOlW+mX7`Ba(S_3R$^3M-c{<&l?#S%3E4?;w zckGK``aHbJ*(ERRqaq3$FvY6p&bm)}8{TTJp|c~_=p{8N^5yy}<(c<3#&7uRlbUv~ zTbmd&m2;1P%tEVhhErL&4X+)U;+G2SB$6#F%pwd5T4X0(D@ho)XkVrsA;S7t_1h<< zJ%b-N^VEO8nUNG6|6|YKS0S9uv$$D%4YT zub6hgYb)PftmrA`7RwZurjtpL;KtUk{_xXI*R|d>0V4AblV6!%VZ*o%bbjf-oOZ?s z%Lae)XCQ}2BIS}tI4?8*E8hZJ@4Wa{>)2;&g%6qH5D0ZxXfgF*Y4R<3*DfRr-AqSZ zQsO-cH2PcMBit|TGN}x`zfZjO88VmIXkXZeKBL$(dBR4uf7J= zX6h}KVs?aoIexWj3}eGc<@-nJs`-;I1x20n$&yG2ftrOeU9RgGbWKbN1F2g-q7wh_ zdRFgx*7;dKoN)K6*mtuR2nJ;{niH2TS2~oYRS*9ptCHl+)_U=kdf4gC1PJS+Rdc+4 zW;&HU%yQ;rF>;mUTy3*V=X_nw^!rhD$?x#exL9BP&lzkgsJ>VjQX^R^sH5J}+kV39 ztqjS?XntBi;oj>;{40}KE7EmDx5yJ~`;lyV7YhVqR7>0|3);R% zwtIr^QlmNSbO&P>VTSFy?kU1H=}&6NutDYXzDLJAc(pY|d-q0uHtAM@bVA zxrI+`U7fa#jXO(hpQO}iwgukK?`|5lTTX{Q91%n$Qos(ZPzDBw!Pqcqxt>JtGS6kd zGVG_xY5lk;no#w6PX~>b<%^|t5x&G8ayehy`+0&VR^TO#@s2@xDJ8suvWk^b$O7Mi zyWnTicL(Tw7ISE;d)*Y6a=P-~M{|qjT4_pa-b( z{T^s~#Za@@pkzcKOpCR{41rR^H;#a*BM)0_X(H=Gs?PhJA51F$FC@okfAQ|=;wzLG zMpY;~Gqtn-#bvL+kQ>vfVCK0dZALfR;{>~{YJ$0cnK5jb7JBpz%E=Oyp&%8>5|x2e z0)=jNz=c|RT;%_LNNFf4-5SnyOLGPBCFps@L}g3s#sZ+C-)?!p<0N^~%Mp!ZAKiD$ zLcC3uzD<|R(zxyJ_abqJW$VlFSeGShZnIoinXv>y{ik<}R4uVXLM7OpVf%7;tOI6g z{?{SFzQpN`Vy1-Usuo*yh*@E#;93=fF3ykauyM^$Vp{(BSf18(i60#hyR-r1B+uh20QFxa zCEERh4P94;A@L-peC-^~w@34?%kLby;K(!UH`N0rrEaA6ONHtNngB$M14Fm zg@YL|v=*tyu~#POA>-FQQ1C$)16t%_fJ}Zo>&JneKBclz*vk&BT8Swf?|$(Qm*wB_ ze)a8+8?5PDYYliSmCe!WlmlcT@8w|+7s}^-z?od)ksbY@Usd+A(~=t7Y7c#F=9T?V z&qK%{cPl4vAptz29&ecFA8v*p`_sEmN%ESLlh+SfyTSS`%z6fn*;VEm|FE@!1WJH;*-F*}=jVVRVgtpQ#oupEK%tsPtznKSziTr^wI?Vl*Q{-FnrkNN^`9-cjg-kkJbIYB^t zOp!u#powtSk&e(22k`bxy%$lPET3iz)|m+Te_jBk5NP~BO#V~Mr^aXjm=a=q325>l zoo)>4O?p9veM}0Lv1vGu&jInedZES`ci~Q{;J{8tf>=o^3g9;l>9E+Gvd_7RidNCI zSWiR#P-0@MDuF}3JjDJ{&6s*LRQZ+T=DX-dh#v=x1+gCo{O5nH1CXHmG1aSL(Zyb6 z&!w;bPG1!LltdpR@t{?IuE^Z|Y}wNk@@>+~l$`Y=H1;vM`0+*l8^F-lWD)HuG%YpZ zHlGYBK9MOFD{I))vptiCO#9b}t8E9|*?!-%5KtW(Nyy>|a8@dUz~blr?&8KOwNQiG zPLtrLRTF~;=dv@*gagGkmHr*VVlDIL50lD*054Ly2YZT z$Iv!-PC?Dq3RMa6nzxkv#iXM6F0pj+4u*yi6)hJo z%3-S6m+WU&i42Zv!m!jLD6KUyH2S6$74-_OXC*{-1vuSnOkE-T^W2Wt_N2@#q z8b7lly~FTn@w%dZxh-hbNdtxmVM|L|+sbP-Jlqn{-W z)y0VX8>Dl;LS9hjLM^<_80*6Uxd7hDXu)G(g0lO`)|)KDV+^d18;Wh+cuPd>$X_Q; z32$p$xLH?H9Iswp^32+rPN}SBS+u({Jz3cf5S<51t1x2H z-mc8>p13YgF5V~@Ww*J>-IiEX8hBbt)CM%gtJz#X<6#5$F*x+37hkv9566?Ew2A%4S%FlT%yppGNYHkS)C0HL~Ck8 zS{HO_5YCC5k#@SrS8p$O-1vo~9lK#;^(qI+YWdC0yg3J=}#JAz+KBP1hGr`7$*o&fU@I7>*Y<`C- zJamJZ0X%Q}=4xnRHuEmv9{xQhbymE-D{P06PZJ@6;e5jTBpPwGnDc;2wmKT)J8D=v zqga?zg>@c}GuZYPx;27JYV>M+J=l9b(v^$<%17;X(xoD%IV%4n?MDPONhN7H?Hn_? zWc;pQ!IE+iN3BdYayF#WS#|?q6C#O`__1JWdsoUe))Ec}MS*nJ)_`IuS$Gg_F7-=Oi|fzvlgYnBIaKnIQnNl{&8ODb9*n-^?AHgLG8M%8a(p$ z?3W-6dObV-^Oj=UM%UNzpKXG9ceviygzLXFlChLqEbQdhz2uf%nLUW!G#jcV==~hz z{Zx2A_QBAAROuEmkTecXCn4(n+aYs1`NyIfvy-N)k=+gnGPWkWu-`)o@|@pZM*q%D zk^pmH(Ji{v;@rVN^2TsHAW-JOnysVPuLDZdy%mD2Mt%~=lp7n5vjia|=T_8qp$N!k zAJzZmt?|wE6238L0hX%j$o}TL_{AxHWUlsf-F~y6{2=jlm4`tcY);p!HQPVO%RebU zhvT=_W0Z}uzwM#z#(6%v-UqUfE$(2oc?lBq?TJiQKaoDmY)QQ5VXnb@73txoWZdk$0`A0^&N$#n}^5OoF9MM3*2;!Humv4dM=N~PkI3uIJ`LDH!7~G&&qxZ%Rfb5 zZ44p3@w3|en@rQ_u?!X;Xj`59k%`F6bc?EbQrgwP`9l=0%lba?r|H+BOy+$Y##K|p z+T+yO*0bHQtjqQtuWX;c$(=guMSvV|yH;+_F}R&G2RmSm!Vk>tt8dq@h1oCb@rK9} zS(6qCK8U^ocO>+fm(E12+Pk|57m>VgjBTxt$JD9wCSRp*$#{BP0OB7_5|?iQtSTfl2fM5YSW`lSq8Wd?jZI3v|m3T2o=_TCkn%OUgyywjtN!d zFEO6kl}zEnwk?WdjsoqpLM17{4}q8seO9HtLdf&;L!ef|{gl@~jF^pox~oc~pu?^Y zgQbfT*lTPjiZSH1on2-45ijS!)u_V=zj;veyd+|Z zs*jA*x1fZ~sTr|%D;d?~QkKR{28(psnN~~}Lz&@9Ecwcsn zv7HoXDX^pY?|)?P1IsK}%Qe;O*Up>T-hlXjyPa;qmCLUD^ptlA1P;lBi#?5}a3705 zF4TTLe(y8O7Uaz|U&E6#JUClaPAKwrX(-`=a-cTk!Joo&o`EexIY|_hogA_pAiUmA&n|jRJ$h4AyHEwh9NgX zm9R9~M3*{#^e@eR&y&=|;*9gc*JuhLlmp{#Rb-5jsnIT`3+(?8N2NAjMTOek9B<>>IwB(4ZNwIH^ib0-U*+=m z>#HB|tJ!Y2m&pb~jIABP!b5=WeT znrPk@*<~puqgK~OxyNj_@CS`=UFUg@HJ1(*7yQ+~WI?hxV_pXC%+;d`IdMo{F~h%Z zfP+jmzW)YHA^troRd!v!L2qZFP&$*>hy@xg`AOz-5>FI^=i0ZIh`+TV`p#~je-Flr z7_3H>$APykTIA?rkpm>k74CBb!G*(Qg|=C9agL=7ZgF2nQ*Y$R3S~RIo+uVIik)s) z4u(4ws6IH2nk+WpUGkuPY2DF3>CtJ0EbSe+36wzMK&g>$&pRd=G%5` zbC)}+qMs3-(t;*0KI(cs*8&=Z3pWzf8@LL6iNTbDGd-T=1aV0!(3DsI1$rnk1cX6y z@=?mS=qQ-@VJ90jhSBY?GvU^k2>LKoeEmZ-Z88YWb*Y3r*oeb$dF^ zR2e!zXB7=H9!9T)3g4#Ykr1yA?E*}pzx|`0#{06Qi6+Wp9o5F*V|H_CgX?r!=D6AM zqWZ3n+FVBg3#*)_a1mj$Co%vegy(^U7WRp3c{<2*o-C)GP3)(Sbxnw;MefS)p039L z_F4Ed$yzmn+U$rE(^kcozFNbxR~4#!KjsLSY)eqaS@iQ!x$pvOq{o2f;}4PF{WKqR z5_Z^kFytZKpvVh)$J!OC=AB9F8Afa^I%PpYk${ z<9)3B`Q{S{rhX{Wl^pMgwBZl_9PmEdil#oPhR+1liJf;dds9*=KaYtmO&{=jfm31b zm5?luRQAX=RV(B)Jd1m1=`@+N+5(@}G_k=HbKKHk^N>;+Jv`U6PjbJwUx#bmqELT#q0Dz4_&5@Nbg<|>&C+?~G3rLOv~xUC^2#T>r2446J*@Eq^k;a{ ztaVyM$}eelCx z=o^yoZRTl`&Sm}^ZoNt2B^8Bky16!f!6OQ_zNH*Hrc$n4V34g^hu_}Lh(gn24gWB* zR0z_RVFdaQHu(KF7(D{XC!5YyQ=sG*rOIHB2yY*#5>izwonZ?#hNfH{5JUJ(ocGuC zz4HS@)n+wH!}(15&gcZAvu)ySK6~ZFjkl;% zA!ADSprh6Luy5c{l5|*=h-XA0BZi^MKI5=oIu!B{C77XGZGKm*Fy$yz8hUm`)RLk! zjShD*?vY+_6*P3uM^mFhwSmz==4un{FqKI}4jX7bX#YAJsr*YX@9;j&{7HO6@nK=y zWG1|5Qj^SZgZQy++^EmJ9J7yA0!4W??AbzM)%+5_khsdlh z){)oe8KX<~2h4XdH=@@>!fhdBuRCNk3$K`%tbMuGpD)kK^>8|5N$*NPY|AEqiq>6w0T z4+K8=N~*u$?ZDP9;H#q6xG6q!%VfXEv0!>nHU&mX|QkZVT+(EU_3#0Q> zWVVqEzN+Gv@Qoki2A263*=2!RDrbM)r0}e7OU{5fS7N=F7B;)l;KXDt9#>CV-{>gg z*abVkXuV@+?mVW{%Zw#3l|Q5s?&M<@1-FLE{$Zyjm(NtdkF|Vf!Jy&tEQzOIUG6o= zc|m`A zJ4rx<_;rTLy2I|qX>XuDq<+|2!y0du?~|go@Bk}(c2woVlG?vYsTG$Zz)(7UJY{89 zfLk7n!(@E4NmIeHAS~*hujvguQ>CBkwst-b)SKEuM}Wr^21hsmwW2fB&p33duLKhw zJyxn)N@^C}?6FC@(ph!U-Uu7m(TEN4Id-f4|93IY& zC9YjI;;&zfTqj|XjSSZYMkGym#l3Y9>B$O?t42Qtjk)LQY2HXzxe+d`i)QZcP@)PIn@4z#0{c&HF@o&&c z6o9b@b%Ws-@O-Pq00T9W`2I4>7A^f)yJIg7{;DCkL+BFHf`!fk&qQ(2ek zv&MNL_hFm!M~@qkZdb&XQMuh3I!lY;VuP@HU2m){oXTZ#^_B2!YxA?j2{&lXpn6Za zoRIhqBf$iUHl99y(8N#R?%3doK1W)Z{(Kp%^3o`9X5$Otq5G!vZpOSsQt4~*P`q~% ztLAAN!@njlqtorp@rAkF*pJBC#MJ{9l2cTad>(Ug3J4FcvxssARb915|@uwdT ztxms>Y3iAJqi}%o^y}yI>&eS~%-#opiSLni1(xr_lUQ8geYR_l%9VEX3s?bSTL&{6 zx|>9o;dUD@71ZAR_lcg~O7-5*tpzNT>_G=2gs(+4G#j{I5V6gSa`{_F>TOJJ6P48l zD{Hen7rSZ;T<2z!<;V)ug?CGJH`|3YZ3zljv}fe;r$^tKk#rV!naX@_ZQeWjU}%q1 z-@yNRhGfwY(^W_5Ihy*_j#T(b^-?DMp$?A;v3aVNnd91dNQ+<`_!3?p(vRt?=@;{z zM5&GZ&xc1lqoegPLR%wxdCuALDrj6gTlDV<4|o52!IFJXXl*`Dg*|bhy(8#){Kh~2 z{dLHf!~b|ZVD8?@^2z?q;c{uRSss6QFXZZ*87TS-###?9JTt%B^A0`+0c2Zof1piv zS}tEOt{Jr4BKxM8l~Pjau}ifueGJ)2xO$td*~% z-UKQmPk-=JH@eXO%SjO}3@_?TtUy14%J)#qVgvAuXD>zN1usR=G$yGRz{?)BTE;}2 zs|^+lztUlFC0uBHx75fua!0KnVd;!8s}f|2X-1@+9zrMkKKu|J9|o}+zsk?^?UV~| zjB1TtBuAPgsEB`LTgAmulj48CAxJ4h{f?k)mgj9Fi7onIo8&Dx4BuaLO`#KCzhmt{ zveL@9}65wjnH1$P%CL*l<%&E1j*qG=d8evOHMA!NIozt#E*MkgH|~9`0n{Xu0QiKA;-? zv9{T+|M7I_y2gp9kDS0WWz(;yGKLp@J0%wg9%rAeiC-f@dAfQWUKBfi( z(Z_MTbf6Izb!;Z@r%}X3d+ChirI&<;Bqk?68Oo!+h(*9c*s!tugS!qfWBIjK@85Yx9PmoNH=Py~W zqbj)1HW}NS*FB1@hWN(}!w34=BVyw)&(>3%-{n_@CsnmB&kS{%J7+6+Wi3Y<8}Hu> z&ICWRX(vNF1|fn3E)ZN+fk0!LqgVU1Oa@yGTeO0 zco?j%CGj2OJaP40_s7o-QtV4=Jbk#Vp5?AW#$}$Zg_;Igl2`c#=#R}jMv9AD-!a8@ zNsbO}gUGQWB|yR8b`rkyE}jk!_yML4xi>vIFZH5ppR$T%OAhw&#=hYipQOJk!gja% zK0fT|hGsPCi|3ydf6S==!>@ilPi}v&kPU?yqCAGb-F+$MdCU59@osj0RVT&fBH7Y6 zbB6ti-FY>n2fX<%yo(ohzg#IWGN3CRBm-@TQ9B-R` zt%1FZuns9g9_l79JX`{P?`Q#6!ubn3zPYh&{akhwN>H#PH*mQJv7cZHfGsw~%F!WCJj*hpOLK#wB)C>nnT8|&!_s0QHZ%+UvNE4h zksBPn0n?M-43|#pV8l?+@UU4w2X|-igSPut!cKUI0l${jvTrE%N{-DPwf48{^CQN! zjhHlF#qPTgr<^}LheWpQ2M>6k{zI^@=$Z?VEJdwsNTTJZ-c*r#OvH$j~7&bycCw&TRi2wzZ7J> zcZzY=@y)Gfm_F0_tK_5dECc0c<~8wlKU;4y#=RG`zWSI~06)=t*J$L;b2~*c0n~7H z)VE||Z$0}vc1KPM6+MW;^=Lb6mbtrZdOdFpF5784%$8ks7C{pHU)SWN#ca`RbbafMFF>qYu2y}GDE`*Fcx4U;)nBE1vMOusCcE$uw~B)r92FsMAvlK1re z5Fc%PDq+$47TNdNJZe$kCQq!PJ1P9{*yf2``E?M>V)PP=`Lq@uuw*<9RbE`-N`o`q zmblkgJfs^5(kF`R_iI>R{ZqiF3L^+a_DUjoc!V5iG1^S^# zxlcO@t&Y2%L<-QxftE{;dDBgw=*!3Bnh=GbkNcu98O_>VX zWw>7ym(N4=CCIpmidc(_$F2nJ3=u3Mu27K&$DB4UdI~f{8fl_x}!djJB1NM!y_m+3=vU;KoFk=8#Om zUk?@=e*ndxQEfjmuhdd;+-ML%a!!qH`{l79-3A!VFC)f+#h7O0mBXO>v5)Kk5mi)V z#+7~cM%&5GqNFb~x_$QP7f4rVf#adZZ1eqh?u$X=Msz5Qpf0#GqMNf}ib<9bnA$%? z{X+@c!$KD`TBvzOOYPN3hLDe3_I41jWJTs@YH+;mx04Rzu!Hxto@u&rkvZ|p-F z&{`KmZT{ME3fNmtE(;Vo?>!GXykEaEvs}U}%?NH_5=ihoYZ4x4Nu?j1sblB5(O9m! zUj=ZMxOIrzO=d6-XQFi(2yA!L+nG1dgr0#K2^3MBFN&U*yc+?9OFy2utiX#08>vg>)f~QA7rR*;_`KkH{D{m6`Cud6#+gU*)jy|8G=-VDL)-rSoW~_~r9nlVkPr z@#Zk<0JGX+QR4a^vi+^r&=OW^W0Y7;1=(LMgt-4Oi~NI9VK-~g6R^!wPjK+7f8D_a zv6nW&BVmo)!BU_>qawy7DFQ)7AOaSpBL`mmx3_~#RM>+QNIKB|(hGW^7Lc~8a~x!q zY!7l^%-}Jo932qUh}>1Dbc=)6=*?=+1G=b;vTzq?(C=*3vH^1=yn%qz-EiPi`{S6NL@sKm=Lok@9+Im_&A zKMMY$D=qsgTJH1g;s!{ufI;dz@;wgilkk4U@lxPk8Ag4OoUa)(XmR~Glo+GNpxG88 zWP5O*rm3r{4h5Id0!mPs6IVl5N{iFHADQLc3#ucPY6A9qzq;rGeaOo6DBe~*lE-4x z7+{mND$~ZZ!a}_K=2nN_1{>G7evENizlEP@IVPIF1Dzon-#Vn zfdCN&pJR!siBu2P(*gX@z81b)J~2etYvj`cFYi4nJA%rOtt-`d<`;3PRjp z!H|+eP@_VE31Far4WUs@c2A3ui!_pLk>a6_=b7VCN;{KJg{F)|z>9}fLgTFk9TLK_ zZgqsJAa+ckSI0s(GemQ9_+M=;S--D1HM|p>FC|0vwJar_o}G}pUbb1F)6{XW0diaT zmjw%>qWdqOmjSr1FdM0^OW!@6;Cl&;a56@s65msyr6Y$OyMx95-fPDc+4~|OoeWX_ z5J>93OwItu9ixJTh^W=)@|Kl)3y4YuP-k~G7dSrVhHR1oG(GqZp6Cyt@h_N_O#TxF zs)Ype+kbbKuWLzjH|le8Q)~3|xX>uYD>EOYSgesUGN|2ORCkBUGVIr2dl^6%#~t^x87B} z1+&bFqmmczfS|a?%ji^UO69w3Cy*+TwpH4Lpt_3O{${;u*Ysma*r-8;-Gcz%jfUQ~ z^=V1*81T$^%!{53SS^Io*bZaE#p5c+>5Hy54ek;qqrJ~*I5Dju!p8FML7ft{I_rg5 zUNc!&qhJg}cfrWLHn`ct)Notd8jXUQM1#y5rC%8%Oa2V zP?Icx`Q?;`UiCge-0)eZID+pcr+j;Ps)hRoh~kF3&i9^KX2MxkveTHJ`9X=cqqx4M zObk>{(rqmy_3ug4O2A;rx3^Q-1cXB!pR=A+<(F^cvT#tqt!YX3GMP+66evfDJ#$37n*{8Ntk>g#)GUog zO!zV{235WW`V0dA;&PL?Bz7F8I?O7u`_#ZvV|*w<=3MH?QZQM9(19{cjv4dY85Gpw zNo;s=5Qd>|aQdi>V|3z>OmQnbyhEJG?_jLP(IhM)%u5?6!6_N@kf?u;{Ik|R?p8r^ z%nq}eah!?nH~7?$P@hQ8jW~kBprtgpQ?i!Du|wU^A;$ z7!~5+$kzIGm=^|8Qd(-()qD_sM$Hb^7JH54v(jFqSo(G?%-cUW;C%EdCw&qEVq;** z^zYMKMYFh#zSF%lj-R}~T`9&KHwuAvMJW;sPdR-3`(qI_F|J(cmU;@uKLW)rEaYsF z14#WNDg>>Q26&QTA#KJUOqG9`7UT z8z04Pg~A84r?1CC=#!bn*6YM_8DfoJ!oZLW+<{K29~VLDqa>wkTiL7jn4p5(?S;N1 z7n)NCq z3q=NR@B`ZHl5Ifo_QGjC5FP%g4~ssYZXh@SX!QGT>s;v^&|kC(W}?cEXNX&I&h4(< zO0WffbO4&hxze&()^GK=mO%8iWmsA2vur`6`1K?j$&o-jXMv0|d1C~q0v|r*nR;^V zCrsZ+@Oc+KjE%0XNG$76(5s_?NvL#1rbg5uNQ=e z0I`i+nmBhAs-ahjZDZjrUfcQQx-fA>Ah$mAS>QUM4$Z8Uhe1g%N>;s~v$vwf_ zDv_n(XS^o0h77mlA%^TruY`54Em8p3vY#a$3Pp;H3RrV-Pqr8)wRFaD7!3fbx%cD* zAsDIA0VLK(dP{l@D{QaD3d`Dc`-f90R*F5+<`WB7s>*ubZl>F-_b{<$I9Y zmnC6Yj^~{*l?}0^`p*-PHDqpcRf$PTAH2|86BXLtQCl)-unFga@dE)=EPim@MYDqC zj)Fu#v%u<0p4_n`<@!yDZiQ@NaA+Tv*A$hGHK4#zky) z)YlI-mfhKQXI-ynmA*ZLhJipEqkPSlzj_kq6r{7KbHg7b$qCqkSeWj7B?A zR`g$OQO3@ULjBbWL`YoTR!{V=7Gug8gzJ5};jDXH!Enk&Cb4n~gmL9s+Yv^^!aX`WQ=sx4jaUvX76Z3A?qP*>9YJ-Qx zyGY<FeihdEzopD`Z9CLoYaL})P-pky^Bzo5 zK}`urZED^qKBin78l<&*OAl3y?+=kVCaqWj4G7!bSBXpB+?9c)mJgvW4)jDoaApd>d!O8l`U%DENVw1}Cb39)KTtn(gHK6emVKo88j#cZKNm|=Nt*;Il?DyUbpAT(g%W1XF zhIkNi)01^GNm(LIhb$Hy-q}m!)mEW4SNV5E0rflO^|&Po47ux6C%Abe`UT%(TpZ%i zSe85}R0=;GFs-nMrMEMxrQ9w%;^5(CEQA1rSPNDA_uK0B8_xMOJ_z~3J9WVmC$0X` zAI&=~ZR7)G?qg=8MICjNdP(8;)~P^l1$L>gHywtD0{KE~Nz0f)>KTGaq&+W+=881l zEm@Rr(jTrpp1$~p4j^1NM$x5syXLD_{cEHdHvES9ILNqWMXSM7shA~O7WamMc@MCq zk<+8>b4BZc{4X|XGd$@Ppl5mEep8fNnet`S@{U?`Y5HHr^`rgKPZzzxVGALUB&V#e z@;;Bw!SLQHJ#?%3D8DvLl7Q}F)>Ur4m(=>!Byq@>Q|1o2YzN0Obp%`Xm za+PTg@7~dRv0)xuk@FVME99nVg9gV?acsYO!Q@8K?^YW{tP&tKRpnlJ8V|}blc3vW zU=9?24zcpa5Zj9lG;+$4PnBV~zSk}ZyVl^`ucr%y=xZM^#uQI}6r-bN!^FY{v)Ewc zG2(Dt<{5I_7c{k=G87alsDQo~=P(B%unkoFyDU>I80td!C5j2bOM=xjho*#;po23J zz}DzRK z%r4XYc_Uo@P#mD>(*T~~O%K|rAhzsdK$m1bU#xd_9Ra6@?KWelrr zR~`4ul(jiWLWt;b@ZXuLUYpa$OFTjdB*pNy&PUEnhMgOw2fZpp4mteL*gznd$T&__ z1qm7{)Kk(=G#4J17GvRE`eSUekNODy?^6^B(PKgR51F6#l@IFJA02SWk|>!w`k@iN za}?PGl^i{=&?3qoSh`M2460DAx4r*FR3T4Vx)bp67Toj}%l(0<qi= zO+Dy%{<(R_eP*Dw=7mj=DS<#pA6w+pU6CdM<7)VWVA>IkNHvin8c<`fqIN9Sm@bMtc*2%bf6x+nDrIf+R%3l6j61 z7VXhml{w%dQ1jP5$Pqq#Kc1#(dNU3R$dssPJ|ta;ylI`na_36 zEW@i29l7?sn)BlRCCjju@r_kTpPE;hAN!t02j?xTp}dy7BP^y>jT&i`{V*uKxI{P_FCU`q2bc?GI#yHSb_Xd-qb++6Tp{96UR%_4A~k#-#>i z_-6szOK<$^c9|OwVg4I3dc}|>Eu};WeUxM}O+Wcp{sU?~_smA{EQE#-}6KAKLu(doHARj!i)nk-JKEbf=TL zDo7QTxNI~3IFFJsT^)rymWe(P7YZqsMk-XUuH;NCEJn6~fFg=cS}YZ9kgEn=RXZEM zY#03h0t7*hvSt#SYkK>mzA}$98JjJud#f8p=s$G|mLs%_bCd?i@4jLEE+W~8EY($j z$@cxj`8nx$nMUb@2#0;=8jnihcy~h@zIbm78m^_zXER?oyb_b;8yOgGVxm}bggs|O zZ=PfUX)0&=F&Zu(Qrs-QK#9_Pbpp-?HWc>NPqWbuD~x|aN@bD9?hD(Z#Dp1&BQ-2m zN>LY_?H==5NLh5P15{NW7(MT40LD71Js5Y?v zY&NM|)w#`RXkxvBE3eIcUtP<8>2jSRQOG#1K?eUIXkMoCpJJ$D8Jod-MgLhfXA48^ z@C4kOn?&g^%AEmxLkoAJTXyb!xx<8@_oKh%12$@)Xk|O4j@y1JDf|7K;&`yA<~;5$p%_P@!cx48ky7I(+aojaYOYCduFOAsn7eSMfC4yQtpvczT&NU z^LSn?G?-M=;)vKPWRy(rK81F+C{GQMe)X2s19ro24)?agruMi_ZQTI_AgwZF#Ob+?+kV1!uSOKM3XJM8Z zrxDA>SB4>(t*!TSFE+$v$rWbUo47)Fn?;oIY*e{~N|B88ZY6iI*j9MpP&*+)piXI| zv%=$XVF$ztk}SSS+QCPc<^~Qx5yke6cjWp}qtIE2=2wbWr~w;H2;cZ7`58z5?K{a} zarKYb-EcHKCc`fkKp45JHFY=lh{#G0{%VI{N_R*U+`EDV;Vpklg%Mp?g z_@}AC&My)r4yC#Oz>=Sj5@1;9*Dp$Dw`>b>RQ=mOEr@vf~fNEARF% zLjwljDHyoDG0=F==}qT`snk0eD=ynpg~2AqMbY+wrk@xe2-5f^Jg@CU$l~O+(kUxD z9{CJve$!pbk5%RK#oXLs)%s$otcRt--jAKU7z(p+}$IO#t__Z1X=M->!H6nV{3|;cD@IgIxL! zYcDX(ur1Z=CF5Zv)73%a4NTLV^aQDanHbv_hImfp#kP0p+#g0mXijl>Tq_==J=+3* zV?9m%Q2Li7i=6F1e_>>bReMWR41wJJ;bBgN4@M7tYjk=AO%dyjKd&)CT_h(#x4;^d zVLxB3uyVA=hi~)yfs?wZJ@aK!khB1f-fK#`Z6=Z3z=nYqGuT%o=#)XPp2giO$kX)O ze>-vI`ZPxS2GlxbKZF|hDn9KOw=WpauYEWw7?0+ESAT)Kmrv5W@hA|(^fg)7B;A=~ zR9M_~pZip|Ogh7#)fLZta+*Z%M4;{${~gY9$!)yy^OE<0-0jtK+IPb`Qr#(?pDZ61YrX;_95$BPji+%hhfsZ9~x6JR&wnO_(2uy?TqIkIlgCKqr@}`w>v% z2~B)nTAK#NssBPE-UOw%BgI){ z6L4M88hFG%TA(=PlEf+ZUBh5o;ebzZ(MmTZLdyr8&cLd|eUkUiOs~YBDl(LZq*@ni z@3N%TI;zX1kbj}4-e*`>TC)mmYppUwRi%qR(Jh8$rQ0=$^N+L3G*6Ffz(i)H=}N#M z-*IXIhGna(J+)Ph{ITeFSN$4)HwE>G4$NEm+;0;Cv66ChbKRHhIvM_^gj@&Mo22a1 zSfN~0UXnZcPBp>YDSrzPX~!MrhGz`|C>asZHl!snvBlqru@(G^MUMlEC&ki`WksP1 z;09a}%%s_w`yXiHlC6qMlm@O^VI$XYA7&y9pH8J&zqkGjZ9-g9sCYy%C6RO#8}{V? z!LH$Xvi&2sJU&`@FP!VL4wef|!AvG0L~WQ#V>o}V2(wpRp&K7I7yU3UQ--q2H1gI- zKU6*ujz+;@1|7#t#xx5|SIxQ729%Kx!79!eISJo|#)= zxq(TQ6sZ5mD?*gWQEW5rJ)G{^W678zEM>z)`E6o|0w2Y_=b!L^OO|;!DaXv0++$HL zo8)9R@~GwB1%LGeKG%6d-yJSyKhfp2Upec`Wef1?a+V`>8ppvZue)ROWN`Gz|M06z zm+_fAC!DUCjb3+|QeJmHWS5z=Ng===U^6ZC5M6}+a8_7gGU#hk8Fo@TegJKF)8(}i zJ2o2R@UHOj)UwJ)F7>+{3RS{m0cpL5gg^|dRg&TKN}E48B5O0$dRt({MCY< z6XzBG%%lVTAdpJWJkO$rI6+JpbS@@>y+P(@o)0cRg*?UwC&+JZsHFdHNz;{D@MYTsE9moYDDi^S6`M z^Uf4fTPm{rdzr>az0)c4Pcpc!(K=b;I#a6&OGT%OL)X72Ok>TBz3N4DIQUFnGxzH$x_6 zlZ{-ddza3s^@gh3gUg(O(uE&?mFA(Urqpzv4I0s;v^-OZps?4KZI#BIbwCjg)=GTS z&>vaeOR|Uwp(sR3H`$#=yU%Kty*IM-h;EgcT_}$dhJ|{A7F!m{Obi=B4(U%tF-0ef zZ}Fq6MM?_9gx59`V`m-%Y(Cl4*iA9d*AiA_5Tvi`MG9fyq7IGbyWsT zKS$Z{(Ny@IUJfhqe}<}|BhyOYzPz|N8bjJB%aXJNDe?homNL5d04tM`0PBzJVOngc zu(@nxm^7MV^RkOpOR+KKYHYo*qtM1}lBY?0MM1|B8o=eVmy~C21jKs>%9}~F)DV|^ z`jeB$t%jWMkQ0o$;G|RE2)2mn-Khwr2x+|$Q|Vh!nL!^}$-XcQMQ+FxmRfcG5#@>m z7jadU5ZM(^@)Td`=qZ~OSroab*|DuiQoLaPH;L>{rc#OjQbFrRP$=NPj5Pl>uFl?i zIgxb+3w3p$CGIP-4yUVYM!@rr2KA2J!`lMjc?Ci7^7^&b`DS_yrv5#xog;OH!?#Wg zbfmA5S}7vSLZ=EhMHRvPLmbr|+nl&@auOw2jH{QEyTqBZsx|$w-YH*D4Sxo(MDqu& zVlCk|Z@GD4l>-NTX>1Mx`=pNf%1|k)p2YE^DF_A-$fHGL3KK64B`(>%b#faLJM+;` zY>}p3@5zC~XWbh`8&>b$ME2{pK){BNMlw2eLO8KzjhWpX42QhAJw!YgLU3Jn#%5_? z>v_qM<#U3O7o2)@S!$2{2`6HeQ^OHV*-e-z6$S!p_r9&rtn_=b3<}}>3oB{T*XzaxIn$I`fhL3{x0wM$q%mr(O(G^foXVc zYSLxW9airmWiM0W61u+Pv9P20GSe?n5bK@vx}M!Be=KZq+VUwDfXg~7&EJnW%Z1BI z5K$h@ELs(5U)7h7{>FOWZ9r0hNbo9m@RD|%?qWN3kl2U(9s`>2LT0%N(GJGfMoM;X zh3uO-=`X&HUpftAKm%0P=nw3+i*QZwP-Um__W6OBc(&WXA~m!1;lS1ZWm0#dYmW0w zN)O~c=Y4}%pdtJ^?_;7ddB%HGoPEOL(f=Fd6mudVa`rq2gDg7gfxK{|KGu#LaWnSt zecNBC%^;EME6)YYlF#2=y>?up9;v?{8cPUo2oiFp#23K1l18OHpdVmYTskPE1Q8*f zRXGLkW2z0=V2j=8M#Pa6P)3WmPCj+mZyrgc zy~{rM_uXlXCI>svDz-%_K-JF%V=g$=C6tnZ4G9W=N=fw}c9A$x{b@>Oh38{~JSxFb zdskS_hLhc!1w`A3lD{gwt=>&>8&_xKyVbgj~^)u;1mh+IdCzV z+bIt|b9t9(W`t=~qHVEE;j!|zc1ARM;jkE3eObnFbnQ zOaGL2vg*71C54Xr@?QarO(XL!6*^#-&uG=Jxvc%H5Yy7lIW~Cyn3-rqYaj_B*a?nY zeA*PJc1VcViu0ERv%41JF(OetVEed_DTqku#BI4Xt#E2h#UyRTSfb=^FCua%kz&a{ zTmQq>NEF|U`_~EmS6Z#t)xVF=A-ozC^*i?T^&70#@cSnbZ`^Fnfiq0{N0P;p@$)+ zP(-h(@3X^qH#P6)1xf?yXQ5^vjmg!RX{&7^Jp4gk=;65R_}YDR;MC=>v|)_L{*lNr zfnF&L0{aET8L;=Pvmi8_pP>D+#bePVogjmsx6H=xsw8bSFT=U_FJuU2;8H8uqBpuRLr^x-JQ5#tUIOy96p3^)fl| z#7glY@&$Tb|4rmT44=Lb%9j_1eoq~RBd0;M=Tjmqn&_8$S8~}k(}!ALG0_brpu>xA z2BV(nmd7{w;l&|l(yH9BWL+~H;@yU#=1=hyFgcLv$g%|X9td(I6G!+9VL4sbbPBd! zb4tf$9^Q-9<%c*YRxCpGJrDLEKYF6&N2{inndFn?Rx|AB9n)y!H1Nz83#TRIrI}U!Aw2(p#+?dg&dt}Rr}uILqXw3rJPGd zbY~E%&NwV)qEEry&uk*2E?q8%s(xczb1G($hf?~$lt0p=^@)o-VE>k8`39NuHcrN3 zl>J#G_ADShvF(K+7#=doJDIA{#xCVD#No%^ewTf=+4g`IW#Bw_vEBvZZ(75*^v>|d zhl#*kzo8C=_op}WVd*3{hQoT@*eZ8DwN2bF&jXLYR;KSoEaV6(JCZu+a-Kvl|GYKI z-r>&B-B%_l_N3Ame7q`v_bxRiTFjW4Y+~j*cuM3O{J~LV>(ya>t>g^E6YE?1Yui@N z+0sQ1jOJ(-=xgt}PkYhs6NR@SfB1v^NNrfVxBx^N<=%LyszN?PSygC^$B5@AOSSg~y;ny#; zu%lPdK?+S-nB2&J@kq|qac-rSG+%f4PLev1d^1OO^(aYJ=+yAIa@_FS&~F{Kg>p!L zpGrgTZu4@-Dz5)Z;u@)Q!T!tS*Y^iCL)B;~N^*zhDr@io-vf!=GIh(ycW`x!$DE2S zne^{pAO{8Ym0-J}3{b#o^gi1&ktRh+!J|o-8%Eb7AveMxh|(dSnei#f z7N!tm!#>2MQub#H<>+mK2__@!vs6S!Rr`LWK(>iyC&gV#XC_YdPS%yr?33fZN*8?B z)#*_YYdc@`O4K^ZGs4t}sS_(j<=0ipqDbupZ$c(RJHeMaL@lxVuNhnvu=#!bx3Y{U z{K}2TQSO;$JyC6a^bACH`!YLgDdLFncstuPT_!6m6VvEq)(hP0~gb-{r!GL1Uhdc+w_ z=MSEv&{*8QZKdDI_-GI^Xr%s5 z!$#^Z>+Ji-4D8)k$B!KCW(p-%d%mLPPW~*YFH0iyx`SGeYn|5eD|Q8CAjQ-5n-EOp zd-=AXCQDaj+I^ zm?9|u^S69etsgI2Yx@^R)9$2IpcN4t9WeNIcnx1)*6lGpST}gQ3m2kE?Bcz|C@3?H z%XKfjODJdo_a)Fm9fvF4r^LQ}&(~pe5Jbl2({5pJW-;I%WfAaYa59+yk<)%25t%Z> zr+9aWVlP8uX=egzfEXVHQ@Vjq*h;h0RdHP^FpaUXqIaFKvpOO~&8WEWJZ93is@up8 zbWv2O%>^#LzK4{$bg7;2>qOxX!e=Grf6PDuZ8I)NvW?r6W646zT5)bUKK0%Sb$7LL zTSC1iw>N<@N%?@g?8Uh3F|3ey&lQoxz6KW?ioVBxw;zluVPh~y(P2=@zh>+O ztIcJ1Ma!LN=e*>Ouz1_TL&eqU7|o?A7r4Fl9{mwnO@xRHEH~s@ zC`uZaVzx@Ct5l8^lE1lf9I71BYqbwSY!;XWvK5h~W_qf+ok-o7N4Q#YH9T@0}(cTGC=*R*Wh@=I*O6@Dwk-usn_|5K%*?OszXv%uT&g6Mn{LUx2DPx@ZV8{c7r z^vcNMt_GegM_#%Tj&ATXbQwMh3Xvmxg8&&|nsBuS(Vf z|Nba6h>+KtC#z9aMQ=)$Xag+3Jd?lAB-9|~SnX;27b)A8=W2RwRwhca;7Rp?NOos* z>b(z;Ctc_*<_J9Os@it8DLjG8* zXA#)I0{*P$xCcThi(sT*Zn*=Vj_19glhYcG7B=;sllPqd3kW*qi^cUXC=267{= z3aE-Z@a#Z=eJ|wQ9$|DP)k0?QjBoJ;6GdHFN#Kq&pO0pEvE9Br!`8&d> z(F>6%Kf2*yLCDB=(Pv%g5cca%MY(14-VBG_Gw4dZi!S?Z^G)=xnPJSSSy;?a7@br> z)WVZ05TvOdMaE3k2TE3HQ`1dU+eSY}pkFbk-b25v4X7R-zldPD!PVu|ABSaq9&M*D z-~62sZ6jcEU13$YYCZ5AIXyUrTuxJ@Ao%3Ipbw40PDydcjecU2N{JHa%=d_P6uQYP z1~VtttbcG8*@8&;HC~gpe@7;-UrHeg&*aL9(UC#_Lt4lC{GG!geW=m_{#@I+!;RdR ziGulf9N?Of02@K88eNd)QVw1pS9_O3XbT7!e8qKUu*=%hvo{MLdV+}cCu?&k7Q6#& zH%Qal`fGpIYyvAG3-!!}Qsh+XFiWoTN6d#$?~2%&9S$UBosgowzQ6k`QFWGGl;Klm zzd9Jb&1h&LEGzsm+wIoG5&XcU=i#q^*T;QS3_5&ktuMXk_rSkR#2&fv6bX61E;OWa zGsCkb4eFm;j-^K>neK1$(3S1m+3g)K<}wtk;+}0585}em-Eb6TIX173Ti|3t_oR$& zE1mX9^5e;r1O(n*FD{w6kjhVVK~6e5;;;@0LJz{`;l|r$Ef}ujk zay73ss7n*GEaa{v8>ZU=d`i|tlBMygO8l=S{4gS#2+s_o8;@cT?D&K!4yV}$sgw?Mqe@dlz4}$* zHhjnkOSbx&n1Yg4y{>k#>K=$^8r~DSNFDW-B-YyH_@%`JDmK~>DHbZthE@q7Sm)t+PCLx1AR z$}r&QDd&o?@|-N#ysC`1u=g5kg=5l|ucc*CLB*oqfr9bael>01kyrTYM(!0knF7Jm zqgBDnkA)d&pgfYC5*^NYJc8i0@weA2A6+pIh2B*uQGHM-?}j7Yro~CnM|Wso#qi< z{UgqgUQ{2Jt1i>7x|6FZ>J2Pg`kQ1dy|IX5n_~N9EXipiBAIH#LBgEMHVos>a6N3$ zvG!Jfq0HWH0de$c2#72v$+qG(eES zcKT!OoBq?yy&Otr%hWf~zSZ1F;qg*&-4^^x3I=RZ25QFxQ)BKaOyC226lP6nstqti zT17YNnWsm6f&s# zEQ12RJH3JAObp5~qL7PP?x<1@B2Ysa%9O?F7%BR&9&NuRua3HYmZ zzAk-A4*Y{=m1ziUi=v=cm2&9tSIMmakQy?e6ojJKO1UxV@JYDg_s&5zdtjS z4d+8pFu~I5Z7~$IMd}Z>(o=PTTRqjI^A4x6WkVp7&Dm*DBKLmnL|Qann{TcN&P~Nc zKQo*x5=59mrwSRDi6>FW8Qg&V=%LN5wnPPG8`z2j`Qz<6CwzmmzPQ5~g+$N#(@Ptl zFm5w{ZY1nR_@1HNB}AeA0=gg|3(ADi>Q7>@MI2gg%VewuL)x7>Ylb;}jD|rWy}eMp z{7o$?``dpt6&N5ixN>c@ZEzx-xmLqW?6mptygXgQoG2u-01aoqBHwz4Oio5llYk2! z05e0m{7SvjD<3>90(Xozc>|B&N|3?;oDI4`?^~XNEU%>mP8Hh8j}teM76H4XsB3yZ zpb)?7r>R`u1{g@j#*~x-I_SIOR9wbJZ{iEq>^4t3RNUEBw-ct?7O}NX@f+~(&k!+Z zD?w?v%oW7jZV;P|>fiMJk?m8)I5oFxlKF5cM37=~k)^v2i&-!v8izv`*e7~t=3*h0 z6!hi;)wc3j7oOvf!E)bwTcGj)7oE8^Z=R#h=DX|G2O0BrN9W6)Y@q^z=4~affUcj% z(HSrKGU@)b&m<^ncauVyhO%jH6b9-3Bwl?xt-~}85@n8UWmCp8u#Z_$R+X`~8J?`4=dPO@*9^ z#G#qy#M`q#biGUXm*wW_X2P-j>s$I=M@+i%bBovP#u2E4LGoQ;@<&4bfbQ!11~lgR zKZ#IvfQuOqE8Ro7ZtuVpo6DDgMgPMe3iX=gk#-rp3M(tMS_}=(aj<{>o;dOt3oglF znJQ{H1RiJsbD!sp_@|L>G9oU_=-rZ)L+NXk{jU_R%@~kgnH#>z!I6wU{XL47p+&oCeSmtLJFuS(CztvN^SaG2OB{)fawPZX)^PZ+;DgvJXM{1 zK`n$bTaK&V&aeR;UMZT>%n%FlrbCvg((| z>&Gr@iKF;UG#sp7dHwCSglRGy^UcriO%(K)uebSu!BPj02`{7AJ% z#|*P5<|G~#3M(Z(cF8t55xuccF0vJ*NZOod2KKk zR1*!Pp*EbZK|yP@<^UMU)ZOm@8>fHXz}dd#iqlp$#~Fc?on4%UE+llkcu!1rQW^P- z=+yTuHn5r#$$GL3I7*brQpOOy!T)AcY)T*s8X!6YPz*)W?O5Y-$Ri$O)Twhj z(-Qobboe;WGygpOSeAJf`d*jwVBI*zmy8a%{o;Q3ulG9=@=^Ab@E4_U9&~}LAb}%g z$6fcM<`ltuLqT$ayXXFQAT#J3f|IcD}HPojx2L*S1AbVP_BC@mYF-jEle-Q|x>XD9ORoTqo(s|5BMD-35= zR~wQvU3dH!B+fos0Oev#rn_RP#YZKbs3F8|9>MKo%6g;l;Tc1y>D{}tkf+N8BXdKb z#oOKeSj&}my3dL{w{Dd{U#&MH*yvm(al{QzAp$Xu;5@t%>Wod-#cu5Fnq<978(roL zulcJ)n5Y$~6pvp9Z+!p$GRm=Een)To0T2Kg{L0(>xNeG*?%84K;bEf8)0`qxmspE^rCKG)wETDNojZWVpPEUZcUkKtFNx%GYyquYGO23lj- zLYK+51Z5znYNp=1Nj{u$N*Np$Ndb6r8vALraaQ&c z(zh5=yo zMI!JXrtrrM#D|nIY+w|qOaVJ>BrCu3F=QfEr4L}qG&0KwhKN8ID2&uL0>vPwiSH4d z@4TYXScoYg3}^7n9$d7xfybw+RUZYmPltTXdlH@1RIC#&Jw(f&=x&`D;4V#Nq9XyM z-qPoq=mfA>vn#kjlsY076O!}b^-7}~0%=i5)CJ@1YCqy32mJl3#2(+FRBmp{y<>Z_<43kjI8UWjg_gmkC)>L~69Te1z(QU|dhj4!W0(Ej z0m2vJH$WW(hVw1s;-l1kl6-clzzk{%zKak=-yi#z-IrOljSdl>-w1~wo;GxA?i_Rt zT;9*OgVpM~#YgfByfxrJ0d)m<2c7h!3*-hUgn>W*<+Xf06g@A0!we$Q%%|ewNNwr? z4UeK;x<%od(!b;y)24I!Wi%FPEY?}aluA)QBM%;$JTp56^rdkGO?3lxs4+AWv@bzg zZ&vPrczht6T@mM5=;LN{OLR>Vn1+&q4=CG1_?bQSi#w64KciEb5ADT&#d_nUln3F* zfRVlGg$68cc@l+8uR>b;mZEdGPL`CWmUX42-^taz(ZBR>==Bpq&cuE}GkB6PQ%r8s z!jUHmn`lTZyn&`H9rp(empH_fMcv{TW5nvJS3RskvXXd%Qno?Z0|lMofR&S!PS)*u z^+yz)Ho^~8PO)+58?~Mq#nIOie+fF>f;RsV38wZP0Ubn^ zY`5)rj2=}K3&sxyFR@4IYfc)D`FYO9#;5-;8j4u4h3`cS;#Ku#3r)SP*kC(2ug2^6 zBz1enXsOcpanOxOg@-r2!>jUSXK(NMSYVfy^uiY(9MYde;?ZXZiBon-BuTu~tD~IC z-JX%3NQ)_%0aS^NFw|G={XZ;#&CKbaIEKN`KTAW|Zm64U@JlvVuBFXM0$}}`S@%;* zcv3KfkdOJ^IrZAPiy3V2cy4jNYRfANPV*cz%;7YB* zPl16H;8^*ZvW1zvgw^unaN=T(=Pwi^laEIQO3;5cvpW8wa1@o~^CS;WQ1uhlV#}U( zd4A;nGQCMbW#YZ%*zBAW5@0BOTl)`wk2E`8?Z_IVM1H!Mdwmjf#)z^1${V zf8x2LN2}9P2`4A<&SytyBcQw)aSv*#I44`N>J|->%SMvWWI?+!{kQm!G6rh{lT9(| z6VF9ne^!3sJ^xETt=(>wS$*r>7H(f8}K$Hi|_K#oQdSWg({mzs*g+uu*U2swjPnx}?HJgU5FOlT>9{-p_34zQWc0Sl!qi=9|(|35O@krBUP~U zzF)~D`%tN3M+P`s3?vwkqExVQ5Lo8&e{>*qHIA-7bB&>! ztSe-dO2fpbQ%u3P-EGb(kngAQxfj{wUHe}MT4bu5?l~}#By-086 z3F9Qm;Y7*E8FHyc2Md~1EWbz=8GuY<*&mCBiJk~oFDEp-kHM(eW|{e*&eh_L8HuPq zq8cW|LG|3wlpWo2h_=GYGAH@uktg}8dh|TOltoh`Cbu*i$2x6GDqreyxnAHS zt?nq!T+1HdLp!ZUqYQeBge`Z`j1~x5Tn%`wtEyZ|YY(|H`6P61b2h;vBG%bBz#r)7 zMF~!;weerI;++4`sONN#(F08hpSBAZ2S6KxFT8s&8{U)}kKdt@5MFoX)voK&e2}a8 zOK$O0^c&P{fQe#hif^q{*#-qxriDK6vP2$Mz|hO0B34R373$we)_vFq{M&S~O#qbG zOjPqzJ(xXi-4XpMf`anU?F=0IAOo|!N`;BLCUOi!h@^q%5%d*heDa}6bsr%6U?7+% z@mnYmzdDNCmcwodiFYgmNvRr>yr30v6E37hDK`kd>GSuqashoH1GTz-O++`+%zmjY zz1|d^is}b$-1UUrH?mkd`jiAa>?@30&a*jYuYx#C3rQLk|UB zEu8w+7YmRPNvX-cH6J2(Z~nXv+uIlQTJvhc1pC?E0U+QbRW_@PAI9dXql-mwb$gxP(T_|Bix-(nw1N8h1=UA3V#7gE%Q<Mv5=2<89&0>-xAWZ z5Frb~^V-r+=h`wg$pQ_de6ByXSE#H0@wH@l-uI$r&fHiLdru~{ie>|b(K7C0oOQb6 z`-UeF3Wn!=4n^g+u<2Pq-}*(wuCV0ZlrE?qAFwk8OmuGa*lymnH&Q55=N2GWvSM6$ zue$Fx3IU<+CL_vve0mzNOA+5W-NEC);5EM0jzz18ROO#JxIapuAEuQdV*%3WuZkai zh#2+E!nxeoi(@%;@EqT^rEGz^Be;gR;sg2}e3c9t_Q!V?Ab5}wAk}YGTLRh?L3;C1 zeU;IUgI$XQmMoTyZ=uLynM=_e$Sy%8Xk?IF%&NepngV6qsLhS ze&nL2R!s8cn9}JRt?UlH8U~>d>%xX2=LP4 zn6KP~r#zw@SKjWkSO-8eWEl$xekQ6B%=`pSM3Hbo&q&p_;@}@&I5M7K#eV0q4~*egG<% z%&!dxk?k|p&8CV7AC3-5=k;cRfrQp0w}8%T%p18`5wNFb00LSaB=n|;^r#@B2fRNI z7op|-0f=Z<=~eHGW(v#(!~q@qZ&!k9Y-nru5gMZJqVe@Js00D3)5xo~ffnS4@{VnE zF}rqFE0s%A>q+hJba~dm5%~#qGU`YojuK%NgRTSqJ?%;XbM)O_9q4`_jY<*x%g}ac zIS+s^x8r&0zY!1c-uK_D#+J}!a0RGgA`MdN3i3@aAASLl;`qmCV??IFtM|4)PGy$j z$$jhY7#5#6S7Mkxei)k-noP^))9?al_u%g$;30ak><$Igu~%lH4#)I`Bg38B+L7QT zlZN5CiFvmFWN{4N9cP`H5ZpKtBz#DkE#8lC=|KVnW%Fg4v#Wi_1C>!H`=zM;^UnLP z;js5YR`kAAUaMf#jfQ)DCTZPpgPY=E6O{gV+r2)4RsVzFo#a9ZMtqFW*1=8UPpAi# zb4S%Di5k<|Zjcz`#^rud&i=-^Mj_tiT3t{_@!!t)AJ7G!=KIHC%}(l!&LJ{XznEVP zMA{dwIiH(zecWnnO5@OnsYbOK>OSR6ec6EC?blxYCRk?>W14Q7&* z{w`%5&08JpoFUOSAP0y5JZ9u+7!8yiS7tH_4n=h_r(&#Y z_BEQQ>MEtw$}PNi_Z6EsM3^Gj;B$+@?1$e8JcUm&Q~yuFy+saG`-?A8Hn-q*5i6hn z%02Sg^A%--^UGXyC&~T2LV|Bm&=!AAHd(FD_Uy|78rG$hazv;r-*FtQxXQ%>InXkz z!*KJkiUQA=y4l4teTs4Ac97wEf~h8cmVmYie(6@0Aa>>qu0)PV%~5Y;7P>3L2;de? zvWVrRCdM69=;^~mw5rTxZcMYY#CtW09f=C4gf!cUTgfu6WPnc!{tG|bwq+XSyvXaB13HW7LtZ2nyV17^a=(T9mDVy`{(4P zw8`MhN=g*jQo-AYqqq2P2lnYa#r8Zdqb?Xece(sw)e18>kee!ZesJQG?+InHop@2z zNCHiTPD&f;Q(v3i0Gn$4aixQ{3~PKd>_zYO3A%C}tH7nzHh0@EO?Ra*nI?$*`Y zM)Aj-R0#5UQsR|5S|qpEh)(X0Pm*L(T7-G#-+4D^rH4!ir|H$x3%e(c@%!;NR-ZqT z3Z=Udz7|=I=aIU|DaVY2f`#NqgbQD8r;W;JgN+Ua_ zx@-+I&4Y&s?dl)lhJGiXW}Vt-YT1(h?Bd5Iz|j_E_9Vx*OefI{ejc+cVX%*`I(fSb zowu_mSb8D2puJwMr%wYfN4Ud*N+sZ2EOh)MJ`K2v5F1-wVvkcx^N>8>!0IHPSHBM` zy{Kbd9=0BzH2z#|F}sn#`rItTO>_UGkmY(vjJWsdQqNZS%D(aJ_!cO9OK#9TOsZ(`Us4`ve`&P-g;FghB6X9Ev>0X=-p!P#i-BUQ{ zVJubL$fgHYUa3{mKG`9L9BxMc5L+?D3F^u!!YuM<=f?Vr;#FN!q#mFlC2=K48b|F& zoSy^2RVno}QbaxRS-*K^TWMmbbUsJ*5G>N{k9%UY{#+X-lx6NDb7%WMA=31hr)#sW9rO=8NLzn@(df?tEb{d*S-U+;?=?|PBeGuSep6*V@{Hqu*QpVa zn8SK)hK-ke7i)Pe!{dYsIu$mhjgzr+ApUAwPR4&=j<7U8X(k1k^W$q!BE1%)6V-BQ z%8F=~Dl*_o!EAz2qt0b}4G7s51(f%0_YQ{H-x8$ZAtigTy{`%i#2AzahhI_cdDQd3 z0YDe&wI@rzZAz?w2?hkaC`~u~L+Qm&6f*GLoDc#yV?2bgF(l-Ld4Jg8d3K7SC(_t+M!>>(pb?|xRh#KP zgEbwhc&ge)(r3^lbwt|@nonu7|E6^aJY761jRf|Ss?RYd31=@J;A-!^%UEH5<}7qmv>lpU@mVC-qL{)Yp23SJSS<$Qdvm?5C3h2KK#X$nlp2ejWkjE&S$j zO55kpM#7Dv6QkF9JdfND>Q1x!XT|>tL}rsV8RD}dqpd{feVWV?)@fk+Zmh`i);m`N z+ZhR=;INsn22_E;dcjHU*i<0Lv9#}|KRJFd|FU0gtYE^i>F&)LRMJM?d>p5HHWpEr z(-b{({I>p(ckRhr5L&?xURIF|Rjrt((y4PwOxGd@WkilaJYtzW>@i5|ehCU%W-0mL`t9RZiNc%H7}WGyD0O7lej# zhcVL-Zl8Uw2%{C#)RYVe5B0m`Cu>jH_x_-=(tc8$vO!8D!^B6schk|aEA;)ud`$o0 zyI!yUP5ZaI)Ao)9X#e0d_Y#jL^ea@QLIMB9iQ_OOn)zfrtC;BA;Bd25;OF<-)W&$_ ziX-HCR}Uuzk&A+ePhlDjMeht3K`ZTf^4}Z9lhhjWe(z*lKC4rWWTVDLjIYyJhuB{_ zie%a>AME4@NetAh+jd7XazW2R38AzLk~lCUjXUXe>sNIjd}toYr=CHGQ9{M<5(=)hP3>kt)Og_4%;HvKyiH z=4>XoOtnk1FhT!C0M`FZZ3!AJ*AfLAKi$HZ#v>QC52i0E@BT@YOZ(jTTM$!$P|B9G z_H)dlSGY2P3K&;_EMFg-!rLDku`Ml$>vuv(=^D<0M~jXm-`#PjSQ6HlSZ+$3=MajS z@>Z-|6%Oy@4Kih(vb3vEfO>2n96pS=;kA(!2_;|~nQEK!wnb;vt9oWJi-PY;h;4T$ zD+7cvTD@mpJdPDQ@2@%~UZAX4mPWPNTG&!*O>bigw)v!u=5m%Yt%#-~KhUh?%=1w%%A`~xVvhb|M<(7Q?0jVgOax8Q>ghpPrUf~aA zJbCu5aU>oDEFFEzm)b!RRiQ&wN!LU@fC>@StVt}PSW*p3x(m(tTs7831|MF39+py? zz}5YQW!;-ISNOJZzRUxb#H*9Er@#I*mU3F4EX{zl2S1TVkMnWk--WVO^=3Gth(#Rl z-Q$m}#<+vbw<|2qQ!{Q9K8Fi3nc`qK#?^|yM$FZ5)^Z15v8#|;t8d2-CyUUt@axUl zoDE%P9^$9z)UK4>iC!;jsKc-g+I+3Wx_n0~z3<-(9wQ#(3nx_(h7 zlJh?oysfi8Ds5y|DfRLc&Ei$E?W|edPHH=|kR!g#xA3)++j42OO*eI`nq1c)zbD(v zzIxnpzYg9LTxJrqs`xS(1Q^1ZL!J;!Smo?IzNesvamP|bT=&;sdekqR$UNJY-TZ+7 zhV&ZYP}hxqzjK^lTHQ#-oPK-m*-kqlyqgZ`{Y4R09UyM@d7vY%6R{h5UeSY>p1f8P zt&H2zQ)Txt0nHasbHigHiQefI-D-EQk*$TK4jY;d|RA1`DCflITop*;*wb5_!-<7_Vg-jCjEk9*JS} zX9drBg$_1Bzp5xNhNOaade!5%_iimL(0CeXz_O;eY#xPccxT8FKcPov(Y6sqkk~yj z)6pmBuw+zeB4%Fr3Bye7dqPJ%HnjhV$%mV@_Q@8;ZZdM>cPE zV+f=yKyr82OD$U=D7`ZiK9*l>P3w-?fa<)>o7MW?uM+(iN=!~0$)z&WGXY8TTXr#| zM1DEWN2!O^>L2q+g%ZBb8dNUNo)i2f_lx1j6T|5nEOF#o`? z7N$#PDjiF2;Pjp?kKRfeC}7vzYK7_y#8m$E`Bq}P^p0N7N*{-T@L|Cc*m5}`0<{g+ zB!)-r!^#^;!ceak9#oM#*^}e|X^S__s~Wm31MbIqH%0Yd+z6U0@*(88F+T|Nl{dv| z`*dX;=xxGp!f#|EtY9hv%a15aS45PB?nj(_(Y<^Nn!HsCzO?(gDpj4l^18y=XwM85 zqTLS}%e6YX184m07qGt6=Y)9ga&2G8WDt&f)zSB(1L+k1u1fUra4KfX42^wNJ3(qa z{m!Axmv1jqJ_l3lW~|HAU`|)!ThPB&z@B)6VlgxbH&;PUda{V8kXh1vn^*nYSYoWz zzvm%x6PKlMb@ZFnjTDVr+4XSwde6>4mi%(8%I{ZAjvn==?<6WTT(T|x_0q}3;>fAd znq`ed3TIDRnU4of{aKl1Ks;#e?glaqC6)G>PVK(N&u|DJd(mY>U||DtTsUR$0fm5x zg=@>V+GEebrih;KfoqF*BHmxfz(gH=j0&#@({y-9D2dO*n*H%e z^+udxsU|~`yvFrEsWZflJri-{uX67crrPtE=vs)|E>tTlf9^k?to54Id1Qwo+Am$V ztNG##ezVdZzI^Bt|NcH;FQ2U%^4Dm=E#df13e6gQC1ZO&~^W9~DAwBSbo%$r~ z7J{qQ%YE|76rRCr@gKj87b`mmmtQrHg$YNp$`hyyEu6XBinMVP!Q_m1E$JHsn$gdgy=CCC6rq&sGcV5t0+!wz8AM8x1sLQ7%Jz9%jD4FQhxeXtlPpj(K^&%=Am_03X zsdWrJ7-6qOPnU3G8?1uOClv#-lhz$YzL-W53)V-9ay7@nCJi{jfX zVy87QK1IY;24?@f%F26#hJSt*-ChfBP;eU#R4F{)=dN$EE`hOZ=y#P@i|5Djh@-{t z4w?0BTh7C)x76IWX>KmqX^AQC@!@ovvrjXj~L+mGtGdCn`HP zG_Qoy3P=0W5p6v>X{tX2O>1~vXw!)Aw5u_ozFuC@$8ZlTxJ>`Knk|_Fc0jaVBZru- z%6}>LZ|nHttGHCc53uGXakOZ3W}?_)xodf{BLy&Ov=)&D*cMpZ39_6;ax!|^Oc(M6 zQQu5OmrTDWv7_MfLCF13<=I|$a&{fo*Kx6Upjmo@<=SxPg^s&v+zmmM4F$Ed-^6wgpVYu_W}i6 zA%36sm8F}d#CsWgpK%)BQk_y;wei=g$RtEle-W5?Sr@XkI5?XV8W8U>l>acXKy=Qg z#6WW)Pa!nv$&0)H+YEl%%Az!3wzSb+(W;=2uDy6a`iXsj^?P_&hNnIhMfxV3*+d$@ zx?p19JcW>+X!tYr0zn#A{tia^cDwi!u1KWBodP-?0=EN754>U9F#ZY7%8exYo#eQ< z_ejd7EUHOc55Cimm-3`kCl}z^7WDY7vy4N3Wq#Y{L%rPmP<8nE>(GyR#_G>dz9#RI zvbzh}ev92h=evYK)o`>`>%V;tF{{D%S=HNM2vr;mX&j(73XCTAey@)xE|a7+7{xsn zh6JG}bm6_A;|BPbCOX_v#9yEqtsL9TD^@-TS}^sw3QcPfC}ifG8JgGa{_T37U@k7zDVrIzWCj_bBbpxvR5L{>#|unJSlNVXOsl>pxxop_V!PH`%1{qior70 z=WYf3O@zH4d&DCQ`c9HAbo2BX-UIF3stXMQ9FNp1TL*2^h)U0P*S7~*V|r0w)JJe< ziDbp#@c*y?k7jOQfEwa1{{Umv8~KQ2A`IqzK@dj&j6|1$we1eb&XqR9X_e_3-;)+` z*dC<}_Th>;ciuCg=zgZ(n^ss)K8n-YG(W*9+Fk3KZh4eVcezJim@aypCwX&X^=S){ z-T;v+rIJ0D;dUz`%Ov9$-<5p|3*39$w<#vqV?tR!?bTOuikXzMWk#(mD-=NABtJ4( zgn_eK>AXnHpj+1YY`wAANwd&)NO~6E{!}hI{?(`?j8YK^p57>__L4r0vHA;uwDiYY zFK~%^Dg`6OgJ5j$xiUCS2JZ@WQ*wTZ_ErkoibWw<&RD-W#KeLWUbrxwuz+~^j~~|~ zvZx@H*y+z$A-tJ%a1(Kf8FZ~s*#E?;Sas$$GAtw2htSI#RIfUt2Wp zv#K9wkFDsrug2Z7Sd1MH7V)f}ru|F|s@iuMy@qDnn9(3ZMkUoN_zVX2WyYjzNtlUn z(Bqh7A%`k`JURpWmN~!D7hcV#(aBpmUf(d`vnfwD?c0%bl`kq&_ktO9`5TF`|Jg|X zgwb{R1qik)IJM~7?C(I%0&W_&Fz^8k5`3Ai1_3hU?}cg4SjOE+b`{i z64bdt?~vzx4RjcEKRDdpuDE_e_Qo*3e>B4n2I;2&ZG$t>a-DC-#ccJL>dqbKHG(r^ zt0linlTIy3>Eo(M6Q8A4=TC#*uJ4T!mRCN>T=LyEL4RS$7jj-(p?w)HQw9_liC4bY z2X_b3HTl1rUSQ-bQ|7->{kAPxSe4=<* z7HMY3>&XNKY4&9`$7|Lj!pnl4zU8d*Z%RK;5EBMe<37QVn;Ig@w8C4wc~fEWlYkd5 zxjD8#ZcyJtGTvEZ!I${mX-T1@2NxjVO{o&PbL7Mf8i2m3u{LN?`gWELX2B7KPr4NQ zUDNm^s2Qs`U7=X=Hg8_Id8`8Tu`F+-_&u3|O)-yf2x3acC`_>r_y`)&i`Y;;7@D`~ zfIBt__uA0X>P-o!3x2SrSeOTLI8x+Y)2MtntZpY&AC3h({RLz|v`qm5>6xveV5CE) zq=OfW?E@{*1GI1uI>fwClw282T&iXIpfrRBRh*qJD(Psh3voql+WbWHI2`H&?6wpF z1q8nR{A|9KmH#aq?~!+3q(T1JYD8kUrG`aOX)_Ua@_Phuw6yR3YDwy4%M>V06-4UT zbGjr3{WbpOm9)=~6#+d5-2iAzo*6XT%9Vuye|qBgD7J+qEbQo@b^QB0DAKvh7=fF( zSzMIgIe#X94Y;q zYlGWx?-~t#M@(9l7au+GMOBZ*jn)uz!F5l9Xx`5l2_7PlRDx2H)7sXcA(+$JrZr~p zh_XbK8%(2;h{`Apa(@>JN_?u23!vL%DMZpBo2q zn$3Ck3dY-B%gZVX>DP)Uyl18pNjhyx*}>jA-&>-(x68eR%Wa;!41Ld}Vla~;v{P|) zcGhRodflx?&LoE-Vq($xBJsV z)N1^LQl^Y~HioV3GGUr0n_G_;eUvY1d(?bM#b59CUpq zj!gp>_62oiC$?FFh@r5PVq(Kt0>^EgSK&ZB)2YN*UC|r*+?Np3ROF;m?A2dheTTcS zljS)Lh}E!6T8S8Bymk1?BAJ)c|hDrM6ll=Wo{Y-N#}&sJVz|Hr_>hCPm-tx zl)4;M9?dQ66Y$wksz}wEtp1-!JED@(XGRu4MseidZ5`)u>Q?o$phC-MJHjQ%wq&4$ zK-i*P%;@KtQ{`QeAVER(VRSw^CVxoV#$Ms43`QU-t4eGi*QZl+ur zHs)2YbAelqlf!=#-?&tsxhl;pCOrZzp7JnL=mm=EC<+L8lI(6n;i-ZnhHC#Cd4pB{ z_X24ecICr9$e?Yvy%+QjMU$)`-#h!d?j=ufv_s|QQIY^@z57cP9nWdgQ9{cKBb})8 zwA5X4K(mskSNFzjl1DR%L+!1TY56=txDKJhLTZ{Y>PVitdv@+~e(WBW#&zu7eYQ6p za!M7ukyr1x*i%0fJ-ZDIAjtd!)!o&zn2J8ghuXX~>?Rh@z|_bkeT}OxFQ+2>ubEwU znWyY$YJdn(_p>O?1C|=&>w@1B*1a)u>E0oj(Ya7y&TJyNn>|+L$(qWoz}RQ`fRg-4`Y`QHk;S15mJehW&(PRHARR;w-Rf`TiORE}R!yp6r#3bx}8#3^3Gr_g?FX^(;spVb$# zJ6KUYYqXcAcR)1#G`*O?jSAW5>e2o;yMCk7@I*14f7F^p0uSL1AnJNf!I-Cfv!(*r z?8eiGg6%IlH>Nk$Erfadx1MR zj^xC3WAmSE?lD;GpYriRw^J&oIp-xy$RS2GUVxRJI4WXXst&vk4lWOaorxdLWzHf} zPfBw3Ngn5uhLer^O=@QYFyH%d`1Ym%8!<=L+(v&0jmlH zp7b!~&7mWtyzoc-tjs0r3f`<-DIc&Y@^+mz0g0dtd;7M;>9bC>DG0P2Nh_B@9P;|C zv#9PwH111t>jRw7c+gxk5hVgFC3q~yjn>*|dn_XqOM|rQNPlVCEA|knG<2*j%~6Ip zTDV^G&``T(hxxJO>!9KV`&h^X^$wiH+kjRD= zFRz>hVO3 zTkrx^BIBaH@Cm8+go$~J*3LDa#6?b%6>?99>mbjY!jdPC}Gi7*^TOjZ99FvN^G)0sVZ(0*{;R?TV!AJT7QE zEK{%F^FO*qvXdLBt9E_6Fv`75JzVyZ`y%XcB#cA&6#dgLStY9!roIv}G9aRSbIa^m z)AA^0|F786laA5NTas0#v=dn=n6(ZT&2uI${G@>S#gKM1NA*7X1tZnA2@Ze{9>6*~ zKWfiy?(qU%o_z9S(VALk>%eSA>Q}jI6atd6GQQ~-31YfYF z(7?2EHMtuJ$fV<7-5H&&sEnYb2LwN7kTM|%WkB3Yv`Z~jm3UG33;!RW^Zg${_bKF_ ztkg-j(B8p&Y5eLa@Me#V$H@1W1Bo*46ASgE;tGu*#y~XuKoNc?EGZwE@nV*s0@L(| z!sN5+Xg(*D_HiiHiEvO5E$(b#E+*&1R=4e)Vd)5AC~TB%G#;t{2I-=CiLGMEpLL4@=)at$U7xR^WZh zVNI~zcQfM3_v>%2jjg9?%Y<%ZKQ|ifGOq$b*k67;t+?|lK{tXC6!PlMgXzM2c7(;!qt&}-GFh`eB$RO0QN?_xp>pt=6CF5Qj zo0n3Ly2rnxv#fS^QxTl=<8-bjU;Zfjma4Scl0!-qY#Y?IUNMsNX8oPPo%u1U4xN;b zJeZhyrw0P*EV1+CM1cG?-f|^Dg+y?>eeE1OH=)?9tc8h3iGV;nvGJUD>{AgTwP;1Y zYCrY6;UKQjxxT8C(R((wE1AQiBwI@l)oO|17{0^xE+6IA6OUU#s!mMJ!Pna-d9KxH z5yDU`ftH^8pMO&Tr;Gg}mQ4u4%Fh@c4jsDwU1ky|9(pO;xh#`R?rj#BcnSBUjEZLP zJjFIO2sPv(oX%Kwp2hJ19v_f|pWH-CHb|ugpZB{2#;ahzQy?-|jdX7%a`Td(60Cnb zmr?umuUJS_q5V1MnMLMXF{Ool0O<*~Si`)W(B160g%fQTLnp=5aLr#l-at}NZCwuW z59%RJ=#JxQWxvvj1HP0_TEA)T++5%)_dC+lnSpavD*a#zV!G*XE*;DK%QnF0{x|lzy{m0CWQQCWiJ)Xs%EYeRVke=zRO|pF_4xw~2@v@A z{E`?yKvyZ=AZ6B(fSDSW7K-Uw7-stqd^)mHI*XDlfgBN$S;M45{m?!t|wm)>P&}E}5QGWjUR7VB5R7N6u;lQhzBg>=)By@6fU@y7f!Wx8ziL zU8JbMtPG}TyktIa6$H+ck6^(tm9 zhL%0&-%&y$eK?Xw%QPZhoIi8DjKC%_#mXIk*Q6bH!<_61k~amCe*9;#p7!iF{UO0@ zV$R$#u`fz|CQR@HO(VIAXEp#NuKw2USn{~Wb@}yP3#jy$6F%W0E=tPz#8-ty+n=;f z!h0f8kAaBqWLxN+d@v+p3)Ml4fo|~*62pq_;St_ zs0c@?@t~(27`$1X98F(xX(IZm1+6eHu^+UHM3b*H<=oypbyx1~M0oL>GXk<{$hFa$ zh17b8>=KP8y7nJjeRXyoR7ji*4aa$ri!h0`lzprnJ-LUzci}g+7NYd&#uL8+06HN- z0E_XQ!6S%S!b6g(cyy{zQ2lxlAnN*)ZbymDXioaB9CU79^?x)(mLBJvWwwckoNqUY z(KY&GE%G)js*B^SI1P0#|K>9Wy|2o#@soG@<14Lhjur_+Lr?>b9$h}PBWZk`@uA=C z>=TqNe@j&cD(u#pYVq6k=N2T6)^^Ud0O8YiD6}nXil-P*lc7N^xgPh{E@MJ4T1fi! zOZ-l@ZIqvh1J8B;{d5_k3-2~lA}tYp$+X=Ior`}t)!Srwe@}VQ+yULLJN&8B+C_Yf z-){)!Z$MiNd=TF`iReDXg&b|L$u{6HbB&5+1vtty)8ZQ9vWV6dmjLK@v6}=mk^5TV z5>AKp%$RsKp$^^jikgSrw-bU5EkCRp8BWm0etq#B>`MIb=lQgELJ#)ZsNu6$bgm%A z&q&>j@;P|9u0Jg|ZNQ9h!=-i|^J&b@QRa4ko}}c{3DNag6EH{YV5AG(KYNs@!bn%$-K=7m@ZdXQdZMTv7# z7)coXxQo-NzitBBBe&UkAX5j7i+9K&^L&VwQ_d=+K&|agxiz+=e=TTl`JS@-S}p&X zXz+gvgtKS8Pf~~d_>iDIY)j(&LlGIeRat>sIW3oYAlGAI^WtHR<%GR{f_`|ubsm8v zmqq-x-2%nfFa3ZY69kM#7Vckuy<#95l#f(|-bHMSPI!<;hb?=5O$JBA6?V#}R#4+ZjyeZB`MjirvjodM=c zm6@kLxyLy}xt#{PzMC)q(Sa_Z@wNY_y#b~1k#(F`Iyoqct?LTC+kLj2!hBO63#gY4yl^uN`=#?FN=KKBq&&CT#Tcx|E1A>u(mSnm zKR|2=`}P|;(qsKt9l7PZ^w(VABd%GtYqAcQsKPx-1W{inUN-}rJGPRe|6F_jchy+e z^jzhRoac=7UyPemgJH+K{_hSR|7)K0mBhtJ)Q>98WDgxI*7*-4`Ly=j$<6XFvm_)m z70Qf4zBdf>B!*J}?D3|?{o0z93taSkEN&>C=!=8{aS5!#M@0AK|F$hVe-+G*f98;) zz&gPshl_hhy)sY~4Z5bU$zoR3%LGJELWW1xc8dn?D^zr`8eF3B=L$=x9fwYVyQnIl zYmM7Gt}+e(v3Er2WKq*GPjR?~ih^vxSx#_RjAobhItU-=E8U%~`sSb?o zP&)KoyD_y@v4)F=X_FIomCp)QjQ-OOJ^bN@h)`eZ3WGJ>mxLR}0d@dT zFxzWt42OV)ZQ_b8GCd8Tz=p!?7I4DBB!v<*!;wdD_j6+Wss|aztjrYrqwqTozlcJE z+|X9Outn=4&(#IoVLM}W=sN!y5&Ql)^)hl@^6mxcCHnBz?AdQMl5K-Hu&>&nHCEaP(lX{0r#Nn<`IAniPY|PZhpg3hdGkLY z+u2M^-&ZVzkM;IFD$`V`ocQHq*YL|~WZ(dj=J!TPRU32V!%0sM9rI77Z+y>O>NmCN zACblkseHT+ER6rNdu@t9hj~_G;t5v!_(=m?PQ*VmAS9~^OcI2ToWO8NdR@LXT+uZ(3#}nLC3)zmdh}iq zHNth;!@@3pyUzmGPmFTjR72TjD4b^ZB`#v;6~qdwhaMuoT= z6JE2s8bpi6U^wLwsE>Wi6v7I;TVsw^7MRu#$*20CelxSTc z@7Z4wWAK~Vn--CoOz{AxULnUJpcH_~&Bx!<>j6h)(cm%|p5)ECn!v4)+OD$Gg}3Lw zFL_8{mQ@rPv;$cI!y-3q3Up*%t2b?1!wy}MgQF^j{ZNZnkX%G$vIK7X(pzjxX4;yL zW0E`Ks7vt%(DGC&apP=c>gF2fmqi>4W3!l;qt5&gf5&~0w)bj_Kp~HMrGY7lQx!H( zeXmz<5?QJ?KB`^%h&-7fxgaZ~EJ+%Xe`Y8iL?Yz<=ToyzfT|;+-+%YkMk^pf3?Ub# zoMfFes+L5Qw+bRiwKNW~Ofta34GqdC$;V7)=aJ4(kAH`WEjjDjpb})3TMzCG92r_v zeljeqx4U)<)-pgZE=|XnQ{+4UNq6s3Yb5`GXUfX;qP>{<>H5f2`XA|NV8PiY3Z%#H zYaO}5q>QB>k7O1)DT9;~G!B4RX> zfb?v?DTE^){;wCfK~nkEimx%Eq}FG%WPdQXa8pj5Nl!c7uGR(MNB$ z2=V}zf=IhEdQ{Jj7)VMk{ z-0Sj;8(mMtOx;?Q%nd&hkpZ_kpbh;V_vg@-mMUEC5JiM{tF~u7&Z9dCVRLF1!b>|+ z)1v~f9Es=ZE&UBUbThm7K*D-uWqKQs0CY+ zNX6W1JmZNSs*APs@%S2k?T;QW{(Hc5N~0?9QfWIS$1o1dA&G&{%ypVI%dsn#D4a?d zh%2=1)nr-W8!qbN^uS%I(yznYa0C{xha3vOCA-KxfwuLO>K^aCY!E(GUIVr7c(D!q zK~}2MD|Z#$e?_-ub^XB(2tf6&VS{9UE7WF{hyUvZK-#ZAuP)%w;?Td8_{|Y%@j0It z7GM8os~GKmex_-RAbfx*X{j~Hw-CfV5x^VCEZU+{%*}8|Er7hT5TVTb%s|{1W<5az zjZ+f`4C|I>I=}T#f*gYP8#CxQTD{mMe>Kt-B{_HsA@YBA^kQ=-Xvhh2aYhk}2A)W# zq7^ey$%E|8=h!6Z%{ub)#Uo$IzhQ(*Cxv360*7!@9?nVPE1pVg^0KiWz3$`ozN<~8 zLY==xg)iynMS*Ke|EFhEV}D8h6u}08OwfckRL}s=i$uwQ11$=^z&zO zrwnJ7qs`Qwv|CyjH35I;*lZY)&t5P=koYbtNpk4iCrlhWn!q}f_~c!u_|e{`6`3~Z z7zLEY=0&n5LUHgJNcEBR1uUlFBvkZ({K;qrp__ zhpfCeLZMN*M8K0|^WSExI!E#0>PA88!_Vr)*I9ZDWoEivR%w%6|+ob{_@OL__LO)oEl; zXp%Tort8jVd$(C<0Ev263kQ)Wt+0XB%+2V$p8JHz0X*RhTQh_2JYM!^Es0vLV5UWM zmG<7*P%?VI813yz861it8~e<9-4Nb>o6ApKPU4?1vyko<>3-Ow- zYy9OgSM{!wxioz2r?GR0F6WWiZf;4{%_gJ1_R>cgMqN)Ar&1mFV$?p2}dWln`nsnjFPEfS&I9d5AGx?FE5}fFzZ`q1k$!YO8bAV zdzbSCB(GwYZZ&Q56st@ruV=ZPsI1TO`E%XcYJT)^e`ndNDRuCE+SYn36pQrs<5X{$ zsw76N?`)l=c=x5L4G%>L1WBpy%+*|vte>%s2MJWl~A$m?Y znd$K^Hh8HZ88YHIt?Z@&!iG-)WDkfXOC|LWQP{QoC6+aEOiHzl!;Qh|RF zIL!y2O9^xVZ_ zV_HO}5Cg6LcFb+`Zu>x_!_- zjX%F#9fQA4#`J8h+Y3xzK6F0@yT1!>>sMHUSc{0JOP#>$v#uZijCDYV92dafxc~mN zPe}j>W9cKmplVV=&?b`3<`K~Z-yjCU>+*slG77)}=0vc1AB9gwkQ3;`xC`u*#4qVS==S8Of9@eXXa^Uul zzAMPkqGJg)y1rl>RwID4dZL$@H%xh_@IR+GvC}&KrHRd-)ex{@LRi?nd`?>yTb3Hc zAb%o6;<-#Cssl4etiR3Qw>)}R9_b06CV;Si0e8=H(z=}}M6j_=N*jnj)$Se>NJKjQ z_fcrrOwEocOqBE;6GJUOZ&o#w;LAwqwY%ShLg5 zq}|t~$~iEw&cAx8edDn)PWrV2Mxs&SLz(I0=f3|+`=e6~SdJ*UA_wJN&WkVZo`KX0 zLb`lcK87t}V*YCLkI=RN_e?;5-#iJP7{0Cu7q%t7kF@+fJva4Q8E_$>odn5; zQlfeF`2kwj4>RtZp8$JMLZc!?+whwBE^?5?AvD2WXd3)Q3Mf-|3U=$qF+iZpt~mhy zVK55>ut~>Fv5V!0fWftePz+65vN1^oZ=m8O#1fYHH=sM-+@85*KCWH;C9hM|I;7aHb+aJp zp)y_2T|oa{d?HCr)7Uos^vzX7D#`0zq3L2fb!6uUZf;M%hc&{JpB2idDAD;4Pfk4h zUH9FiLoxK^N^ax30^2*Kn=J=l_fL7*`9j83o0x(ab*NH_j<-O zq3O6$#B&!&YF`*zgFF+ENwFwpGoKCseuhUSXgLBRRV|X&h$WN+6x!hkU>Sw}2oCbg zY8H}$k*Eyr=!SeFdEg`pH!{Ks?#|#z#Y)2~UZo^UDWx{D!Chi`h1eI3SRQ7XCE1~? zt*?<36kN$J`t>~WkQ!%}+({Ku@}k zY>=DT+ltKR$AD_ly{DD{JDLU<_|A)r_XP;&t^d71OdlNHiZ%X^E-u#l6!A<7PLdS6 z27^xs)GzGZ#NwoYzAs`X5HkpKfj4wCqlhcDg4>>eIDu-+evPp;+T-<&9{RV1nnK65A_kPQnU`3UtbbPlWL@H16T5sWFXbUqcPOAK7&d zPu`#L@J{s=t>(?zT3(ZVnR>kxdCIloJyJ82Yt{J6haAifAqU#;i%5O>eg~RU7Sqth zT3h31 zym8~dDrZ;K@?dy4H{*nf5sVj{Zk-n{(^D`G3c>?F#t*E6S59QIt>aTM@i=$1aIjtW z(vgDjDvSud8-^HAws;#jNNxn=fz~KS)7661*c2BDVn(LgIx!tE?^c0kIn+PPpm%%z z-48Zg)b??52O<_qa3ua=)KJ08c%rj}rF&mgsv)t)X!bI@>ElE+`n~!TSY-aJ9KL!6DAqmIwFJdm#AUfg6aPuBJN;$0aT|9Sdv{gKz21eD zH;cHj85pel9S<2U!*f^QM7KM;90|W|uW470?@j4|X5P0^Oc>mb@0)e}Nm%MQY=#9j zq9Wuc;9W@kEKzE0YYvs77_iu&?`zs*3by~=hGE0p@Fj3Z$@vg zO*cT!%O|Z;?;^13?No^wH5hD$9q;EjlYw%|TQk%8&lAoI6a&+>UjGLPB;Ed9WKQ=C zpfE)=0N4Djkp($ilQt%}dDHL?06Zs)jjD_$-Uul|;9%u*MskPg((^vwsbO;K~5nQ!Wg`(HR_lGCb3%A^gMe9uxoD2TKaL#Zt?>N zs5(oHGw6y2=8C&&PN+qn54jCV;rmtGU)h&b0W)>1F!bQxPE(10D*(-oI5)9mhSkoE zHR}>WMOe|4NuYt3?dqo75Q1}$dJPL10!n$ZhV$5ENO$+<{uj(dOmp#inQB0v5mv*q<5{Wd0=DX`0?0DPwH zUd2C-&8HiT59ZhY>QtW+UcURVX8fS0m=W62QOH_j?{IhVVtyu4uu@*bbNX^1Cn#r3 zr80XZx>eV^72?{Gsv@bG<@cP6FR&a& zWNlW~r^lb6LdWS|b_py+C}kxm3oH-_?8LPo(UOvS)`B!zq-z}%3BF*&Ilat# zVd~PS(k_ffn@vv4Dst35oLL!E{q(K=sHy(%|4VS)dR+R zQRa{(b7DZSERL2_a+_Ysc6-m_Fk&C-U|Z31Ka$pFAVL@Fdv!5KH0)88hxK!7W5uof zX`fyL3eTi*uk1_XT{F~SL#t@ds1w5iOWe z%0E*UFyP1DDmWRY%U47YZ&n^O{4l^jOI#L>krk45Ak=Uz`FhQGvYd~Jy2Hlthqll@ zKo7A(f11I8L8F^>)OV-j9$_W4!R4D^xu;dx%$;+ZqLh-ZVf8ar1g83IK@*!Px*f7B z>U_Zcd=SO!i8T2}e;gJg=L_TQKb@NQpHsrUBwH_|H)$#6Sd!OV?7iu6M{$LL}1+Lg?w9F*D-YU;BK1gr+Dn zGL|Jo$Z&p58~oCY>26GbW;?;F&h!*Du~UPTs`GD@_2*1RcUT6WH1@yxGE6p8hpf7v zjl+f?x@)Y?Tb~FGLCWqg{qwk4p3l7aSoBD+5W$b^Ic!G(Xk`wo*uP9I{G}_>x&)Zc z&BreJ6WP1E_*|iiHj+ZqoXqm&p)<>PW_a^A0E4yt^wqoXT^|r(@m4pN@ z1`qco0c8bOlkc!5dp+=WMdRrMhYW6g?Vgwp=*WoWJ5>VDeFE=^M#9z~Kj0IvzAT;* ztRW=Yx@IdY#uv{HImdMQkTe!H`0kOeSTd;EjcWmeqW@OaxtZfBxk%in$cwtB?W@%fQ4Tgl;fmGsbl@uHi2usm z?H>K_IQjD#xt1`f_ZRrmTc?e?XN+a2dL2gtxJJWLX!Vz7F)WEX%^_gM&qBZ*)k6Dg zLqyD>!}p>@xUKHd#R_@E;Dm4T7TQ>pguN-sF%4#n^iR<>>Dqz13@*1{fJ1dHops=_cI?Ppp|OImd`?-Lu!uT zhs}MU6p*`X%RjLgMBnZE(UlmB))6z$R};HE&L_&OGrDrfsApjzIDj(oAj<40aLyH5 zm1#6<`r&c>xFZbuz$XO`N$2aWA71S?&Yt(Iu4lHqeiOA(syp9&dwuR@UgUnV6iYq@ zyO#Ba1;j1)`Rp`05>7KXRXH=6TCx~AEgGy=+nebdON>C}>k*`uemhwT%67*^5^oeZ zta3HmT$8AJv(;*?jVuV&2w7q~RZvenLAfs9r0#Ju!R_?5EAQo;fAb%AJ5@M~%UJ?P z>c0nsg%S?N9cv9#m2FY?+;FmM({b>NQssE@R>dY&Hn3;qTZYD9Fd)|ua&epqjK_sF z`QvcxSc023ue;Xs#73Ujg7Ihj4V1G){evXh+{La1GBd)q`o@gK668y)n&|}ZgSa8*=KA1-MB5=3G7#-0mZ4JL zOXEmv`PWmvPlHJjK%<~gfsvFCH$!ahLw;@cmYjOvi!}rW!fgqoT0{v!Sbek@*T8{; zd9mhoAVTX^?=Xd`ASMT&n>XHyk7`Ojz1~D2xZ>~fL(BeqTPhLKS{(S=R9@&6gn&OC zlM>lENNaGv%%kB&zQZ;!`jRR1V5t~-Rp-n2MoON3jp~-<>m%z2%vaVbC0gOwM&kCX zZ@)Dl62RN4=1n_KyMJo+bf;GDCw8w(cpS~tbza7kL2S8m{!wgK^*uiW`2wF*zAYro}Kj3$uvW9Y;;O;|}?P=n_)?HLS z_D;1LJt+g_>&cdo!waE-H#ePU!?Us6n~-2oZmOR}7M?V$>{VdkKCA3Fg^g6tn%&iM zI($Fc5D5rHWAW>$cQBa$ZMyigbg6@a^F{si-nK)K&cL~u`M*SI))Vyo!ZP%kHeSC;Hf6Vd;d?F6UvceuXDI6SKjobNodxse%rsJ4vI0w>C> zuubk`f&RrWacMBS{>VqkRYjqg+OK#zTH|_DTx(V335%t!G0zgE&_dRNbE%o#-&ZQ- zPif@B5PU97OCg9;5DJg0Ew<|=BDI5X^&n%Yixk?6N0ehC7vNMPLMEk3(eVn9qx;y= znL2Dndw=1K1~A9-%BrR1dFOyl@Ah&y5@;qnC&`6FrJD$Anm1(OY@dl{FbqF)fwBCc z15DyM8Jn{QJpW1U+5rDSPyb0Amd$rK5>!gGnwSVmxLB1`{lO^#A-#clO<}u zo1MNEuE`2G&kD#LEQ#5?rMhC!DJ+7!&EB#yVQQJ4`KLeXo&u&X=RX}2@_)0LDD*=g z00U;@Sb|fLAN_}MSb5M(b8lTO7TAvWvj3vLbaHtG*E!&8-BT?enEKFm#HVm-&j&KU zJCCcfwzTSVuz#I$rSj>E=xyk{c2J@XT#tB8xMHTwP;Wkq#hRq$`lk0YrR7oLBe&UZq9)j<#qf;fltOPFn%fmS0N zRCLO>klbHH$-yuX2;2b)BG?beEl8r2EiBu+(unS0Har+M)EFk6o_J6#Qdj?)`PcG_ z50vfY;hG3WiNSodHvy&2#XrXV#_BA6ddx$isA9DA*}>Hdb$<0m^L>YIWYgElcX{`3 ziJfr4BV;b449~BbBwtswe;mOIPjiBp90TugZ&$I=*#lp5fn1}{r0|G2rC-Hn=+vl# z&DX^R$#rs=31FUV5Y_aL^%+$vQ-~T14C}rc?3oROW2TXwM80eZEG(d&`Kx+&{ATS* zC|ZdPmp=d9i)_p0s`~YG%vYB}FaP1=w3V-zzlZin!X2Ob$etvnP2QRQ{;TSJTUm`% zQ=$~zW^HG9|9P(cJql~*2F5HBz)2p?wlQLVvg;UroQ|<8N^Y5|Epz>FcqnErHWt3V z>)G~9=Ltm98;;O;+3EQEI&ksx+(_UJ#=q9p0AUK6nN0og?0@I+6D4y`Eb9NXhj;K{ zsd79?{YnFmne2JkUL)hBAFd&yJth~p8P`5ZIBY0YAJR3sevWJJp_j#73EI!HYtRw* zsNG13JmVPYSi08t2c^8uIsT)$Hr|pKy-CMZVI+8vgxzW68>TYy7r!J(YFjUb<+rPF zR&a?b~*DMVwJ|B56b$U<}>X?bf z@XIKwDq(;=qBg%iR}lujHyASk>5U^xKL;{aKC*0orCN%``%TR^<}$)1`j(>E?L9ah zeKHwgnakhUVTjhy@R>m{&9+#-f#TmyHU8(Vzt*k}6JAxlZ=Okc^uVlDP=Uk42w8*w zkqAAiugWAVH($oM3`RTVE;W4|$b* zsRjf>P|wavPe<3)Vl#C@X1c7FBoOxg@vzM`{c8ioJPP9jx5q>AXn{i)sWRW*kIX8n zrNk&i=b22AMSpRV)G3dv;Ai3hdM(jxj(A4D9?pk}vL8*Yr)>tcDJ+H`SY5Ws-qIx2 zBfiNbi1Wi31cj^ZB31mXm)~5fg0zvXRlQbFukEkiX-juWa#bBaz!@R{mx6~~iS179 z*>QuXp(}tXF`#|3*LyK^e%cfL3N)PGimCv`5dY5mpeO`h?!yn;scV<;HBa6!;(O~x zc%9fq)tBKP0g_)@ak^`|;R-gv*N>6OK%aO#46qu6J=|wyGOLZ&6Gt$~t&hTYA^4h>!=OQC zMgUW0Dzud7EKx@y5t|c2&Osi9B!k6+D4y}^=OeYw%pcOpeaUomjraz=9QwM9A^MC$ zEMDp8QbeRO&JC&eeJuID(#hOfq}4yDS_rZF6kGIblM*(4tL>$z-I1Lb2A4(6r=a_2 ziv$p&=#aybm&?EKsJ?I4I}z0G{AS33w%Wt@?AcYlp(Cm{l3G(o>!PDC)HKHeXDu`3 z!8>D8<~~-aC3oPds%<{&8nw`wdTzXdZGt3Av5d*-fRM#&FyXs%;}ktqx=Yz%*GkCM zm#vlgXeF7r&L5$ZfoRcvW~22V2Y?$!wz z7iGbM%jETOEMQ&!`2B}B>YU3Q8;dMo_unV=6&3fS`WNa9nK}}I&bROVCa2b=T>Mj5 zad0BiR}GYujHPCoOZ;>}FV0=c5O%6(CZii>sfp(_hvGaxQ(-^6fU4$wJ4(x`#!c2= z{~*Ck9RUP{_E?!z*S!X!tpR*flxa~Bdd*ftQ2y>pB?%aaq#gxx1Z62A3?O#lrf|?8 z;%R0S<*y+7%*?;&Q!FS~n1jC0bK|XBIt3B?OwK+dxo^Q%eS+5UYV5wP5^KqK87v%+A>r%vEdU5J;FV6p zsK{u)&&r|11yxixO!H^=T!E-!iR?Z z=S(!xOuyt}bnFk!@FRecoU5GIMJklEdMZzeIPMXA{;Sm;gc z1)d}P&YrR>39p8$Ez)O2hwM++@N*hhd2VX#J!`^vb(+$V&-HWKR9}2^U-;XXOhE%r zrnjW^FNrEJ-px{EEbN9Ky*Gc)H$KmH}@>Rfwy&JI-QjPCm{FLQ3Y^K1Fm#qMf;KZ>V~{RsLZ z?HD(tkfX&5u}+0Daycg}UQl;dR80eT)LUj&ns^MnOXBTur|Hy@nnQ@qRl=&fh+MUg z!b-92vBtvmHjr&=rYNXq>O@jFOxWnOMRR+ofx#aRCR3Ih_v#ZV-;Oy%lZqw3DkLWBzi(?m9$m*HvNWZ>>`TB8llh%AF_GFT`&fT`s@mn%?KiUx`Xo*rd|4ik) zYEtYIkUZ-iePnfg30&qEDV0D&M#Ua|sn+VgiuPf+emF@fZ>nP}$;Zi8WSnN9`7#-1 zC>=JBNc_Hr5?p;J&2jWdbSobon@S&1-eGa?AsRn;i;!s>@X1)N0xGD@W^xXhQm_A( zB=T2f3a61Np!Obrq`h$3GE&#?{r>mmP1i_fXXGe>8jnlFK%0yqe0qD&!e3{-#Kwy+ zmEh&pR;ch^FnILE?8){2R^(<((3cBf1}LxW6ZJ8WL{&1_i=wRWW3IzK&=J%iZHR1y0=A*c4|-)^cOG4shrAut|5)@ zFcm_~J2}fgyHUM8!b4l+-_!Cyhl7wyYxkj6~Vc`RYLX?hDP0haY#c4MoQ=BYfmGYkLCyq|MFF zUpp+FgfEF*8jL%hH5cEH80(^x=eTj##8!Io%s*3k?-Yrjh=rgX^|26Bku0ZY|8u)N z54{!kdPrQd`<}L+dKZ_lU7}91-a+xh`*0amWc}1Y8!cz-wvNt(aFV%!mZ-*fr zAj285EW*Sx=q;rXt(SAz`>5;4HzsP`?TvN=WN+hb%wH0+n^n-(xE!y!VjdqNe-!_g zdv{CL)m-CR<|Ct(hxu+z$>}275}$N}_}OZ>Xz$-LodoeeA{4WhI0+& zdL8#t`H(%CO;*6vawlKc)kui^57$4o+2ElWM!KHL`Ioq+e4D+~VY^U9W<%OiF)yI$ zLMCbAJub9)ebrQ@K~ecm*h=J*`0RJiV&@*eB`<9#4ntl>6yh0t(=m+FW69_~{#11b zL8rEts_{34ZIe z>}v%Nyka#8;gZEs`vywLI{dg%Bo_%~a?GJ--S&pD%2dZU^G;YQ62xhW15Nd*@bXuP ze8`0)vycG~`6fk4E$wuzpJ~PJxri_$9mR+l#de{%!Rqn~rC&vnXw0-=#yyb4r@7I3 z5FzYvn;-}ixq_Q;^U6o#US}_@^pCNWF zFdVpl2;Y>AG9)qJr^>L*F?>9+@lWNaD7D~rWcYcx`+W*}K;>kySDl8V#bPZz`GG4m z2p}XgwAh19K>fQ@@3arykj0E-8q^LH+UIU*Axu-iD}9SB^*oExBDDJzfVWPw<`vJi zZ3eHTjCK}^#HINmr}g<8rnyv5xNk+V(_W_$JEI)`!MUCMo!z;y zNq}@jat1Z96-f%t{t0IbtuHjv?Pkcd$I`h{QHCbFcA8aCckV5WmNo35e*aLxI!6O$ z39pBtM#|A;;vnrF0_VYCmtd9vPXH0Gl;dn+AE!HdOAir`pbsU~fJ37ohX5I;yb=cD zy446{VLET77_ki7=?ExD=*pGE@nAi}U{l#DC20)W#>+HEY zZ6d9=vC7rhyp<A;eT=-F_ zh5~;gLow%Ju_r=|zfCMk0jbfh^x3ob|7ip0H<&9jg~D$|l8tZerI1jFoKoo{dGY>W7a%zJXu-t9sc$g4jDn>| z)Y3QBdX&~JtPUA@PD%p?vi#-OPT#5QEw2gCZb=obREsI# zP&2K5>=E^SldLpsNJ*?BE~rlTXi+c|`OuqHeB-1HNR~l#T6a!dXPkl3!wiL6e^M`% zlJ?u5^|pl0|BI@x465>r`aPtibW2NjNJ@8iOM}EAr5h=cF6r(@y1TnUX{A9*O8V~q zJMW#j*AIR;I-`eYKYRUZt<@0MWy@@qMP02Y+bhtkEe1xAP!VzvjXb#%$SuS{-=!Y2 zVpB=to!bNT()4Xr19yN^74^M05n{m>z`4B1raj#-KtD z!|8}1TlTVXx~TrUY3!H4Jt?#E+XSy=dX;-M63PBYCV)yp0TM-#j2lKxZNc77Q0_zk!CiJxSk@P zotLPuG)rT_HYH=lf6TLsZZtP=oro+0^smPE$ESPV?998cDMJoM(rd$=t3&I}UoDME zPC4NvD!Jee-C^Z+KZ(X;;|(JjtUPoz6Q!&SFSb3!soeNnOE#MNrT^_(V~QMUm6gz^ zIwNd{-}PYSyYxloZsl$ZW>RRJ-H4w#E}q~ zI+A&`&)P@QB9XJu%Y3L^k8A8RRl4qN4__gxAmL%%FU^tLM%z`ckH z1P@|C4-WchLc>(^5U?k5R$tjR0{`q=n>*(-Q_x7Mz^eps%?HHCj}5@4++{y;FyyT; zjs^)TMU(;)*i=A@k#ySFZh?Ph4?SMD#=7Dy@Qpk6`Ok=wr+UXvd2h*8LXPexMjI#z z99Q3H!LxXDsUb0)nu7xWdRz7OxdkdvG?we{5irX+-%}=8DZ|{gy4Dq~rdtKXN#+-u`)RZ)Rkr@098{19%MvQrzI(!>EmygDg-2in@rz;zy_P&X*QhJIoQLeKw zud(No*O$!`*w7cNBO{WgoQsh(fY-q4eTA!uk>{OyJ?j065vXAy5XkeQ)crDXR4ZXD zw=tJToz?96L)W0}Se7H&;^iz47KHuz%m(-qmAA#=r`>QIa+b=)#g1e8i^k$bc|QBM zb~!UYA5C`xUby~!^dp455H35}KKLs0s!6-KTkc(^&k)_jWhrI*++waD!OaXT5{EbW;6q{NG zKbmM({uxgnI+M)FlpKHsnW6^@gw zFV>4sJ1-KnlDo{mM#;Ihh{=*xr4WMjx`UXIm7a$1#+A_zy{gO1y}98-Q&`U_r#4)^ zbD9*MFmb2STaz_m#aEgv8%*)qd`r|smrhE-no`@aDAbaJsrdgAcvIrc6nA~=IwJ<6 z*^j~LQYwJRvm=gYmVed1mz0kx%|oR0d%swl$PmzzKizY@@sDzQJa_oQ5PBZcEdx>*&Bs?Y z?}6We0+DUm1!l}X3pZoXO2GSgq5ht`9h2Z05B5``aTGCx0#hhLTJwxG0}ZY=Dc|4? zS=4abTLHN7Ohs@*{Pt6S;0e1N1){|cSv@1vK7;B)_@`!I%9?%5wJfMV*abUmJPi3O zcMNctr9h?KjF+* zaSW$`*K}?E&tvm@Kj^jVR1a1}EVS__2yPw-C(HV)fLzF_ula2@2-E|m!gI)C%qONX z3HyRNy&$S zi{|Bs%2ZmnEzLxg6v!85Lf9>>h`~f#6Qi#CQ&5i8V`M_4&-i51>*|X)XQC7Fi%&Yw z*eyoTR@Mm!hTmFOewovbOUwq`1@ATbe$EYPTk{!!Jr4x8zC7JNKqSx7Xm5%=d$e$s zxwL)SqqHYcFc4w3);qJ^5N!5YJ%|C?4+DA5x%Yj)*)(+XEe_x9AipRY&wk*0WRTgM9RSAK1OClH=7G?ORK2iUt*{r=?cr-q3m5IIhX<}; zg&W{NM&27bPf6yd&zae97qJlrcHegDR>aTv-EX6+`-=7$&OUzd;!u5@5 zT7UN^#a*V+;bCX$H{M+J|9NLukgj4L4_7m7YS&o=}DDw>ID9)Q+tUf#}s1$4TsgdU< z!6qX^z^wHNSmRGnmtuFK%B!cQM-I&xNXjdmbO6Koq5Lqt>5MkNXo1X+QbV&=$ABT@ z8b@VoCb{$z3qF`4ZVitjo(C<+6zNO;303hIEL`v&Q6Tlg?CWqNi2`9*oIy9L3<Dwy`i+YIYHc)B@Glc6FpiRh40$Y5-X~|0Q$`hGx1`7 zmLTBG9BEn_Vexk!gsr)AUEhAe)-^^=7@Pfu`*gdJS{^u2mc)SJcu#?ShBrT?TGo6> zvWd(Tr2Q#}U$@_9idGRp@|kpK$fG}^@Y}j0DPM0LS*ux9(ZxE_Ohetfr6D&{4a(EX zC67Pht;On_&kq{fv1V<*C)XU%0N{q2TY=JF~LXc>)kA6cj&@Toi;P=WP&w$uA^ z2$xfW5@{7qA0v5^5`t%Lm`bY@K}+AyFNfl8ebCE;e_I!{G`CF^Dinb4qNbodqoSo(VI&F4bpRRcK?`Z?OSmLp?WsqOJ`@q#`pLGuy&LA5#o#ptiv~)2pGWN+}1^l~s z%7&iYw|^u3&k$~6aJ&HG(t*ET+AQ*Qmr*%=56~JA8I}Fnw#O7;vT!C-Wex8W0~SzY z02O4Wc}pHw)UuZ@c6%DDBeGi=z@+)qa5+$rJz=9cIsSQ}wk^FIVV>^b*a+29InRJc z8f0z6uYE^5X*cnNt*SrYGTdw8mfC(#UM@1*xXgsovV>>}7anM+6-ziN72JLQEjV7h zQEat>&=(TN!>7weSm(@%fJYsHtK+IHx!0%~9GHQn7|TwY-x(n)ryIpM8vmXh4cEwA z2*pMQf`W^84uinkONd~OJMfzRlem=YcSH)pAWT>!HFRsnLKp~4Uz98|o;0_VrW)}Q zzpBJ*vPv9Ix_LtMFGpTb*cRSox-=+WoLL~5BOOl9 z&_B|F5T;wR*7zl!pT&>r+b7hYwZUJxzYf7x9+kMiSZ?@HiM4-^_)?|wLZ&Ij5>P8= zp?O;y(i@7mW@Gz-Aj~U}{RLGeK$fBG%gB5B=+cxEz&QS;6%x|hOykwt{7y4CLong*DfETg)*jel>O6j4vX!S?Ay*VM?NPj$IGyAOzr9y{PN()GY-5O zZh{TVF=LB~EGv*~<0_ds+@{~B?#I?`IN{|6S0l< z1JCKVhSSd4=E-Qdk{=f}MUxwcM=PWTR?s>A*>|&?9K~JA+@M4qiP{uO{m}fG{4Sd8 ziEe*%81XUXpN~MqeeA%0$qrXqm57R0$=A_7G^EyB6E#BH#tJ}{A*wgGkkJtZns##bLIuGJ;w%9F&ed{axfMWWqc3b)CbXpZoE%1b8cq}EyZePy0e<1 zscN?b0N~*sYhj`VA=7WLSSl8C>zxRWt$c~E)QM?AErxv~EtaeOJ^9cC_r^{7fH_GX zB)BJBBQzO{%k?XDin%y61MH*XCdyin#Z+Zum@-wCeya7MMXG82(qzaJ2VEZMixQj_ zHgzby-w|QvVn#Ais71d~t_6ZIYQs*XGZ6BmtOB?FfV1&5tE)^ad#yqa@(0uZAHVT} zNbwoC#gJgK9`8h_-fRObj{jy#=u<$z2C1~x!oN6>ALOLdAkwgg59Z5RtEI;8V6=|- z$Us~7aput6MruZ&i7UI_u0!XO=CR8@Q7UVhi;m)+*uAdbJ>QrM?XUKp!%Q&3z@?AH z%^~)}l;80)49%|?`zT>NhOXfcx6-l}3qV2pAbKj8EK5{gpM-61kT38`{rkegcUJHK zv@Ow3nv&M695#n!og4o-xE$|UkFk@Ai)PpV=PQjDTc3Ui-bYhN#S*}|&fNZsPYCQ^ zkne1}9R}X!D5hdvM%$U{dvM?<#RW!-qo2ma+xk|&#MhF2ZJ1hRgRzPGr_$l zAUG80wMO#NNVxUpefN*IuLBbJ8>sHb_KUpD>cL>QL;@$?7H~-S$fpcRnL)($j}YNz z+-9A<;_$A>orK%_e*~kI#K+j3`>m&)9FL#&c10dkp88y@EjLfo3}2m{`mj}%U37+* zVdm5>HrnP|tb9o;s$kY6Ug?VFcXiwpOdfJk`RA(a`X{n1a(ZW%jmOBl_r?FC%XZt$ z_u&(dX1vyq#9jYtA3CFGmEdmO38MXbe?B8$3d{x)ZGoI$dGIDDH+|+kb?cj;9+5l& zLll8CQRVrEUn@EiTup6PHU~@bCq)%igG`eEHKMovtLm-|5NPV>SI^;*4)|O9IX*x! z`c|&WfGTlAS>%Z+wulgk;{H>E5c82C7;*Hk^5w%k%vwgdJ&urKKDdM%^=X;;NY_|}B$=Wt}XkcA|R2@3yXB561kn`)rQEI^p)wnKW-%oK1 ztV_lgozJ(=FUpj(NyVVAG@zovRv3~jAf3aX_BY#V zoen$vHDkwoC4)Y2moio7>1JYnS%5ffgP|g6MYB%)B)Rk&1E;rW#1>4VL~E zPLpkq&gZNJ^4N;KcOTj>|W6L$b1g0a$P1=50Li%Fks7JXBPpM-AOiJ;}I%4wUT z-Gbch6LwS)yv|#S5Il~2CnF+C(_qy0S}X>lZFJw!pI?k3LBKCa$7?mtk%!8L5g=)s zhZU&=e!N8*x)no@_-dsFxJ@2xM2N{mzbS4+!-w`x;g#2rz@x1Mt-ZEo2Yt`0Gl_|7 zUItyW^n0;AxV$+Iwjva@>z=wUj8Ey)LWk>IB@c=5C*(U#9dhp~6>L_7%Z>+B)*5TR zAS!(MMu; zK1uL230Ls1jnoj+*Ct_~6}_WD+|h!g`AqzLUfyMp?`mNrq{CFZjjkbB|w~pOm`00tPyHXPb9w>&a6P{&~aptt7LB9f4|Io!v8|g zcvk4+Edg^7j5*m}_Xv8x+-wJ>{&U>*(I(uWM@CH-@q~e$ttV5G;Fr^t!K8J^!#if} z`@lhu&*Sa=^r)EMzQP~?`D-r5{g25Um~ziE8y9RY-2!!76Hbb{4lg97sd9R8=5fKU zaw@-luTYfFStFe;Wl*HNr&%oVT`M6S1z8QRxu*pgPh7r_WuB;X!bV&d2D3*A)Qz-7 zJ|Gk1Vxmx>JHdob^_ZZQ636i?eS1e3>O@^w1`JlhU<%!B*a+ac!{ow7g@Is%ne7mK z+mpt}fiqIL5}ZQx#UhGp$I!85U432|W||!gLSw{trQ}T@P)A$3} z?y@Z~%A^G@>kep(7k)Xzl<>d~$gQtkidI{q<}Y_kOGG#HNi{()QRyFB(g&HxecTKl zWfdzk(7a)RqJBYb@RVU1uLi_%V9AK1``#!9w-TO-WS4r5tem?OQuMTnLhmUOgtala zx4I_)-~sXUTCD^^1fQu-0G1^L|5<4^G@!RB!EZyiwUcQ1_rglku1%wKO zQv6^MxVQMni(|T$y!fKTj4^^+TfgZ?m9`KeLPk2m5_oC6DB*$3 z^0AvEnE-<~KnQv&P0irekbOBm%KG-4OBY!we?j_rUZF2!KS(UWbTQC8zitN z@neuLc2XutDo6$+^}7F;bJ#__MNl#>Yi++!JAw8 zm5sY~qC{&AVSgaFRjSmJY#>t;vhVzUR`>v%rpW2Lu=i%2|BU^YT_p;Yb{;_|3dYi3 z;PHSz2Z~LLkyFfqT&1*?DQ86)il`i)YJbLG=Uak{1`f^R;n__7Fjdks!fFl6su$}u zj-V*+uT7M1L&O1eIHJ#*uuUbSItjmpwIUJk<9i#Tl?5k-L_wp;P>roE`E9`jJ!QrW zGS@d5)EE>9iPQUr!RSpFacG(g8y}B_4WeN|lxg$W4#>Pz?674)DBQX75Z+!$SYoX+ z5{#MVA}+cp<_si1m|bY6yAJ^AS5STf8U~t$XCV5GYA&DZ4#rl_@~C~|HlVrdA4(C6 z-ELpnLJo)}2F^O3J;B54!SN;C=GTrD&zeGUcf3T5_P z*~G!ihFJZMQ^UBuIB`hK5hRvM=F>qaeLJ%_imvB8=S2gYnJrC{>4yyzh|ONgD^y( zcP;TOuRZbqqWu-Tmb`ZzA3rU4+L1bqkc3f}At)TJ^gw?Jl!aK~nSkBt&kSdlfF*1y zK=bEj1eNz1{oZt*zuE*1ParKrj^9K8MfxZRVm@hBy&Ky)#vf++pO zz@p1^MHV$J80T_y0s1SlxrUvrEgc7glP|k(cPDrxSEZ)dtdt4_-8l=4U9(?0o3D&C zo-!z1g!hD#+4r`yxtPC&fpVelSa4*7Q4~{rw22H}(A8!s1?}|v*TX>Eo8{@%moClU zdk!ix^sH2vNEKyZb|P2#F%~YFV>i*SM*Mmabt?YeGw025g6nJCpupSr6)G}n*eHu& z7A5HW`>!<#i{Vgvsv=wsuf$X-xG-eQ+oCV1kG?X3_*l!80jc~8uG%**B`X;+s@Zwu)np=J9Nmv^h zWYm>58W1NSw8i%C`3H+A6mw=2O!p{c8wbQzQ7rCrEtrokTB~b*{B-_DtZl1r?D42s z`et%gF<8&C{%K2Je!X)dyi;B0k_bQ zh5ngjyE|6{DqF`mXaj^F`W4Zb43siGRVK1Jo(|HnRK@X3{Ejh#8gAYI!deVUXPh|? zX0?vKwK@*7iCzw&KZ4W$Nd_-Tquu?fz`;B!hygg?TR65PcK(6w5}2c#b*~TK1L+wK z@)pXzxf1@?r95*+R`Bn;-VYw}o_I>MURbhP2`=g|4w904#d+>qd-RG++-+yFRC@I= z5Zsyu?yk#57w)6jDbRH|I@`(1h|B@9yd(j9fA#i(m*QWj8RheCJucG2!Kx|x&{L$| z3&dpZoBK#ti2&Q34LA`jO~60K7ApDKR5iP@98Bjg@ZH1Vwm4#mw=4{_OwjrNK3$ta zQd>-oWfS<;40JKzvnz&5f++Emg13>xQTj3%qc#Hy7H~?FgiHViE(thUk6VSMG+7jt z1JSdlstKsIUxVQXPj0KV3Y#aHpUZKe{j=p<(&&2rW@T9%aC*>`X!QKu4T#_afsZDY zQ5a*OQ{-E9(*`hW;XJNEkilaSKb+%wflbK#C4R$$9)3@dvyc=Fz5jsKV4b0PM{O`p`*Ff} zt_|aDxxa%WXew)4ne*Y}IMS0@cK8Uw4_yj&qn-Fm)Fo*146t!t=)HL$c#>owJ599o zE?69C#3!3;?^i7uhex&;T<(kRdlzgx8+?{QzCh8!ue^9Bu88q*>8P!+SU8(4J6Gg?F>1hq83$!Kq zsv`5EP-nYjK2=!(@q~CeG>r%A9mUe8x&w!L4g%C>q+Vj>s4_5zF;(13xkyvaCC99P zGN{i6$e~Nv`B38z5oJ^H7QN~k!zEDz^fw0K;I@0gV_l*=%(Nbiwcp@E7S7eIYy@3x zUxgW7UI#PUekNw!)y}F)0GHAXkuC_DE?4U=x$5sNT36`0cNhJ_sVR#3t`ooEVmE78 z{COMMoXmlV?x9;2cN2Oll0IT+0(!GX(yY#nwt!FB3!08fl{L6?ZGezoYUHF;B7xpf z6)|AVw?qS)c;mG>cJaa1%#|-ksmim$QDA0RrR~TN=$~{l1#_F1WCioj|ED>_1ip_R z2@;sGWic2!)dw#P14&i*8uCC)Z=skEa!C-;y|+jA?gtzJa#aD_P(?j&{<9zY9)DNj zqLrT5kHIM$HE_Y=us2_dVK4-?ON+|d0%_-%hWdlN)A&r&@od`hr9zT+5AJ=r{Y`Fu#Lz-YFKr67#kFKyRRI3 zF>+DO-X!LVW{Ou$gRrIHvaevkuQE6^OTyx2m%WKhquZZ;XZwRhFmlh+-q{4K%OVrk zL4#>r{Xu?9W`0X&NBw!!g`x|3Fdy?%+6`o|wU~Ro(#}QIL zRsSC2u5-=V6XTsIpGCc{zPAHAE;R^EinhiX^9MrdjCyw7ik0cD?|1{6y6hEv&&+Ng zR>D?No|;S-B;q5YF4CWFJ$Y2DOPEK@eJy7V!_Kk~SKn7>)ltQM)oSIs`a*tvYOpt& znVa^{d+4jxgD+j`;C=+wo9Zb$Zv1!+kqO}k+gx)Qv!$C4O0+j#dXYs56PdaEmm<$< zYyxRywQerHM1j(6Zi7|U@ zhJW9uQm%*#ADDykr zc(lf;ar^bmm01>au#zZ>EUQ0z+BuqO(-wx&PfVx$^Lz3&$FMc=Z}z2$W{0Rj0|eYJ zH@_Nq;J#osImRH^>S;ml-}i9@%~|}8hEmVse|FDrop(KTOz0fe9gEsioOe5syNB{e zN!QUr&8tAKBzCXp26KOrhj?A?-sBu_0GZO=&L4)AEiYEzv}TNgkdQeaPRoj7*H+!F zHz^tg&^s#IvSQ3IB*UG0hgo;KSg0XImu+-%_aB)7nyn*!SD_v*F!az8Op>4NsVIavU*u5q%_61gUCC29< zoQ^oIlREXpj|3S>uUu?9UrBj9R2dLRog%E@zfyfsH(ajLSB%W`Y+`##;4EMgkRR7h zR~Fje~9p5X?7eb(>wljrsDs{`u(kbVC={f-KXkA9uhWvYr;F9;R%*jR297S zeFh)#s&c&(Z$-j}`~uhB+P*{My(s@#j(=85k3YTr$g(Ap8|));9yGRQB!mn~T>qr6 zHhPqOiKX8*n)Kw;=D&zmbV1O&P3cLNJITT4Zoj3C#3v*}OWM5osvysJJZ5lYgsQ#f zsQ=S2%q9-Ke^t42i_O46|Bw}q@n1*BU7twMqDVae&GpVo4X4*8lllav1KL)+3DOqN z@qJ6twcvXvZj7+w|2nSFSHo_--u`3$vM94!yJpiCjNvJtk`dbCdl(R$xH)ONNqi=h z4z7o@e>D#fO~Ynep@+2iZjVg=USqz^nRC-rb}C;@xt75?yy77hDiHIXdgh2TED*fi zhsc*-pUHf(btTw9vfRwKdE`##l~}&e%6ID8@Cah*9455K&n&Q+VjEoXR6-;xHNX6L zpzc?5v%wiI&feoG$@5lCn|WzWhSTF9k9b74*n7 z+Hzhr97V<62=Jkds+MBA;&me;Oq=T2{@u-XKcbowBI+DzOzATfk~BCVJ% zO7?bH&hT|Mm(p?rt9a^6#KUAXv;Z^May**lxPTKQf`DkHdEl-POlw)?8MKqIQ4EGZ z`r+D0#xs#r!X|AXocm!4Tg692nWdZR%^ zWRImtBiSJVCL=>2#X55z%|7TBGnXc*&n;p~AtHI(bKmP1(2ywH$O;flA-+x1vF|@H zAw`AIcZ|<;6?NCE-^CUE>Su@a=qmmQQ@79f4GF~RuFrWgr+7jK45^f{1%=}qMn={) z_p8&hFRAgE~ z0O?K3biJk7!%@`GVp{a8Q!wWy{4d8KzcSYz&G3##eX$YYOuoVzPow!|i~A7M)JnF`suk-d!%a?G*oJwTO-`Gw@YD^N>4x+XwNhWD z;oUb3J=+&L)dzKx0Z04RdAE$ArqPa1Dhf7RZ#)jfrsGQNi*8f9(&q=SOBIOO+dL&TjKLY1gdgZ1TK4toZ2iu8f$WCxyl6B$iYZ7 z@FQJ}HDG&kY&mB&AHLzU9AYOn^&aTZ^WOZb*=rX((Z6=s=2;TQuhuVvD*;34Ts~12 zLWXL%CriCj%c5+x6{S+AsUeCGB_nC`_7Ka(>ZmpDO{qD{H_Zd86vG0XZTa)}GDlb; zL5J(HqA;`Cz3Osu40_?9DQFgf)BL8)Kb?%rl5x~YI@==i^6~T%IZA9G*v_3wfATA!Pfn@ zbpPbD0P9Z{?U#u*sPb}Q;RB)8CJXnY$X_ z@|qF|K{47=?=-u?wO_6d5hhsP-O6fDkh(5g-xcaZavoF-1bSlO z3E@1Q+nKzRm|jlg{^T6A{-V&}&l=IbxcVuY&`FQ}l1yu9CYO>5VH`M0X*!=A=4ag- z%nd$R>|_#oM}-M(a;D)lw%|LTDd|=)m?O{LX^H1VS}8BM{|Sd?rdCKVUu*U8Yxmz5 z%HkNirsSC$WR4?+%h4=R?oBQjp435dKd$FrlbO~z%zDQbg5R&mR4ikb|4o07iFZB! zPyUi3_H?01W8Eocdow5qF98Ds0rQG^Q1|;eZN#LcdmDkJ{7o}l3?4259s&u$!ZQOG zP)2mg>f1xZfMV>R3wf#nLKLLFKzKGMNZ{XZ#d~hGuI-isXK$=t4pd%{i^ijMUKKiq zq`sQ`nfPwA@~Y7I^-CjIko?AL&gY5lfKY1lS!ybO#jIGyn`DXHrgObE8kVES#xK^je5{s2}Fr4$Af)+fV;IHm%W>7866D-+9I zgoMwPO5x*^#|4R-;|{C13a&^RB4ff=va!Nn==Ck$KkBMHGYf&ivn+ih`zHh&XeC+i z?RmiSxGzkg8Cqg1SXBAJ+J!fkl?VMmQe>a%V?3v+{BOEY(Nc1pfJ5Qk`aih=o}|;2 z#EEu^{f(TFZV7USEqe)uxe##Met`3dEn!~7mG0B!iao|0V%nRYQ>etQ-nZdOIKa22 zlNRJi)495Xm!=jMSA)l+gpo8oz?Ml>3+$1lj>X1Y&I7K(y;&iV6oaNBJvN3lYS=6i zq&zk59T6dUB0F(8N+6-CWo~#mBTNV+BEP)6d<=XvFiwxGhVoarH$WSCkgA(Kj`t>G{!($fuoh zJoNF}6K)k?jc8k)K;KnFvV5IWSDuRu)zXll43u-ohFIjQGvz41{5GLfvt9ToGL26; zt5b3`_g^oMgV2`Wf>~o_vt=j;f}R~xv+({3n# z+?`(XIFs9%T4=we<3RuYM(LJJ!E!zSL@0eMvrx`u;+jnH0M?3BJhbLK8HLkufx&QM;4pG|1Rg_c8kTm-S%&O8)Bdew5cwy{@?=ezAU;ouz0FhkBRk$J6PE43Rn> zvZpj&&#z1d4&Hof{2s>s;G*14Ke#VX7P@S=)GpIIX=|=(u&AwdldyBs-rl{HkU~Yf zz5SL*>$*MC)Yc7OL0->X&SK^_=d-XYo5+5qnrBbg>8Eeiprre$6&`XvID@~>H<@%> zfAsvuPLDk6!t!s5oZy4z;T05hgcNIC`=U)F=tN8piU>u~9Ne#B&k+%b64xyyi zGi$qYFa0eR`H)e_2nP`PG|a~XuBJ#wL{tJ|{qCq)B0@=uZM?r94?AVlX*@`%qJ0M? zlDlv!q2<+QdVz>;_$Zvq%S)g2mpH;+XPUZL9fXwjc}lr3%z7|d zlFH|CqZ#g4zrydDSe2Qjs^ILbYmCse=<$3TO)ACkc4Y#}$uSl&w2ENPAxAu$q=RXO zVkw4&i{h-Ma7>TG$iW!`l5$8mL71vw3am;3A6^kA9waHGQUw+T!U!P*+9w`_sGKp5 zAEBSJTEdCcmPC<8AOuukjp@6Gi$NA`p$nm|$B7Is!`R=s_6m=Cy#(xW&X50yJ^MuR z9HfK3a{q1LbKRW(gl?><7yaQ^Yxo~RIUfuzaq-c1iOn{K>T>xz6qhF-)0G(h;h88I zyL)D0zHu>JfiR7``fE(cS$xt9TI3e{F@BXF{GexHwc$mf4(B&aiJYc80J%iPhp3bF`{+`NFT=0;KELZrBA|i}iChw%|XXhQr;ZQR&A=YO})< zJmLiBNFwfc*6UQv$+^Km9Emg+k}5yy8j*DLjXMo=@n=yPUYb}yYE{E$L^_`&l=^W=Jcm4u?$E|kHs*kO~?&jwAGiaC21i9G1X- zFVP_$b&RT@P-l?huy)m`%*V0rw5Hcl+q>({#yzXQ7kGV|qMdPHSu!cP-0aoJYq7r9 z;=aKv5ylXC3JNf^xqRLw3lBOZ`IKVFz|c9o(DkmXy5Vkyv4)4lz_-bBVq6&@M8n5V z2iUwW(9;24P6OV-JP&U|!8 zZVg%!Xq@Ml<~qQ-%tmlHrm&r%-m4*SwNjq3P+26?->uTO#3w4cm>>BeBEa@2R5&@r zIRs5#k`5Cx7rfQ)Q5PG_OgKtJ0Rx1ZhQ7SF?7aF&9}v^!tfZOo`Cb{2cgdD)>Pgu; zgFyIj52QnWYUsPgN1F-$h|_yUFzY2kZc#W$8y@ovmxCA&=hKF(;TYTCs+0>6QK==6 zYb=$~4R?@8VR0!qP;A7An!$v<#L#*_vpE*xNGFcsA$^1_R2(8b`LYnK-YeC3JYi-m zM0#gNc`?eeaz+X?dezUET9~-M_2H!`tHu7EH!@*jisr& zHGFo-EDwrucFm1Z@E$lCW(MyE%X>Z7ozVkHIn9PQd>Smw^!H{mqT}g*^S}3LNH-ZmU;;XZ57CxFQ#==)qr&f?f6-6ZQ7m-7y zXUZ!Pr(Ga{KHfjKWlRAcdznd$>Dh1p@X<_B6@NOYR(YNE=U;OMzhbkZ z>9S8EKeW0Bwpr9V&mQJG*L;LO20sdm@%w|K=Ke;uhgjit50fIR<;>GboRwuQ?izQV zuE^zX8KdVOSIhm0DRgRmwhk-{KXv73ha;J4ExX-1CYt%~iQfJDPmaqp>%Ut?Ud^Xe zU{w7D(!^5rBMm_$({ zlb2fw3uATJ6Dv$o|Cw7^YtC5`9%V+Vn8%lnA{&AwCM)@kk|5dURZL>|KzW%k1GX%- zG}x+!`R$!Du9>QtRyb_DnksC*0R7u)19_y+D4LMmatQpFaz#Gp?c(&aOy*zRepSnS2l{@7K8Y`wGd99 znRx(H`GqJ96bkdqVyI3ZXSi!rzF-sWpMD!d*3&!MH2&-`!mAup)IGuu8A6`7 z24CX9g^qA}1)!u94B*O!J_#@T*b{D8>TU2Y+4bm8Vj;MWIA~I!d487R=n^cjwW+W6 zVpo?ReW3GzqBg6mEh4Ra&+iF?M_CUfH$>k1zhz8#y@lVg{*TbgENhvwIL+TLR= zxmTZCVV0?Hn^HK1e&5*q4=eIF7r9bZDU{Q7Dx7hl_}RdtU%!M`zR%iC-gQk47I=Xz zKmr$zfG+UDQxg7lIrixO!=z`M;I&xK#(zPcHtfHc!Y@Z+vjYxFTJhx@ld#7z_h00_ zeRo4lP^z{!?>~i>*rle%X(5;pOYT8VdVUBai;AvZ$ik`oVkp9t zmXs@C=(uT>fM`mIu_IBc!Y^tSpl4dX60&nJBG2mLu-Y`cP1VUv*+gCT&3szSg#Lq7 zo9Vj#IPm|1HmV?G!<`$}YvxX0>MjT*$gR>6lgN>PI{Lk(RF?T+j6L#KEz~nk_^H|r z>L^;A@vJ5@u9z+QawNQ@_CYl;VdcMstMR84&&aCu5!&Ct^ z_8Zpdy{vRY%HmgZu~Z6)Ww@)qiYRqIQ!yhh^ermejntiE(MOEGcs(1C%#vw^#OpLm z+vQnXdt3oeqAh>Q)8P2EfSWnf>fi_dbZV~LwS1HeV`|CEbDtU&C_1w&C>;Dg@&RtQ zo0y8-uliTQW)6uR3+32Tut3?-RfIt1$R-wX89FmqPkIYq#rIr)DX!u1GUVI76N|7Q zkuU1R2g!C{&~{BimjHnPUY172v3{9#FLnbk|8G)}9~vHT1Gt;^%zAb!F3T7ch!9c1 z@4vd6SfKQ2SK8VK*tefsO*gSU+AJ<#r08LgspVI{>t@V6dR?^}UpbI%KEHOqo9W+} zL11-B_;??-rlq*sA%U=MH2xi<;68>!(8|?cf8kBrM6?f!xuu8RqIvR-{e{Zk3|r&B z`wIuzs^!wcj%O>0YufX_HgYm=%AgC8F_Dg;H*B}K6CBK~s&AlJ+JYoDg6=9VHkDdG z-si0gCsc#7@qBGE9(Ir^bf+%Qf37-RO7KRX;Q55{?7Q)bYwN%G94{uarjekPzrfUK z|2cV_@2g1kTzPV!u`yRPlw^#uP`9X}51<&LkXh@$*tnvgB)-r~xjT=8^#^RA*9m$I zfU;+N$Cn_o>}2Wo!>yv)S!sYX{Etxbr>H_f54s3^qK+>_%ebVfT4NEg2>)#L`a%X) zz(6rKyPN?}sj-L~GL@fS)I_zmPhhL129olp`(aSFN%L7#dZK0X6PNcfLy+ZMBa5+N zX#$f}TjCTCFmqu!%2c&+X|Nc|MA0bVL-@chWHGrtOv*ElaY~C&_wrSo(~YJ$h#8_s8yorh)6fiwx5L#bM0w zIPa%Vx|i#()GxZbXgKB1IF>$06)Uhanudy0L{p<<3@OF3XN)_Hkm#JsMV(WZ8pMs`=0wr=4@+c zvH39zDNvUE`14O9d#iv?B+O!Klri7n@^K%CU54!m_poL_22FD*6$83qS$6cy`@SXN(t@hwTc3M2Sr^Km!kNl#gOzeCx+IQO z#h7TenW>CSA!JxM@(0*f)l>#cU>otfE-t$vLiC_O&o6;CCVeb>%FD=VG>c3}m!qPj zR@D^FaC1J~Mbo{5EeQv>QFkq=s)Vr?%!8I#A#Bb`q@jEXf8x27(eiThVT*OBCICxL zMf?QwwW$D^c1Q|O3nm1H@)`+V6zemg&fE+v<)2&Qg@z|siXc(keB3Sb2zz?JyUv+Z z5x$Hi=?P1C8?knGn&FP$?;lG&)a++}4R?6eUtzZXys)I${#X0%JS0GT9Ty&lZ$Zwc+Q!iAlhAl{>urn#`78Y21WfjB>gF2Qjl3-@oxJ zOdCd*Jw@xZXJ2fj!)ohE_{i+hHl;4*g~9dNh1pa(@|2Sv+j<>WgRjUsk7JSU`i+@2 z9gp=l;L?1@)TyI`GN2x9q%5?Z=Ocs-y~BzM*}csmS(d(T^#qF1!;Gm&tHaNG4{??sJysad!EW0ihcs(f8Qv6RGGb3u5J790c%mSW`|Ho zCIi9H-TSo^_qX^%T!y)xG^U3$g%Y7uXu-mvB|BwWT|OkxA43`z2~0)5HtBNw3kw0} z(~EQIS#w|Di%U-PKL_(IW)kReNwUwXg2&`hN7pRuGlCh)K1s1(b|Syrd>!R|e53Q~ zLJUx>`cneVsR1!_x!GasQnh2G2Db&uDR&YJFS_>+P5_F+_urTsIV;}FEG=Nv6<4`T z0#9fE`4NE*#nCv$MFo1;;8snkqQ^C41IBGXwg2){SgYV7S$&TDyIB19;}L!)eMfVZ z>mTwgLIjMp%}bujGybGEmkH)lGB%@}^F=S{ekN_ev=IK?+yt;+D*oL~e71t)7x3^? zTWOkIJj@LB>TAPwz03G~?}*!hJxu%<)SLCD&6h_&TQ-XX-#5UBDYeGG?;7b{ko`9%c3-! zt$i7{bpp77NF4mG@m#oAAbHRjA&vZYgEE&`QgMWT{tE1ZTXfk&p<1Gyd5uPy7pF_r1{|srnhFed@7=CCLek7&p^pkHAT44@QF|h`2R!HR|iG?eSa@V3rI_Mcc*j+ z2uLlBw6uV(4m`)_q;h zU973u{W3Y^dNUzKwf#N5NRie|)hK2WC^;ca1!!YwB}4ed;>rhW*{J%amWUc{gGiXa z8yM2;!_!bJEd0bV#rMYpdKsfIFLMybl0`%QsR;N)!Ib1!f0W4n4vGnHRpdWR8lNhW zHCDLsAE0V=*?28C1UPa>9$}th7HuefKjlt8j{Oge*@jwYXw9=MRp}2MFW2dbCBgHU zWb`}w4rN!KJ`1J_{pSyiW|duKnnDR4mysB3e^Col7Kzip{^s?D_M}U%5mjdTv(X_T z8-%=lidBCbegPBJQtDQ#^L5@>H~#6H;kN5drwu*PEt6NYjf@j@_<|C`N zk@OEY%m?TTjtf3Ad}0w4Z>pQt-vJAzOnn!?8ym5u)~1K}$D*ES51^UowM$hx81FJE znBAnwC*cDGyE8Ghue8woWe$k#f&-HvUs9jOnHU=+A+g^r_nNS!SKpKA@~Zo9G#Gfq z`UhQq3uTW8ZvmIhjxqIq;&|ooe(h8hk?eR;xcX=o4EY&Kqnj;D*?6q zFY4q>p!GuHZS!k8xMJ@ed8csaYWRVd#Y54amK)mQ>WTJRK|*V65RDReHt@P9ru1oe zo^|Y~^%zSAJy7Kg3I4#@H|lKAzvEYR$iC}d|DGhTYKTLT`#X513(OV3%0K1Sz5B6f zFaQFf7+YVj)orJ#fFUWJ4(BBjb*REYLB)T(k~rJ^Pb)o!OK~8$0LY$8xx*Z$$Sp?h)L5}he^)m?881g@O<^~4bMVxYb+;W_*nukAMu@t@6Gg!S> zE}(pxHW=abq6EqLZA)o&As6brG1w|`y%{H}e;P;D-`{v_Ddq<& z1QXdN2e*t?%oOZsSk|~z<0=MZ6#53+itlC5(8be3N7^VI%KAh5blgoiQma63RL93y z>S2GsQ&3hE*UA~DZvdtLLK9Jw5>a0?()PrF1^ETdzgQ@mj>W#sMN_-WX*MzUzcLVF zYOlyOJyo5UBUIGk6B~ts(-ZaL*gt(AcNhG+a&C6_rss6)O32*hlP8lCZrp7NvEAE8 zbFG^WQ=l#1yLOvDW8D5dTm#y%%h=)4yWFRXu%t{b!5g-lUY&rr!lGSG`Q%TmsgFt; zXOt!fl#Ndv_h>yjKtgl1i3W=9%DKk;quuKa6Yh24)rXJzk_%NkDapj(%pwcdf&(&@ z?aoDKNs5ht%fiiF75asE&WcQC)vIXGC#ijywUWpL*yO-7=iEtd*nXJ%7gpwj2-Slf($#L#e$H z`V4AXvBBm3TGb7yVlFi(*K4OK9Bk$pK2+-L?|sh3V(QbJPCrg7jk<>QS@gE^S(Z|# zFZ5L;svo`OP()a&r!%U`(V3S9p%VBB$0`OwT;E9=^o2Zz&I}<%CQhpg=;T|h_5roJ zSCVr0ExkrM3DLl;o^*+bmX}bNGR@J`io>Vzdattw>Gh?AiB&;^PeGY(WXQ?&^+igc zfhv?VVfI~FaAWOKa#l$yD?n)=I1mbDD6SudAB0j2I>Q@*LM|p3z)sb%Gz*=PhN`cZ z&Q2Cru0Q3u&PTPWO+1`Xl{it@Kn$h{2l>5i(B5rkE58iE_1qWci(asnJ@MUA7A626 zj_hAzu>lH4D%#+)4(~hzIX-tXHV|*8@IZqb^U@#{HMgd6;KgOat4KXe9ll;wuQ*$F zefEV7q0~RZvHnOvt#F8%soHE@UUXWL zBA=RmO+ISl(8Rwf-Gup*nzp!k9%AzeMRMNaPfFf12wp9cc0M(;xakK&Bv? zNgqmR%-TVM7cW}USx`99Q%?GGbSd?wNsniTLAOHsw?Mn&gKg$%&J~ER*=5hW-*VWk z9(946dD2X257&z{RxO{XZkThEjex6hZ|&KAJTAO1er=Rl$1ubd#oPeRrnP=szpVoV z*S2luVY&+vXX5pjn>bn!~0a{ z<}_o)SvSiv%0SS(Q@Z&%GRh)g=|XUxVEen;W?gu0xrRr?RzC{Zl^!m|yhKDVbo(7N zU#25KJg>&JW`so*U^4$hu`{{INBwKR{OK;Qa3xDolca%@W^XoQkHPS*i59W5P=OWbIC=MdkI< zgyx7|i(hVLjs&4IvSlB6HRJFD*-59A159wb-Do0Uo6!A`WSvmxLyd9#Rb|`2j;4?) z3~>sg7P)R7z|hlQZ6hcPXaCvP7E1|Tp1VQXT{t_;mgIlN9sK) zv|ql0-FXG-+J?l}0y+FMp@9Y0R%?-QkthGoOVSzFk2mNWA9VgpyH)-#?IxOP=(4gV z;Nkk*>2)-MS$Wf7uxzp5$e$=IeUw(FcqM-*$Y?2@nSTi4X!m-Q^Nj4mdCZW=SFRDc z!2UhM6je-(9a0wS*Krdm!hij5_xbebz+WUzjxeM6X(<#2$(}?) zh#lf9k{zSU2!YIyN2xe1eH+Tki`3hLfh@+?PicU;?o)$cL&XyBRknV{<>&cD(JK=a zGs$9~RFA8b%b4N{;74pe^vGDUR55+IC2w<=@VHsCR+9$7I9WNf5tb7`Hvnbke@waQ z7L{1_h!15wyU!lW%uT=iyeC{)*yyzflHA|uRUPbf4?zN;+2g{_Ae-y%q=JJ@DEP5k zr=dGRRM(D7+=P&Ni8kZO#Bktp{HA1tF8d-B*=+VAYGAhvyaznk14{t__AMkf+7Qo> zw)~0)Vw#FArc_rF^2vW^D_G@Y2^1L2peR(ATi|UC16|DIDB4kvs zHVEPRFcTz{VKHRjXdp$>7{nOg;Ak)vUa1g+KsbX`A|yb0zndIVmRH6Jems)8g6D@Q zC#h@0#fWjEt7ivW*M@>f3P>Tbbr9(M)8F(%Yy%4zvOQRoU8;xFC8W}C-4QR2o(XmI zG(DfMHXt3S7GiwgpW~5fcaO*-o5lB^iJ4QZ#X_xhX_xp03KIOMC-ubT8EB?hc)YN# zG8JmPk>@1z(Tm0?{P%x@`*uTH!`RFbo}oXnXaW=%S$vG;f6pxujO8HLa)`OiI}lGg z#1W>{Bz?0+?N0@$LeG06Y1pVur=uVsBWokZ`Z<>VT1;3Ae2v`qK(dWr2r|61XJw@c z$G-_0-%zbS;Pd9-hlK#cMK7Ej|1#6qS-@?bqhDSA(mOd!#cPd(UH{YwT3$gwn6ngAu`#D^aUYbiLGx^4z8%O{<<8aU zeVq0$IRX#|zNjxpD~p{TuHb0|%?xiBaHGF<8IeeU@CJAl_$EHl9c@NhM;(QKL6Vw< z$hhlu#%TExssdEK=sjwNS*r_Ol_#;l!@#ep;%^{>V3#>vQ`NRBd6D=g0!^2$e&NMV z)-=Ir;x}m&bbK{k^bdS+F9UE)Zg&68^W15IupvO06(`L%%_AU!|KG!MViQr1#AB@= zzcwuYtrz?+lGop8{ucm;%A`%My1Hb#HB9hE5I%{HkB~`?cWjZJW%NMvpIo3HCpKp* zGMmd#c%!UnA_oDc{Dw~Z@p+!_c3GBQs>6h)e8kDumi z%~)mPp$%DLZrjIDyJ{+YUbWwZH8~1Op@b|&-FS}Ruy9`zEA1*S z)Z2xdgV3o;J5<-e@UviJ3c90^{;S5A@{=b+2$3fOF~50~|4dug0A>$uys9<%`<6G_o1jsK>6}(58 ztwBN$EFreS2xyWJV5gvbpAJV+rRhrfk zsbnC=D*I6u2G=B7V2fUx(J6~fG>+bOezqZ8ZuqCZ8FiS+Q?4J%$}vxyP{|E6*^GKF z*MXBv9&5yZyJ-lVQDnNWKHk#J`fzqVW~)EM{Wrj=oGtpfZ9!cebZmg=TZKXQRY+yp zXlfOgrYgu7pHAT%#Ur!Sq35FPAHf7<8qnOP*pMlif1GmqD;vOCn}RTuU8rfgv6!q3 z-M|+&UoW$LW*$b^X%liP6&Z3B+{KrR$D4Izms^~2D)W!~VOW)G?W$^;*hbJ&wF)u= zO<(4|br|V2T6%PTV4xiAfF23Q4dZ_dW^*uBb%-c>Q2IfzZLw}SFOYVfZT5aeo6s7U zn;>Ph+*pDKXDgIdC40e#cw^~n@(%?aWr|#kZ&H|0xL^#JGFWy(xo8?SjfB@j5D3VX z1MA=`=TeHu*I7~M4)KQvrCNw@*n@)Ryc7%s=(k7fXvNW}06{t2ON)Y06J#01-s`8; zD_%thlZiO;xvyy(`MLrP`V8m#PlkENvh3M6TM{NN|C!G%~O8 zQI?{0!ybnx_NO%ogY^BBc@};~qaUKQmmN<}=)Dq%>hj7fK37^FGbsi5ntwvJ$(nrj zs{tVgBU@VDE2@PutvR5`ntc*JzgTOWx^IZA0dnX2xI_YM?g5{I>N!n{D*QtaSUOceCJ|i+?JdG|kT*t8$w{dBJEVdG`YqM)uA$ zz`usquQvCYiy3T}U#I3FumJbEeC`nGl#cY2#^{BjYH~15OD~9k)#5 zZ=v5bT8;r53zenvHwT^hr)|NDIh86MUT_+uI@dEMijJf zULw7Y3a)YW%|Lz^e39&JtrT1F&Li2$_uBTSNmX9h!NwCe+p~kR} zueg4e;8;PcH9#1KB*Gky+$We4#(NG<%zQsl_@GpB&IHvomGq%OUx7acyYSC2pO5Si z7%>=nWLy;}uGpe7t6QWYNcp6Ji>+;GXbivnP$(4^0urKM^kxkDNX}m$1$Kh{Hj+M; zA3la2UHr>fcG7e`{q%+-E#ieQB$woOZ>L$6F{28WcIKknj-1^z3oL{<|3F*l+-klB z6cf>En^GUT*-P!ZeGF_{%xNVo2&6E_mL6K$%YQFD06GJiMGPM4`3|lp^rJ(+gQOf# z5-hH(+H^&SNgu)-|4mf(xe}pC!x1Hb$_CV+KsxW8=Bv0NL?0w%H) zJOk2+ptcGPSaQ-?ee67_ZkmWt{Re_eMxC|6f0{e6N5KXw^G_%#!*Y7Ta7WGJ(K>>z zedVNl3r{>H69eS1+nEyoX)o^#I;K}TsA4&ifJh0TgkS?*ZLyU{rwI`CJ?Yfo9j~5e z^qy@bE2IZoC9{t)d6ZBkcsx^GBMOXd+idCKF@L*KnlX2qR7&i@vAk8mkG5c-Qu`!l zjFb8L!ySzX<&09qYdKGK8Duyr!&}Z^OU#loxoFuml~5IS6xtQaDsiZsG}2&`G!jH! zLfTJNLfldv>PKntQ?@X{KSxXj8d3)7zI?}?>91rMv;#17^*#Fn5qk~q=B3XA-6Ko>b0+%?oiUDaDfz|c zLuY}M6rk?)f>^{CsZ6TU(K8*rSIdq4P(e5* z&-c!sA0U=*g3iL0DxM9htBSGXQK}@tOm!qA%o0XM$P+KBZO`u8bJMmsggpnve*KjW=TD`n#&9-k)B;cr})& zd6N&6b29AmJrc&jY?FVaMh!}bx4%{<>v(~7m)J?i41zl#V%E%bCMWKA5-#F}?%?y$ zeYa7zL)Kh zO3R_M`4lewJgmptw)NkQa=)A6LsAn(c20%Xx`WH@&+Czwh|d6^+_LA53`kyOFqWfK zW60nXVzO3L=aqHOrr_WMn_fYu|>uwdDHTQd3{M;b1G z6li-AVo)eM$uK;%w7P>ZI2p#K9ED=)P%~VK6j^HDG87ef3EUD0C58kNCPY1uJ0G;w zEuzf4zwQUIMf~v4vF&9|mz(VmHw(zTU?(Rx%$pPd)c=hGRn z{xcKn4dj=AmS&{A$94bjq%|8Y&pua09JZjd)0T8WlwQEs_wd=G$Hx9Ha2^b*|87ai5o z(K@hxIw6w1ctagOs&E~Naqa7WOkNx6i{rq+sAE-LDdJLdH8pQ_WKwR+0#%oil7^FV ziPgW(#Hc+TQlRBZ^|~81e|daP@vZxqE%M~mX%M|XyCTXTgUz4eI*y#|aeDL#`Y_KA zA-|~Rf1AkJ&hKp9&6oA$L&K3BVO6e+ozztQ{QlEb%AsG@^y6KN|L!%%){*n{AQ&vq^vFTdlwm?F0fH#l`Wc|9!(&DG470YbbPJ!yIT zI_Z-p?y!+kM(~hfyGe0lW%T=1d!cJ4eafBD-{1Q-+KrPE5`vF0u3j25xrwB#vTbmuSr?grOCD6@^5soy4^yoX9L@)*mRO&8Q#xgD#Ow$xB}CKb=h`R) z&x?~5(=QNMYfg80>tElv(_Z}(}HK$l{K59++a4n8nq!2Sm0Ef zpI!6mn>)E(%eM_x9aG#3cFv_yG>_RGq5h_QOD{Urzz?V_WPK5ZQZnBTpWmel{B#|g zy3Cf_Rni<-x;xgL3oH5YDo^mun}wQt&vzs^bLbh9`B{>3mGOfSNi)2&K7J~xDhlx5 zHMQhoR8WGfv?adFwv7hScyTZkK!}o@lqB%Xc$vkK=wDNgpb+6u1SBA1Z(;djjBEXe|kvx6Y_@NEtlC1ig!@CX!@(MB7^KGyH;Q=rVDXRYP%e zyWNqt{`>x8A!=d5g-fM7{*W}yX{`DIWB62vGY+&)J)0B*oKxei@iA02sHyeBpGm$CS+FO-gW)F#uf7OIb_~gKa<}vGqbomA zeK;XQWDD(o8g}{H46N_Hz|L5sUoSGoMO7n_+_iQ`MCdC=XQXngxB7h}S0hz8P*Ed+ zm-1ipY1dIls~vn|gvx3(hZ&V%>@xqJ_HqKB< zrl>A;^{KV5`J1b}2u=jV7qp4LsXEv-KJR|@_l#|+)s>EShX)zi{czDg&I9f3Cw%_8 z>FpE+w%?~w++T~m|NM+DEbch5&?77L5C(^$;yCoOI9|w}hw~x6tq5&u{NxOoZP~=u zbKtr+#k|sMK=t|OXhdXG3y%>ib<|_%Zg(}}*J5jO1mX9pJsoysK1>;0(%7dPi#cFu ze24Rgwo7jlFj(nG7P^oHS0#xp{LWGg6HD&uq7JQ39mz;6u)u!cA@$Xv zs^knRtKcwHZu~jQY=zJR?HH5zD~IJ$s{mcrabr}0yaxW-G`Cie+E0<;k;&vLeFqAf zlcDQ zol-B0esABaC4uOugIs}l)S%d=^zy9gs1bZ zy33KCz|z?H&U6z?|1=l4y9;lz1>$FIbxp)z`bN-L(m?1mZRkNp&di&PvS3r;Q>Y8u|UUaFdYH`DyHRD zm!j?rUj(&6VAH5#RKvAbOpFTTzfQ3{Uv z*jZbjp*vFD!?b*X7YRcX@sYk{1pF7nnam59vCQ}9bnRI)k4BfF?`o z!Lx1dedFgLJkYW3dcXf1-bvDQy z{rYNnlascZ48prQv#B%x)0)KfW*zRcIU9Wnhuxd5HzPWr0Y&bvH|?!WxiRjxx2?6v z%*A3|6^qHT@rmcy>jw9Sl_0FGi&l?l(WzuU-3!B<4DLK#D?zZH&id1jNbmk{wzfMv zYER&6fJSRqwPThU5M{N|(wT?d&nye#BCoj9cUrsVdE2@@zUB>8V|@`(ZypXY{NbQ) z+I@OF^eNX;(&_kTLlK&aH0L3nS}z(}@!?eXhHd`V zQ7#+uEyv!H>oul_?O=y%-h6Dr=?7Z7h6YE?ZjqpKVkJTI($!L#0`K>tZMy|<};a?~aJs=78;+VzMadqb!zMyAfKxyv;J zdEuuMFQ_2v?R2pRn9My4CIpMkOu1t{U%#kL|bGw9r9_xP--|pt_>CiYF=!bA z<49%z9_!W}m{ip~`z`X12 zU)x3}W)bKQGrfmt$H2;T6MXnO_yWfy!SbMMQaJ?H+A!47o|3lIG=)~yZR~p1wjH5+ zEyPpdVRCx=u?1x0MGxvw>)1TAZ!ZG0o{?&clX+(M4PzX!iJ4sWVFkBJ#rlob0B_Z$ zI*(5W5iLsbWs8115=hwEinAWyIE!^mD%uyD7Wl9&kWd>@FbxxW7A_EvU=H)RKb@vW zOktS!;YXyJ8C;4oi7QoqdMY1b#MwQZv&(174JI^N>}`06DR;^!3sAnG6skJ3mnA82 zW-1hyC6r7O5*kAGBDBbI+VSDx6{84+M1-i2Up()Lno`DbdJx&RoCB0-N`HbTcdr#^0L zb@R@42&L!8T#<_C&nTZE5qHJ$h{$F~*A_gIvFtmewL0f0714S;=IK)Ak{j7S=cnHh zPcJ;*wb`P5JDHS^zL8Z;e;@H2XnVcaCT*~{KQ;@1^RoJ4i=9ezLQ-+nNPBgDudu;# z9mRcAP0e+EjtQr*Yva!i*44x8hZ~l^HBkkBPnqFSes9<)IbDQ*#M64O*1GTVFu{3o z(|lrbnE6xCG+N^cRy>HPui-(5DQEL5i`9;6;b+%C)U4 z^S1phta&8V*SmBVOtlNXT8}-KNUwR`6a9h0b$Aux9kyBU=eWo$mp*Mxe@puH=ymYH z2u9GqlfK5lt`!W!hA2COuSNC`3FGhvO*brmQvYKo(Vlk~&RLQSfRfZ|lCxNJQIhy~ zb+D;*l{5Q`gK97@^$lPnA6`Z6AO7$xx@l<+7yk>_~@~EhUno;`070L28#1B5)Nxv1V3Eg=$_i!K)L%94f)9?PWXIeP50mj9lE(`_4Y9{h8B85r((y~Jd$YZFA=FHR( zUuFm#B44wtvH}yt(^=UoK9-xl$25X^INc&fp_gGShGEB-SwIcUGIMN*X}x^ zwZUtBFJY&X>dpK5%^>I4q8rLFGAYmty(ALq>`8d~8&mX&>!nIS|Hv_o7h13HO_OpR z?*5a9OLWvrfwbZH>(u4V*AIW^!Wo*MD+dv!S%OLbL%0rTWUZ=3IJRGLo*oBGnT)s?qXx+BjDeIHvXBFlC51`%6uD4 zVGeI_eBEjPQ~Yr9d)9ek&|_fBs_SLR&l+%ciQRvH_!EoVIU;!FB>EQ1`cqxDcacH* z`yIAP{d?OVj}#`;RH%A}@86kOeiKdWRNfazh@&~ks3xdHZ_%qz9jjm@|oL>!In^l^C_=1uGfNE zePoM!7y&Tw(Ab!0IWfOOZSngd;P!0`$7T0Ac?T|P(O(&Xb92HV7(D^?Y(QNVCsFHd>|$B_m(;9U=J!YD{SzZ+~SU&@D$S~A1csTsw)~6 zX1Vzpi|GGn0T$g`HMUGoV{vjN!8`Axihw3x<6jpEb+(Dd7A&w2?eO|A${jJivzgU{ z>=CIGn_$Rtl$L)+su+sQ0N|~;LASc}5M@ZCV>1^wp9Fi7RoGd$jaFSW(Ms}lw#o5= zBztbT&0*cjkr}&zCHunBF`OU~BE&SVEft>)vOz}c4g-0i9`(q_?dO$o?s<2g9Z^s= zpkSNb%N2)uyC6H7mw(5k^Whl#poM3Xuk@ZR>88Op)C?g7=y1p+;9-M?-LA_%=x+=uX zBB^W_hNt@NRn2K-WGQdfPBB%_FR!9Ts^Qc=IqVg+-8WJ_UyN2(f3CL;4X(0}e@S!P zOZKjR#iUix`mfvf!o~KX*g-Wog;Dl&bN0t+I%@|`jxB!-E=MJRBRAf$B|5fWmN4q) zO4@?ezyP95q3wB<1ked@9#`b$II1Oauf&xU3!?0Tc166Nkz;8&Nm|khBlw{KRSx~~ zjBDfC17*E+z0y)@0*69F2d|N06V*h-(}PF+iETI8dGciC%RWxN#fbQbqgKmHW^xa3 zmb$5LIi?6}Ip8isDJWl!2pD5HDUIc~u)`=}B%;qT3A$kX#ZxsgP={+_RghFlWHI`3 zC|_kNAyTkIW024((TL6Z%zZLkACV1C{dOc@ne8!JnHYUoViSq0AdftVg?hOfFfPR` zv>mwl%?J8;t#beaX2-#E7603&9mYBeg5zIJKZl9MKMO%BSaGz>)4$Tn8D19aJhB=9 zdE1#u3To^L{UWa7+aBbipm9Sgdp}WN29r`=66bN5D>&{*O;d#HftCrC1TV>?3Cyrh zb7-%&FaSQVKwLRE2pUBTFj=0XI-DJug~^v>%GF&eZVZRrTWP2I26O~&JoVQ(f}+Fz z!ngcwM~;xlbmU&mrem2)$n&+}+RvywBbEnJp~oA#%6uq8^)Kmy3SA5E;hxIz?Us0z z5*fZD&(-i5w=M9bq>mU%IghWu1?@S{x@4m{2#!>v59@Er?6@yL1hQ>P!EVvYreA4~?c9suNkwDoqO)li;e?a9^4Pdoic zF4vWp2idyT-X_`qbRSr%O%*+PJf^`Y{pz9A^Uve6uEaA7LZ59$Gp|(Ej>p^`8wBW{ zI6P)QR*o<8gjLkpMP@%nKYyfidBiOjZD?VeA8y^V!Xvd8#ivhio!QN(w0xp(DXqQw zAD05pN5R6+_5oF3 zfNp0sqUo7>T+;%cA4sSLPD2D*^IIPw2&VK=|M&XCKXeLUxyCV1nR<52F)kx1@73|g zgcWO>C5$_%yMr>Hqpo6O#sk>*&Fs-*}x5#+x2d zMSaDu>&7YWIRhwAH+6p*Rz30PIW>wLVpg>iRJnJ#>=>QaxjMdC+fQv=sCV`ph~t7! z52{~l=ocr5>0nDWv`woutP&uUWSDAUApGxu|4ETZ4_0F#lU5_maxnyo2O?|H_xg&` zxY5*#FU!R7ZhgWZ)6r%9E-VFKGwGDstz#iVlGf}Fo+yU~b|V4DlQM~W4YU|)=I1EyYdZJxz~Nyi z?J39S@8xD7xe2t}E&X@OzAz>O)+R zszk_85+q z+CL_FG|Xf;h^5lq9Kbc@!V|oM=0t_KoNX7mR|wWczJ{BPHeyz^y!ue?ppB$zC$J@NCo1b#TM82 zD00*r?FH^0!8_BJ75(w;=!d;iN0JBc^|sY2HlL03pL2)8Y17GS^D0hxnjx-dPIzCc zx_Jcf-^Rzczsn3vXLRu5AZ_WE%ZL$H5kB^y1yG7C{+NexI6_9Z={WRHEg~v_9U`pS z@5|T;kv}PxJJv&^Q^D!dceU8o_sr7;d~miBIoz@k(EVpF%K>#Dh>5s`R=WM(5$Za4 zjr@QwxHj~bW$ry;6VL|yMr;w{nP@P7q}P4AtX-`AVK z?pHTgLDdfPv5X@~!<=!oQR=HD#7+|nE&JBR)vj*n#exk3%Z=^?ohiqd%DBDsaBAY} zfflQ9Z}C)M^QiqXFlZ>`#R7Z<`98IcvY*u-kBYj*(pJ52&(u*&`v_(pY+bxPaDsOO z0=wmDnYu=Wqxsh3gLK7E1O_kb}Vl2zv}-ZGS8VjDgSuz=*is#BC#f2GbqqxPyGt!73+Kmxim|`#c8If ztna~F5Kz^2&@H>W^P9V9ITY3j{mMJIda4zB;Ezb z5z8B-#@iiuqjdftxnN_uj=`Q&Mt<6+=`_!b7zJTu$a zp5?V4`?%{Y9Zk(dN=WaM)93_J0IpWydw=cMoZAdHb06J3^ue8&(Jo-u-@jscL`>yl z48lP(_k(|hTGlyu|LV?e3yuFCnEuJPD-u_d@|;Cw7euQ*K&o@N%28hKpxab;$PlzT?;HfdVMira6e~QFDh%0qBHoGoyBb=ROCt{c<1h+7l6Jf*g-Wl zHnF-Xh5YZZK#784V)5@5XxK{rKAx&05uW7@JceSLx`R{$1ig#8CPLu{n_uq12*p#5 z6Ntbj81df{?NJy0()?&3e!eR9^_cOT@eG97>=Sg`xO#ETeg>y7n# zz1k{jR-G#xta^P`x3A1-msE7sQ&JcP26i__7No63$I)_6F&v;cd=?9K1ry zbt#!WwMacv~ooJ%Avc z5ag-1*R9$ni8SZP$)@=-$o*H~Xwm$MK6K^WKpP3+W^K`gR7uf`2@&#d=-?VKW*)ZR z5Xh-O+85n;6MB+AUIg7hU&DRQBv3%`)C%o_{FrBNg9t&}pO?_0m5lg7LM zb24qBN7}a9^od%A`>2eYQW=M2xy+fL{xl%bUjShWz662bO-uW$`hPkww9S z-#MY*q)u0`)3VT${=T7d;>!|G@eyDy4Ja!HW zPUJbocb?%reyt^q-L zc!(QYqx)fVckc1X3&H=npUb}tsVP{?N!*&Uc%Yy|A;Rn3>Vq^VxIDac+w5zqjPz4x zO&T~DkLb&QZZO?#%pE5Lt#sbZ6vB=$$opC2FI4Ykz?oalEG6D0(Y|lbxkjT^#!!iU zL#(tZc#u_mw3Z&@PGinVV!OGm?_U}xWsl!Byf-%K7DWx?D-eGGEYI8kb!yPD^t->r zKY0cTehjMqnV8%ulIKk;2lrUKV8CRqjja0qhJsjuE&kg?*;m5@G!nt`84+=^&d!OH z3>bk(D5jR|vl4_Vtdy(0h9MTO-$2+k)pB*N`}uuM!j?R^rBf%5<(&Q*e=eQ+x?4~F zpP4ffB>l3;T_qm$GMPa^#>2Ms@x}C?!V<5{)r6eFNbnSqfq%`!qQ>i;?`YAO^z!V! ziPmb&O}2_^18UW^=1KltztI(J?$s3jOn8M|exvp0m)EBO^|8@N_jUv7=&JL*iG|gB zd5sy5SfJN2k#c3rl2ZQ4VoAzxCo+pFLV>vqONc30V|A__6Zr?}P zup);O(RzGwDaaXfID!&R!R0lTk5%*aXMVdR-s!=6NcD%xe3~U+t%6 zggR}!OYc-(uHpGYAnqQ;e(m5iu@8b}A&p;yzJ{TN?a8agCMc79FgMx!HvUep?^fCi zIaKY(3-|X@a-z5jDtcb#Fosla!>|f=5fuXk&i_Z$TZTp5Mcu;#(m9lrbVzqA-QC?K z-5^LvcSx6XcbB9njkJJtcZ+nr=YF2+dH-MdGB6kOn{)PFd#$zihM_;e<7CmCW(0j? z=<*HZ>aP_PWTD|u_^7gV+YoeF6bJ!248%Z2%q0&}HUt345DGE2Dl7nm2-I3wIMcD4 zhSM>AU#hn$r|*wTg0T1r?;HGeoh~^1dJP32-{&q)0HiP{u7riyJM*ye8|HmPn@W2T z|Nm>Qz8?NyEHw@(su*RBcXj97<6JSv!b#&qwe903W&(NSqS0YDzSm&Lx)yB9kQDn-4GJ6OXeW(0dH#2P?-XNEU06C~41~}A=6>j4= z+b~AI<^vs73=WhLf{00ayh>IZy^IIHq^L9k{N4*XQ#gF+(*ft~8Izc{Y!Ha91{CcBP&^f=OhxX>LMpM~!VNS=tidbt z+;~-%FmTuP3;>;)R|s&5CHIJUUe$tX$r4VIXzCZD-Dd~khuqK3NoeX#8nt7Cg5iiu zd(Zrl7ujYX$Bz$JIj!+T;bQ!UpH<43cJKh6`tXtLWJ?3J+j+jzB)a*pM{PK;T8f8vNOA0KkFCXedL!^^*;>W_#W#tvykq&h||GPt{xt;ffvPjOa8^A zoN_@DtKWC$hu2oKH;SOmM6C|gAGYQ7FAw{!JlF~?pSc-kCgHwgL5Y+5x&{FG+s%deN zq&5u9K*e~dO&JJm)_0%`|j0A0RQ5IRG zpueIFfI4I8zP3<^wXi*sp&A&p1Qmj$GZCJ86g6FZfCvHvRyW?#D3A^gB8HZrLpV>F zh!ju-fd}A%rW934Xx9Jl!83?y3|biwi1G4_zH@2KzM~+-WQmys$9S}5z6?OMj<06| zMtQ^kYfpnd!#uALDu~g#%SYXl>$ zQNt@$2f4V*rNKy+8By820aW}WA53cVllS@32Ca5fV+Lh$vpZYg)VZ@eHtFI3EBx_9 zDI(@LtN1F{N{zHvATbCm?nvj+RFnM@e~9D8i7KsIHYbVpyQFbo=K0blMyiSmk+p!6 zNC9-2x+7Ui5$2XLl4A=7UElvu^%hanojPJslL{tuPr$_j!|w=^B`sBg+4BtkRd(zX z6a69&{?_eW#7a#Ke1Ir`OZ>_sfhP;YJIwZ}k;_c(I@h8eU?7u@z2LE?K7`4;6uTfH~qm@CnoDp z@=JB&%T0c+gWz5rt|9^djDd`XmH8)5Zt%Zq(J-XuurhUkv3f{@q(?sT^Um88$^~hx z{zLynJcm049o@KRuU(EWX#|1c8vG3=!U!-{vb<2V*(u>i1xpU1G`S@?d^OKiJP3g@ z-Tts76$JyAW_;-QpH|*H@Oj@X*XS?`1K3F!grj`l@OG;3v#sEbFX*98^`D@1w#-Kg0pS3P`E7|XXc=Cs1OU5UQ9#Y2Cb5%C>~N< zT~UKMB-Exy!Wt_%$Us7jO@xSzy&TA&!@b2#aH`}NQ6nM4omF&EeM2HJPI~%pe6RpM8VGXOu zyv!}CLTgVQ7%?Em?u9S+ef}D5%@&D*J^;x*sYKyFTQWatz zfF+OOazR4*Cn?bs%bWUqV&k5hH{M%o$A)bq;xuPcQCVprE2@H|n)g^84OhcS5F;f+ zmH8LNm_5C=;6Fpz4%NVYDe-&N&&XrEgU1hlKj;V(n*q zoV)nfEy`vw%0y3`c2A3S^;yZELNR3v{cXDb+79uAMe(>97_b-=T)vSNu&U^|rmdnX zoBLv3M2MQDZ1>lhg~3G?nH(xoMklg~OF?f+jotZc`eW4@pE&TvNONhcLSYq2S?d3O z@8`-6meS|*W2cCWicf^m_!ChyMgs`}r0B?xbeM#T$Pf%oY7j*=K4|P(@K7g8X_#3; zAPzsNl?J$xwvwn-VF)CkLl_Y#Dxl$W8YKYIn-5KMxms_2obX1gWd9+Zh*ktoAAMxOsW~ z|4e62<0iKu3j6WN+5lz&mho*$)kQ_l6Y`$D!$S+7oamr~`_fy0@kRm!O3JSO+g!@d zBTfyK{68-M^}({l)QSM`+f>Dtx;ft%I21%<&NVcVFan~Wo0-L>!6#?VGg0;?nqPf3 z(vf0rd||N60y*S}-<(i%e+u{-mJf&k|1Dv9P2K+DE?^fl;vWVB{jX5b))_@&&=?eh zIQDrJj&c)lwy7myjWECfCHe;Gky^3QjgoFcJF;QG~QD}}5rmm$G zg28A5?u83GVQ5M36q)78lP8}9 zmUN%!xOe8=h`0j1r@DP3xFA*et;ezPoDUEqy+DQqgfW(K zCL<{aK#<&@fHM&!O#|;w>wnDsI`%xADr`YA`0v>Rq_lN!?JZKF=b(4M+VLP}dKWyP zL;L~+BJT6W9bq`24jn6gW7L!T`@yc=^X)bBfz2wE+0fLBPtUQuq}zAd(aOA-0*!OOg{@ z4(3u!2{(=eE!VNAUA>BqPX?wAt*6O1Hk#(y%)YZLt~3hky7o+Ya`a1E z4r(;-Iah28nXepCq@c@RBOwJ6$PI;P)3wQ`9b=7j+wHF=4H4C1WGTO+oeFe|afo49 z99bBwoDrpWN)0=}|GmH$L=}i?!G7bP1?Zaj<%d0ZWZDonudLSF;mvc<(F3W=3#$Xh4U z*tCd%jnr%_gL8&pI`+GO8;FLocN z_IRNWW6LX%IOiSF?<3=si!0EIdA)BKM3j7*x&d;uuJr3dVOnx;np1=fs9GJE>g}qw2M+ zEV`_dP5`%<)A|)4sk416dfcS5qK9_nDr}o=u1l6vRvW^9?u@eFuUup_-Vc5VOi+Hm zu>=ep{x$$W)jrqnuv`9dsI_{91g=2q>gw-rf;qhUZiA)chi}KgrXxE|^jB#M!*;H; z&+JS7nRjIc)g7z6FK(W_hWD2}C|Q0i>*)$>f915E^fv(E#@$oDr=WV4IYZ;}x9R4M zA>h52%*}IK84_K0W=&2Ns%i0i{yqe5?szAMFq26zY7qr#|M7Y!yh(rA%x(HWfL9}R zA4h$;cK|R0h*2RSS;tr?X@@~+3&2=AH^zR+)?g?7LqiHI@`E94pg^X85GUfo(R#yY zg*`XgD6-5ozf&Tb)M0dDq6!H~ey5my9Swn12oAB;Rb&~LmXPPBxs)r=&pS>}Po`1I zXVU5XTIxU-5(P~IuIDHiAr>1$iLeDQ5@$ZoOijx|CSxiFwv;YvBnE|^P!y&wkBI>Z z10L)pqf;S=&8K9HDue2ki68|QK!EUp%QQ{$Y4V+a?texN07C(gde=Hw+MV5ap0|Xm z4+DAk!9Dh_c$Qrf9Sm$QvRpN4?Y55Se(dRuAH47|-w*8(ef-KvAVh)VO}&FBA;p7U zct61=z?(0V_rkQ5ReYT*`@mY_g14DfOfjaj7w0uiwU07XKqGKguhEoI*jV?2rX5(S zBwF(t@_>c%$|*$MXq8>@Cqn8eh_MNCZ#83XI8bp-DhgonXENVEwj=x`d|s8rp5+fF`elMaON(_cie6ID zz%hf52nVCech>#D^A&a_ z1j0r%g^#^}b5PK6HLINd_HkTj>uDJtae4G8nhYbYHcAuNT)MAPs-iRp?jBaYlrVN5 zG3)zQn9P-QBKI_=Rda!zCQT`|K2*NjSZ7u<0=(PYXE`%qn1W-j2&<4`U1v9+e|ODI z^mcf0HIS=|Iye7VIRGi9!rubJcnhFB{)cFhRrfLRd{;k;i+;f_d}Flj|4Q}*CyfkY zIvY?4aq{lqG5zN5!gpAEo!h_z95Y~ib?BxE@Hd06W&9*k-)KAt>HW*2$Od+oM^lB1 zVIRAs1955lKi5e?fwHX9LmfAeNvcrLk33w?h zg1>y-j%Z!yyb=GCAS}efOFAiuQx#H*UKBE;BLH3|S=#g!`^Y+p>{7lbg58_%0hi*R z2CR-?9!2@F&J?!a3q9@Pj{}1?x44oQE}Wxvbjgseu+!xX2nwA}(a|3)ZHazvZQ$k2 zA0l^3rJZq1MDC?S88XhhB2`=%oSAxUBxCV9j=%>U=zt}^(ghHsTby?p7~H7Aeu!Tw z+x}$y_tGrW+J0>Rc_jUlwk4e-)>SN?yRi|L-|SZBKUonvtK*gcjJbrZZlwl{cfx(3-#jQw0UkbGdSb>qmSiIdwJCFugIR9Y>38t zpuqe3ts@Jl#Frmz^>_#8thh;DT!d{T96v1xfea2>;m|)R9>BOf3wic4%rtXvJdFzO z+S=aDQtHC#4>Y~?z5`Z2u5Y(iGwm{h9OmYZqtf-@tjqe3NFjM`mVe$O$;=u)Oj5qm zmsSA{rf+lqE=ZNTmR8n2e*W$eE@iR({oB8?(&{~9Bq)N$(GNtHMzE=tXin0FJA@8b zUF}ZJd_Jemt)zYL(qg>YeKee10QCe+71E9We#ezBE;i5iBj6v2mHVC7#2&IiXoxMp zAx!Tr&7cPN77nn#h!C{J)4E$1eC5R~Y-^*Ywj7C|_J*&Di9M3Ln3dA7#f1WAi?13 zrhX#tqcMnu1)w$nwyLl!F8c!HNYEEP{`gYwxvHu)ySMssVx)9t^1H`pOGOVt@;>m zd9RJS_H(ZZ>x7$rczvXM{L`v?;^tG%N2FfGgv`sAOeY4)+xW$1p5{xf7imr(t4ID? z=Nv4^xsu_0KN)^(O*Qdsnbeiw71djUjCb78$yb#zIOgwfhrlK&2_1%^)0-K{kH?Iv z<|teJY?-SO1WeU$KQ`A=Vw+`}a4OrTr*CXBFDs?UR9k*8-^fZSSjV{}e@lL|I!@>( z@q8E7JC;=*0vcYQ4R!6{ZCGf;5kn1-Xj{DodXj!3aXHZvzyI!2THjj>Cr?w(7>~&? ze(|eZvYZ_KiYU^XUHqFwpJavQDaNKljudZ9{;lnPoIEbtVtAQs9)i{rP} zns(d4canGig)_D^b@9&GQ3u}Y6Pp#%z`GRW&sWuKtbC(krUqUck^{?1X`Pok%K;b; z8xY9l+^tZ?if2h0+;axbE3mG2$ZP6dXsgAcLF~VrhhRI~_PA%3#HFTD?{k|8FGu`C zE1}%A+xSM;Z?l}S+<1x5pkD!R{tS9nE0R9=xlbrd^Dq(m*4FzpS3U)owjtBzT_e9gzJgnuq&6AsU2qf+KGvM z8^`!X;E}hz`R=Z)GQnuofc>cUldIg?jr0Db`o?teuAP#WDRqORobp=fK}qR~I;khw z!^6-n-p?A)_nubltFm(AJgE{eVU*(kx7h;x5~>jkIof_&YwRrxS27dFNr$j?CGFs< z<;&l3tQbhr=Yv&0|C6F_D*EWGt&r0`r&OJu-t>EgC;#x=U_Ka-hn%x_g}HN$Q`HIi3+B zB>scD*E?z5`aanOHA!TwS?&Z;NDNPO2s{o|rumyfS+*5M^^Xc0?utPKk^2lqZwRFF z`H-`=Yz)KHq)JZ+k6BFC9Tue(ZI?U!Jna%cDwED_L>`__6H$lAKJ#y zFIH}jJB#-<@MO3Pw$c|n{Q<&LHy|?$-6NXo;AKAtban5^@kM7Vt=g>q}Wt9HrDl-Nk92?Sy_K{-1=M*)^D<`ERwo&N%j zZ!N!1lM$2jZ4s3)HG&&|bgoxLQlC2z@BVTmI6tu|%zBoNxU(1af9w-h;xVIE^Z)u3 z^~y3@h&fU1-Y0e?mvw(a(iHF*v?b0t^^YiSD~c^)4hputRE z3(dQf6HiM5hl4z<*D zh^GY7nD#@-#vg3`XdM5k4v0~@$JZK|A|G!>?-GZ15AhKnL7kOLU;L^S;@XjPCgQ2LxW=gbAW1$iLk*PB5e)i$C;o} z7IPWGhhS;)k&s8wioi*`tA<0Td2su&6hr9Z_A6>4~;pTflmIM-kss?s(jFR=^#3B$+C;px<&l`CEJ8U z;CEhqKt!wDW5ka(mqDHOmqs))wd}2fN8PaQiRodbNSDoGd4+}V<;+bxXK0R|&_)PcfE(BLaD=drM8YIQHKQ6zQBdaKHvB)Da2? z;q!UxQns>a-GvS-}1jzG&Bb7JHc%^FHM{m@{3u zMGx~<2tDgzEw0bm3kiY?>z{@GHADY=b@(jQa{1w@`>SpjpXMF2%4Zy3sHc3?ED zCu#W#<*PIVvJ>-xfz}=tr z_(US5!Vu&X9057XWOQvwBu$w*Ixr_`l8Z3$gF#Y028n8QAMCT;PL(=@T=>@-VXC>@3dhYhveBbR>imgI5_Hd96PV9C<_~_-XgKF>k z!M{}~duA`=hge=TR`!>QB4lnnsETx3UKWWKiMe%_WF89k3bs;yTs>}p%s!HGri!#+ zb(FJ(Cy#%as5(~)V#eo%l|DMzA$ZHhsHLOw1V3GQKjNEJn_u6hYHrQ8z|T{urKvs2%T2rIuvB|yLG{%u z{F`@!oa+8Z{Fe!e@`&ib_cTK~?Hd*IGdwh@mL~C}A$ht}o$!onjx(h>`Gu;qT(<7% zN@BaLtWrgr;S>a2;|MVU?Ctj)#I3TO2%Zz zZ@!h71Ct!UEMyI~C6mhH`}tCE1#bhQOl0nMb{i~rHCmT%Y}(Hn(V~J!c2Y;|szIz7 zMP-MBF+ckl|N6L3o?SDbI4zT-C7@|0l|;33=1*dONj~%PkYl%Xx2l|VpkJp`9E{ae zFDu_X+@hYiM|Tp3*98cLHO;bi++*H#-;GxJbCj+|G9fET`|H|4cCbmODR@dZO6F46 z=Wz&nXqB!~gSry3M@=|;R2AhBzy1w_8N>_p3x{R<>{D9uG)i(MlpLIN#3)Ggw^QD1 zwL8tMk40@e#X9ZUv$!%#^^@9SFZfyM8ZZ)csB?eKnC2+U8{!gVDx^=1b5-H8IkrF? z{0>7ZiWMWZxF&aQn$1-hskG2TRf#0vF!*j&Nsd0YWow13#P#*i`fCi)z^rLlM6c

M%fh(t>K7=iwmHchoBTwSP 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%0A8Rf?OE<`0J56ZS*1=(( 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�MqSUe4&dVdRz-nEG?j%%x3=D+ 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 z zXKifY5FWK=^X+-3V1vzWsS#6q^0VDP*rGeU5!{pu|%3VJ#t9;O*cOVL*8w|A+f~ zu88npjrE~JoqhE0I>~ilR?{O`hu}^qZjtfV&Hh?Rtbn}Px4$lOAKi)j*p2OPLIr9l zwhO0!%mkJyHSNTW{Qn{>pZG}5Yg*nV2)ZXugKmNxqno*fz|IO{&=KB6ti4=R;2EL@EG-innzI~VFE zUpya9HX1BK;yp9ejWrcIV7FDqpnrz4%mFC;#D6Lwo-^NUi zt@d)0U?$3GBG(1VBzZfmp0ck`pSM|>lAuQ7ei1oW;q!08_)X+rC;W@D2mh!zuQ92r z^SV0?M9gA6=U^5Q_K)zTn+=lqD3T@*ogmIGiQ#Xv;e1YrvkkEZG67a6pIJ{~#<6MP zbwLpk=S3|7XQUrZ=wD>iNs*su@!lgqVx~@)JD+6j$J4K}rhe=;H%&|eLi7wl&Qv7w ztv)iXe|)ayOT)Jm7uUVth~2R2E$SFQNiJqC;01m*nJ+>8Xk>YT6(#3Jf+YMe5#YwE zH%3*prGKkAqOB+=KRS&rAKGu!S;S13nk|9>@RV{#cc6ONjg-5EdCrYYkV?K`j1=rZ z)O=_dUHzi49v8UbP=9~vU&cpl%VDP1dx+mxlb5swe%X~ESP&KxJ~C#_lks#ynr@TB z$j$I7y(_=_Fx34T#>hhoHRLsuFKzCyZVN6%7iIbQ$k)*k*YgV(^ABmvfkyM$LbuI# zkv^0!u?F6q&c>7SuRR|k3jzM`Pn)C(CBVkcK%`h>rlkD^5=5U5sLnM8O@B&SC|A+x zO1)w1#!d&f=2qVFv4jKh49Aw|voZ-1H_+i%spdW;mAWFy68`H3-@5O|c8!(34kK26 z8Sgii%N%a&J*Y)~c(jq@Kf!)WUY9iVrRA4?mre@m>vKN5hhi6n!_C9os6b$Nq&|uf zo+L4L#`Is7Xl_X?abbjT=&uz2Vwds@1E`#Hotk`{f}JK_B%x0DZu!_c?sN+$i zKO2pYOLBJ+QNAf(4&6 z`hW|wF$C<*FYB&n`B~dKcYb;}Md_|@(U+|_xn`LJ*=Dg`hH1UeQMYGd)JgZ-mI71o z`;MDezBzI|1q8v&nvjmoZFJqqW2QbSc<0b z_1EtcA$j4y!YSD@ovu1?^~YS*I)_J6U`a_059{pn1$6{b8fa z_A5hE+ruYR{)XKb8&ev6*uZU?-eoGEIe%%Ckfa6Pw}@90@`(<^c~F><>37YJM$Y!P zvk|l0np{TrkrAjvy`K+@?5#ge$x~(r@v@79Flk|wHXNy+oi6S^w0_O-nvdd= z3rkhoU;jqU^0}`sEL{nYH!ITN)gq4=22pyGYT-q z<5CYZzSX_fr~TG;CQbsP2OopW1QbMnLH!BWpsE{Y`!b$pI!1=MPs(I&*L7H$^!TP73K;_0%UlZC3t$bvX7R}+&t)nowqM6pno zzb)tR_i}z}?VPLHwjO|IHBHZ6?eySJwqNV@!l|}Prz^AgP8*avE1HxXFXvjVw?Ngz zl+&?6#k3+(D!qS_{FoW-maf{~Jv`dck>qp3()&I&LhZjHQTHXHC2Gqb^`ZR5wA&7?86DBv|ap7|oVE;I2zN=b)&9q1-P33iV zOfCU@m-1$efklHNR|l$5gL2#2p4VNd8(-25WPfgQlJZ~j+uVi}DmGuIu}4tLw;&4d zm;RP22FThg$YV!+lD_a(t(NAl+0?(t=|hKNy&8t|LHgf4`3y$<;e<G#^LoF387$aeXE}`yt1SwN1$8?jWYZwSZaA3$GVjYe znk^P=W-B{DEMwW{I{38IWe=Ee*kS}|?zgRfIEgp#GO(ULqb5GKV;D@4OIzRF40*d> zw!0uVaG7vx#a}Tgq6LSmrGWTB)Q*)f6l6662q<-c5-b4t&!le+5QFi3OG^2#+d2bj zrPeF>k6!i~!K%^J`K)bzUkQZejUf`g40JXCOGyR`!z99Qzsi&QWAciPw@fOgkU7Br z>r;;+E>0rOh4qp)jwYrddFG(P5#J0|hOn4_HAuzZ6yhaOR-I9%f)W70?b>f)>P&Z? zS05kGtkUrHcsp-|QV9b@0s*2_zHctF^cr*@z`*z#asQc}!H^+zhyaYRq})q1wEyD* zv@J;r(?TFP(gpyZ)U%G^w_b~XnTjpJTYe0}jPn{y|0K`y` zDhLFqRNQKmM>elLv~lU76^;m-B?u6~&E_boMTDGnRn2wWSA&&2MMx(A2h~)PF{z_7 zzW&IuP~co$8+FCD6B~AIj@MEGz=hL_@CY6Zd%4gRXjXIwF`TGwS-W!Y)@}CLqSRNn zZ2yik-R9`nE;}O9S?_K5X2ZH^<7OsD zq}BTBORCD>zx}y*XWZhi-VZf5jJkUSC$6tIY+A8>WxIBrAG_v0RoW`+s-JuIL2$!^ zkNqVfCT-oe?-sxH)~M^pKYL)IscOWcC1;Cn`P)sUb?0oVUQ!Vt3Pz`qcfS4m!tDz| z(-l)dSY*d$#zn;4JN@^$S>2){5&$TXoFYd=LQn`01Q1&${e%RoYcOEY-J$c>8oBQ?{EK!$0KvEEZvc+l{kx+SYHoujB&CeiKfy+-pTE0g# zxj`xI-lKbBYJwxqrrWHF+N!=;J!kd3%BDmJBnomWz_d^RD&*IEn}qB* zgi=IAf=I|u`r-hsw&Jb)`%sBQFiJIv8iL&hHk;HsCv~{4|8M3Enm%Xfv>pi^vs`J< z-v4Z(Pd!^$kbhuf?T+ux)}6AaMhzc0bk3yfI>fd~b|(WWl2QxNA|L<+5kd$HjZH^3 zeXwI$ip$lfO)h|xglQ%LOB$L*(Ui>8nNd`H^kBiRXd}SR4Ono{&_!|D?@t*(^e9^n`QaQMn^Jw$I9MEU1WURue3Um3k@(B@;6; zVpP`9ISJ$X#SW;eDtmd=OOugqYagFn|cjcnbr`~u2(Lf*=2tw-A)c^YEBO~WrlMcP{iyk*Cl7oLCS$w&TL;61nI`z=zl$7ZJPEzb8f zHRu7)H=DoeI-z^5(y(;H=Zn5sy1a6~ZU*-r+SVK!h6aHhZJ&&?h8+suR<8;fR0!O|6!gbRf*(Xy%#;1akHNQjgO zKouZFw$$qi6N*jMPBa`Y@)o@H(2JcCJC|Lk{CL~K)OIPzKp+Q1N+?Eju>sD#{l@Bd>iAg=;8O6bOKf{+i4279>hx zniNQ5P3@iy8|vz6r(Ab!bYeVGhAoeM5Pn>R|D(0pul@~cyM0ZBcRC*LV^Ce2SpGB0w-KBGf2bR4(%yAc`{nMKl;mu9W#3a zaTq`d{fPqq(pyO`UgcVA@mBr~1b_rdK(q|;F-e&TXh~$06Dk3%rr;MJEShuQe3iJ{ zW_R+%1ecYr^2U4pJY*BjF>f+WMlv@fV3Q~&9&;?L&p}FFGuy{w&CS*abakq%>q4ijJ*9SQr`+R?Vr|{P2 z*B1qCR?7{lFhy0>g|d>esD$Xuj_tLu)|MqlLA0wG4>TVd8`E;zp7E8L7_>=i!P1ZYPTQ!_zll#YJiy-8yoF#HV1=$|KhE|V}^FhZnyr_&MBj(bnDV<*S`E- zu4Mn|x~kIJyY9WWxw7orZ@vv0nAsuoj%#l9d8^9JT5psBHZ!Oh+-|wJ(b3)JmTC9Y z6xDluK~J>T@8Hadgs3`Ty$o$Wu`mC~u~WxO2KN}igig^{04{Ei?{iA)m8 z852wzf-q?@8MM$Ys6qi8p&dsy9L(Qmx7Pk zarZsRph5(!7eG%2#3Yj@-g z9&b4#d>}$RxU6t}tt%K2L!zkq{=19!?kPNSu5ioFP4&%9`zrR=)}Qa!ZOE8`<45)y zwB_*j;XOwmswh}?e5C}doCGV-d-%kzoUHCg$|?(v9OOI{p-K!kdd`-0ZPTIem@cpF zT9FW&b@%k&JB8ii7AHuANJH1b4LkddAB>y>3ea_@!b}o6bb9~3!Yxj};dfF9h^$cZ zH64Z>U$%E?<+l9hL$+`rluVf^7)5Rn8!DDY`iz-8bL^OIZM&U2d@@ms+qiD~h_U18 zk)`{Km(~jlq)-FW%^l|t9DDCTRr@>tnvxTfpTA}I_N`im*2qItB?{t$ci;cqeSbRT zuGz5jGe?}=+iYsl7#UJE>1ejG$0yx2zUS!OpRX@CuzTRdv7c{V{K4+e`?c*HZ$$bH zc<_OzBkgVwQlThJ%Rw|WB>+J}F89m?2uoUi!(UQ$J~yt5U-|+Vw1M4as0-eBHa8{x z=Id_y)7uZHWVd_b(zcz!3yt$(KD#sePHj2WuL9OYx)f_Z8CH7Mm_)G%cT`% z*9@Jl#<|Z1PMxz#i%L!eNO;}pt)41;tvQi4nFi>VCcc#wqtt zZa0!jEM}VS11Z0BvOW&6u<#MB2g(v!NFpTqK=AS=@D5O?oLf*!RqG9 z*mTY7YW9WvudaV<ozQ3K6uQy zHrY8sr9vW+O#Xwl!exHVZ%HdxEI-&CN+CE<(vnFcq-84R@wy{^@V~YFEeoa7;qEgm zk7x`9q5vi+%3pJHyk(e^62YXXE3YWcFPzYK*x0^f09B!&#dS(9=AB(S-vz)A)3L4M z@mBsnAQ1#0AZ>9NR#6HeEi>5cdHjakX5V^G-(f>*rSH?-%fH<5={aAaov2WXzq{c+ z366F-U6QktQ=;R(-n#1JlZQf@@9gQX)|7vDr~ig8w|`mVt4>HuK^6jG>0#s1w;%HR z;GU`XY+Ju!*2L*HySnV%H$t_IQLeTRKL4VU5T&>>cI?^{^foaYSDC7E&K02>O?$uJ zSQ;vyIdKN%075ogxZov?T~aenpGrR#h&ktIa3D*Ib+_-@Cf4p=wR>k!(L-Uw9vvY( zx=Sj|WR7ZNL8hm9-v9U$PObWeTH&{Now4cM9@F$iphDxFW;pDx)h%x*IwR5d(CQ%ajof+yVQhsb2th^UN3 zE8jm+QPq!S);OE@hfh>u>DS*E_si`0>iusgsxFi&NTFG#3K9&-iAo5fxY$UOL<$g` zTFrXXj>Fs2bJI&}OWxh^PE)1lnqE^Q6nVq7bHB)6v$cG`+jGLxSlvIm13g(YZrs>} zthl!pE*(5}^iwat)geA+{cU%f7B_N`ZqQzy!5Ed1LajI*E1wKGy&9c=QksSsO8!0u*6k(M) zf8AXnDWoI|O*C?GT%qKdS@CV~C4z8S!Oad&Q|m7kZNSdU97IR{~Z zl!%L#Ez%wSS2w)W?DRL$W=Tm-WVdH$KQ}NnFVeJWl1V90AwN3Ne>Dg7rAG!*3N*P4 zQDN@cvGto3tN!-V>r8V9PC_V6V%j9A#C6FZO2E^}^k}AuK3kuZK5yRiRAySIdp~%xsCwU| zys_`DSJh$p#iX2s4F5`j~&-z=;~uD!x8AJ0?k8w5sti0{XTo>)lWbC=!3PN zX4Jt|Gj5r9-JMCXDo|-k`QCzenBlwm?)#1%KXbIGu-+MPLHI=e-sFg+Bv(3EDhqmyn~S!6*1RliSA|b?3U%y&ywwN4;Z6V|bxxQOb;scA>%RZKQ(TYs@omdX zN{ zAUfceenkgOiT}&wCvF`wm!OSsLuba;eLE-gAL}uRohh1VN!kWMqz+aXf|d1U%Qr5K zOHO#@(^rBHKkDIVzxv9f3)0$m8Z>{L5gU$Z^rdrD2m_vwg;L}6PeO40)lT!#QLeuTTvWMoM z{mw^&3?&PpLNtRSqKW}>OaGhxGV4zuWRvB2bito?oZ8(!v)$0_L6P8`*k@eFxHgol zh;|FaiTa}T1zT?&H`@jZLB)&yr`~#O#nBZ;q@bql+M%;2^_|!|t(T449K?wN0YOmU zt-bMokN@rNI9~R&p%n9vqz9pHc*?F!UQCafY2XA|h6ui8pC>RqiK4+tKAbBlQ}GJWKnTZHY(@0 z>^f(|b15X!ot$XIbdBv`ue6A1oG#ekc5t`9|K^2egwv(xXeh9A+sZgY1_)_X!6j|+ zhW*6y9cck-xf+W!fA;uX&zXQXR>sG)&vo~lfA8o>1H^YWsC<4#b_dQ*?} z8402!1)7OcHPzK#3^2aOl+yFMV-#5u-v4L4;`!HwSf}*}HA; z2c|vRvqLWzaWa!BlHm_IZbDvO1Y7wZ`I(Il0pYTHSIaj9P!haUWHKT#%AGKB%&4!H zESf#<1|lRVKd7g#>@*Dgrxm#b&OuoF^7rKS?4d=tfDoV*kuU%b0EiNPG{kj9zVcT7 zf5T5Ja&oCf(jlw;pKpKcF1T&w(QlU?`Fh*gU4+VotKPeD@HJ6(yR@j3_|tn#d8Hof z7q3ZDUaF~u?o6D^E=5GpM0H7@v~LrBnzNpv=sku;b9iQ(@h1x$c>Mrw;1+Q#&4B z_@H7JlG)pn^y_+$ZKS4;hEDp=Z8)<-^V=qL8k|Anj+Gxf94^*nfOf#30y+(yEI*Ov zjA)Jm;k50ym64|MPPLl1m}U3qd%%0a&vbg>cqcnQRhby;j0x2Qdv@!;DSvz1#P0KN zcyv&7ZiF6*Tm{s(=dXYKnTP8)D*hxEQLB19Qesst8@! zP*EU>@H4bYrk1lNHQYOI*zU4@nx&o2FMMIe;eL~cesy6(R3I`U#>Sk67eijV1VSAF ztUXiZl&C~P$N@lvi^wv6$=;?DWd{n&Jr$oF{3gL3yR&qcpa~zZdv|!>t^ldR6ih>u z5~OKJYsPP`)quvv#3_XK$?TaLjO1sV3N~!(?Z}K!wEjbSR@sdu+m=KRj<>*IvDS{@OR*{j5WqcEAGVw`0z2m$-iFm-l`{-&PX1XY`V^bOG{)8x44uf+L=6W!flPZ|Bs(OzU$mR5wyG9 zu6ZM`ySdl38Hw38u7GY?DhU%IK@Y2z$JSWaT#6P%`&F$PLJ^wkatulz94(_GAVQT2 zB3`sMywpRW@GI9H{-^l4%kh84fBD>G*X}*me6_N<+3R+>0OaKl`=1xIR}lZT!z}@X z40rf;zQ!ZLJA_`=fb6U`Ac z7IXqa0;NCsr7H^rKoB4$Z~!1cs9*pfi3spO7(-sQkvjvS3*qR5NFp3#hm55F9DxZS zf&$fA`$?_*2e{O_LI4FI;PV$9DSYCd$Il-;+-K5Nh>Te%sZk%OE2%y~xfyBN?;ZC$ z3}dOUrb6}AJ3|@OkvB}edvLcw+0kh(m#sEfKlLxSL`NpyG-S@8*p8jDvX&fKbMin< zUDzKYLfRC&-=1kH-gEwj?u12HT=EoK>XQ%sHOY*xmU<3r*i*P+=c-k{+L|Ks*qFZ4 zuDWf;<|Q9(KeRhgR=;4u>x)l??e#3FV@G$KYv1>q6sIt>Kv>eO)Q;V9GY3YbE?>JU zHLm@f5mV;0A5ye_@7UixwqpI7{bfgI&z_srq1UA0*QX^V>9TqK`bEo3&l7h)eyI3x zowv;Jc}FMozw^e2Hy=Clz;!ogBu9L)|Fcz|-BO83N7wMUUi*sk$B&sl_^R<+p4j6y z%nWw|NAH@`JG}`k&=i0;O&6xkk4{a~C5a5v1Rv@R;e;%$$}LQ4BGq*pee}~OJPlQb zW(dM78ydHs*|YcTnP$7EF;p)JC`iCEh%^BM5q7P%vc@p{tG28V;qdW82S)b2J|-rm z%-`_swy$GUo8dI;-BM8_=T4gSPT`mJ;qWcDUGwIV6?NP8+%)9+_n&*!sBL=Z(ZBO3 ztsxkSk4rdy{^Z&%U&JwIWMo{o%v{s%R8=LW%=PlDC-xrNd@O(eS8p#EGkDP2Z@&%4 zb2A!|fV4m=wr1UU@$(n=o;a9b&lul-^tfS@yQg-D1{A_1h{!23iAVL7`74`=Y1srC z=xWBqMjHf3bepVM!>*k-e0BszN)!St%d+g6?P9DO00L>v0QxuiC6?nq1_`lDlTmj6 zBlACc@4XqbuS;^cE|#ZPXus^I@{<2L;~))d`Qk5T&z=KFfs!A`{NR;xeBG~2iKq5$`^-OQ&KY#>KB_9X;yrK zmXwj0y!ZI73VE(VR!w^kTN1dL`?5_ZPBXj z`TMpev`v~b`nM0f`sR-t)?ni~r=SK5na1G^f>k!55QEF-r9t(t(OS2u71h z6Ey*rQe)9r5>SO{`AuJ$BW#9Mof2>;xUVF?sG+jf5qNmjE8pJVD^b-@s7)dLs}0K{ zP|Th)R(`C!)ibtdR<#w12&vCM|L%q@-#wSzedGEi zFD`kwT;*d$hp39s6AwSFGCMIt2TtyN`Y(@G2ZAIcBClJoZjtGuCQk3wWfmL96{77sg zKp@DLD=-4oR8$>5ba>d8w!0)$D4h?3xy+HPp&7l#x80+32Tff9rO?)L?b95_63=osd3oM|ln-J7?a^qujl zaIUgsZ2R%I552WV+wKFq53H-Jig(4gi_ZyojQGgd6>F9pJ$u*}Wo{_najLHHZ`VES z)Lh%o9eQ#5!je#xp>j3E+-K3=WSc$n#!=H|F4?nML=h7$p@}n1HRnstB}6(-oZ1_7 z>CGNM8`=!X!*YDTiNBpTSB6DXS#?lje|zxxv0a9&{d7g2e*NCvvGic`X-3QllioaW zp5`ZTD)`6?Z&F9Z*I%#g(W`Igo;?wj%!IW5-3AQlGO&Mc_qe2JUHBWCYizOZqt(?k zBG$=WnKCgV9C@PlOnSSvZss_!eaE}Y-#F{L06}~6;riyYr3wLo%HG0#M}21kk*0-s z^2pJu(z79-02>QCjTi3d)r9_}#_(PiS@foYhTn!B8k*=iG+GAs9*$ zw2aJ{wC83&KDpcI1c#e}kf0;6PzsbtBt^icVC~&++;+6?K#}K+K*bq~${?|B5-fB4H={w@FjAOJ~3K~%_oaE}+V zV{Vs&2M_ptzSOi-$vIxiVg2C;uONQtj!P*7x!muUa{GqO8R=PVvpXR{4j>5uBtOag zXg#u9x$;4j6o3js1O;F^hz7%7Z~2~j|GBkWzK)BE>fWXs18P~E5F(_+EA13-5$Ymh zOA$mQLqR}-)MOC-#TQQPJG9McAb-B~>57M0lPOaB9rEk{IP=kKQ@Y}|99TVnZ4)A@^k?s5UW+!Hj>osWe z=UYR=R3~5QwowNJUwH^!viP(^jp|c0qOsB;7dhy75D2&YOLwMW_Ul zro~iOlv{?-HNz8b=p5Omte~th9EMa)dPJHPJOA#dCJde)7nRYg&p?~QmA`+_lo691 z1{*(WW_&{G3m?AVjh7sBtPvwJ`<~lYn3p%cYri3%FIk+`B`2qQmoViPkqR(HI*3pi zvx-jVf3@!O7e08SxVZlDJD z-CMUe#_1L{C-oY}vTb{-i=wqitkSD1s-hzzt{pq8Tbqtm1*aX2BGAC7YIBA(EDqaj zYIByW$t}VVa@mT+PGzPWw;VkV&8cFlkDW|%(%3Ss0_OngXo}K<48gj{6v>vIqZ(S zyg}LBd+L;>M5cL5D%^+xVVKmi1h-LHRdpdA-2FyW2uPSZ^Xe}beWD_E@7MR@a1=^}E46VfTXG6PTBZpS6vjgSz`?zH zAAjl@2`D&6m0pZ7Y^9Z76%x?|1OOF)a^jTsq=K@V^#^v52o~@+1oR6g_cIwGq?ACU z6ha^&SCp3ek}(V=OoEgIL6HCu79mQB)P+@zR}Gvrr2SA$*cE|b0W!Q4*CIJ0Z9Vf_ z`A>kCFOL!=A_oE-#*7*(ObZnT7Xo78`_1>ucHzxj0iioM4R ze?RAUW4h+8e*J@i!-ikotK+JZD@$un8xcW^$rsnX-7bE+lSG+yb#VczR4K3j?YX@E zBMcxYxhtqQ7o0V?hZLG|DOweV>LZ#~9$6i&+A=VsIV2{I7}C72Y*6PRLC(WeTAb&N z9F?_k@rvb(uD|y79Xofg`{dJ`u9^Gj;kPYSiE`OHN2l#Qx^c{(uU-Dmg1ixVX+1jn zx$mR3i;tc;Ic>m%p}7O4G*NoKUAJ=E!R^z=T|H*>HMtqt(I>m+*{7vtXt~_PqsXhJ14A^-#KU%XLE!>AO4og6|Iuz~Jf~ZSDrD*{nXwkI9 zjI_j*LwgVQZ`0-K${eo zW=XmB;Fgyby*RF2r?H)KKY#eOPqwYhqV8?)e)_=N>xPe*G5M**wNc^c*L|?3aLcq# zV+f$6PLPxe00BY;ftD(XM9oI*#56lAwihNp+88nqcb#2hl|J+Jvkg$~3L0@NvWl8- zu36wnjsNoCnksMQ`MRoW2hB`ONi8TUvO67>ym3q89&Z#nea??=eait*hxWb+UF@ba zNV%lIn4<6&t+)h%$Orqyzy!%JaI?XIEQkm5Ryog zlIbE0RB&bruq-fyFyDObwXr=WynO#F3?d9eN{&nckRT{Q00z=(b?R;9KLlPLQbLdf z!T|dY>>oR9G^mV9h!&2laPs|AA0D04xA0KD1aE-*?_PMjOJVKZ$rExrJ$}o*f1LmK z%-l{s3@hBlO^4tiMmgHl)3v2;Ql>O}bvxKPxU>$jK4|*>yY0;l4VCrh4;F2&Oa@nq z-RU*mPFI6!mND;D*I$)j#h$75-ZT55jrL^=-+$@G-~BQFgz`gh@*<7HytfK z8AFnv`QWYPCq6d|O_0n`*aLr@|JZHMHCEN@{!sh$Ho%SNSH8b;{a2%hj@o@TzwqRN zszZgbQIQw?HRH$3x&60y*wJYTqonxsEBF0r;m*&ton1Gj)70y8XASQ?$RwVPs}{fh z+_PV=UPKAl4C;+m>zR!9F}xtCgVtC+-Jr}8C->|d-lpHuuXirZ-)6a}(=zgxta$L% zm#-GL?KpXO<>pm6xjjm1Y&~;2$F*rwS8{q+et{aJSQ5ac%CJcUtEs50t0;}*j#Zz1 z#AcTlV6rlDis<=K!zG&A|(7q(dnwljQCAY?p(h1!(i!!NX7Nsi7(Ez@!qla{s>F6 zbj;Ke(o-{rJUs*Tu%$>#8cc#6o#V5H3~t}g2KGA16l7koERY1as*$iX1t7PCLMa7` z0w`R3q%SX;Z(ONG+W#iMymI`f$jhQ|dGYVAxt$T^#|swByZL4$ME=MT?aJcfeFuWZ zRIn_GSXF)jIZsMSmI@OHh#-YTA%4;nZ0(h|a^)id3}6DKLM1~035p<*#QFPc?mt^I z;eqFVS6^Sn1-GmqL8O#%0asWp4gko32q`Eaa)i2YonJIt7-A9>LHc#+^Vq#lP~ij< zsEQX$Zvq?$1&I<{%?Mig&mb>eLnQ(d;3zij+mYL$twn?YsYx2k65qW0)x@;Spg$zh zVnD+nh|3i^=X>+f2am7${twSQ)23q=jwpc&a0G;uswzW50s}sB#8s5beksFd=9K(y%)AaU z?J6qD-+pR-K~r&MuV_;<6PxXB2PpNP=%88|HqsNKbJBY@mDRg+8Etbs_SEBT+O-c8 z?ALE_h3CSGWgm>2JH0qqf1={-(@S2`_3(~^J07~}-sVu#ri#Oj;fly)A^n_aX4vFZ zpj)8<%V3ll6#=C*ymIM>dBaBAO?z!@WU~s#&lVVl{rZ`=&zpDegr<;Nby9&fW_^C~ zj+fqfjkl8{$M^ky_x6q3^Gn0$8=^zOc;%YG^Jd@phj?@-rk)cS?KNy=xliJ#)n?r;f@YB_w?kUcnIBLS+ z?13A0uI}Ea8&^p~Lt|rg^i=CUdWM*V!<>rP#N(9EJWm&4C z{_v8nn3vZ|EB`YnC6zz{0f^NS29H2dFn5G|Xz#%V`wQaK*v=hu0Hlb7|9|9r-iIPL9*uftpar2xjNx z96WsR@0&l%FW%L+UDx}5dxz6sII?{Y^N2{h8axw-$JnwHC7KZ$K4H{xZ+XGlbFt}355M)$ z`)gi5?I~JOxb}k`pDjP~Z9Oz0hNV+}cWPHebj5!_V8px0^xSJYi zMG=_ZDaD^zUffkd3qa_GMAncOnvenhJmH!Ma z-5x{<5>Yn#nhQ=I8`V3{Mwvv3gjWPF+_K=_MaLF~oQ{XDd*t}m6BB!k zpF8=t6Gr`}s;us@c~7>B&C#UI4laikHKfC!p*j7weEU_Di*|0`H7dHzl5HzWJm=hr z@sF>6EgDV#{xgHS_e)I9T)pZmuc-TK(~==6-PN-J5~MfW_n^z_Lyh{G0OL=a>WK|zj!Gr4u|j;&kQckAATDoR#LT6NWlciw#3=czXmZIO!M z_nE-V^9K%>o;csH?*J`A&2i^GcGsWNGE#GTb&qS8y72H}KJI-eBKH98=7dz29hJd&TWoH}K^(}pTUU2XZJ(Lk&ZMe`$&mwxXC=2Oyin#)oRqPm{Rc8_QK?BO zil*r(nk?^oE8ki1-REBye6^zB>%2C-Q*4nAfUMZWbsN{__UcOn(Q6uxRTuf}k}{11 zjnbOpW)e2-5Q>%|<_I;j-dX)SM5QxJm4q>Z47f_5SJ$o`JG5KAe^pv+Vs^(4J4*KK zIla54xzg)t7}bB2lQn5ISbY||G(Gl&!r)MbzY13`Y_dJYaK zr9v%5QVbCP>Z8j~hE6ic63(cv-t+z4IOWe_b3?#a)m#759|^SE2zdGPJg!^f$H!)>}=dGUqeg9gpHc6L%i zYK)dNId6KR%k4m+$OvjF3kgD<`5h=~V~fL2q@h22GRMH6=MYIU^>yb7F@f8H4W}a>v|Jw`W9k?3C8VbNbY_4Qta?NZax zLOLX8G9GaRh7$ zE^eu`B?y4Jk}^fL#iyoRNqU=BTKT`^@^ms1M2;vaK}$$3#Mn_2RunI;Z)#GgCZv~x zPC+9QEG`|yMkI<~b}fDpM4%uLI0%q3Hh^)BvR_j7?*00Qh)@YpF0Kdv?5w{MUSBJ} zd|Fa1C`bfBBt|--I8ajo6Qm)v$e4H=$asgXl7~YUFw`I{d58?}G~mIT{@^tlOppXX zm57{}T{){+jpufA;hN6}j2d;KpkVLG zE^D9vWKd53xpU_&{P^{06DLb<0(XQ%!8M;RtgS1VdCT0yCqK5wz9`JHy=tqNIoz{HqgT?dq&E3-GU_6e!8{yb;p!7TS5@1 z*q*T&&p2meY?F)u8=E9@Mj(``M0W>Xy_LkdU?pwjdG!02YCUj7ySX$0L{>lr9|vH^NZ|xjWgDHerB&&EYM! z!4!AgrtsQA*4XX_J56Z^{VLQZL0amn9_RgT{PmCj>5<3Zd|uUrjM9oWHLlut@8a$2 z()`K0ckUWGcJxz!d^Uh0Db9PeqSOtE9Qd;jJZ(Xwwx;U%$>UX3HT(1S4d^upO=WOR zNYaJ4V&M5Y!_(agzWnsvXXZZVPf46U;gT`qCJ!0VYt#0%M$lkn5P5(&AqrBXd-Y7c z^|r#Ddn3(&LCvpwjmoBg&wY|C002ddF8r-iyyd(by{-Tf*U5Xq zdD9x3PJ7Z*=YI6M1myNc4dMyV2G{y z6k^2qe+)v)mni}wLqwM7j~~^4c)^LIq1yUWTk@t)oa*-`0&>AL5d}%y;mBL}P8fnh z0t7|~gwdSs-bmVYhI1*7u&2E^+tKDDCUG(GnO{=%A%iX_o_rC4x^S0+6-2KDn^OpYO z9m6nc8)^sk?^m0Wbldr}+CzLrX^m#M{`&G8H(Yh|&>^EV;nC5}KmZ{FMocKw5D-uT z5+N$k(^5NUWp&%UV{?O36U6YYlY3loo_Tu~7vvwx5b*m?h~9-; zc3*hem2En7I(($y;}6~+f8m7}Tz0vLk4NUUrQm`w;n*rj%rsQ^SnjR^`8)R&?p*%O zyw&Sg6rVo!(4QZ-efGB98wQRU;z@2(7c6y2Y<8T)sGe}bx_9Q?Jvw*q(5365wTs8} z=}{6Y|GMDEh{pu5nId3lBPif45v0J7I5Nq7&D7S`2Da;27p!lT;5d$lX{MqRm8WZ~ zYjhMOL3doN+6hI$<VjI2L1fT zhabFl#;hr0r+3Kck&>Ju0?A%?dZ&bL3=x1F$JUsx>8^Ge9lK?9+q!v6(edMf#6+Lp z%Mri{dqLAIEiSQb+b%s;ug}q3@XZekIjVx%+yhNVk%^uugR?vI6O8K$fRTW3dXlGe zzh2umtZA%o8k9Z!kC)$OpzBo0F`ujvO;_(2xP^w=8qYtNcE1oGa_4o8IW1(a%kslLRKij45PVtQY2g;#`yC0O){X zXiG~FS%Nxbc38W3MekulK_CGzhO8Br&FD;eBjB0s8wEtlmS4Q{?oD^z4u${%WIT4? z#`yQ=pV~6mhfuWUrG7?^W6OLx z!syyP#^#V0|ywPuWMqL zf$3c|5YeNjL_y^KnfLeaH?eEifg}2joH%go$o`{;4m{7pyg3WLec+yZscl@yuRZ$U zpY~T&`Wy8XpDvV)-Foxyg>W&@fdoj-NC*^yaoaXI7XTnga*S}a5jc`AfOp8~l-ed~ ze$MAxtM(5YIQ)mrOPk`IWHdUs(r4ZIyC+_GIx#t^clRzI&iPB5HW_;l9$U3*Z77c2 zFzXg?YDyiF10Gu`bcoP0v8m`}{v$6vynoN8=&93d4z4X~C=MBsK^KiHcWUQvSvr69 zLRrz^OVZcY?rHRrFUk^<(x!EvII+j5u0w}^y70?Qd)6I1mfO%!^XblSDt%2#chFG) z%rS&QLdgw>GszWlV4O!WzL_^2G1J?m6xLSBc+@y}Ek%q)4KSI)U|3c=ahC0Oxgv=! zaEs=Xp-iDC)`N@jJFfYCn+AC2t=GT%asdwoWjl9GrYGt&i@NZ(l70R9j%kd~{Iws!s6HTi{yy7uj^agCV@fg?a-Qp%vt1L{v! zU;Vr5KK$~Hyra2Byg#C`LwQF|oha(jDJ#+ClT0*0@b6!~@%7rTD~=z;Xfz?dP2WDl zFB>lg01GTG35kI+x$=Z@{i5%< z&W2rau@IUdgjW2HrnA*?E&)g>K}hu0GcQlS{+i4#9i<|{HDIm2M=eH-|KI%6+%5tj zMGA-j$*~m|x``2q&09CD^w?T*=T3WSPTJ@gWOPsM(XU-U(YiO06i5JM4zoFxVBfVR0%fZ6h zRL~fpwC?MF+3pR;c$!|m_h=xhQ$yHxqQD&1Hc*A!3acq2$Mb+|#r~YEtnTd+vjQa& znw@P;M+<9CXc=B3)Z{(Z5bo_(QOUz(Wd)k+ny=_KJb&MT@`PYbT?jHU$|=2?M}4|N zU9-% zwCyV*as?TXY$HV@8x$S(q%bc3XbMi52$sgvtg%wN1?ab;t5&mp7RkL}n!rDs}t`?A`~ zi9N?y%>8lBSAYBduc9I90~*+_+x|;{(p>-mAOJ~3K~%gW_dfQ*sII-fST_HiJ&T%B zA|Op+*bWgXrb|RAO$`P2dn(-vZvSXv_Bf_I%A~L-_|$?YS8iSEIn?mZ(;xI3HJvd- zBV;Wu0QyBJM~weF=b(3-fzG&O;E-g1$W`A#gTDQI-moh!1W-V%HGhNQPm%c45)mQG zPnY<-zU1TpF<>a9?Qlc;tq(IsjDH>UbE7ga;Di7mbxl(a2&L;r{P@wAtY5bL`9D9g zLlp$ukN{{vm%pPt4^OzaU%OraT5DeH4seIaqd+L~=_)>gT>^avbRTKix|@(|t@_|& z{2RdlNaF$|00A%pw85hsWidkmgP<9D>g_*d5A3+?_`1eWv9{02-&c^`b0kFU{PLZD z+xpp}!bPSQr9{mzZRc1t+r>YA*ilU&B6A#@bB4$nSIX-dapClJD_4dA2l*b2p{;9p&^R|4r=zY^NDO0QQN2N<$ zGjZCN8@^4_TqkyKZ!8Tqw{dye8!8$xYgN#evc`_<&dc1P(&9~ip?WwP9Sdn;+e{|i z0JM?&b#?b~j@*I{vznA^n#S*e`@ zV=kJ~reAM~^y7-JcYLsN8(XJmCm#qGF3;}kw>)`uCrk`Y9Xx5q*h{L5innfhZt0FC zJBo7F9$aO4A|8oED1(A?g#t7M$_CB|BhHPJW&|`JlYrdjZfT*_1X!X6^u@#0we(B8X#zx+^%hT@o9qzB1MX@b$iDVP$`8{ zGH@8-p zwB;qd((zg$3?a1kZ9N45fS?G$4p`B&y2$ABCM6_gaK#}E9xsB3Rg7Z%>M#NZyu~G{ z1Q2r~6n4Ngxs`t;zoxma(XJ`1*txGdCz`;e$vSBM%Cd^8W6KWg+v@4>Yo=PnFrn>k zh-TEIrd+iZ=7Y1J2)k3y?|EJdPq)F%feFs=?204>3{feC2#$25CM6JO%vQt{<3bb{ z9W6d}6v(NssagHw`haQ^bxJ)Rm$%v!QP3n=W%ZtNh&b}_q5QwiotNEys0A)t)7=2V zc0fjMoqT(hCYNno(=O1VOZ$xSit3@+19zwOOzxUywNZ0-FW_En$-ZSNK2cvEt#Is+ z51QQ&L9>m;`WUR)Evo?=qsudI|{#{8Z-u z8>lJDecX*fTXX9TEbKUz+bawfn5Pf}pefSyZNeN&qd zR;Z217%{%BMuXI~E#BCB0Vol$y_~y1J9#!DcK|=)ygbZ4T&h=Iev z1QkWII$Znw`>)Jf`^~cLtFzj6x@_FEk-dlU2K&~_?@VTa+~qmFvincCc;evm$M_Qx zR^%>4ayrzo%raKxp{B0xCC9d}%->d8cxprL_M@kZhi4BK{~?a|%mhE=D3xQO`M1yB zTDW1&y8V0CY~312N`CF{FDJB#i}&~p$u7U(@~Zk%dB=|!g5t`wNU`jc5-%E5pZ0_N zNy&YO44HW0CCu?~uDdyEWD_@|B7ETVkwYbg?|(P1tf{Q%bdfKiP0wEarQdb5p=@Vi zUX|6%Ih!{2f`Y?GgK>%yjRs9NCo)~*RPOjJ*}%cd6ef~Cs(e8$$|)3(4L-#TorfgU zb4v)@FEaE%MRld}>YC}EF?7bQ6K);Vb3((Z=B^1@<>l2}^AB+MxIzq4-v zJ$lKY3n%xV(7!|9EeCc}#L`a5xF%gE!$qLk+>x#xfnHBPJhy+Zi8l?qsz;k1ZZMeS zjOmCXH92F*uyKK`j^n!b%ip*c!#J+jB)9YcNn5vs(1?g3!T$0sl!nrzwb%@C)@x%~uoVddc`SG`>xU+uUf$^j3$EM`YEwY#vO zu)Nflp0c@kOTDa}T|3uTtLE+G2r<3s67*wndTCf1E>UIbnf9C_%_=z^tr+BijuRSLBHJq~0mrOr_kcRj(70HlX@= z%aRwqd?Dnn(KV|5$Aiya|5Cayi+j<{OaUAr=1hz6>*6p4jD+N9gU&z+EUKz_;?1W* zc4$!ckVj@cm;`R2R4CH8`MuT6>R6nk-}J(tx@GkRV#>ibPU=;ou3xZWez4xIG-Yk7 zztI4fZW#6EDLmReon3LkMFfg~A*!?Uv=sp%!>DDNw*A$23u~L|Ck`EV-tY??QXJIV zuf63);tCK1aq*`f&sV-tb@<4>>4V0dI(Fpr)}tf451q4U+2GYKTU z3JqmN{`}QnJ~*_a*Z`OEHQ;;08AyVJy zDyYpo$pW3SisMeWE9{I$e$7Q!<)1F{_32f)=h(Q^4kJ@~0O%-{06~bBj@%NO0>>(w z{qf^^U3r4fwd(NNXLQqcxZrN)cx`5J&LehI*L2Ia4c(>AJS;f?M~G@x3mj*793ty!^(k2Pyy+@k)bax5N6^0;Nkqe z$ChmW)aTe!2amVOeRWeSc zh(CAN<4tH5oZQw?v%|Xc!BTQvU%P5oS9eLF?hgW zZy-(@+@@#<iS*kwZ|kLxzVLtdrCy|+E+ zw(K_^d%~CLojvn@wn(ll*yys*lgP|E)kd;FvkG&l^a@iGZ5ts}A4SGf;tadaX>^=W zifOyOUUIGeVO3UCtH^6MrPJgU-X6T!AX|jL-LUA0+>9c!i7muIMx_xOcs42iNZ2iX7aY9d#)NbcJ`|e2U61R zyzyQxTo&k37!ouRh$@I!NAY1(W1%R&`n*eOA!NH$90Dl@3?g>a&iE)nBW^t~&#_}dMiHsPw8aLx0dzUlZPP~~{rS{5-x{_J&6j_){; z!Ww6q#vIh;tM9##)vF^<@x5}#i(Rx1(s6M_U`jC?0SPrlt-J5Ob#RW!aRlJM93PFq zQ42c}uc0|%6EtCy)UZ{b6bICGJxX@4x*m0*$Gbu2#5tG137H;yLC5&t0m6T6|32IA ztWXn(;1F`q6%gaTxU?5%zx((@cNrjS&4$X_X#0$I1QGxk00Vx;sz^U4iT>+O=bumj z5{RJL;32y?>L%Cp(NjkC9*mAnfP%-I<1zjfaK#xaNe*KI6e3~wwjDaOO_xB*F>`lr z%3ZyoLx(Q+KlYf;ybN^7od`AQ%nCzLrCa-R4to-;cyL`ee#XdIBL)o{+ko6A@B{jI zoRk`I!Okq^GXoeI=LAGZMCA6myLq#evK^+mxZr?XYE?%|$_ff>FgNeqQrTED>yDd! zssch6#vP>q5+-zAv!|iHkSx)#{mr$L*UHl-*w2gxf|V#%EHw-2X~N^ z9?5(*Zr{2^9~juUam|ux?^ubDk^suDH0D5yLIoA)-Gk# zgF})q?$O^pskknP|G0GZqyZDJxcE|(QbUaxnqYI_x@4$OF@}nW6emE`6^Wj`N4)#$ z$DEp8d-2J2;e9&}9^(l-SRBnrHbxDd_W8zziE+ZNb)t1jTG26C{X36nx9jNUyj|-P z(^40{ljD^MTyxh@)A!~3kDu6UmmhablvY$R{?tESPO1Me=j{y~4MZl$^tSPRR#hb!cgfJpt+wf-L-_-8)e&i*mh>v^tu$D!rDO8^MO0Rb$M96>0o zJy8M%CA4cRT6@4HN|1`|@&iZ04YmEwAMFUiK?p(wK-S7jelcSFKLUU8<3FX4BLIK` z#z8R9TD)75tNiMtAAj}kkt4Y~i+ArR%IlHQ+aDjV5F#qV5E&o?L_z>{R*wIcZ6qd9 z7@fnXckMmA!PbEJ(w@5f@%9Prnb5*y8|Y%t$_E+6__x48D`W$U5~4z`mwTg*`k8CL)bNs-*LXH%5hE?+I_Lc=6-D)s2baM z)Fpqsb6ujG@4PwJe}ZS}VcB{`I+M^J$+rj493uFq&8HADfR=_#&n_b;;R zq6caZtU9_avu*qKfi$i(E)9@eaYn4gU3?a7(ces+C_;rHC`*s~o za-twhN>1#|-Po>6+LE>3`Oto09)#t^z&`p5{`rb zVA`f6#RWGq<9Aja#JYpWcI_X~dC>VYE)F={#ki@3-g@=U^>ukcPTeXf^-%qd58iR0 zu9`!e_Q!_<(awB>T>PY zyRTWgcE^h^ecq{i$3M<}?BL$Los-J5=&G2Y-Kw?WOei_}s!hwW*d2 zfRKnC;<^nUGVZ#G$I4I7U$gZ6A3k{C+Pix9$a?$E`>d0dy>Fa6@`;;nnfLOZh7;&Q zW!id_1>)Qlb&YkUc_Q9;?%U^=?p~z))X=|tuO?13Apbfy7We7mjql!Cu{^&vzFqRI7vFyG1-E!C9RUHsMszEGpea6BR+r!v#SN$L{`kSa&3t)! zuPFp53_YTh28>X(Jdl4XgX0;G6U1W4TR8XR_)ps#1TFj8ga{0oLQ;zKR)0}j_LLA= z?$&K1CXM6B&iG}|{t_#X$B5D5OKVx_ngrmaqR~KF{HXKBe6;isBni@hBe=LrNe7St zDaLt=5}>oS@!wYKk^;^&9SuYHQrzm6^KT?(fZG5f2Izp|jK@}bj9;555i)QQDl)en z*!uFkw`NYC`TMCeGmWG#Kbil+6R&mXl%0R%h)}ri*g?hdmA^dm^g|DPx#p{_hxR9S zN(cp;lG78sDar55pEqU1^giACw=6MinOFBu)4TvcNvR|my0K};mK{5{=an5k)^P03 zn`Yg9)r=%hiUXR>bd9kHizqMJ^$kK&Wkg~Z+N>3CEZOJr#~C{hOucd@aNR@~IEF&U zF*pa%Bpf__aPhhoQ5N=Upw-p~NfdOC0b@DieMySMLY&sK&GIoy3!Zs z&UU+enSq`o5-06AviEqn-gXm4Nv{!CUp?zYbJgoR=VuP<{YBmq{fpY6L;GEQ(Io?W zX7{>hSiDa}PpM?XXCI9OqH@wDGd@@{Keday$sGv?$mM{D+TSc$pdG9~c`U!Ex;O!% z^A9|mY_Zgerg}lA;+yV!@3CCF$kA;V7z)76^cv-uT}4DXibcN7U81>}8AWm_;;PAp zOi!HV_Bxsb2^MmYrVEitOLD-3$f8}JoIhmJYahRJ>|p7KFMq_qGBGGQ{`KpRh7O!C zsnh5r&NO101Y3~QkxOZyTJXU;ENU5XZWgt=q_(~BiW@542@QSRv2KCW7KK!9mmFMl$3e~k3D|RmT)*4JnkPbrzfJ(txc|d1BRqlur4ma>P=EFdG zLfVjvrfn`*b~HkTl$X(d;Dx>WNUndDyQoSVmtnf2`Jn)@NL^(I+pRp>;&m%h2c(Ya z-4n57Q`4b#DLwkJo;S|8YJBIR0MSGHbJs3dP_T7NTwHvIVcEslw6o-3Wug^GaQEyq ztVenuK<)N%m#;jq@ymVR9Xq-k0JsDhv<)|tAb7JjveV!Prr-B*&H`^F+0@LajOq-8 z1Eeg=O`FShW;C>WX7&Qp6{oB!Go>#%UK#<2Q)=khJHe@r$!Xp)A=IM`@y z&)cza!w(H*m6uMK;7W^|G-^^)O(pUQ>V-%=0(z&0$`ziRr_CE_KH<6 z|MK7~7xcfvw7fbXxg=>|DYn0?x;R|v?`!U z;ByOp>qU2N_o&EwFXc0T?1DMaTg_A<&u9-EWElWvQsng=MnIqoyP>zYQ)$ zs^zp$2!}|E?S#enl|ir>IJ@>1*4EZNci(IULfF1YbK@&-{Pl`!r$ktk14jl?8GV1= zKSqz8uxRCiKApN{rgV7juG!7CwdwARL~%N(%z!&tkRT!?M8q?ugMYq%kr-nHK%`un zq3ha~eL2s5@l=^zOUQ2j$0G?W`TT*Ces|#|IfpkC)*h7}(Nt>3CCCT|0*h&E{fTWm zYY&B39bhxCu+%IYH8(J30yyZ^<%Z3RKPg-o7U4vj$3Y4y5`n2lSSg)!lNZAm4KWnawLoB;7VZL+s5Dd z@WO{1JBOR?=G#7ba7OkG-MbBP6hxu<T*-wn7d4ib_3h!~OL zK&Sx{u%9eVznlOUd;a}`b5f4~()Q08SEP^#xN>m;4q2wfHNhA|L~5A^)tVqu2vBHlWVu8{1dhlQ5Cb+bd*aZihX*+ef~>EpZm6s92V4cm z_q_huD^6Ni*b*GDksJYM&KsoShb(v{Ru9*YK{V`Ju{06~d6_V_!DzBLQt3*TI6FS3NsrKwQVd{NvtE?O(q0 z&$-KU9((hBD-t|(Xm_PM@~69AbPTzzD0lX}H!@SxF1>i#kB4_Y`{9chPM!Yc_61?5 zF^VX4Mml4rb-3z4@zE2P4!CGw&mj|e{M3FUZ+r2ct1>5CGvmBxKK`@TJ<&pSq^1xA zlO*rB{`a3Q{jjRGR3(^9fF&alJ$$(QP>0Te!+E>+ZP}p$IPT)Hea81HI+$OyYkzkC z5!c-GK)i0agbM(Gp#qM;86p6IhNO&4qhnXQZAD|%6YtKx^>Vso{PZ|-BqAuy6~$}& zUa(@{xHZL#n?%HM*EO{dZYx^TEw$s}>fOp4{ATUsjNeM&6bBAR34om3 z3KWnp?tm$|| z@rt9%@`L;R37y?C;oced3Jy}XxDp9kBA0%9^Eg>x1z8g?`ww^DX@cb@LOMIM5M#?c z#=i(AHD&|nKpKlu6EGxBtJkl5`pKuecI3s2`Z}f;W zdfJ4vQ&hDt8p+V~1W(rq7o??hnc8d26(8O0CCyg>zIvWi&l=)+vXRm+DdTi;!?eq$ zEIhHy3%)d8$3dN^H8dy8dGf704o%5DvGa((lq*0km?!Yv#_zWu$|Zt$CB30gsIzDY zx^hnKb&}&EsfNiSQU}XtE9AO{6qSaSm>EiZ<_~{5eDp|K=d5|(d@(F7d+qWSo7UwN zmK9V-4jpJ)Q&e><_t^eXgU1c*(C3ZibJy?NQOfJyU-yA2qEfRs1EG{{6GsS|L3Cpy z((xw?|(QxF4JT#7Xiwa-do@;!6vAHgGBmtA z+Rw$H!!td(1V}&#wrMf|;t+Ps;loG2^ZZN0FP?;q5fNhyTI6qQLMn+8_O9RDV_1LP zj2OQ%HXtVu1PDajI#qpq<$+bVeQ^K#J3lNpPvqw1A1^;~ z^JTNrliRw%UeOj9*pM9wG=-e4kb$B4V9D#N z-?lIUuJ{Or;+mAB6A6(Jb-gt6`RdYoy{NHEl!K3j^G<42P5TS-I!@~O(f6Olx91|x z*;`fMspOXB^k~eo2?CP7@ zMV2+Xym9wD^-v^DTeNLaq^>MrL%6E+#Ib!R3J}0XJnxuOc9@RrE!`Dz8Z?{5M_kLE{@ReNps+B~5PD+fea+3~ zM@x=a7GM;p$yT~mP<&+SIM!x%Bf@aGC3 zpt8_@WchOi$9A+g{a4=d`z85n3Qp}G(YarMXE0)>aGrkeu~)u$u5WVU=1p5dX@*n| zxuoSbi|S9?Zky>WEulmA^g&PD@xqW^V_b%zGeO*n@JNV-6$6V=m_>5S_C!_06>nI= za?k>XfJ$(IEqB*%?=Jl9ImfEw|BS91N?JB3bQ#`wBhuJx*^chgl~P2l(UGl`tSBz_ zdc59*I1>N4+pIMnaf}$h1p;HX#)eP?c^>oiV-f+dMsmeY$s<)6YG=$LQ6ctT5VpM~;}d zVdc7NGwf##dv|Y|G3cT>@4aF*Hv7Hqi>{pc`r9u&`0)Lo&;4*{&tX~Phvt0u*Se#n z$*5m4W=g-zULFEnl0%j$U~HFO{BY696mPVqv9|s|RIl|~8ZSpma8;#7w5Wf~;7gOV zWPg)-=*njlILmMS;^8^>%&XZpanOXDdQF|&a{@@c4$Y?*|7FdQC2du5q`Gm+g_Aer ztZA2#HeDOHalyBGX%%-v2y6$HTY}GF#}BRMhMlYdwxi|%+JXrO4DLiylS6@>+-zycR|Ob?56 zFr(oJBUbAT{UvAKx7(KmS-l2g=9uf+CbySS;u107(H#u%n`8!S+?x zWletht2YkU=jT@+m@?qv)Gj?-4%0x69XVi0!3Qrd|67$%wq(rfrAV_7pnz;k+Fp^G z+IjA6uXt5FQ-&7|j9TDQ^{V;vm0#A@*I6!Z8s_(#mvu_(*gd1in7*S%XOGsw)=2XJ z7bJiXV?Oe8PmU7+obAi~xhEHiPys3>6B84|b#+?XR4%w>TAHS{w(25NJ#W} ze5O(g6=%HV(biIC_^l5xMvT@%OZm-2#z7n0Wxy+UzIeyHr%J;hF&swIZz&g&Acr{$ zB?sPOXC(#H3K9f~z(mcAqDtU6s^6eMN{R;viCSKPI>FgIr5G`OMJx=iDOh>`7f+L; zKQMaM#l42n;hNq(`Z<0q zBoYBJ0M;VP)tP^vAt<0<4$B5;F+{XjvJ?<0h%U_e^e>B_Z=2w~d|#y*KOfTN_U|X7ug7ux78eA}?^T;hxD)pLgL^ zeoul6cuB+2=Eml(9oqTZxwh=y9Vfi^^tpV(#phq~_Zv-*p~t&{yL=coHnr#TH$2nP zNCvZ^ZB~+5fBN*{qu(s}sJg21!AtJGQPv z@3W3elSf(=}HT-{SU7N0IEONzMbAm}Je)svf*6KN`_*;Nr= zzD4cJuzXhyop|@9w+)XTdu`>Xwam74$IE0=O5&1L%kxhk*;TN8>z<9r%ZsdJn^F;@ zQkf1zvbd8#52nW6KL4Pb9C-TnI7 zPo5ormrr^eM}XkM48=hj&MoUg$OFFGaz?A@CqdSavW5)B3 zzyD}ewAfHW6jOrZb&(r6Z`teQz!3<*k&F;H`_;`L^oyQRf}a!$FeLB+ctUoxTJPk_ z`2G1e=s*lC04705007AVW45#yzc$+s?wm94wI1#JUe<5&O#?4k`Q_sAmrYe3`}o0K zn^tWcIIw^J!2}+w&<&uUj3^iaA|Htrh~=^pk+`r0s_M`?OMN>qYD583^)N; z2n1xHjYLv`$=HUxEk_P*mv(a~-uaQm zBFojz?}+QJxq%ezEk6A1?p5{2^MgetCp)Tf69?7QR9VTeTb`C&f9|0dE<11fhu^%{ zY&AqEtV_WVBOc{za$VhPVp-nNc#FTe>>a&Zh8;Dp?l>Xif-5h({8q_y8?7+aFWUL- z{O>=1^`-}SNqzS~=L@g7a>7N|&tEgI(QG2O&g$s8u~(1ob@8AcqvF8OozS*z%XcpS z@r%GG$zJcDUVbI-U}5*(LtM;*mW76jO0zU{GU^R_EPmV6%m4h?gC(r)&U+slIBdY8 zocZ+QKG#W087wi~7lerEaoupyO|z!Y*t&7cioIKR?cGko8qx2(^*JjWv5qH#6{=MS zE5f?#FGZ)%8`8JQ+pKJpyOBp7BPbTX_uk}Dm*<_>Q6ef$E{!zqWe^R69hULj2$qMf zWRyNFEj7J&o9^FlIcW%HI=J%qmg)w$Jo}1hq!K3*3~~V_vu$|d%jcqE^Zz_wf|L%_bruPWkw?@mNKhBizmyJ9>S1xBCdva zbKYprwYx^%T-p%)Y~%N?lGEYD$dPCfSB+r}4e7dT_^c#%l1q8rj@NKpO+`(5TTQrx zA|gg2Cdtn|ISxM$boym7fgub4038@AZaT=pCaEJL=L)e!@}8CB@T=?HvzniPe(ou2 z`R@r(K}}^ve0qQhO-cn!{4|m3tUvF6`%M`m1^_4^#efm;Gt-oru=)6`L0>%j&eH8m zmMr}|BQDOT`w1~*nl9bdGE{;CQy?Wc2*`e2^LWcHJ%gV=^9g?W!7mj@rt7}@uYWR* z;xq-or9>uyBeV>&i)rx~zdFqg!Dnunoz=Eydp$8&T6^H=fyOS{!EN7t|H0??-FV-? z@naFFp}uDM56i#&a)B=)fg=iF0yxmwD8rV>gqELL_~pWC=?O$aq!z0fSW;@Dfg;_y zcIgt(zWCzpcbBiI?rkRM-XZO#%{>36;=zC_wR$`s!rfcrF@uE91LZ@qvzy8B# zKW_S_mg-MbmZfV(IABwzXmWPNDOYtbWx3Ia;PR5Z|HIyUM_E;6?cQ^)wbRL!BUOX~ zBqzxk5lKo`5zMhom|8KXHnnX+F|~@Vf(R;z=WM0V$8H+kXC7q-t`7&=`| zs66_*DK?jrO`osMIdsCcHYyB&OYBVD>DlZ4(Lkynf9IKGzn$hwC#q-Cw8<5LGPIOI zc|G5F@VVBWY?b;#91oq|OU?QjU%c(jN|}7)U5SbARg1q*&S|a4E+&9bM2q)MX*E2j z(~6pnK-fc1K2&1`Lv0*?UiqfyuTa~Rk-~YZ=f1N zupxYK-(nBblRc!|Wt&lQ-^e@r4j3wN`EQ@Sa752HxG-!uU0TpkQmi7H9Bl#zPwmg4 ziLIJlZ(-4zbK2CN#?pN24V{KhYgG55Hqn zZvXW3gpe7CIOOqNu06DESB+H?LSpzi_kramsxBqeft;oUqB^Y)zPEDb`kz;%I8rNo zv>WyG9C*cd#cRVSqKWnLux_J9wH}$9)GWi7Eptuc5{ky5oD3O9#(~oR_-@Ysf#LZ7 z6+#I?1e?*uc7;F8!2m&sMr{o=Hlm+n^^zs8e)6&4g32=g-Dfav#Th3K#4HX0IUq$L zAyNQlF)C3BXj($*Z6j`R1A$=JmF@6D1J&FHBMz#7KtMto*V~021N2W`iuh}gA^-p_ zDu*PsZ@>PnT6JYikpKWF0g1$>h6(~C-pd*1f-|P?7#mCrELpIn>%OmX__u9Z#4Y>T zM;`CdzOR9b!tEXFwzbM^o|%}8l0tycbI-OocjElN(Rh)ea0`SCs0u3SV5kIBG}nsd zhx4>ff0@#4apnF#mv?+@pe}u8FZn#LZRdNgxzoXvQ}w5|9o#r$-Fq?# z)J04?6)Ih3hzU^Ds%V|VBDPyH05mUIymxt@DT5TZ7BUQHiI6>x8^=6!WrsoYcK$T` zoB0KF)>`@^-l_)wRX1H15*8(ZTmYI&H!d;!l}0dhHj$pqkvnVJj1S-SH#CeL zesk+~y}S1Aos*d5Hf`kk^3~rz|LOCJL-ZOxaQU7c-XtG{tsQGOJ@UzvFd#BU5fvfL zdj73r`?e?a)*_Uh(LzSHT$5@F3|OHm#Ve0&b(OnBttbx>cM=6Tr7ltztO!MH;r5;F zd*;W5i(jAo#GfbLws8K!P+f;UW5!&0<;aY*T-^v&?3vp=r{mF32`|;znTE_}3ANs^ zb-8rBrarkGnuHZKRV^~CLj?s@7AmspY1X15bciTO1nA5P*cKOPDM(E^?y^3wOuj!! z6JIWy*u(=0QoR*V|b`ceF~476vF(V&mwKFwfZ#F_gn@OYzG%kU&msvVJGa%e zNq_3nrYC2r9EGSqdSd6HN2dQ-5t?8?B?>X;erzlN{finC0uZoJAxNoBz(O<9P+4DC zTykQ;cR$>J+as4<-tCtYdlXOl#6ja_;jj@c&5H1blMTl`>Fx(#z4y86o}v*}zV`q< z7K|viCl7)y)R756i6LA}Y0!jlFa)ND#6x|qnb7(2$7VcZ5yWhb7;sRDB{4uefV z0vkn=67>-Wg`@`I4e~7|+j#k|kgzR}U=9wzfm6aEy_GK$MK^xfBbV* zRn@RTR~1JKH}B6+NlYD@lXs%-%vUSFFzf4f$$odDvgDU-3UT!8*#Gq#-bhnYl3hL* zgbr04{$llCgk|}{n$5#&it5c|$x&&``9@Yoa(3(XN_W+yp=a-XAro_fSwiLvEeBWK zlEanY?b)hxSzXbid!NuVloh*HQcz{8=6Z9qglriJg~rSU3L4)G;nEAoRkt&08-xJ? zY;;yRCvLged8o!&3F2GqX39C zX(JE@AP90n5!IFJHXki2YEb==U^J&i3y<5yfq~%X78wHk@3w6J#Rvcfh>aF+=N52d zLXit#Hi*Q;gd4})tXMJ?02CPjBLDytfQqDoU1hibA5h{l-B1rSOa+oM(=T29Fe#xNRGfEL*_QA)I09-if!RN;u`JE7yOqws)^9HXqnxp}uA7%0MJ& z8qBS$%V+)Q^W==4I^LEUa$B*fN`YZ`)%HczXA1lflrt!!f|wZ6XiC@g_Lp~Ey8J6n z6hD&F`KOBxl|1mk^xgx9G_bnwSAB9eR4)TCv_609^`~dNBPf@EQHE%;Su;O*apsKt zqnlrQ^9kMJZQHdwb+SA?B_%T{_4M(hG>sgCs^{l?G2_8kTPHVv<K}gk<=Eb){koKuR99gD-Jn=PvxEZ#31XBoI~tX; zTtT$FCJ9wWvs$?i$q`vq1?QXy%7JmA098z?2Tkq~vgQa!ST%rNTQz#{@Hq=+FWk9s z)zQ_-&715ywXaWByJCN3K-4#J%iYr3_v+F&0&+PskSHs@Uzi-VnGoRRtB-GxI12~$ zS|)6n%JpFtWzFaCDBhRue(~}?gTtV>0evEg*iIzeLW2-n7J}Nc;8aDmu3R75ZESyx zP)RtM>-3>~Z*wWnm-V}N?7x}c#vjF{7LEf23pj9)Vp9u#E6=>xndg|IRMqO5+_cKm|6u9&xyw=LB<3kQXx&aYSNzKU8_q<6`{3l z(LOC9MPi8OPqG(lD5p5*yo?|~5Fr2%m=FRP1H-b-Ki~D3B#1^RwJ^3dS%89|1VDh{ z`L2;TaV{7ZjU25!w06(3k2Zf9R;>re-=6^5l7%ZKj+w#)Y+CZO+w1N%Y$y-}0Z1hz zaK0Vl-+DSR%E2E7Z>c{V3f9RYy#DBxChglkaohA3ExT?zod4-}A5OdJHVYV_&>>iE zoSM1u9nB5~3`k4Oyz`pd7k%~3uKGeH)f=uTuW>P5(z2qe>u7`3%+{MLmcyntV~o)d z$iT1r%dJ^aXIVuR_3>kc`Gms#um8zeX;fBJ-!x|O`|rHdF|+;SH{VD_nCbf2(lS|g zW@o3A)Sa5Y;v4P{yVIo*6KaGyh0Ba$kV;E-?eLUEfQeiG^zexOpOi$Hmr)0aN(Q%uqn@&4JS|5p7qytBN)j=2LBJ)bub$;4 zrJeRyNkUk*NfhUTEsI+5WL_QcNr76;D78bUi^?TndynmjB&!aIK+q^!cd+hY$uTD@ zPlzaCBRe2@b!N+2PzaCaYVOMOwe>x4-&1cbn0ZZ)!9ULV&P;O@*HtDoZ;}L>OL(1J zl`OERX%hj+Kb!OUfPsT^Gn=bKmQm^2w(sSa^`Vl%AS{CloDkH2NqA1&Cy;Xh0`XSP zOD`NJFmUwnHH(&xx^|+Vz(J6U|1HMf_H+>@EJWbUmXLzMY|9piK+t9!C?)56z<%f5 z7$?quJOq9duX1h)38*a4rXp2yJ#xc+>t9#i2kb9zX zb5}OC95-A&l?$qyq0?uNkD53I6e39Dh|QQeAwc7C^Iv*~8i1=0ZQoS3Z*Rf&!o&Oe zwC?xbQ}3r~xtgW?vU&T-@?RdiXkpIS*Yp`jtTX3cUnS-WDwRh6o7601e7CV>0=+;f&s7&9Ts zoe4mNE8)7HqnjsWBNBrO1%NQaMeL4k^19`Y~$AZoH$$5&C4)yh^=_M$D+Nh~`jC^!S-q zAgIiO@Yg@jdS~lwopQ}mvY7YY{$n=$yu7rjbt)lv@c3#gS?EsSPNx9p^l?vwiYf{Yl0EV zX@jB?^}Cr1B#f5cWY*^d3L)Sie-CO{ZKy1Il0Zf+BErX-6lqk;W^e{Flf(sCFSpZyu;W&x`S6%s+ zKRr5X`~*~i3og#RGeKN5UljpB&i`jf5CA9=5aRIu{VB;wi76=n0EBQMfD1w!E8XV| zT;s&~Pe&jy3C_8IA_XLfXd@7iflyAP7N=15n(!d+oPB&pI0^V*APUmEpUuzSlu02%DnK01*fg089W8@#J`%3(bc7 zU1v$LU!!1XxAYv}E4!0}cnQjqAwGQJwVNNgCpjzI#>S2Y1dz{r3jBNQI(y>o`L71_ zQeQASw!@I=x4f9;OqLA&;EqjYXHMQVaUya1OamoE$>g%rT)t~*SheH|bb;KiS(g_c ze>OQivFWLPGk5&`%-Mr76&^uZeI%_(`#Xl-=F7@>H{kue_-ECtMZ-~{3Z`(9>B!Qu zp|Vm^ogo$(dd-Msi+^}x!aW;*IauXlWi^GL9G^YB`;`Ox4M|BT+nK-V__o<$O$s=T z+{7$$w4w#ixN^e88?L|GE4x&rCqrQ>r-Z@b+$^2j!AK=3BVOcgs=fBa zqZz3wzm(%wTB~zjW4V3Q@L*W7CE%(=Lrz<3p=gGk*Z?`iOXaL;S<-x(&>JFJLv3O; zvw)T9ftHe=*7luwZK5CEx&5^$tEra)TkG>Td_L`zb%s)M>&&~Czr3k75{`yLSzfP8 zb_Go%GbR1rv6Hs%Tl3~OFQ;cTeR=9L$*vrgs16~K-#k=^0F6%eA~uZtLOlHcv$*8K zae^^-doXR`lHlAp*z-b_i=bF(oQMz;u8VVtI@<;gOxHaQCzT~ZDIfwOkDUyEy)AL^ zRW)(q{C7hD*Z?*F0YX90Mn#tZU_fjOqLf1SR$X@I?ckQpZ5vR;#*@S{e57#^UBIP; z=hFAT@t;6}f+MeNs5nu2q{6OqrX)6Lo@XPm0b;f<6aaY4BN6{N+ow4HK{%37S2(H( z=`3w*_wjC;WC}uUc6{f)oYd^3)Rb6*6a0T&Eh+BAcD@#+Wqwux(_VTu&DorTbl}AH z&%S+Q>Vvm_z5eS4*)U}ZELXZE`-7E{XpMtQ9$D>~+V92N-)NrNJYe~E?cQBnd=@;E z=}gj`efkZ5_vsmE&@Vsv^iLxnod4<8Dl6cWB&A&NM3<1HL7jV^T({%-d!Kmio3|Hy zJFmT|`Y`dMkG?4uH^?QGNFSSQ6 z8z=!11!MKjRrzJ7uIx5&XsaGB;bKHHiEv2Dwl(WV_wM)e(j^S|cl%dg-Ff8w)9>s& zq-#QkD`468&U?Y{w$o~Z4?lG$oQ=2>9NoK2`X$OvhU-&3uB3xTLS3|I?&_~r7O&gw#TD!1bf)Y-1SezPly2A}x)YcnpO#rj(beFShVyoeuhfKQpPD4!y3M)kFXK$VR z`pS2iZX_iLlZQ-6918>;QGVU)<0CS2`lM6VS=;2`0#n74k;;V!7i7qpMFoW_!QzVQ zP&m@LRcp!C8*IOu%O2VB>fhgb?N2W`9BJk`Jqn)NJY&OMu~8Kj-wZFgaNK4L1nb$i z|F#VqyNw!*ng$m)y!}5!(*h7d2o4;PF)C38z!^hXW{gX}@l`qhf{zpDKO6**8igu^ zK+LjKfJzLsqi9x!Y7Uki_;ks~{%EZ~SSu)teTF0OSk?2Qh{t~;{pPXKJ|fs)3bafT zH3CN07TE(j^b~?2NKtTndAOIl8`5-E|;?UB?(KMrprnPpp$VwH#$}=nGedllLQr_FM(wIecm%I)7rX}lnAm0v|QBPtV@@= zlJ)%u4OzN+DOWYkm;AwlGh}ciIekr&G66V6(lx2mvkRWDGW<#dBC-->kr08$`OG8K^uvUF{LC*@kY)#7aonf-@WOruGwAOECGZg1dLFzWbqHV zUGgsL)j3FIr$9+?+URZgyQ0lGCDyOQIAg_J0SJHufB`G3E!pzR#&_QT!mXuoqV7Aq z=d-`P@z4X0w(HV$QQ3()jS^MS!u;}_-jlla4%gH*Pi$2jterOTf#d}5lFbW#II?Ql z$+e~y@F8=SS~j(>>Nmbk%dYd6{M>hNkGc6j8Arn@Ny+UCm28&$#D}kpd+%Yn+WOmz zUv6KqCRARX+BDsj(r)~NFD{(xe$G_Ap#`aR+j@dCT4-p6bxmrOl9LmSLbG(#*Lkn(V`8S6m4({ zN}LL?h+G~4 z)Fjne=A^|30f*6ThRwKnh7)`gEEGCr3ZpI{KmfBm>6yOf z7KV%Ji+uu$^wA{C-|?28vOr;pEp@JS30L0K@eMlBl-E) z+<7M;A|e$)rGM&^iNBrW!~uYF?kEDVaU>^Dfeao*3~D;a2Ob5HP>dOkpZC|j z;E91aaR2~dT%Ylh1};dn43Hf{K`R`rErMrJOW8Rd~%M%^TwnL?0)ecNaL?YYMueW-J{&gHc=BfAaTd;Fl^ zUwFsJv0XiV_io%fcFN>!A08c>(7Q*IA&SuQvRaj|{5->(S{E{ux}dvU(TIBY71w_{ zZ$?Iw*3W(WblbK~7i^xJ;7QhVgH@Vw=hBzzU4drB@X3ssT9+of>Q1TXdiaTZ{31N+ zraO*S>}MrgI0k@6kPC-J>~i5%X|#-c6CB~%=s#9}@47kjGGLr;*X|TBZ_|D@iSL|IeYxPV&D3JsesDif1i8vBCe9xT6+zrfMUy3F(-MrGL8*Xq~ zB1}!CO-_ey?F&}#7}#^j&TZTNHfv^b^Yki9&(6-i@|ynMEZ3`FzQaY>1gC0Ak}f6q zJXBQ-OX`u>Hn6Rrf2ZCPuDP*gtF9cRu#lNdydY`{PrdoU)3sLR;Gz90i%V%1dTmU# z#LwS;{@K^F+{uY%T~xC0-g~DtP0wDrw_p!D9dOtzouUs6H@64_Cn-bjMv2KvUTza9 zVpKqtNiADusPa6wdjFW)4*@U{SS}Q=P!>Fj8|K2CIZYs@^ za}Cf<6+lL*uB_llmsWj1D3*{ok?I1$gaj|)KpE;tm{3!k>HRwnc;lNlb6V%k+d7x~ z>Tei28QikYxI!cpNJPv8i!}yG0ziPUg`k4Rc1nvO1wojB41p?w0w+L_H+C6w3IKwD zhz0k+Q3!xbz`C5i_~MIy^gaAn!i5dY5+*-%^hk%!ov0#nLJ^S0!g1Qz!F%C|Jz9;^ zxd{jaTX2a9${5k))e9C488a4S3h=9r3LyS+juYp12ml5G5r6ADgoFvSQ`3|4vYT%| zw5?8Uu#qIyt3zA#lU+$jBoe#6v2p(bJ9`TNE*L?MKoJp;BU;D};CqV>Z`ic%{_Cc7 zZq`EviNuoj*!Yv2`w?I9aV`Q*)hP)TL6#JWanp=8y!g_Sv~bOmL)&*$o+`X@?3M0z zO_r`-TX^WK*O`3d_$fIpGQM3f+kMt`?d01%Ili60Y@9M=d{%Bt!by{))Coh!-Oznh z_4dNfu2$8xwS9XJI96Qf*Y!iu;+?0q952haI0RXJz++X)k(x*y2a#UQYs$+u1q&fd zsi_TCl%8tSp;uaFx+^{9tM%X1NtIlV5}8L$QxTGEDN+D36O*pGYE<3cW5w&Y8?{x3 z&mQqLNshW;%c*@US1&$&>Zl(>AFiL3UwNpWf{B7Eij53RMi_7kvJL!1$W;~4gqngx zBQ&6ZsmU4j!fi@=ou1>$uC1=Cit3eG9b`CaBGFJFI=cU$ijuNj2a5&{7+K3|bZXGj zsD~+&uef$vzsYiqSh8$+N<#7nue|3?PuOvG|KfvdqNYFF?OgKd$0v7gPxeZ6{^B2& zEsS!r!DkVL1%kn|p-Lk$T*fNulwhT(^<^a&>7^fU{<6f`AW-Ns(_Ls1&WMm1$!L(9 zRLNueOqe?Iu73Tm`hM%rNPt=#2%f1g&EL48c%rQ%xuZLdH`{O`3LBfD=1S)_43M5gq6ja-^?9{LK;CRR# z=MM*gQbM?}0hlbYH)p<+l$hMQRXf2YLa8iCoC|W!^jU!5zy!piaDfN_h(co=IJG$l zSyqS*AX$Ksc?TAZyJGMQGai-#aJsnq`T^JX?cM*~pZ{SW@m!YBV%oL0>9#ff)2Fu9 zZ}BGjCOqR&#J08DdI@su=o=|ytZ@K-+GerZ3ObmiK`l=DK>Ye!Z zz0G`Ck4~NT*^;@3%eI2Wy^5lQd6K1JDAKEYmy{G(U%e0AdUeC8Lk0U=Hf?G^(BZH! zs-r9zGVYTCh-ws7RTT58Pgi{21xT>GcJ{o_&9(`%Pb@;GTv<{YDX&gVN@TTO!@(6T zix~BTIt{2TEjm_m*hy%E%`K!^wMz4o{HAMf{chz7YJ@?t0|3rk8Eagrl;@?l$*6No zy7j^BMSIpBuB2h<-KSo167j(&Git(Y(mhYL?%eU{m#6!+@l~>8rz^@A&6&43x*#Nl zX)3Eo5C3D!{GWHOs*lvw7ndZPj&9yOI2A~ArnT?hZSvH+w!Cn!J56PYy6}im!>(Dp zbE$5HWR7|?c=d>J%TKR6R#9v^ERY3q&2@`d-(}*}HZ_*-nmz zVxh)l29hNyGSwrRVJ8Yl6w)1uMp*X?aLLW6CBJ&d(>YqAW+NfUfva5Y*0httXyKk? z0u;1y+p_fq`R_QKG^KS$`<9v6F1mQtm$iWkt4@$)cYg5LTX#L%G%IUo)m~Y0MO412 zc7tUI7fmggy15Qe{j#C!+Rfm z;89t2Q|dsF1OOq8C*RmF=f=u58UP89ERbc3sl;MbKT&gro4i@mX1cJ3b?!Q6^=C@N z^qq0sd-sFajk$5=7hj<4dS>$T2`*{gwtuWRwqkqX0bMdYN$wCv7w=xf0tH32hn}AQ z%SVrY&WXuUDLi!i<+mR1)VishND^~fPw6=*H$C;`k6yd4>-E!q%?16oT3>Y)^zRzBu38pI#2vgfMOOYVRz&4|XgAo?uD9I5<6_2Zq2JH-F z%<7ZS{PufpeD=fFsw7(jD|qH$CP-2hyS#O)t1iF7PRuBFVhD^idscSzwA@j1G_3+8 zQ>R3dlWFc*r@LC;zhKjS*WYE-hpR)?p$!XjE^9O9sT<#T_vIdKyX{@S z{n0D0l$<)YeC3LUu(;yBJ6>P^*WlusCwfe_mmO}^sqf%kp08Jabu6dKa9BEraH!6 ztX?{P#KcamFaPnERd#?dr=nIEDFLCo1vf1zRgSio3i9y%eLpTeuvk}g*((d(v={}G zcS~*ADlccrfz{lKx^!}7YLAtBwz~5YFT1Ss;rt`Mh}^4r7cX^0sU3mH&b?dbZ1|B` zIBDdy4kjxmwCU4gIbN`M=3LGrnF{Nf+eJ_;j#O_vS~K;HM?#K}kR%QfV%glJ zCr=gp(*1C&4B=*BuSQO0|+jGgF$yX$3?7(izFl^h9Y_*7qNaTK*10%MuAu$0@^Wg6bcYRrc~!vG!$`A zl>-0QV-@1WiSs)ND*ypzb4n!;LIV{MY!Ln14|(Zk*N5-TsBfs{Xa#^c2sk;VG0Q`^ z(5oE*kO+pz8A>uCOyR|W@~{y)6E4?+o~Ds#sxvXZ+T;AO5Ckp+ATK^!_`yeS-*eBM zy?gfKTtkpK7nH`@AbvF=AdP_2#NqBF-?82qiK>vUbPvzy0)axbRp@1xH^o zu0vLPQ)k6xr(S#e8OCZ0>g+DP`;F>7vS~_Q{?YyYyAAH&cTmXI?NDga6(c-HpkV9v zj!B)HwQ144TV{5P7Atq<5AJ;B=KU+ng8oyP4KFTzr&DH^N3MGiEq7Q-1>ot-dB>HL zKUn)Qml>y=09FU9W~`Zg+G!wDvya*CFxpPc%E*<b6W0{g| z9b?V3tcTuwtXr>P$tk&90u!P;cCXr|A8bgC8m1{gcG^S^vHGxy3DioavMNhKQI~(Z ztTOuEozG?@Wg^Az{{C60^Z+?lRq3=92KmDDx1&FuSYlyRaiVVP!Ue?S8j{N5GEo>( zB^uQfXOOSjzsX9HqNab}(akSTdSZO1J{osf0_uW+C53C=UHo2Mq}V~}PX*s((~JQv z`(HQgI*qsy9NBptZ+odD5aU_ox%{i^$%VZw0zx2V95_%?QdfH2vs21QsgDq`O}VM4^x2!9i4We4 z^T&b+AdnETdhPPIZCVfNKUfHfGn5o01OXTacJ4xoK=9mDt8*bb=Oki-07cz>=tyDR z@mfbs@vcKVe^{tii2j2Hru1*My=2es+MTP4wsKT@BzD@ie9K#_Kh&FYo5`SZ378IM zQC(3uQloe%748WgM&|sAKQ+A}Qugi73$GY3szqvZ&T0F0om)ez17-PJ zk8YW{aHg)Y5Jpm5O1Tvs(xqemye*ga8ywiZ*>zcRKqi(;Y7n7=<$L?PQ#)Uom65UT#HRgK+kp!JxxT(uJrnTM14wqn0B3qir#2m4xczZbX|`(FulU5t zBb!(4SvpUSG`OSaE@wk-of6eNPfmN`-P<01&J?%*J!N*_9Zr*I&`n6^L>Sd=79d*}ZO_c$4se&k#oYvr(%8F2PiE#>L$9z5| z*R7>Hu`@mBpFrAkZB}a0+q=~ z5*0Md42P^8JAN#MdUpJM&iKLOEsEK7v}6Bq`&X=PNGUyJMx;F1VrH7dJGR>xD-c|| zbwzbH=Q6VmJuFpLL4A4DkiCx5a0DEna499|>+EcPO->(&i6EktwI$EI``o_JsZKpQ zs=Jn_ef+L`f%)qKn&0BowO5b{HV^t*d z=;-MwkgkACI1q?gjxzy3fC2~PsG*XPmT}cpqv!uLze!5!)mM#>9jInG$4;N{^dpb2 zUcK~#Y41`dY1A!vtWhV{$;r=k{a*@Pa^W~45GuHh6i}jOFd}=k#y(!4hG9As(J`K&b=*fT0Wyq;^_v6O!e8_^n4meq&&# z9t$#hz&D}lc^zP$R zuNga_*R?5GE%rAY{A~MYVB4~!ez@r49FdsrN_gv$m)~7A>$ty|5oQyU$QI{@Gswab za_hrS_U|#|AD?}-W$W5!raz3K$n5XF??3G7RvDebM7J;;4%AD+I(2;47Yp93)fLo_ z001BWNklfrIFMe}s(|*FO2SSx0PHHl^1x)3_HuW9HH*G51b%vE* zb$Op@L$7T{yk}}l!j;v;DS;*2ekHq}W){<&upZ1*%W@?>$@z z`uh&--_4mOWM5*24_o4WFFq4N-!FzplX;ijT0iQy+`+CXQw>>_MZ!)XZy74 zGPYm;E_q#$B)57(3agXeFVFQ#F-=Y^N?;5<297S%0|dwtwv_1kGgQ-y9@4GxA$suU8fJ2Z_%gGx|(X561!N$r+?xTq#l7qkNnp{k(+``&)p zl%`EuB{;L(s#|fo1fp#tAhAIJ5zI0O0f|yXuo)6&Q9>vPha>`qk=eTax{aS_sL4OB zUog7Y)hW(o7dj+C!4}eaTe(K9iKG$-ILS35Mwgs9Is1n>W5-SC*r`o=vxL_c{Kbfd zKKc2RJFdQq*+c^e*hm$^8f`cKJ$wBB30!L7xDbN#m_wSldeVfoKQ9?^{WyV~6D}x0 zL?JFlRpXp-RO7reDu4@Nt1<{7F0>hPoH&;Vjh*tpTQBENx*Q3k6?IjkUz%d70sCY_ zUS^Afg}Vl|8~{}1LI}W%p$kK#00a;@DzelpHAxDE^#&X|qF1xD%y=a%&L0k?+~(1_ z^XByH*E>72B>@dUIj?#I{2XUwr&gI#DMM9yYw&=nZv;gfI?; zk5LW6Wew;(m(tFvfL4$}8lO&n8HaJ;hecr+-4PrYf<)N4nMocPR5wFzd_tNE;i zF#{)hv?SZMO>CIG`MV`c=eLMB#qqL9Bd@jrrc9nfP<%b>qbw`Ivp4LhGlvem*3*RA z0*6nyrd7`#5)jIO3tClHwfUzddUf@x1&i?tH??%tHW}e8LbjdRee75fdciAEzhp%W z;gOJAa;KzDV=lkq@!_{rG}O*9 z^)jB;CReUZkOA>%A zU8K@6X>?2$jg1F3Y+bkEhP&?sLXdHw@d|dFIRA=sbMEoC2k3L1ouGg%Fj@9axN7*k z?cZn)a>}e+bzptp+{-1Qpb+HZ9D9)i2qKUp>Oc)axlA1C?x91j18~L9-f{kL5cHxm zhjcyMG`BTy7YB(*v4bv;T|gi<8k)wY05QRtu(`|yGR7?+sBq2Jqt#W%Ki@bWHXGFl-MxsbfIrvCmF?5~AANujf~)!pO9r zUh*cQl0sTOF!SN}?te`Jvgydqm*%{7WtUECe_YqHXNwlDq>Z1=Y5)~{x<|HeT~lBdRtu}%LqbHB)4hud*X^3S&rm5R$&Rp^ptzp< z;+Yrke&uv+#p>-ppV+cZQK6is zQh{?@wT{yzvT#k$N>z&2$lNw?X&FE!U&WbAwe~QGL;w= zgzyV*t|AaDKM{!eW?bhx_njXBMm-!S|}d`TM2&mepf5q(g1kEH+3 zc8cvbT_n7{HVa(ufA@KNXUnG^d@S(wQzvT+EQLOB{bSeknV!!{CYve#6Us{ripPvc>|T*3R^feR@20 z*9$2w$K0Cy4z$_&4V#Qq&(MM6ipz^up3di*cTA6QPu=jmlQ{$`dkYREw@EpuRtIII zKr?0S_Hj4J$cld1`Io2fsY>TZyjDsYRu-SGFDes7c0yL_Ekho9Fg$B`XcJ!S&lV@H8nR2PMJv7AYP*u`=TCcv&yg;bf?Q$z@Z>#3gL~ zhlO(vAKcOLn!envR66x#M|R2zM!2wDn4>rfDB~GeU!uz)un9)vID#>0ZVSukG&JqD!;%R+c~&RXL*EH|~DIW7+M-c6$<= z%E`b6AtZ@VR2ggP&dlhT=1|n9Uw;0vn;(7QhnK=~AR z9VgEJTf}d_iY+8z*{{!gXIb^K)8VroMR2%N<1CkO~2 z0#r^sy6mpgZtH)2f~nD%kR`s{s`Jki>ip?U)nQ~mPAOz zK$ogH>V>z|RH`FXNU7!EChl8a|Enh{$>mON*R@B0`xmVKrsC|16KA#``uOS0ASo(4 zGoVZN;}!KDUxHZ}8J0C*>dkk4cl?*9#y;z_l4S`Dy(Z`k*6@ghL=&zAmi+cTZ|9{n z-F0B&7tcQ5$D7G=ldFTZMmhKrTnP5r!!!;fLMV3)zpE)x7VTd7*3mU(XUbh=rryj}7^ZVi ztF9xSzvn67?45ZtOA5E>vMoG5m)qN+d6!%Jj`yP5bV3NDh8bG&bIMV00KbMCzrez9|)yJ>PaIp-)6gaJWOFksG#jtS%Fn8rAUb#xrFIHD-1 zsGxu#ARrPY=NuY3$6uYf{dBw3rXr?3 znKpgcnBn=wSqh?(`5lARBx)Rp)OeLoeDH@<7JhBYi(LDWnSh8$01Sx{M>gq?11i(&N zo1Q8QJ@s?CC?G||L2=@w7$KmL)4%)ko+Fzdy7^I5O&D3`*%t0-I{NAyYt}0j72tXKH`x&ZRq+yfFQVs1t)GDrTC`p7-RWVb^d9 z20(D>D%Ma^e{{{Z4KKg;TFdl;m!5seObv%+iomq zOCmZ04>$8_av)B;V^!|d3-0)E;movFIRm?nP4j#sI(H7I1s?kIb1gdb^xL7EpP2N-1>MIiSh;-0+Aoi6TOQhyxPI_t>9eiew3>=Ye$%#>UVANo6q0_N zHTUSQT|Ah2u`y zIbE9_6SAyy@A`^Wai7w0UziH-?sj3Ky!5@5U;DeZ=-;w`|Ga(|^uIU=CLwrUogtjv zwR@g@?TG{1w#u^T_z4$v?%w0kKfh2Fst3nW*%%jQ@64_f+K;(<%vF_Thwi)Y=B42S zuHO?4iUO8lri|@6=FSl}whgy*>*R;;ynp^h zlU{cWH2``VF$RWDJB(alwyTYaZ{M_a+pP3G^2-J58H7_H;MXRX3^)UpH0Tun5L?@S z1ZUgnf}QNasgr*3fUUcBT)XP$SVgU!oranK;NQttIb#Qu2v3X=&`ML%@m!N?OeSrl zk<;Vk1i~KOdORfVy8pAO<=_||UN+*A*&i*aQ*mP2C26AZtHiLAjoi*$XI`$6c}Xut zjf^3Iq=bk@F77wf1g;5DpOO7E(#UBstoy(~N;vL%hTx<@ab(OgJVgQ>CgZLfqZr4y zmx#PD?Jp)#CO3Qb?x|Ubrvo!Lxy;rvW+u?xpH5~5G&O8l z=D2Amqq=y6|Hpbfa4YT6_2FGv>|ziaeb>} zRKx44>TCWm{h4~<4QbKqioxTL=cq`w&&TN2kyqqf>3{f_hnMVF?xcDU@pwz~SiZWX z?~so^oHb$m4SfclL&`a{e%-9Ud^&jSq|sLo3>Bo6sLIDa{==rj>t*%+=Ev%7S4A_; zxM{`@Mpx|oB%Gm@&}9)f7~+A9yxVX8UF#M_5tJXUn6d8LEio2{R6%tWvsTS|;_|6I z&OIlbS=c$ZeaH=>79KcSs9IJxW5Kl5KhD{?b&K+W-7aNA>DGB~FR={PoTWW}=K~2} zS`2)hvRb#w&UZjoc#aWHdwS9(`*v^s_=_(Bt$dGNeCKbv4db3)RYkse_anO?^!#^! z5nOr7-LQ270uo5il74R6c7CkRO;ah$R;=vbdH_#G85!ZphR2Km0g?f8LLgv>$bd0o z=BXGjf(EUC7~rq!+6jUEecCq>qC%kn1OP)p%ynf9!1Vlyny?JzvM*=PzGD21NR-^k z35&zCi?dFS699oqR;CaG(!NxG%i^L<>o)c|ZwN#7_jO@sp5(;<65xr%Jg7NZ8A?qv zOa=^*h&Sr-MjAP77-1NLV>%DBjXyp%{mE*#>ibp8pL*=c?MF9-(!{z1*-u~cyhsW#mJ%M=zW=>9Kg_^>^Y^Wue(Mk8M-6S$tl-<# zUwa4&y#?QXRkmSQQFfaFeTM%0)dojvBt$X{GCcx=>qCcjU-rT^8r^Wh?%i#0xJBVP zefn-+u)f-gm2?7W3ssy! z-SlU@@9RBFLX2ND>HIp27BBxUk?<&mCt5&)?%YE8@wq?&$i1~c>a?b%aPU749lZ!DYM#AL_;k)kY%M*)FmQJNg~dbwuuFzt%$Z>T1L@-wGNeGz30=9SWYd(FrmB+qCyHLYvG;@{ zbJk?%6dUEvXYc;?_<;%$Gp@Vi-t;#4ql9CS=b_;P8+FuR+5znV0B{>D1Vj=Jq751V zG-yC#Co=&N5QyQ46kLV?@b`gg0!5%tCKx7D_mT>XP9_u*0BArL!2=WkJ_&$aa)BbD zRW<6mI;qQp_Vihw7Uy*w(PxBmG!q6eMySrR_4RC%<8bmu$f*#TVO!^2c>a_3KG^4+ z!GIoE2K}2Oh`;{&=^fq^r+tEC!7w50+rBe5FV7D7fsyeK@m_1Bk+U8KU=bHOJhsE= zjO$XTulsW4rsZvlTYoh7uXEPUi&jL3^&W2i?OxQsns)Sm6X^ecct8zY3(hQ3%JOEd z`|i0} zR99PRXBwA`zH&(Sp>6Zp8<3{K?A@~4)7L%JytwJZ??1Y5^VeV)PAz3Y*3PXY=s7%=d-XN0Uf9(Xa-DznL^A2uC6QV-=H|1#TlMJR!_5tM!x zIRGc}L0prwFJ`vn4s+3w2kQ3R`~H31{cY}@a5Hi!i0a(!@j$8_XxZkni?3h}(NE@n zsXStBe8;tuCe7MJ?dNOel#6=Da6l;Jc=4#w?|eQ(Vra#VpT9kPG(9S#K5k{CN6Tvc z0e{f7d$j2|>CTHhN6(!7*7h}%>#C7u z!h7oT7i;Q|nM}LFzUJ1u(z9CjZ__``$aRS;Wf;^jZ^PWFpFeuos9+Yi$Wqb?#>oll zN56cjd-kH{RvzY7~mF&2n@q~d~GVuga;|T$dCt7AE zD}|G4=#)-BwKC$#Q3?pkBmyN!fCucoS?~K&aq@uQtlaox*q`&{wNJKh))q8yVI-Yc zG#~-}BU-Khqd41g$3X*VPyz@*oKVC{A#Gm1`rxL$7hZcgSey*;uWlosy4nLc-D8^^ zh+J#Xq&X4NhVPb@9XmGWn#+Kp2f!I?bR%x0k<*7HfFhEf=l3eG`h__!ezf=lQ!1=i zshLgx{M+}3H0#fQWv}w9vL8BWEAgM7i8^Ucp{1mFl)E1+n*P=|ua!C#E%I6}eeCNn zWtik=|J6QDjWqHfqCung%dyqBPP=t~Vz*MBCk?~Q@t2Cxx!uS2Jg35pG0Q*c+)KC) zm|&Auin~M!fqH*U`Q5KSy0&Z)f;Fbwq)7uNpWC)Sl8&MmM`@$*Yiml?nR9DxRwql7OF;nTdgGh?NFnq#sO`p(F{$RI> zo2LD+%YXEE6ZBF|bQvc6o!j6dKuWswFXVVQ8U1#ndZOs3P;c=nNENNV18GyT5#`u z{myT9ef`@ZV+&c{g%hqbw4Z}%kj=nEOkM>LfM!W=7C0MJ`B@ho2Y_FN#sNVSO2igL zMO(iAIa*g2$Vvqw1W-i4@NY&Zr^d(W1;|gDXaWF$*1!lfAtI3?mduGMn{h9fx76!uPd2UQ94@{;xfvZWl zI_CN7-Ed{fiY4m~rBzquu!vu2i21-gx47Sfm*1BcF7lD^d#-l%yYIfUFTTslH-7l? zn+6|6TbQ|yFJD9AK*JA5zO@~m1;$68eBQTD_Xdt$AhoVEo>7pQLMcAY7&-z-8U`n= zD6wGe4}Y5e(y&eghYaZBqSL?S!1YIVtl7Q9Xsu?f`t0GccU;^38i<6!G;W`A#oqdZ ze}3uh8X+SLikr5}PR|X3nM!`9j1c1zQ4Y*1#OCgu&hM z!$;08`~3acpI+7TH@o)iY1gKc06=1(wbBe&a!aQw_0I-b9f5|-001BWNklb&T(#YvTnrY8M%R{F4FKd3e@2khSCbv#!q_Sg)2B~8jJOm_-44G13 zoN*U$0zl-%!(jS>Y+>~4(0fRyb2R#a1pcb^KqHO(vyeh24ClO27kswsi;ag?`=r%W zHl6wBd(aTd}Kx;)Wnw=)pAE^ zeU?B6?I`z^GdpaR@nCU5@!jLEeSXGM2V+NEKgON7SqH5>Q`aV@K68JmPV^cwXlUQ_ zhxHmx5P$y5m*=gV*QYdHV|1f!*G-*HZQE1ZZHlQm)zt0Oww2=PbUL+db86e3+O}6C@_C$?9pL;oAYck7{T{-g-JL59Lf>3 zd%;0}Yf~#SR8!05TUw&>XHDK!P0l8KYPGncga3AlH+^X1U&OECN-y4GnUgH$(lV(0I6*+xi7ta9)__ABCe zUXbt5hvNOc#`z88ENpuMqdSp=QbpN>33P zSBET{*6Xi~*CX47WF0Nn#mTssjvzZn)U2Nor(G@+0z`bLdwiJW7}R5aQ0RK(x>g`! zmkFBajhEGpVEDk_U>S0_T{+pwan6nE!3{YoZk4vvi&5SY9fl=q<9ohWmKJhs|W$!P{it3{sj**(11xoVXhp zJ^ACspVEIEXe`;+U{clTvE!FiD@MUL!>VYfp#Ib7QV z6)6<_*cR)P^8ITsMLE$BXkD%z4pcY^=y_|n&BJliOJR}lhfT>PngJ0NRk-Pf`eF|h zc`;|VzCBjf)$-PpUM0I_^XD{2KhM;Bq+peq?6P)V?XPco73tlM-82aD%zJ65>L*8i zAWXK^*!iE@eB7-L#1alF2E@$U(4j}bwp1vwkxR}x!)=JZAOD3U2lM$v!$8XW-YRRw zW_$R?>OxL4MgJ1Ut~pD_#+LN2>vU4Tnav8v6)iGNB#-lLls}6s3R(;M5Ai`CbA}c3$dJtY?DlMb-fCiK6{htCO~L z(H7&Ab1L}E%~qFRi9WoYHI@h4o{C-OB$utXRS;SVxWe9Y0Y+VcHn zF;HCUlV=kpG4a2 z^3uRbWk9Jxj5rtkFPruAB~Au$vP^;J zE{fuv872S)KMZ5_6Gwg-`MGy;)LZ!{%ky(OMK@Ljqm5SR{4v}8d?`5iKXQCvRPk3q zL?zFItU+~k!UA{2Z3>1kKcUO_>Y^^*!@d@Ha~m$I(R-qU)TB=c$p4&>|6|~J*@l;$ zd9|9P-?n!1P-kQF5SMeuHzlZK-eE0MlbMh}q1d)lbK^GsUa9NheVer?j_=-m!&sG> z@)uSMY6txggq%VPt4~_0*XEIlaBt|xE8N+1lKWfvfq+ZF_{^wp<8onAR8P}e>G5{* z*eMIZwtm!@*6`Twt<@^(fwZ8hv7pp;J0CdV^Rmtc4kRY$CD24X^N`JHXYt%P2I#@@YDxxivMdzgIhfm+n z=A(&OwBLsw4WkwZhwjM&HY3%tTW>pa<7wN4ZX00Qn#{0^J=7*xPW&hs$K{?JZ$18K zGCdv0z>B8^c$Np^Weeug9z{#aeZD;fTUBk_#A)G12;VM|O}i21{f%C zQJiE^+3Y|ogRQ;ZR^Gi=DQrJvu`q0KEaPMS3hq>p-4uJB)P~tHkJNN955Zr~!u-~+ zPQCXa;}GU4)t3stNze7d;OuU+<`dzb>)c%j5pd_N)aYfQYkyr^u>ZI@53tRg4`-O& zqo5QUCZJs{qM*&+gAFMFd2i9u_Yml0S>;qqeQV;jZF5_J(U>n>d?4lVnH~?pDd|l? z=P0Dz9h~M}ckNO1zgnF!qD!lwxjzl4G29RhuVWUd0&{^2p}=9e;%tc6mR6it+P6Ck zHvTUy5Z_5cDhn1%9ZEmvxnKz*R2U2pHOk;>WZdTSD&~6@MRQPm5~IbyKPyNtp#*j# zrbxpBw8gFM7=6?aF=ERxA3M1<7S*DR`3zu!7Pew(gW18HX(N$<2-sLjYPL7TcB`F+ zP}DpgbTE+uGGhfk6clAnIUik*&;%B1*XwY!uBN7jx}u0f@4(~6biSQ( zAy&|`R3z(wyx&pTDYT}H6CqOQ8cXeco$ExEVWXwaLTdHa(>smj zMQ<1H0jcZlOV>N;(RM(A(WHX1zqC^ArPV9g<((g8vg22L-x|t8PGwoC$rT9$VKv}? z^jfsCFJi;H;3JYAR#CF)a}<*BMdgN6ePuh1l>A$%>P1Y@PZ2>t(i%m=ad+Ip+FtkJ zqQ5P$+9&q5l&Mojq#5_2-$)C0K2!r}f388rBxewFhy{`EWjYmh1N?y&HkVB@I_ zkkH}%s)ojb>$-Q{?BlXnNOP^qCZYUQ)Z6`e8>jF>46b2(3oQ5CL8xr+nju*9ezE4> zXa6>VLcwOMjBiPW@N$3hCr6e>Jt!n@uWIA3|Na8E8r|o@PzQG#E^)~k*y&+}F5rB# z=rW~dv0w2ro@_%Hy)s3_K}w1KamE-6iZ2h4r?yVCUGc+es`029Rt1y<4Vpvd0y{SB zk@GK0<`_-hO*uQecxMXYqbDxt;SVd-A4@`mXD?|SLB+C`m0Fw z>5?kwaIh%q&%X6Gt-spf^YI@7#6zcP!>>U>f^o2wmwTyy`xCdog+pJ0JaGF4%deat z{TQE?C-IE__k~44^Dk)j5}|OKjdxcmk~9b5ccrLQNehfMV0bX-QjXwF;uXhAZ~&knb87|0e}5uw#eQKGP)h+8P_ zYS%J3daqWw*9jsIlG(cap0Y`uUvOshd~L!M{*{W;#mBYX@{rR{(BtAK4Y!V$#(EtU zTvC^nwO7S>EaLHVFp9gX++=7tNzF+(xDOe4N9H9G@;1{*lyHjgrZ-Bwm`%8^pYBG$ z=}w7`fOLY=gsX@551m3m zS-is{|Cu2Y^*cj1E12Gw#Ywqtr|5iTzv&`FS1)6_7a+U&x6gWP}FYqzcGYwLTkj}0{D?vE|gJ7)Z+tIDau(3#z`4Jx*7 zDIWfh>Z?gak&yV#FbYT=`6{HiNaVQEOXo9$76D{D z=l9$>YKOxFu$`k^t1uRt&ooH|N?v>ouKo&MjSrxp2(i{VB8C1-iuH!JOOb8@-x z(ZhGvQCiOqf0_!B7v`JSlTytl`9BSwb%Dj8?lw8MvvNt`xzTV_(5aCW8B^5t-UGG*-jB+6#?$jXH_gL%yEV8SRXM7B?>dy$t z?LiUu!X>rq-Cc$+NaOb3V~_QSx%uGu)dmK$JM~l);mm_&v3?LX;#9ZUs<3z zaPGatYSl9yRZL#yJrcp30iKZu03-P&)V~n#QkeBQ6^h`?nkcg;yzb|# zKi0}hb`6V_kcMsL@rUV;*@1Mrv!8NI7=hF(gfc-&Mfeq)^$?3^qkJ(-s#PlKaAsm# z)7dIKA?|0h+B#OA&A2yllgE}^o$`wbl+CC@Dh1iG081dEA+1^>nz8Ff@ z7izVFrHu_A=@dK|PLmA_BWTo3j)OSQ%d|tEFk$sro9*8BS$315X%VFyU z?HawUYdds(?xy3ITXBUiZ@+n5devFD(`Cm-kz)gTM?{M`F=XQtoQgi{x9%4YMG;ou z7;m?cF1m83=0hKH9l;Dnk|>8$NYd z#i_6xhdjjsLT95lVY=}8-){MIF`_K~qP%v@OvbW*T~_1dIQQ-2tS7h6>noww`B)Q- zF7RYfUi+wk@{b5Y# zw614K8qkCYks@%Y@;)6M`hS#BwzVjnla87AQ)OWxOS$d`Wv4%!{ByWzP8Rj-I`ed^ z&NCn&&_>(11_k)*@oD`k&iB^)Hn&_)`DP4C~Pa+Gi9X zM&*&Gx80n2t>O|_h&J2JMyUinPM!+v4+=K-Br#<-ofUtpx6>jAyqE%JpWr&5vE`xD&_gIQzlQNDOT!%qW^owxry~}S7#UF!pE)ekp z@yZlOxwhSa^C0$=oxs9*FXX!G$ZfOYb9CsOkl@*LV zXowr8M}Icf9f#X0mECIV$HC9wP;$1S`(swx|G7KJE#Y%wv1}+g97w$M7g5&%_}01H zl$>#PdVK8gxX{oDJA2?$%VK@8SC&)~&k=8fD$?ot4~!$i(E4{di_EDP>i)btx@{yCR3G*ApST_G zO|NdD>h^O=T57*K7a&MxDW^(ZH~Rb-WKgQ~c3L6g&Z`~0M1%(grX;Kkv6XS8OqGUP zm~?v#rw90o*qlz;$1haK4hEW}eL$TY?JJqRDz7gX5EL**} z@!cv6|M6vVv%%VB{RT9|Go8O*D&RT&j1}3eOGgy-@kZ-$73)KGx?X=PA1%Ucr%-R| zllZwBo_OhBQ>gE>=wqKIP__6>i#mm%X(V&CZk~tSyz1q$efM9E{?q0E)^cc42H9&1holuirhp{u`H`@lXck)D zTT+tSDiPnln$_9nGZnSzcW=;Ef3>x}i%%sAFP3gffQUk2Kj0-nqW*b2mdtBs*kSVN z-vu<_f6-Bbl-}#hYDrnIy!Z)j0`S5YFt{5tDG4($(1c(OsDlfpQ1Jg)k`-r18K+86 zU<&}+W~=1<=2S9~QWo;K8zyPvO+sV6mVG^b&F=EQNf0D!_qZP=5o}DrPkQf$@i;hW z5+}III~bsXvDDVCdb*ucWTP+D1O7J*0+f}SrGc`{$F_5F{-TC>yc zV5G43-O*fWJi53|hxh%7M!6Og(xb%2WyWq&JAA&JuTLIVGf7elxlpD8fiVTJ|Axj!U0l9w z?JX!z4duo{*kLX7?#&lwmnc+Yy|yurkGG3U%8>_u1H2%21WQ3J$Ko-+3j`F5sE4^~_WWiq zjNz1oR!N!LL6w(OhuJNGVlo!-8^fyZdRyA()myAPqzCkotI&^#BTgofC7-W1-e1^U zj*r{+Hv8q={Znr9_uf6#LK~A9b(Vg7nwUfEn!=eNBf54pyPwJKxPFgh&3Lv`X}f= za`c8j8Gk}@N8LI$AD(3pRC0pF@Bk$hcTZL4t3T%xd6hf5*1mqW>CGihv=H%Ut zSX>0`#~zb#uE4=AGGVG+6P;M|T>gkJDc0KXdrxiJI8t9bM|%|VD=DDl?9z^(BcAzt zKfEBl(PnXU6!^nrzc_^PL304X=&QwwQQEt7Y@lhK7c4vo08IdZ3R;kJjE9m4);p%; zMCm&K6mX-PkSmyqs|MAhi#xf};FqYTLXn;=w-ztAqA}E+;6A_osdhh}3s{am_07x4 zWtpiSD#^=xfQ`Wzw%@GaJX(7BCMtzCACD0hd^YXy!zkTpSm-3dn}L}_7q>yL(N%js z=s#)5c1uX)TUl8Nk&61iH7C@Tl$10#FR?|Oot>HPjBa%J98P7E0b%(LH8eDQ9xpo1 z8&|y_FYNFKA;}l;wEYVP0TlphvR}tHfrEpawsd{I*@t`@3_LQrIQh?;KZ5RO0KjUa z@RZMa!(zgBEIK7vKp$J2Hv8RU>4^pG$J1_f_A>JauQUwQ&vbVZ(YHQ%n4yRVg`X*B zs|a*wsLE5Ehmt$7-(|SYCwQw{?lsYa@a5rm@G;3V>>DhpBDtVpODOnr0f7L-SczcU zl#hw}?566l@0GQ#5fZ~lcf%Ka6|X9Pm?DRP&CqOdhHq2Se0<rb{0?m+)Aybkj#+^5iZMod%>7KX z-F>9&S#S2pzK^u)?zg7-A1>A-tb=6vE_xR^59$Z$AUUgL<~F~Alj&X=`fT2ZWoJZ4LUL>~66!mdnhX+xY9I(@O)=!!Lz zQHN%;jiXediMm~%KV%q4JW~HnyZV?Y9xvU};+Zya^zt*|Bb&oj#z4jhGXD|DN==RD zK7Y3G_dU!Hv}EgNmMSG9mUa*$hK~w>reamar52J#1sSy+|A)6aqtS7J zHGR>Qg?_EW_MX?Fv(Eh(Z456UU~ia|u}|Rf#;Hj3ZvVtft;?JCrxby+J}FMayc1UF zBfdGm$Veq@+Pm&OF|U!S@ga+ypc}zV=V32vmqC-oEm8JIOTFvjU;mDz3WK}(7k(eq z^Q<~of2#ufli~C+)OpwAInh3)dp?yJoGVdcdRe!iFtCnQDAO`E29zwD9S{#30|N%^ zr3F&XfeBHd1CbH&gA!IS*QjZ^B^#KoSd9aqwR9OG#cg2>$}}* zV`UYD)-#sS(a|w5Frdf&%EV+lTNEkt6R`RJUVw$x&Q1|tUfxtcdweO%SU&$ZPbn!W zCnt7{iA+IWbReXoVfZH&Y|sxW`lW?lbg)si0PWlPEKm=h6e94uG)yQ(RBF3 z@@gNJI4^}-a(&lV(%iVWo5%FC|1iJ9b*!R<`n`A-NuGTEM@6)~+gbh>VK7B!43O9jae&`1@=_X@At#KtcQ=MP** zuAcF^pUtt-b-g1rwey&rC1f~?0p3dR)s7g<_YU2TmKr1$JEw&2&%jVr7k(d!jlsX7 zTes5WSvzwdw|YnfJggVXb_MNt+0CfB z>hQt(N*?E6rXYv4%}?z59)|TSabaFKi{3g(H(EmyQRCE&{vzE7U&@#bCbe4Ieynjq zz=Qro#Q*HS!%P?ZXi^gMsrOSs&Q0yVPSXoitFzFhb}lQBqgGk^;5t|H=2e0UAzldq zIr!-jj}rDtBMtzafluPdA)f|@!bgT|qum3_`OxD7i`cA~P(fg1erc(G00@&UHYQDh zN|5*bFdG+zaH(A5v{%2aF+1Sn=(E?&&xesAslc!~Ju<+B9|fXklhX1J`Pd z4{2cQ9X=jRxbpJyM4aXkR%wh{RSKhby}iAiey^lLo@}X_B9OdHNWflg#AEvL*M7bA z?hf*@IN<8_oq&KqF^%h5Xo@XjZEcN!(;POqM>SuHVy9H^7DDoUF0L!h!y@CyPO@4* zjJ0O(;&7YCb5+X3kc*=wFer^Zh5$p*w_1?8(mgJ`4&S}Qcw5mSlwK;OSNd--K#3>c z0*Hxh>Tj>q@iv*F)n@cK6B3~p@Qm_0u3;}x8r%Rq3uxYBktGuq&Xynt404y0K(#QZ zMUwF?An?#p&p83GdMq<8BHuh9f)=z9VT$-1T|X`m&~Lh*MF{{&g%RGd>IOWU-G-)D zwbuj`2bOlKlT#L@LeK3XzAwz-n)ee4gu|a+)aoMPEN(RyWUZ{tzH-D z(orIO&w*5{`G}A?gxJs%Vd!=o+=1rkN>;RN(_QhGkkgIN);+=sj)!g9YOS_Z`L?js zz$pn)*(~18L33^W(sh}%DmmpD(6c_+i!NhhvP8vIBaCdP@kNh-rn56BjY>vz~NOG zcKI(%NTFa2I5YhDAzBMqWNiBN$7z-;g> z6Ft+pDS$fPf z;9dpD-j^SUY z*f_8(Sg&L>jc{Mp5fkKKMa8P(EamA!}0BNEbScj8z$af&yVqAf+I&({`$L7-A(FM@*s^?(m9neIM1Mx~)UO;!Y`z>XuD-15Dt_ki^9~->u>5ny1UJ4w zE|Q`HNAQmcj~Ez^(;qJAnHf907Bce@6o zOT?xeMbAcrLJtG0>rz8uU;snAfiZ9Xn-67n2xVwI#Fe7n%@3A}=T&yP(Yz$pm8IGK z$2e|oL#U(`t4)tvRqL+;D{ZKxC2j>x-uP$P#n|u2iIc{>%{kI%?eB__iO?|0Lqz zpkuCMd_9a+tdt2kC|Oz6Ffp>SMzbGWdpf(g*sWfip9_24>^+>X^4hOirX7^36}Psv zot~Z&5fM4GUrPa&I((WIPtT8!r@8FLQ`pVS%$%H@A|oS-c37@ zi#9)YUeD6T{vAH9|L@=OP>vXVA%sulLJwD0pJ$(I59MSc59cJzg1lN)He4@y=&RBOzZ?nQeEUq(M?6sNH{2cHrzJE< zB7gOe1w5x{muavdh4e^LqegE90bnEndpTe3uz^qoU;1$tk)U>m&cUVkfub6S4?=aHB1HL#NCQ00@qxp@7LWHXb~jufg19HW~7 z1(uuv+;g`z3f-J2D-UC(>BgABXFQa_I1n^~`s~0+1j)T4cJvXG0Vji>r6szMy^7Hf zaqX|=k40z`H)7R9ibt1!{nm>k{n;fsxhVK0^EtPX>wM^Q1hHoCqSQJQQs!cxO{Qmh zwusSVs9|WE{{f&>*ouy4;Pp9Z8?Mdp9CX#RRer!{EJxS^U|^*Y;T=PPgmjW~5Rdy7 zwo$Mo?3TibP}q1(HzF}He-JGc4M6J;(f&NqiCHKJD6Uaa^G{rcAQzT;066$o(vq>L zlp4QP`|7RSppEitvi^N%Puvaf9a2IWehFyV`rY{Y|7i)D0=6eRLc zh zJw2UZbyw46#G$FY?ycD@Ym3+QPNBS^zr}0%c_)_P4_CkEf|_Y|C)pY$2SYGq-3uQ& z7M7Z}_VVH)uiuNS{-VW1T4GGh)y){Ik5HDd&qIcg7l#N0gf7+e7^%qd8~27JBqT8F zHdbiY4K~_otk4xQ(bG4-Kde4pZU$U!^}M~kLDFQJORgW%#LoD536RWlC_vtKyAuTip!61K zvvxlx2pCa!JtpRc#$D02kUV6tB^86k01YF^;E>3oW0F(Tma_vS2fu;!n7$5@WTvG) z%_epoIeYv0`G*b3ny^fTP0qjN*c{@-A&_5XIY$(kvZsyJ~+%eq+ey&qh$%dX6 zF9S^pN@;p2q5>4O6ZPmVALl~>>MhS2hPpl%TS09Ot)i0{WZ%+^<%4CC3vvg=;(5%e z3&)w;nCJv>e9rb#&PWYau#yfC>hw+9)Gk}!+#}hB#Q@5VbjV}O4_UQE$eEft9Kuur zg;T5d!E^yE-EC!75{8&{nZ(3WjJ&&fyMuf;7Ro8N9lrwJ-m>O5EI$q%KKxyk5NnRe z*+@XpaG9W-H7~D8iV%8@CA)4^I-i`@DvhzWcHnH#aw= ziQpOfULVgE+t}DZKvzOc%wMNnDM=;nYi+76E6!&W zU>rauD*xy+LkrD%-ckmGD1Qg*dPLBZ7Jh4CGP3wjeeT1X8uv2=BnipZN;)+)H9S^> zjEsyo#Q7hRjuez!Irs>X00N7UT-ESlVtb41gG3J{4$EEOyJ^+In(v&=~sN{M$>glF9J>T$I<2=?MA%Na2T7oPnQ<-tYpb{$_BDeB77-bU zPflq;NDggjY_C_Mg(F6@HiX?O9b!7ihwzgE73h4A1~PIS71Ae4pR^JZJU4P9(!Ii!v{06 zyfdC_GZ`Mu*!i&O6EG6mXlzq{_`f~v4n;RLG}vvlKX3H}hZ^g-PJa^z-rKWwz1=|G z_wFBHXLs&0C0u;!t*xC(NC`;~NIrP*5nD`Vs1AZqP*5Nl0!bj?^CP;41qF9fl{9FbE=z0tE?DkYEg z+aOh^-zE-S`u$v`eT+Ra@SuyuCY0SPnnd~2mY>sk-oN;9GyG2Fhh(4TP`~P-=PDm6 z_(!&i(|lF@CXgv*B@vzyTkp#VTUb9Afc8%Pmmv2^_vA!yl>wl81Ui@^GITjPKo?vhdP2lI8<{Cma2+QKeSeo!A!f^ z;>g7VGNYgE%u#M~R3^K-lDPs$4(uMVJMh1>AjgF@y78KC-6}{3u<4>JPfuGUK5uQ( z;y{{qacb^J1chvdaj!Z&+(@RGOjOE||IW?F?_N9;#*Q7IVUmpTdyLq=ejTl?$YK4v z_gqM{xhyFOkuMdLmC3Y!sHn5OE!CI=yW9>YCuwS&TUwS(4G-%y8S9gyTUrU^mb;%>9la6>iPV?b*F{oOIK7u(n=laXIY&jWr)h!_D1LS!p+wCCtFU zAS)~TzhG~$)=*WQetW*vSo@3>c%<6B#fzdM2j`M=O2Ykfv)ih4zWZ`zzt{W0aKN1nF4El#cP$M95#YD0k|iI|jyOzh!yzLJYXOiq z2esQF6-Q^i7gm#BE8Pk@bOtBDb2z{IF{!wFv*p|~hNy_lpDYiveHOE^VWBWFNCeOz z!KCFHt3+cOeE~X)S_%_IcRn0BK+HE<0p7=Z%PfBlS3e#Wvp-n3YwPW!1-n}&@Ye6v z#g?fqhY4}uRL>-YFM#-=gYY?n{Bd^X1!zI)FOcEn_*}tbA2+td{V&2risPdbSUa93Aa`+_3%n7Qw<4UQQShQ3KH(Bs17e z;7x4LTN`l78Esb&GKK~Q8k(9mJvRMx8*L%~Hv~4nud_vb`-2N9lFP@A|J!W@DSl3T z#LLUe9vfbVp(sQPmAc6>F^;QtP0R-Ep0h=Y6B83(Ki?119dwfZ7odyt^9+v@=P& z`Y4cKCfRl4bE*ebEU7Pc~j|QkQnjuA-H4&~9~h9<40X zB-5qUL=ccwt>!MV!y=1?&gsWE_0=*(>3t#hc#AZAEyGO+tlH?TVj(hq*Bxu}xVZm9 z$t(qqj;)j>56NL^Z?zZf-pR0Ol~|b$D(2haMA!#XUwc`Nzdj{H)7 z(NVDYH}!VDPLh_bJehWv-WI?=oa%KTv#ML&DdaV{H-08ob3L*K9i@Z~QaF!?`f|Vf zK6&Q5YYKggk!7LzzIj7ZO)Tv8#@DL()F($?h4h}*BHZeKb!`1c4 zw-bj^({{Dd?(^eaSXkJg8X|o44-6C*6g>HgG_6kHpPrvXq_mGdvJc0t?!du8sXjJB zA|eRRhCIF^h7bVFhOho#%Jua%q_FDi>&p?EL8>4`#ZKXK%9}b=OTC8>GK8TuHj7n= zShOYUjS$9#RM5SmxVX5zT}V){t-c-`pfIaWn+f@dV0aV(-zP_D>0e{}gaWQd5Khz( zqJzUB;rgC+ytE(f0xUC~5-KS>*PBqr?K@NSodg9U*z26UnHV4$ zx3x|@GmQLR13Jf&WoT<_OJ>nunV!B*?t0swmL}793>(IEhaI(4kpYwrUGGWTzleCY zpSoA43)wqIS4Y;9f;OnextK%4IQMeXd$m!=mwCVVVNlX@lwy+;gndgMUwRm{K`NT! zEcnA%o4S!TomZAc!WAS|57iM$rZ& z#VMjHF}EHeFA3ahwRb#w#PkXzNN=<^;5DD+uB)a&lnR38=-=5~XWN65*nrf)muJ1#CRd~na^`-O)%aFz=qa6Mo8 zKej=RZb@b+WFl{n*m!-sw1|L%h6Lpxgu@FB4Q+02?(dgWoRx|ug+yWpM2p(kFwkFQ z9)o-zG&q&hqAYF{67Kk+vFYi8PCNax#mX=sC8bFS0aD{~2tm!^H#g4v=#r8UGVuK9 z$n&gbsL_6X6hEEKSR8_&{r&yT%nFV1AvF{d-}s{b?X8C;KPZ`*D}h zAApi!+XzPr9XbYN97xmMv{y*?3yti+eSn{&ru9NHG`BZFh2tDz`=tbYd*9Vd3^O%1 zhiKLiJ=|k7fq|W!-TG3HV@8y6a$iA?Ja7hj3|bIq&ijN~ulZ?xtemy<<~d(8q4sA8 z4-Z*zdiB1K&cEa5{OP=I*~R-#@>sEgx80*nlKsHg(JRZVoRw6nnpCjloJRf2w8($x zitvT7llT^d5|c557k4qDuZD$(hsB|mXWsvT9_KgS0h;|U{r zKOTBZ7eDS3>6ASh^}mbIIjD%hD8)^h$00nxz|&YH9z>;zc)zsQwzQ}Q@4QcozVAdk z|3ql9MWD;1m^E-y>HL2$fS%NG|Ml zw)wIQ`IJgHn~1(P*@f`EpVXeh)1fAUgM3k==-mKjD|f79+q=KQ2MA22gl-ie0qE!F zr>v~(<0EKNQBYtCsj&vtTEOYGwQ>C2jA#-;O}GYD2w_tSm2w)Y&!&xKNz6wXtEOr)N{Vy*r*&RaN!x+T@z3_B*$M z#PXx3kd~g)K)ctifS@4%A*9bs{6cl(Beri66ck+Dy@pVOH^Z@zHKWgvK@@h*&d$=( z(k?Ey*SkX=7i%p(kM;wiBO@bX{gBEIQGq?&-DzoPAS}7k{wsDd4GYU8*Ffp>ak4pctbW{!}+Q>`C{O#cqEcB6=&E{cDg!^ zYeR;tk}}l$rGW9o;@%jfA1(Mh)f0T8((fOhVK#~;<9noJa3mHF@P&Q9mmf2@$-3a6%~#yUbe z^jQ=ITAbsXisLatwWL+x^UlH{so!}3bXts_K*4=~pqUua4&yqD@_0;09@)noZ!o9x zOY`9kqE=OD+0$g+FT5xnbQ%*36~4fK=H%$aWKP~{W(ySW%Ibns$hKQR;%VrF2zC(p zR-E*$Wq|JG!11oniok2;j;F4lZ+Cx=8Gor^6GIlM*Y0E6=8q<$v;A4tv`LUj#IbFT zBTQm1W=WbtU)UtaTI$8zHK)`v=LocFG6^D5{wnD6!sBlIA5CW+RrS_={Xk|x;BpT8yZ2gie&*UV8|}xLiv**c6vZ;~8$WF_ z>FySrGtyd--VqK|&BA}sg4pXJHLFMyCdGc#v~O3{Bro>?cH2nnEO!SVkvK@pnC~+Me9N-bi7I@{+vM8|R zWhN~h+_&~06eBv7FJGsm)Y(o|fb_h&y85`Pv7o4EeKcQ2A)dmyWf97V*RNkYHu&^J z62Rw|VC=L9+-7i@{rxq2Jkx%|hmTPf0+nxlYbyof?%lgjl$AYyeb4_mpzW6buuKnU zOO%1ZV!TKxDk=)3zF${-5;p|m5yy9sf;9#lkqIRcJ!I6ex%~g_#Z;5TQN8PvrJ?3R z<4sh){RwmJg{`gcD$ihh;3A#K$Pv<=MH_t`Ri&o-u~4HvRlHJHEndaT9JfiFdf zAc%bbOG@vp?y^_Gqp3`PU8VnQ^^+0vXzM7+Rs?EuePK=nrKWk}M?FNi5o<9GH!)^FFdv&^5P%YudIjYzXk**WzbX89Q2 z;-8M#q~nxiG$O_OqjWR=r%TEQLj$BGGRRNRkTc|w90@R(NU5ILL>_Fs%n=dBK;kn- zsF_Ml(o=tzPVeXYh@?&_p_Ra$?p|6rvW83gmU*9Ke0n2%r(s-VLuYH* z5y50^FX^(LLq~^#AvubwgVR5mO@5A_UoSorYp_$zYIIx#z|B%5XdE@4*5_KEj9_^7A=?hM}TSRrUC zZ$>S7sZ;0~24ZvUqiWB4qVn%_W6B^`{Lb~g)WT6E%M1zS#>PIt58pgd6udc-%(QeK zzV^S>QWu+AT&%QtNsaH+q@SB;@ErBlLlQG5(2leulqgZ|*^6i12jB4gwq75g^4->F zIn3idw@5Q@8f6GG&x&qgY4u>l80d61{(4A+V68cMf&QRhN;zgkUvLX8^#PMPGrmmL zBf_6;`BJF2qLGRdynNq%yuIIg@04F$Ts*FB9p_ageUYYc_=A*Lh#r+Z)Hp5u0?(b| zk5B9C$1@pf?Q$=D6ZsB=MCt0Tyv!0rz8$TwB@D5AW_`}6q!b*)%VjX4qCA3cPHmIV zDu9AU6(@RAMY7+L9frZ&iN=_jQYdTO)oY9>XmmgyutPceg0=6v`)x``pV#3eI$iK( zku#0`s8XI=&lkqxO&*h?aU4s=v5$fV@TA_W6(e6{UyPztr>8f?);goV9(W65?HV(zg) z|H289!Q3YyA)(k0PJ}O?Y&!{d5jAxG$dCxQfwLJT0S|EJPIhMmczMCP;1v*<0X24N zic-vba>E4)LEEff1*NFKvTq8P$N5G&6C)#(#w^OiTxQ_nZgTemjRNNP*e%172r2TrL;q$E@W0c6BfSRgX&K!H|ezMeV_eFU$S$c^GzpJPa*N00i z%8H7OYw;q@&CQ@|-2aT_`>*duMj#`8=5aA>b_fY7p*;K+_pWbbfBV(##+=b*hn-T2 zE4xbhw*HX}dUV5xT3x3k%#kXJK zWHW5df8Q=jT<#kjziMgqN|Op_K)BOlK5(UW-VkOXd!b^mV4a8(d5H3=>G!XrZrYfw zoJSJB6W8U6*|7ijF`H#0l-^RjOkgAr-N_ zGJ1Qx`|ed+eUq)7iQ|vprWt&~(WXz?TLvFgiGLoPdV1W>;01hsS9SBu^*HjEG(JMQ zPKb#ZH}O~3{41^F_Z7vsOvy-+IDk-Uc_7)A4a0U-QewF|l-c63=OX+DpazhmOrq;%KOj5;`*?{m3>&4gn^v|Chn!>*- zIOYA>6)U8WneRzXlteMlL)q%U9*UIQms77X`BJ0glsr(lUXcM8vYvthw*L&^WA0kZYGZTNtJs=Y^-M??S=y{TkZ@P4T zZnt1LPWw%MMdb;CmO51yLsB0@77G#RY&v8qiMWU`+C=Gol2p0OU?5L@$EqVpnL5-k zw85jj`_syL!3PB&by6i~DYCO2F(V<1$##wQR=nUM5zUML)ZU4Cu9v-N|Lkz^R=0Qp z-J^I|S4HcmvaK;4XCehg5Ir&ieKZ5rAh1f)aska;vLDHyBP2N`{N8|<=W6$}*g?%gy`A%<3$^+1l7_@9eyUg$?nedu%VCy?F62hosEWHd)Ks&B?0@%X6;I zO5NG{gH2Y&Cr|+-oK^zyyADqE(u%KeCSOWF$;`+gy?)vF@>wLOEe-x@xu9 zfx%9^(iF9y*nM9nZ}r#H5#Md~7^>#icMOn8w}OL8ZnTi^QsWY8;B#8KG8UQpYnd^k z+~-cOJWsS6`=C{-=E_K)O-p|iq=Hfu)Wt6DbcHdDWfBnt@2R_+TbV?K5I3#OMG|!& zg1+HG)>CF=Y`OiYozL$iZkQ;@+6Il4l51Ek!_esq<;()pfKy-!D%{-)XqF&NFd79K zvc5DLiYzOC&9m#3!7F{14@eASuHDXo2&WMGV?E>VJ*tyNv(4T*rxmGjj_SD$)|Y2v zGBNId4Bfx{LV3RT*-T;4>Q9u*Vd$^--R^yJJcaxY)t~Jbh}qq<^Gyw0xv29?kf>>p zQOr@4j_c}z7yeyL5(A+L^+2aeNPZSk3L!RyZ%fOy(~MXV4y6%B!(tR zYDXf55^^2GcT`3MN~B5AS@k2agnG;W%$MKU8R>ucv9a~g=V|ag95qLn--caO^0kv7 z(8&7P%;7z^7g|zdLX)*Z`j(WN1!YE4(%t}FeoeiBdd?4e4lsdQy^dDDWeZfl_)t(; ziG#2ldD~_^R|rl8^|1AJYZFS;Kf9Ay9BgSX@}R7ALTzsIHzX@M;PD z&kiixh{Frw5&1r=6zhH@W>*c%F$@Z?$Y@3x?QPT!X}wprCaerfQrHeQ zA>Xds+PDUytURli#QxHqdF7)uHS;lFJdyPj4L)75=MA)?axrgGl6k@t?Kbc2d!ohj zq=dxc9lmt~axS?+&UPS1WORuO zk|X=Ai1fFZM+(I|y&!r$fB%BZvs#&_m5QS z!#BA(4SByRI7Zs==;f?r(yD^3iNIDTp z<^+*!6irJW4~P#G#J+01FfyJWV`lwxE-2?7y!Np{`PKGA{y%@Vt3vcB{5QL7V7D@vOY%IJy4`o z!$w7+UQrArL=sG@eJqKPf8rDs^hkw>*=OKVb7P!J;xr_-=*saUQD@XW#16HTt#NtC z_@&zqtGJqJCqYXb9m%(PpGhqJ$`bvKR=?26$9{)O@6(K-o{rAU^78Ev&j?sKz{xkY zwq6y)u#fXPz`@%WPYGD@8$wnpZgWLwGhAGL=gUOEdkHP=KbGF}UA;!XsaO#8XprwF6_pfBU3Nb5YVMeK>PdL7d(4-3Zg>S zZt3lteSh%Xo<`jIHTv5BTuttfZZ15-Lqjv`!gf*>h*V~=PrSeW{d@$S_Fsei#&d~` z-~PMRVj2d!n_`~$;j;fhWq{w&ZJNMyIi}`t%S|%wyMbKs2yBML$tbBr0)j@Rtu&Hv zZ!~MtI+Pe+wj@mYUi#qqAKxgrXt@qN_@30usmvdofb`>iHvVc5`a=XFeejd-`EQ?t zHUW5-Xy5%N2+E>NM2g|G4teOd*+aj~Yj!mLTDdR>;vd=W+dl^dZP5e;CwM2xKB%Xd zF(3s~u&#{#G!MltBJy)yh^A?qzn|*3$v`D{$4@%3x5+W`ZQx$-1WQnf0h_})aH)|wNe2^Cs?Q9cB7DM>jv-6J9e_CcdDmXgq z8L?d2ROR=^OKhemC;yzDio6;A^T(~&AIJw2(liS;{l-JkyGv}K={*AD8A5@rn^|__ zb6n{Qlp^e*5hWG$T~PZe>u*K@Z%#Ta^t;AspqfNdXMxn>+W5Iqy0Yr1<8*2S0uc zcz7t;j@MJv{hiX~yN*tg`NUZG2FU*eu`n==lBNjOblzJ{h|rlW^VXjUbKptTTlR19 z-HaW%z!vw!s8g(N{rwfR@3X3w{pg_y0$*m2{rSr{iRGyu+aJTXcjK!JIsF}J8zs5J z%gmGRSo~QR&ddq;FFmnF7WVc274>d*)dyFq4q^}l$eE?!e@`jB%X?DywP&qEOlX|s}c+} zZ*J<0p{I(N`a5%@`Gx-Vzc>OeE^^nd7@csiap-Lk_uvqIvhsUD^)LX3P`cbUE>Ibv zmpI&n&yNz7BWNqBU;KfEf{a;H6q(MLAAvMuAMTGF*N=&eGtAD;W+&>uVK#U}oV~N! z5r{|%V(aWgw-&o^PA{H_tV55(QcN2k{;Ao-cpVKns8X*1(yI&GZg7x!w;9U5udF=r z5^b)kHfZ60^vJd=6ceJ{{ukS&>8!e|PJ+aAzVKJz&18e>3re8M1O=~k;*$nGUfzGz z_}oVu9Rv5NR{@vv&>(;+L(8qI#fJI3^5sb()pgm&j~^QvW)4nI|Nea|=uAsTw?@8v z)(fh$dXC@+Na`81c#x2g%+|Ao{)?%@I!~Yw($v$-PESuyOM9-RRR_giK>_XSUwAy4 zh>i`HVrYEK%~=haC)bW3pb>t%b>O)(?AIh5_OAN#MTifd3x|(@v||qM?Sba`h)sOuD2u#{Lh7(*O^k&&H7`8wm5 zvVE!La@x(wbxiOP1t}sDKOvQe+iTR$^P^8Qxd{19>n4ZQ9E!T{x!eR9wu^`ugQe|x zYHE-98(#U?q9@jGrfM3gOUD8v%2;CI2Vr^cDMj!vVz@zg zJpW~Q-lubGeEJ*Ra+ygZpknph|II~B?m`(l0^g0D-j%=_kF`;kZm&GrlV95*LuB72 zQL`X1)~16JL6cQKJK*Y#IL&wD|0(ktJfm)-1C3>*bw!OXG9gd^d z?teWA*QCXgj!jM$eS8jk7<9AC)6;25NzSk>-Q3(j#OCbmY!v!^L0;9|kp{@M z6%-UCCnxXh?7%;Rn2r5Vw6VVauUPp$ClfynjR~O9AQJxi`BTvQPubV%cB58;dLlH0 z>O_v36}&$5Q(Jn90FJ~+Y&JiQ&EWw$8po(tE0Y|f zNPlv%_`KW<5)u;r)pcKAKQ2|xz6Tl&;|ICq4T4s53_($|Ge0A*!$D;#MODmx|CB(~ zu%G#|lCh+O(fcJOZyK&w-%8TfKcFnEW$a=6@?GU(WHhnpihNVQItV;N8Uh^VhY@`A z?2}D@mhakrsGKCh?uNP+UcpD!-SX16nl9+L5ryyHv-0ts)H!b7!ICYPJI?q`v&P;{SaMO0&(@Yd7EE+y zqT?3e&^Q(5UK9CG!m5iHe=Vp=ONyd|>d)H>-^)r_k@B4{Bs}t}+`RXRhNk*39U<$~5He?4$^N zK(ht+nrP6;^J7XoA~B(Mss!Y1sDlwaOexa-_k@c0o|?=k8CS2Ml4LI;HMHlB0cHLI zqTXTN&u7Q_^2@o*%inyMLP5^}9LWIzB!ItmZXCVu=j^y$~$P z;&+%+6Ca1BK&xR0fYvK%iQ;Zu9JD z&2zz70hDAPpUY$hW#TDW=g!BE9^rEd2mm9o2V#I z;rqdj&^&i5clMjPh%01@w|Ys>cWFZ>N(jZnJ}7zQj*a;>HKThTj|+n$A8VlAVqm24 zv)!(S-O;IDY8+zY3(Yf@X0n_oB%@WFmzGKRHpt%i2jCstRz|_?EQ=7M?lM`JE5hNc ziynfc#o{jKB-H1~Ko}K(jbTR`LDkpWyX3uF31-l%_UpeX>f$z}y{~l)g+KxA@47_k z$n0g%ciq;OMeR3NBziz;<^FS8jrg~@tdU8mEJ`yzl{Z$)UbuXJKHce6 ze?*n3y-Mu$t?1p}EYnTRYE*Xh*{YqM4)5-wTKj9$C+Yz!#dA14%xxpWH9o3aVtD48 zI7loSiIa`=#;D0515&q&PhtF>}YZ9j>Rd*l{fJY z)Abv;suC5?V>ri)tbnM926bDd!5+)aF~||+WtmdV^6dHMPNnknD_tJ?cX{N$ter$8 zx5~KgRb>}z_&Q51DRte+nwpx5{*T-D?6A$}6p}^aTwF<9n=Vb<+}xAI6eJ{kuA4*P zE7Y~Lh)75nP02#8T{q4B&(Eg}ERAm4lNf{U{0^;yY<(HfAqT?xi>h0qLn`S6JpykDfB!!E+C-D!( zyx}BQ7dx5k3_(|gf!r?UQ0Y8UWnpE_5q7Vr-2;1BODZf`{V7e$+}%U(w#v#%*k`|d z`9j6&Sypfelmlc*6j?4WFX5@V=xlp{*>{VZV;A^yR6(6ttkFSX|1iIUftr>k?>F|{ zI6OWLdlvU9sg6IMe~XJtkV>&!&aRl~MCns?jQ;!Y93*7G)@*g}VcUBIr0s#FhU%QQ zr*b*5s&MdUd@1e#E?&`J8}XDQ<)_wfTgTApcEs$*82%a zn#9l7Q{Z=Pf_nkJQt=Ke@JMs31 zzyveIH&g6DJo(D>-q&P%fkPi_3=I(^Yf61cVL^{TtmI_ZZ{v^OeaYSs^1@vD>|_2; zq0m-El^uwd%jd(Mj-SsrF``6+@dBw$0{6Mi9)3Pika*Xm_wu@QBT8jUBVm#PTc4hf zJIbzpbnR1U^-$Ak-=M$m%usa?X6q-Xr7B}@Z(nwVl~dKcx;fQmirkBV)JWDr%{o>D zGvO9ASy-e8Rm0}ovaR%~frL_J2>j&}8jm>GaOISUgm)y1Px;QM&);89mBF?*wUBBzA0W&fnE}R1N9R5{xd`B=fB$;S z*K@S|s@;0)Qw1krWuWUT(b?{MMVZi5$FKeSk+3kCO!h% z0d*Rr)J{T!q8(|zP^kz6TG<0cc>EgnB z>de*i@aA*O_{0Qc3Jmo0$T3jGKkny9{O+ftI_>*&fCKjhaA5*F@+8!U}s(pL>1I9K<+IE z1sNldxTmm4nabSw%LRjk?+u=gLF?#7tQ>U&nd~3%KSZ!s!!pk&x2PmshRTOG6>bk> zlFNy*gw=4qv5qQYWde;wch{m1-NhzpcYiJ1VP5kIO=zm-Q;GZR`Wet}O^e>VC-*W5 zre}&#>Xe>4V@5)vPhrHk%cVIvMSjs$M{~urP>dQYNOPgfiLrF6_jilf({{E86a8hv zLviQzA4a}~_1lMIy(t#O6IHElhK|n-)oh>7W+*>U%Tb${Nb^12?vj$j(MGS;;_g+? z`u*;|e_gb#m%p9`pr-}NBnWD@> zjAU#=UW)rcYYICR6?g{=pWm+*zclib&pFy+X#YmeQ?NgoREf?{A>OnY`Kdws;I04I zLY_{$#lAuL(eLl2V{G~T?_~*PHgROHuHZ!nDwc>6)oTOhEB-DB)@O%sWNgxUrKK7^5SA# zWM*b&R>=uW>(J4`q5+nBcW38$wV}a_7lLNJ*m5y=u06{Wa*ygBVxz&L59wU_Xfu(j zuzg7bb>978M3Jnlaz;4|**iEu7rtmE(cu#o$c_e1_CBQH)ZCcY#F}fFZsoCAB3W^( zarH&eoe|^TV|q?PB5^r80)@m|03=WB=qVCbsDcnGSYvos8V)DTwKE6wfQ81xqVrFDKDJ$KmlCs@2JI&y^_3=czju5%Dld#ThQMtd z>WWb}^4*Dz;rDBF9}`Ni$fHe>oxqeFTE#bg7-#f}Jc_z2tRPEsZgg~Xety@b31r`@ zUBC}xWNA@QP)5Wr?E?aC!JvgI5y)5PGe|3EW#N$XM=rR5jw`U>)D3n9IJxkZzu>|t z5pi)t?3HK4VXor;{WjN4Baz#NS!Xch!b=o3;eIuhiFKGU>ED~dItchUuryp;PbYX2 z`sfB-cpvN?9E=PN>9=})D6s)(c9d7Ov2c23CgyimKR(FZ)lHjOLqkKL?KL(v2?3_~ z`0+02BvJHAH5As3QJmstx#j3%={`w* zKzhyma`&|AdMRePZb6=&G{9xarc^bK6mT=HcGv?O7+? z?R5-lwa>y?fiq9Z%|#j&tKdPwh0Mu8>&3XP4*P1dN+%ArA`uc%~%~2Tw;~%^)gtksR8Wx-WpijByV)Nsq z7H!>ct{tgtr4?ftK^`y_WT(?Xx)T_kD`Lv~vsCqyQ76_*`c-JuqmdE7P(dY-A?D-Z z>3M3FAod(U+8F~+psOeao$@|?`p1aZJAkuH^EU%>EPw}sx_lQ43$#OV_nk@D9`qcW zAi@5wrbc7pqmJQ!45Zk$S@)=@s%;)1=ouKwE9RD$M@VDj3#CQam6Ay()=s>k@(fGL zn%{d!N{YX8UpEaM4b9fp7CbZoLrvkpKJVD(QeUNGT2@8&29Yf4I!y~an8Cnlk{epg@2mB=cOK|L3V9T`SwW$Zkd zhQOqibJTmfLX5dVEMqL+A&rXpv^J0kH99a9<*(FAfMIiK+r}uV=P*b0^`iE1b>=hS z#lDqdPop=Y^)D)O!GAk@Gk2qV=W_;Ra7l9sde*E`j{>+X3B<3f2ofG%WW>+}Aru4g^DqeWcpdel zVxu>m@P4AS?0B#W?{3>?~gfbw>A6* zG6F%8c?}JxKo4@O*1=@Rh6Yba!+`uzQE``V8<1^vXte%qx&VlQ%XYpJf`=T`ffsPr z{ZCxl^BAmU^%ek}b!>T=3OC|(Z=T7GHLC>n)F{Re8qDi%!aO`Ya^Y;)@nPX?58?== zvAgjf#zYEoa*mFV6W$Gz&exzP1cn>)f0p(Srx!Es4fB3*?E7ENFU$96FoQ1JXfsg) zw&KT+yxpAA`J+H%JkvI4_iwA(1^$+dfV4W+00IwdrI1hWRLw ztNzvUXTUuG{H?02-1}8GBHmdMU$O?XC=>C!C(A=qy8}m-r{|uFnjrTle`}P*phcIB zM@3+SM3QI|JQqJ+J)hAJ+_K1yk z>F1h@4gbgMNv)+ShIyJyGPVTr_{<7-!K5Zy^4&gV5GW6Q;_k|;`7=Nv!rWCF%o4{E70dW zsdXUAmQg4>X!0}~?pIQFqSmksba=w;^p)$Q{REZK(na!o_04`S`Us1dL{hIVVV1GP z?_L>^milk3Z&*Z9k?JI9(eUk5*qCfC)&eS6s}V6x$CVLs>FOY z)rBp-Hg2aVmkj*OE8|8(eVRa8QGicv)Pf~o$v-|h*(0>v9?)K51N#^(N&ubSf#%-k z{i#1eb>bN@0|o9f!&!XqT3Z)*zk%-5tk0hR_g;jn)b~qYap_3rtf*K~;=7nKZYF;T zsi<<3lM8m6IoV?q5;!1itEBY70cwqG&8*~PO#=fqVm^3ah~|#^9{SkB+^zctZewf> z3$+l>f&El1(iP&2a%mhx^zkpLxD>zhegj47|1w2mZdb2RtSFGmRmkcvyMMiZZxP^c zdc#uc9K|V{Nk<6PV0L^g5m}su(}c*uh|noEyApzPr}B3(^>cFX(?!oM@GZ0A6INwc zFeE!ljOkqBbDS*?mg^c=#czjZtrVZVCcvEIR_MauM(qu%6UgUJDRZ!?M2!@!fB^5)%A~NWA&^I8*vWnwO|TQsS)m=!kVmSp_C0Y!+(5 ze639kG=+Cg(no`KhF4C5J}2m>LvQuNjGxl;yO1}AU91TXKQd!rX zdIqf_7B};SofjNXZG!(cBHa0A@^$iVR z@WClRSZhxz59hnG@*rUT550fppDy{lf>QKff)>UMKGVjD=mxdw-x#(}wy$ln(ha?B z03HLkY54#>uof)a-@hSD*uG2^CtuxubMY@IHf9a>;QH2<>o8Q6C_#Z1x(^dz(7|JT zjGxU9LeP-$7%*c|Nb zMP1eveSQB0&g*JxAwFZSy97lCm`@hE;*eVO^J_C91q}@xEhuUK&EfH_;$?DF$Z;LZ zxqywXQNQYVMB*0p9rQ9(IH>FWY{tY0hwx}o=kcCWD)09$H>_y-9}pNnP{VRrxH$(Lw+w!n*m)G)Ydkl;1BFpClx;@MI%@LkhjxP=G85m`7%D}>h z_V-bJ+tcE&&OtIa)RKWjSW%c|C_fQsdBaf-M7@Co2y?{@6}GI^Crw`achYlRY-&Uf zuM`I7yvcF))t?+M{N0`RpqzV%;Ylf6D6v z{fYDToD|sDxStOPazzRZUcEY()Y4La>$UGE;nm3cj&>A=R9Hd#Ij13MHkn zvPbAZ&*h-WDu+v4i0D~GnHm}MZ?npQ#MCRSW{wrB8wFlAasq}&uDFr1v@R~v67N<+NxDjqJ<$G}H+~j=Ss=zQ@iEd{Ua2i&ibS|OmJM-Qz zCH<9`tMAy^e7k$gw!k~PhGCZSKf&^>Qv*r!*2seNN}rm-dY-=?;%aI?tG-=4+#zRO z(siHflGQ;r3nl!jf`$dTY;xwZfyfC7O^%KHJ9@U1 z;Tp$Egdj(JPQ1UCj;fT5OC`QAHpXQ)4Ogj$y^cQo{u!2@k@q%3E=)Dj*EcY@E|s`0 zhlwu`wFMvtTyT>AY+*4AQVb6aWP;B1FXpnebkiqsGq&dee8y2Yxue%kc_~~Hz@X?j z+%&Q6CP)D_gFhUYBSKpgi0=U6!os2zrifRhHzf^E%!?!n9&J`kUWZ8)xDf@+%~cRH z2j_L~`v;jJwrE+}PGhI*ixZ%BsbGFOIH+Nqi$9#KvpoI{%QR^D`|k(DZ;qU}0oe=a zCXQdv?{OIV!t5qY+?!(os;7N)p)f@jn2~|ntNU>b@)JiRKPL8ZgKN#{loi#L)z#;< z+T6#7Y^aei$d*RU1Y@!c48$x*bdyVFhvemtT*H`5?&Ec@J(Bna;TJDk&_uHJ5tB)&UW7$} z!*w+SeYo+s;oZY>G5v{s5sF1KO)=!+Dgj@;X|X?2&+1DyR9YOT3k)v*wz+vVwSU`s z$uLNBxvIsXuz5DDe&0aw@)ypo&h>u1k@oB1Ka!8ev}1rCf6P1QpM-Z3mx3blhKAF^1e0 z9M<3|!I2I$QgMYXY>8C{E#RY0jF0m>E-?QZ2$NKNN~}7;t4b8?0-9B?2jK0y&D}ph ze5$B`&nqfOci_Po`q#9_x|*b0 z#j`XE7)~Z z`oB|ng#@$)GBw5H2rlz=((G?*Qhex2Od^7hmM?z%cJXcN59sx8gUsH)BPzS-q#c!!2UNyYqn%Hlc&QnFXP1 ziT#`9%YcVbFK$nJ#3mSr8c!;6>6>fIDg#OGOd_IeW(leilHjse85|h%SHiaPKc(F2Y zKEUBDEG@mwh3luMbikB#83vDxTXkY7;Px6^Dxi~o{j!hf27?v}5fTy-+355`I;kY! zz-Jjoof_5KXIAY>E3i8fBq_>fe89#Awj#Z=Q>uCDj}hq$76%Bc2a7G> ztTg~&_Tj_W*70n;7-(V;*K>huCJJOee)@EBb9si7~PrNbZVQy@94uJj~JGN$t2 z_Ic}|im)rbc`-%TTW}p?v?zdAP$`>S1g{C^EG+!D^(L$2i&xC|-~>}*y1))hxm3BN z3>od&kJ(_5e?Dn{XniU~#DMPHf6r++34e5U{c80f$NNXFj=1}ASc8fpM_OS{e_vx+ ze6*Vsa-95y#N7`j$kOG(k?ZvWmCT{;M&R9Ub^h%p+R`!PzFlScqJ>Yd z)}Q);%vNP+`v0>4_tzaI-1mbAh#m>yN0o7>6IVTH4&}c6@x}9{RGqPDXY0VR{)%&* zpfr~?F0wlrDv@#@{YGgM{nw(PDm>qKJj01=M%Av>#w#t?dskO;xrAz}iS(;ZbDOE# zOe1Y}pA*9Pms%!p*mY?MFqWu10|ecTnQUfji#HN&mQEKVF0#m#@75L!rH(3Td_u51 zwO6zD_hI1Iyg1$8q1*%s3P7mp#?@#DGq?`pbY}>;mP~9fe6%5= zDQaso(4Nv@4vlQTy*_X^xF2JwI}Pp2G6WWF#*4BYn{5DJ2mN(uU;unJOtg?Rs3R;` zqHBR%fni3r@UJirF6UU0o|b+E`Z*2+9NV$6u>f;gSXx%S{PYB)2Xgqb2PKLKG<0-6 z)f9_N{8g8x(Ak*zy?ccB2WvqXi{bbT4xQJuu2obzHM57@Q!pwZgU+OuQ^p*5Yu2Xy}34ZESo|bR#X|IZ23VD&CuPdirmM{TnZBg^8oWqwP$RL?i|Jej#RJHgeS% zAqz=KabEXWB!$IM<`0-IgJ^l{t|Gx+c456-q}cMb1f>%!RZ#&)%9kb56f#JG_#mz6 zv){+g^)OE5B>(au2yxei9g|2GL6N*4YA5hWg{Wzvi@b#AN^RKA@zafEo(&?Yyd23N-xRm04{dx(7G~sVsK|rNqOf zDueU6C7mFYtw;)H8MxF(>F%u5fXz_0*7?`J4PAsx4;$#1w&%2}#qCyEQeqg%OX4E& zmi|uehqrw(i(#N_9m2wvDnYYqZ#~x`gb?99bn2dubcAdoogYTQp8(7aUnKmoM8N7etSAV*G{ZtV+xoA2Yfu@t0b=vSkXgzwzGF znt$tKF_k^@){hTmg*vz8FgjvJ!j#cP250K8???CB#~h-kU$vK;|JyvX!BojddrdrB zkmrh~$f}g(F>Djyb)k-b(01OeNBjH*9ea^N@nFEQJjDbIV4pZReiyyz(L%2)Exf7_ zAe`Zru}04QNy@}lCeTToSLl}=dZ!2A#*qJW8kVcu1W0A$^pfBxUS$90?yeT`m)iIL z0=0a6+s)z@UsGXDMK@XRqU(9_h_)mi8|zIt`AzrWPvS~{|oVxe2J7+oNG zy5O2-0rO3CVyo3vRAhVLyTHe?`-}ky4xWqdI)FBqsl-x8z8;gUvd=2%&&H$?&mGx1 zh6zcrR1#1HjQzw!teOxps^q1L9}n@s%z>;Dz_@^_sh-(A@`9`ngn41cJ4~l;gn}FX z1N;d&iUHIO?@2#HU(IBCnm2Jr+)N$T!Z$)r^3K*T*wDKKiH;i`uL5q*OE33ZZrTsf z)?=O35>X1VAKsjEI5wT?Je5tS*DEO#!;wojA%$Z>_I=}XQnMdU-`9@7JBEZg7fX=I|H?KC3MfOuH%!Yw!_%t&`UF z(Q;?kD%T?^>^t6A)^KmtQV1obgU*OZ9cLS=!$1K)wTrQIn62(}L5h36Fxw;{FCe%x zulon6ct>8M?CHu6vgDAtrmuc(@p$LoF!T_!z}u0exDGi4IO$Fy=ZB7t&Y<*lXbAGB zMt@zezM715ELq`-C7@Z?zt5EA4pfK~>*ra-Y;V2}u!?_o;kd5Q?zd-_DCfu89%VM?6i+p(Ijwyxwau8_}!dIUlq%Ojk%O*9+~k!3B*Wquz9v|FFmry zA&<}{JW^lEnWMgdzPY`jY2V4gRXLZ3X5wI9#ma_6h=;jnHdz`2Kbu;BED0lJzxnF^ ze$Nn}&-Ad^_PU#Tb4a6duUgv7yQg%rd{eI!ZVrFFdT@Gb@0WM;BRim_# zdPa}eY4^;vzmZnJD*>#w_PxcFkr$jag~85x>z(}EL>MlUDu~~i&zSE;<>D#zzF;P< zb;#zLo}VYjjbJGbl9WuEOr1;>te)9+`C3c+IqK+#BGu=aK)OdhOmDqtAH=Z(0Kez)4_E0l9nL!(>dgq2n|=d5-fmcg=rWEr&z)If^2j3Y{@Q9r}I)lE#dBkM)ZBf zBZO?>80fRW_-B@6=H?pd>DlR~Inhd-OlpA=2#!Z83?YNQ4=@SQvz3rouK9YokP^j~ zgeDEBf}og&?w^Jxzo1~X=YOKv9rkF&SR`sB*%aq+NmAG1o~D%6Z=c+SiZ>_{o#g|~ zzWE;4)gc&MSkChF(#z)po;_q1VBDUUq5GJn^@$JV%xU$ z!*hX7UR8o;wX88As`jye)2}Dxk6wr2^pkDzYeaVlA`7;a<@k-uz0>(TL*hu)k%v8Z zkbAS|b4{KlLaw#*jSsI?Av0#648LYC^4rJ#&qzs;5z_fDP(B2f*u;K-*Z=wRXSk#2 z?98iSp3+Vv-Xg6q>1Ia8D*~zG|E8$IZ-*M+3kLfER<+=GDtF%?H8=Mb9@A_@nDH$B#e-H%=yvEUQ){mo}b=!8w7u`HA zxFWdM!5AUC8A**IlXtY>eA#ty-P*97o^Z3-DUwdOvXRM9*Q;ISV9;Vbt{Z_nGeRC< zS#cD9zYJ``tSfpzhog?Rz|?t>eu*_!;U!tI98!50BL7$1pp38Bj5~r zTcOw2)xl8sUYp0^kW2^lIk=4ZgJm<|uRcKUfhaZ&b#;7vd?Sw*Od1%kfiMAt1&aVb zlaY}D>I_~s8E}axjR3e@TDMsYpA3A34h+Qn)R!6jE*5@%*FdJ39vUh)ZVQE4TuKc9 zX&Aq`xw+}+Ov3Yrgha9SvZp>K$B84v1-(i*z2DZ@mq@U>`KT%{0&Gjjfy2nwBdLPp z8nEx~3P{MYB|)Rb0y0SYlj-T{kQIfJCx4kSvJ^oxO`sz9e#=WttcBDv(`ku;;)p_o zEIe}>JDwUpHXzus(_EfDxU)_`M{T6yAb=Y8n_}Di=)CLtuhWQp8Vgi`i~Hn76c{+i zhlk)vV#V`lz$|CpDrBLrqQr=E{ooAF@Z#bG`VO;ry6(y$-}AD-B7%*&-Gj3k`)cNA z?caPqyyA--l$golr_BqdW(Ia`L0P|#N+qXfs+77G;fh(dGs6}`ujACDg?#e-&Rcmv7T~=Ox z>W8nlv^3h9ppcM3!bgY@DsPE1q3>KH%+xD4x&SaSkh5J5? zFOk#blaTX8LmMz+JsBuDoCqHnOLASHA+_gvw6ZuOV-HCpmQoMdVn*Y>cpWDHry_Mi z;dgp`5vh)~mZUWK-EulB_0q%HBpv@h&7j{F82Hq8lpVFzdCSanfkLd=7w%&IDYjov z*p|df__yxb4o_C`bo`S}RXVY;tL}$;F})-godZW=jnCLd>Mxha?e4Q@ayraKYfPc} ze4f|y)m_=nD<}Pu#r7$}6E~WVzL=VtBoi4sta#!-z0F!?L_=vY9$2=8Q2uMV% z?@O18DN0h}guzt_G;0Pq{CLVlHQz*5a#RM^zI*O4IffX{IFaj`ygc!~t#p8nfmiQ2 zX`TvvOF-F77h6MsuMIPe36RZ$_QPiS_%26-s+t;?MIQ-CIU)QIPFFCjf%4~KyE4b; zUpHVPkeQ)00?`0Kyr}xQ4DwUQjr>#?sM>*M5a^iD?M}hd0oLu};sU$q(uh+Vbon0p zCT*Ocp$Q(3q;4R<$M+GYLTIP_2PN45X=?yLkL!Z1mXMX@yU>iJG$KjHX7$=&9Q-4v zrl#EX=K4tpl6t_pCma3>7`Z$d6x0yZwjzw%C>frdto1o_Mt~}@f>i+%?onVD_3`mShFx=8*dz1TJVXOSOpAG7GY z^#2!rIz4|~_4VspbpikDOSmy(O6R!BU+rZRj|+Q`Mc?Hq({Ou4qu_6H_GCQMCnl^D zPeJ;+<6ar53{5LFB0Lk}Qzevu!cCt!che(*{;asopye$2ZddFl)YbARKNkpu5 zef>RbYz)<*_D=!b7p2E@zFN+0aarz}{1?B`=e+(MpFLHQeSFpdcIY~BSDVG|4nG!) zE$4hTiK|uI>#PY;i1PB}vD};gioR}|=lEs`7=!m)ZD9(RiD;#7r-ux&;jS?Ko3^*M z27eJCd*!KY7s=iPJ-*JTV|+6Qv%ltM1R|}#6X0fmHReI1X<{an?+O$kAOgc4@PNVv z;63VMFmHxc$S!jHG{Cnoebk{%uLo!%9efaL%i~` zG6(qWv$M0H;Jut2^gAYYQ2k)tv(}7+!a=}EM`wDd`6SX*d`4c1z9*Qw6T|WD_S3P3tCsA3 z=LD0-?|)n$+h@GrU@wckYHaa?fVGc-iQFCE%n~IrDNH8gNH;irzQy`RaIKzPpahD7 zA^^PI76zs1uF51!TBLE);b;L7`Fqu(&!2lMN}vD&zUejE%7ugEl!cSvzf}^CKN*@;W<&1e!FTai4RBquKOs&egoi&02vJUNye3 z?NoD}_qpHI&zqU6*&An4dXlQD*Hq{GQco#)>$7!lrba~?&jRcBYOOnI%cSb`9tw6_ zH(l*JWcyu37|7Uc>h#*FTps>Dt1Le8SFPM?P89Ka^lQu_1Y1q@JF9}WBSxX%P&Ci5 zZRbcKao z8?F`>7Es=#q^26)8YezIOpEas&T&}jNd^NLys$dZX~18LL9|-)S>Vz0GuB_LykdXI zF=^Bc_BMC-FMQ%1Ynmz_|C*H`aj>_NAMB3|Vjy+{WVIg;Zk2pT|Ln*aCMXWOizyMi*c)<+`)AAg+wq|BB zb8>k9_?d?r8-OHg zt{jhM=(orcVT0neet-J9!RMx)hF_i}s*DNbMJWYYvvxvRSt$2r!`Mv7!u7oFb2F9A zSNT4dUMcB*@^Z2Pc`55`H}i6ai^IXg+OBI=sqw$PZO>Qk({AtDsygX>+8<|tH&8ks`;{%by9#kr>CRC4~)12AWDD)7}ygP))_!NgHswf_T9a`3Q9`% zLc{^<#*g^3vI6eaE(0*N1`>X7Sr%(=peOCe3A?Q=@P@%f zHE9@zjh$*z**)p2!|#um zTOoro=dyJsW*?Wot~583ioTik21@SX;?M zvLak2GP~MWswpclrzjf-|A(o`Nq#=Q^?eU=oUVQCzKPe)g8uIuD4mxNx}y8lYeK1Y zjPNiqq)>B3SqhDARz4-Q(&L16JtO~a#XKc=_Et26E=rsp(V};=H+GeEQA;d7Q%2)- zSZlBEdPO(LdUbZ+&)zA|L>5H?U75dj?|YcxWbNg&Wv08@e&5VtD`(No(VAhSx1)J` zFOP;CR?%9&o@n}O`F-o^)s@||Wt-*j5O(`NxLp&`ghUYG8FhVKcp^p*=Lyq5Q-`b@n9gM4_qTs~tpuwSmA5 z?D3!a+Q(dIwb8KGT4{kF?h_(aqDChDI)BN>uH2?qr#KVCWe4=SfAxNnL zsl{4aqab>Ru-2u>$FPe)3Ic^bNa+$&QdW<=fJ+6dpC$j6%x`0}c{FZFMMcFyD}WyX zh78+r{+FhpR|YEIQ^4wB`tuLmRe?v3pw3SAkdZ93*v=-8kW|;uIQxq75{S+~Y69b# zRX~iu^9aPsUeKw+L^cQDeQ+Bw^gCOL6F#>Blh>tGtRGY`W#FI*-PqeB<`4nk9ncw= zzQVZFzufUe$+Rm@ptp03xr&M^*&#x*0p1^=8{kK{zILy!s=kMYEUmc)b+jYb6;a4A zA#=iyF}JXh#qbl{=Ft0}71sJN9?O#A=JFziik=bMB(G*haVf(-g|hL&YrmB0HO51o zL(&d4M}aI*`CNgY2;Ul%Xtj@LMc8z=oJ&DmEPh<3a zv`6dzY1+U2+RFT|=|(-GcKG<{D5TApYeJ_XGJb;(JLjPcNACyfv5#NBe$C4>0kRkz zeenC>lZQunS3B7k6Qvh)O(zOoOE>C&%+_iQ*v&M-Q~`rF?`Kv=jaze**)B~6u}obp zMWd@vu;LvZ!n`*N{x-9TGTIuczn5RU32dRR(i_kAS}AFm9O=sW<4TX@j8o9gFzT59 zz(Tm@{QbQzud23h7E~P+th)(2`!?J0k3{7eKr0M%DhP=D~yXIT)-L4!4ouownr4DL!(Sft(=76-&W#?K+jY&1V!Exr{ z5Wd33M&IrP2KekC1Q-r+aM*gUYIS~iEA4~%{O!60{1_^JdHKlV;-ukQN+0-$tbxz_ z?S274d`b$DsZ6D2_Nfn*Jq62MsASYHPc7rf_?=y)p~ zke7eN%q%K7!UHu9;3{ysgVGuJ{GjuLDJ(fQ8c+`2wB#C-1idwno&{|>%=SG2n-012 z{uiFqhauod&&+`R%^%R2-13}DN=kBbjeyeyh5N|s#)=AV7_U}Ufy~hk9EPFPR{;Sv zgHid3vi3U;*n93x7Y5+I^C3=Hz93`KK%ui#2Yk84!Tsooj4tgwO&)ppVl?jAPOuqN!=f*MFxp{j}X8dBCK5 z3fmp5&T8aMKSnkG6uOA|0=WrGzZjg`!Dt4uBML{-VSwjW-+>a01Ke~jWbxlrvBk01 z4_QA2TCqr0vQlfVieg6A#+wkuXa^FowW>YsH2o8GYQ4uOLn&o|esva??NIs5HEiIG zAl_1$;L4KJL1|i=P}`jd*-wGZc$%y9L~3j<{l^db)nC1vtpBpIQ2hNNo!t*v1ZWhB;5*<%u|It)*6!^Jc<52b024ywXa(;;`Q+2W|{xnI6E^1dF+n zRl)Y2eRX|FiS2l)0W5HWb{QbGDl6lx&Fr0gF4k35#f^}xvYmvwijLkf(na7Z*kfID;Y%{+Mf<9+=pS(ks`YTd_V$ShI0=m3~ z%8*^+&jd*pb5TALLJWzX06LNV#LFn$i*jR<3RckB7;!>+GLRu2`}D|IBpUALUa50d zSV2kkgqs@#4nTo~dGWd2TFH`4zo>WFT2#68{i2jo z?qdFZ=Aq3zRXXPlb{j&gAca&b(9g*q)rpEYJ+Ez%6Z^xDA9EY7V5rZ)$S9vc_&6(0 z`h1Os*SVapFw1QU{>Hm^?}F}wCb$p*SSStNbr0sG3ja)t? zCyGZBL^8&XlxgK?tLWvexSN8q+>EKdkA#d*{p@59JG3oWT~f0x@(oM9myO@mRKl55 zAxD}kmXul12e!z;%MWWW-x+o7SQb5FF|{$#U$q;*{`$kX|9T=CG#_` zabb_c|3%M`iiqr_JXXmn-}zPg@aAvRV#}P7ieAEd#x%JQsYFI*r-z0*c&x+X&X=T> zgQahieq^Uqk2Mwk96LYZJw1reHG7sU>-KlQWq!$m_1Fu&@ zwME4?(1*f$B}v5_QM=U0=@vm&u?*3%=8;JZ2;0iW%8IHzxIM)hkr+1YnN zkZ>D^bsIwmXgYWTeXgh&UOR~RQKN0bID-#-8z8)DX??ew-a3lhcn6LHw1Z@L=x*HM3k2>}&63eC0EU1< z$j2v(0c2gU6NNbu(eFv`vSsBBah(P+PuR@L1r^YmjE>AIWY1vn((K+&|?K%cC zmnaS|GEy!%D|yR<%bkVHs1v=@V3JUp?2msXlIU3;KknUei+V@rvl2IS;}!l?)5;Hw zMSzi?H)I9=mT;fqs)hRpe+X$?LArqyW*>#HaLk+ey-gK7!_H-tk-h3(K4?} zVx24&V=cvsq?5UrDoRVVh#Blj=^ubVznkg@LCk0`k9x90=jx0YjZve@C zPh`oXqJF!wRV19|`11HvTJ8mbG{VWZ3vW=whDSzC(b<-$W!3)u^nD+AeBD3oU0r(V z=vnn28uNH9-u?ZNVMdajz`JENyBDc*h9|8C#r6jNEfi1wDgUG0+%4}`zh)UB4%TZU zimBubk*YD5?hFE`~CMzype)mx=wzfmEh2fQae zHauKsqcwOdTwvX~YXHj>@WWfm4JM}H2U+5X8hSZs4M9|X8g@WY$seq>%Jiz0 z6|-g9fm_xQMI1$c0hr|vaPAIjF#`69tu1)<1!=>7kpFV*)d;gz;MEW$Ml;Aw)xCaf zs;EXN9u65yK&X8FoM`Q`gV+$l>H&&}(S6D1&jew1iv|Q#RC^~EDk4{|BRo{z+gv&+ zaL#H&YdA4M5+i+wz%s)EW(D;4PPO{2j9S`yaO}#d|Ig;q8EP;uFE7Au>G6>eG@+o6 zoSCV0f#$O!eN$|Lh;vEVMRJaHCFXnG35y9d4-@pGSA|e7DxBorBA|39S91pFg z$c@vVyN^lKSfYH7m>b2m4-mL9(o%F^aC4gf(qKz#Z-#e8>3*Ha?&#K{Z%IOM5Aewl z&RugVy15_*-pcSj+p364ZM@vBF1=1EkR__*|M~M%J8r=AQt06w+{ZuKIImFJB&kgm zu^Dk!9*}2qzYbdc=s!3o`F;c$;ZzKX;?Nb*dApkUL(&%9Li_ptA1Ka02Y%o|@%Q~0 zW%Xe9EA6n9?AE)3{1( zgG{xK@q~Z^TZ41Rl*L%9ssv-Ss2}sH^}(+81q*Ft6ffgv0wHzy@M~*p%Q+|pH<7Lz zebqX2bWc%pT!-a2^BBN|KuWFs8JKb~l}46HbspSD!3slq%Ytz1+mLhQ|x4QqsBI6^G?ubUc!u?OX9fi#-cb3YPplivc$=BvAGqH0}Tx0e3N@Cw0M~$i9 z8BcP(W-0aBi2UljOGg>gi@w^u#fuC&yDwJ;f%Y~sZ3Yvgdz-?=E^Kz}CQT9ge4TlF4AU81I)>G<`+S8#3B%= z4Q)qJ@%fmZ1C&6RUlgEwhd~06>0nhW$jiGL5ZC^orcF#pu$_kN6UsQ5l$EI|U9Ls# zk#7YBj3Yeo6Hpd|Ia7#v&EMiW;9&sk0v<4Vo|>MHii|wooqg=Q1run%%|Vu@l?BA# z0&D2WZ=rqi+OFk|-CcX=`geBjp}lE+Oo0c54n(7Z$?@g!v_n)qNbN!W1g7$?t{`L* zgor-4Iu|qR_1SXuqPikB zt*xzxc)$f|Wo_*PXK~`D^QFV( zA7p{o!ZG?4bhN1{YaYDX|Gm42BF_5v1kFmkAOYs(kNbZ%?Zh>~UL$3duQ#A0O6c{URk7`hVbZM)gSKS|8KcamV*Fd_&nmK-|z zn2Y-_AIB;{MbB#&EhHx@k0e48yA6!AU?{>&vZP)2M5OlUJ~5dxhG^zO{X#@+pd5DZ z${d1&@U6;`Sz+sq{1<+rR+^Jvo36djm_8NduK(jtHM}0t;n+EUl|H+?$#TPMwXk5{ z60|$_^`Wdp!}Ugtzw9R#ankRs#PK;d>-=#g1xK-x;^R+va0@6yJSAyT@`IMBcx-+) z&{R5P`AYnFE0czWyb_EW&f~DIh!xD0GVl>KP?xBYp08n}t?huR?{p-k@Lh(m+V^a) zG0w;mRwdqwy26t^q|yJz-Se4NDAb3Q%4PFb{+?IQvF=Tam_Lyh$|P9A{}J?$}jF7gw*0a8wlueJ1%jD?!G z0qKSU!q-ime&XYJh`01CkndF&YgyN|+(KSP*B~np()4q3hzeK6ghU$L9&=qTC^(G* zx|V@};Z5mxYCMNI%)+#CaP|Y3s(X`_VJ^4o6d0+?(8dE939O0;nSb+q0p~OTA-c`f zwX}LG>RxYk-cC0FTi*9-1U3|;Ox&Ug0gwXGbGhmg)~-UE{aNG*Z~fFU2Y>ZmaQbkm163#2gMwwlK*Z*05>9U78o!pDY& z2Cx_qfvOSutz>#@h^zfM%#S%B;GXH8GMV?dTj1d=e+4%Q39!5*uB9I(=kcFkTAJjm z({{_BP_B%QcG*q~A6y7fc5b)|B+D}-%H<3a1=*VKSSrnL1MJqaL;6Z3TyYBfK zlAg7R4)XY~QE9ercl4*yGELh`Z<#nb%SYXlX{*?E=_p0QI{#`ga{e00do=E-5;#{`LgPEX} z3er0|Mpa67q4Fjv=HS;z_eqpcDjtinTWPpY38Q*AsGZHmrK4v`Eu*W(qCm{_5nalt z+Wh6fv66b6==;gep|L@E7c!K z2Gxk3OcD)!-FSpyL@C3WV?iWu#Xp<#r@vtGukXm469hs*0PMe*j zMCY_|_$+Wtm3Qr-ewc`iQm+FOD$oy_$f$4slEK(N^MTc3ZEt^k=7ad^b!1c00K*LE zB4NM>eMH~j;5@ie@{lE)>x>^c@(DUEL7Ds*qZOd8^5^f=>i|~(LKHw{lmB!3?%6w` zW1$+kTU-nf?+HLtUT_A3*blg+56Q@2ZjOei@rNHhO;^0$b#J;G)|SYmQe}4ms4)!n z*dITB1|F!)k!hOu(cX}3!uPlN$goe~6;wMew#w4Os)Yd~u%5=jSr{hGqSUJD>fBz3 z>r~f&!!i#fY4>j#ppb2r1sed+>1C?R1@xPJs+;}9oJ%wCz-LMytsJ5lY{XbPA9+1n zwPVITIX4&k3i5R?Jqr&PquErIi;O3K7;#dla8rxM%Cupk|J$H$vksDwZ&4JIr~O}8 zq!^E`tNB-josQ+TBnZe0o>6!aw;m*FUxLAwSCT0~!9K$CVaSS;L^6-wRaaon z5>~Ng{PZ*p2{tb;uR!fcRLXUek>d>U+Q3c%*8(;PIyyV9S;y# z)c*WuOB&Rv60b5W= zab{@?|wT{iChKM2SBHtr~~+lnXhi`%7N)A&|Q*K$$l z?!Vc)yjcIDAF>V=AX!oYTmvFHy49-%p zk=}%EsTNe;9gz=imn-PJufZEuCnY5BaRn>zn9j`q8#ZbQYu&Jwl@7n97vi;)hO=QMIO=ymae}HK@4w$SSX+u7{z`MQ zs8^;hUBo;)nTL@$W_!9Y4$ZMQ_+ivth0c?Qrc9MXorK@NX?lyVz10d%vO8xEFkg`G zOxr3{w+tps6dyt;eN_*pDmiN(*i2}@gHpr7s8QaTGF8>n_JXaUE`LJ4C*{R+y=S^n zQ9Xn@d0wF|Som~RUnrt#Yo0ADF`88~y~5zOvXf(Lo3&p#o9AG0Ayz3$V{zLX6SJG8 zqfa0EY0|>J^3axNSif9mL8lw(XdIr!mrVM!~niAy_2?}()}*v zby%}m{F&18&uuA%$+8UmkUglp0o>tR1I{TqtW|IC`rZ`*IG!Oc8p2BsVUF(%Ma<2C z$juu9&{c$ClR86Qd6v)f`Z)^sffpk@cGF|8DNIR%sI4+qFVkH1oFd66Sg=o{drqxU z#mb)>1ui#Jxa|-vl^>NfA-+|CxWi*(Zs4n=$T(7F*c2NZ z3x_j*GZ}`mzynE)MNz)@sC@6E9hC;Eq-?e-yQ;RQX|b@%@0s9!PIh;X2$AZzD`TiE zB;~&}*voFLtu~MDa37&>_jU`zzRPKwN1-?Q541q|@y|mw@9@fYl`mX((&epCpdsk2>^=fk=@Vk-> z-KS&Qv2Xu8ZkC!cRLVG)8x_25qyl4((2w_KPxb>F_uia;sU1K08?18j(6N-NHYN6b z9t_f=NyEfxqLXsYvi`b=xp>7siZs!A4yAP7&^mbLXDAn%>%eS}_^nKsxZ?-umsiwh($v~nlsKB9UF`DC;L73e+X9HZ&na( zDEmE3g}8UI>ek{JX0(l$|9Z={`{Y;^Gx=@}u!pR8@FQ}kV=8?i&KL}_2zwPkA!AaW zHosSG2lAL%m^+`G`4r`N!@&)QEKDtK#W=z_Wl+CEG*32cHDJxFDf_|30#?L3`2M8n z#y4BTe|~1B!SCuE_GXTmd{fD@Ybj&vHOCNg!}LEz%zXPlH6JA_7a~#PN0?PkCT23n zR%hvSp;n~3jhSO`rSsjJk538^X1nhZ5;5u(V zqX}DgI98qsR&Wr@L@@rlpnJT@;l^e&$TYe{0a->H6SNDb%HqL<$>uFPW7@dHJuJXf1QOZuDzw`|{ zjtpI(Xt{~M=chJ}wulNbWh3OQAqXD^kJ+S`YFeY+-tNiy&)Ou8U%0qbLb|2MB_~4j z`E%}0;QeFLfFP@=w3L#^3b#td6UvIAySLg~I0;|cD#cBz-Ll(W+1TVIL1VXV9T$&b zFb=U3|G<5~8dhne*O4y#gK7Za7z`S)fBZ?-^_L$3mYt@xYNn>kuxlcBzcWYXF|V$z zfs4)Y=BR>NlE}^3;4L1?M^4FUgdj?wEjI&p9LS;)KEio4H3dF6kgN9+lm{`=1QG23 z8I70dpdf;%;dzM(2@f|%U%{?`4d`5}e_!}?;nv&k;DDG-_Yg`Yti<$mMMlav0&%z- z=6w$Ofed>>UwLjmyFcSXjL^0$i_x#{boxPR>TyW>49k1pabW1K2vepMPB4LZ0Jpem ze9{`H=0NDk{WWrPRModMgjoDtXFAU1!Vec%X9+%furIkd1?4}RiO_E(>pEM_BBWNl zV^V>SsF>Wwygt{ttE?Srjac1&Y$;rIE*J9;=?XnqNK8m7oLRf?PeSvTCt}JMvM9QCR#)w@zZC)}tI1F>nSq8Uo?)hUpg>2Xaf+{VZx^$9Hc6GX9jX;;wUjyLtA^ z{ZlB-H&S()k2CmBg>GI?-(WwYD4UM7OM9xRPZd$UGw-cgP%-|z?_(zhr;VIwy67;z zF=~J#R^}AB6cG!0Yal|KaDuo@Lz$1MIs9h?+thEn$mQP7!UEFA^V-Q&@$!m;z$fMs zTg0}A&T%{a<+k+`?_qdx@$X?awKQa<^gR_N%sl}}D4JU4(dOKwza%v$ucvZ11{aUZxd=66%__ePge z2q_CQ>Xo}dsDnp}sIp85JB2Cn8~3UODIG;t!re`=EIVpc3@3~f)By3ZpR$o@#yYgP z53%JKZmvczcuPFA3M27WG4B&7TI&z}#J%5TlZg6F*5#emR+Uv$@kdLxNd&2+fl(Fh z-M(J|>B#xy^zWjuQE`G@hDke?x_V`sex)(5729!Blg39Pqp+jG@;S*IF?CD#Ec(tf z5mO`_6D44oKbQCL@sEE~VR2hYQ=v4fn?y+^1uUAsb3 z|5xpC!BaqMP4nnTJ(m7E!}J`v@ImB5`}$gQe<&fo)SkbJN=QL^siHn|XR5<3_?xq9 z4{#f~(-ry1JIQ1U-!G<<-`_nZal}J?|KS75$uTr6kU#Uecr)1gt(?j9F<9f@8WR97 zSZ)}uV(`eHzl~CC22T9Fw&qR60e*qN0mGNyZAJl`g2LA>WA*A}UIg+C;9>@z46H(! z%mD~z4@LsuhyYr`bvxMoCtKrtz@JR#vBo#uhU899So$QU6S>3=cY%ln4q2hbRvA@( zS6(Hpl2=x7U2py%yDm{ke;ZtTWo^xc4YxccSg2jN|2W7R{ruwAkq*XF=PmdBAbJQ* z{3qm}Rol;Q>SMF^a$|phdi&=33MzrSA>tGDhxDh!l3g@RtDBkq%=pp7cLmv;-^>fj zn34!cxeO#HzQJqdGZw{w75R50tL(Zdg>zAs^ zsBflnQ9F#R$6n;hnuaOy*ajk!QRAQJ>2^`! z{hGg=vwLqPIdso4a|JE4z*W#X!Xl_W&FIB{doMm+Zi!rq3#53ST^ABiUhF=&-=P<) zxW#`wAXlBn^(4cZ2AjE>-#Bxkz@jI?=58OgX0_e)Qp!&|1hW1Dwd3{zQZznV*1h9X zmcDRjMn{Rl3L5pOX?#=mHin1UL$mCYhf~XjwHtNcs5A6GRuoy3AZw65^;;Scx?mhw zHz&=op3YR4_!dVR)AYrsp}RO0*@kvnjk+HD`RUQto?OXwj!=%RvfgCTPx;;h!yBWW zOuQ#;SM@5#9yzBQbaa*~6r9$XitQr?49@aK`b5SZp9k(1$-9Q4f zmj3zWeUeZ-tPtrq${68L0z0usAST6b15g;kv%h}jOjiVs`R~zDsFGf2X~7D_Q8*q_ zbFJ0aru;vh)8BpvzXO=f9G&^VCwiN70jmZKU&=MVLH6Elg3xwFF9r>C4ZW!xRFG)^ zDj-hhxYzR9K@m1faK3>`5NOW0sA4HAKvx!}4xn+<{N3?Gs^~A6c2Tu)hGLWA<3OEt zYOJLN#j1$i)Hj&!gQKP>^)EonAoWy@P~yF+oE)Yy4!0z|oQ;*$1UM>~mOyM3G$xP} z%6C?BeOI18%Tt9Oe`1n3v3p^1yCGRWkkTirHqbHY&$AcY5y1q?&5Qx9SY0;?0R%n` z>{WVmEOS1s^bji}MT_?hwc+baRM$C^!HAIY6-V)fPnwU&V&oHo^V^tJR<#9IyQmBC zxn4L7beFqre8?n2{$Q_RpW5H*Sa#OP_#egeq6_*oYKCPH!f1jqA3MN}O`>0pkB>l^ z1@IOC6>u@&HqhLzGg>^IsbDp9?q+~Ki}=HGSNtn~Y(At!PG#1+tQ6e-)924M8lKZ_ z6pjlPPS%YMl#&aM2O*DA-&eefd-42wWq`CA?Th;CSNhS4{u0TVPz-A4ZrYjON@^C8 zj%t```IEeNXt{IAF;vlv)Hvg_#Q7X?`SAFj$tgw=bVhVX$dcmKvT?IdB-p>%JnBfm zOdThtLr&D3{3_K?ct?)y-V4RrzMs01g!kfmiT*=19f`NQ_xy8_*^cXZe@}I3gBKb) zi^%fT$*1|#vC3(wc<+c)2gCG}-DelN)jHKmHyKS0e^bJ)T@FIsi|1x}ZI*(ufyN-6 z`+1v!ZC34h3-XDpfbZ#FZ=xOQdztv1h}?V> z#Pe$Hln|#_aHT#t>$W>1cMc^9EI~x(>V_^JJdn0iE4LH-C5o>oZ6{BHVPMZhU&uHo zN3~qv?4<)~6kqh7D*n#?`eYet-dsZDjc7+7c!e!)hGaJG261|#HMgurW1wo(HSgpxx-){@>Gqx)2>|jZaO2f9KbH zo~qpK$wlDW6Ub|IvP@*^Wd?}8B^a+84(rfjpeXNTPFMY&8NfsB@M9#eKq{Bi$iEV9V`)^X!Kt0W`$#`dN z(i6TqJ1t~SMuwivV%V)nCch4>>n)?a=wEsET$YXEN>}P;!MKb~uew7^!1OS>MvCK8 zn%Da5{a8C65y6_mdd`ng6=I)S(j+m>c@d7{w%~3Mn00(A&R#!=X^1bL&~5f8*~Y;E z#4SKG^r@pD@j||FR&cio7Cv968#v44cac<+TqJgtc1i^H2B1dK9VXx`un)fQo|ey& zZkZ-=jq>#Goynj4LlTkh_!8W!veLURzGo(|T| z+9Q6Nag(T)efe^AwdW7&O-K2CvqKNTmu1BK>9Xfw{guXP+zLb{)?WF-5fFn!Y=Be` zwj4-z@ZC^4#Ik*!i--v9N>;eMK>YAl8d1f@H|12mh#1^`wYH)x!$-{b6vGmg2=kcyI8R{+r&C`#w6P6 zZ-mG)_xyOr{a>;_ROU);zfN22 z9v4{*V`8@`HEiIxtiQ6cSQ@D@M~XC0^MxTf80Y{T0$&C!9Ut;x5b`Z%x`f_IN^!FcZ_$H~dg8W|*VM5Vr-A0c?9nVu5Nd#?rsfqjjU5}j0 zn!7a4j)Z=gyUaK=nJ72kI5AiL#_5}5qQ^ULS2J;%=;htv=GYqTA8$-@l3L08@@ipK ziN~+mR2 zHD)ivM^@_nn;hm#k)AL`vR8gNON=c*d!fUzU}n`3Y~aw;=zdkV|KNdVz7Pfz{sU%5 z)@B9%e(#5R-z6VmDAoLq%Ud)6U z&)n^)aho^$YcDUyLa&2(%W!72a>xF^zW!*9_#PJ=6p{K5PvVO;93wm^T}S1O(dU1 zxeV83F8UGsJs5%DgIOSDOBb4EI@Bi zM3MVQ^aLZ^GAwhL82PD9$s!a1`T6;2ov)XK)=s=#pR=xA0#;mFRwfem@5v3f>cWgg zCJF}B0w&W1=I``#zboB~u$87Z`L$EK78xR9;B-nLQOW;A$v%Xh=E`F5S8}hoSuC!~}DO#YnBDx}=xEM^LZdvw6 zUXAwE4<%Mp^_{x`&bj4%gLwpm>LI-38|24-Yi?6Dg}~tGpU#z!JGnsb zV>q2Z48b6GBA;}YPba1P-*7yKYvw=y#fu-|Bd9W@D2T8Bi1VYa{BG{3uX`f*B0m;% z<~SrqcCKVVK$ys{sVRAuWO~ey{9klk2BS1mM&J8GL@jB_nHh8nFlp+V&I1g&O0xxC z9{<6#PE~CFIxJZgc-OM>S?uSjPorWRGf-k+pf(!-GNuTIRix>Sk-ir&T)qB^R{+dRwguir@4)J_)QcKC5((Z^8qLE($E`TXZz z^uEkpb`F<~J~!_sueO*$;WNeTr+bgbS$PmO^b1n4Ds%yS;gF|ZMnhAne^-GHiK9~d8 z<66! z7X{9bq6iW=X8xO5KlP;IaDCgGy_N}7wT0)U&`bv@V{Zo!5E94c6Nsnvb5MA1oL@a8 zq^6u?zzkL`eHgl)fNk`L^|*tEi8nfyP`U>uy(Z<_5K=e3)sZ=Ic8|%K$GnHo)@F8; zPGDq#pF1d6;v-!T2{9@%ay9G7*M5t}D@W5&^y#P7=CrACKTMY2+x1r|^PI3PuNtUv zJ|FO6>;FhAW=M|m$I^ogvyi!|HIS>7=h;IgDd0#~JAQgp9BS^I8^jiD(2~0zla_8p zn|{yPemX(Vm<(50QQnnZ|EY=FPKC&>-`=uL>VTF|_P0Bk707>kgbfwSi|e@0sLkmw zWIyVD_l|z|bmz^3z5Wbd8Js^1Gwqx)(?8DoS2OCWQ<{XYdOjC1Pm*Ie_MGkW@2cnK zFWbnhM1zP1Y97!=fo+liE5#>jlIrVir+}_@Feil}@RRgth%n(Yk%W~7Y!2w;;Cccs zdzj_hu4S>ipbTGehIYUvBNWMbyY~lZOW*_qN+9TM^&y@KJ{*Hei*Jbo_6|8i3$g8^`N$6)q zbY?m@fZRH(Lu#B_65u!@K;`$)&(ox}p>_k1Q_uq!0d68sy^n3Rv>-Ee&gVdBy6QIi z0uGvL2SbBfl___6Umyy43aie))8#mr>WDB2?E28k;TLn}(e0{k?i(_qD9?3}&do3$psdwONzed5TSsd zg_!hKo=1Q+_w`59qqW9-7vxMVe2vkXseTON^zQ6k&i^VI2?(o;om#gmuY{LoGRUWB zXxdktNkg3g9R>f*)YPymZp9H-LN}N6m9;>rT*^D9wqS1zIF~XKxjv`RkR(ofMUCV= zBVKd$AHQ%mf{AV%Pr~}7iZ?%3`BWr_^G4}3Dx5#Z&a7J)-s0Vvt6gclUzi$=nZe$V zET+yE0M#YIj8^DipbG$3d8`(P(Z-~adaD9!NktWUgCD)l?>c0DUpVpCt*|#(S#XFp z{mre|rlKD`ob=^_;l#0g`adD2iueDIrmqZ(a_!n4LIFiuKm??_r3DF*2BkqtT2i_s z6=~`27El_IF6rEaAkre;E&Z)|zT@@h-YCOx&vmVJ=JLgfS0zKuS)W|hEdQ|Es<*|W zZHxEesZ8~3Nw=|cVG!Bh`4tYLgZGAYJJw|)SCvG2gSD2_RnD`c^7SP51OiKS4mBlC zDRUW>%WW0%I*c3p?ROebtM|hRo+kuW#sQzc1 zYWUW|@X_wPVZ!pKhXMwWDh9U{f(s-|axtLDVTjF+dwRL|LzZg9MKoUicxUz@ZJGN9Qc@Fz=hx}20G^ma8l-c**azx76>Z(Rp+z{yik8%p8@z{L4pFQ zBBBse4CUwZlpR1{gy)xtGv~)71LK0+ zbZk{`AlGTGsUe4{!1537U#qUnM;N5*>WflsDl$rIm+ti~kN%khq+n7(I*O7mqHWhb zNa(XES$-65=icPeB;w6L{E7CbMs7dGH?`EeI=Xn+vjkFSY-{H(JZTHg!U@X44^N@@ z=#w;1SW(g;T3-(p?K(rIVL-h{k7Hlv#QSl`_m{A}Xl_2CD}R@&ZQ~LNt8Zyo*G>w{ zGxLN#TdmROg;Dggci*`=9p9~C79bkT;PH01%#uYjCPWNjGOl$vFH*!24q;jZIQ0qG z%y8Ll3C@n|cd)-48D}Sn_m`v8O%w6ViD6b;3zTuV8@|WO$EL8)%9e5Iel_87|8ahH z6USz}kKI+h+tbU}L&5vES7*Z;-@a(x@BDjs5&KABy}f+rhYayOqF7bQ1oQc;K@+}A zHvI~(>lq>S>IdILFA^dSYDdZNaKfv;ngz!o$m{>374!G~$Pg|gl24?Il9Tg_3eTQQ z+9z2nq>ZdPYo>)TvKtNDLg((1}9F#%q z&%M!^fE*)a=jjhF=&k_GTukehzhw$Ezn8N0|F6Le3NUwnRpdhXis8lYNw{j2F(oF2 zQU}2j!J$)W+84(R4K2WE?twGx$KoE$-pEXLhtWJaq|)?oPykY)_aQOJ6;$B}KS`v0 zc0Ju~t`2mf;PwE%k*N>VBD;-;L$Sjf%qO&ElVR8?m8-txtr)&~bJ=gxD zhIA%vZBk71G=7d%jQOJgnV#i{OpF(&!xAb)HgSG-ea{tE5ivQWDfgq$%&tc@x3f%9 zWr^{n1_$Irr+IBdOE89XUK?>&x;UoV_4KW9(K-KYcrZ@^-eq6d7{{5NYNUHxB1f zcXEoWQp%4ws1e{=PZEBkHtk%+0_ z@5FZY$7{hi3G(b=a-Y|>y%}1uRs+!N5q6}~d7`M;M8)>^{7?{8Md{zZ{m3L|-q7T| zim{$a=;vn}5;9pJF&*Sl<)|omI{JOuZ{zEfK6~S7-zILg0Ds<+Xrlxl>j}v_Wvox7 z9&WxbkCeaGs`H52QAe)R?a=JBHA#DRDDAeqn+o5z)YU2^Sfga2_9*B?S1CttLub&o zIHo6FmWSgD94=r$hkf*p_^RXe3vG!~60m#WAnHp2o^}|bmn$wT%!*?m2!R2P_~G*3 z>(T;C$PgD^y@YYC1yaGGWf#y8U{|h26*!eZBmt*i+99Q=r(%YP2dK}A)bA)Tf~FR{ zynxxfc_Y3PIKR6K_o;At^KybNgJP23i;>^ILoFV-PDteh^)DZIHucQ>;PT)}HVq$4 z6RN7HZ~znq#=RYIl0r!tfZBVd1Yw;JtAE)+_yU`h>ovgAYyZ6yp(OH0@dHK&gwW#< zNCv9?H9n|RH3HeOY^tS=4LnUxDkRo{9t3q!wA!fOi^T{N4NLx1dLfG4n~_OZ{8i$p zj`uYIs$=jSpQU@r#VC%6yk+{VOmHI^e4IgE$p+uVl*1_e5;c<$6~UiNFwEpRk9GB= zrg6TMK1qNrDTbx6-t2B%W`C)mctpMhPclI3vUKl1W+Zt_zZ08m(r7funfAA8OX_P8 zXNf^+MK8X4;9pSxV_%q(I7YKQ!G^=J%cdO@BWlUDIkmWh&!i8#A6-Abs9lMjrJkPM zgek^z!qmTfn37SPNG|&MEk&9S?Y0a(yb?U|7&WDrYqq`yubt1-1++wS{z45JPf30l@$}JY9rlSK>Ud^-pnlBeG;;XDCsCdviE4>t% z*fu2!uO~3#30b-n_)p(QGFI_uV5?QpKZ#df?Qg4+IXtSeSDh)aG)6JwBE|kF`QOwo z;nQt{Oah#TP^SrtUv_HP{U~Kp5(M@S`-a&}Q6<>_3M?zxK+@y`Eo`+U++FG#oslqI zX+sV^6wi!FAq(2z7nRCytE$0A9JW|)0Xhcvz1Nw;L0cq4XHe$_UG@-Ift&}Q!P;77 zJ_ss<&B?NE&pOcXcm==?@Vmyl^S;&$XbUJKF`m%nymvPu1Z5V--@pi{{D9Q2#TjB|Dc-^Sc(ea)H-+QhScC5Z3m$&! z?P$CwSfPd54r-@zIXUQ}9v$VCykDlxGZc7}wh0;)m#BEKB{J!w=+7$qS)?OLO&F7D zm>DMdGHeL{_{KU;WSH+Ivzpr z%{Z?ui29V#JOa9x&dw)WD8o8|Rl9=aamM>}7FT2s(MQw_ClDyj;oSl-wkL`j!T{xX z$x1-}$-XB5%V*8B-35%^xa5Ke1V^GZoJYW#31FkieO`AaV`fUahlkzutZo23m9{AWuV7%P_~=1p01(J`PY729gaxm2B|5WoH|K$_(NNg<)5< z{XTngN+h1yP9c*ZY}K(4)+kPMhY{roM;$uReQGRMezf*8hvx-O#8Am8=+Lx#RX1OZlbkG< zsK2w1kwpEQ*o`^V$c#B{+LESw^p=FU0mGfU18lh2VH1kQefx((mEcEL5+*wxNqbW{A_-a z-BMWSFmG)oeh}O`#v8x0^dDxjE}6M{TH|_J4=uA7WU76p1l6#u)G#p znQ_G?VcLpS^&BVdvMgYxE_nEx^XODG71^gQV^~JR{$SO)?wc`vwjhn@S%TCkhzjKc zkuU5s3*R}={|F+q5#kbDb!Y9%6N z$zO!VU5TccD!3*tdT{cjvHt4Ugn#~WzI+rOAtnX~chtS;5cJj>rdx?hC(RAEM|t}? zSW;b>e$VOEh}f(=sfP1CI3Kw7&P8mOz4gwo)lxAk56~Vh^?r15w~^+h1d+W0RRHQ| zatsAb3{-szA-AvbUIoLnuHP*Im^zM}F~7Ce?o*m?f_)bOwC4!46u>b8k7HqRsH#nb zUI&N(Ab10&elNh_@oA+6zs9Sx9B&%lc!G8X5!Gu7ZH5Jw@F;;MDp_&oSH+K|{qczj zU}%8+*+Pc`dvuBacx{I>M4{uD=uUFM861m=iHXxSO>VmeGRF#Iy!w;RvZJUl_ucg- zU5;iQenA@0m%>6)5%==q;$G8H-a!bwJ}OAHgBA3r@AaxL^6W*TaNrvQAY|3Cjw>@t zmJYduT&~H8jq;X!`*vR=+eJUJ(>U!Agst#GH^G_avzqP(N7(-owl_c(#*`0u10cK8 zkd_JV2uLyh7z7=959j}N$r+3>=PWT*`OS(CRfS$~qM%;7lcu>be8FN2$U0}TqD-Hr zJnM~?&xf}LBnw=m9cwAih(0(i1`ItX*>FwQX#F1O<{e}`{qw_yF;~~uuh|3|=EZ#> zR#-9jZgWX9F`^6Jn)}(kWeN6F;KloghjBkjlF~bl2MvW>Vue0+N({`g7QX4dm(CZtWrK%lhTx|rf9UDz@#a*GDj>6b ztF~>B{mFMz9ZkFtadiK&7Te-2p>K(;wp~~x?(%)=sogc|Eoz2_YTl;9<=o!%41^q9 z?d)yl0a$(q+~PvZzkUS?T0HqBo=j)OEXs5)C*R;PbT4vaM6Bs}VA}t5w_zniLHgd= zUQ>yQbOee@g^dESDQZA=)w`K{3l=S6eoZo$KE4nE%GQr#bR5P;v2Gg>1xa53>wA|v zt?e<3P!2;8@THH~wayr?T9G{CyyF9tT z-H7JYuXl#uS$*l`|A1bja&0_x`1ne^Q6YjGGkwq;;x5>2F4yC_G|@26&qE$$;lY;36P_hdOxdo@oI-ECAbAEPcfIgA0Lubx=pTp? zGxXYjK2%p+jMS^RZjmCeDMkK44-676Mqaw`6h4Jv&R=}t@7u-Q&3 z@9`E;?YRbuBVF&+Ie(>o>8~Qqbb>=`(X{O?N7V+Ua<3V6H8l1awu9p`msgLl1cKnq z*Y{jUqSSg=|I%?5(!kmf_oR`FaS=T@XTbI`Yf?j``msRccaHi_8V+UC)?DI$ArWmJ z7}ZDWEI;Sw?56pPL(-om;H2lLr8$kiApQT|npx8f(cqu)b93QB;cl~$n zylYl%Y0xil7So%fbU(U4yLfQ^1Dj)1we|DsMgwnYbnTbr^a|C^y?^8IvjQCa z{aXK(4(iIhNQsIsY-K`JV41~fldH?!W`7tZB63&izF6VB=G%#_nFd?uNTW_;!4&!0 zS<1u>O133YV)iS#Wq zp(2p}x3WELF!RqbdgH3=eM50chkw`aCf(D-^Lj$vEL5ZMnxc<Bxj)RBuAAZlswQ%1`IVg6{4X7hBqHYbc0>*E%4& z=OB{%gAiF&v_O|-T#~w_Q#Gni?EHg`YS9wfYM4O9a{4 zo9YY=4-cF2P)1rD{OtvL0IW&yEQ1bejJFZ@t9FGkj9wv9?Q2pz$wbfbbCn~sXCMg* z^v_Ljb}5ckgH8_+4RxZ<|LIT9;fA|)3J29v5fB>FT!H0OxSqt5exu?yqgc$n0n0D1o3b;haZ9NHE}XuzQIU54 zHG@-chD{%7)cogA$|#AS5AI{G#&N?lb4TAW&*hc>EAzr9fy&!plNyE0El?PNBrH9r z!881`-`Hc6Cn0}bmm9@fC3qwVLa2MN6l6>1Yff%1ehiCvv^DIWy``r=jqyx8Arr2e zydPRrm=M#Or}4d~Z6&~spk~P{6o9uc^)hBc++N3{hQ+{#(7M3V_%JvJUJLTZgRXJ&swp54Ad-HN zSLp{A5D6}bH+FV&RThzEIskjLdkR4V+tIocm_4+#v~Es)Z`?o`XFilx2V_8;tqRdH z#AMDxt2LasfZzk$kHso(oj*sU*95J z@j|swaupOf3Tp@?WN_0K(0|g-fx?nkKf7bf<8gxVbQmF}0-;I?aSm7ATfUH@UBxht|VymHni<}%KkQGTDM0iD~5)PR+$rcSal(mX}TY^XQ06KdHc*H z*}?E_mS8C-MJFzZ5vmk6gdfzpnEx70u-dsx8-y`z#7=d3Fn?Ts&0l))hcjajV}G;o zcYwh=hFGxsT0%gigoOY6E;NO=%JQqK{pY|K0DgM8m_1()@`rq3@f&S7GT z4E~%!Cs&~zj;H$atxr(r^7q~Rg#ip& z5Z-`{dIT&2D$#nGL(RhB6uVjxXmR+1%Gg$6qnX3@l~Zv>e&YJhl!c$p>tCndD&qK3(LW1S${dt(x>8A(nsjysQ#;(} zze+bv(wWyWyybOx-tijmIo>S+bd)KKKqJz?sqb?QnfV)yzC_g>ba&oAxP5-HZ_<_Q z{9zS3c%G~D$TWKxwX-?nl zm`51N1;&O0IF6DB!Kni8@+l}{@b@7Qa~3Wf4FNns6G!w+$_RT^wr@?A(*nM}Zc3-k zbc73sdOD8#oXz&WOV@ev{Lu{rqX+~OCcR&jA^{hj`VM`-LAb%VENYM4;9Q->WH8Ey zJE(OL=sS*O{j~uB68LW`m1@|07jc!|HZCU|N;!1;&fB+e4%P*}uDEnAqE{>JUQGL7 zfGD=Kbl)oQj6!IIM1l_`hDi{d$h{jdvzR6$^S)>(wcSvZVt{_ye#x6 zbnJ!jUs*oJq$Ut%UtJ9WjNXNPYIP_+ZzzjyB0Vu@?0?(?Avw^KSEGr|)yAEnFut96 zHKU;2hKF>z=1XxgM8AW_73uheuTo0kWrmKLAB#{LU7}NE4&X)cdei?@MDWiP*Q(Li zDUCtU1H=a(f@%$lfY1@h;GB)0U(ozp2Lqddh zP#7}JRPV0x)OWGn{RyslJ7u2aT5wUP^Xf7MFjJZNC z(<2&_KLtdB#p@a`aEmcso`s83W$|RKdJS_LlYQ3@!XK-PCbCpodhai?QWUWI-u;qR zrQa4nClN{j8-W5-Ib-A-dnZDyWtuRj_|{TnMZ#wS<4>qv#=ph8VzZ4mp9+3a<10N( zQGTP>vLHQ%ohQnTVLKSDNRvfJ^>Zgk?*3C6YJ7Q-DiZJ8iY9^cZFjo{?8k`nC7u=F zqxy-zj`0}HATV5KpPWA*qj(qNN?`1`8euyYsDw&#k0+l<@0qSVb%2(@mU^f&N5pv^ zBn9?V2i7l8CZfqE3h{G|sZqs>%&&gZwM~(^qiP=B6CuhMPe9=(Yu5ix41UuIX2}IQ znwkYOT5%`mk4o0%BTLT{^2XMOy?2~|!P9Sa-v{ju9x_-48ASk>)#`Aj;j35Y5Qf%V zQK6#20aqxOfPfn~&EbA6-ApMcdUaM?s;j99zA*sa)HAc(MJTavn^gP)vn-elpGm>Q z|E<#W!BekV%M_~=PVMpqxNX6Ic9(<$`p8LQd-EzOTOhm;L`DtH>#EC|qYzr9t?dpI zq8{`WfOd^v>2bO;h=Q)1GB0MvfEb6zP%v4sn69aG6Y@fucj`Ama8?eq=kY0^6PF3P zb}EZfFd;yB5k5{3GTm+36>eluxxDqU**n}HVtHWu5|E1;4{8LJza828yrEhK?o$7S z!Vr_xd8exbuc#YWeSsxiQ_?`;3e_j;8I((g6(Cna;v2g2=MwnY`D4Za8=bi zumcY)z4F>R{xMfTX~8DBkg#|`hBUPho-BGt?%0)$w%H5(`*Dl}ST4h)f!Xh89~%`| zbg-lpC;`<5KR0|zb^%}kocuN}rJ|HYPsXC!vOw9*iT~uT7(to9R-DY($8N+xlkvg* z__JkYHhN=+xEMivCzOxHdZu~YMbw3|X?xhd#8h>qOOqn&?($S$_&IiK>YI;`Z{906Y4?{gu}tcxD~y?`a<%alB-h8*T-GyUweuu#NHCAlz0XBq zG_Ox1tWB~0K=o|W`A4N{K`%S&;J&u&r8Xm#B!aG2J&@zDW38mnOy6Z)v*N3xA&Osk z^YSxJl@Z!iFJO@YPKW63HK_e4x0&Lh?uhg`%7wXGIYXolMjYRpYX~F-mo{)F@(i({ zmn9YTtTrMA2PzrJh``af;nOMvpEyzGg5gy){UG%s5H47YPy%at0qw{3(3Vxy z=y!kvu5G|RkleHu#Mi!j83pJV=#-Gp5A-O)1p={!8(0PWSdjbQe}26A$bG@zU1V-_ zv=V-!z?-D25zG(Wm^e&CPuqu11wSYq8-=xE- z2U_mEuW?A%9O&yPgKT7CQ_9J^1W}e|sPKwq(Ghs!i5-~eJR$XnY!5C=mtQ;u$+xq+ zl7dE5s`7CMy6`dOL}`XlPnVWhpMf)rmrUc63^cIL|BU#-jlpjw79*dpI0ijBY;0`m zAG77v?50nU!fF5rzzJhUtF5QERlfsxI=q{ZiX~#)5e%I=H8uQ7W1ut37bbRbb!B<> zL-C8kv1VTo68MHu9^DT@T?aBmbtw*!gBzG((v=}A9^P?i+zyb;hJ2#8AiXBhcOHRb zOk-&P*kF)kmqX~rmoKb%m}~WvAyTj_LP%cxCNxg?C@Bp_Q9o-wZQ9jI_y+l`Ke*sQ z0@6zq_@hKa9}oCM_yYf6Wo<3A3KUX3a18J)BZD>wh3v1BwgeG{bV0&N!P2>zTU8>d z;!-ZyKOVT*OdBDB$xsMP<5@z(3+3WJAjBb7d$Ydp_D%RJ)Q~keNYnVNCp5J5kHIJF z))oE$cq)sbz3XK1w*qrhQ&UwR)*bK=_=sp)i=NT;XsQR4*55E#oY$AFx0qv-*OM1u zNQF!p__-AcqbSKU`ohrs;vA1Rega-+2!)Ms0erWaI)G{nYzpCO2;Bdgx%DuzvCeg# ztkkl8N1jutV+ALr;q|2?+9jDl%Ji!T7S00?u|ufKP4w;mj)?54SWY~+Lk(jIf?Pii zTZIH0D|(YdPD=itv6#V0?rf1&w~6A{G+w{+vr)>|fvh2xaUF3(e9}FFXp+nUN-?BX z&f}8zB=UPzXzrK>MAfMJw2-{S^JD$#=z2s@WPr}X=kt|@$l?NbD)NZ}xB>)UchOOS&D;eb4O&7x0%Yk_ zp`dcw70wHI`s)rszvwL71WzwOn(!B_A@RNMu>(9p^HA9UIEjk3_AkKP-~|A&8cvG5 zn8c~+ z1^XT%hD9R~L8XG4vH9CU(5~Q1mR_$|oJs}D^RSz=RifQ$Kbb*gpz%cLbc3qd1ua&eom}(Dk zYLp{G6f)@z?)#d4C?vjux3Qo7I}r&9YYTYB3QX5n97@9jmBx@RH6SUL>T#Im!fmIM zH|$-0AvZc;s&h+9?&1G@@mOXCK6?pfMNcJQut@_L9E1z|tp-hwXTlfYbXFnqBu7&x5uIaygBf_fUT(U4$Zkyw~+)>yqHo0m2mF+NDN%s-0k zezEgdcQJEiG4EI36atA01IbwR0K% zcN0}YIVi-sK98f|Q)Ff`O4Uqb{BMa~+$^Q!u8-HoIql@pfZGcz7s1s80zu_-StkZ1DSzH)Org`8h-Z`T7M zva_@E0RtE8yrhAPf)QXm^=wKo!&kAhvjb~{bgqz)P>9r@Mc{9t!4m{ffCCJ#D&(sc zhkfo|s<3@RbO$U44Gn5Vahvs}o33tdtn{)h@dsyK@E0HQ+qlC4z}Ek}+~`ArrB6!> z;7ZNS*Hadm6!2RD$w3KVli;OwnW=R^1}}{6z2^EgGczEBw3u~r`b5XZIzgl2EC?kS z9XEU=VN~VY6XIYTbaZVch2;D(-k;gx$L$*3R$^zpFJP#8lum0|g&Qr@(357F_TgO& zo5cf3%;i(KHEpIf2emCD)nAY?-<>yE;>>X!+D4P=bi#RlRdjpB1e! zP4pV%+`^UsCM)o|070FvjDQOqnW_~4J!9a`-t;-^H@rg)F6#qW6V!xqF;M*pbzX=u zkPnkfuzUjxNuTRhzaw$hc`KSY6Vb->_cBK*R6js^-a*71tV>q#8HOVhqi5g<9NDw8 z-b0%jl}C0wbIdiiiShC9e?3Gfm)|i3U$egCHg zI9wB~d=S-%=XXYdBfgW&(YtQ8P=Qlh92rEA-cXtS4%KNI+PC$AQlPXi&o` zMTN!09!2Qv{H`e>S_HcHz#slB)_`$cyaUn~ za1a~~Ta_?v{V(7Mx=pN<-jW7xJO&q=#zz=aK>ZAVM&49I$a=CO$Sy$Vuz3ztG1R`A z>A|Ku91)#2t!?)*KZYEoZFR&PC!u1HmPH3iD0-LCUc_uVb9Q=564Gw-B zQZ8}!fwV(+5g(ku?Boxed}AP^gxLP!w#}$z8%c@-rsEAzvwB<|PoD11i>aA`j-$^0 z`dNL&L5Y@yfw#l_pB$N;>-@i}Zc5@r*qC612=#0*sWA8|K~HBaNx7-fL5FIOCuy>_ zXg~LF{iOx@SC2#&w@?uq!qMlByo(N`)K$F1im^Qz=b3hK*H2=HHTv(YUIM}=?7o); z!LpE(j^yG0UHNo7z(A`%sllm!MinowRcD2O8e-sNA%Yoz9MwL+Pks`tL0)U1QDIkF zk-Gf45%Rh*^VT*nC=Ja1vjnxiaE>1b!eRpFeefD|H-&(0FCTK3P`lCAknQteO^ zgug=}&5lC|3wRm$GLUO|>v}fcKFy<|^Oww_iVG)=O^Y2OUmrPgr+MoA>(;ZN2>GF; ziyrS&R~@Xf9i8KuKA}vC60{g+=TCPjo@;)5SKm8s++JZ>c+v$8S!!@COac=CyPsk* z&oT&|_W^lDHhO~2L9y!nl8H{&FKGMGC~eBh$^th#yv-E$Ksy#bl~}Z|g^b^?Uk5gi z3&z%A-&of9%F`2Q1fs(J%JJyh&{zHa{Teh7X;51_JvTQ*3L*vg1J-?zqUkq#c^DZP zK|PTO@oV38YbrTo znN2*M_VkG9+5^*aouQ5@*lF@sx+T*C1Q$*K6(S6T)xW0~l6)IC{)~_1K4lJ$T6;r? zkP=tclTpjd@AV$Nf6Ei|Q?T#LmXHsJb2Bxmtu^^XYo5Gzzi9k%mYU{BF0o~1RZ2I{ zy`EAB+;NTf%!AT)WJVfn?2l7d!}$ow2}@fml6*jET%oOqSpkt3aKhaFAkpn0ub}Yc z$rHE`h(1Zfd7tBo%3>%2_%Wy%N?=C^Ned#&*x}d?e$qfAP$&bz4DRs4#r679VGKTA zUd41_7oZ4{m;-z!J}al6@BP4KZCQag6gEXb9+2Uf-2wvY>xZ&*2OvdMOyvj5XolMD zZ5E4?^IY#EjdQxWk5*kQR~L-#9^m{L@){4xF5T1_`@yE;$=O5kFjp@6fcud^bsn$` zWO!7u!7P5FzkA6ezdhevr_SU(nlx-^=M!8_Llf$CmVC25%l=cB5CbjU!)?yzU3Wo^ zyKp*T&waURal@Ekw3C7*KLgpW`y(~BWs?`6h(HFDXF|d*FhvlXK5Pg|h6dMds9GxC zd!<9{vqmv402UX3%|q5$4bS?JE@Io?9i(C1OA$-J)Dza&z7xqfIB<;YehfBX2*#~H zVN#H~FJRG?J7$IgPG4-6B6V5Ia|m-Nh8UeFQxTXpqPe~o8pp^*;tV|ZQwl21qCVm#iss^FJNC^y*D?}@}cdujEoFVaw9}o03;3hvIYhjc*Zb60&xAr>tFe( z)0au%h*+Ups!!RATb%(ye=ytuD_$9JK7irDBrl0M#tXL^m>N=2Q$q@?s?;<-+D%pF zH#Lb8gn%klJK^Wl6mtNiDHj&5g|e1n-u?iO^WNlWdgQ`VgQE{7eTPa(VAZQpHpXD# zugpwLYqq%OP9#I1s8`SVzV$g_xx*+tJ}%C5H~DeEy}^eDzi$q>p1M!$CD)sFjF_$E z#4!nRt=M-ZvCcxdqXLODT^AjiI65jFqB38JAzG{8+qi#3%KTT4ybOUnQOlyb#nPUC zJ|>)OsSB8>nUgN9OKap3=AUq0P||FSeICX#HxCJ>zL>fad*b*vI8JrxH_6*8V7CZC z&)pUIs0E~!V558V^-KTY;Pzx$xU3Ho&G6BAh*a(i(W`O77f(mPO()0eIlcz@h!9hQ zoS^z=b@i_{zLb>$1=ct-Ga550P9<1wwLtF#Y616NvqKITv|-4Tydx#8x=~LV*$qb$ zel&OK<|~%?Q0ZI@obidtN5!Hqr)Op)RaaI5Sy)(u?olx0y`)e;P({ORfTE!g61-?H z7%gi*ba-$8uN6kSQh*F^qxy$egx^ULJD2p9tOzAIGL0;+G8GC_QPxQAvYbM&!m)`_ z-(#yhgP(Mp7r%Ccpx2+4`=^fT$Gc6=1+23Iv~)iQDCx$cNb|ONNwu4-eMRi*P|)uo zdV9a!xXqS@nzz@stv-8SyIF;eqiWj8@_AsSwA6REK?)J>;Q05OmLa3QTlYjsi1VLM z-}&Q+N$x!oE-uXKF#+$@#`dR&xO}{`H&vNRDS~tHSw#s2Qhro=lIRM-S_aT17~Q^LO;@vH2iTJD&?} zwEV_XPWz0|PQ`9~Rc)%5lQY_SwLJ0i1%LJ<5^(edys}%PQ0}L_+4?sk;C-F&0a}F0 z4?5dE1o^ByR)84IW`NWYq=NPfInTpRx4(ECgfL>O!HR>7E`s6tF$0TyPOcZ_i)RnB za1HfxV6p`0ez`hJ8Bh5{snWF9F_1Q&jhQ*5d#MkXgH^LPCSS|g|Irmk!C2BBTsh=I z7*f56k!8etkdnhj6@UBNcJl5svH9!B!vZCCwgDIr$)hm^ zO-P37%Ja8-vi#AyBOi8S5B~K!k7FJ=i2$l3MMxq{A&zF2c>Rr~rLA?y6Jisuv2%et zckVWMwC%{sh@|5c<;4w15m(jY_q=r{NU+yW5j0VyTD!^&qQpbg8xb9`7k?!SrjrSO z09x5XiD!YzncN?&Uopk0X(x%n1U^(}>6tt7@8QEa9>vH4SV0^9#wb9tUNKQd_sxYA z#~;SthzqZ$@tMQ7|L9bvl@tm)EV~q*lbsv|Bj5UiH%UZTb2-D;x97bVEgD|APGd0^{OEtj zzdA@pS)G(n<59LF?`iJD%b$qDg~&ATE~%E4>7^+Xh<2ttTZ+xUk9IpwizuG>9_8+uNB<97@x9YIgJ})7#U~ORKFFb+MLj`;$_7dc-E?ilyD1i`X+eo_77d{f{i? z8iBNn+7=C3Ch?tSwuAZ@(`1vj?i#AEvXeDv~1r;VKC6=hh$ z##jGo&XY_oVAsB!=(_@$Fn`lfC)ihg(Bipi#@)<2{|;PspGM*G`8 zhp!Z&bkqMX@G6CXe6W)Mf!L_$$m@@e-8@&~EJ$MTPKg{S49cE7R_&87ovGq5BNK?w z*EYXZyW*m)S?YNHPq*`q6;8~p7!Fn z;pw(;rz0jhs&l;l(@)HyeRHBKcDdsluc5A-&bu7?QGvhZy346wD{ri5pRfyfxGga4 zd%L*_(6DlF@F@+KFFt$lK1x!qR-^dURG{OKi~ca?yqM<$(REeje6D95vUD*eD+7-2 zO%;URQCK;ZZF*W*d_JJqUB@?Dr-1)B%*4-Yr|rAo@>br^ac=qQfW`U02UK_{cvNyy zF?miq$DSHDaR#Ijv_+}+eu~ir{Krd?7gxH_6D5d{O?c(;`U-y{u)bWszt;hW?~&tD z^n(vUu?y(ZxHtGsQA-L!>q+Yu^XN+ietx91N(4{T^$B-2wzLdZPLr0OcOGLDpKi}` z8!xnq+b#aSH~mn!KEm1c-UI%xIbUslEo84MrE99H7N-`3y}=js3luL$387xKl*zHH zCF^J3aVo4hd+qIQt-sXTS4{mOFfQTfu8i6h25t-vT|HsvRi8_&Ve^|spxG0Gb%CiN z)&6PGU3#j96L+*}sH3xU`XfJ#L^0LJ$lJTh+Byj5+r-cB0lB^EA{4f}Ps>eCBTj23 z_{im_*FiY~n39{TD-8`oQ(av-(}(hzvUqs*hS;6%l$iF4ubKs-d!JSNik@O=n5KAd znfE%LWb3{9*=|EB?OI^bJIWf3z*eClD7^fmlKUg~h6-U;Pf7+LneyBI$|AA9X#14~ zmf{P-?YxSU4(PEd9DL@qBnx>TEx8ek49OC2`5T>tQfFlzz4;yY%}JE+W$(vp&*&&A zRFve`n!Fx+|M{N>zM37!mKJW^!+*A0clvJrd`RH>aIWm#fGV#fWhA%9M&A2Tnup7K z+_}kjG0EIQ9Y@XE+u0j=T_JQ zYLv!r%T24-2dmm&-~9@vp5$m&9dousP^0+ashYJ3t=8Mwm&!@hw*`yKlSG85=Ee0T zVk02nA2zt(5QjW%*RV}ny1f2O!rQxoy9{a~84? zSDtO7P#Sch!C<3lvmudiZ)}Tc9>6BI5lkxUY(D6mo}0bgnV8JT#_iLAh;V=onpX!?j(V z@aksh$x}OF%kD4lLRrt%%pOthZEer3HWO#?99*uearSJ-qDlI#=;4t~8E<=BcixX$ zjl*8c{Xm`knw)e=l>qT!X@}UwG5nv_Cm+Z~0?lSY4hle z3tqBqmjYSjL5n|rJ;ytkmPYOpI(v5#(1Rft=Wez!*0=ihy4*zBgMM<79pU!mq|a18 zX+bBI2FAf$fg&xs6sj=GBa7rQ&jgRxW0gifAa$G{cd|$uSz3;p0 z@#c5VT6{#@DAmJJFCIECDvfAW#~}oIbnRwoSzyt{@6=MSH=Q5wIg?X-dxE1inkBIY zqPCvQ|7+pSunOf%L`U-uRIk^RKV7mFyPEuM`Ve=m&hM5A23h^8QZ29KNmt5XSn2iF zj|&5JG2y9dU{AJQ7gwZMM6q zXV|b|iMT8>_gKAi=7EW0A3>tt+feVY5(Zb*ai26uDS(tp7l={|( zHf=W7O3vXJdWACaL1$(&xWKfu5;we~;3=N_X!tiNeU9qyM$J$gRTmwmPxa>Bl>LA?VTn@d3l0CsuMD+d0c2I!Zq}a6-qdq?eTU5Iz3B zcW(Vv)BKgQ^>&x)G;i+Etecm$Z+DwCe$~>@eKqq;L)Gh{$DCh%E+ZFBJ5IERtGA~n z#b%??N{n1Pnw`V)O?sp094V#0r4QLXyN!A;s3Zu8pCm#uwJ4`mHcd-P8|L3tb zB|te}WxY9edQGNZx=BgXla%j;USJ9PCNowDOUL;yYxmLoG^>jqp;LDeSQDoj`1?bm z*q66l3Rf{r26zW;1T&U9dJ`NoREQFflDUn{KbA!@U^62~@nSJKXwd${iw-cwj^|;g zjD&2849bJvHbhcr&;A=hpEwg?kC4&(F?veRGP_5vh%IW4h*#cvt?eVHKMpiY0>2lb_}XjH%)UI)aY$88f-m-bE8@ruWWhGRa`(S;elTeym-krXLEDXLo?Ocroz3$GwCaGf*LO84!&rnqptI-4|b8Ou-P zz>=v?J(<*wcGt=<+q5g~Tv1nKxfd72#an8;)p1SBaP+Wxbz$!N=G+T(sajNB`8uxZ zkXvY9?)1}W3i`e|ixWDu(j_}>`p*8!P{4JZigxWGzwtmgckJ)eEgz5N15336PiL`O zum7@C<{JMi^}g^6F#Hq4{g}VG^7pEzbR>DM^=$-|kJpPw_di-(D)0RoI;Aym99?u@ z5ui4PqP&yj)McrEMD6>zQ|XG`{8dI!lO&3 z{va;J7ZS?Z-9MB6hEuOGsZimeqS~X=38xsChr2jC3r38MJ$ovI7gdD0SJv(zC5ax0 z5SCSYkD*An;_zSG!oP~Kx1!Al542v<-o}L+tc`q;tbj3IF|{B_mOx(ICB8CS$aKRO zB{Ck37Vl-|=+hoQJp6J0{*g=qxw!Xv=p5{fI`PwPXD@Et+;9A8FYf)iSZO%qNH>hi zoSd3EKgMX@51ORpb2L(HQ5nNf+$~*C6S4U{9zE8FmLK1C+4p+y+oV?0-rR=22}3xU z5Pdqy%y>QPvcr?hH31QG+eV+k2$#)ycJ@c=dfarKykbe75v$v1y1$RL-8h__O{5A# zCp$CU5B66DZk9V|%T72SIE?sN7Hy=+ZZ>l~cAYd4a~o_-+17L@)7|85-iTWr|vJ(8$vaIloLqyBVRqvyc?s!t-1(x->1b zV~y)DRd7|ONj`ya(K&DlU0gDX9$&?=8le{@%klnGk3^0$iVi=G*z@rrXye2yunhdM zm_ezMFxR$zryHy1HnU&Ex018hxE%iER9GDmo?pz)g1E%*3CZA)`_uB6`eBnIFr>r> zFz*H60T~B{uND|yqg1j~?YR@5+njM{AoeZR-TnRZV6Kv)|IzHFvxUMBk6eZbO2I~2irM?t4Myjy z?hWsFyK6%~-+^mIjEbswDkyRN68sOPgfiYxkI zVgI*d>t&Ca-Cn@qZROF)trz4GsU}_PZ^9ou9aw#g<#PLXMY9^eAS&HW!!Y&z_p~`Y z7&pH*FXgJ2Sn#wgbQv!W0Om(ib;Nle5Jx71PGu^Ihw8{o-=Fa-4QE^@)ich^=AL{4 z+h+>&|NM$1MSqH^dTW`vo~eXbxmNmO>(RSK_V3Y@FWo$$jn|ZTR#s)vbA&i=5JRDo zMDL=f&fcVP7)%MWu+Ls4E-pL%P3E+3ITC!W zzIfP;Rq+dMlcK4W4X`Ra#|_4dy}lXlTZQbNkubY*5Ev(snPW znN=-)R+io@_+|Tes5xD;j{IN+v_X`Hf{Q5BVT^StDL_2cD zX(&$+DXD1_Uk6{L_t}(%jLb>#v ze5`M~@b_TA2!RZ3-VZOwfdC3KsUow_fS;yiW!<8AKTG|%YUBO5>}}k0_+!|xy>wtR z$F1}(F_Og+POVt|aXnVO)L<E?HHWJzp`AnDxVUqru?m6GTxZEeSR%lb}%0gTFi=c zecSfqeKlD*ZW3T$J(44tpbYPBrkn5?m8hH(V=PTTZ)=)E}Sujc>6sVQmoaZ~Tn&_U)3@!bh=BTUI4o>V4^O!&byE*?0f5);zoDN(=N4;P2jvMCJ3M9%HJEc=m z8hHN|r9hUTKqS^w0otH(%+svSDfAfoNNRa#HfXcb7HIhSCKZgE?|?Hm_WPU<>Oh8I zCMEAgoAdr5yTgwSyXzu~mfymX3uhBw4TEW<6!d-aF^))`ojX#M)4M#+w-Im(!tY62 zMHdWm%VS}-WJjx(d!A>Ear0uS+*!(1O_7^ElhJX}btBIP*3iN8I{L$F6t&2b#m;)hmhBa{!>Mni)8U~+ z;I;UE9+{9Xk#gqkWo)%J+Q91ON<|YR8cTjiCfwhiKzJ;BG=CnSh+9$WmFc8Dj!S0s zL@NR6CICsq&3HZpyia|cnf?j&>SSep-)`kk@bTIfzy+22_KL?+o_0{uJ%P8ODD?F2x#7z# zo2z>m5hb%}*T)muToCpF4@D9#%y?sxXqbkTqG&Dm>?-!%-|2^{=Sj0=*2XhKGjG&I zpB+1V7cn!FEMC9Ktwq1;2D|6Jb?s5qM!m4rnfi;GhOz2&zXFNwK(5blg8FZUXM1+m zmZ87CF(n|<3O^y>nr$AMzyqshX1mgHW?Ers%i@FG-BL7` zI-HB6d<%ZcVJeFxpTMM9He|QNtZhYF5FCOS2Nk_tOoUhhyc$-2oHhI-0^VPyfRJ*2 zvuLjlqlUbS=~t%14kh?B>(BC_AL{a(veD{|C#hl5wHog4<_i)ZEtltVPiBg^*m>3l zd6ZNoNrOswOZ>0hlvE%DDgp|bbJ?S1o?uC39$L7y#{EU{xpvRV1uR;_ER%IEHhCY# z{FW*)6lUX}5dFUB2nbs=uc#i9-L|^)=^8%Y%>Hjp0*$(`HGhX6*T%!>+Xfv7g zx%l(z*szt^X60et$LR)Z!T3|aZsXJ{s(_i0=bjXA(8|E-^BW%fauHP2Ad_;KGM(d}ZfNUw-AXJ^os2lYiM&B;=uz?FLbC zkijC$Wp`zL%3VEFeOuw00GJ5Fjdi2WM91V+mHd1MqnuqpFn}cXfUAESTAhLoK{m?< zDh#cXNU!DmjXPC2LnB=<&?T`}FL_SJvY0SzW@aY;UVG^zQz{;V2yiYE`244*@i>%3 z?C4?spq}eD*Z<9YRGi@c6P#O`Z08}6@WQXg*^d@zh_})!fse9KhadvUp`bA_ zBO=PS{dv2%9&(J|z(|DeugR>dA_4DKIjc9%tsNJg_xBY*Q>T-$Yp(gZQtGkdQ+A=Z0>_u4CU>GL;X}Jdaf)U^0hjJ?j6>hb z1b-hPza};QZfJYBKg)cWA5(d=Uz_z?3*T4HxSs6%<*;%m6RksMUI>uQ;#GD+K+=hbkf+>Xi zp!PBP)%fF7`{n6+q$cjOf2rrcyqVVAMvwDvi?iYES(nAm9r+gqSHD1LCG~>-P{oP1 ze~;j@KqMX+#$W;Q)}K=NJp)`sAon<0I$z5v9EDDis09-UIGX^u--HbwRDSVX*3OUV zsYdBoFs=mQcSrj%gL5`7_cF`f#FF8Zj>q2$O*;39bxck|5^yO2jq1mh1>m9Wp&;m? z@>e+uS?PozN!`r{R~ij$M_v-o2WvIwx$%{>C=wQ+_Ed>A5qZm?+B8)iQ;wJb^zYN0 zkoQ-zxE0z*|C>qnoiN38w%RzKOwx_Tn5z)EcE@>5+KeRnPpP7o`rtuLHyzet0`H^o zGj74GvtNBQUm7AN^S%0{nLn*8FIk7~RG;ZRFYW|HYFHVSA&2j1ge9E?xM<904s*M9 z&5vjB#kM8+9P)}jHARp<+|Bj*uh!TK$A2>)0X@yxm2uoY-IqX3*tc_NrkXvU=u1R4 z8}?>E*(;PQ?c{iPbOw;EhCyU}(Ojx=Sz&Ej^*fmAI^l@bMq)|x(jA(-zn>2p=?S8k zs6dPgw4L`tl#64p|2BO7-lr##f%GLDr=deN_xQECsOxD7Mf4hpsvA&NpeJCam9+#P z5bAaa@Xf>{0CSm!XvVm+d!9WMkSkl692*0o6pVm@-|K45`3DM!Ze$-ay@&dIt!wAK z0Cj0gb;T7%BK-)|WWRU& zOS6H|=0r-Nsbzi~yRJaF+bWKF<&&WBxc-6z2=Ch=$(Ah8=;89lB4P6BU>8wo$FKZ3 zH3i#CXm#Oqqw`(|vDc^3e&hzXv(_vdH)_Lag!|>BT(E7$nW(Qk%7|k(IH2WqS%Ibf z_-A@mmU#LCK# zigeZswo!)!PQ+)Tf!N1G3gtl+q6iXGqilucQSr4qe!z^i?IvO6K)LI?%UXWS;9)oH z31=$v_f)o%;3wneeHUe$_OBQDeTMOpke151oqOH-6Ic83T7A#Z*TzdV-z98sZXEtt zI%SCZ7$q(|-=8aaH!XA)EYi^v>v4yPxdgSF@I^f3Pxlb(XWY+AfQWu^5yI^wXA2*3 zNUm9!KzwJYS<_g)LYDuPSKpg;Q&*2pH71w$#dOjONLB&von)zw(Zceir?MP>%s}*R zc4i`|Xrc+;TIYWXFGfr8mC{Nc248dZlv&0^#r-M?A}@7oHLdtz<_%bY3M3X59wm)6 zOaktwvJ;|+Kvgp;rNW-K=bOSd$H`vug5dX&bstW+^Z;TZylgOUGOQ{DciPnn&vTD|2##?S35FAFKmrNYr0ZS3|| zt2sg`@zawkxxitM_RsSMV>7~f8(G^|{1P668{DC^c2X!k&W8J`inMXaLh!F#ZuY_` zK~dlnfDj5mgO0S6-%#pqzoXau{qLp9JVnZ|A;jFdgW4+DO$~u1NBd>&@5VU$2o7|x z&B49K%^VPt_%F4TQ}<9k4XpP-dlm2x3LL_79LuH*xn=n$s7x#`lc^tm!*TgE4@l%{ zh!b3(O(<}b*@Aa^M#rh}b0j?zldXe;sJ{DJDI#C2cQ_?P9C@^_nn`mp`M7VNpxbLH zovT)~0s%V2PhO$DSZ1!CD&9Ix zoQArO3@s4Lt@WrC1{|B_-+9E=0ma4~N?>O0(Nr&T^RM8K&q<2#rKn#==#;&8(fg*o z%J%Ec!MNf3foMzdd=ISa2v>;SWVXUPcd=U5?(f-}kGt@ID9M;W++RUhNMfT(uKO_d z>0W335CzkgT~F_5BrP8wd(ma9mTtHCpGA(|PmzpOO7uxTrX09kiGDVc%=oTDNq=hJ zrIv5wA@nTb36cveP%;(u zX2}i%DwpZE`C_V0tPJ6Tm;!Rg&GcG|`C_0zz{!e@n4FU0@7)EKj>ypK#^I-;j?xl* z;izW}~xt^A6ZUT<&J z5@<}wK*_RBGHiG*5FAkKGDM9Ptx5|vT{Khp;9^SQ{eAJ52xA<{$F*2LN%=&1o{AnF zM1Vm?CPyVHMg=WKCM^p|ee2KLzmqA%fCfteKu3+Lo4#*~QSB)}iHHMxa98X&tI})x zPS_p7^Z3Y3I5J@w#4#$AoVrWszPo$9Tig(eO#7E@s|P=yTwWumLdH0AHG8gyKZiUn z6=dNd%q2z1q6j2ev_|&V_oz-9!^rb23-gu*0VBy2OJpU%%^Kn7!1| z$4060L`$?47?O>-H%&eK}N5)j%0a zc3)*f<_59NotEdlTWE2;v(*t!y)yAS-8y8oeA`8Y7AjQoe@ZFW3yJdLB zf0-B}eCosKpiq+<^d2=;bDO{7%VT9_A05D#?@DNy0LD1ol&TW|BL$?Ga_<%4s74GB z`sHL0cp)^TFu;t0a?fn_|fw$VuE zN{yAKKnis2J|+F;#jG$&{F)o$M^xnj5V!@`R&hOK^8;ZWuSu72bWcPDIXq~{Kbf+6 z`m#sWxx3S4wiCR#;@^zhi;HRgSDF{(5bQ58wqRlB8-ZBG#zZEE>!BvQ zc~zT%X83^+wpn`GmuqBm%1>0km#8A@ytO*=4mHu~o0~8DPZn2W)eQ&kFEShor)OUg zse5}TXUQZzlfZRUuAiv>#tda!6a?o=n*U~u{@j3aiMp#xET@a@_g=<{7ZUH?I;Tul zBY*n|f|8Ew!S%^+lhRgOr%z*(?}t$;>rF2~GIWVw87@4sm*Sm1TxT|Nx$X80Z5%F+ zibd94jwe$Xhh<$P;O~&!fn+29bjG>0y-)Mo z7@lvd^e@Ela<=e)3dQ6I)Z~~6k{yjyP#`jBF;g+xxA=l6XxI0-n|4*YB>AG>Gjt%j zBFTV>dPp+yeXo834Me_-=zL9*Agf0{IyoZSB$BvXzEtGt+wL1l$GwE8MO)h}x0&c) zXKh^{zgSr_**t7#DTWiaBnDa(q!J(4ra0s*e7c@S2-gNtGh4=M=XyHBfT$|R)Rd%F zZo|plT`1@uw~)yX-=oVQU+|(I+GiS3Jv~;T8js`tkse8{C|l^<=9?P*Gp7SX|3Rsj zFI|cvQcN0(m!=Nr(bE!BqHmgW(oH7oFXJJ+EM1EnP@*koJ}Rfp)qn$4gC~VGg5xs@ zD9}CssaF>%*XQ-Ut?Q`^&-eMbQ9iy2IQ5c>iFGBlXNCp>}!C^3cXl~Uh$V%dEIvgV+BKV{GjYVsD2NIf${P0 zTi4Zoo!a0^;qaCB{RI4?#B2BUBBwEBIi~79Oz^zx;Z>oUAobHi^4RO`L(^$I917Bo-S^Se zC8TQIN=4`K^9#{i!$Cc$81c=y)Je3agQnAE*R7URrR;V-&k>0Z&h>9UJntjqBj~Zzz2@ZARW44-k1VSj2-sF%Y0U19Z26>}) zfeZvyRA?_YfI@kJ`vd*GfT6Ba+oN5xB2|&b$Hzw|NlO{#kbaT69mx6>TlY@m+K>># zkAhOPa%5WAZulv7(`RZUuc!f0;b;ZVZ&P9wUpGhs&F(0=#++kmd0D{Vd%LtF*Ea=T zB~Bt#AOHme88pkm2OCTX4f>YWoklUl`2Kot%r6Cns2*3}y%k1^o<3`BB2C6!CVt2J z*$T=w_`xl@4>$Thu8ty&3xke;gh?S&B910ID|PdF%$uOdO|J1{ch(q-zHjK+H6PmV z?TBGnRyNc^kT8`AS@>syl1A4_F93l`g$blJu#Gk3od&t!Bq)w5STWKS^Pt~ANkJ@# z_GFYa1{@f+%3dKYn*^I-Nsxnl3C8IQ3yCxn>2-};lQZwNxxR0rs6L@Gjnyruqc+9@ zx7QkXvA9wK6kCI>3aKiYyjJfmbUHI<^dBR!eJI^1>l_Q(ZLX#&m$E)34c>Fbarh5K zjMc}L4&IIrx%aN8={(<0n}1$@gMZljw$jrVOiy1|btK|Aa0N#l@@37zzw3N`rAIxn zy!=aa&hc1_7-}G0pcph;k2b>`5!sEb3P%hy2-)L&nuv72Tu-kHA*x2;cqghR4F|&r;xxy1CC)J zGs!|o*KvifBLK+}ixJ#M<)n)n`6tb1|Af%U=IltwY%;hsf_+2`f&sD&-wgi8Fgo9% z2@Z;?q0A*}e(H~@1Hg(t{I|(f+))+h^*pK#Ok7VWtYHcg8Z6T$J{3MqsVPS&%e$p7 zi*xBwn$n7ngV^cU320I_<5%6;1B{gUO?Q}OU>{j_v2 z!S6CMc#t!~!@DTR9PWe0l-aOb$7tW`cwEkjXXyAaC@TE6jAe82e73B_N;Omx+_SkG zdBcHt?{;qN`8;bg*;-yeuaBWS+1Puk543_6A9xHY$&zTQ%-^-^=LPAvDvk{V|xn&-QQ6f?~2{~9>GR(+j zPMNUbX$_K{)xZ5IRdy)KeKH3Dw{&y2Mg=?1$CXLfFK;OpIEbMb7YF9y%Bm>|^F`}m zb@?Jq0KiR!nXfurTRE#AvzMYIMk0I5Ud2|4jy|$EjJ)qP$EtI`6Y!F1%<`N_Tllwf zR?6vLF5M7ldA6Zb9=Mc0IRQ?DMB)&FFlq(xN0K`5!!zd~Knz`H+Jy`>vp$8U*kYymK0;wsWOh)%>Md!4mWB5u#|83 zknUj-A;e?qo*8b~weQ|%~G zor(18|Axaffy7E2@%((&YEOqfJK^f~Tya|^y0Z0xrBoWoE`}Ois4gFrM}foChZ*B4 ztV~2jKZ%}vfVbW=cxL>z=kaM(c?|QzZ^UZmvU%tSAvShW7`Nq&wX%Gc==rVanco_U z;LG!_72X<`+qm_|x+Gz`07dp<&Jszp2*$t(~{>Ag~b*%5V zEep|)g{fRs!?7u2`A}hHp00wn26PQkpx<+jf|Dh~yC(xG*20@`Wkt_u<%TQlRbfi7 z;&owk{XPuk``W-pv+38RBwdC*m{3}D!+~av1%>1@hD^;0uyEp9>f3_o2P}x-0FfyF zv7a3aO)2d;bKwZA|A3G2!P3%Y0j@JPaxUI$hO`?94TlXFvkb|Lh~w06eK&D5n0PE+ zn~=#ZCU+ci>K09aQ804|#64ZJ6g}ESS+ZB)#VFX5 z^6;H38DlA(C73#07Y0*}Bw@-$orEc3h0W>gw!^*xYzEUBJ_=XQS_%EuPD>l(_I@6K zxdPy21eD#0n2FQAsEZ>Y_w361ZbR`dDpz+r;fcO&K4~+HoSEh)iJOxJ;zJqDHmO1( z!cpFTD65rYe(nc8bHXybsfaQkM*4^E!MNV_Gg9>d@rt;rx|hFs9zN^8&lig&{(f(v zr0IH`6Bn4cVu7(vHq&s*(ibIBqE54k$(_lT)YM;pV@L*KZPX0;=QEzCLxUg`^wQ)XaiB=2 zE&37UL^(%Wgus+3X9MkkA7-MxUlD}CMbl-dl_VFRe{FV%`{+Ff{~?qC5G?@bEOrP^ zW+ukiHwnHOnlyMUShYLOhMgU@(DBEg zYkRhTRVpY7GIXZuPq>SUZUh7|*rjBr4;=1EHC25%@}nV^Z)l_+TjTT5CtnN%S@_mR z1pIM9rigOv>SDC-6muy+4UAlz05;;$aW$sL-Zx|}XmRF?VSbSOW|o51YJ0#=!27w( z9|ow^*L66NkC%Xtug!f|j8sR<97DZ2@eaJN_HU9`rWawlX>a@5_6eUqFbZC1Z332v z#&MxS;XWBxMSoE&&q`OcGP2XjMkUN_9}@9?A9_QL`|aD=Mt1o8(Y$!?U96lj z@194$l>I(J{IQp-fl;&NX!SHLo0OT$`ML7c{L z5Cuw1JV{&umwBbuArn45jTS3?nze|N;R%62s$j1ufKqK&zvqP$O%X%1#LEbv9 zCK2Smfj^p`^f%fzcfhf^9J)UE0??jJGJFPV87H1X0FwCU!1fi%4E#FQZBHe4nDA5` z6C+71cyaMqK|8Y9xt)nPPD~bLA1AgcOQ#e;%OK*kbtmfk*!_MVBHHp1(1LOKb#qmU zaVo79IfBrkc90qhEf4~qlH^HH%DSpyC}qMj_90?jJ5Owk^3cteIw``WQx@@>Mn=Zj zScebZ&$3fxzlmt6lEmZvXfz-~mtD&>?uU3nG<;x1VxVBv&PJ&CXFMwa{-Za>cBr(; z{8sk?$<_S{u9y=78E05%Pw$3#!l=#sIQ7Inv-bNlA)2t+g&k)t&oe=KkSoCj;*~gl zpKdIqD(PWlF_}x=)MQb1=_ZMb&#H9W9|3Ob!ELWLR0k!zWqr=Osm}NA(R7#N?=dxTu@P)_?% zn&8Mb1xM1WTDLH`G}Hj)ak=)X^7L2D4IcBvpQ%$mXY{1kB^Xn!<5xYQTuV9*^d zZ3x0SeOUxNw&VCxsB7oL;T#uNjf8MKKrX%*p&uX0&kP!$tyLkdw;!;wfjaq&} zX#QY!x`XF{X#8hD(WLk!6+r}@ys(gi6ZQ7`vZ3#O73!Oyj@-PN2ZH}b<~3nb=y%^1 zZp6@I;`q-d7ezZs+2U0}7*SG-uo57}XO}}k$iI80y>6z~ z>K)c3UM`GYu5-N$Oc%zZkZbYN`uWjsn+_y-R1JAek1t@0zE7GJ{B|J)zKx(4i1Ci%f)(9~4uDFW^2$hQ#0 zIzFBTrA$R9t{+2^^M-CfNE`sTv*FKMtm@gcQ^h}kgId>c+vOk<5%Jl3GrL|kcKM5K za{UL7Sh>2|=|5Q%oTWu*dG7xh!LqSbK4RCZR@qbZnJQ3WDDhn6w{qZXo3V<9 znOKOtwszZj{b7;A&92VrHxDhM$JO3w?ek_7yM%}wDw}{XDWq;R9i60w+v+XwKt$&- z>T|_q6)a0e_CWO;PP|(z(?lE+WZwL+`R?#>D=6F!=l6H}c26d^7MLaODs8-LtTS3e zYhz?$vX*E?5^PwwY4^jF<_3%#Ls?M!WEBJTlbTc|#ErIk2N( zMfU55V#BUGXTc&(S8L0XFhC50TA_4d5kTHxA0*m8Iqg! z)+_wq1J1Tb=ZJ?w#qe!q=;#R`zAa#Y?6{%fBl_d&UHlc%NDQ$cp;FHIP!CqQCV-SA z5NA!m6M1BIFgt>dh{yv06Amm?r~!lvO}8i)y3K z#kq~>ZIL8f@$^w%jDt|uoLf|v$&5KV>1&S5d{kgx~9NkTI;MdZGp1zQ!%}KALq*h2Sj8b#aRw~+9RCVIp;hRq;B&(8A;b${)*TN3x}j{lV=bW(6A_i9S+<~u?>n+0@7 zc54Mn3MD8?($W|KS;KNwx3z1+7!ezZkxGkb03-w4)#B?wQ~r5T_D!mn3Po?dkPsqK zp~8%pm9(l==0XQ;)jF@v^M(U)vt#TO3KtOZp7vs-(YU-3{KI z=izlqcmwT@Yh{3PVE>-)0q$)IErGj8$4nrf#AhK8UYOIGM!G&v>UzazY4i@ zqiO9W)j*Nzxb0ebb4bjB;&es;T+tcs(2zi*6;FUg_*37g?WKZvK)jOQ)m`A`&y&?& z-nSts9~H0%$?LnJP44TP==->Nue5SbNiDzaMMVVokycswUt<(x5ahBGK>C71hwuZz z-a7~*2NjAVEX3Cm6wnIS;k{z|9^2)-PUCBpS+rW{QtK0^fDgYS{7K&gK#0_dBLF3e zDp77N{-l50VLDL5@Dq{5Z6PB*tz7JSz(x^i3yCbbmE>Ep93Q%tXbt10it9H8S_-=( z%KWQDB=1h5p?LMdohtwa2wX`e_>NwYtQm(KUwD)Tf^gWJSAo!7l6JuRMc1e9ym-pb zL?8^Y*W{nASl1HS$aHGNOk)gkGiYJb6pk~M_F}huOo!NS!zDwv-X@+#! zr=iz13u7UNt-VzgIgTWH=NM*RkurRAiEUZiO*Ga}U-+ZuN{Pvqlh)QXKfpc1kjyYr z(vBBvpzy1$Dm)lUf(9QULR&`UY2;+o+^e+dv@X@(>%M-;9FHwm*JXoL5B#U?FuIPl z(Z0A#ix_h>L@%EBv(n;4MpKJSR@E4M!dfy(SFEuJs0!7B;Eu*IXOCkH@r9OSxEuCr0 z71;QOUtO+#yNoeP$L|nCJB5^UpdUIL&Yi@p$Y7=~Hd-3XSl$;N;jsw1tW;?WoG$J~ zrGTl2e9x~lx8J9CSVgGSoS7;OABJyiNEtZ@(=EKeOmq7NE4U)*P(ex%&^*7u9Kz|; zm#PM$v#_MIUxX-BUqV@(+M$k;@5G!~0~E-Eo1?r(S-6x$m}gimBO?H^`X60Vb-^i% zJr2V+5jrLUmsb^6Yi7OEACP0(Gx#t$WLib`2_Nr+nwJosYm{A+zWX+G05r8VD-%cR zX?SJx!zc{^`YA*L?6?`k{;QJ6AGma4&|zX?KY&cTGbFssHh?Ex`qT6l+r?@_7u0%M zhmCgekttpIw)WL=j}$|SB3_ZEz$-fJYgV4Zp0F54tg7>XZ%k~EiMyF zHTA}#_Rd@9R!`c*ciQU#q{*^OZmX@?&|gh&Y;&pnHb(FMIRFmo_wRNE&*&|MXu+)-~ zTuoEwZD9l_FKvt?bGy%uoA_O!MHY+x>^X&&zv*jliNHPR&Q>1*)-;W|NojM4NrbL4c^snRak@ z`WXMt_dKLHe^shT433`SMMcBCuE3Q_yt+LZzh;R%L6J0-{hKF%G^($kSxlYX{5cf^ zS!^R2z>WcEYGiEJ6rOD?mxBec>L<_qCc(w(xqi8LO!0tBdPP6Vf%y45pFVxukgouQ zY#RX0yp4oo#T~N+cZC5bvnB%!l<;SHDG^%xJ|@FY;15Jw*`!^-ruO3p-(lQLZJ=iPv0$TKgnSwB z_XNNtC%xzcAuk4IH(uRmE5w2!CBq9%ZGFI7x>1(v&5zeFB(D-?Cp;?*{yPa%m3(Kf zDgjqmPe1C6?NfzKA!+n8=Q`!ypO8|BP>BWb8!cg+4$M@HIqU|KHCT*%my>bgTbJw| z?CcgMV&80O_c)dH$ReYO?TQekp3qq-ma4EC*>}B#aT~#(t1_fe6CJ_{x$%Fb*IL9> zxXN>BKTA2V=bqHf?Q2wvq}mB%UMa%3uCHpXJn>A8AaPa*32t7^6=yq5%*JNBKbMC$ z33Y9N&o7P;+nEZMOyGUNSsqKT$Dt4Y542NnTQ#8ycn)YhqV3jwRR$-nls%j<(k;IT zb32G3bKCZFlQ3?RxcE~@0Ci`MEL8}Bu+iaZF2~Bb(({55&F`!|fPa+Jzxup6XJx7;rNHu9!g5)-_sizxIs>m z&=O=4V%a;`mIUoL-O@S;o|vMJ40xV zw>>V1w3Q=fBPG&Oh#+b?@lZM?F6HV>oGU3ga`moK#QZNt3{pcfmy?$%S`eVHuZM+A zi~U6IDKX;C63;EAj~^lrl;T6%t6YAVQr%z0$>U@T&2q|wIN$Oas~%r2-fm)mbm}&3 z7h9(@$CAH9hHO?GJ|0;lw&O11dLi}U`(Fu>!-R9kkr{@8nOFZ00L!L0$E2naHaUCu z2Qo6yDPOfEPw3J%-{|}5)zg`1E&i=^bnv*)M~Td0r6CxDHC+l?D!8Z;Lj{!`FL-Dv7lK@i$I9R><(duc&197G zG?pd2d|~d@>!@j?*a00GYSvGOO}bu*Q7kP8&MQ&MdPQS-Hpt%W`>^D+!n|QJ-tLI` zyE=W^*edHj9+L&WtEW+qErmK!ygti?E-J>6*hV^nZRAa6J}ZPLvzgK@$=bdr1(A{q ztRiJ$aO-)Q>DM~pBOFn$0Cf48z)s6x2%+IKBr1_qSh*6sm?=8oOp^Z(Q^2|&&!P|Fga=V%f&QJ<;l zl=Znejo*nml2KO8+sqnyXtslC7P`QliQdp9Rh=uOcpP9hh5&|Mb@tYa&J738qa`~+ z^+vP0itz&34;b(ic4TVODYTEd8+;)ne`zUdqSdzFasb>T-Wq zP4Z1BV2ip%xn%k*DJa&K1B-$<^gfOPt5-xK{jf>0AN`98`Dnz-8JVG>sVBu>TG=%>@v4RYwBdio zxl#w%wB6>*$O#tB)3#MsDr#GHkrt87SMx#rQz0%8?<5QEby-`CS$vKuhMAcYX+Omr z`=o|xn#C%0)(0_)_Ef?1F6{^V$EbqPDP4C%zSz+mBQiI z>=Z0QQq;4H<4b(wjphZ}{&8(6UeWgew9kp~Q7NmR$zl&ySJzW~&fg~Pz`ma2^Z#}u zlLfVXp$f}uD53y*VDCHg4dg|g$reW_$J)BB4<&ExFDA~g0&i^ovF+SS}%U8=3O#Y5?g8PrJU z;@ZiJG(9P8Y}~%|RZ?EiRe%*1ia9hOwKN!~GTT=f3%fo-0%}Z~13tnWS?eTh4Vud5cl?31@6n-OFTh}x4l&9OZ)t!pF=wU$uTI% z_6R8YbEklE8EpPXhhKPQ--% za3P3_hx!IDCJ8`SshXVI!#VrOG}ZsbP(UG%fa2oSNhn8>6(oOpAq!Cr7Ku}k!g2b( z>4G~ut!x@c$9W#k5bR!tHvG=6k5Vhsnts!Qv96?swE~N#(YIdy!n)<6Gt(KVsck*H z0DYst0Fzx8j>vTwit0vAfll75;_qFDJaS>+Y#2)5Q{;bQ$GSFm(i+tG+KjL@IY?s$ zdHQ`BXX4;qyjUe|df6*a(C?q!gx#djgS?(0 zcfi2xfI?=YNVdcB#IX5j_$nryP}^UhgRrnOLSw$y$~{*}UJddd`VqQ7wfg9g$y=Hd zr{Wm`P6`_ODp$k?|o3Fr|JYzc}8=6}zZ7Mg_IIB)r+x9o~74-0k#ii$$mX^n;UsU+!nbeCD~ z5?QG$-MV6d@mz-q7cum`R^i@>_+1bd0z|0^-|c#=$pHu#334j&6oU{-s^aK$6wI~V zn{O(lIi}MURrTXB4~}7?x1Hr@O@+F}XWC$3g(n6Ukt?8c1r5;DjE;aX%4f0Si#7P4 zpuo&;n2yLl+9fAZ72uGFn9rT!M5Kryen6VE;tk0)wq&Q#N!hvPPVNY%JwOao!I4Fl zrly(x5EIA1q@x01_g2fw-98I}FCxF^2skV*J)8$5sdF&fqg%A56euD~B}I{5nYZu42a#k1FN?`&WuawKX>}5EM9_eZ;@&NVm8hv*%C;9kx!)iwu|;BPD+h{66rKcn79S+@#i;?z}EAM*BcU&iAK5H{e%m_*{aylwlmIO$PgeI$-eINhFodL#4gdgI0`0Qd-MN~UP zu%%3t^8FGpeQbOOBj&YDP1+~SL>Cw+E{88Fa!uvtM|xUc}TNnGS4D5 zB=40UNYj&6ju*qG5{M}*qj*hJdWh9+G!Zuq-qEGOV}UI2w`YWmMjr}?_U6~p)C6G7 z$fC7~n9j%5`KHiCfw4z-gc!8Yro&0w5sEsEJ;E*Kt68GNo~@imO@xSY;lq(Q^xY{oxmN>kTZTeg_-S^uVsb!#&e;Z4{{W{#PXu=txpwu||jTe=`Nj>C&ZF~7s!#pMm?X(Vgq zWERvzxyFmkKTwPUn|jogwS@YPy4u>__zj_K)d422ao2}_G$z11hgCQ#dO}P@~G;%_;Fs`V^!36)d z`7|2;gNB?AI*eMWap#3R42|pRC`o7z;WIm=v=}HsuFAx8BB>~G%JUmI@k{ilFzAdv&T<6RqQ zP?1p&!j;k>O!Pp`=@Et_xq;-U9Gp8PVZY~RQG0=aMQUDyt1X!(5o?cqhLa;Ku)jc3 z#G3O8^MKg;A9hX{{aZ5JG8gc=7#9sRRR8aj1yWnYh|Atqf{pfPn>M2WzmZ-T?h$&G z_v5CcV%*q0n&&@nigxGAJUm+dg?_oGEYb*Bh$D7KP@N4sc{p_`NhLf)23FAz{A)q? zd2HKhQ~&n(?Qyb6aue%@jX$R|9M=dNGusf8BD)^E@Og{{tII3*?#*Y{W|3)(h#>epNv!AyJ_qjUvZu3A1!OWVO}FhlQvrn8BiHBox|N+kOkJspG_RbJsUu*Z zkfg{@#JL2|o2wXY=5}p^{ts0_s=i7})9^9irsYSZ0(qPZz56MW2C$JR*^oouw{^d_ z;jykxaFoa@+Nkvn91(R;+_J1;XX*X&a0Gz;0;OPZ284#9K*5_aW2>cHVa%`SA<8R@Yboup<|wRy};@oy+5k zsh0LPY-lety?{9_H70$y5e;OH%@xE&_>8*ww%2pf+%w~$ny2gUxMRoTDNIy#vS7Ca zrCeXJ6>~jNcxv~nlWqUfv6J>5*tH}w$E-`G4SP$&ZoAJNwP1mnOx(HpH%)eni2Cx% z^E?WW^h@POl}AY&0H|p+q-z3x!wB|ZtkYGEg?!SNM#}hw9WX^epzB%ET`_lwXIl2Q zO`Y`zvnH(Bu%1;Vs)99D5v=dr8K|yaST=okux)$#jT$q#bk-Rz=Y|Bv7?}o;8faIB z3I%~=APsble4oEHTS)R-93@GqY)=B}RzQk?fPiDaJU{8u z&yh&((19@)jYfSwU!hPq1rOZTw4@S!IjcsyBdDF2EX%jS$f4Ly?(l|Tp4KpK8b=i>s#STGn2 zhr{V~`go7!*rQ*#ODI&#Q%p+9EH5-6H2L(J)1PZbqjGSW-zUFE2k%ZFGrH5dZ_$-&{)p2vkgN*}JL5KK#&s zJRwQ&_i5q+g@5aZcmLrhr4-kAi?p^aOX10t!%-Tn+S? z+t_{Z)y-?2PTL5?mVDsSqd(;#cE@$r%B8uH}QCn zYdE9ibL+-?qeqVp27@|_ts8K{z`P6(OD_o_A@+OZ#DE!$aq;|%FWN*8-*QK^vFo8H z?{BRR8_J4@6SF4FWGINZMc@D_L^fjV?-`|Nj*ir7>f`Yq)G-Ai0RaMX1+I|Hv@mP> zv;6ES%hoqPn>Mo~J+wLN^%C(wk;}tw^Ibb0?&|FL(m9`xVU_DD67NRDOetlWW^HY4 zEEZ#om7YHwTT5pECeWLNPX)k0B4xp;nLDYuvGZSU`+CSR&AnZGkJ4{rlgJ zn?50H=kNa2?MtW5ICtemJ}0>6508H2h7Ufy`susA{oQjud*i|jR!Kr4BJ_tjn^!Y! zXKQxuxS63q=<7fF`ql%xcN;yf)twL!w)w1ii|Z!O9y|WDKiu-Gwk?P6`N6L;raLwk z>hjTVAHAbB-4m3?LP)h*)R*#2sjS_8q$Swi724VE>n6{jd<7Na%I#C>n32qi2^3y_ z+KMeZ|JdAi2+VA7Y>mfZ_baa*cJxWbuFB`c&rSp95cNp7?3h+gOeAO z6T}plt`bDU=vf>$l&HzkXjBL>tQOec3<5v`PJo22rvM@%iBIDf(dUSNhq!^dLW zaN67g5>wn#X6@*S(hPda0xuxqXA>_{x14C515-T2v% z6%JIyFa6XfnhwQaoiuZvMh|zkJyj=T2H0@Ob;$jcQN5neVi)NO6{q z@jk!%)JqTE{lHHbU$X2=xBcfi*DRkqF}`^6sO!(ZAQkl;Q7u!?ToRv9m!xng$3OI` zn*g$`zWJG**!ruGznJ!Ri}XkDvW+}(Y|tBg4&GJ)EsUjvog3;sC&q0V!aty1M$hn?C*Jk9>67x|bud=#@8oWc=JYAQd1lT|8;T9Umf; z5~k5;w5h4-cn@b7LYIQ*Vp*-LpcB@?VDMDQMGRD3mm+fn++%dXrB_Ln+wlCFuC}y! zD1G%+Gw$8r$~;*Fmp~$N1;BxUBoM=WGdxy6#7HCpgLDs186XlPAVOjULJC6ep(lVs z%6IvqD_?Ec)TvsOvU73fCOK!;((>8Yo_&2a8{^M~Kyt(4HrYr01?al2X_}?@cQ_ob zs;UYE0$LU0n0?g04lO6Fq3w}lfxIHp{?;P}WsoIYe|GN5E6b?@ETBF5X zJL}V6M9_?$*goW6jKipF2 zWm}ufxY&7M=af{H({^}kuD5ksINDUObDa)3HF+!AkdG=>Pi;^B@y;>nUaVk+YSFGb zoDiC2*0`?V=xpqj`bMfSA#clcrrbB?%*jh%S^I3%@i3BE*Z6W-QH}MNPnkAPGE_*O za2OaK8UzT8$d%v`vqVvNkFJ06wioZ{rb4QG;tdynHtvOv{+NgOc2zo|b&Z$L=NsCe zKLQQi+`d>WYNM^Lt`3L8CH3*+J-YW9C5IZ{>^VzB(sg+-h=%c%?|pmfoY}9eS(DCX z!F7T9bKY#=P#^9O=-5FUyAUEA4j=zBW7t7Q$Pm%CZJ*CqSy@?ITN{Z)h7}{_C>Uh4 z{V$b5B9aK`0~Wa8s_UnmyV4w0^}@@q9%=7*cGqhi>F%IQAs5I~B!Jj(e?-Rwda-FQ zJQjBHw=S1T$jAz}h? z!ztLAw~YenOqc7rT03Rbs8OZXOUK>P3BhB`W$1D67!U&h@RJc#{0ATZ*Uz2v5nskI z$^$>&^zhS7YZ_GJ>RqdwYq8f4AHLy6cl4+;F2261daCr4X9(^I<}nwMq$Ep70YxN* z)ZupA{_O3~9(v~0LoZo=9?r4KzQFR(g1zyEzR-QQ-^bWL1yzkKg#(^yO#8%OaF@0igNt5o*eo zH55iQd(dr{SB+Xa`E(_zJHn1sb8AXf!t>kv?W*MD3(x;3WQ+p&>_`Ba>S*qu?&4XA z8NntP4S@x7PIrUG!m)F{_NlK3FkJE+Mn#kiC@491Bv)hrNUylFyWx(FkG9ha=%5eEQ9AQU2Fj;lBdMBk-XUMInQc;EW92e*%#K7M!ooGUb)ks}h5OzJ)tLKy{AuHhha!e|!z#Cg*% z+;HHfJgF#)-gMD*?g1&BZllrHErBt+1h7^?irMW1=Esrm8Me+)`zLQN_fEXzW%BZ9e1F$6vV!UIV_J`{$H06a&%6wA9D~+-@HgC->xG-czj`Ey`*d5nPr&Qy0iW%)O0wR`|m&anU zU@&MH#$b)%Q?NfGX?_%Ep6dYviQp3q75nnH|LyT7p19}kJC~igeAM`H01SX|K>PL2 z*)IAk2qjkf$N~O#&~;rUOCQltdOtu!i9{k6i)otp;7+=yf~6CH9I!>Lj>Lh1LZ2|C zl!(mZMv?Hc%RiKBt5@AU6MA~LuU=!!#VIrAa}UT+jFk?!(n&NZJvNYJ8^O_``4ZYS z)S`RGdql??1V{*4Mw1a^2+Rb#SO_W>r0~S}q%$X+d1!mXjTe4$PGp*`a@#6)+`9I+ z`K>gwX43g%7oYk6vv=Ncb{5tDKWAp1c6-}ivPm|*lF&jA2}G(?QBY7s{HiEo#ftsw z4^U7MMG!0qC_(~+1VR#038|#_&F*GpM0dYHW}5juP1)WI~Q8 zz2nhe{b=qL$>z?J=gmF1V`r+bPb)1^rJz|`7ap`c%%S6=#SMo#Mx8wAQ(wQoWa8*& z*FW{z%7uZ}`2NUvr7T=jdisVJURb_p!JZn$i3M)I=GLjj<5cb;nBBa44=We;m-!sR6rm7-gi->8 zI09?{1uT#1h>TRp>O&isY<}4%#dW7&QNc>Co_A}+DAvVW=#JCxeeZkk?oTf78X}@$ z7(G2b`6$})aP2ZI$Upn?e{|b_5JDJZ(P*@yqQc|xxK$lE2sjavRR;EFgu%a%GD--g zNZe`gg~Bstp7O}gfBwd6ubp?{g#?8p+yP;s5a1vPTXKP1N(Vtol#T?6NCcu?2&Df< z3|@G;t|ya8SM$DL>Hj%-&5HbSnla|iA*D1J3|3ZF`u%?Q;tK}V%AW|+i~pLgg6RGk z2~x@cDWWoQKUKp>Z35$S*su1f_-kONp8 z5TTIJ@>UGCbVX5extwX5gC$np|Em!JK_U=0iJAi^Aeo>D3Ku{SM-)|`UVGN~@B}@p zPzf~5);4bGQ4=l6=7UYUw;b5!tBmBB$rMB(4XO|a86gfh7IB1vnyQVd9pmwPfT09I z2_--Pko?2ehjxbDR<{xnP!bRbgaCmI$!%-d_LD#T=#cCwUv zWv-vB-M%9OJ$=pfJ~c3+tcF5%&7)7&PM?12Wpkgp=bjlC&JC1SDiR6UPR?5N^b_E8 z)+Ouu4H6KevTejfO+n#Oa9qntjb}w4~M$4w98(y)xd-urBgGy(E+4M&9u2=SM zTJ-wjB|BevV$E|?M@^hLep**kYr;vl>)A+cg_X(XW=LssF}9S$*jRah=}ny-is79ws`jPEb=fFQ=B%-$b zYcZknhJ7vP%{X5YM92|gAs|rV0HGGGZ`yL#Q{P%qzpO+F-TU#M&7O9dLVOx11i*bF z{a?IS9ah~Hq-k1SAjxfDaXj3-9RK9^W&m(&J6y>^xAC6a@5AlP_iz8<`yc%0|K@ul zxPe1JsUUTPbgY|i`Se}4f4;M!Y17)(AGq!ssxXxh_en=lFm%(;B_eQ!NL3Vq77|Y1 zK5pSZBD%tw1xx=A$%`YwfUE5$2Dru9hGDo*&cWY&LNTa(3yxM;?_Q>tf=R90RT`6 z5Cn!=u@l{=&=GSH4ge995$zQ)3D!@SR3Ez z&tZm|OW&c`tU8m>9}s*%c=09Gr~*PU!xym)?C@yxyU=A+ElE z=5E7o?>)cY?289b5Q1~=^?GBm zSTq`Sy&Show)?tZ>2JcFJRk^Mo_q1-+c$2xe|KEU47G;7hIeL;7E`n&HEPx{$o^Cb#;DVAaH(yTRM>h1d&7t0$d6L$Sifv zNpsfJZE7)-dXS~FIbfE>vwz?D^xA{3jr5QH$lMz$yyc}@(TK7tjcOoK63Q*9F%39U zf`jA=gakR%8I&l23II1IKmaHKZV442?C7M~Ja6iBMs=so4o;Z3SMGab-{PCi?-pyu zhtIpDrDes3FaCIWaLhfg{^+l34rDyZGegoQPR>x!5k!ctp1y?-{9YCI|1Kq%CNBK^g#>`amVEwG|r?IF{-@mag+otDov&PS8tMBSa zC!05Jcw*(ca0@T(({u~H?YV`Cy*p%2G1}+==c!o22_RXwbWLWwKinEm_|zQNIB`rJ z^^_HegHY6UojXH~wqUe7+tInJgL$L_(j@k#1DjH9GU64qou?{_Yl5Zj^_&H&AT&pn zCCe7B-|}+D+GU4&4*JiSaNEUqR(YzuCPg#X*S7PqM}9K0bmY<9@pnI2n? zMKipVseVsT5JmNRiKOdgi-YvM6o-e{F%;%es00IO7i9oy_|9O{Q?)QecKp<))7*Uv_ zs)|p++7acGYer408FOIGrlN4^w9{rWV7f#PM_M?0zkNI&Pa=`XYvC6x9VH=x2qFaG z1UZoeQB^&j)_B|Dp8BlJ5Ju3D4oFM2laM-`YI}9_YF*b8slJkusG=Z81cg#U5D>T| zc;qffqLd&cNHWw3loC)Lsl1W|5jYS;l=$4^e+jAHpMCqDtIxdjZ$J9khwu2z^SM3k zM&`zIJ{D2JA+K`vtT_?AgrOF#EPitNQ`z3$$)}yVzo+x{?VILZd`UD?wDQHp`(IyM zdFjMg>Xw=DqyVBZBiLwq_H?EC;|OY0=()I@{;3b;%7o>+4jX@zI+;JNKLq z?mN7H-M-fy8)sF_xOL9e{_03Fo9b@uAiC10(b_q)t0qpV>uqVu9(IHi>~X?<_)e}b_g7%ytN)L!o3vmz~uV;Lt@bt)R*kcivLnMTGbF{pbr_woE;uX4_ za{9Ty`0TxYCrAZVL28^ecOUxoqI*`YdbS(eIz!Y6dPhX3OsE)_YHeQp^uxQizPhDl z|M{P|^^|e5jxx#bd2}2AY}oH+<$c zkP;{X+X9^d&w%0pw*YC&zQc;9a>r(>CUfFQE=*xw-zJn&_r^P4<8*>sI!Z)I0UU{( z6G?^2Y^o*2+{x#!+PTCw2-=c6KoA52OPItfY-T>T>32cL_w42;KXCHA%V%93ro~J$ zKk+k0gd+&cuS@)=Jgp%DB_M(TDS-<_LQvQOxLEwRMc?@GcQsN1f|wR3idGe^jd!OJ zfKpI}k64O|hG4XWc&5ijwy!)?6gOW#yf^HSTzB{HzxB04ZLMctHs@Cz&mLw;w0O=@ zi!3eI*PZmKIUh5&W-@K|s7W(}r8Uyh9=P{D-pea%D}CVk$;1DzJJox7)uhAQwzckB z)fK9Z)>H(t!Md_&#z5ACi^T4rZr zYK}UcWfFCsF(ff_M$VQdDppowRB>dWS4QJDQ;9CY%tA*%tIcW*3={00yzR*`dFdiseqJD2HxdeW)qTz<}#N1x>P+#OdG#q0H& zrdc>c|6k;9tMl#d8Dp-TLLd-u6ZHni!t?3)FpzaxnApJ(2}GjhaH=YTD2{LlA)pM1 zEC|5~vp^C_427X3(%j-GsmcTZl>nkp%K1(}#6TdB&1UoG$)O(6@dyrxqU7_%1A#y= z7z_jgnx^IbZx}G@f~6k~DJcj9A_)aRBvb+-LqGt*LDQroq~ev#vOum~w!E#cZ?Z(n z6cF-=mQrCl-#)G$Un-RlEb?Z88B;fJ6kM zDPYk{uerXYq(&02C7g3Vb)&zc=4<0_|HdzFSEMQgs;F~RB_hqrG2s!v`TE^=y>h89 zXMO(0PkiO+msc--cIAepXMO7W#!9=cwSzI3cg~#kb#=y}9xjQk(z13@lwspfI`gAH zy}Rn9iH;B}USDXI|2oEe_FuYUQ#!wuUG?W*j{e&$Etp5A`2 zIo>V%;#*g)Ni=qT=0kV%`f?kdeZFVUmY7Fv3uG_5?)qqPZ28i~d)IGfTf3%=4k|N7 zZE^Oh#4O2jW&vbGS|^f$VT#f?7VkFItZbM_ys=QRZ`4KS&zVp&S%Q&Ma9`rU^1X{I zEw-a=l`rO$`>M}5>x13GQ7J8R*t0J@)|luRJNNwVOy`+%t_XQTN1x>P+#NRzL)Z2G z{{F#TBn!L=w|7z9Lc9dQ(RL>Li(x(&SvqLfTXun6sUvM()P+L`Q=;I{S@Tth%0h2Z$x z2N9#uXm@uvW2_Jw2XM1W1WHLH3IG8pxTFFr{6(jXnz?`L-bBViMU~(X5Yn;%L4uSD zaFiS@OJZZ@@Xr?BJ%ZL;eD=i@h(r|uUCrGit?7q$nMwcwNB~f}iR_XPVR1^yr@s6} zKjs`0QW-`Q0iDixC_%{b$%F*8peM`zodKm7Es(?!(Iq_kxGlb3#q zw)d~tyhGicPM7&!Zrgoo@p)zEp1TZpmhJ1G(m_&9rnehwNO3fgHgmc543J8lW@NcE zCZ)8@{x%W@n_#vmcEMTKPSPvm2h-Xtbz}YZHM?JVBk}qkDU1rKWRzOpq;FpJ-3+yt zt((7U*>kV$-!^{QdGpS>?5PF6zxToWTAO?Bxc;k0ndW1Wtdc)TbIx6z>|^kz!wXH* zOw%NUR8>_)qfxg(7Zmp3cMM7ZB!CQ%x)*JLC=oz{lq#Y?K#6Dra8Ni9>FS>ib-~Oq z$LI68S7DChsH$2JBmY-aRkbXOb6!zV;i@F%OX7xlXv2|zif_v!Zo?5NLjXcmv}}ii zluTZ7$t8WwE!>N?=46rCsx~JH001BWNklyzr@uLJ{^SL}_;m#qj~_Q-Ps&N?t>=#&r>%K)_XIwE%Ean;QG{9X zNY^gjOsgX~Bk_@+{Gj&y3po&u&bH03oqF;F2eV6_``iB1VJAwVBQa_8*{4q_A2(*) zN!MIMq>l&{9V9IG(t&k*j2W}~Fhre#wUw7?w zAL>ceH#P03B2HJ*ZV#eU*&+_p1b2x%5XT`)YRnGVxQo4`)_drW6Yw8#S>nEQ7oEtL ztK*TRQ3)UiYE;~FKfYx%;{yL4cMUVfGMP-l(*G@PNW$asL?V&m;$j?VxmOTte}@d3 zEi&*0JmQff00+PZ$$sP5{ zc#EM!)viRu^eCpH0U^>tnJq@;;M%nRA__FC>$o z3JWO{9MVLwiai0%PhMZQdi(l?*5QVzV*Y|R_{n}?<`NY>9(WyRdU#Ma7P`}N+*x)kSu3g6dXw$Q%~>f*!s;sey6^3f7!uA z&>#_C=^Iwu5}AYXZFm3u2j@md)o)yP*2R~7{bRQ)5b6hRs*+TBlQezwIeyRGao4kS z_h!bJTh{qrzv(an5xrh-adENV?^jhd|7aWB-?YHnMdtf!!av+=Ne5bQ=9?Q5004_h zP63D%1y}sPz_oOD#WKe7Wt|1`=(-+@#X_Nws;c?N;9%+T0&fd97Cz7jOb`$tfdWdm z1_U7kxfMH>zp!~hZKP<#gyOzN^S8tgL@U5xpD-q za1bC69O_mW?%SgPkOUAV1&LAs0yx}}U?T;Ib{ul%W*UHs4HF);av#&Vk(q+3}J=C9}oQP=gFni|6}26w>D$I0^bodwf~CJR+-rQA&r)&2 ziLQ-HAOu!zTgxh97heC7Cw}|Oj(Fp2bPGv<3n2732s#c!+}1xOB_+vZ(lpJ2rNfbx zM?eBWqy%e5R7AWwl_0pR3{}jVeEzOiU(YC(L!=}C1VN%i;kx7~0fjts@~m;?<8;)C zdul7_xk|&yrBPp9 zCF`*>LL1#j(aes=NS&lxv~n^{LUk3P@GB04Um z)OFp}LDMwt1T@|J2Apqq@5%{RS6Any&HnB0g`0$T#6KMI!G9jeL&1FDTmXVYJr+fv zC@BL10wf*!$KNo;y~RFZEq$PC@AG9 zic5=2%1Q}E0um5Zf)wOuFT7>(rUhFwyMUMiP)JD~jhRB|!qRNXB`0#z-q$)?o2QMM z3=C`{C6$V#gb&nl4rx)dudScyozy3~t!&(33}sG~6xSct$|B0a%&Wh+`iGC)`w;eb zXNshqB)mf1r`kqD-MDjkW^?0}r=GI>nbmZ3pFKMAnNQwP_rG7Om~zV1bFU?l=(Ee8 z4aU7{CyKD>D^4tY?QdJxY&rF$)27ZoTjytNo6*%s6v1^0@Q#ZRFxBo08|R# z2xO>xj}JrgEBr*3!yl|e>S|ONh7pNGB9REC`9cN&00N+c9+V*}(Wam%XqyBCN+uj) zBL_tg#Z=E9f8pqgaUg_5$*7P3CkLC2pIqpl;D7L2nqz@Puk__ z3`>!qDE-P^KMVTG1XF}VBsvr=K^?H+rAPlf=jMwxH`VP+TdYjR!YNd znf1$BIun(QicVAI0yT^iG*!OfsXts0n_j!#TUOe<&4voEm}~a$Hx2oEjw5L ze!=>cdVF#wII$Nl%S8{FPh36;MhA==}sjTrOYt>eAQdn}-^g z9&QMhhQ{!*N1x~S+#Pp!Xt#Q)udnX}Y|QCCyxe3vLWtMvt*WXr48v_x>h{+h>M<55 z@ZaKEI%BM)q@=U6^8~CCaSfbv?%K6s7?qWke!m|EdV8H{6EgImlmw7SovIg}ao)OR zIh~^-fg=b2BuA=83cM}yvEhn}ipIvq6L3$@-+j5lGP8?hAx2bB;pZE%<{_7C^7H`oAixXl3m9jV6y?NhSbW*g- z8b7kKd;8wmlje*nouN(0uD2Rmt=2#>ojPMi^FDLMrY%v!4EH#sJ=f15KGw2|F`CH* z6XxFLjh}h=k&`aGq+d5*-M;GK7yeW_rl`5SVaY3-tIj#?vWe&3IOob!Dkl)GZ(O!+ z_x7E^%IKUkFV6xpM|CjJTOEmy>o?!XY98GT+v}RPKE3gU{k?TMkW7_!&X_SHb~mhS zJFJWa)u4Sr8fReih|(shFi&|TWS4ohqH+$hyROgQln#|uPW$Y&FKk@2uje2qj+e2t zG)qjYOs|+d_Y$J`5h)Q8g(I0$-*9ltmd%y5we9haJ{#wrJ@@GId@Q2l?hD6pPRxu_ z*X>3`_w?+ln>mid7%TYV1>QFdt~}1=a;|Fr&<^Ps<61fZ=(-*Xg`&}@VHliqx7Ynp zkM4woq9D=%ph$cUk(~)G$I+HV1q(q^pipqg-wAF~79!?yIk$b)P><-C;-0#tl$xgH zJ7?!F2H)i2AOI7}h|tK3XI}L5{%0L82S-ZkNWlpOW?}@3Zk_$<5{ObnOJtGQ0=SOG zk$(*0h@Sq?lK%06$ zan{#uZ8>n>)H613*!A_B|LPlE{?Ie`KEC`<9L+$v{=`eqP#V-x1PL?yvxWuU2(0t$+5)56?UM6FH8YWLLfX^kYAJ zuyp20r_G#4ICzPQS=;vDA&=>$EQTbD+zylb7d^73=~dM1beW-nZ|9~h+UtkIV<~lL zbD89on&=bd?Phhi@Bs5_-fqpm`ruZ@l%ZZn3b`h^dC~kk`yt_YK;sxT30KtWbma8d zwA*jEqo1nW=9+^+Rc!Crx8u(FTgTw-=5Dy1N832F=r~n)Kf+n{+9yyZKDJiPd0BNmwWkv1i5x;uqVMJAB22zp* zO8}xuB*>b|5l`Ozmt~Ls?XR!iwQkeu5f`2r3&jAG9dB&Z8xpcomuQ6*s%3S(JDyFZ z^%4G#DmxyKNXe)k@MOXEfaRr2x4v>9^NOvRr$fT2Xxx3MXUg=EBa6nMU$g{!b3z%R#A-{4Czq^_21qtT4`hOE()MI# zmW(=i{OFx^twD?TrAT>IMb^&6dwV-#&|AR_!$>)8{hdAIqN9r&Qkgdn#%oE@w2|eG zR^Q*%&1@YIP1K@+eqQw1AN;)Ga7T}sojPG+7E*iK8ve3p<9mmmiy{M=t7!0}{h+!ayzF_G?hLDsn1fWR0 zK0jp?kborMR)4x0$_3s&uB9uA;`MqnnaofR=iTRDE#1w;%U7?KmzU=iOY?u_{@Z`G zbV)%$cEw3o{pO`V^oU*?vXV$J+1ZunetzC$QJ*7K|dkY z(*3t#BUx^4!4gMAR0|-JEC0}-7S>?wHKfxk?F0WBH~T#>#IbMAkbWbPL;12 zvnfVKhek~7FB4nqWZ#~}d)q3#ReIQXaNz@LWB=ksPwXpiZY!7BKxWzDmEU?o&Q-@| zHPLFs1@qR7ntWO$(A@v}?gQHzTX%T-gpronQaspF-`{!I2tYq&cBd5_XJmcEAM7Ow zo|Ty4X*H`cjm@f=IZE^|3^Z8f%9xsI)9unnmmf^3(u_cw$ShB#GtGA|{>`pEjUjLF z|4q2Fv9Iy2r|;c)c$de=e*XA<#qCM&c&}(yB4+8)r}?S;crn@0Lv0BhfB^>(C<#EpC4UFxE#2qyb#-+O^>E&O23tA+ zxIr}6(yObhqtU1v3(qI*9Np463fs25==;Sde|7m!FOGXmZu4@ex_0`9r&dhA{QOI9 zz4z0%-*DT^F{f4gY9LK?ssfP?6Q*M^R0&mvSYcp520_9Ry9OhCM2n0e+LL8qG8(XC+LTzpP!Hr*k_DjE<7OT~K;ZI(1Q@c-eVb9|m zenWS*SC&+sHT&{z&CK!KrUP4E?%LGXva5E~B<9$j_H546vy-Pcki)H8{@SUTF?7Nz zg$zre)r;UI4lfS|EPysst&~~Q^0sk8MY4>Ew5$%tPA-|0XxrOZ$r4@`@9U{==*4a) zWT5S#Br9}}oq@jR*3A!vM|Jjht=O<=XZ?=7t=m63{fv(O-j@$IbU{v}WO>=>JAZuN z(Wm(sC9AkgHX4og_Vyl|cRXgufzDa^YAyGMy0Wq|5D0j^UI1_f*9-Zh1>VQxJyb$S zBob+9X&LGfz01f!J@WF&vWQqxQW6SPSh~prWLs!N5k5BQB zO3ov_Z-r2(!X3#NvxQ6xN1==XsDhxQf&?4P-#zz;ZTGJH^B+_Y3m$nAM7GWA#EXSF zp}LJHgMm~q3;jkS9+jdt(Ae5r?e{9_oZ|PG(zN<*L)C&NugsF}j3rufJO2EF8ua&_ zG^%t`&8l5nUR=F+Cq3k?a6%ITQ>LChef-(kj8rwfZ&y#9)j(>4*L~#xpbxT9Z&p&DV03>bDHf3(2+mAvHk``gkv=Kw$maeH{_y6%>-5<(bb@bA?X3Jd{65VVA*QlV*A z-F(wS$#yHKgH8dZDkO>lMdt!~;H{;-k1=~7j-s;bKG_vcg8Tp0$}(vQBU zBY;L}GMx+?u?Pe%Kk2gFdw1P%#r4oGJyIuXnKtv}ro%1L zOk+kmL4~NE&Fi*>b-h$2dlxUBcIlkVSnt->oyo-;Wqb4ZX|)yQ<#W!Q2k2k8{N>^n z^hh5 zB^so9iP5SpvTjWW$s5Gs`v=&oqrnD5|Ka3`O?r-$qMWXNU(&qpZms zm8<^d_1|kq>>R1n-#-6`y)@A)QZKaEo%i97#9Ny8bo6!9>P?l2WW(QYg&}pv-M!ge z+-~JZGMRj@-}G4G8l-EVUavP02!z97H(=oI$N9`NJb_hO3%u{iTRH$xN@KBDPfyQK z59-|{Z|SaFso(F9L?U_Z6d06E4uwnlgS; zQ0ibyE~L)2vBv0&rp$Y4)8ot9SAOyFuU#|gnyb&e7A0s@m8M0A{$79HwSG4+mI5)wz3LE!9au$**m^~QaN_O8DVlKrMvDa(13EcK!4$@m-%7A;(y$;8!&KHBR|bf$AD zC&NVsA62arkcQ`SwQn;*dZfP+D5*@py2ck0AiK$M3ge=}3TaX)BB(M<$dr#+@NS zFhFDkkRVqS>bZ34r5hX8?djjMq#cKd0pJGJfZHG$00=1vA)E_B2f6~~ zZzkU3DVIm2Ra{+_BfdDH)RvY+Nesy$6Hj+--no6@AAjZTcBYk17J_~M+xK-g9=!i& zKg{@b1$7&#E)4}K_uIGJ^zmOk^|KvT=cuaDr^4h+f8UnYS5H54_A4u1`ObH~KV{0v zU-`lpnB8MHwx-qozA820cPwyHeNOMn6ptTLVHzDw@+*32V;?7_HFlDurQ1Y!Czx1d7`AY1Z zvQ*88POaHDD*DLk2b4}r^9GEJPxfFeZG7g+kNkQ5liQar@o~&{s~?_y%_nd8=Funl z7`fy57kO1q9B5xR9Iv|EwmvXWZ5;}Q!r^c*7|dJgn?7}(VfvhUpCQ~fV-ipT5a0w* z97&8D%GPJYoHwocd}m76#)qS&yN2vW#PdP%NF)*r23;YA!6jV(YT5-~{5Sv|+hPEo3gR&;pnBhsU-Pben$Oi7zS&uMickgrFn5AW?< z_u`_FUBr_Meff_M(r7fjXa9p=_-gk|5)X4z2vbq~HY3vNO?Ca~_djlgu3c|*UpHai zj`?r=&o{raJ6ZSpC;wQKl{(i|5-SSUO7tbt+16BFQlTj?r>4Rr7%|Zh%{e+R*+(Yq zHUrY;v&N3T_`I*&^i^VmrLaeye(aPfqdV$0uWH`ZJyL^KXGERtH~gte4xyY(^L`DI z0j`=nRjiFJDNl4~7sl5`$JZF+Lf!rR9c! zZ~K9O$kFHdSU-u1ii&!AdK|~eCzu}N0sQy4Idg7EOjXs&%F4VW4h4sMSb+e5{|J^B zcozu*D4e6d( zAc!_Zy=7P&O|&&SI3ZYYm*DR1?(Xg$Ah^4GaCZ&v?gR)B+}$Az7Tn?Xd(QcuJ3n}u zneLhHs%^Du?Y)^RG5jMx1j0>1|7&K$Q~jCOfP$Tiu(Z9sy`tiG&);y5$+@e1qqq5w zWV9k@ZlBjowV3j6f3+R)G;_!eSDLK%?-@`6PCSxnsk{k=Aih!rgCubzSa-rE$kMwn zONHV?=;%>F!qTK7-yP_n?M(z5j#hhCxO;R6Cv7j@PxlQS#bGlP(E6We$ZV@9pP^U9Xn<{K0mn>G^wUgus(~=4N-;c$rp}qe~ ziT!U{6U@8R*y&9DXVJb8N#uHsR9|b~CamW*(9?k*e11%G-`%R!y@DR*YUHp?ekZGp zg)hb|w9W#p{#r<9D8Itc|cj@VNAgc9BvS`p{Y8fci(Q&7r=ha-j)h=FFl8}Vc$3hz`G183)k z!nBcKyxt1H26}J=`}e!>s)x<`biLOpbPxPZQr4gJ8eW>oRS!S+y@3VtyR39q*~P2_ z3rJGqQ`EnTaJhsMCkGz{@XC`&e+o<@g{O%Mb#=@~lQf#TIr(_91Q=U^DXbFK7pp*h zyht6FviJv|x9}gZBBFtO+6Qzm@8x|!72DGVgiF)8*OlJmF7>A5dzQWf5(Z&)%+#OY zUGcA5iJx86xm7}EaksbsJr8@let)~*{qDJ-_%d`KzihbKzSnVIzo;2%qV$^#$q`G7 zK{xYUsVSLbvMNFy3qrr`dnWbgSa4acP5G~@o!)PK zb=!SUR!RahTU)Fho(shOkAX*?Jj~g@dqI|z;%ppSBc4q}97%pFst2Ab*@iAt)0a=1 zaz5$X?$dD;Z@siiPZ719?5u2{D6A zp%oGlzleZPe?&SM5giJ|eU*V07Ir(JK zrn!!Z`mV=`o8aNA84qsb;csNH2}q_~Vmvl+618c}ZYZ=!e{B~x?^dk`FLY?!;sl<4 zy~k8SpaybO=AKjCCNHM0{awt;s0;hPl$RuZZ2fLU2*8&c$Iuf#-#G-}KIrH;zpLBm^68rbu z1{uJ)6K#1^IG6^EnECMF`LV7HrI;$2NnNCWCgLvjzd0+qGOXlpbEC+0X!fx~retso z2**|Z^p!fx9xY!c`h|WKx6QP~1>qE5X3Y&92TKn}d7LmQb!O2fD<~yEwd^P>@wm3i z$n)}8P-PIR$)Wqbux>M*TpZ#nflP&0y~BD>-}~EA*MjW5bd{z@GMnuR;m5^g`I?ot3h2w#lM%g3lFT&&k;0^-oI3Z2g6cSrGt`W zf828GB@bc9o*3U1?gQ20dLe54gDWc?(9e9Ytq0~JDBx3+C22@V(Pm-CzW~+Sxy8;O zb<>8vXl3%HPjuW1E)03GdC5%+#awe4L>Hx`rAZd6Ecb6#V{#t_iHbmcDiFqO_F`jt z7j4~riMeRxkaPZ?kvkF^*`IVTksjc9=~ixd^AsaE`h#^r1O%xJ`JG8r3*o=)?ClJ7KYV{`@s*nM+g}8Dts)SqR!PS9 z9+pklthVhk*%@jtwqFaIYI(JT|El={Zk9B(_7rHmSzdnp$S>BVcfA7(7r+1b_C7bK znm?VM&P4xDP$YO~uz~R8yE44UK^VjHX8&EEoSfYH+8V(q5Axdxp-`}649G?2A zkZzgz_wbU}@S9b|S7g`L@K!l;D2{*1Ny7>vdYXbF1Pi(^xyXw2`yi$JNoq z$Z$vz_vT&4+w&G`=_qYpOa09~C)`x}a4oNGDcL|i`S%ZgOKhVcLu=FUy8VmuFOb{* z9_Cn9AdAOqq>E+E=1eVt>Q@ZCU{|$?_o?kyZ6%7Vm=~`=1J5VS?Vg=@g%|g4`n~~j z!msaf$N0M5l+(QF&Z-EvuWL?y-v0uY&$Y7$T(#+n4Eu&4ElL;L{N8I{h@S;re|BnJ zZhN#h6t^v*-zDzAG`QfQTy8m1bC2ll)!1r(jND8MEUBHn+H7uHCRD0FtV-nr)>{8) zequw9flKDJ{i~5B*u8a`ee!?mVYg#zkD74z_47$Vf|SK&KcRgsacvKg#|4}85PvUL zt|jc)BL^T+u4KpB6Wz`tYJmG#R3y6W=5fpjcxWkE8Qd1~%eHEmI(pmF%N8U`jPX)& zDKy%T!^-OZb;|s>qb+jch~9R)DF-VbEsC+rhxC*bK*shqLdmH9-K1OZt= z9V86`k$x+X294Z4qm-}tf6OJ%ODbNSrdlaxa9>p4T=acVZPg34KT4N^2H z@^c#+;mA%SuJ9q#{j!mHv61@IsN1zvbV0?ozWk$FBaV*EkP*|}cCmxF_q}-X#4|(O zrxX2cbIFxH>T(RetBP^Mbsf8})o!tNG%rArB{kpwGVhvYUm(_A?`~ZDGG+GgPs1MF z(l=fP?(@Gl{LmfypdHE41f|nSs$jMe0J&cGoF+UDmNT0i58f(KSQU%{Up((mWkda)HXeHU$tN@nx_m;)|on7S~4Nrd$Dvs9|Ne zo~BTBAJCQLVnT4L6JVVBM-`1EEExud@IIxlW1o6CwUMsixEe?*wqHr@@}7Rc+o@x@ zU2Avlh%1`IqaGk9Y>H-@4iGq}H%PU-u74f0x7+S{l*L<7DR$_wJ#$+}cG$}4Izpc( znlFu8P{D8ChbPTdEN5K$=Ge;(s_-GN^7*M-qj_lpw}ryDrr#5K0|(i!oiv@tLq>xZ zx3b;mOl7B$6~}vCGHcC_7q@=y5K*b3mEufb)u8>2Gkd#Vern;2oFtTD_SbB}RC~Zy z43oEFS~Q2ll&z|e><~krn0~nwA(l?s;^`d{64JTyNu>;Ui{{g(Pg}`;3ti_TC-BAF z*p_ApCchxCN7wQ?UseO&9_z^VNPm&aLXRujNaPx_u=J~aci47P2K{p33u#jydr^$5 zvN6V`!%<@o`=Zdmj+Bvv>81t!i8K*13qlzO%L&pGT23Bwlf?GUhi;rJm5>1(Zy?jS z9!MRI8Mv;eTgk!KWZL{PMbJD-o!L=jignH_$in%qd>A!OKI@Q5u_m@EQXbSU+K~{# zHfjfxCv@s=g0Bes^!UC}Jc_^;tMiE_N{XPIYgMV_@}pElNvZGQ9c<)JCzKTMto{zB zsFLm1_*qrE^l3RhX9vRovW)f2`@KZ$pRrFcBIUT)L}Xzzq{SeMbRFM$MeJ<08HQqI zt?cYNQKy5hh=xCd-u0%^_P4Eo-(dF{NV_TNOCj^y!b#$X?oK0j&Bo)EsAhjCt4)42 zs@arC;gqV5@IxuCx9@x9&y4zR@?=6^+9qYK-6|YhHlN>RONpMU{FBg#i5)q!z49Vl z?6e@Khbdh3QKo1e2z9?*q?Z^$ z=@ObW%DSydsoWu3p=3L-(kg}o(56S@gfn~6vdM-WFRM&KMSWT*=-%12w(|noq=ZBk zLVgyZW?&*b1$sK5GjIMpomD|w7vCa@OcI=*TV$^ z{V!!OrmkPP28f1Txu9aZ7YYQUeI59fk0uP9RG_X!$>PK|@<+SN%%H{aXT^gyBA%?t zfvm|%u-Agyh9X0ElXv`#at;}kn&U#J8(D;*?o>+Z$%djpJ+h*s23mC30_%_SBDh65 zMhcp^ss*u0orKz=+R;)0rcToWxwI*)We_L5!NW~^4$HDW=P>&trD4(0246M{xTT`8 zx{2~RnyXcqrFrR~hZI35TYTBc$A1j@CCvBP;rj&7S^*)P_R-M(U* zWbC@qD6N|3acE#)4{a)PjqMw(nM>BA*xe#fQCMES>@!NPYkCf@_iAY0#s?+T+MAC% z=7)Q8UZvo#{MWvk&z?xR6$-Lgs)Ok+c3u16Sd1a&sHi9j35gmZU7uV>%)98$?$mwm zILYLkoa&3*y;OE+KJ4@vlYtdJrtmK_+9nk#zaAUSsJ=-uSVdbk5CzI-abVw3Xli(i ziHT)XZ=OuQ_!+aYJRe0 z>U7p#e>-0lxkbj@@`+&`#t1 zFU>PXMjL7nq1T1ji>`fr_*f^-+$jgBspyWD(S7QaJ1dF=K|^k9+j28@x(3`M?w&|Ov= zyt_RW8eL3v`%YILzRY7Np(U3obzWS@nC>YAY+sea(Xoe_CpIuINlEcDQ||8#kG@x# zU?wzyMKV4XbqO#(}U0q%M{P~lAx@wT}c*{eUIS?L)*;E`B1El-iU#L2`<{E3uP{g3`+E(w|RYn}9>9dS=t zHkFo@Ro>X0>z}}b$Y4NZ(C})(dL`T-<>;3% z8sT#@CT4^bms3k>aZ-uIM0(OlCB=;%`^hwoDu3-Z+nZHC#(&)}GdZ8$YKby%JowI*pF8-_A|zF)?ytXaDa1X+RT;qBP{B^U?A*`*61R zjnhy6y{Zo3o^bU(Jrw_pFT8)&{m6ztc2} zRbyuO;2BEJ3YP;ge-Aju<77@^bAIea2Od;0?^EMQS}0K{f+6Cp%9{`>_-r%$$xO^K z`$!zk?db23AY3g@nL@oTqP@LY#Auff$;gT^GdDpzCkx2;=tQHmysXT&MYrX%>T=9b zM_6OcHFwA3CI`*YP6|{{8xQhc{#s4BhP2ayX5c_yvs+SnSlL5j9;b~lOJIo_K{YF54Ea6&#?LmYl?Sbfmgi$pe7;^mZM-fL6V+x>ALrvbTQP7x zinb{hT7NN;8OjJqX0^!PH5$;-V6~+Q=q8X87=W zh=ykKD|uFKpx1kJjl(r@zeh{3 z!}qsm+LEE5S^+OZV2kYD56+JR2MR@gLbCjm@r805TDnu9GoWf` zNk_7q5a9+Gjh{7QKboWvqms3y^n~B2_7^caK0C`jc~3UmFWX7y*mWH>kMH}8#k2L> zd6zSCJ5C<^3`1&6yj_M zZJw*^(?JXqyXknJ2Wl9Q8{Ev2zB-uDk7Wdi`xk32!}q`__FI!vf$~2*B$*)#ghiB@ z*6k`2G_qhs_7hDvM6om`7FVs?Ag<)sJsb(~@8YxsIOP`A?cPJrt6cMr6)4qweY>BX zS|3nRFE={yLaBS^gM=kh{#c{V@W1SA&TsoX5M!mk$LkTT`M7>yF6%D_?4aVBL{s;y zRxq{o=9{%-t@Oykf#UZOVZ}^Mi!`gkK&3++i}dGuCzZMI+IZ&1L2N-M;CHRQk2`%` zN!}S1R+!_d6p7<^TR7v#w@uK_MtM%)moRNux|7z0fR8(&hBR&H@U!Zi>s+c9Bfonp{XMI=FvW)vA&E!KUF^{?Luf$m6O0%cekg<>&u#5udecwlFjxzZ*$qt8FP)byIkJ(?CB_y1sOSi`pBzZ zEMf8zx@fdHDQ(||W;z_SwR2_=J`jHB?&34u9jP(}wqN}p5@aHFeY^Shb}N`+coto?BAP^pVuc7^bVHi4 z#S0{ht{ZZ*y^IlN1XgfbQhlY;6 zXw(x-+q20?pe3>eLoK~&7bY5rW2_S$*N_o$-&L*UjDj?*mH~;d`yt?afmqneZt!+_ z>Hm1CrT+QL9?nux%r1tZi2U+dwZThY4O4C8vNh9*z~DG;fX?%sL{x(Vdg`jj-<>=y z)vr+W4D;6(Z?K5tXSrQwK2h2y!nN<4jLyGYq&62*G@XCVU^d6HcdwA(?wM6+7mK>+ z1}O;DFf)#qYUoSq=ZhY9D%I-tH9l(#Vt!s3>8xqaEuQ}z_G_QWu8^TE}!%XBo zd+bJ18J5jC;<4l>&CxJ=3nOeM|G~2)4Xif>)EiA;#%; ztD})OA?$LH1)Cf0+(XzTG5uQCMf(l={la$*_tFida(#8&WQPf_o5Bv7`;LUo1*>N@y)ru{0 zV$UEOi1>uIyOnp$yvuI)t$S-2&R0CkM=>O3Pw)7ryEZSd6jU|`lm*-(Ep*Z>7JJkd zQuoA9u)iYKfJpGHLkS6L7w90lnVo|N4o4P+()|J|4xWjYF6`|sB1TVf?bz{p47cYd zMi=d6yz;Q2gG_MJEPyrNq~$*M)Fo9N@=(VE3_`^Rp|8kWFE$U2n=LT1Zx;G z@BhpF~CPVwBXNgY#@z&>=k6I9H=oe$1L<;d!gWnnsXjL!Na#I)WYX(*2=vIQ) z8}r0dj7j*m)@9M*+ziIhx&?09#m2A4*~A1Yysk1A%N-FOPL>8@kdw6PVyWvpmS#EX zVl8u*jsEB(h9A4&=_(zN$Q?A#h-yQ>tTE`El`*tXS}@U$B?TtCGdX#Z z_$?Yt8A9&hwK6Sa3z0A*X$O*E#+hatATtc2XU!nh24@O;ToP*814*lv(u~1+Zmly4 zTqy~%zGv~}{Pcd$wf3c z>;K~d6z}3H@}F{_eA!%06EumgN5ZPAnAa+z2Cx@)JU#CpBRDPuRPc}^+!PcN0++?b z(P=Z^P(d&$)zX1Mm_N}+)CO#GlIdfN7q@t?PC72zLX*b7y&Em8>#J+G!j(h(HUy#*JW@s`ovHiN@!vif1SH)4F7y1Zrs!ko4w`9tSZE z2tgU1Srlj3Zl4B$8iou3LgFX!_q=T4^z{LUTtld-$-$iLT{uv`wkYer6zI9S7iT)u zg@4_eON828oF}H!C-V`6M7jm+pjbp!k~AQJ6^WHvTXC66=(SF0Q_#+P_~f~^$ES{` zp|iU8R{_X?G3ab|#HJ17@cijad%OJ)yWVoX;zcp;hL14iq*@rvoddZo`B~C;{^7Fg zW@pXsgw<8e1)W6QE5p)mcPVquHHz**1o_poI6?Qyieoy&O3Uh3W4~#+JH)b)N6Kz9 zT*rQCIr^0meY!F72Y>j#fD3AFYfBS&eqL@E5m3W*y*;%n*+oGwi-fZn$xo+Q} zos^UWpl+AF`@hKgme?O&5qXWmaF3-Z>#8LYW~))>SjN#$|1b-jf~w@Z z(0D$XFV|z|xjVMWI|l5vXWqjFpCY^eK#_5#2`Vf>Rh-Y|djLYT`C_(?&KTz*HFsVj z1{>z`5~n-t!hrf+R8Jp&o4#{pvrgLiR!?9>QHw{69BoIL6 zi*dA;b_oas3q$6n_`0!|b`SZUFBK1g(GLHs68*n+;5o{%Rrg+HXy)7F| z)obM$?_FO(IUcj-O`2H4DnTZYHuXfTM`xZ zsJ#Y!3fOt$^w{pQ9IIOb`)bVkub=6yz-iArkH@CwhDGEI;o6k%u1;YUKV77eyy?r; zCm7cXe=&;^Qsk(I$KjB8$UX0@C$L<8KW#!wVr_3G4@z&2`nf1-@U!@K^sP#(N2rZ< z5*H}Q_4xJMxt2`dfj;B%?ofmtyF}h`m+MK<@~L0K;mv#d(w9X!Yf4s75(TRMS1B3{ zIxM=`{aFXGbtx4!$E1%T zB2r|a+8iA&L9bl!J8AH@I|4tv6AnJ=Q0pxOEjGyCRLJ%3kI{XbSqxyp0aPY`t|!g4 z+GvQ`_>(!PAgJtMd(%li2y(8&4-SVOqzPidL6rmtW%Ruq-~>G%iM3r3@CZH#g<>k3 z3xj2RVmo1C#Z6?d0*g!NFZ19W`cCfon21^Lt#@lZdOe40F=0_~_Vv>|jx{_I`aC#~ zS|BAp!!uJOXmW$F$bMkz4syu9g>sdpa4V93H|?0%{U@!NxRm4E*dnZ_lViP*+AeSy z50*c2WlF>RTN@Gf%QTd&hJvOO)~D3aH6-|nb)aSk3|&Hg;{;Q5jtFDfNwWD{YxPto zp@~mpLbl)LudO`-rq#7)a~S3tS^<5-lfb!~q%?P_`Gxy%XUZUAGDl(d-H)LmFIqGL zQ%)l(m!8h}9G*Q+@&#+eEH)}72f=Q)^M*JiR{;qdev=vR!}+i9o{h%_Q&uJqbXrYBb~bgZ+nQ8^q103w`QAb zl@{=;)RASVb1abq&EBG)hM6Oa?m)W2t}(k5HqJNHlQIT z#R>}}4t=jK351Bc()XfH8&>|0of#F5KvO zoku}-(2Wjf@xyBuBC<4w%|6KWwi~r=eYE*r9856A)R_`m1)yOh9^4td5YuG)*VEV)F`Q9+fH?M8Y%`n2X|_Ppb$X$6vIxE#gfL^3IL;#)CllNUH8qgoMs6o{5y`&&4UP#Nc57`(jlSDfl^RYKp%(NKYTg)ND`UVnsu`TE+mrTQI@of zir?poeUK9xM(TdQ)rwSBh+@h(FkVF#G)-XobwDPlMFh^WXb}8bQVvHCrc{iWyzV!I zI@G;Vp6xY_an-prS-vN1YkB<5717Iu8AIbk_-y;>Tg3}zh?n4$ejQHBcvh2--Cm7{ zxlxz>I+I%YcBk8At0RK@oI~41+co_kyE!y*zdw2(PwHl}m>4orHrD+OsQ6_mYyMnZ zi)Qx@;()tn2UQ$@{Cpv{X<1uXP>++`@7kpf61LV`xN%s#;)q^#GAgY?cO)1E3S6AH z^2U?dy?qM3hZK$6=PsZBDa*lIN|sO7>6xb_BLjfgDhbFWL*5Z$!U&ekOftw3YNE~b zqy`}+F>MBHw&Nv_6WBe^b2f5AOO;3hQ~DgOqs(cC+%v&&KM<2(J4Be-3P2GU#^$lO z4Zr=9QVkyZo(I7^#HqxamWpgC2#Yo{DW@r{96o0|yJoql$+odEF)T(dCz#u3uMU1& zO1f0hap-@q8yjJ(TWoM8eh`q*Hkz8`8rURc&gNj5&@2BD4@h%5HzER zD$!71KjY9g)KOenjNa8LIc(cfR#H;n65)VWiVlAct&=vL!=q+kfHX^MfK)_lAV3bC z%cmJj-9xsQwuvL26@C)%a%1@5P+HsHIO_khuY^d%{xe{Yf=IUW@Qr4D+}-)^k3G-w zX25BFGSUfe)RFnpkVzEU9V-P01p!3o_-Fn0xQ?jqXN{-ljD5I(TYIgg$HVibZ7Z#n zz7s~iw&EEb(>6d{S~-B+F*nq%Gm>F| zJ-WbyvW&rI&`@*;v&Ff=ZoUdd4Dkz8WP!Cv*Qg_s0@<&MdOz80@F%`%@TM1?i>AF( zUSHrskdt%Cn%&z&UD;|Q$`z13kitB8gH!x&NkJv0)2|(9)u&qntgv?2!j1%xLWN11 z889S%!Z}L_bijh5i*OKOf$c1Iyxomn8L+9kTN9F$x%pcK1?ApR_ ze~v~*8O-0xDia-437ZHpoK^6%90Sg{29ih#itIbaj%`+ItgAgegKB%DBxH}JcwZGU z4v(4RdtsQ6FGq#a$IoJiEpO8gF8tmfhtJwe*9ZA|hWGQ)`w;;tEv9YlhMUi^sGniN zIH@t95R@S~=WuYom?4Oe_3gF30RSUFrf#pU{&UI&mv!JX{E|j5gC?PpM4l;MmXd-2 zBvHmM8M3t9khQ~yenyCO0?PCKR4Z36-#E>B5!ioQuX4S!L)A%h<28_#jRx98YzhrL z;7l$3K@JjzM;K}E?d>fn=zqy0XumWmnCp=O(?$8OQQH zgatcj2Ey!v_(i$uuS1Uz%L0C*^Q_YFIf%v(f16TMJE&Tve>)V$VXfW2cDLDimBY?h z=%n-WzBqcX8YkmqnV>?FkHecMqJJ^P`2&ft?7BXzXZh{hH(=2=^Tc4pQP~HyyiXyI zGQkN2%3lKeF!Q!8{yy<&!)Wm5aVsm@Za*i0oUl=Ns zDrKo0H=#ve2CUgDt*pG;_-=+h_AxY0wtl+)51IrZbI)RJz~;<)d9$-2{A9#1hVenk zp|@-UzP6cW8G#u(n7_|KSH=74eDmAeUGxEU-N(htBKnAd0Jx~|lIiiU>sW)qy30iG zrrU$UgFErekXQ`D-!BqZ{e7;d$p)R~O<(I~m~YOtwpZ>f72-VC>$5MX+rJ&Axd}OL z9?;fttbj5TSAR#ASLKGaVBy}dWM!!5>N!yYq^KAHg8HOyKX5icrXlKNMR8WhpB+RF zXviG#*4$=lunnqG*}Z>RQM$T#Ri3LtiFJ5JV+DO2uEe*czkUwk%Z&ec?qJ$_y4f~J zK@0KfkuNodA_*74pr96pC_{w}hefE8;tDH0-*mbQWdQ0qwypOFwmsB7ED&9eqpM)( zq``oSXERb$OTEFBbV{MJB+V}LSaJpixt-VK-`T|ft^QLNfWS8c(6gq-#s&2H>?T55 zzzK2yCrLaa>g;4FxlA5HWbqv*T2+IdY`U>r~Pw2J}LPSI61rNT8L?_oy?7- z|NSPx2!)pG05LCpOWjY4EQ}nFwvS|)`%~3j4XtyL+js8}-6Qw;Y53s+U4G5K_79wc zx9e_DzGlwzr`y5$j0>G$d#^DQs{QCf4o3QG@BM-d&mYWUPSU@KWbT!NV^I$W3iiP^ z^lFGykki44XxQ#O2yb(8Of8ymp`k#-*3o@eUecAWI*$pAODh7zA#-!{m2aH?yr%D` z+P;+M2wS&R2$_r3pMU9ws`s#`mQbOgp^=f10ViQ@+lP-~8$gS8NxVr^H8#$@C~bFb z^`v&oO2Jc*lb4j0ITKLHB=L4grfk_1FejyiI~V>9EB)YBHRQHfNma_ zg3E;+&NA0)y7O6+(7;qT%w%I_tCg$!<-nuUW9G^dS%d-8lwlQE%o0LgK%+Sr7`SJy zjG?4yy4EWIhcUCH(f&+vcb2&^l$7E1*L)y#Xp|NwpO!8;hX{S{KJM}fXkO2w>t3{; zA#yjiKoinKA5tZ^D1F7NW-98T_wmIqJoVN6Pfxk;hojdEI9@&TlwbHn5uVTEl6OEo zy8=4bx*(qKyJ3$Yqr|8!HA*Y4nnTaECd04_4z+j;ViGPMwK1wFy|Y<@Gz}5C+1bx4 zb)Ncp@zGG4(pDorWKb}Px|S9;CT5s!^tB02_a#+!CDTQhbsTjrF#M54)X}DfhK9wEFIEr|EURA8o}Iyz$X*mr(h~E8*5SR=AbDhc%f`hY{52KT5TMr;E?_ zT^E}tl36aFjn*u}D4>x@)J_}uI)Z_OBMc!NEiD5-)-9Ll)?H+rn08*!K43pA9b$v6 z9LT{+LHqk@x2UaG=f0tQfe=N~LxCf^x`s2l7P@w@dZh)2yq&u6#gEKENvbE}fxsLZ zro*N!KDW(mm#)h23psx@0Au6d*g-U-k_8&8Q0HblSt}!Hpnx!}>65~=Kq`SY^mN+L zvDR6T6}46Ty*^#RIfr;28a4xPRYz2JQ-&{(Ys|w7_c0ovKntCiVO0YI26)k(s`};i z__#P=dB%o=xYa_pRfFi4o|EL1C2XC~j99#U3ZS7AhX|e8!+iXs!^1!0+b_YY|1vFO zF7%ZkgJuwz5yeze7HwPB&x@#G88sn5cl&3dp`jTWIBt}R0v_{Kt{buFzMszF5O+kc zi;R{RGR?{A*wh1I=6U7G!qlwe*+%~2xw7b=9c-D!^SEEE=IU`?$fw78{@|%Lk-*gs zM`!WWE`YFx;f6K;1cg)(*&i5KPw(Q5h!+YY4v~Z@e##tUz812=i^!FbtLb_meQDR3 zmPaq(%&OG9EZQ@V8!~L3HftPu(wPPJnmDq`j)*_ufaL*k13ef1Z52xrPi{K<=1-u8 z4E%`XU{AxRmM4Y5`2!j@BO;rHlq6Ti2*W`9%5a4?L2@Q3UGiPV=A`K1cnv?=u8XZU z+FK0!)97=+%$ZbI1|bzHJT$;nBtd1A|1C%L-@$+X&sd^*EwbVCKfeK-S~zJfb>Zpf_m;(B z=l^t=-pUy|JEQGH^ukgfpnLKH>!v4&C%rkNZjds`SfAB zQLoFf;@w_6A)jPC0grKi;1@E<*XPqZ@bK&F>uj+U6%|zi0nhcn-60c3&T#;zgF_+e z_Izwd;C~c3;e3^kuJT9B1c#=LHwLpE7Zj0?AM}RqSnu4qV zhR7XerS@RkA{Hy9^)lh@7_)%69L|#HY`6@auh8W=o$l|od*K6 zg30zL_A$DD^NtgDw7t-7_`z5z2M$UTE&r$`LyvwDu#?5b-x-#+<+P{-e@FuZ4vdIW zzF-{7`?1hRCcsRhj^1z zp4d!G-1XpRCjOg0Y+nS=2C)1znsiSRu4B8wFFknLmnRG=^8=IQ?-kj^k$C8pn%xVxhd;TmyZ5diX&#C4tnu zybD*}Y)9eG5>;sI9wJQMt1WiRe3#wxbK!2*koW-w?t>|YwzlBC;TVteHQ=+_ZT}aB zBn&-ZK=`VXsg(R*&f9>u&Z9Budf)EXtE;PP^x7m%#7KbgZT`RURbM82G|wPvq(HRm zuof%D?9G3;$7Haw&qi;C{(1r-YJjNZDvPqV9%?%>St4U7QsA#wt96C8U=P1YDs^$+ ztp7Q|RNPwePY|w+YxRSM_k<2U;rj*m$jbgzMS$C5fDKAA7!qr2b9DJg-XXmS|CV6bgpmu1r`mj{py z5QD{_`hg{pc>I(f@Xn*&3`o0IbFVln7;e(wk=`tp*y|t>h<_@Ox={bwm5Q{Wm))wW zsi6?@uax}nAkuAD5PAPC1a5>*URObb7kNg@xPg65bDFGoB$NqBs7dVZN07LRc+gl_ zp^PJ>NHJ13&i@RciuSq+ye?$oEoc_$be2ZI+Ht<3!p}x^KX!)BTD>pso_6*NFoe3| z3T{5%%^A9X$~uB0QGvDPue0U-Fyd3cRHEU>#UkdQn?r(8Ol)l6Nk5*B^8AiI|HmagR7tj8E_ydUd$8~xiNvOHb`^)x+pv@dP2tNNxx(Fr^ zlTMTW>K8iwg!|>z=DE9G%@R}JE35Ax5f^O135T|>!a`C(LBYXS!$83L6a;4p__$}x zyLzq|Lcb$7=;kVX=n?cBlg@0>Yp0NpPm-_=yurb1fBw#;RkgJ5kjA7 zlz86mp^)>zZ|c}jYi<#ZJk}^DQW%?}zge$IqXkKmtb0N)kNsYvr(^-sRR8}>(+e0r z+X>@2ZiWuNZkxGBmQ8|i!M=Sr93L`<+Il$5+2<>%Z7Ezld@r=dvsaW3#j7@P#jW(- zH;&-;eb7H(((4R+vW}mCnFfJGt%0U(fMOf=`S)x(7iDXMo{~PcA6fTUaQf zlF}aoVm2E=%sUpty}F)Y0t)?QPabh?c@~$I9RVtZ@Qfq+chxE%U`KD!DKwHY8-bXC ze$m*5o&)Q9P&`h1zhZIO{NL`D^8|btwd;5OvmoG~<#;X3%xl14Dr9rI0cH&lL*Ox{ z|NM~$Ah~YaV9C!Qq6Dkw+Y>;+HLF?x8*UWv=BB8qSe#14?y=j{{cW`o-=UopnDC7M zneb~QG;MF8x7+z4Ko71)iR+B|{13-dQ8mwM3T_K>Qy(%%i348i0^aB*8iS%F%Wn%j zpkgS{yuuSd2E#sQtLyi+4W>wv1PPQd0bP57(G2outebm*sTRA#%#A9bKs7-@9j+&8 zne)3kx5u*|Q90#8t0U?5AG)QT#BeKi2x*J_Z#;i*=1JPb&p}B+Gl>8&@0Zpe%q(ye z-fMQ*2gKvBW~X)z$KEU&bFS)GZb( zHTb86-XHftBood66q4=Oi@P;g*Z0oLye1L?Yv6U53d9uI+)jHy7{Gufr>mP~)DH+9 z|Km=GLz~Z762*L(g3o!&vaOxn;-v&Yp%|jFWyfQ{ns8e-fCB+Hn3|^@{PX4hMg&k@@foy7Kt{;UAhLL>rL$@O{E1v*1mvRCK7y)>QT|p{i`}2>28do4{1bl1dZ8#!s(Yr~5HmCsD z*|@%_4om4Z84B;80{6aLKm{I7q$dyw@c!W~Eu-CB7BzzWUmXlkis8+GlUKVHqp{7)YR1QIet5|RaIR>Ig*BU0-Lk|_|7lc!~+-)Z5z&?LHzeC zW`J$>**W6|$!D@!TJPmpu=L4h|Q9f5&G?1GMV#@$vs-?XRP5wjw?v@UvyF);_yZdaO=Y7BLcm6nkoG}iA;c%ei z=GuF&J=dIbt!wYg{n=<@fvc$^74Y!O^(3Km;Q%9uILwA@8kT4V*`buMz&&aTnS$;^ z$!t>5B!}}gpS``G&Nc@%%0JB)z6K8vjROU&=n`;{ll46K*AP_vE>_h4EIJ^xSPX+; z!`?2rt`NI>v%L4O|EP=w`?Bh9heG4^Hu4~1e#`0?eGgR~7UET$V{*DpZ zNRYT&g*+}0O%<_ZK@+!MgFjBhxcN6oX3hqwp#%IfSOA~Gi4#hYZ?EN@m&BC1J;TZs z%{jGMa`;WK+uL$gFpJ?R{j7#)u zpEQIxVJ9IoD~r?_a)PP48=D~hgY7F4$ILyw(A3Rz(v8=GmcG7-%|b0S>?`>Uel9+~ z+en^erHauM4q9er+p~>+?lb^$dMYf;dM&)<KS3tH+y_If`0x)wUKOg{Y@AdKfjzhlYk)Hsa*i+1XQ@oZ{_j*L$P0*i8oj zc+tuyE9vW#Ufeb{@n?Lv?nEFp_=YV3#L*yFKT3J4$Gb~>e0-iIXBA1wp3hlc`FiPG zR_cH#(1pv&$?Z>k00ZB>Q5k;WmGatO)l&1 zdXMiv_k6?0u;s*fQ5XZ&2O8$F;54-LMcMx>9s>hI50I87eK9}}(o$1oQwBfK@3URHq+5teIkWyybudG;dyhkB20+}^Z`~D+Yk_4s;Co4iW`uqE%j52S7_Yfb1oLmD<kSzsn1$O4oOn{4h3wC`%=@;eL#hI!Vjd%*HALh48W1G0^QGst($4O&Lsz!oFL5> zw^P&ay7gwmsbJ>-(&7N16|e(=b{Vi~#g{Z9fFa?douh~dzsrais2)HkB)BTPNrgTl z03buo$Y>290sxb=?c~5>QL*N>Oz&DD2@E?UU!dP91T{w2=(0|@z7B>laagaHC z@TX4*jG_PalYb4nyXlYln>dThYUTnlS;WWtJbtCxG@^GMG$pRuVdLO{UJCFf^l;Mc z9o>39A^`l}%gf80xKKfB=c1O&86EHg0QqmSCRw9(9sXdyI3zd!{BE!_CU;dM^&9OC z$F|Xkc(a91z$3wVku~AvB4SI#fD}*j7%K^N7z*4UfGBdI|6 zH&8$iDay*G3VStO%W`027*1Gx-pqiw1B1$U!OT=nyi5^>s_e zhBFNU+~Q7CD4Cv_nhLDW8Sf2#Lk!%i_F!ZZtoGcR#Y3pG!95!Wz=^M#^>lPlpx)Ac5M;6V4hlT^`5uCql6FOh|583@g6!^HCMf1A7+0yB zS8X;-5Gh&Xc4`EbEZ}NOM@Zmhz1kH7SUL)}U`$7@O348r5%9i3U$1V2R>sB*I0=rM z_RA%gPV;-vB?{^M3y*Gq09(C2xt!G>b@&Sae%j~DMU$;1hq>^f!fqQx^B+Ub-_xC! ziOUIImNxqT2OrrL4ZYAIPVs;EudhPvM9q@2a(T>wwxT@?2P|-;n!yV4{jIZ zQeaMTccOS!rm~MY@YaFGhk>fMS;XPY>=TE->hX)wV~(l+B=EFbkhKh?1W~Vq8zVLK zW~>y6R<%i(_PhecS*3#PX1tvsAFS1Qw-3R=eoF)9$44yF3- zPe4*004h}Y`RZW){OSG}L05ayF@M><`!&=H=|MEM{XjP{2tQ$V)W|fL<$bs7b-gs3 zr=uuznefNR{cg8FT!Im?D_p#9Y3x7I-Pea=LiYu06vrInB0d7pTBrzkZDi z^_)L|)xub9YGvJog#xR54^%NB0f8rrH^@eS2nvjzx8aH>s%@}wa;Q2Z-R1^!rO12F z3YhEi6yZB#<*Io6pvITn_2#TgkgnqHz$gU*?Jn=zqgX=y1LO`;3>KtbSw z=)PG-uDD=@Zmm5-CkoZa0WZo;0)r8F%bviYi59w=1Kx>-n%XArGZ>NUqyo=tB3@S3 zdK~uY_0yKC1uL3(3$RZ`hoe|k17BA7{9n}U^fYm#FSwj)MX5xiq74{D6O)s$l&DUF z*4!eOQ!4wj75czFRWb&oqrBy8;Fr_3Bu0Ia;z*W=zV1Cd6tJD)p)NUsc1W6mg#e_i z@izyzMKbGKs1873^XUe1B_dih9G#qAjHUa;G}*%HaKT`+;BaPg7JzlY6sjIJYX-&K>EKKu5a55o$U$Vz z0^sgw&PgB<&i<}W;vcZEn-=t9xC#q<_r;Kds8a@%TmR|oJ7~$g_pZ2oaTHisj=}Ci z!(Me~tIN(d01Qsjt>~%94lRBW-NbZ zLyHND8ZZlb_|V?_fgsYa0j+$cAas({WGTxXy$o1gz(x@Q z?`D0q0>%oEmh?S00H^{)%2%)6mCzZ5@-OATQl5=M!()B_NVEZ%ZyK9%Fz7v#mp|}y zAvWaTWvS))SpxYO=Uv7#wQ!nWzfGe?@uvPmZP5$X&RD--ZQq||et@+chFyUN2L~iV z9`YdO$uGc6z^4*B%iD2g%a*+E^xgvRL$+xtiKN5(K0jTz?=1mg2-|_e(vtmj4%n|p z>l2vKYvF^2FDe!qM{F1I(mAMd=tp7JKmyG`;8%sKhB%o_uSA<*>c6ItzW zL3(dADM)b5dyf#u!CCh%yb?yy7l)qcv>-h;(B>lph(H8ipkn5~ZWa|}!uUQvY>TuN zN!=t5fa(m5LMj#mrQra=^Z4yto0kAoA!#xXC+E)P9oR9e1|w4E#-S9dSfZ+~f*>N+ z_<*aQ2^No=lk>(b$7#xiYWSb$_;Nz|L|&XK(s7j3a%Nhp^S`mhsTatx;)Vr;Dk5A6 z`De)jv@h6zphN)3XD_?&PP2VvBvk~u)O2BD8%_j^*5CW;^m;q~G zSWCbRn2YQm=ou4fs&TRC?i^O$6AF>!sxGeiX76_{AVT?I1Ahf(6llORt8wr2hyVHW z=k@YeJ1Tlfyh?@Of2^RWKEb(Ep)c~E@e8`2QT4c8?oF=%C~900-aB#%z z(aDKm#kl!YJFPSB9Z?EU4WtUjQYFT)mC)7WXBYZ%Jt^oK13StE?GyV)_&)RLq zU^+3bl_@3Xv8Jdz{92^49~b#aCV`NNq0}tr{}7fhi>QbhnKML_A#aEYaB&Ns0ChYm z067J0hiCAN1VWOualSUZa3TJN$sl@wa9N3nqhdo1KxcUO4!r%YTWtbdJUOWMy4I}* zo&KhSNnTI4+hCI4Sz5}<4uECkvHc6ML_&gJgHV?adt&g>FWYHL;ZALTm}lhx8ye`- z>(_uSmjWM^)qKyd;UNjns*){m@Ay};w%B?Aqka{z3hJ1Wh{S?!O09UeMu~m@-APk_7$Tq2 z7x?!0yUgtM%y(g$x!eeSxmj*`;vQLP$wR363 z7fMGr9Mo5{(`Uyzh+;~EC$*#ACq+kp4>L*Muw z1lY?XAhY$FOfO7c;L8E9wkq`6Z@1EbwPjwVd3C(vGp(lK1&9lI!C%UMxe?6aVPW%4 zE>`ijx9ny^$)Iknp{jbL=ltuFToTiKyN?f+A*JWpcYSX@#|`PRtO>Wwb`W8J{s1qT zXw`T*g4FXw^k3$)Xw6&0TfwtFN)Q(>giTy%%v_6$p!*gXTUQKYLV2%gTxUDuOW{SI z9J?4$g>5Mk$<6>Mfyw|j%-Z_80?j1I(RRR12S~`-@5Tc709P9Hs#rGm@8t(J-Jf5t zkAPTMK3Zx9iNf7HeBu#?yIto^Vy*s{t_vj5_5PuuPe7&vE&|R5A2K@!MYBe*+rWsV zKJwK)@Eq1V{T3TMpO+jIm<4VK*5?HMs1-Y;F;en{) zblIB%(iZIK1dt6Pa`D{u7py8?dup|e4HR%-OpMHj5>W-b_A`E^|xeo+rrBVvKQAtq*5|ehm{76K_ZacU(_4g4F-3uD8@fg6V|lz$Ddh zzmTSN2BCx<|ETt{{P|s?Wib_$2QgoDS1sGLT8pOQ;yr*dz%Gq=P~R3$+5})cnjyeL zL(_Ad)VsdB)ZDO=FKzFasQ8&eUN_{|^f+)_+rXZ@ki0UX9@je;!6^7L^|vvg-|~ z%*fIU3P%-Qyy1j%B~$5s@9`_Uc5~tX*UzyEQ(z%Qhw;BnAc5zI|EERr|J()g|IQOx zg)st#&zlg+6A$3g-d*lHIXTGz!vM>03OcPj>@6*~^^MQfk-$jA+7s!`z7R+Ay@hKp zach7xBo8^9cwE|=%+gvpo-QyM67Lz0XH1m@F}^Jt*L+J@pR8HMD2)KUO6TvKC(YOR zMBfaq26;T?`;bS3_m<5e6O9z@!8#>l>GAKuJ%@nlS^~YwOsUp+BJst_4)8O)K&|j8 zi1^y$zKb;-^pyZw0%GajuJ2O-LEmk==f^0NUgBN{qU|&zP$B&Fi8)37sObc-t-YBt z9Z=l=z`vUZRDOfywB^aaPEcsx^H#BP>jjaQ^iD?)l#*|w0V3>Hp@AH9k{MQ^+guM4 z832Y`+rcdNtrV~?U61~{0~y#0d#_y}TwFW@i#z+S#eQw1myfF^tsq5rT3a>)Gt z6@b7yE>QOXJqj-p3?cd4=P-|`(f+RkQLjTA9}oiV2RLL=Btmxp-z=A!F0CqB)s>a2 zK<~?}-q&Hg8Xffdg2$u6x@BNggX+SQF?X77y>-gAJ1Bkv^clj|_;ebO@dgZ3Xp*M~ zTqm^*uApIV{O1p*3jFT<+kiFzsldmT`}y&!(2n<8ID@iQU@v@Qdl6`Qt`CZN;3niO z2n8F!7aa6_NU8epNDm7xg=F}^_Of7;WQu12I4%|&lwP?c~GYU z>eJ%s;TDvRjlt2o<*io>x}(=?5iBHJmQw&D3*=KAH)5rhfz6B%_n)Cd8GwZaLx%?S zfeD~#KQU{xZvYPo&i+L@E7$HP%`AX+i&t^{F~lH+p!_SX8ClrxebfeZY+sO5r&;<# zl2^bnpsoTtwCw@b&<9y}2yd&w&L4T5{IBGWs&FTD&y$y|{eA z`n%5#JO26$ymPM=eenC+;`l)pkcuQoZ2wkQSNB6Q66OT7>}-IUKdggrnhqp9^nwBQ zUq6Dv2&wc)`;H8sJ2R0hc>Z*|7dPz|fNa?_u#}fUV+!E@V4A#hoZr~@`q=U6`HU48 z7sHB}!y?TP@;RCabAwWW1&|i)shlZ%X~V$Y0PpDAyiOk}|I+LQ*z3murxCu-qwi)* zwcbYj0hU+OtTRx#;SmuUrJBm^Ccw{vI0IV9;e;1lq-qIV-Ak*I;$nZYM!+`FsJ8Vl z^3nxoHUGR!@6$EDF);ID8Os}Uz578-)dSyyv7)8Ava-^TxSJJJ=+BDPO4@d!p7q|+ z$oG-fW@rCfNj`YlKOi>%A*Dp`GQzjb^r_JvxEA^fsiNqg0FQ|VIo~hu*Y@GplTL(4 zHXwGFoz~wF^QSuw(7$9nPzgGh`_lSyu#?l)(C*(~PLEf>9(|`>tJ&(o*h>D7WP48;cGWC9>eN2Y$@)Pe7xLcU_`Tk}0ms`I!fLlNc8+D|@@i=7Y> zkIiy%D+?YqebgYUj?TvRC0?s%WyD5cEIT%~$^feJ)Ufqp${LOD+L! zf^9FI9YeQ%SqUnmLF?ejqR!jxMn9zA7Ec0Ck*CEN#LE#F^Gh}U<$=IFN_)NRzBeYl z!1;j!*wEc>Kjvk)1$PMHwi&WNzm%a=l$Yy)Y9XjC zeu=Ck?EAkxs)#LUUjP;g3AgoJISQaxhz205Udn;ePsQ>sF#U#EPd*b2r(qK$##sCt>U3+O7^62Tk?y(aoPI`=@4`v`_1qJXOmIJWHJ34>us=wt`_o1)_h~{W1^o z@j3pR?vnw=iqfJYdS+&t+?RJeJ@VWL3^P)fDdpxMmD^Q#VBl)DQ^ogN zgP;eahz4N*Hu!boLVF9PFQ}|^i&TJe4T2-`ZNN)A%6o3%_h>>F=)NyTi`3Btz@r(K zXUhp9LAR3^g=wGqwbcvgFZfCzc3O|(^p^nw2CK9kHSLppJ*Z0I`1}T+Jxv+-0Dw7k+*F*GX96+@2r=1$Nhu-+2t#5M@S58n z5A8_ZM$k6$(ntA1e>A=9#HjOWJdj~v(F7|OyFecqLPxpr+~#XM)@+Rmz1MkP$OKyO z85x}urK9*%mvwE+IOdH^U9sXwYydLbRMYB=Cb5vgd zOlu;kX04!s$Q#(d_xu?iU`}RgtOK_i8vPChjX`GY zDUT!`prb$(9n23cLgqQFAbmmR|L_GLeNddsgf$>EK65GA&Tw6RxIK?#8+swl;CotX z8WaRbL1qF?ns*Ye54o#uSP~%3gN96Ej+YCR?}@j1clsu^x6wR+Gcy7Tx#1L6hk*Bc zUzX_W0^9y8$+2*IMSxuca_UsdDOX+HrRm; z3>uecazW+78!X|kPqsku!M;Kz%O$jHanSGAwo(K{24KkwNRQVmKF_)WU=@4@?LKK~ z-GUvu+3+$%{}r#`MQ~xvYmqi8)zo*e^6Q*PUCq7 zpOUshwqkl-TvC3QE8snD?>U(CPPh3B{8+7p3OSrFz$_iB)umbQ=Vnj9U0%kR0m1+@y*+?2y1a~$CBFY*M@l5_ zBaD(Pv^k(JneKC3T4k4dX>y>MmAw5FRFw(fM1hZ_tQ@=T{xZ(YlzEPAgzABLTq7RV zJP>8;p0F=XvH(8a0581yge@@+n9WRuzP^&u7yy0Xb8Q$8Ki++J{rerPn>oNW5FBIT zXhH{--B&JSpnhJa-!2?0T?-Nh*r&}dP7k?APqgg6^wW6kNC0I4neNQcxs_v7(CK$5 z25>HSZ5Mg$??E{7gDkbTw+Av95y+OeI}d|%pa}-J_3`~1G34TL{Tt9*EvsrDVE-pM ztsolWec79`IQskRR?Ge!#uEBt5v_VZDd= zK=8lYR}IJ%id-;%jrpwzv$R>BjtdqAb>`!1D2JCWjb5)e9`pt15z4E=UseHp6G8ru zzjOYV=)7>9fS&)30sJ4QvHyub@bfnW|3&K;z!qKa`p=VshvhT>pUDD0M~M9I&U``0 zY=_mx|NTY(FF*Xpn=h}x2P4+cSeHdwrli0nL;EHhF)Zg*Rs~|oXY2CN+Ap<3o%}*; z+2+n#{6dO{iq7^PDj@6}1t~#<8y1Q~Uc$!RMbjz;A4-&+BNjeD6b^lJHk+9my)R^? zy78Cqzl@?odC$*Dt|ac?f8Ku6(H!(|&`^hz$`N40!jQpJlkJ^_HZ3tuPGhGy(!`JY zD~g`4sZ(UpYeFGtuPA>{Y-(YBe;YsgIp)2~cZBS_!(`~HEUN?Fktepf4tA#Q4Uwb5 z@;(S3qCXdP(OO^@7MU+%?Rj+6-V?z-a&_>e)Y6K>)3f{MaT%x|4x?=V|D| zjL0I4G}b<-3&_IxsStv|mS)wEv)JC za9t6Jl1lB=HM*%ba)rX6s6(C!eZ#ki5a(&FsAP6qHVAqCPDr9%!`5RI?J)si2U-6X z0)OxQhTQ-)qc0SLA^;>HfrM7jYhaoa#GnChOKnAqbGG~KB@K|N|v04 z5B-%jx#u!90Zs?=G}e1*ZJmq_-!RTjyx(}}tT2^IIdvqOT82!q25T{a!DJl>?l_gG z6jpo19}rb>%NTe15b32mkTo?skYfU=7|&K4F<4n)lwuH8*ZB2+f5w&rDChL)v1gRj zW2AyYM|7A7p?`YKi#qg5{}L){Pa z3bj%ywZj(vOv?Xr(!^>Ps=G(_kfilbr$JjZ6 zsa5<{R}Kn}Y(Mn_Iuznv>2QA=9=mp`bYKo{FvVxeA0}kqC=k&Dm};@9`rV35PP2uj zShN~StFKg8h|P?x6O^Rye#KSMMhRa7j`J#mx_Y_(aB;Akfs#5eysGISa1iqo**7XN zh(SjUgoz1BoC*($(9r33reSBQ#LZf*hQ2PFLwrM7>E0xSW(eLemCG|Re)UU&P1yp` zjM=Ebkv}&zahRYHA;(mXOpW-$m$U|h@t^=n@9jn>K}O>R%B0`2bkPLfA+KM(r#f5Z z#qfie)Ybdpg`1 zrw(I!!-OV;E?0@cIFJ=54ql4_oef;30EJ^h8NTJozMVKgNQU#vhPRsV7sWuLqZSm&JXk8*MsQjlH7%yJkdYz$Xk0N5A0Sn)z{z+Lad&Yr zTV}IOO*+bxQXA$xvk_i+nl1iH28U@5lS&%m8-(4btV=l-`VIa**zgKPZxXS*BL zLyi7$=ZI>$rBG*CZ5)%tfg1&z$+Y&b`@ZD?ZxhxKHcM#f2q&bSWyq6aDds*Wl47T-b~L)~He%6c9g=C{b9rueYFyZ%Nb?i&^pl{j7{ z912X|n#%d)s5P_wC>y8m z3AXc%rUu8*!tO@fqb3JjL_C!XF?JeiOAzed%Z9= z&hJUiDsc9r>{9ml|DYdNXm{Lt*xS4;Xy|*{ffx#udXjEdEU}Dw_~oskt^Fs5$A99{ zB6&M8aDt>HS{3D^RDPmV=Z}FyBVQP^Ty%$c;GkjUUtbuT*kfCcG}%HTi>ESEZl*S% zy`nCR=_T3>So{37kfD)Y6vMMo6ppo@8aS z&$Ys5b+hO>xpL?6T4Ut7)>8)}$zXG)z#>Wpk8>NMf}>=BL@pZRYd~?jRKwC%<}An< zV1#Y@EiqUI&&1fUTHvzfc0%OM9=B4J0Sf6y0t&P-J;VGlCQ#vGX*c@216b*~&f^CQ zow0f)oOreBPM9R6**1<9iRliASo_Hpidrr^r4?=B2d2k7RYG^?MPrH)cS%I@P$bkJ z*}C(Gyw4V%>+YoIasFmEI)(rJImWKz? zpFLYFZVb!N6g#YT)DkJ^v?7KIR- z6N&v7I2E34AnO0VOU&GqQT1o&sB3N+qnTx_v)H+ z+HQ8u$^jqyA3I);zZM*NZ)u7K2vuKPk$;=r#LYKpj-NI} zb;953+Ty7H?(`fl^XA>7qkW9Uf=nQi8zjthAxBCb-#gX3ZC2D4a-SLKuhAG<(9@bP zc5gNj{3*>fWz>5_^yq8Q`Kl+T?J9GnrTOBpVYa1?L0j$Zpeeko-O}TRH?1r-C3!yq zA_SAnZAQ(5Z{)iKl;|9*#*RBoz4M>7TGFa2Nnf&3a`CRXI#xLH(6AIH7)2AOd4`OX z7W0|$)@VCSMsgafcfJ|NuUric!#Gr%t$WWt%RTF@Yiy{Fz;Ua_B3aWp=48!lwi+(1 zSr7{A&el17?>G;Af6MJB24QvL9?fWS)K04AXXV4*gycQa(K>F<6W1gSKRFK;NRjX- zOUGdI*1n0-I!NoKuz9xdlWlVNwFg2V0Uc2ua&H= zDs*zx%AY^kC$<9&LoPY4{pl)PEon?^CK=N{RtbnUxa6lx?qc8TcT#FKAL;NFvUMHq zFkOb1=Jv8eI3Zy!lLHkU#Z>_0JpWKww++1LT23UgK7To{FxXI`U2FTNUOwMF9>)QP z-AF>c+83QX8`?CqtlzPAD;`^|L}ULs;f>l7m4Ic${#%9CFd z^wRIeT$D{`(B5fQHQ5XuG74*P{c={PQuxv15WpFK!YNa;Pv{6-TM3vA72m$AeTTWY z=3UR*?AP*O4pGkGGWhLgdKdTy|15d@G-7X*<} zO}{{Ps;W$~Vq|PU>4f6wjA88xW_aB4*I*X9ZOK&^Ep#@|RU@2TemoQ6A2Uo|Z2a=* z8g=*K`a>(#eK^=pkIkE_ViJkn7&>#&`r=`GiAknJ#y{c z>80YZ`+^+yMlmGBBzlph`Sy3zBOM{83}QVD|BCt_|5A+|c--sf8CttGoSD8)Y^p-BhVe*S0+T;#Mf?dU$ zhr`pXJrL-gZ?Us?E}NGJ$ifX)QXXf*r{&;upz9&zfqQEFH8tyM{^*>XEpktM{`%TBS4AXNON=9)F;|;6s3+0 zni=KS8l5KJ`&{(OJCvV zx7}b0LHa4=me)ccj!~?qr90D@?{8&kv|!JS!E!WtIF^~wJdeJC072!3qmxFWfTkc% zS!1Z|H&Lq}n)Ti<947w0;=V>s>%k>l^$)S9hKv1i!T-B{^7D`YY5V6Eli42P8d3Lh zvT(Z3uY1+bHZlv+#~*8J-iQeKZFs{t4xp{sLgO$Q()&TyH76$#GWpgw@%eN!A-Vd4 z;!bsHq&D}3>{@#9w-;T_%y<)*$u%C4g03BOv74>J_r$%oVsn}ph=U|5orc8sPb(=R zx0@=nzjdf;`ZS5FqAeAsW8Zu{rIV9M`Ny%glS4o~+_lg{Y4|mnvVDK;l64E;NX`x{I~*9OS}RRx9dejQY9{W~YOZ-ok5pFo^JqtYu6( ztBE&;^{-y}2Ug{`z2k+|O1bTQ*#7Fe=cL{q>k#Fxj)7s)_BzLE;!3|eXkB0Sktwiw zNPeg7e#8fQ^mq7NG-H~n*9^vIgaAo;O=wnhf3Z1^`!^v`Ya63(U+*frqjkAl=zFUn z>PSVFUZZy^xC$$u+J5O83dD1SQ|$$xZF%y1SPPC~elH>YcpLIu5ni%oopF9}uV^Qw zC26W|r}eN}z5A$rfq4*c9@*NDsaZ*(qTY6t5xpYQTWs>Fuhv=(e~}=Jng_q6w z9^8GV}gvvi@XYEVDFi< zs(ysF2r&P;FZ>`*5ig!iUc@fT^0)e8q~R#J)z;&kMz$|pSEOl4R@$BQTrfp41WTZ1 zv2tJP(;~$Tvzf|J^(sOR^-Se0^kS#)D+}2k%mPw}o~4TA#Mk0KHY+JVFjUNaY;ue` zoj@h_a9j)TC)D_k{c&>jG5EH;(jlGY-3k^nECkh`XJ^d2_sh}qNKa8Nlsa1g`nlIz z#`1UOG^tNl&Fu`eMR6uS-V6)eh5m^(!TE^1)#T1oR!1eQLD`9nPiSV~LRM|jEoLtF zdjL~Yvs>Qcs+H{HOczAu(cpp)9tBk2aDRuh3rkVeox;IW-lN$NxG8*$ z{91P)Dfd};AW<47GI%UPyzqrcQ5`%6Eg4StxYzGIvio5USy-m+_7(W`y8 zo=90)AM8Jdr~j?_xjcWONBfnY;SW9CI|#qjCmqVtTsQy6yOr(x;=JnHaozV!P-rBO zZw`-t+HX54H7xtpRPUP$e5~T?#P)mG6XkKUJb#~z7wFAbXWKw#1hT(~Mx96ILqip} zZP(86frcVMr_9E;pGj-M)waZ2?}1a&g|Wm(*3{wcE&esa2+j_ixB zV)-Ytj&Drg zwgVEh9MhbCCl%iBgyT}9Z2TlLxP&=(`t*Rop!KhRZY4F0K2Lridwv}SMX5=^7zR;L z{W?s^ljo#k%J4U~EKFr$<|E2{OA6C3kArCkmJxLnoXooeikkZo0sXhtws*YBJV$kN zE|G9#Fs~@k--|qtyHL(X5eXdKe>|FtEnFsN6wgW7&5D0!yUH7^PS4bAs&tQ!>t3iu zMYT35{cd1^Z@7S`*kh248d!_|>Q>8+X%j6SOQv3$d^*oGzVk=0xopMX+KT`*&^=M5 z<60})GbqFIK9ct!=Jb!keFNjpmu*v5-IIT&r2DrtAGnHGO)>c=dfsYTmBFDRaI+qe zo1q8A6cX-rIC4$2dw`o}n9rj39jyJ0`Ab?g8N%~=d&pD>r&TRJo|s^zyjJ^;D!iXE zn{_YHF66QE=P+E(*5hbKe&WrM&_#9Z4?C}2G*Q2SIVCt@YbKlONUGbUbs}31Q=V3* zQLDH5dlRJ!YRq4aqE*^m*U+#M(8a72AhKTNE!bpYONwMPc_bzZ15&eyPPL=m>(u(Lb6IVtLl{q@;-&F@xK0dXP*v@B3)m3>mX+UF9(4eJi#+8 zUvrIqa2ECOcBpn}r+HM|b+Tl~-=8Y`UK_N1EwE^;Sf$nzECzv;<{?!3n)s4~d*;Qq zKG&l08HHLiGhG-Nj%crFPT=&!oaV8oAo`giy^p){v=O&>t%diVwUnIEbA^<9L-jo? zKE)wn;`nb8O--nw;Lv2aGwgqHr7%AmQyJ$hEBy_iOppkAI8wj)8i~gt;V4y_;3w@h zxi|5iSan90R)>r}e*Ak2%eev*(Fdb76DNeJM}?7E-TtA?j)dibx4Fe~eP$+7fN1eL z?>NgftisbwT?`4cx$f8*O>x`Gu>D+u-H%THPaLI|>L+&Vv6zkePw|i+iD|R@y!aMx z_0~eawCdpSxHnup?q|0CG@j*FAna}U+Qd-o>AIy;CE4Ev@$*-er-JT>ys9Ltj{C-% zBu0Z1;~z$mL%|YdQlgsXm+`9Mow58P$ku-97 zKfs!ApGaV$8rD^6RYDIo@eM-x_nK(gu@N47>_@R{=`t6qA8OW^XzflM%F!~XB-2+2 zx{kT)eV}*q{VunS=}iQA6=Oi2Z19r{1|6Ie`0iHn#`hzj z4#re4z=^WHO@2Kn{brx9RDTgV^D-N1?ST`Xi7DRH3ObGS{Ey^8>_;VVCpN@vJKc7q zbHf|^&<`3BorB3>zo0Uhnm&PiN{RV%31!A<;z;-zooy}=va;JK+LQhc-vTdOqgHGQ`=SJCWJ|5K~a?=z0k8r5jv zysfLs%5vB&$_S~qTFOKXMDM{P|B@9F0BuBPA54K1j1iirps(Z>`oFyZhyj{V&vEh0 zkGqc=c4_Trza@Jg{v8ay`a--RQT3k2bJWFTY{Ytj-N{Qd5HI@(B^UHkyw!XDLNBKU~_L*F=xAoK}XDwHTFSVKc-w@R3L zTS-pJT%u{)X&s;EhhY^nAN#9t4sVxJbM72kYH4$BnBQHRvB8zpyKAagJYoTfn|Z8y zIVXCl7tY&PWj{YEwmx`{j8>r``jRsx_+hZ#exMzKF_5Svs(M3@+LBzFhC;V8l0+34 zRE1^1&RyFU+KtXcMqSkR5#n+zn-S0t@?oKsQniyMV=*BcBC2LJ%;<;vd(y1t;fP(Q zD53s90SeO)V(*@e?Z0DDa+viPghkj|D2fa-bL;pAsU^J6@Mp&^^dcbwlu%f5okeeK zJaj!)N1reLm6h>eC)ItMSnzB#J8g+XIrh4TPLpPNr&C$@mu?lQq_FC`C)G7IQgO*` z*DmFq3b=Y&?7e>uq6s`c%=GYq#ZOav6H3uaNraA{D^H@LN^XxgR+9?DcW$<~Gw)zi z>%%0b2o#P*sD~z&$N3yyOmmT^X}?BW-8arR<@xcgSVnLfcuAU zj+9oZRj#MkdM4%5c6VBJjkd=Z_$@d#Q=YX83IpQ8G&E0TX4iwA-%OR zOGGF6GIG_8o&*kU7n8+tIn<_R$I3U|8kdQFZ09*HjZ+KjsnYl?1WtjBb`R-M+!tap ze4B}im_x3JvgvSi_SR?arv>iow_@;0f%1t<9)lv!ZfAAfdQCQKr8Z9Q@YxL*WmMSZ zCMZhgq*1EjV*DaC@2Z_`cB7y-CsZ8HsQ0$yMih&aMod(Zbtcp5ZQcpgb{n!~P%xhT z;P;#RL#+?0^8+MIP%(Yc^D===VMXV5bpt<$XIt%uC7Zd${_G|GEHPsq#8Fn`Z*~|T z$az#mRe*~zrJ<0CdpA3bsC2Ecy_DL;J2I;xEL{)BxW{jV2}_l&TCIHAPn*8LuO?_b z(3~D>S2E}A*05aR!>OzyDI3`#nQ7XuEm6v=tL5T$FRqhR`wi|g;iIWTSb^D{6vgG++8LP}f<^bWm$Uyk6b$;^gGlMnXzO*FP=s-syok3371eQ6)>yHC;ogc&d za-zbJuh zH!c-?D16Ar+{+>$h>*M(qT1BxL7X@+(xq)*_iNgsSxt_<%JMph1>d8!Jd5X7N zjxeeXRZgtG>^;$LMRb*Ct5x1>W@MrKmBg}*7H)mKbl_rNY7yglmWJ2bGO}Z2;8rbf zwd(3V_7Sujk26Kd9~Lk>VS}L}EAsX)zaz=9^=H~{hl=M)(%gPV#xtmdAMLLm$d|reAI`9;TEOuaFsTZ@vU{p_ zuT##C)qi+=%Pi-pyq;~5U+r;rR-{Z}L~a-sNbWx+Mu067JUXPF`tNV&%I;*2D-l~Y zX6A|Xj3oAPLffo)yiA&beZ{H|-luI1Bv zCTn&=#uk8A(50?|yFFblLnAx1ze8oAt0t3m~BU_4m&Y3$F<^GN)Y8V?n9C zlLsPCL1lr3(wU8@te(fH{Pg>G@3GryJ!i2eMS>P5J53Kv-zz4LC#0ni?z2?cH&_Wq zk8!H`6HVPiL#f{BNSnH~s${LJZrl0={w`uly)sn5esKa0avCy^WU2VzO~30+@tm{@b*SIiZs)mfzL=&pX2 z{V1F6^LMw`nYYxb+4fM*qmT|AiV20jtX`D|N9*w>?5H*7ysj6jrgjE-1k)%kuk3z; z;T4?dO#z9|7n(tyzdq*&MJjep4^7R>KIUrk$o?^sjw9ODQ1X6{oDGjnAwI67$<0j- zd$1T#N_yUvuoOw*)OgmSmv*s@<;U3c{xM_DJ(V>9aZ>|lrV%9~47$JEu0otvafA8n zG>?BsW%*pbzSf&1N z8s2S8@zxg}>#NWr$#VPBzlnhqdghz)s_*&M%25pXT&#(q+wb|=^Drj@^Uxb+VuF!X zxXn0Hs%eT;tGhl4orR->=p{|bpgGW#L|*1upD+*xlhZLmOLBh>q!ratoDsgdzGp;} z!2hC2j`RIpa-)&#t6U?e>9EJ>OD$hflQObd#y<{M(PW+};~0MHnN(IO{j%nre8jhz z3+Y9k4ih?e}&&Q9OlRlTfT^Q@_*#G=r0DM4$zeb2qb3`0PvL=ficmMUC zZykBYz|I4R15n^eh3e3c`^M)`>T0ffW%fTGpK!0#Ra6}o6vdJ9YjT!CZ^YrJ^&UJZ zo+~6YVyJv~Of6wyC9yP$EE&?DhTET*KHfCZq8f1$)uLv5DtpW2zw?mv5VNp3q%)|# z>am{-f;G^ZWuPFmArnfCcxJ-9S4R#!E$;h7!q`xVfF)`<`|iR?>#`fe0v+nigq5$A zKTz}CBQH6z@6bkmk?V!>b>PDBJy2auwm|+-YBh`&VH(xdsGPrgUZPg%?WTRZ))9Nh zbw28{ORj3!;m{<4!Z4TfV60G58Do|3tg)YOJI?t^M)$>c{u>BlQh)_(0whZ&KmQ03 zuq;IsJL}YQ8>QlRK6OWx&3$Xg@P}T1$e0KjjffLTU;8#!lT`(=>_F~<@z{G(KbIcJb5)?~#v7qpxzl>c|z9tpKYO^LOnzwAx zY|QBw75=Q??mO>VzhPC!c7Zl1PR6f1XY`+5yw${v$?4Fu91)`UVNC}tUcMkGA<}x> zCBJUM#Xbj?$mCyJ5tS6Q>QLN$W_oG7`AC|2wTjBW;8-^hfqbQ1!nSv9$ z91~B(ii=AwKjSBB%T`}|%MW<9{lB05dT^H`6DA6nH8er^vfG!*7HzJ>2WXK)K)xw>-TSAFy))5(yo`xah!c3NmZGemD|_1 zZqu>`IZqe@)!4|FNl$v#W;WUK(y|qOdmPcKU7Kzl+FW|iRT)1FW8j!&Ng%|dBs9Oh zXnLc6-uw27DNinXsYml3mkz&#Y^-PNuDzOcjz`2Iw|M=6v3LA%dv2?xw8=)T8m0R7 z7?dh(HhAdpPq%Dsk%@h}W5*LuKHTNEeTtHedsVSzNvHiifWVN+fc* zc&+dVl}R&k$D-T+cHbYqH%=L_^ww9czvl64DohoNT;Tbk&!N^zz)Iv~sD)XuasJ%J zbI$C4ngqy`)=~|!rJGA1dHazt6-C-`3TZDht8B)SM;HIC>0^Bl>6_xXPc9lf$lMLs zU45{e@5{*y5)>jg{*5Q+tev%L`^QwRw4kD5kt?q~{P@GVc4*~6RvTUICmw(MpTgMh zojf8Yy?ivomZ`3NC+};a${VjlTY3#F7aDp3B; z`L;B{iqHfkLJt`-%yP!OIa_yB`H6ViPx`?}P3HV#>JvtBL2bPFw-tgd!C5JSjAk<-vAhJ*cy9^q2)agkf zUz+(`HOfJ@^rH`7nDauGym%C6js&!1PqQy_UM%KkQ1$GB*K;DP8)JKB`pjqM#AKsR zg&oIVb$=(XWW~mnzyI@ZHg4U>Md8>Bzh4v-Jo)A`8K2X-{Kn^gx1suz!mTo=I2IIT zu|p$dAp|Q0k`NRT#l)6y(~lqc@#>o8R!6=;Jn5w?qFAypZ{c-lD zd7;eu0ZbUOR0xzcApl5g$YdmG=$(yEthF{RYag5PP_3$rYzPHpp{=fwRUET5vN9`b z6YyL#c+l;619qA2{Xc?t`Df<~lHHqcG>`}0$MOT%tl?A%`PyrnA8$E7Tq(mE1~G_d zE}1@K)6{gPnmqVTz4=wERYHxKH14MpZfME{BaS*};RlPlw(N4tk8clzWWzcNJ>~D# z)5<+Lo&O3J2nBfzX#j>|QqpQ7R#1Rv36_l20psJXpWHY3Y4#124vIZlmJu|;lzO_M23B4NUH_X-~@ES@Az=Vl4WI!Ha+`d zM7V#|>$L@#xOL{+FVATG?t}LX`|aQ^M>T8Is_tdjXT@AykCdHdk&w(uvfsJs@{3MA zy?@IVciwp8damhx%yAxlx?uBsq(ddGjkNJZqDhMoJ~N33LRhVgf$^a7qdB-9ozDNF z-JjW?ixhTy$nWwH-(^{TJZ;^&Wt09x`rQ83JsGdki;>Yy8Xtb?o z_s%WIJEUEgj+vIe*Qh8;^>5XA#J5gYh)JZ<&{?W@f6=?YdiompStghS{eSk}JKU=3 z+W#J7%(>bwr^BI3l_pg|RInfxM2!;cSW`@5i7lFFVlOGi-eMGuT~zE{5qkp_k={E8 zICZyG<{abq$376_y}x_k=Y3vt-=YIUz=s_d)o_N|_uit;m%l8){0Y@!d)qs&u1=wQAXqO$>cgUzdb(s{D2o!*? zSp!?^@>fj@F1Y`k<@tpPheBv|riHydM~t1^cfaWe9{0QDK4JdCL0WYcDp&qD264SgMkr z-S(qX_C58oqkrpz_pM(X|3mQ9afkWd`48c^>`3CuPL&1jOvOOEMc_ z(&X4g0T4nt&Bu@kh-%;6RUlvm1W9ANshbE{16F~977;}t2LKv86OtdeF>#66TBdrp zsL{lPfMiLhoI+8ap8evC^Y0zkZ}$wO2$Udto(4o=*-^TQ2-G1Q@8Ew0L)N1f3)aNs1{k3(IaQ|aomb!ACEMLMgv%Q< zNdaoYRw+VCLQ24Kn>dGpDj`sqh#{pFqr_Gma#&|0(%L1Ry7c6$7OnsM+!+@x4GY?d z<}7&S7o6W#;^j-1I*qx;`p{HUl1ML6kG%6_(i1|Pq?3ws_C0(00jC@AV@!TA{fvFj zoV@w5-;L?E*YpEUCO`x6f^}cddg}?TB2oMaESme!1&-x@z59HgTQu&O z1yv@CBCme++QRi;pZLS+9;94g4H|(QaENz^@5_5}Woc?hv1bS0H}YSmy1sMlKW;w% z{ewFnjJPwZ7TKA+6F?*eupk-;jU^zk78C-CC@lhH0mxcP7_1f$23B4INDO&wqME&!H1{-@m1~P!aZYZO(Ob1sxT|cy7uRivpN)jDz&{H*f#O zs-s36arhpGxF|{jV%cCCe*NHOiyIaeb?7ImCaF03pi{f`9yFp?|Ho(D^XtdvJ-6WP zTc%&Nt*y@`_g%+ci6t@-qd=_5(G+uxp2J1fKw{8F6d4C3AR+K%b>pJhi(V+Xkzql` zvNjJDfabO^Z?oq0C9j>@aQu+k-9Uo@42|(rN&}!35HLyT1TJ)R9Q*$H58*hX0Ll)5 zvml^IS#3e>&LHjfe^3sJcZBKu|M12ySZ)r@fB>kz$APcSd2vX$UAt!M#*WACy#gHG(VwwR->zM z$8UkOa|Cx7s&w$b1_W@*e|@VKkzmKTCJ+!wgkAs01CJdtX6(=I{Kfj_P|39I42+aUL84 z2IFp8u;jaUT{3ak@jW~B z@G&4%AV@on53xfU*TMgPkoGP-I~1VbS~s?L!)g!Hai*}AW-$3Q?ar6Yn?aU6HU_E2?& zk}Hi44<0;jaC*=Y2mjQiVgfDK&HU4bxXq7gP4kMcTNWh&aAM;$&RX`$TgyMX>FL{V z{^hOxx(sUE+Hn3u7k{|+gUXEFYtWv14%(|evr8hu^$+~n$52sI-p>`%^5vSjH@$jG za|%nU`8oX%$v;NrgV?Y~rq5G5=5NueRuw z$o}N)Gp>GO^iSP6dK`{C%Lesbhb z6>0@m*ji!Zs06IbPOpkC6Z(&SOV4YSY-MwH&r!pdZuJ_S|VdGDjcA{2V@4T7s$Z&Mf!9N28 z*^x8**05{e(FOoOZnshb6p(M}RNJ?@8H|N;Ujsl;07T`K-;U=ga{{E$8jeHBsyu{O zJbFzFwQP#k&0X=C#e@;HMG<6FAW9i^i`sNSdlgsy=CH0V;oB8=cV5t+&! z!B#4gCoCe6ytQg}^oY6RXEz5FB;pcjWOi+$RO^$oA1cO$jO#%hBnEhM9C%(^5SeaZ zQV20EYuWnxqIm=M8rqf9Xw%?S{`rI(i)cM#=5G1yx#e%%@#bH_A*+B>&}?&y<8|jf zbm>JWTyn>Kx2{~J99wr^1>hO*kcPE`Nz{>`$0r#V?ct?G_Pq`xVCw1g2c+5HTT7LR=%Ao`KJs!;j-zMI^d#Ugly3w zBrZ5;0RZyE3YnuEIGO6e@7}-ms(0?DBp$oxUQ-7ha?JQc@0j(sNAG^HK3%=7u&usJ z_dovRhW`DAF>`=E3Vtgc-a!ZdvRLFu8=Xi>d74tgx{e)HKkCeVPrmn=JKtXUe%scs z#THmNK=)4%+;ZRzQ!yf8{Chl?Yp!yy+Uv*)2d|jAfU5Jb?O{`-Ax04$w(&RR6 zD7_WGo!BH+vGvrGE1wV}*}#LgDC4^rM?I?h^s4B#DQdA|y8}X#Y^^L-r&Gm^rc|%a z-RGz0{@|>%&MI(GVpJm9=Fl1-h;#4Fd28Y4pH_FNIs3?qj~O>*Wy|_sJbJD!u~K5Q z;pSxBAKtwF!IvMn^_+Y5=rJaRni#~8r~QIN;6zGHU{lQv&5O3Ip^Qlf>0CadG^~rZ zo_6bb_x$M2^QQj%jl~Z)ww3lCw0GC8T^{-Dp(|d$Aw-ilZe^J5S>LZuy3f%gkD9p0 zL{~Wkm>A({W^?P>bii(7(TEhX#JjjyiZjdtQZk@WTb0ajT)dT=xqW}OP07*na zR3s)>2Pg?EBW}g3AHP)%sRG3%6DeO|WQ-4AHO)KsuRk@pi2c%Q%ifE0^5NVM@@@Hk z)lQ+I2sxYd)`eO!8DBX8g~8OZKVS)tkfX0V^rEz-N8Wq&vjv|f8N0N!;hUxGz5D!=&iHcq7Yp0g#6B7+35ZoJx*Xd<943&$z)2NLg%o&c)R9d> z$R&RA{*t*!!RW!e2Sm))XXU8$f0=3R;Qs@@8;<+7to_&->9$W01R$VtIQ|cF>RZbH zvaa;MzG93FibZplngx-uZRM*?08I1ONsQ5wL)W z0^qn_Te0QZzh2&`qGq&_Yrr-84cTYYeiYm06?GtnT4rCui3%BIw*i* zNjVBMB;YF~_C$3$=Y)$UY&qne#UK3XmFtzUl|{E0lZ6^!7eoO;PDPEBb1EXr`q zzbLT;^wiwvSFT=5v5tHwCZ!9f{-T#(=Wy1AKmh;&k$_Ez5H*P~un^IlPd-{w*u4DZ zk23YKTZ;t;Y>6RJ#WcF8P0n~-gIt{BYOx>^B{6&HD7bR!`ER`R%)-W1^`>@2_mN|J zjCok}n{?h0XV+pU0mq0aNl>Cq&1-LZ>7l%~)g}4*y;mbP zm8q&D_dPg`-a89EU9ojD`7WEt_+T|BNlSr?7d?K#Ez@rs+j+F>Xh=j71|^n^umLQ- zF#9PRa0KXtCSy|A><+6Lca0x0i}>V2PI&!`_wRgVhLpHBb=$A^#Dj(% z(zjRd-aUGyp;Cj3Kp^0HZo6>sTUY6SVrX>m@5Rn)v$6#O?o5jRXW&lx_|B}I0Et5R z)>9wa+jDT)aTwWgEFr{}ryO+jl!K0#yY%zt=fCpgC$qLE+aVPs7IXr!%ZxTr)+j(A z@O*5wS*gg{+Dnf;+mB^%*B&2l`R3*q?@F3-HAN`|lGjDdXbMejQfrC^E2zb`6@o&E z^0&TyW14FB?mh0<;ggRUfAIWeOBO9&nuE|$nDST$5EFx=Y^%6|6N}UYyfjN%zx^uSDkcqoWxc$l(#V$1OPM$flVMWMr#C!Lc&ea=0809 z$2KST=ErXZlAbp5s1px3W>k-%#7;*Q%0B@V`A2m{l89I&6e^cM60{dn($3ZD&gs-% z1X-4OD=`Qx;^O}`AQu1w2EaH1zzir%7y=kjE-1}FM#K?8QJ~B7Q@{!`f*=sE1_4X$ z%V%Nvd(s?12n7IGkOdSO2CJeFw(ozzJ}cc#1y5WKy2f>XI_ZYPhD}itxU9ec60qio z*nrhQuArbG6n{VCnr9Zg?8On65@cOftmvQKC7Y={_RKT-3>f5+=WCzX1p}b95lPs( zuC__yYNz8N*ulR6ES4F`8g@`~EXqS6U@|2sv_kmym#@73;mmhm{iwFj;5&YO&)!`J zA*#h2maelKu9|UG3pH;kZI7ISbra(Q#+t%xK&cYvZJ?{-;Kboa?%HW!+6E^~JjS)2 zD8~XQ5lUhr6^mi5OSZJU@#|}DK5ND5MW(`R>UU! z?(BN~^s5gXFdU=i)6PHR+>T}Vg!QON)2>^2?H&w;q5+FRtv8 ztJ+6)ojhd1#|^7mR8&YCPJxaiB8X;Mv7&>`y z-Qb#(zhLdxmpy&`vcf9m7)qif0ErU61O$K@!*x;-QB7CZiCv4jr3yBs3K#&GM6rMc zhsA0#s5+UfnSR)(bQLt-G-+?s)4%zL%8~=85zAD@T4VH`_ z>ODJ+o;GmmsR#c!EfvTL+>U$6_s)02@d$F3V?j{h7!ij8HsUIm1c5;qhyYZ(5KNWJ z_pN{k6S77t?9qR%rn2%yVklno-0yDr{LV<53R8Xa;eR}S-0^M{ zfJOvnD+(1TDRG?W#9$;~G-zc@t6Nr0ym6|xuC+%)&?)Nr<1;QExBuQhyE2 zdf=u{*Dbu~>RXmB{Nm^L{w|-Df@-!{;0k~cP+YeJN~|~#ThbgjOcT29K5ghxQx7=F z$4ap1AP`y+8$lxE8-u7y%Qnvabl$7?-h0c+{$#VH8%fGCNo+X{er=*$*P@pgGO_DBF&ISexB=7u z{G&fO43=yO?bDw>bSL9@0~?jxhDt z@o^zDki($KTCFe-r8dYd-15a`k6gAmzZ}S<4MZ*&1h?p>CI)+mX!L4hjC>|M9}4X0c)sA8Ck zGUY~X;B?$ezIVPGj=#R{SLOo5|Biv>i7h=^G;g2I@@lmk&?T}wy= z3QCD_J^kN^RiL~%1pr`(+qm@Tn@`;L=8S^Vmgo{fQeiXceCnoO-MUAQF`Bh7lT!}D z2}J=Tg8+hv1!ThsDG~+(QslA)r3An*5`ZGcgn0J4w=R76yp4qo=NY9})=h;Ce|i2duYdl0 zV-PkeIe6DYZ=HJCqE+iIeB_$7-b$f8{w z1{K||JNd>b{U=#=P@8p|zFE?^Xy*O*ZKLL;LF18ojDLR4v!kGYYKgi1(Pyiwdm%U$ z(Gen`m_ZacEH-KVYTMi?x1HEn)y!x}gJWC>**F#jQ=xaxLFez$dqTf1{i>|^XhP%& z-4bw?D|hj`a%4(=X{$6Hc-aAsW~1B8I!m3Z23>gc?~WZYIfyKf6SC_Iu`z|hmc^^S zxPJB@OsDh-`=5N!z=<_bPv9^Bf-O6?lC;kzcm9dz(dM8GDDfPf;5K#)Le6*Jio zO1U^Uf9==J(EQ1=&tCud%}hlmSICtM(%Ri3K&-X^g{RGo!4^DEzZEY zG1E`|#ZbG-l?>gGcIp-dA&hTEN zYgMhbj)1VTfL1HNBOd?0`L1?+&4#sqobhM0FtpF$q5TGp=sRq}p8KSAKoa?&g&CND zz=Fge0O)AZ1PaI)<7)K}7X1Giv{PsXAV3cJ(+>Hes>0V7zxwvFw<1++G)|qaZj&~P zR)a&JKtzyXN2v$_iZCO`l7N!PMvig?1lTCl00>CsgdG5o;OHJBkLYvQ$KSknz`zMb z$$Q$@;3UjM#GEL=kV{O-N8fyK-CwV2j2ersI_v6lx?}ADLk>D@ul=kE(v>yVatw$T zJwRjt`uoxzclbVb>pp}liX_J09u=9Wr?87fV-qf~b z&it3x#p}UOVr8n+^+ydq+K*Br`j6Rf_X7?af9%0y4te5(S+m}o)i!U*)Dw=q=iMhy zJo*RIM;~aC^ir;YFd5HUoLT4TTM3HS_Kb&IWq{TQ)SJxNk7O` z)mb8KL6KNA%nDIifrLN>3Q621B&EHq8x^BSOO*)5s;E=~>E~a3W#6A3*fZ$r8TN_5 zQew#lN&synnzVqlLQ5kxs+4wP)=BWAiKh0BU1(~Dm|7p4nVTS3^?Dx$%#EnDN44U{QSDe;qt`gI*S_3&v^_nsC&N?US8 zi4ldQ2&_U@piqd7>zH{B^Iu-})=In9ww5%Cwa#f%PMf=I9(9IimOis;^J)oL2da>d z+%)8&g&1pEaAPs@dpj-K#J0G;dF>_lUoqp1+k4lgH^ti@`s&HhEoNHT+bDb0j6VL@ z;|~Af8P-t+ty`hsLYRZn1JBK18y3^%ov+^8(6&B-I3HMc#IsJSAd%-7Z9s$o+2M8A z>Si=&R8_{wqcLeJn9$35r6fUQ&-6hBSoHbtU%59Q z#H_6KB|?pA$w39+cj_F})NNj~QgTH%G_Cn06{tj88!{nt4HW~*F+cJ7t1YWr zs(tn3_Bk7|u?p){-kg5u$<>*f$7esYzPQyAjNE1Tlsyh~OQN((iM!W`aXqVdaUk#{ zl_X$^86%1O;FV-~qZud~^|9KoUUp-)J=~h)7wSE+7JtltNWppRB+7>FeKI^mgnObY4An z_T&5X+_%b9qD62($TA3lLPoKS8e)lKGzl9;irIR~b69C~j1|%3Fo0MfE68yYUw8FY zr=EFARgdcDK6&M##~;4>-6W13hgUT%yZ*uJ=dYYEmiu+-(XGDk+0)Mp zAd_`!>QqLwHp+Mg3q*jFGK54xU=S<_0u!(*Yvy)Vz;-+uJNTD}0T?0$7Qq)G!=NA{ zuz;?RwjcsA*m)~HzvJcG-e`Qc)ol*8Ctiutb#9{u@kgL@5|z2M!ep8W0dWF@CD zAqHSiSjV76Tk**RKOHso>?vn{y}6-C=1-4Yy{fRNl#Q)r0D=fp>|*6{T%B9Vi9cuv69^4)nA->!!%;AB#2yEXI_#uzKkSz7tjSTL2!ITLg&2)-6US=DIt4d({>)!JId7(0 z!k-^_^7M%(Cqy?teb-ZqX4QlL#Ls8chF#CS@E4o>725{nH~6KL4HP?G>~zZ4+;Q$* zXyfDl`2`=vc`JGc#%<| zC^2GVYf+ay)7sG%I~A+X*!T2l2TsfCstT{7f~ssG@!TxL7PJNcP-qnx1O!VEhLFGS zl^K6}?&ee%?P;3{vYqStu3Wyn5EomLh|+3Muf9OMXyb~|jZ85ijeZF;8#%0}IO6~r zW@EIMiZho?Ie)hiXLHY-MLl&dPPGv8_}Yl5ffQsS*A6>f!c0>-aPL3=!d) zmW^MmS@Oa=FJCn6qES7Dc9P13qCAueHeRrLF(5Xs-ZrA|klp$W1!h6R$R4J!Lx=l4 z^WEi6XH`*?@d*)7IBoB^_$mg&A|KEDczaW0eMQ9sf4)Weo>T|1OQOI>MjpsY$yS=VC>UYv&US9u_b@1hnU)`t2 ze(n7N1f;#6B>*ua3mOAS%;v5~@6ncMCK_RcqNyf=SNDx*`X>WpbWJz)6$2+mvYzW0N@ zk0$nv2#eU*29CClO?1(PjFkT=U}*Pe-=QCejtqGR|4Z1}Ww*T`dgp7{zPVJ^b?$hN zV8>xQI(4uX1W;u!1yEqX(O?M@6hdaeL}c%Qqxa~4`+ajBn(@`M>+?%8jiKGplJAzg z?e!aP{K=gM4m%*Ful~i|=QiuuIH9;Ef;je6RW5KhS*|gg+BW>|uh+h_>a+3t>^FAr zQ3I&=lb<|;0FEg1F)?A}N8~d~6qB8^=9AyPadnBBYe(=lXEQ6Om}}+AAnn4;(T6z{&gWb@1lZ%YJ^|RCLqh$4tKTXV=tcx+!t26(mAn z1|(u;ORlt;t)G87_t0@u2&L3g996&j562#T+=L?uN*COF*)uC=i`Ui`md?BS7hO%= zie0w1rHWA!SDWhInc>GwItr}OZm^-y#9)a50EvVtvH(h)vPpBfaC7IyvS1QO1egF3 zM1j_zvAvTqwzoPiQ?B^@?;9$2@Gs5(b%W(U?W55?Tz0%CLSTUf*Z?;)ZEq?xA9M7y z$SH*wZY^$q?A^zc5Vh+tF**q=Q#Lge1VA8B#~tvabB?%FfkIXudWKP_g4iUKf>??K zfJ91w1QUc9BnF)M)XaT%9lH%08l3!sZ4Hwp;~OphUG+Le8^6!ifV$i4%)MsE8_Blin@WMaj21 z6fly3tG(yJ{LTU~IN<%zeS`le+`i{xJT@a2?sPZ)dD zv6CiglR)AEx}pG`?`7O|@NNEsvkFHn1`!ds+$}396qbCmn2V*C9)Hr&{^`HE3|u|` z%l999@&Px^&H3%2BXNq8%3#8zL#GToY;>m~NCLoM6&e>vC74)^38Dj}p|E`I*Fi;H z_o`lG17IYJf@~cVsjwI}{`RTM-(UBI7iZqN@{P)*f&@iDQHjq$VrIyoYOh)OXQ zLyxv?E2Lsb+xX;@Pbj&hY&ur4sWmVB zVE7NNoO*fSq`4&bK79Y@3+F9czoJL)9v7Z_R~Ch!07VSO>+&1UzvrU0o4(#&+S=lkbZv0) zz89Xm-&un2_BS71_Q+K$oE1r`;27~j|Cr&Yoqf$)zy&H1*&eo9+`#0cQMNj|$D9jeI-R55@B>=#d z6d99{A_gHuKxKt3i&m}(6`&0PJx*y+C6&aOCrA`Hv9%3_Z6L-0=gYNA8f43zZ~kdx z>zaxX3+$A#;u^kc^6yXC=d^}R>zl%`1cJbQ>N_=TSzE$FM3zw;8(0OGKX6^a7P`fh z+tPUG(TBIWIK10115oRB-MjxjRhVM!CIAi?52GBkocWhap5HJ#Rm{`2D4oGvnmO%+ zY>%1;Qhldv8$hGOQCpL4X-m6kBa9kM(n;F7 zV!A}Epp^0qxO=4rUvuImi&~amIO{TlmPkut>q@$&jiwAez_j6B6DPH~6e*Qu)4i2n zSoq27^FQ3Ob*prdQoS_}s{~V8#feo$?c#UwH$dFe+3b{B^GzbP*8}GTn}T{11Fu*ZKdtVbm)k~P8f6a>@VMc zbNOsH=C-C*t8@{q0G#!MpXOSc-<~(yXljXy`BI@mWk%MG{Nk8W(r#H{#l}t{K#KXc4RcT8Oi(QmEK+sBux#`WHT)`SjaQ_3S(J#xt(z zk?Iz3+7ky8j2scdbdnUD=1m!k}d2$CG{4d8Q)(VA6m{5agBQ8 z4qym?WZKQl1O-SK5h5Zjs00|}t=KaA>o?#1`qei+eXThSsZ#ZOH@#bf86o}VlK0NM z@24fdF~#=qzLUh}+w#H4m0u!-8!3!gfySm0TjwEE0L;*7*6Sq5y zun*wIP6-Wb*T!7Mp5BtrbfV2plDPf}gHHO>ao4zj=ihtDqnn;!CE23#6BGGTaybzU zkaQ>^f(f*f1iM9pZ#nG`g9i<{;@NAT`S`vT9ix|`Qdn{#%_>_8QpVqR?4(YWT~FHg zgudBbQYO%>!Eps*B@uB7M1{Kfw)gM7ebx=MEsPv5m94wvx#FW0uP3U_ z<|$pW74@mDaU?4B>uJ9|X0H?LxGodA7GqFCs2PmarVUGZh~8cF{`@6hWR$n$g9VqK z@!S3bMvx{A35g{k8?iX{-Z^(&@&0vfPKgSzfBimxKIPUy*&!s#xHg6aExOe&xpn7LxsYs+6E3cIx6+5#j4wJz{!yPrOJ z?BO@exNc2uL!=UvWX#~vOBQ`Y35fRc9J`cQmzyB(rd(Q_t4=$GvQ-G9dcCrJ zFZtQkqjudbgm87^y64|{7Pt_mWo@zPv(IMxE1Q!#r@1af%S9zgiV(mr5Gkbuqvkl1 z#R$C-odyMs`K^tcn^I0{du!EJ+1gJRDyXe3@ilv-Ym~Famcp)@o2*Jv$*@-0UERJn zpK?`e)Oh-gUs!EeDW_!mv^brXV@}C#M;!R!$Dd}J7`miExPD>Ngrg35@0*V{#JSDA zGSikz6xV#=Z;sfMn(d>vJBwbPUuGi+Sf{@wrf;r&*X3@5Jk zq2Sdxou(f&y~;^Xn=my1f7#0ApMLS_>BpSrfs;ynG7kFG5srV~d^a37h5X7ziwpVU z^N&834Kk;keU>QbTwe=;69Kc*A`TIeFo6Y$fD^3%MAmQFKp;2Vd1C<*#EkXaMVps7 zmEf6p+J1-azT1czB1HjZ_Te^$+?VGwkpqM@$*eZBUB6ShS$ZhJY$8X;`&t z%_lFs_~WyGydlbq8@TzF)vX)z4)yBXuajR3QIu9Lm*P1uzFAdOneOJ@`NCftZKK=R z0vY#%WX(3roit|hz5~X5y=Kkg<%<_@SWqgo45{h22lYQ_;tyv&_3VL@Chd2?ft~6) zq0&|W1R04%5Xqnb0tqTmXi<}c*sen92**44mm!uUK{h}kTNJ1utwO6E$BG3dh7(6Q zf`mXy2-t!cAZrLp;KZOcU`jx@ch9qc7C;!t0vaF&&|nqV2($yrWdwl|#Rig6+`2W_ zaQRZhqm<{k!+P{^tUmbkG3FD_;{@`Vgt$xxv+Rr<?xpPC2;$ zfxCD;GpW?|PhIuUr+06RTkAS?yB6)Je){egFLo*vw{~-@IHgOF>0G^~X$wLWHks-QXM0)_1P}e7sQ2u> z-`&5wyOyhh*tcjcaKSb$Z&5?rc$oEq=1SkgG7+hkktTfjtf-a*ZRg2~(~@ zVT<9~wiU--bKG*hUVI$eW!zmS|FwtLD<#?{h%Sa$u*#q~DNb7uOBR6;2?R7E?bImA zj&Qu=8T>DefEb9%R>BHYyM37mvjCxCLyqF|MjCI0^_D($>qg+0c<<)(N(Tl@V1qL1{~v zT^*W%br>fVoAMiatCpS^`NT>@3r8_3@T_=kq%)WRD5Deb`lh-jVSXbthKWrP$+pDb z0^M`aTC2h?mDO9q^opXb&u-_iZ;LIJBv%dL5Zct!77}(mk0Li4`a#ZSi`>?bPgScz ziKQB_T3L?cK$_A5KB>@>0oQSpqOHV~(-c=~KMzSug_V>pg%)%=0oLTy8TXPyPwVHT zZ@uNFI022WuQL@xy6Y~T&z^R1%2Z_2Ddq9wA3yx!*Do_-o$B`Hu{*9bT1W$!hRA!tw8&?TYMB z#({I_f+#4cC>BJ-h7}ujO`?e=mc+yuV-jODiBV%>UNvfrQBh;VUJwKY1VNOJ2+~jC z^tS6NPnqA3qeAgd zyMUesMgVNUd>;{r0WmTNf*~7lK{a27gaH760moPlSUz*Ind&*WKDF+XWgoot#+GG^ z>ra{CW6;{PDdl?E?4So0KL7s0h1Z?+txHZg=j2};`S#*@udSZHdB>;kEm-`+%YJyx zNtZse;N=Caix%x!qQN92Gh_r=GpY_d`p^@{j~IXV<9BQ}+a)h?z;B*))oZKgFaLZg z+F;Q1TmARFb$?%1^XS2Y+?^rX@PRW0Y&`Sn`-B!J`0-O`RfWgt*ZuDantkIQ9=0J~$#V zT$``}-IlOi$_jE7mBB(7CypR88(15K01TaotE<-Uu zqcs<#Apjx;VL$;ev1rZW&3nFxg>Eb~mBX@^v=^^_KSm{teb3B$8itG@PZgk?!b(SR z)Cd5eKqD&dAcl;I(~mf(qZ~Z&+OJExoFey}3A6XKb*|sBe*fWPu9$FKBEs`0pHxv( z^~|U5ZfL$c&q|i3P(unF-D9|mnBo#xCK5+f9>|<3LD|CK%D`Cbt$?h3zJIx}T^yziotQ zJI;>bCpHSesd@D!;^%cBrWgsbpNz+!esInr++I`q`vAz3DwAC!|+5ysXIUKnWv|ne|Db-AAb6F-NYf6 zJ#ekfy&oR^^_ynhIRE(%tFkpm&zK5~NNHoiZqCYQU*C9A_E|07~_cW z<*wR3b$lQHMQEUy;sA4Rt$5|Gmwp?k!F5viUigbiH3tnz4vURo0y!erfEu&~617E| zDuYb`}zxysiE-b zC(nH@TQwO!kJ?Qb5O>b{{*_06-6EeD>ngUbY5MFBkN>`!B_8je+|am5@~ ziY%ogUt|;2&wlN};SGmc;65GNTrUdpK#k*H~)IhQ>RQm_wr+A4`J!D>d9%9PI`ZN;*J+u-#-8B z%Np13{_dGKp7+p=o1+cPizy_=h#8Ftl9&}GhOtpkT=T$@!zO8Et#93$w~D*>uDSoY zds*C<)s^YA-O}7nwwEV8^nh^*$EDC%wmW3Vhzm}i{fEc?pb#s)y8ExcCruec+y~Sk zi!Ar(!iRsmb&cQPfJ~BRkpc7wY-8(I?7HsBn-*CJ_-z3$o_YPnE^EW zhE@JApa2X2C*TGEz#u79Wym#k@9K%#U;W^vHM`dEv{RI_HQ!ZYacDx$2$0Zd2F61^ z(jWEG4KEG#hiQZy#U9IgWN{z`S^;Q4VaQSCK34d&{fj)w*4~z<-+N$p_x2%!M_zuy zje@{)*;^mJ(%!e*kRnI7<$HQ`89Yn$DJw8k0Vv6_Fap#??lCtjYKB&gbjia2zB~IH ze|_QM=8W1Cw(V8Dq$9^f)gdePM$s^03TpBQ1CbXsq zbo=36UzH$KUfEOzmA$4rtOSemOqcOXMyLGtq^Yp|BzLdB`0CM>4L^P9p-p|;Svjc5 zGpmCSsvVI@SKf8=Jp!HDn(W55&8PnU3P?reQUJ_UGsq!^sgy>BTwyszEj&B@%JmP9 zgk;jstlYi57^<4;>W5$bL(b`4+rC3`R#!Plcb9IQd2Mf7&ZnyHoPT}NI6^Z+P`2Z( zZCia`l!D$+#xdfD8$MdLW-*ztt-s~OqfTt@*!xN2r~QeNbTx)JI@K>dNY24fVcfr}|Z?t^3c*-)3oX z;K&1h_5I%rN{{Gk?tT90XTSH8AFOL$w{ZOj>$*3r+OX`(NoP%}JS5GA9e3&(3Ikw< zb1OFL_4NzB_0$bf1)V(R_)(QZ>c}p%w#|F*&B+bJdIve{IvOiW;e$RbDua^ZWg^>^<%X6j)-ef@WfcdyD6b!3xDLo)KGv%`M=h7hOWzxKYzihPj=TL`IPD z7z<*9m`azuCvJJ*;E@MD^Wi%WKYPCg#hE9czF_qN9rnzaFtx2&xykHd;|{mTI%n1; z42%HI!LooD7(>_vrO!8RIc~yH4oeykJOE*Vf+%n0Zl8DmA3uIlAe}gP$|INGllAK( zvek$%58mn(>qPY77;_H=-qeq-MgFi zNKJcMTB=p$xl_)Wa`+TR1CfgOrSt#*XlUOm=l>D3AtD4IjuKS_vH*p3EvxT%`u1JL zogtM`7!6u#V4fqD;f|}r2m}YC8PX_w$o-f8ddC+n#Xw(h(#2UX;{X|m4X84x7?=Pt z|Gl^O%EoS)duhqrhEog$<`+Yw2#~2P8rMT+$C0n&ZV`pmB9@`WP=R)fmft1w!;EwR zHJ}6`9Ig4V%zk%Yc>7U94)DPzun1TV3LoxVee*N7#&K_Te<(X-s)h$iQPPBgE=#g( zF>Hex+H7PJi&MN}bYHjW^Z3R{ zTHC5A@R=(rlYCeIkRptobm%FE9uA1TF5l~-_7LK5=|}H-m6?eXCt0rb%HlV>+V@(4 z3OLH4SYnjsDd>q^Y5i#Gr4>r#I&<$WSvq>y=&NtKY5vv^o3Z)H)h|apHla=^QI+#2 z4Ljz*aT7gE2m^xIN)ZD#Z^^vs`l_9M+dG2xh+>DkDV{p-#My6u{#v5S->`F|CQycu z+alz(vgX_a&ba5wUpgv**1pE)-_AdaADS@$V!#9g)QrAbxJHJA034BXGK2ffq(Pc;>a&85D(Z@9Cy)PCPHzx(O$fB3VDe^y(&-`M?zuU@if(g{Zi+v|U& zb5O&vOXe+^e9g3J(~cty`efJczGgq+S65_1?6mx16v|Nz4NokZfSGjFmEXVF zcKv=XGrDsBnh73He-$Y7H&c{>H-8%u|6ecv7?e@1{^0QX0ty_vVXlnz7$8F7s6c=n6qRLjCY7 zPk+?DBC2sEDy|I1Bss+8*iFIG-7AZ+suG|HB4jQkmaJH^e*LCR+ZR9j!BbscF6$(b z0ur$%urzk;ZMyT9Ke_uCe?Z%Hl38KmB2&BL-a!?EUDt_JqS)71!7wQ65>xq7T+b0pQ8lD0ll;r#Cx7$KpJKaIC-u84Un!F;#QN#w z%hKsVlM|DYe)SQPrrOH#xo43rBjtDwDg(^agFpD-Dq$EaN5VnHn2bPJc1ottKlse0 ziArq=EEzsk!Mb_wDL#{OO~2Hivu52?RUgN~lj(CzU)mkA zY}M+gKY2MI7&T#{YAe3>&YYax6WLlDOH0T?+H>3{zcVc7Q7BE4+@Oq_b4W5<269yG zSUYyFJ^j)n>qp-A)|?l&FR`rHE99hOY!!QgWF)jD2u*!`cb(1r zEuF28y!PbnmtD1U^Rh%(uvAHOQDv>wCIR||(#UF<6lEb?Ylz}L=2OsAZ3;q(EzxLI z@%pFp8}rSnNLQBpEKB;SBnjX_A+DlM9}|ZePU6_iq34})%5R^4d@qJQmTVa<9IuGkCCK)Udj%V+!99c8%uqlm=8$R6pfp$nr zNSn;?ZPx5*Uz>8;Ig`dt;sl0)Msk${L}(32K3}T-U#Z{&>2~ZZt^CWM=O1mC_nGtV z(Al>wTK?&l{?0Lz4_?*2e%Z()GcGt}+|hHFy?*CAKTD%`{{_E4ed5`c@wrgi1QuGP znLq)+feHAs9S8V(u-QKTiyE6FW$3a%l0o4(#a?DK6j3+KI)+#Ja*2{FKC3;avWEv>PpC5bllmq zj+>cHXTnnN+(j>hE_~9w`GdX7g$`>Y|Ej6i%$jmuUF}E>Ds6%uk`FF=deNuz3hQ^< znW$`}v4ASALk^m{YSY@OV~^c`(Ab2sE%()uA%lw51@fwbLc1c5NV~iYI!l z83S>g0LQecDh^h!E@!~Y@Z-#cN%mMSE19qT>D&_TT^5DW8;fF4(=$FRGdr z^gX9H2Prpk=wU~_(Z5ph5?RV{ii~CqPy!zq2ez1HELPUno_x`gEvq+o?PR1Q04*#g zSu)_$C!ZAdmk%Ft=u!I}K5f(_;E5P4O}X~s-k&{nM`d;WkjnZh?w@_)Y0oZx{{H!o z#wa2?Hcko9fD)iB4&VYmXYA<@T>AS=RLN|2UoH4|^DphV8aVt_4m^PQ-|eabKtK+_ z2d1r!L}nC7g;IgeMSU%OEw?^#XNgf~SK)>;Z@75cnOWdAaf%t|2~=d53LHSG4I*;O zA|!^9(T)K}f^>o+D|I&QNf)iYw)O{pb!XV#cHCv>AM&;Hm0;aFcRu>U)BRQa`s;3D zEZDei<%91$mQTkRMZ*%QOAb5j^}qaeXmaF)u~V-;@B1U`$6&$+2>^@)h6pi>ePZ@M ziarD1>Th8O2!QOX?M*$fh=zdsZcO|5FXOE@AD_Em&bq$OTI);2w2}^4{k%q3edm<# zUpf6-rmIxwZx0>p>1cZUkw@qDt)K>rm{A{>XJpL+|jYKeHS0D zm2C+U9Jxud%Bt#~oh>za$H`Y5J^h5s&%QJ*apTU7uPu6|0L93XfeLoFx7&tUc{^Xp zArl57Kr3~!f8^m~4u0+Jm&&_4a<<72b=9C0i*ay2)+vkmX7-g|dusX9ds-ST@=Aa< ziW4VHy=>;C%eQY>xbodyO?$ZGW+5@AV*E2ddm=-wL`zG>Nb2EQQ3w-QQ&Uxw&QgTaCm(;(F*Auod($3M?&IO68%nN3ocD`%- zRhbHlbQBlgnk?Wa!xMo_76|Vbd&=G9ZAL43#XjTANxdw1?G?;7kmR z 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